export const dart = Object.create(null);
export const dartx = Object.create(null);
export const _debugger = Object.create(null);
export const _foreign_helper = Object.create(null);
export const _interceptors = Object.create(null);
export const _internal = Object.create(null);
export const _isolate_helper = Object.create(null);
export const _js_embedded_names = Object.create(null);
export const _js_helper = Object.create(null);
export const _js_mirrors = Object.create(null);
export const _js_primitives = Object.create(null);
export const _metadata = Object.create(null);
export const _native_typed_data = Object.create(null);
export const async = Object.create(null);
export const collection = Object.create(null);
export const convert = Object.create(null);
export const core = Object.create(null);
export const developer = Object.create(null);
export const isolate = Object.create(null);
export const js = Object.create(null);
export const js_util = Object.create(null);
export const math = Object.create(null);
export const mirrors = Object.create(null);
export const typed_data = Object.create(null);
export const indexed_db = Object.create(null);
export const html = Object.create(null);
export const html_common = Object.create(null);
export const svg = Object.create(null);
export const web_audio = Object.create(null);
export const web_gl = Object.create(null);
export const web_sql = Object.create(null);
let ListOfObject = () => (ListOfObject = dart.constFn(core.List$(core.Object)))();
let JSArrayOfListOfObject = () => (JSArrayOfListOfObject = dart.constFn(_interceptors.JSArray$(ListOfObject())))();
let JSArrayOfObject = () => (JSArrayOfObject = dart.constFn(_interceptors.JSArray$(core.Object)))();
let MapOfSymbol$dynamic = () => (MapOfSymbol$dynamic = dart.constFn(core.Map$(core.Symbol, dart.dynamic)))();
let MapOfString$_MethodStats = () => (MapOfString$_MethodStats = dart.constFn(core.Map$(core.String, dart._MethodStats)))();
let ListOfString = () => (ListOfString = dart.constFn(core.List$(core.String)))();
let SetOfNameValuePair = () => (SetOfNameValuePair = dart.constFn(core.Set$(_debugger.NameValuePair)))();
let JSArrayOfNameValuePair = () => (JSArrayOfNameValuePair = dart.constFn(_interceptors.JSArray$(_debugger.NameValuePair)))();
let MapOfdynamic$Object = () => (MapOfdynamic$Object = dart.constFn(core.Map$(dart.dynamic, core.Object)))();
let JSArrayOfFormatter = () => (JSArrayOfFormatter = dart.constFn(_interceptors.JSArray$(_debugger.Formatter)))();
let ListOfFormatter = () => (ListOfFormatter = dart.constFn(core.List$(_debugger.Formatter)))();
let LinkedHashSetOfNameValuePair = () => (LinkedHashSetOfNameValuePair = dart.constFn(collection.LinkedHashSet$(_debugger.NameValuePair)))();
let SetOfString = () => (SetOfString = dart.constFn(core.Set$(core.String)))();
let HashMapOfString$String = () => (HashMapOfString$String = dart.constFn(collection.HashMap$(core.String, core.String)))();
let LinkedHashMapOfString$Object = () => (LinkedHashMapOfString$Object = dart.constFn(collection.LinkedHashMap$(core.String, core.Object)))();
let ListOfNameValuePair = () => (ListOfNameValuePair = dart.constFn(core.List$(_debugger.NameValuePair)))();
let JSArrayOfString = () => (JSArrayOfString = dart.constFn(_interceptors.JSArray$(core.String)))();
let JSArrayOfJsonMLFormatter = () => (JSArrayOfJsonMLFormatter = dart.constFn(_interceptors.JSArray$(_debugger.JsonMLFormatter)))();
let JSIndexable = () => (JSIndexable = dart.constFn(_interceptors.JSIndexable$()))();
let JSArray = () => (JSArray = dart.constFn(_interceptors.JSArray$()))();
let JSMutableArray = () => (JSMutableArray = dart.constFn(_interceptors.JSMutableArray$()))();
let JSFixedArray = () => (JSFixedArray = dart.constFn(_interceptors.JSFixedArray$()))();
let JSExtendableArray = () => (JSExtendableArray = dart.constFn(_interceptors.JSExtendableArray$()))();
let JSUnmodifiableArray = () => (JSUnmodifiableArray = dart.constFn(_interceptors.JSUnmodifiableArray$()))();
let ArrayIterator = () => (ArrayIterator = dart.constFn(_interceptors.ArrayIterator$()))();
let JSIndexableOfString = () => (JSIndexableOfString = dart.constFn(_interceptors.JSIndexable$(core.String)))();
let MatchToString = () => (MatchToString = dart.constFn(dart.functionType(core.String, [core.Match])))();
let StringToString = () => (StringToString = dart.constFn(dart.functionType(core.String, [core.String])))();
let ComparableOfnum = () => (ComparableOfnum = dart.constFn(core.Comparable$(core.num)))();
let StringTonum = () => (StringTonum = dart.constFn(dart.functionType(core.num, [core.String])))();
let StringTodouble = () => (StringTodouble = dart.constFn(dart.functionType(core.double, [core.String])))();
let dynamicTobool = () => (dynamicTobool = dart.constFn(dart.functionType(core.bool, [dart.dynamic])))();
let ListMixin = () => (ListMixin = dart.constFn(collection.ListMixin$()))();
let ListBase = () => (ListBase = dart.constFn(collection.ListBase$()))();
let UnmodifiableListMixin = () => (UnmodifiableListMixin = dart.constFn(_internal.UnmodifiableListMixin$()))();
let UnmodifiableListBase = () => (UnmodifiableListBase = dart.constFn(_internal.UnmodifiableListBase$()))();
let StringToint = () => (StringToint = dart.constFn(dart.functionType(core.int, [core.String])))();
let Iterable = () => (Iterable = dart.constFn(core.Iterable$()))();
let ListIterable = () => (ListIterable = dart.constFn(_internal.ListIterable$()))();
let SubListIterable = () => (SubListIterable = dart.constFn(_internal.SubListIterable$()))();
let ListIterator = () => (ListIterator = dart.constFn(_internal.ListIterator$()))();
let _Transformation = () => (_Transformation = dart.constFn(_internal._Transformation$()))();
let MappedIterable = () => (MappedIterable = dart.constFn(_internal.MappedIterable$()))();
let EfficientLengthMappedIterable = () => (EfficientLengthMappedIterable = dart.constFn(_internal.EfficientLengthMappedIterable$()))();
let Iterator = () => (Iterator = dart.constFn(core.Iterator$()))();
let MappedIterator = () => (MappedIterator = dart.constFn(_internal.MappedIterator$()))();
let MappedListIterable = () => (MappedListIterable = dart.constFn(_internal.MappedListIterable$()))();
let _ElementPredicate = () => (_ElementPredicate = dart.constFn(_internal._ElementPredicate$()))();
let WhereIterable = () => (WhereIterable = dart.constFn(_internal.WhereIterable$()))();
let WhereIterator = () => (WhereIterator = dart.constFn(_internal.WhereIterator$()))();
let _ExpandFunction = () => (_ExpandFunction = dart.constFn(_internal._ExpandFunction$()))();
let ExpandIterable = () => (ExpandIterable = dart.constFn(_internal.ExpandIterable$()))();
let ExpandIterator = () => (ExpandIterator = dart.constFn(_internal.ExpandIterator$()))();
let TakeIterable = () => (TakeIterable = dart.constFn(_internal.TakeIterable$()))();
let EfficientLengthTakeIterable = () => (EfficientLengthTakeIterable = dart.constFn(_internal.EfficientLengthTakeIterable$()))();
let TakeIterator = () => (TakeIterator = dart.constFn(_internal.TakeIterator$()))();
let TakeWhileIterable = () => (TakeWhileIterable = dart.constFn(_internal.TakeWhileIterable$()))();
let TakeWhileIterator = () => (TakeWhileIterator = dart.constFn(_internal.TakeWhileIterator$()))();
let SkipIterable = () => (SkipIterable = dart.constFn(_internal.SkipIterable$()))();
let EfficientLengthSkipIterable = () => (EfficientLengthSkipIterable = dart.constFn(_internal.EfficientLengthSkipIterable$()))();
let SkipIterator = () => (SkipIterator = dart.constFn(_internal.SkipIterator$()))();
let SkipWhileIterable = () => (SkipWhileIterable = dart.constFn(_internal.SkipWhileIterable$()))();
let SkipWhileIterator = () => (SkipWhileIterator = dart.constFn(_internal.SkipWhileIterator$()))();
let EmptyIterable = () => (EmptyIterable = dart.constFn(_internal.EmptyIterable$()))();
let EmptyIterator = () => (EmptyIterator = dart.constFn(_internal.EmptyIterator$()))();
let FixedLengthListMixin = () => (FixedLengthListMixin = dart.constFn(_internal.FixedLengthListMixin$()))();
let FixedLengthListBase = () => (FixedLengthListBase = dart.constFn(_internal.FixedLengthListBase$()))();
let ListMapView = () => (ListMapView = dart.constFn(_internal.ListMapView$()))();
let ReversedListIterable = () => (ReversedListIterable = dart.constFn(_internal.ReversedListIterable$()))();
let MapOfint$_IsolateContext = () => (MapOfint$_IsolateContext = dart.constFn(core.Map$(core.int, _isolate_helper._IsolateContext)))();
let MapOfint$dynamic = () => (MapOfint$dynamic = dart.constFn(core.Map$(core.int, dart.dynamic)))();
let MapOfint$RawReceivePortImpl = () => (MapOfint$RawReceivePortImpl = dart.constFn(core.Map$(core.int, _isolate_helper.RawReceivePortImpl)))();
let SetOfint = () => (SetOfint = dart.constFn(core.Set$(core.int)))();
let JSArrayOf_IsolateEvent = () => (JSArrayOf_IsolateEvent = dart.constFn(_interceptors.JSArray$(_isolate_helper._IsolateEvent)))();
let SetOfCapability = () => (SetOfCapability = dart.constFn(core.Set$(isolate.Capability)))();
let SetOfSendPort = () => (SetOfSendPort = dart.constFn(core.Set$(isolate.SendPort)))();
let ListOf_IsolateEvent = () => (ListOf_IsolateEvent = dart.constFn(core.List$(_isolate_helper._IsolateEvent)))();
let QueueOf_IsolateEvent = () => (QueueOf_IsolateEvent = dart.constFn(collection.Queue$(_isolate_helper._IsolateEvent)))();
let CompleterOfList = () => (CompleterOfList = dart.constFn(async.Completer$(core.List)))();
let dynamicTovoid = () => (dynamicTovoid = dart.constFn(dart.functionType(dart.void, [dart.dynamic])))();
let StringTovoid = () => (StringTovoid = dart.constFn(dart.functionType(dart.void, [core.String])))();
let ExpandoOfint = () => (ExpandoOfint = dart.constFn(core.Expando$(core.int)))();
let _FutureOfString = () => (_FutureOfString = dart.constFn(async._Future$(core.String)))();
let _FutureOfbool = () => (_FutureOfbool = dart.constFn(async._Future$(core.bool)))();
let _FutureOfint = () => (_FutureOfint = dart.constFn(async._Future$(core.int)))();
let VoidToObject = () => (VoidToObject = dart.constFn(dart.functionType(core.Object, [])))();
let Stream = () => (Stream = dart.constFn(async.Stream$()))();
let VoidTovoid = () => (VoidTovoid = dart.constFn(dart.functionType(dart.void, [])))();
let TimerTovoid = () => (TimerTovoid = dart.constFn(dart.functionType(dart.void, [async.Timer])))();
let MapOfdynamic$int = () => (MapOfdynamic$int = dart.constFn(core.Map$(dart.dynamic, core.int)))();
let dynamicTodynamic = () => (dynamicTodynamic = dart.constFn(dart.functionType(dart.dynamic, [dart.dynamic])))();
let InternalMap = () => (InternalMap = dart.constFn(_js_helper.InternalMap$()))();
let JSArrayOfint = () => (JSArrayOfint = dart.constFn(_interceptors.JSArray$(core.int)))();
let ListOfint = () => (ListOfint = dart.constFn(core.List$(core.int)))();
let SyncIterator = () => (SyncIterator = dart.constFn(_js_helper.SyncIterator$()))();
let IterableBase = () => (IterableBase = dart.constFn(collection.IterableBase$()))();
let SyncIterable = () => (SyncIterable = dart.constFn(_js_helper.SyncIterable$()))();
let JsLinkedHashMap = () => (JsLinkedHashMap = dart.constFn(_js_helper.JsLinkedHashMap$()))();
let Es6LinkedHashMap = () => (Es6LinkedHashMap = dart.constFn(_js_helper.Es6LinkedHashMap$()))();
let LinkedHashMapCell = () => (LinkedHashMapCell = dart.constFn(_js_helper.LinkedHashMapCell$()))();
let LinkedHashMapKeyIterable = () => (LinkedHashMapKeyIterable = dart.constFn(_js_helper.LinkedHashMapKeyIterable$()))();
let LinkedHashMapKeyIterator = () => (LinkedHashMapKeyIterator = dart.constFn(_js_helper.LinkedHashMapKeyIterator$()))();
let IteratorOfMatch = () => (IteratorOfMatch = dart.constFn(core.Iterator$(core.Match)))();
let IterableOfMatch = () => (IterableOfMatch = dart.constFn(core.Iterable$(core.Match)))();
let _Lazy = () => (_Lazy = dart.constFn(_js_mirrors._Lazy$()))();
let ListOfSymbol = () => (ListOfSymbol = dart.constFn(core.List$(core.Symbol)))();
let ListOfInstanceMirror = () => (ListOfInstanceMirror = dart.constFn(core.List$(mirrors.InstanceMirror)))();
let ListOfCombinatorMirror = () => (ListOfCombinatorMirror = dart.constFn(core.List$(mirrors.CombinatorMirror)))();
let MapOfSymbol$DeclarationMirror = () => (MapOfSymbol$DeclarationMirror = dart.constFn(core.Map$(core.Symbol, mirrors.DeclarationMirror)))();
let ListOfTypeMirror = () => (ListOfTypeMirror = dart.constFn(core.List$(mirrors.TypeMirror)))();
let JSArrayOfClassMirror = () => (JSArrayOfClassMirror = dart.constFn(_interceptors.JSArray$(mirrors.ClassMirror)))();
let ListOfClassMirror = () => (ListOfClassMirror = dart.constFn(core.List$(mirrors.ClassMirror)))();
let ListOfTypeVariableMirror = () => (ListOfTypeVariableMirror = dart.constFn(core.List$(mirrors.TypeVariableMirror)))();
let MapOfSymbol$MethodMirror = () => (MapOfSymbol$MethodMirror = dart.constFn(core.Map$(core.Symbol, mirrors.MethodMirror)))();
let JSArrayOfType = () => (JSArrayOfType = dart.constFn(_interceptors.JSArray$(core.Type)))();
let ListOfParameterMirror = () => (ListOfParameterMirror = dart.constFn(core.List$(mirrors.ParameterMirror)))();
let ListOfFloat32x4 = () => (ListOfFloat32x4 = dart.constFn(core.List$(typed_data.Float32x4)))();
let ListOfInt32x4 = () => (ListOfInt32x4 = dart.constFn(core.List$(typed_data.Int32x4)))();
let ListOfFloat64x2 = () => (ListOfFloat64x2 = dart.constFn(core.List$(typed_data.Float64x2)))();
let IterableOfdouble = () => (IterableOfdouble = dart.constFn(core.Iterable$(core.double)))();
let IterableOfint = () => (IterableOfint = dart.constFn(core.Iterable$(core.int)))();
let ListOfdouble = () => (ListOfdouble = dart.constFn(core.List$(core.double)))();
let ZoneBinaryCallbackOfdynamic$dynamic$StackTrace = () => (ZoneBinaryCallbackOfdynamic$dynamic$StackTrace = dart.constFn(async.ZoneBinaryCallback$(dart.dynamic, dart.dynamic, core.StackTrace)))();
let _StreamImpl = () => (_StreamImpl = dart.constFn(async._StreamImpl$()))();
let _ControllerStream = () => (_ControllerStream = dart.constFn(async._ControllerStream$()))();
let _BroadcastStream = () => (_BroadcastStream = dart.constFn(async._BroadcastStream$()))();
let ZoneBinaryCallbackOfdynamic$Object$StackTrace = () => (ZoneBinaryCallbackOfdynamic$Object$StackTrace = dart.constFn(async.ZoneBinaryCallback$(dart.dynamic, core.Object, core.StackTrace)))();
let _BufferingStreamSubscription = () => (_BufferingStreamSubscription = dart.constFn(async._BufferingStreamSubscription$()))();
let _ControllerSubscription = () => (_ControllerSubscription = dart.constFn(async._ControllerSubscription$()))();
let _BroadcastSubscription = () => (_BroadcastSubscription = dart.constFn(async._BroadcastSubscription$()))();
let _BroadcastStreamController = () => (_BroadcastStreamController = dart.constFn(async._BroadcastStreamController$()))();
let _SyncBroadcastStreamController = () => (_SyncBroadcastStreamController = dart.constFn(async._SyncBroadcastStreamController$()))();
let _AsyncBroadcastStreamController = () => (_AsyncBroadcastStreamController = dart.constFn(async._AsyncBroadcastStreamController$()))();
let _AsBroadcastStreamController = () => (_AsBroadcastStreamController = dart.constFn(async._AsBroadcastStreamController$()))();
let _DoneSubscription = () => (_DoneSubscription = dart.constFn(async._DoneSubscription$()))();
let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.functionType(dart.dynamic, [])))();
let Future = () => (Future = dart.constFn(async.Future$()))();
let Completer = () => (Completer = dart.constFn(async.Completer$()))();
let _FutureOnValue = () => (_FutureOnValue = dart.constFn(async._FutureOnValue$()))();
let _Completer = () => (_Completer = dart.constFn(async._Completer$()))();
let _AsyncCompleter = () => (_AsyncCompleter = dart.constFn(async._AsyncCompleter$()))();
let _SyncCompleter = () => (_SyncCompleter = dart.constFn(async._SyncCompleter$()))();
let ZoneBinaryCallbackOfObject$Object$StackTrace = () => (ZoneBinaryCallbackOfObject$Object$StackTrace = dart.constFn(async.ZoneBinaryCallback$(core.Object, core.Object, core.StackTrace)))();
let _FutureListener = () => (_FutureListener = dart.constFn(async._FutureListener$()))();
let _Future = () => (_Future = dart.constFn(async._Future$()))();
let StreamSubscription = () => (StreamSubscription = dart.constFn(async.StreamSubscription$()))();
let EventSink = () => (EventSink = dart.constFn(async.EventSink$()))();
let StreamView = () => (StreamView = dart.constFn(async.StreamView$()))();
let StreamConsumer = () => (StreamConsumer = dart.constFn(async.StreamConsumer$()))();
let StreamSink = () => (StreamSink = dart.constFn(async.StreamSink$()))();
let StreamTransformer = () => (StreamTransformer = dart.constFn(async.StreamTransformer$()))();
let StreamIterator = () => (StreamIterator = dart.constFn(async.StreamIterator$()))();
let _ControllerEventSinkWrapper = () => (_ControllerEventSinkWrapper = dart.constFn(async._ControllerEventSinkWrapper$()))();
let StreamController = () => (StreamController = dart.constFn(async.StreamController$()))();
let SynchronousStreamController = () => (SynchronousStreamController = dart.constFn(async.SynchronousStreamController$()))();
let _StreamControllerLifecycle = () => (_StreamControllerLifecycle = dart.constFn(async._StreamControllerLifecycle$()))();
let _StreamController = () => (_StreamController = dart.constFn(async._StreamController$()))();
let _SyncStreamControllerDispatch = () => (_SyncStreamControllerDispatch = dart.constFn(async._SyncStreamControllerDispatch$()))();
let _AsyncStreamControllerDispatch = () => (_AsyncStreamControllerDispatch = dart.constFn(async._AsyncStreamControllerDispatch$()))();
let _AsyncStreamController = () => (_AsyncStreamController = dart.constFn(async._AsyncStreamController$()))();
let _SyncStreamController = () => (_SyncStreamController = dart.constFn(async._SyncStreamController$()))();
let _StreamSinkWrapper = () => (_StreamSinkWrapper = dart.constFn(async._StreamSinkWrapper$()))();
let _AddStreamState = () => (_AddStreamState = dart.constFn(async._AddStreamState$()))();
let _StreamControllerAddStreamState = () => (_StreamControllerAddStreamState = dart.constFn(async._StreamControllerAddStreamState$()))();
let _EventSink = () => (_EventSink = dart.constFn(async._EventSink$()))();
let _EventDispatch = () => (_EventDispatch = dart.constFn(async._EventDispatch$()))();
let _EventGenerator = () => (_EventGenerator = dart.constFn(async._EventGenerator$()))();
let _GeneratedStreamImpl = () => (_GeneratedStreamImpl = dart.constFn(async._GeneratedStreamImpl$()))();
let _PendingEvents = () => (_PendingEvents = dart.constFn(async._PendingEvents$()))();
let _IterablePendingEvents = () => (_IterablePendingEvents = dart.constFn(async._IterablePendingEvents$()))();
let _DataHandler = () => (_DataHandler = dart.constFn(async._DataHandler$()))();
let _DelayedEvent = () => (_DelayedEvent = dart.constFn(async._DelayedEvent$()))();
let _DelayedData = () => (_DelayedData = dart.constFn(async._DelayedData$()))();
let _StreamImplEvents = () => (_StreamImplEvents = dart.constFn(async._StreamImplEvents$()))();
let _BroadcastCallback = () => (_BroadcastCallback = dart.constFn(async._BroadcastCallback$()))();
let _DoneStreamSubscription = () => (_DoneStreamSubscription = dart.constFn(async._DoneStreamSubscription$()))();
let _AsBroadcastStream = () => (_AsBroadcastStream = dart.constFn(async._AsBroadcastStream$()))();
let _BroadcastSubscriptionWrapper = () => (_BroadcastSubscriptionWrapper = dart.constFn(async._BroadcastSubscriptionWrapper$()))();
let _StreamIteratorImpl = () => (_StreamIteratorImpl = dart.constFn(async._StreamIteratorImpl$()))();
let _EmptyStream = () => (_EmptyStream = dart.constFn(async._EmptyStream$()))();
let _ForwardingStream = () => (_ForwardingStream = dart.constFn(async._ForwardingStream$()))();
let _ForwardingStreamSubscription = () => (_ForwardingStreamSubscription = dart.constFn(async._ForwardingStreamSubscription$()))();
let _Predicate = () => (_Predicate = dart.constFn(async._Predicate$()))();
let _WhereStream = () => (_WhereStream = dart.constFn(async._WhereStream$()))();
let _Transformation = () => (_Transformation = dart.constFn(async._Transformation$()))();
let _MapStream = () => (_MapStream = dart.constFn(async._MapStream$()))();
let _ExpandStream = () => (_ExpandStream = dart.constFn(async._ExpandStream$()))();
let _HandleErrorStream = () => (_HandleErrorStream = dart.constFn(async._HandleErrorStream$()))();
let _TakeStream = () => (_TakeStream = dart.constFn(async._TakeStream$()))();
let _StateStreamSubscription = () => (_StateStreamSubscription = dart.constFn(async._StateStreamSubscription$()))();
let _TakeWhileStream = () => (_TakeWhileStream = dart.constFn(async._TakeWhileStream$()))();
let _SkipStream = () => (_SkipStream = dart.constFn(async._SkipStream$()))();
let _SkipWhileStream = () => (_SkipWhileStream = dart.constFn(async._SkipWhileStream$()))();
let _Equality = () => (_Equality = dart.constFn(async._Equality$()))();
let _DistinctStream = () => (_DistinctStream = dart.constFn(async._DistinctStream$()))();
let _EventSinkWrapper = () => (_EventSinkWrapper = dart.constFn(async._EventSinkWrapper$()))();
let _SinkTransformerStreamSubscription = () => (_SinkTransformerStreamSubscription = dart.constFn(async._SinkTransformerStreamSubscription$()))();
let _SinkMapper = () => (_SinkMapper = dart.constFn(async._SinkMapper$()))();
let _StreamSinkTransformer = () => (_StreamSinkTransformer = dart.constFn(async._StreamSinkTransformer$()))();
let _BoundSinkStream = () => (_BoundSinkStream = dart.constFn(async._BoundSinkStream$()))();
let _TransformDataHandler = () => (_TransformDataHandler = dart.constFn(async._TransformDataHandler$()))();
let _TransformErrorHandler = () => (_TransformErrorHandler = dart.constFn(async._TransformErrorHandler$()))();
let _TransformDoneHandler = () => (_TransformDoneHandler = dart.constFn(async._TransformDoneHandler$()))();
let _HandlerEventSink = () => (_HandlerEventSink = dart.constFn(async._HandlerEventSink$()))();
let _StreamHandlerTransformer = () => (_StreamHandlerTransformer = dart.constFn(async._StreamHandlerTransformer$()))();
let _SubscriptionTransformer = () => (_SubscriptionTransformer = dart.constFn(async._SubscriptionTransformer$()))();
let _StreamSubscriptionTransformer = () => (_StreamSubscriptionTransformer = dart.constFn(async._StreamSubscriptionTransformer$()))();
let _BoundSubscriptionStream = () => (_BoundSubscriptionStream = dart.constFn(async._BoundSubscriptionStream$()))();
let ZoneCallback = () => (ZoneCallback = dart.constFn(async.ZoneCallback$()))();
let ZoneUnaryCallback = () => (ZoneUnaryCallback = dart.constFn(async.ZoneUnaryCallback$()))();
let ZoneBinaryCallback = () => (ZoneBinaryCallback = dart.constFn(async.ZoneBinaryCallback$()))();
let HandleUncaughtErrorHandler = () => (HandleUncaughtErrorHandler = dart.constFn(async.HandleUncaughtErrorHandler$()))();
let RunHandler = () => (RunHandler = dart.constFn(async.RunHandler$()))();
let RunUnaryHandler = () => (RunUnaryHandler = dart.constFn(async.RunUnaryHandler$()))();
let RunBinaryHandler = () => (RunBinaryHandler = dart.constFn(async.RunBinaryHandler$()))();
let RegisterCallbackHandler = () => (RegisterCallbackHandler = dart.constFn(async.RegisterCallbackHandler$()))();
let RegisterUnaryCallbackHandler = () => (RegisterUnaryCallbackHandler = dart.constFn(async.RegisterUnaryCallbackHandler$()))();
let RegisterBinaryCallbackHandler = () => (RegisterBinaryCallbackHandler = dart.constFn(async.RegisterBinaryCallbackHandler$()))();
let _ZoneFunction = () => (_ZoneFunction = dart.constFn(async._ZoneFunction$()))();
let _ZoneFunctionOfRunHandler = () => (_ZoneFunctionOfRunHandler = dart.constFn(async._ZoneFunction$(async.RunHandler)))();
let _ZoneFunctionOfRunUnaryHandler = () => (_ZoneFunctionOfRunUnaryHandler = dart.constFn(async._ZoneFunction$(async.RunUnaryHandler)))();
let _ZoneFunctionOfRunBinaryHandler = () => (_ZoneFunctionOfRunBinaryHandler = dart.constFn(async._ZoneFunction$(async.RunBinaryHandler)))();
let _ZoneFunctionOfRegisterCallbackHandler = () => (_ZoneFunctionOfRegisterCallbackHandler = dart.constFn(async._ZoneFunction$(async.RegisterCallbackHandler)))();
let _ZoneFunctionOfRegisterUnaryCallbackHandler = () => (_ZoneFunctionOfRegisterUnaryCallbackHandler = dart.constFn(async._ZoneFunction$(async.RegisterUnaryCallbackHandler)))();
let _ZoneFunctionOfRegisterBinaryCallbackHandler = () => (_ZoneFunctionOfRegisterBinaryCallbackHandler = dart.constFn(async._ZoneFunction$(async.RegisterBinaryCallbackHandler)))();
let _ZoneFunctionOfErrorCallbackHandler = () => (_ZoneFunctionOfErrorCallbackHandler = dart.constFn(async._ZoneFunction$(async.ErrorCallbackHandler)))();
let _ZoneFunctionOfScheduleMicrotaskHandler = () => (_ZoneFunctionOfScheduleMicrotaskHandler = dart.constFn(async._ZoneFunction$(async.ScheduleMicrotaskHandler)))();
let _ZoneFunctionOfCreateTimerHandler = () => (_ZoneFunctionOfCreateTimerHandler = dart.constFn(async._ZoneFunction$(async.CreateTimerHandler)))();
let _ZoneFunctionOfCreatePeriodicTimerHandler = () => (_ZoneFunctionOfCreatePeriodicTimerHandler = dart.constFn(async._ZoneFunction$(async.CreatePeriodicTimerHandler)))();
let _ZoneFunctionOfPrintHandler = () => (_ZoneFunctionOfPrintHandler = dart.constFn(async._ZoneFunction$(async.PrintHandler)))();
let _ZoneFunctionOfForkHandler = () => (_ZoneFunctionOfForkHandler = dart.constFn(async._ZoneFunction$(async.ForkHandler)))();
let _ZoneFunctionOfHandleUncaughtErrorHandler = () => (_ZoneFunctionOfHandleUncaughtErrorHandler = dart.constFn(async._ZoneFunction$(async.HandleUncaughtErrorHandler)))();
let _HashMap = () => (_HashMap = dart.constFn(collection._HashMap$()))();
let _IdentityHashMap = () => (_IdentityHashMap = dart.constFn(collection._IdentityHashMap$()))();
let _PredicateOfObject = () => (_PredicateOfObject = dart.constFn(collection._Predicate$(core.Object)))();
let _CustomHashMap = () => (_CustomHashMap = dart.constFn(collection._CustomHashMap$()))();
let _HashMapKeyIterable = () => (_HashMapKeyIterable = dart.constFn(collection._HashMapKeyIterable$()))();
let _HashMapKeyIterator = () => (_HashMapKeyIterator = dart.constFn(collection._HashMapKeyIterator$()))();
let _LinkedIdentityHashMap = () => (_LinkedIdentityHashMap = dart.constFn(collection._LinkedIdentityHashMap$()))();
let _Es6LinkedIdentityHashMap = () => (_Es6LinkedIdentityHashMap = dart.constFn(collection._Es6LinkedIdentityHashMap$()))();
let _Es6MapIterable = () => (_Es6MapIterable = dart.constFn(collection._Es6MapIterable$()))();
let _Es6MapIterator = () => (_Es6MapIterator = dart.constFn(collection._Es6MapIterator$()))();
let _LinkedCustomHashMap = () => (_LinkedCustomHashMap = dart.constFn(collection._LinkedCustomHashMap$()))();
let IterableOfObject = () => (IterableOfObject = dart.constFn(core.Iterable$(core.Object)))();
let SetOfObject = () => (SetOfObject = dart.constFn(core.Set$(core.Object)))();
let SetMixin = () => (SetMixin = dart.constFn(collection.SetMixin$()))();
let SetBase = () => (SetBase = dart.constFn(collection.SetBase$()))();
let _HashSetBase = () => (_HashSetBase = dart.constFn(collection._HashSetBase$()))();
let _HashSet = () => (_HashSet = dart.constFn(collection._HashSet$()))();
let _IdentityHashSet = () => (_IdentityHashSet = dart.constFn(collection._IdentityHashSet$()))();
let _CustomHashSet = () => (_CustomHashSet = dart.constFn(collection._CustomHashSet$()))();
let _HashSetIterator = () => (_HashSetIterator = dart.constFn(collection._HashSetIterator$()))();
let _LinkedHashSet = () => (_LinkedHashSet = dart.constFn(collection._LinkedHashSet$()))();
let _LinkedIdentityHashSet = () => (_LinkedIdentityHashSet = dart.constFn(collection._LinkedIdentityHashSet$()))();
let _LinkedCustomHashSet = () => (_LinkedCustomHashSet = dart.constFn(collection._LinkedCustomHashSet$()))();
let _LinkedHashSetCell = () => (_LinkedHashSetCell = dart.constFn(collection._LinkedHashSetCell$()))();
let _LinkedHashSetIterator = () => (_LinkedHashSetIterator = dart.constFn(collection._LinkedHashSetIterator$()))();
let UnmodifiableListView = () => (UnmodifiableListView = dart.constFn(collection.UnmodifiableListView$()))();
let _Equality = () => (_Equality = dart.constFn(collection._Equality$()))();
let _Hasher = () => (_Hasher = dart.constFn(collection._Hasher$()))();
let HashMap = () => (HashMap = dart.constFn(collection.HashMap$()))();
let HashSet = () => (HashSet = dart.constFn(collection.HashSet$()))();
let IterableMixin = () => (IterableMixin = dart.constFn(collection.IterableMixin$()))();
let HasNextIterator = () => (HasNextIterator = dart.constFn(collection.HasNextIterator$()))();
let LinkedHashMap = () => (LinkedHashMap = dart.constFn(collection.LinkedHashMap$()))();
let LinkedHashSet = () => (LinkedHashSet = dart.constFn(collection.LinkedHashSet$()))();
let LinkedList = () => (LinkedList = dart.constFn(collection.LinkedList$()))();
let _LinkedListIterator = () => (_LinkedListIterator = dart.constFn(collection._LinkedListIterator$()))();
let LinkedListEntry = () => (LinkedListEntry = dart.constFn(collection.LinkedListEntry$()))();
let MapMixin = () => (MapMixin = dart.constFn(collection.MapMixin$()))();
let MapBase = () => (MapBase = dart.constFn(collection.MapBase$()))();
let _UnmodifiableMapMixin = () => (_UnmodifiableMapMixin = dart.constFn(collection._UnmodifiableMapMixin$()))();
let UnmodifiableMapBase = () => (UnmodifiableMapBase = dart.constFn(collection.UnmodifiableMapBase$()))();
let _MapBaseValueIterable = () => (_MapBaseValueIterable = dart.constFn(collection._MapBaseValueIterable$()))();
let _MapBaseValueIterator = () => (_MapBaseValueIterator = dart.constFn(collection._MapBaseValueIterator$()))();
let MapView = () => (MapView = dart.constFn(collection.MapView$()))();
let UnmodifiableMapView = () => (UnmodifiableMapView = dart.constFn(collection.UnmodifiableMapView$()))();
let dynamicAnddynamicTovoid = () => (dynamicAnddynamicTovoid = dart.constFn(dart.functionType(dart.void, [dart.dynamic, dart.dynamic])))();
let Queue = () => (Queue = dart.constFn(collection.Queue$()))();
let _DoubleLink = () => (_DoubleLink = dart.constFn(collection._DoubleLink$()))();
let DoubleLinkedQueueEntry = () => (DoubleLinkedQueueEntry = dart.constFn(collection.DoubleLinkedQueueEntry$()))();
let _UserDoubleLinkedQueueEntry = () => (_UserDoubleLinkedQueueEntry = dart.constFn(collection._UserDoubleLinkedQueueEntry$()))();
let _DoubleLinkedQueueEntry = () => (_DoubleLinkedQueueEntry = dart.constFn(collection._DoubleLinkedQueueEntry$()))();
let _DoubleLinkedQueueElement = () => (_DoubleLinkedQueueElement = dart.constFn(collection._DoubleLinkedQueueElement$()))();
let _DoubleLinkedQueueSentinel = () => (_DoubleLinkedQueueSentinel = dart.constFn(collection._DoubleLinkedQueueSentinel$()))();
let DoubleLinkedQueue = () => (DoubleLinkedQueue = dart.constFn(collection.DoubleLinkedQueue$()))();
let _DoubleLinkedQueueIterator = () => (_DoubleLinkedQueueIterator = dart.constFn(collection._DoubleLinkedQueueIterator$()))();
let ListQueue = () => (ListQueue = dart.constFn(collection.ListQueue$()))();
let _ListQueueIterator = () => (_ListQueueIterator = dart.constFn(collection._ListQueueIterator$()))();
let _Predicate = () => (_Predicate = dart.constFn(collection._Predicate$()))();
let _SplayTreeNode = () => (_SplayTreeNode = dart.constFn(collection._SplayTreeNode$()))();
let _SplayTreeMapNode = () => (_SplayTreeMapNode = dart.constFn(collection._SplayTreeMapNode$()))();
let _SplayTree = () => (_SplayTree = dart.constFn(collection._SplayTree$()))();
let _TypeTest = () => (_TypeTest = dart.constFn(collection._TypeTest$()))();
let SplayTreeMap = () => (SplayTreeMap = dart.constFn(collection.SplayTreeMap$()))();
let _SplayTreeIterator = () => (_SplayTreeIterator = dart.constFn(collection._SplayTreeIterator$()))();
let _SplayTreeKeyIterable = () => (_SplayTreeKeyIterable = dart.constFn(collection._SplayTreeKeyIterable$()))();
let _SplayTreeValueIterable = () => (_SplayTreeValueIterable = dart.constFn(collection._SplayTreeValueIterable$()))();
let _SplayTreeKeyIterator = () => (_SplayTreeKeyIterator = dart.constFn(collection._SplayTreeKeyIterator$()))();
let _SplayTreeValueIterator = () => (_SplayTreeValueIterator = dart.constFn(collection._SplayTreeValueIterator$()))();
let _SplayTreeNodeIterator = () => (_SplayTreeNodeIterator = dart.constFn(collection._SplayTreeNodeIterator$()))();
let SplayTreeSet = () => (SplayTreeSet = dart.constFn(collection.SplayTreeSet$()))();
let dynamicAnddynamicTodynamic = () => (dynamicAnddynamicTodynamic = dart.constFn(dart.functionType(dart.dynamic, [dart.dynamic, dart.dynamic])))();
let MappedIterableOfString$dynamic = () => (MappedIterableOfString$dynamic = dart.constFn(_internal.MappedIterable$(core.String, dart.dynamic)))();
let SinkOfObject = () => (SinkOfObject = dart.constFn(core.Sink$(core.Object)))();
let Codec = () => (Codec = dart.constFn(convert.Codec$()))();
let ComparableOfString = () => (ComparableOfString = dart.constFn(core.Comparable$(core.String)))();
let List = () => (List = dart.constFn(core.List$()))();
let StreamOfListOfint = () => (StreamOfListOfint = dart.constFn(async.Stream$(ListOfint())))();
let MapOfString$Encoding = () => (MapOfString$Encoding = dart.constFn(core.Map$(core.String, convert.Encoding)))();
let Converter = () => (Converter = dart.constFn(convert.Converter$()))();
let SinkOfListOfint = () => (SinkOfListOfint = dart.constFn(core.Sink$(ListOfint())))();
let StreamOfString = () => (StreamOfString = dart.constFn(async.Stream$(core.String)))();
let SinkOfString = () => (SinkOfString = dart.constFn(core.Sink$(core.String)))();
let ChunkedConversionSink = () => (ChunkedConversionSink = dart.constFn(convert.ChunkedConversionSink$()))();
let ListOfintTovoid = () => (ListOfintTovoid = dart.constFn(dart.functionType(dart.void, [ListOfint()])))();
let _ChunkedConversionCallback = () => (_ChunkedConversionCallback = dart.constFn(convert._ChunkedConversionCallback$()))();
let ChunkedConverter = () => (ChunkedConverter = dart.constFn(convert.ChunkedConverter$()))();
let _SimpleCallbackSink = () => (_SimpleCallbackSink = dart.constFn(convert._SimpleCallbackSink$()))();
let _ConverterStreamEventSink = () => (_ConverterStreamEventSink = dart.constFn(convert._ConverterStreamEventSink$()))();
let _FusedCodec = () => (_FusedCodec = dart.constFn(convert._FusedCodec$()))();
let _InvertedCodec = () => (_InvertedCodec = dart.constFn(convert._InvertedCodec$()))();
let _FusedConverter = () => (_FusedConverter = dart.constFn(convert._FusedConverter$()))();
let StreamOfObject = () => (StreamOfObject = dart.constFn(async.Stream$(core.Object)))();
let JSArrayOfListOfint = () => (JSArrayOfListOfint = dart.constFn(_interceptors.JSArray$(ListOfint())))();
let Uint8ListAndintAndintTovoid = () => (Uint8ListAndintAndintTovoid = dart.constFn(dart.functionType(dart.void, [typed_data.Uint8List, core.int, core.int])))();
let EventSinkOfString = () => (EventSinkOfString = dart.constFn(async.EventSink$(core.String)))();
let StreamTransformerOfString$String = () => (StreamTransformerOfString$String = dart.constFn(async.StreamTransformer$(core.String, core.String)))();
let Comparator = () => (Comparator = dart.constFn(core.Comparator$()))();
let Comparable = () => (Comparable = dart.constFn(core.Comparable$()))();
let ComparableOfDateTime = () => (ComparableOfDateTime = dart.constFn(core.Comparable$(core.DateTime)))();
let ComparableOfDuration = () => (ComparableOfDuration = dart.constFn(core.Comparable$(core.Duration)))();
let Expando = () => (Expando = dart.constFn(core.Expando$()))();
let _Generator = () => (_Generator = dart.constFn(core._Generator$()))();
let _GeneratorIterable = () => (_GeneratorIterable = dart.constFn(core._GeneratorIterable$()))();
let _GeneratorIterator = () => (_GeneratorIterator = dart.constFn(core._GeneratorIterator$()))();
let BidirectionalIterator = () => (BidirectionalIterator = dart.constFn(core.BidirectionalIterator$()))();
let Map = () => (Map = dart.constFn(core.Map$()))();
let Set = () => (Set = dart.constFn(core.Set$()))();
let Sink = () => (Sink = dart.constFn(core.Sink$()))();
let BidirectionalIteratorOfint = () => (BidirectionalIteratorOfint = dart.constFn(core.BidirectionalIterator$(core.int)))();
let UnmodifiableMapViewOfString$String = () => (UnmodifiableMapViewOfString$String = dart.constFn(collection.UnmodifiableMapView$(core.String, core.String)))();
let MapOfString$ListOfString = () => (MapOfString$ListOfString = dart.constFn(core.Map$(core.String, ListOfString())))();
let MapOfString$String = () => (MapOfString$String = dart.constFn(core.Map$(core.String, core.String)))();
let IterableOfString = () => (IterableOfString = dart.constFn(core.Iterable$(core.String)))();
let MapOfString$dynamic = () => (MapOfString$dynamic = dart.constFn(core.Map$(core.String, dart.dynamic)))();
let MapOfString$ServiceExtensionHandler = () => (MapOfString$ServiceExtensionHandler = dart.constFn(core.Map$(core.String, developer.ServiceExtensionHandler)))();
let MapOfString$Metric = () => (MapOfString$Metric = dart.constFn(core.Map$(core.String, developer.Metric)))();
let ListOf_SyncBlock = () => (ListOf_SyncBlock = dart.constFn(core.List$(developer._SyncBlock)))();
let JSArrayOf_AsyncBlock = () => (JSArrayOf_AsyncBlock = dart.constFn(_interceptors.JSArray$(developer._AsyncBlock)))();
let ListOf_AsyncBlock = () => (ListOf_AsyncBlock = dart.constFn(core.List$(developer._AsyncBlock)))();
let CompleterOfUri = () => (CompleterOfUri = dart.constFn(async.Completer$(core.Uri)))();
let FutureOfIsolate = () => (FutureOfIsolate = dart.constFn(async.Future$(isolate.Isolate)))();
let JsArray = () => (JsArray = dart.constFn(js.JsArray$()))();
let ExpandoOfFunction = () => (ExpandoOfFunction = dart.constFn(core.Expando$(core.Function)))();
let PointOfnum = () => (PointOfnum = dart.constFn(math.Point$(core.num)))();
let Point = () => (Point = dart.constFn(math.Point$()))();
let RectangleOfnum = () => (RectangleOfnum = dart.constFn(math.Rectangle$(core.num)))();
let _RectangleBase = () => (_RectangleBase = dart.constFn(math._RectangleBase$()))();
let Rectangle = () => (Rectangle = dart.constFn(math.Rectangle$()))();
let MutableRectangle = () => (MutableRectangle = dart.constFn(math.MutableRectangle$()))();
let EventStreamProviderOfEvent = () => (EventStreamProviderOfEvent = dart.constFn(html.EventStreamProvider$(html.Event)))();
let EventStreamProviderOfVersionChangeEvent = () => (EventStreamProviderOfVersionChangeEvent = dart.constFn(html.EventStreamProvider$(indexed_db.VersionChangeEvent)))();
let FutureOfDatabase = () => (FutureOfDatabase = dart.constFn(async.Future$(indexed_db.Database)))();
let CompleterOfIdbFactory = () => (CompleterOfIdbFactory = dart.constFn(async.Completer$(indexed_db.IdbFactory)))();
let FutureOfIdbFactory = () => (FutureOfIdbFactory = dart.constFn(async.Future$(indexed_db.IdbFactory)))();
let FutureOfListOfString = () => (FutureOfListOfString = dart.constFn(async.Future$(ListOfString())))();
let EventTovoid = () => (EventTovoid = dart.constFn(dart.functionType(dart.void, [html.Event])))();
let FutureOfint = () => (FutureOfint = dart.constFn(async.Future$(core.int)))();
let CompleterOfDatabase = () => (CompleterOfDatabase = dart.constFn(async.Completer$(indexed_db.Database)))();
let ListOfEventTarget = () => (ListOfEventTarget = dart.constFn(core.List$(html.EventTarget)))();
let RectangleOfint = () => (RectangleOfint = dart.constFn(math.Rectangle$(core.int)))();
let IterableOfNode = () => (IterableOfNode = dart.constFn(core.Iterable$(html.Node)))();
let ListOfNode = () => (ListOfNode = dart.constFn(core.List$(html.Node)))();
let ListOfElement = () => (ListOfElement = dart.constFn(core.List$(html.Element)))();
let IterableOfMapOfString$dynamic = () => (IterableOfMapOfString$dynamic = dart.constFn(core.Iterable$(MapOfString$dynamic())))();
let EventStreamProviderOfWheelEvent = () => (EventStreamProviderOfWheelEvent = dart.constFn(html.EventStreamProvider$(html.WheelEvent)))();
let EventStreamProviderOfTransitionEvent = () => (EventStreamProviderOfTransitionEvent = dart.constFn(html.EventStreamProvider$(html.TransitionEvent)))();
let EventStreamProviderOfMouseEvent = () => (EventStreamProviderOfMouseEvent = dart.constFn(html.EventStreamProvider$(html.MouseEvent)))();
let EventStreamProviderOfClipboardEvent = () => (EventStreamProviderOfClipboardEvent = dart.constFn(html.EventStreamProvider$(html.ClipboardEvent)))();
let EventStreamProviderOfKeyboardEvent = () => (EventStreamProviderOfKeyboardEvent = dart.constFn(html.EventStreamProvider$(html.KeyboardEvent)))();
let EventStreamProviderOfTouchEvent = () => (EventStreamProviderOfTouchEvent = dart.constFn(html.EventStreamProvider$(html.TouchEvent)))();
let _CustomEventStreamProviderOfWheelEvent = () => (_CustomEventStreamProviderOfWheelEvent = dart.constFn(html._CustomEventStreamProvider$(html.WheelEvent)))();
let _CustomEventStreamProviderOfTransitionEvent = () => (_CustomEventStreamProviderOfTransitionEvent = dart.constFn(html._CustomEventStreamProvider$(html.TransitionEvent)))();
let ListOfEntry = () => (ListOfEntry = dart.constFn(core.List$(html.Entry)))();
let EventStreamProviderOfProgressEvent = () => (EventStreamProviderOfProgressEvent = dart.constFn(html.EventStreamProvider$(html.ProgressEvent)))();
let EventStreamProviderOfMediaKeyEvent = () => (EventStreamProviderOfMediaKeyEvent = dart.constFn(html.EventStreamProvider$(html.MediaKeyEvent)))();
let EventStreamProviderOfMessageEvent = () => (EventStreamProviderOfMessageEvent = dart.constFn(html.EventStreamProvider$(html.MessageEvent)))();
let EventStreamProviderOfPopStateEvent = () => (EventStreamProviderOfPopStateEvent = dart.constFn(html.EventStreamProvider$(html.PopStateEvent)))();
let EventStreamProviderOfStorageEvent = () => (EventStreamProviderOfStorageEvent = dart.constFn(html.EventStreamProvider$(html.StorageEvent)))();
let EventStreamProviderOfContextEvent = () => (EventStreamProviderOfContextEvent = dart.constFn(html.EventStreamProvider$(web_gl.ContextEvent)))();
let ListOfnum = () => (ListOfnum = dart.constFn(core.List$(core.num)))();
let ListOfMessagePort = () => (ListOfMessagePort = dart.constFn(core.List$(html.MessagePort)))();
let CompleterOfFileSystem = () => (CompleterOfFileSystem = dart.constFn(async.Completer$(html.FileSystem)))();
let CompleterOfEntry = () => (CompleterOfEntry = dart.constFn(async.Completer$(html.Entry)))();
let ListOfCssRule = () => (ListOfCssRule = dart.constFn(core.List$(html.CssRule)))();
let IterableOfElement = () => (IterableOfElement = dart.constFn(core.Iterable$(html.Element)))();
let IterableOfCssStyleDeclaration = () => (IterableOfCssStyleDeclaration = dart.constFn(core.Iterable$(html.CssStyleDeclaration)))();
let ListOfFile = () => (ListOfFile = dart.constFn(core.List$(html.File)))();
let CompleterOfString = () => (CompleterOfString = dart.constFn(async.Completer$(core.String)))();
let CompleterOfMetadata = () => (CompleterOfMetadata = dart.constFn(async.Completer$(html.Metadata)))();
let CompleterOfListOfEntry = () => (CompleterOfListOfEntry = dart.constFn(async.Completer$(ListOfEntry())))();
let ListOfStyleSheet = () => (ListOfStyleSheet = dart.constFn(core.List$(html.StyleSheet)))();
let EventStreamProviderOfSecurityPolicyViolationEvent = () => (EventStreamProviderOfSecurityPolicyViolationEvent = dart.constFn(html.EventStreamProvider$(html.SecurityPolicyViolationEvent)))();
let ImmutableListMixin = () => (ImmutableListMixin = dart.constFn(html.ImmutableListMixin$()))();
let ElementAndElementToint = () => (ElementAndElementToint = dart.constFn(dart.functionType(core.int, [html.Element, html.Element])))();
let ElementTobool = () => (ElementTobool = dart.constFn(dart.functionType(core.bool, [html.Element])))();
let ElementList = () => (ElementList = dart.constFn(html.ElementList$()))();
let _FrozenElementList = () => (_FrozenElementList = dart.constFn(html._FrozenElementList$()))();
let _EventStreamOfEvent = () => (_EventStreamOfEvent = dart.constFn(html._EventStream$(html.Event)))();
let _ElementEventStreamImplOfEvent = () => (_ElementEventStreamImplOfEvent = dart.constFn(html._ElementEventStreamImpl$(html.Event)))();
let CompleterOfFileWriter = () => (CompleterOfFileWriter = dart.constFn(async.Completer$(html.FileWriter)))();
let CompleterOfFile = () => (CompleterOfFile = dart.constFn(async.Completer$(html.File)))();
let ListOfFontFace = () => (ListOfFontFace = dart.constFn(core.List$(html.FontFace)))();
let ListOfGamepadButton = () => (ListOfGamepadButton = dart.constFn(core.List$(html.GamepadButton)))();
let CompleterOfGeoposition = () => (CompleterOfGeoposition = dart.constFn(async.Completer$(html.Geoposition)))();
let StreamControllerOfGeoposition = () => (StreamControllerOfGeoposition = dart.constFn(async.StreamController$(html.Geoposition)))();
let _CustomEventStreamProviderOfEvent = () => (_CustomEventStreamProviderOfEvent = dart.constFn(html._CustomEventStreamProvider$(html.Event)))();
let CompleterOfHttpRequest = () => (CompleterOfHttpRequest = dart.constFn(async.Completer$(html.HttpRequest)))();
let ProgressEventTovoid = () => (ProgressEventTovoid = dart.constFn(dart.functionType(dart.void, [html.ProgressEvent])))();
let ListOfMap = () => (ListOfMap = dart.constFn(core.List$(core.Map)))();
let ListOfMediaStreamTrack = () => (ListOfMediaStreamTrack = dart.constFn(core.List$(html.MediaStreamTrack)))();
let ListOfSourceInfo = () => (ListOfSourceInfo = dart.constFn(core.List$(html.SourceInfo)))();
let CompleterOfListOfSourceInfo = () => (CompleterOfListOfSourceInfo = dart.constFn(async.Completer$(ListOfSourceInfo())))();
let EventStreamProviderOfMidiMessageEvent = () => (EventStreamProviderOfMidiMessageEvent = dart.constFn(html.EventStreamProvider$(html.MidiMessageEvent)))();
let ListOfMimeType = () => (ListOfMimeType = dart.constFn(core.List$(html.MimeType)))();
let ListOfMutationRecord = () => (ListOfMutationRecord = dart.constFn(core.List$(html.MutationRecord)))();
let MapOfString$bool = () => (MapOfString$bool = dart.constFn(core.Map$(core.String, core.bool)))();
let CompleterOfMediaStream = () => (CompleterOfMediaStream = dart.constFn(async.Completer$(html.MediaStream)))();
let NodeTobool = () => (NodeTobool = dart.constFn(dart.functionType(core.bool, [html.Node])))();
let ComparatorOfNode = () => (ComparatorOfNode = dart.constFn(core.Comparator$(html.Node)))();
let ListOfPlugin = () => (ListOfPlugin = dart.constFn(core.List$(html.Plugin)))();
let EventStreamProviderOfRtcDtmfToneChangeEvent = () => (EventStreamProviderOfRtcDtmfToneChangeEvent = dart.constFn(html.EventStreamProvider$(html.RtcDtmfToneChangeEvent)))();
let JSArrayOfMapOfString$String = () => (JSArrayOfMapOfString$String = dart.constFn(_interceptors.JSArray$(MapOfString$String())))();
let ListOfMapOfString$String = () => (ListOfMapOfString$String = dart.constFn(core.List$(MapOfString$String())))();
let CompleterOfRtcSessionDescription = () => (CompleterOfRtcSessionDescription = dart.constFn(async.Completer$(html.RtcSessionDescription)))();
let CompleterOfRtcStatsResponse = () => (CompleterOfRtcStatsResponse = dart.constFn(async.Completer$(html.RtcStatsResponse)))();
let EventStreamProviderOfMediaStreamEvent = () => (EventStreamProviderOfMediaStreamEvent = dart.constFn(html.EventStreamProvider$(html.MediaStreamEvent)))();
let EventStreamProviderOfRtcDataChannelEvent = () => (EventStreamProviderOfRtcDataChannelEvent = dart.constFn(html.EventStreamProvider$(html.RtcDataChannelEvent)))();
let EventStreamProviderOfRtcIceCandidateEvent = () => (EventStreamProviderOfRtcIceCandidateEvent = dart.constFn(html.EventStreamProvider$(html.RtcIceCandidateEvent)))();
let ListOfOptionElement = () => (ListOfOptionElement = dart.constFn(core.List$(html.OptionElement)))();
let UnmodifiableListViewOfOptionElement = () => (UnmodifiableListViewOfOptionElement = dart.constFn(collection.UnmodifiableListView$(html.OptionElement)))();
let JSArrayOfOptionElement = () => (JSArrayOfOptionElement = dart.constFn(_interceptors.JSArray$(html.OptionElement)))();
let ListOfSourceBuffer = () => (ListOfSourceBuffer = dart.constFn(core.List$(html.SourceBuffer)))();
let ListOfSpeechGrammar = () => (ListOfSpeechGrammar = dart.constFn(core.List$(html.SpeechGrammar)))();
let EventStreamProviderOfSpeechRecognitionError = () => (EventStreamProviderOfSpeechRecognitionError = dart.constFn(html.EventStreamProvider$(html.SpeechRecognitionError)))();
let EventStreamProviderOfSpeechRecognitionEvent = () => (EventStreamProviderOfSpeechRecognitionEvent = dart.constFn(html.EventStreamProvider$(html.SpeechRecognitionEvent)))();
let ListOfSpeechRecognitionResult = () => (ListOfSpeechRecognitionResult = dart.constFn(core.List$(html.SpeechRecognitionResult)))();
let EventStreamProviderOfSpeechSynthesisEvent = () => (EventStreamProviderOfSpeechSynthesisEvent = dart.constFn(html.EventStreamProvider$(html.SpeechSynthesisEvent)))();
let VoidToString = () => (VoidToString = dart.constFn(dart.functionType(core.String, [])))();
let StringAndStringTovoid = () => (StringAndStringTovoid = dart.constFn(dart.functionType(dart.void, [core.String, core.String])))();
let _WrappedListOfTableSectionElement = () => (_WrappedListOfTableSectionElement = dart.constFn(html._WrappedList$(html.TableSectionElement)))();
let _WrappedListOfTableRowElement = () => (_WrappedListOfTableRowElement = dart.constFn(html._WrappedList$(html.TableRowElement)))();
let _WrappedListOfTableCellElement = () => (_WrappedListOfTableCellElement = dart.constFn(html._WrappedList$(html.TableCellElement)))();
let ListOfTextTrackCue = () => (ListOfTextTrackCue = dart.constFn(core.List$(html.TextTrackCue)))();
let ListOfTextTrack = () => (ListOfTextTrack = dart.constFn(core.List$(html.TextTrack)))();
let EventStreamProviderOfTrackEvent = () => (EventStreamProviderOfTrackEvent = dart.constFn(html.EventStreamProvider$(html.TrackEvent)))();
let ListOfTouch = () => (ListOfTouch = dart.constFn(core.List$(html.Touch)))();
let ListOfTrackDefault = () => (ListOfTrackDefault = dart.constFn(core.List$(html.TrackDefault)))();
let EventStreamProviderOfCloseEvent = () => (EventStreamProviderOfCloseEvent = dart.constFn(html.EventStreamProvider$(html.CloseEvent)))();
let CompleterOfnum = () => (CompleterOfnum = dart.constFn(async.Completer$(core.num)))();
let EventStreamProviderOfDeviceMotionEvent = () => (EventStreamProviderOfDeviceMotionEvent = dart.constFn(html.EventStreamProvider$(html.DeviceMotionEvent)))();
let EventStreamProviderOfDeviceOrientationEvent = () => (EventStreamProviderOfDeviceOrientationEvent = dart.constFn(html.EventStreamProvider$(html.DeviceOrientationEvent)))();
let EventStreamProviderOfAnimationEvent = () => (EventStreamProviderOfAnimationEvent = dart.constFn(html.EventStreamProvider$(html.AnimationEvent)))();
let EventStreamProviderOfBeforeUnloadEvent = () => (EventStreamProviderOfBeforeUnloadEvent = dart.constFn(html.EventStreamProvider$(html.BeforeUnloadEvent)))();
let StreamControllerOfBeforeUnloadEvent = () => (StreamControllerOfBeforeUnloadEvent = dart.constFn(async.StreamController$(html.BeforeUnloadEvent)))();
let _ElementEventStreamImplOfBeforeUnloadEvent = () => (_ElementEventStreamImplOfBeforeUnloadEvent = dart.constFn(html._ElementEventStreamImpl$(html.BeforeUnloadEvent)))();
let _ElementListEventStreamImplOfBeforeUnloadEvent = () => (_ElementListEventStreamImplOfBeforeUnloadEvent = dart.constFn(html._ElementListEventStreamImpl$(html.BeforeUnloadEvent)))();
let ElementListOfElement = () => (ElementListOfElement = dart.constFn(html.ElementList$(html.Element)))();
let ListOfRectangleOfnum = () => (ListOfRectangleOfnum = dart.constFn(core.List$(RectangleOfnum())))();
let ListOfGamepad = () => (ListOfGamepad = dart.constFn(core.List$(html.Gamepad)))();
let ListOfCssClassSetImpl = () => (ListOfCssClassSetImpl = dart.constFn(core.List$(html_common.CssClassSetImpl)))();
let LinkedHashSetOfString = () => (LinkedHashSetOfString = dart.constFn(collection.LinkedHashSet$(core.String)))();
let StringTobool = () => (StringTobool = dart.constFn(dart.functionType(core.bool, [core.String])))();
let StringAndStringToString = () => (StringAndStringToString = dart.constFn(dart.functionType(core.String, [core.String, core.String])))();
let SetOfStringTodynamic = () => (SetOfStringTodynamic = dart.constFn(dart.functionType(dart.dynamic, [SetOfString()])))();
let EventStreamProvider = () => (EventStreamProvider = dart.constFn(html.EventStreamProvider$()))();
let ElementStream = () => (ElementStream = dart.constFn(html.ElementStream$()))();
let _EventStream = () => (_EventStream = dart.constFn(html._EventStream$()))();
let _ElementEventStreamImpl = () => (_ElementEventStreamImpl = dart.constFn(html._ElementEventStreamImpl$()))();
let _ElementListEventStreamImpl = () => (_ElementListEventStreamImpl = dart.constFn(html._ElementListEventStreamImpl$()))();
let _EventListener = () => (_EventListener = dart.constFn(html._EventListener$()))();
let _wrapZoneCallbackOfEvent$dynamic = () => (_wrapZoneCallbackOfEvent$dynamic = dart.constFn(html._wrapZoneCallback$(html.Event, dart.dynamic)))();
let _EventStreamSubscription = () => (_EventStreamSubscription = dart.constFn(html._EventStreamSubscription$()))();
let CustomStream = () => (CustomStream = dart.constFn(html.CustomStream$()))();
let _CustomEventStreamImpl = () => (_CustomEventStreamImpl = dart.constFn(html._CustomEventStreamImpl$()))();
let EventStreamProviderOfKeyEvent = () => (EventStreamProviderOfKeyEvent = dart.constFn(html.EventStreamProvider$(html.KeyEvent)))();
let CustomStreamOfKeyEvent = () => (CustomStreamOfKeyEvent = dart.constFn(html.CustomStream$(html.KeyEvent)))();
let _StreamPool = () => (_StreamPool = dart.constFn(html._StreamPool$()))();
let _CustomEventStreamProvider = () => (_CustomEventStreamProvider = dart.constFn(html._CustomEventStreamProvider$()))();
let MapOfString$Function = () => (MapOfString$Function = dart.constFn(core.Map$(core.String, core.Function)))();
let JSArrayOfKeyEvent = () => (JSArrayOfKeyEvent = dart.constFn(_interceptors.JSArray$(html.KeyEvent)))();
let ListOfKeyEvent = () => (ListOfKeyEvent = dart.constFn(core.List$(html.KeyEvent)))();
let MapOfString$int = () => (MapOfString$int = dart.constFn(core.Map$(core.String, core.int)))();
let JSArrayOfNodeValidator = () => (JSArrayOfNodeValidator = dart.constFn(_interceptors.JSArray$(html.NodeValidator)))();
let ListOfNodeValidator = () => (ListOfNodeValidator = dart.constFn(core.List$(html.NodeValidator)))();
let _WrappedList = () => (_WrappedList = dart.constFn(html._WrappedList$()))();
let IteratorOfNode = () => (IteratorOfNode = dart.constFn(core.Iterator$(html.Node)))();
let _WrappedIterator = () => (_WrappedIterator = dart.constFn(html._WrappedIterator$()))();
let HttpRequestTodynamic = () => (HttpRequestTodynamic = dart.constFn(dart.functionType(dart.dynamic, [html.HttpRequest])))();
let FixedSizeListIterator = () => (FixedSizeListIterator = dart.constFn(html.FixedSizeListIterator$()))();
let _VariableSizeListIterator = () => (_VariableSizeListIterator = dart.constFn(html._VariableSizeListIterator$()))();
let _wrapZoneCallback = () => (_wrapZoneCallback = dart.constFn(html._wrapZoneCallback$()))();
let _wrapZoneBinaryCallback = () => (_wrapZoneBinaryCallback = dart.constFn(html._wrapZoneBinaryCallback$()))();
let ElementTovoid = () => (ElementTovoid = dart.constFn(dart.functionType(dart.void, [html.Element])))();
let ListOfLength = () => (ListOfLength = dart.constFn(core.List$(svg.Length)))();
let ListOfNumber = () => (ListOfNumber = dart.constFn(core.List$(svg.Number)))();
let ListOfPathSeg = () => (ListOfPathSeg = dart.constFn(core.List$(svg.PathSeg)))();
let ListOfTransform = () => (ListOfTransform = dart.constFn(core.List$(svg.Transform)))();
let CompleterOfAudioBuffer = () => (CompleterOfAudioBuffer = dart.constFn(async.Completer$(web_audio.AudioBuffer)))();
let EventStreamProviderOfAudioProcessingEvent = () => (EventStreamProviderOfAudioProcessingEvent = dart.constFn(html.EventStreamProvider$(web_audio.AudioProcessingEvent)))();
let dynamicTodynamic = () => (dynamicTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic])))();
let StringAndStringToint = () => (StringAndStringToint = dart.constFn(dart.definiteFunctionType(core.int, [core.String, core.String])))();
let VoidTo_MethodStats = () => (VoidTo_MethodStats = dart.constFn(dart.definiteFunctionType(dart._MethodStats, [])))();
let dynamicToString = () => (dynamicToString = dart.constFn(dart.definiteFunctionType(core.String, [dart.dynamic])))();
let dynamicToListOfString = () => (dynamicToListOfString = dart.constFn(dart.definiteFunctionType(ListOfString(), [dart.dynamic])))();
let dynamicToList = () => (dynamicToList = dart.constFn(dart.definiteFunctionType(core.List, [dart.dynamic])))();
let dynamicAndSetOfNameValuePairTovoid = () => (dynamicAndSetOfNameValuePairTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, SetOfNameValuePair()])))();
let TypeToString = () => (TypeToString = dart.constFn(dart.definiteFunctionType(core.String, [core.Type])))();
let dynamicToObject = () => (dynamicToObject = dart.constFn(dart.definiteFunctionType(core.Object, [dart.dynamic])))();
let dynamicAnddynamicToString = () => (dynamicAnddynamicToString = dart.constFn(dart.definiteFunctionType(core.String, [dart.dynamic, dart.dynamic])))();
let dynamicAndStringTobool = () => (dynamicAndStringTobool = dart.constFn(dart.definiteFunctionType(core.bool, [dart.dynamic, core.String])))();
let intAnddynamicTovoid = () => (intAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int, dart.dynamic])))();
let ObjectAndObjectToObject = () => (ObjectAndObjectToObject = dart.constFn(dart.definiteFunctionType(core.Object, [core.Object, core.Object])))();
let StringTobool = () => (StringTobool = dart.constFn(dart.definiteFunctionType(core.bool, [core.String])))();
let dynamicTobool = () => (dynamicTobool = dart.constFn(dart.definiteFunctionType(core.bool, [dart.dynamic])))();
let dynamicAnddynamicTodynamic = () => (dynamicAnddynamicTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic])))();
let StringAndObjectTovoid = () => (StringAndObjectTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, core.Object])))();
let dynamicAnddynamicTovoid = () => (dynamicAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic])))();
let StringToNameValuePair = () => (StringToNameValuePair = dart.constFn(dart.definiteFunctionType(_debugger.NameValuePair, [core.String])))();
let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [])))();
let StringAndString__Todynamic = () => (StringAndString__Todynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.String, core.String], [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])))();
let VoidToIsolateContext = () => (VoidToIsolateContext = dart.constFn(dart.definiteFunctionType(_foreign_helper.IsolateContext, [])))();
let dynamicAndFunctionTodynamic = () => (dynamicAndFunctionTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.Function])))();
let dynamicTovoid = () => (dynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic])))();
let TypeTodynamic = () => (TypeTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Type])))();
let VoidToString = () => (VoidToString = dart.constFn(dart.definiteFunctionType(core.String, [])))();
let StringToString = () => (StringToString = dart.constFn(dart.definiteFunctionType(core.String, [core.String])))();
let StringAndStringTodynamic = () => (StringAndStringTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.String, core.String])))();
let FunctionTovoid = () => (FunctionTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Function])))();
let StringAndStringToString = () => (StringAndStringToString = dart.constFn(dart.definiteFunctionType(core.String, [core.String, core.String])))();
let TypeAndStringTodynamic = () => (TypeAndStringTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Type, core.String])))();
let dynamicAnddynamicToint = () => (dynamicAnddynamicToint = dart.constFn(dart.definiteFunctionType(core.int, [dart.dynamic, dart.dynamic])))();
let ListOfEToListOfE = () => (ListOfEToListOfE = dart.constFn(dart.definiteFunctionType(E => [core.List$(E), [core.List$(E)]])))();
let StringTovoid = () => (StringTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String])))();
let _IsolateContextAndFunctionTodynamic = () => (_IsolateContextAndFunctionTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [_isolate_helper._IsolateContext, core.Function])))();
let VoidTobool = () => (VoidTobool = dart.constFn(dart.definiteFunctionType(core.bool, [])))();
let VoidTo_IsolateContext = () => (VoidTo_IsolateContext = dart.constFn(dart.definiteFunctionType(_isolate_helper._IsolateContext, [])))();
let VoidTovoid = () => (VoidTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [])))();
let ListTodynamic = () => (ListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.List])))();
let StringTodynamic = () => (StringTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.String])))();
let TimerTovoid = () => (TimerTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [async.Timer])))();
let dynamicToFuture = () => (dynamicToFuture = dart.constFn(dart.definiteFunctionType(async.Future, [dart.dynamic])))();
let boolTodynamic = () => (boolTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.bool])))();
let dynamicAndStackTraceTovoid = () => (dynamicAndStackTraceTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, core.StackTrace])))();
let VoidToFuture = () => (VoidToFuture = dart.constFn(dart.definiteFunctionType(async.Future, [])))();
let VoidToint = () => (VoidToint = dart.constFn(dart.definiteFunctionType(core.int, [])))();
let dynamicAnddynamicToError = () => (dynamicAnddynamicToError = dart.constFn(dart.definiteFunctionType(core.Error, [dart.dynamic, dart.dynamic])))();
let dynamicAnddynamicAnddynamicToError = () => (dynamicAnddynamicAnddynamicToError = dart.constFn(dart.definiteFunctionType(core.Error, [dart.dynamic, dart.dynamic, dart.dynamic])))();
let dynamicAnddynamicAnddynamicTodynamic = () => (dynamicAnddynamicAnddynamicTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic, dart.dynamic])))();
let dynamicToArgumentError = () => (dynamicToArgumentError = dart.constFn(dart.definiteFunctionType(core.ArgumentError, [dart.dynamic])))();
let dynamicToStackTrace = () => (dynamicToStackTrace = dart.constFn(dart.definiteFunctionType(core.StackTrace, [dart.dynamic])))();
let dynamicToint = () => (dynamicToint = dart.constFn(dart.definiteFunctionType(core.int, [dart.dynamic])))();
let dynamicAndMapTodynamic = () => (dynamicAndMapTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.Map])))();
let dynamicAndStringTodynamic = () => (dynamicAndStringTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.String])))();
let dynamicAndStringAnddynamicTovoid = () => (dynamicAndStringAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, core.String, dart.dynamic])))();
let FAndintToF = () => (FAndintToF = dart.constFn(dart.definiteFunctionType(F => [F, [F, core.int]])))();
let JSSyntaxRegExpTodynamic = () => (JSSyntaxRegExpTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [_js_helper.JSSyntaxRegExp])))();
let JSSyntaxRegExpToint = () => (JSSyntaxRegExpToint = dart.constFn(dart.definiteFunctionType(core.int, [_js_helper.JSSyntaxRegExp])))();
let JSSyntaxRegExpAndStringAndintToMatch = () => (JSSyntaxRegExpAndStringAndintToMatch = dart.constFn(dart.definiteFunctionType(core.Match, [_js_helper.JSSyntaxRegExp, core.String, core.int])))();
let dynamicAnddynamicAnddynamicToint = () => (dynamicAnddynamicAnddynamicToint = dart.constFn(dart.definiteFunctionType(core.int, [dart.dynamic, dart.dynamic, dart.dynamic])))();
let dynamicAnddynamicAnddynamicToString = () => (dynamicAnddynamicAnddynamicToString = dart.constFn(dart.definiteFunctionType(core.String, [dart.dynamic, dart.dynamic, dart.dynamic])))();
let dynamicAnddynamicAnddynamicTobool = () => (dynamicAnddynamicAnddynamicTobool = dart.constFn(dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic, dart.dynamic])))();
let StringAndStringAndintToIterableOfMatch = () => (StringAndStringAndintToIterableOfMatch = dart.constFn(dart.definiteFunctionType(IterableOfMatch(), [core.String, core.String, core.int])))();
let StringAnddynamicAndintTobool = () => (StringAnddynamicAndintTobool = dart.constFn(dart.definiteFunctionType(core.bool, [core.String, dart.dynamic, core.int])))();
let StringAndJSSyntaxRegExpAndString__ToString = () => (StringAndJSSyntaxRegExpAndString__ToString = dart.constFn(dart.definiteFunctionType(core.String, [core.String, _js_helper.JSSyntaxRegExp, core.String, core.int])))();
let StringAndPatternAndStringToString = () => (StringAndPatternAndStringToString = dart.constFn(dart.definiteFunctionType(core.String, [core.String, core.Pattern, core.String])))();
let MatchToString = () => (MatchToString = dart.constFn(dart.definiteFunctionType(core.String, [core.Match])))();
let StringAndPatternAndFn__ToString = () => (StringAndPatternAndFn__ToString = dart.constFn(dart.definiteFunctionType(core.String, [core.String, core.Pattern, MatchToString(), StringToString()])))();
let StringAndFnAndFnToString = () => (StringAndFnAndFnToString = dart.constFn(dart.definiteFunctionType(core.String, [core.String, MatchToString(), StringToString()])))();
let StringAndStringAndFn__ToString = () => (StringAndStringAndFn__ToString = dart.constFn(dart.definiteFunctionType(core.String, [core.String, core.String, MatchToString(), StringToString()])))();
let StringAndPatternAndString__ToString = () => (StringAndPatternAndString__ToString = dart.constFn(dart.definiteFunctionType(core.String, [core.String, core.Pattern, core.String, core.int])))();
let StringAndPatternAndFn__ToString = () => (StringAndPatternAndFn__ToString = dart.constFn(dart.definiteFunctionType(core.String, [core.String, core.Pattern, MatchToString(), core.int])))();
let StringAndintAndint__ToString = () => (StringAndintAndint__ToString = dart.constFn(dart.definiteFunctionType(core.String, [core.String, core.int, core.int, core.String])))();
let dynamicToType = () => (dynamicToType = dart.constFn(dart.definiteFunctionType(core.Type, [dart.dynamic])))();
let dynamicAndintTodynamic = () => (dynamicAndintTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.int])))();
let SymbolToString = () => (SymbolToString = dart.constFn(dart.definiteFunctionType(core.String, [core.Symbol])))();
let dynamicAnddynamicToSymbol = () => (dynamicAnddynamicToSymbol = dart.constFn(dart.definiteFunctionType(core.Symbol, [dart.dynamic, dart.dynamic])))();
let dynamicToInstanceMirror = () => (dynamicToInstanceMirror = dart.constFn(dart.definiteFunctionType(mirrors.InstanceMirror, [dart.dynamic])))();
let TypeToTypeMirror = () => (TypeToTypeMirror = dart.constFn(dart.definiteFunctionType(mirrors.TypeMirror, [core.Type])))();
let dynamicAndListTodynamic = () => (dynamicAndListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.List])))();
let dynamicAndStringAndListTodynamic = () => (dynamicAndStringAndListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.String, core.List])))();
let SymbolTodynamic = () => (SymbolTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Symbol])))();
let dynamicToSymbol = () => (dynamicToSymbol = dart.constFn(dart.definiteFunctionType(core.Symbol, [dart.dynamic])))();
let dynamicToMapOfSymbol$dynamic = () => (dynamicToMapOfSymbol$dynamic = dart.constFn(dart.definiteFunctionType(MapOfSymbol$dynamic(), [dart.dynamic])))();
let TypeAndInvocationTodynamic = () => (TypeAndInvocationTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Type, core.Invocation])))();
let SymbolAnddynamicTovoid = () => (SymbolAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Symbol, dart.dynamic])))();
let MapOfSymbol$dynamicTodynamic = () => (MapOfSymbol$dynamicTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [MapOfSymbol$dynamic()])))();
let dynamicToTypeMirror = () => (dynamicToTypeMirror = dart.constFn(dart.definiteFunctionType(mirrors.TypeMirror, [dart.dynamic])))();
let dynamicAnddynamicAnddynamicTovoid = () => (dynamicAnddynamicAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic])))();
let ListToList = () => (ListToList = dart.constFn(dart.definiteFunctionType(core.List, [core.List])))();
let intTobool = () => (intTobool = dart.constFn(dart.definiteFunctionType(core.bool, [core.int])))();
let intAndListAndintTovoid = () => (intAndListAndintTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int, core.List, core.int])))();
let intAndintAndintToint = () => (intAndintAndintToint = dart.constFn(dart.definiteFunctionType(core.int, [core.int, core.int, core.int])))();
let FunctionAndObjectAndStackTraceTodynamic = () => (FunctionAndObjectAndStackTraceTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Function, core.Object, core.StackTrace])))();
let FunctionAndZoneToFunction = () => (FunctionAndZoneToFunction = dart.constFn(dart.definiteFunctionType(R => [core.Function, [core.Function, async.Zone]])))();
let VoidToObject = () => (VoidToObject = dart.constFn(dart.definiteFunctionType(core.Object, [])))();
let _FutureAnddynamicAnddynamicTovoid = () => (_FutureAnddynamicAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [async._Future, dart.dynamic, dart.dynamic])))();
let ObjectToObject = () => (ObjectToObject = dart.constFn(dart.definiteFunctionType(core.Object, [core.Object])))();
let dynamic__Todynamic = () => (dynamic__Todynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic], [dart.dynamic])))();
let dynamicTo_Future = () => (dynamicTo_Future = dart.constFn(dart.definiteFunctionType(async._Future, [dart.dynamic])))();
let _AsyncCallbackTovoid = () => (_AsyncCallbackTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [async._AsyncCallback])))();
let FnTodynamic = () => (FnTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [VoidTovoid()])))();
let _NotificationHandlerToFuture = () => (_NotificationHandlerToFuture = dart.constFn(dart.definiteFunctionType(async.Future, [async._NotificationHandler])))();
let dynamicAndStackTraceTodynamic = () => (dynamicAndStackTraceTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.StackTrace])))();
let dynamic__Tovoid = () => (dynamic__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic], [core.StackTrace])))();
let FnAndFnAndFnTodynamic = () => (FnAndFnAndFnTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [VoidTodynamic(), dynamicTodynamic(), ZoneBinaryCallbackOfdynamic$dynamic$StackTrace()])))();
let StreamSubscriptionAnd_FutureAnddynamic__Tovoid = () => (StreamSubscriptionAnd_FutureAnddynamic__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [async.StreamSubscription, async._Future, dart.dynamic, core.StackTrace])))();
let StreamSubscriptionAnd_FutureTo_ErrorCallback = () => (StreamSubscriptionAnd_FutureTo_ErrorCallback = dart.constFn(dart.definiteFunctionType(async._ErrorCallback, [async.StreamSubscription, async._Future])))();
let StreamSubscriptionAnd_FutureAnddynamicTovoid = () => (StreamSubscriptionAnd_FutureAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [async.StreamSubscription, async._Future, dart.dynamic])))();
let _EventSinkAnddynamicAnddynamicTovoid = () => (_EventSinkAnddynamicAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [async._EventSink, dart.dynamic, dart.dynamic])))();
let _ZoneToZoneDelegate = () => (_ZoneToZoneDelegate = dart.constFn(dart.definiteFunctionType(async.ZoneDelegate, [async._Zone])))();
let ZoneAndZoneDelegateAndZone__ToR = () => (ZoneAndZoneDelegateAndZone__ToR = dart.constFn(dart.definiteFunctionType(R => [R, [async.Zone, async.ZoneDelegate, async.Zone, dart.dynamic, core.StackTrace]])))();
let ObjectAndStackTraceTovoid = () => (ObjectAndStackTraceTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace])))();
let ZoneAndZoneDelegateAndZone__ToR = () => (ZoneAndZoneDelegateAndZone__ToR = dart.constFn(dart.definiteFunctionType(R => [R, [async.Zone, async.ZoneDelegate, async.Zone, dart.functionType(R, [])]])))();
let ZoneAndZoneDelegateAndZone__ToR = () => (ZoneAndZoneDelegateAndZone__ToR = dart.constFn(dart.definiteFunctionType((R, T) => [R, [async.Zone, async.ZoneDelegate, async.Zone, dart.functionType(R, [T]), T]])))();
let ZoneAndZoneDelegateAndZone__ToR = () => (ZoneAndZoneDelegateAndZone__ToR = dart.constFn(dart.definiteFunctionType((R, T1, T2) => [R, [async.Zone, async.ZoneDelegate, async.Zone, dart.functionType(R, [T1, T2]), T1, T2]])))();
let ZoneAndZoneDelegateAndZone__ToZoneCallbackOfR = () => (ZoneAndZoneDelegateAndZone__ToZoneCallbackOfR = dart.constFn(dart.definiteFunctionType(R => [async.ZoneCallback$(R), [async.Zone, async.ZoneDelegate, async.Zone, dart.functionType(R, [])]])))();
let ZoneAndZoneDelegateAndZone__ToZoneUnaryCallbackOfR$T = () => (ZoneAndZoneDelegateAndZone__ToZoneUnaryCallbackOfR$T = dart.constFn(dart.definiteFunctionType((R, T) => [async.ZoneUnaryCallback$(R, T), [async.Zone, async.ZoneDelegate, async.Zone, dart.functionType(R, [T])]])))();
let ZoneAndZoneDelegateAndZone__ToZoneBinaryCallbackOfR$T1$T2 = () => (ZoneAndZoneDelegateAndZone__ToZoneBinaryCallbackOfR$T1$T2 = dart.constFn(dart.definiteFunctionType((R, T1, T2) => [async.ZoneBinaryCallback$(R, T1, T2), [async.Zone, async.ZoneDelegate, async.Zone, dart.functionType(R, [T1, T2])]])))();
let ZoneAndZoneDelegateAndZone__ToAsyncError = () => (ZoneAndZoneDelegateAndZone__ToAsyncError = dart.constFn(dart.definiteFunctionType(async.AsyncError, [async.Zone, async.ZoneDelegate, async.Zone, core.Object, core.StackTrace])))();
let ZoneAndZoneDelegateAndZone__Tovoid = () => (ZoneAndZoneDelegateAndZone__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, VoidTodynamic()])))();
let ZoneAndZoneDelegateAndZone__ToTimer = () => (ZoneAndZoneDelegateAndZone__ToTimer = dart.constFn(dart.definiteFunctionType(async.Timer, [async.Zone, async.ZoneDelegate, async.Zone, core.Duration, VoidTovoid()])))();
let ZoneAndZoneDelegateAndZone__ToTimer = () => (ZoneAndZoneDelegateAndZone__ToTimer = dart.constFn(dart.definiteFunctionType(async.Timer, [async.Zone, async.ZoneDelegate, async.Zone, core.Duration, TimerTovoid()])))();
let ZoneAndZoneDelegateAndZone__Tovoid = () => (ZoneAndZoneDelegateAndZone__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, core.String])))();
let ZoneAndZoneDelegateAndZone__ToZone = () => (ZoneAndZoneDelegateAndZone__ToZone = dart.constFn(dart.definiteFunctionType(async.Zone, [async.Zone, async.ZoneDelegate, async.Zone, async.ZoneSpecification, core.Map])))();
let ZoneAndZoneDelegateAndZone__Todynamic = () => (ZoneAndZoneDelegateAndZone__Todynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [async.Zone, async.ZoneDelegate, async.Zone, dart.dynamic, core.StackTrace])))();
let Fn__ToR = () => (Fn__ToR = dart.constFn(dart.definiteFunctionType(R => [R, [dart.functionType(R, [])], {zoneValues: core.Map, zoneSpecification: async.ZoneSpecification, onError: core.Function}])))();
let ObjectTobool = () => (ObjectTobool = dart.constFn(dart.definiteFunctionType(core.bool, [core.Object])))();
let dynamicAnddynamicTobool = () => (dynamicAnddynamicTobool = dart.constFn(dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic])))();
let IterableAndListTovoid = () => (IterableAndListTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Iterable, core.List])))();
let _SplayTreeMapNodeTobool = () => (_SplayTreeMapNodeTobool = dart.constFn(dart.definiteFunctionType(core.bool, [collection._SplayTreeMapNode])))();
let dynamicAndFnTodynamic = () => (dynamicAndFnTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dynamicAnddynamicTodynamic()])))();
let Uint8ListAndintAndintTovoid = () => (Uint8ListAndintAndintTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [typed_data.Uint8List, core.int, core.int])))();
let StringAndFnTodynamic = () => (StringAndFnTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.String, dynamicAnddynamicTodynamic()])))();
let EventSinkOfStringTo_LineSplitterEventSink = () => (EventSinkOfStringTo_LineSplitterEventSink = dart.constFn(dart.definiteFunctionType(convert._LineSplitterEventSink, [EventSinkOfString()])))();
let intAndintToint = () => (intAndintToint = dart.constFn(dart.definiteFunctionType(core.int, [core.int, core.int])))();
let dynamicAndintToint = () => (dynamicAndintToint = dart.constFn(dart.definiteFunctionType(core.int, [dart.dynamic, core.int])))();
let intAndintTovoid = () => (intAndintTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int, core.int])))();
let StringToint = () => (StringToint = dart.constFn(dart.definiteFunctionType(core.int, [core.String])))();
let intToString = () => (intToString = dart.constFn(dart.definiteFunctionType(core.String, [core.int])))();
let ObjectAndObjectTobool = () => (ObjectAndObjectTobool = dart.constFn(dart.definiteFunctionType(core.bool, [core.Object, core.Object])))();
let ObjectToint = () => (ObjectToint = dart.constFn(dart.definiteFunctionType(core.int, [core.Object])))();
let ObjectTovoid = () => (ObjectTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Object])))();
let StringAndStringTovoid = () => (StringAndStringTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, core.String])))();
let StringAnddynamicTovoid = () => (StringAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, dart.dynamic])))();
let MapOfString$StringAndStringToMapOfString$String = () => (MapOfString$StringAndStringToMapOfString$String = dart.constFn(dart.definiteFunctionType(MapOfString$String(), [MapOfString$String(), core.String])))();
let intAndintAndintTovoid = () => (intAndintAndintTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int, core.int, core.int])))();
let String__Tovoid = () => (String__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String], [dart.dynamic])))();
let __Tobool = () => (__Tobool = dart.constFn(dart.definiteFunctionType(core.bool, [], {when: core.bool, message: core.String})))();
let String__Tovoid = () => (String__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String], {time: core.DateTime, sequenceNumber: core.int, level: core.int, name: core.String, zone: async.Zone, error: core.Object, stackTrace: core.StackTrace})))();
let StringAndServiceExtensionHandlerTovoid = () => (StringAndServiceExtensionHandlerTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, developer.ServiceExtensionHandler])))();
let StringAndMapTovoid = () => (StringAndMapTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, core.Map])))();
let StringToServiceExtensionHandler = () => (StringToServiceExtensionHandler = dart.constFn(dart.definiteFunctionType(developer.ServiceExtensionHandler, [core.String])))();
let StringAndServiceExtensionHandlerTodynamic = () => (StringAndServiceExtensionHandlerTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.String, developer.ServiceExtensionHandler])))();
let VoidToUserTag = () => (VoidToUserTag = dart.constFn(dart.definiteFunctionType(developer.UserTag, [])))();
let MapToString = () => (MapToString = dart.constFn(dart.definiteFunctionType(core.String, [core.Map])))();
let intAndintAndString__Tovoid = () => (intAndintAndString__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int, core.int, core.String, core.String, core.String, core.String])))();
let intAndintAndString__Tovoid = () => (intAndintAndString__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int, core.int, core.String, core.String, core.String])))();
let intAndStringAndString__Tovoid = () => (intAndStringAndString__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int, core.String, core.String, core.String])))();
let UriTovoid = () => (UriTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Uri])))();
let SendPortTovoid = () => (SendPortTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [isolate.SendPort])))();
let SendPortAndboolTovoid = () => (SendPortAndboolTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [isolate.SendPort, core.bool])))();
let ListToIsolate = () => (ListToIsolate = dart.constFn(dart.definiteFunctionType(isolate.Isolate, [core.List])))();
let dynamicTo_DartObject = () => (dynamicTo_DartObject = dart.constFn(dart.definiteFunctionType(js._DartObject, [dart.dynamic])))();
let dynamicToJsObject = () => (dynamicToJsObject = dart.constFn(dart.definiteFunctionType(js.JsObject, [dart.dynamic])))();
let dynamicAnddynamicAndFnToObject = () => (dynamicAnddynamicAndFnToObject = dart.constFn(dart.definiteFunctionType(core.Object, [dart.dynamic, dart.dynamic, dynamicTodynamic()])))();
let FToF = () => (FToF = dart.constFn(dart.definiteFunctionType(F => [F, [F]])))();
let FunctionToFunction = () => (FunctionToFunction = dart.constFn(dart.definiteFunctionType(core.Function, [core.Function])))();
let FunctionAndListTodynamic = () => (FunctionAndListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Function, core.List])))();
let TAndTToT = () => (TAndTToT = dart.constFn(dart.definiteFunctionType(T => [T, [T, T]])))();
let TAndTToT = () => (TAndTToT = dart.constFn(dart.definiteFunctionType(T => [T, [T, T]])))();
let numAndnumTodouble = () => (numAndnumTodouble = dart.constFn(dart.definiteFunctionType(core.double, [core.num, core.num])))();
let numAndnumTonum = () => (numAndnumTonum = dart.constFn(dart.definiteFunctionType(core.num, [core.num, core.num])))();
let numTodouble = () => (numTodouble = dart.constFn(dart.definiteFunctionType(core.double, [core.num])))();
let TToT = () => (TToT = dart.constFn(dart.definiteFunctionType(T => [T, [T]])))();
let LibraryMirrorTobool = () => (LibraryMirrorTobool = dart.constFn(dart.definiteFunctionType(core.bool, [mirrors.LibraryMirror])))();
let VoidToMirrorSystem = () => (VoidToMirrorSystem = dart.constFn(dart.definiteFunctionType(mirrors.MirrorSystem, [])))();
let ObjectToInstanceMirror = () => (ObjectToInstanceMirror = dart.constFn(dart.definiteFunctionType(mirrors.InstanceMirror, [core.Object])))();
let TypeToClassMirror = () => (TypeToClassMirror = dart.constFn(dart.definiteFunctionType(mirrors.ClassMirror, [core.Type])))();
let EventTovoid = () => (EventTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.Event])))();
let RequestToFutureOfT = () => (RequestToFutureOfT = dart.constFn(dart.definiteFunctionType(T => [async.Future$(T), [indexed_db.Request]])))();
let dynamicToTo = () => (dynamicToTo = dart.constFn(dart.definiteFunctionType(To => [To, [dart.dynamic]])))();
let EventTodynamic = () => (EventTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [html.Event])))();
let NodeTobool = () => (NodeTobool = dart.constFn(dart.definiteFunctionType(core.bool, [html.Node])))();
let MapOfString$dynamicTobool = () => (MapOfString$dynamicTobool = dart.constFn(dart.definiteFunctionType(core.bool, [MapOfString$dynamic()])))();
let UriAndListOfStringAnddynamicToFutureOfIsolate = () => (UriAndListOfStringAnddynamicToFutureOfIsolate = dart.constFn(dart.definiteFunctionType(FutureOfIsolate(), [core.Uri, ListOfString(), dart.dynamic])))();
let TypeAnddynamicTodynamic = () => (TypeAnddynamicTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Type, dart.dynamic])))();
let FileSystemTovoid = () => (FileSystemTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.FileSystem])))();
let FileErrorTovoid = () => (FileErrorTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.FileError])))();
let EntryTovoid = () => (EntryTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.Entry])))();
let dynamicToCssStyleDeclaration = () => (dynamicToCssStyleDeclaration = dart.constFn(dart.definiteFunctionType(html.CssStyleDeclaration, [dart.dynamic])))();
let CssStyleDeclarationTovoid = () => (CssStyleDeclarationTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.CssStyleDeclaration])))();
let MetadataTovoid = () => (MetadataTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.Metadata])))();
let ListOfEntryTovoid = () => (ListOfEntryTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [ListOfEntry()])))();
let ElementTobool = () => (ElementTobool = dart.constFn(dart.definiteFunctionType(core.bool, [html.Element])))();
let FileWriterTovoid = () => (FileWriterTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.FileWriter])))();
let FileTovoid = () => (FileTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.File])))();
let GeopositionTovoid = () => (GeopositionTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.Geoposition])))();
let PositionErrorTovoid = () => (PositionErrorTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.PositionError])))();
let HttpRequestToString = () => (HttpRequestToString = dart.constFn(dart.definiteFunctionType(core.String, [html.HttpRequest])))();
let ProgressEventTovoid = () => (ProgressEventTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.ProgressEvent])))();
let ListOfSourceInfoTovoid = () => (ListOfSourceInfoTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [ListOfSourceInfo()])))();
let MediaStreamTovoid = () => (MediaStreamTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.MediaStream])))();
let NavigatorUserMediaErrorTovoid = () => (NavigatorUserMediaErrorTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.NavigatorUserMediaError])))();
let RtcSessionDescriptionTovoid = () => (RtcSessionDescriptionTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.RtcSessionDescription])))();
let RtcStatsResponseTovoid = () => (RtcStatsResponseTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.RtcStatsResponse])))();
let OptionElementTobool = () => (OptionElementTobool = dart.constFn(dart.definiteFunctionType(core.bool, [html.OptionElement])))();
let numTovoid = () => (numTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.num])))();
let ElementTovoid = () => (ElementTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.Element])))();
let ElementToCssClassSet = () => (ElementToCssClassSet = dart.constFn(dart.definiteFunctionType(html.CssClassSet, [html.Element])))();
let CssClassSetImplTovoid = () => (CssClassSetImplTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html_common.CssClassSetImpl])))();
let boolAndCssClassSetImplTobool = () => (boolAndCssClassSetImplTobool = dart.constFn(dart.definiteFunctionType(core.bool, [core.bool, html_common.CssClassSetImpl])))();
let SetOfStringTobool = () => (SetOfStringTobool = dart.constFn(dart.definiteFunctionType(core.bool, [SetOfString()])))();
let SetOfStringTovoid = () => (SetOfStringTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [SetOfString()])))();
let EventAndStringTobool = () => (EventAndStringTobool = dart.constFn(dart.definiteFunctionType(core.bool, [html.Event, core.String])))();
let KeyEventTobool = () => (KeyEventTobool = dart.constFn(dart.definiteFunctionType(core.bool, [html.KeyEvent])))();
let NodeValidatorTobool = () => (NodeValidatorTobool = dart.constFn(dart.definiteFunctionType(core.bool, [html.NodeValidator])))();
let NodeAndNodeToint = () => (NodeAndNodeToint = dart.constFn(dart.definiteFunctionType(core.int, [html.Node, html.Node])))();
let FromToTo = () => (FromToTo = dart.constFn(dart.definiteFunctionType((From, To) => [To, [From]])))();
let dynamicToWindowBase = () => (dynamicToWindowBase = dart.constFn(dart.definiteFunctionType(html.WindowBase, [dart.dynamic])))();
let dynamicToEventTarget = () => (dynamicToEventTarget = dart.constFn(dart.definiteFunctionType(html.EventTarget, [dart.dynamic])))();
let dynamicAnddynamicAnddynamic__Todynamic = () => (dynamicAnddynamicAnddynamic__Todynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])))();
let dynamicAnddynamicAndString__Tovoid = () => (dynamicAnddynamicAndString__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, core.String, core.Type, core.String])))();
let _wrapZoneCallbackOfA$RTo_wrapZoneCallbackOfA$R = () => (_wrapZoneCallbackOfA$RTo_wrapZoneCallbackOfA$R = dart.constFn(dart.definiteFunctionType((A, R) => [html._wrapZoneCallback$(A, R), [html._wrapZoneCallback$(A, R)]])))();
let _wrapZoneBinaryCallbackOfA$B$RTo_wrapZoneBinaryCallbackOfA$B$R = () => (_wrapZoneBinaryCallbackOfA$B$RTo_wrapZoneBinaryCallbackOfA$B$R = dart.constFn(dart.definiteFunctionType((A, B, R) => [html._wrapZoneBinaryCallback$(A, B, R), [html._wrapZoneBinaryCallback$(A, B, R)]])))();
let StringToElement = () => (StringToElement = dart.constFn(dart.definiteFunctionType(html.Element, [core.String])))();
let StringToElementListOfElement = () => (StringToElementListOfElement = dart.constFn(dart.definiteFunctionType(ElementListOfElement(), [core.String])))();
let NodeAndNodeTovoid = () => (NodeAndNodeTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.Node, html.Node])))();
let dynamicToImageData = () => (dynamicToImageData = dart.constFn(dart.definiteFunctionType(html.ImageData, [dart.dynamic])))();
let ImageDataTodynamic = () => (ImageDataTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [html.ImageData])))();
let dynamicToMap = () => (dynamicToMap = dart.constFn(dart.definiteFunctionType(core.Map, [dart.dynamic])))();
let Map__Todynamic = () => (Map__Todynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Map], [dynamicTovoid()])))();
let ListOfStringToList = () => (ListOfStringToList = dart.constFn(dart.definiteFunctionType(core.List, [ListOfString()])))();
let dynamicToDateTime = () => (dynamicToDateTime = dart.constFn(dart.definiteFunctionType(core.DateTime, [dart.dynamic])))();
let DateTimeTodynamic = () => (DateTimeTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.DateTime])))();
let dynamic__Todynamic = () => (dynamic__Todynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic], {mustCopy: dart.dynamic})))();
let NodeToElement = () => (NodeToElement = dart.constFn(dart.definiteFunctionType(html.Element, [html.Node])))();
let AudioBufferTovoid = () => (AudioBufferTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [web_audio.AudioBuffer])))();
dart.mixin = function(base, ...mixins) {
  class Mixin extends base {}
  for (let m of mixins) {
    dart.copyProperties(Mixin.prototype, m.prototype);
  }
  Mixin.prototype.new = function(...args) {
    for (let i = mixins.length - 1; i >= 0; i--) {
      mixins[i].prototype.new.call(this);
    }
    base.prototype.new.apply(this, args);
  };
  dart.setSignature(Mixin, {
    methods: () => {
      let s = {};
      for (let m of mixins) {
        dart.copyProperties(s, m[dart._methodSig]);
      }
      return s;
    }
  });
  Mixin[dart._mixins] = mixins;
  return Mixin;
};
dart.getMixins = function(clazz) {
  return Object.hasOwnProperty.call(clazz, dart._mixins) ? clazz[dart._mixins] : null;
};
dart.getImplements = function(clazz) {
  return Object.hasOwnProperty.call(clazz, dart.implements) ? clazz[dart.implements] : null;
};
dart.flattenFutures = function(builder) {
  function flatten(T) {
    if (!T) return builder(dart.dynamic);
    let futureClass = dart.getGenericClass(async.Future);
    if (dart.getGenericClass(T) == futureClass) {
      let args = dart.getGenericArgs(T);
      if (args) return builder(args[0]);
    }
    return builder(T);
  }
  return flatten;
};
dart.generic = function(typeConstructor, setBaseClass) {
  if (setBaseClass === void 0) setBaseClass = null;
  return (() => {
    let length = typeConstructor.length;
    if (length < 1) {
      dart.throwInternalError('must have at least one generic type argument');
    }
    let resultMap = new Map();
    function makeGenericType(...args) {
      if (args.length != length && args.length != 0) {
        dart.throwInternalError('requires ' + length + ' or 0 type arguments');
      }
      while (args.length < length)
        args.push(dart.dynamic);
      let value = resultMap;
      for (let i = 0; i < length; i++) {
        let arg = args[i];
        if (arg == null) {
          dart.throwInternalError('type arguments should not be null: ' + typeConstructor);
        }
        let map = value;
        value = map.get(arg);
        if (value === void 0) {
          if (i + 1 == length) {
            value = typeConstructor.apply(null, args);
            if (value) {
              value[dart._typeArguments] = args;
              value[dart._originalDeclaration] = makeGenericType;
            }
            map.set(arg, value);
            if (setBaseClass) setBaseClass(value);
          } else {
            value = new Map();
            map.set(arg, value);
          }
        }
      }
      return value;
    }
    makeGenericType[dart._genericTypeCtor] = typeConstructor;
    return makeGenericType;
  })();
};
dart.getGenericClass = function(type) {
  return dart.safeGetOwnProperty(type, dart._originalDeclaration);
};
dart.getGenericArgs = function(type) {
  return dart.safeGetOwnProperty(type, dart._typeArguments);
};
dart.getConstructorSig = function(value) {
  return value[dart._constructorSig];
};
dart.getMethodSig = function(value) {
  return value[dart._methodSig];
};
dart.getFieldSig = function(value) {
  return value[dart._fieldSig];
};
dart.getGetterSig = function(value) {
  return value[dart._getterSig];
};
dart.getSetterSig = function(value) {
  return value[dart._setterSig];
};
dart.getStaticSig = function(value) {
  return value[dart._staticSig];
};
dart.getStaticFieldSig = function(value) {
  return value[dart._staticFieldSig];
};
dart.getStaticGetterSig = function(value) {
  return value[dart._staticGetterSig];
};
dart.getStaticSetterSig = function(value) {
  return value[dart._staticSetterSig];
};
dart.getGenericTypeCtor = function(value) {
  return value[dart._genericTypeCtor];
};
dart.getMethodType = function(obj, name) {
  let type = obj == null ? core.Object : obj.__proto__.constructor;
  return dart.getMethodTypeFromType(type, name);
};
dart.getMethodTypeFromType = function(type, name) {
  let sigObj = type[dart._methodSig];
  if (sigObj === void 0) return void 0;
  return sigObj[name];
};
dart.classGetConstructorType = function(cls, name) {
  if (!name) name = 'new';
  if (cls === void 0) return void 0;
  if (cls == null) return void 0;
  let sigCtor = cls[dart._constructorSig];
  if (sigCtor === void 0) return void 0;
  return sigCtor[name];
};
dart.bind = function(obj, name, f) {
  if (f === void 0) f = obj[name];
  f = f.bind(obj);
  let sig = dart.getMethodType(obj, name);
  dart.assert(sig);
  dart.tag(f, sig);
  return f;
};
dart.gbind = function(f, ...typeArgs) {
  let result = f.apply(null, typeArgs);
  let sig = dart._getRuntimeType(f).apply(null, typeArgs);
  dart.tag(result, sig);
  return result;
};
dart._setInstanceSignature = function(f, sigF, kind) {
  dart.defineMemoizedGetter(f, kind, () => {
    let sigObj = sigF();
    sigObj.__proto__ = f.__proto__[kind];
    return sigObj;
  });
};
dart._setMethodSignature = function(f, sigF) {
  return dart._setInstanceSignature(f, sigF, dart._methodSig);
};
dart._setFieldSignature = function(f, sigF) {
  return dart._setInstanceSignature(f, sigF, dart._fieldSig);
};
dart._setGetterSignature = function(f, sigF) {
  return dart._setInstanceSignature(f, sigF, dart._getterSig);
};
dart._setSetterSignature = function(f, sigF) {
  return dart._setInstanceSignature(f, sigF, dart._setterSig);
};
dart._setConstructorSignature = function(f, sigF) {
  return dart.defineMemoizedGetter(f, dart._constructorSig, sigF);
};
dart._setStaticSignature = function(f, sigF) {
  return dart.defineMemoizedGetter(f, dart._staticSig, sigF);
};
dart._setStaticFieldSignature = function(f, sigF) {
  return dart.defineMemoizedGetter(f, dart._staticFieldSig, sigF);
};
dart._setStaticGetterSignature = function(f, sigF) {
  return dart.defineMemoizedGetter(f, dart._staticGetterSig, sigF);
};
dart._setStaticSetterSignature = function(f, sigF) {
  return dart.defineMemoizedGetter(f, dart._staticSetterSig, sigF);
};
dart._setStaticTypes = function(f, names) {
  for (let name of names) {
    if (!f[name]) continue;
    dart.tagLazy(f[name], function() {
      return f[dart._staticSig][name];
    });
  }
};
dart.setSignature = function(f, signature) {
  let constructors = 'constructors' in signature ? signature.constructors : () => ({});
  let methods = 'methods' in signature ? signature.methods : () => ({});
  let fields = 'fields' in signature ? signature.fields : () => ({});
  let getters = 'getters' in signature ? signature.getters : () => ({});
  let setters = 'setters' in signature ? signature.setters : () => ({});
  let statics = 'statics' in signature ? signature.statics : () => ({});
  let staticFields = 'sfields' in signature ? signature.sfields : () => ({});
  let staticGetters = 'sgetters' in signature ? signature.sgetters : () => ({});
  let staticSetters = 'ssetters' in signature ? signature.ssetters : () => ({});
  let names = 'names' in signature ? signature.names : [];
  dart._setConstructorSignature(f, constructors);
  dart._setMethodSignature(f, methods);
  dart._setFieldSignature(f, fields);
  dart._setGetterSignature(f, getters);
  dart._setSetterSignature(f, setters);
  dart._setStaticSignature(f, statics);
  dart._setStaticFieldSignature(f, staticFields);
  dart._setStaticGetterSignature(f, staticGetters);
  dart._setStaticSetterSignature(f, staticSetters);
  dart._setStaticTypes(f, names);
};
dart.hasMethod = function(obj, name) {
  return dart.getMethodType(obj, name) !== void 0;
};
dart.defineNamedConstructor = function(clazz, name) {
  let proto = clazz.prototype;
  let initMethod = proto[name];
  let ctor = function(...args) {
    initMethod.apply(this, args);
  };
  ctor[dart.isNamedConstructor] = true;
  ctor.prototype = proto;
  dart.defineProperty(clazz, name, {value: ctor, configurable: true});
};
dart.getExtensionType = function(obj) {
  return obj[dart._extensionType];
};
dart.getExtensionSymbol = function(name) {
  let sym = dartx[name];
  if (sym == null) {
    sym = Symbol("dartx." + name.toString());
    dartx[name] = sym;
  }
  return sym;
};
dart.defineExtensionNames = function(names) {
  return names.forEach(dart.getExtensionSymbol);
};
dart._installProperties = function(jsProto, extProto) {
  let coreObjProto = core.Object.prototype;
  let parentsExtension = jsProto.__proto__[dart._extensionType];
  let installedParent = parentsExtension && parentsExtension.prototype;
  dart._installProperties2(jsProto, extProto, coreObjProto, installedParent);
};
dart._installProperties2 = function(jsProto, extProto, coreObjProto, installedParent) {
  if (extProto === coreObjProto) {
    dart._installPropertiesForObject(jsProto, coreObjProto);
    return;
  }
  if (jsProto !== extProto) {
    let extParent = extProto.__proto__;
    if (installedParent !== extParent) {
      dart._installProperties2(jsProto, extParent, coreObjProto, installedParent);
    }
  }
  dart.copyTheseProperties(jsProto, extProto, dart.getOwnPropertySymbols(extProto));
};
dart._installPropertiesForObject = function(jsProto, coreObjProto) {
  let names = dart.getOwnPropertyNames(coreObjProto);
  for (let i = 0; i < names.length; ++i) {
    let name = names[i];
    let desc = dart.getOwnPropertyDescriptor(coreObjProto, name);
    dart.defineProperty(jsProto, dart.getExtensionSymbol(name), desc);
  }
  return;
};
dart.registerExtension = function(jsType, dartExtType) {
  if (!jsType) return;
  let extProto = dartExtType.prototype;
  let jsProto = jsType.prototype;
  if (!jsProto) return;
  jsProto[dart._extensionType] = dartExtType;
  dart._installProperties(jsProto, extProto);
  let originalSigFn = dart.getOwnPropertyDescriptor(dartExtType, dart._methodSig).get;
  dart.assert(originalSigFn);
  dart.defineMemoizedGetter(jsType, dart._methodSig, originalSigFn);
};
dart.defineExtensionMembers = function(type, methodNames) {
  let proto = type.prototype;
  for (let name of methodNames) {
    let method = dart.getOwnPropertyDescriptor(proto, name);
    dart.defineProperty(proto, dart.getExtensionSymbol(name), method);
  }
  let originalSigFn = dart.getOwnPropertyDescriptor(type, dart._methodSig).get;
  dart.defineMemoizedGetter(type, dart._methodSig, function() {
    let sig = originalSigFn();
    for (let name of methodNames) {
      sig[dart.getExtensionSymbol(name)] = sig[name];
    }
    return sig;
  });
};
dart.setType = function(obj, type) {
  obj.__proto__ = type.prototype;
  return obj;
};
dart.list = function(obj, elementType) {
  return dart.setType(obj, dart.getGenericClass(_interceptors.JSArray)(elementType));
};
dart.setBaseClass = function(derived, base) {
  derived.prototype.__proto__ = base.prototype;
  derived.__proto__ = base;
};
dart.setExtensionBaseClass = function(derived, base) {
  if (base) {
    derived.prototype[dart._extensionType] = derived;
    derived.prototype.__proto__ = base.prototype;
  }
};
dart.callableClass = function(callableCtor, classExpr) {
  callableCtor.prototype = classExpr.prototype;
  callableCtor.prototype.constructor = callableCtor;
  callableCtor.__proto__ = classExpr;
  return callableCtor;
};
dart.defineNamedConstructorCallable = function(clazz, name, ctor) {
  ctor.prototype = clazz.prototype;
  dart.defineProperty(clazz, name, {value: ctor, configurable: true});
};
dart.defineEnumValues = function(enumClass, names) {
  let values = [];
  for (var i = 0; i < names.length; i++) {
    let value = dart.const(new enumClass(i));
    values.push(value);
    Object.defineProperty(enumClass, names[i], {value: value, configurable: true});
  }
  enumClass.values = dart.constList(values, enumClass);
};
dart.fn = function(closure, t) {
  if (t == null) {
    t = dart.definiteFunctionType(dart.dynamic, Array(closure.length).fill(dart.dynamic), void 0);
  }
  dart.tag(closure, t);
  return closure;
};
dart.lazyFn = function(closure, computeType) {
  dart.tagLazy(closure, computeType);
  return closure;
};
dart._checkPrimitiveType = function(obj) {
  if (obj == null) return core.Null;
  if (typeof obj == "number") {
    if (Math.floor(obj) == obj) {
      return core.int;
    }
    return core.double;
  }
  if (typeof obj == "boolean") {
    return core.bool;
  }
  if (typeof obj == "string") {
    return core.String;
  }
  if (typeof obj == "symbol") {
    return dart.jsobject;
  }
  return null;
};
dart.getFunctionType = function(obj) {
  let args = Array(obj.length).fill(dart.dynamic);
  return dart.definiteFunctionType(dart.bottom, args, void 0);
};
dart.getReifiedType = function(obj) {
  let result = dart._checkPrimitiveType(obj);
  if (result != null) return result;
  return dart._nonPrimitiveRuntimeType(obj);
};
dart._nonPrimitiveRuntimeType = function(obj) {
  let result = dart._getRuntimeType(obj);
  if (result != null) return result;
  result = dart.getExtensionType(obj);
  if (result != null) return result;
  result = obj.constructor;
  if (result === Function) {
    return dart.jsobject;
  }
  if (result == null) {
    return dart.jsobject;
  }
  return result;
};
dart.wrapType = function(type) {
  if (type.hasOwnProperty(dart._typeObject)) {
    return type[dart._typeObject];
  }
  return type[dart._typeObject] = new dart.WrappedType(type);
};
dart.lazyJSType = function(getJSTypeCallback, name) {
  let key = getJSTypeCallback.toString();
  if (dart._lazyJSTypes.has(key)) {
    return dart._lazyJSTypes.get(key);
  }
  let ret = new dart.LazyJSType(getJSTypeCallback, name);
  dart._lazyJSTypes.set(key, ret);
  return ret;
};
dart.lazyAnonymousJSType = function(name) {
  if (dart._lazyJSTypes.has(name)) {
    return dart._lazyJSTypes.get(name);
  }
  let ret = new dart.LazyJSType(null, name);
  dart._lazyJSTypes.set(name, ret);
  return ret;
};
const _wrappedType = Symbol('_wrappedType');
dart.unwrapType = function(obj) {
  return dart.dload(obj, _wrappedType);
};
dart._getRuntimeType = function(value) {
  return value[dart._runtimeType];
};
dart.getIsNamedConstructor = function(value) {
  return value[dart.isNamedConstructor];
};
dart.getDartLibraryName = function(value) {
  return value[dart_library.dartLibraryName];
};
dart.tag = function(value, t) {
  value[dart._runtimeType] = t;
};
dart.tagComputed = function(value, compute) {
  dart.defineProperty(value, dart._runtimeType, {get: compute});
};
dart.tagLazy = function(value, compute) {
  dart.defineLazyProperty(value, dart._runtimeType, {get: compute});
};
dart._warn = function(arg) {
  console.warn(arg);
};
const _jsTypeCallback = Symbol('_jsTypeCallback');
const _rawJSType = Symbol('_rawJSType');
const _dartName = Symbol('_dartName');
dart._isInstanceOfLazyJSType = function(o, t) {
  if (t[_jsTypeCallback] != null) {
    if (t[_rawJSType] == null) {
      let expected = t[_dartName];
      let actual = dart.typeName(dart.getReifiedType(o));
      dart._warn(dart.str`Cannot find native JavaScript type (${expected}) ` + dart.str`to type check ${actual}`);
      return true;
    }
    return dart.is(o, t[_rawJSType]);
  }
  if (o == null) return false;
  return dart._isJSObject(o);
};
dart._asInstanceOfLazyJSType = function(o, t) {
  if (t[_jsTypeCallback] != null) {
    if (t[_rawJSType] == null) {
      let expected = t[_dartName];
      let actual = dart.typeName(dart.getReifiedType(o));
      dart._warn(dart.str`Cannot find native JavaScript type (${expected}) ` + dart.str`to type check ${actual}`);
      return o;
    }
    return dart.as(o, t[_rawJSType]);
  }
  if (o == null) return null;
  if (!dart.test(dart._isJSObject(o))) dart._throwCastError(o, t, true);
  return o;
};
dart._isJSObject = function(o) {
  return !dart.getReifiedType(o)[dart._runtimeType];
};
dart._initialize2 = function() {
  dart.TypeRep.prototype.is = function is_T(object) {
    return dart.is(object, this);
  };
  dart.TypeRep.prototype.as = function as_T(object) {
    return dart.as(object, this);
  };
  dart.TypeRep.prototype._check = function check_T(object) {
    return dart.check(object, this);
  };
  dart.Dynamic.prototype.is = function is_Dynamic(object) {
    return true;
  };
  dart.Dynamic.prototype.as = function as_Dynamic(object) {
    return object;
  };
  dart.Dynamic.prototype._check = function check_Dynamic(object) {
    return object;
  };
  dart.LazyJSType.prototype.is = function is_T(object) {
    return dart._isInstanceOfLazyJSType(object, this);
  };
  dart.LazyJSType.prototype.as = function as_T(object) {
    return dart._asInstanceOfLazyJSType(object, this);
  };
  dart.LazyJSType.prototype._check = function check_T(object) {
    return dart._asInstanceOfLazyJSType(object, this);
  };
};
dart._functionType = function(definite, returnType, args, extra) {
  if (args === void 0 && extra === void 0) {
    const fnTypeParts = returnType;
    function makeGenericFnType(...types) {
      let parts = fnTypeParts.apply(null, types);
      return dart.FunctionType.create(definite, parts[0], parts[1], parts[2]);
    }
    makeGenericFnType[dart._typeFormalCount] = fnTypeParts.length;
    return makeGenericFnType;
  }
  return dart.FunctionType.create(definite, returnType, args, extra);
};
dart.functionType = function(returnType, args, extra) {
  return dart._functionType(false, returnType, args, extra);
};
dart.definiteFunctionType = function(returnType, args, extra) {
  return dart._functionType(true, returnType, args, extra);
};
dart.typedef = function(name, closure) {
  return new dart.Typedef(name, closure);
};
dart.typeName = function(type) {
  if (type === void 0) return "undefined type";
  if (type === null) return "null type";
  if (type instanceof dart.TypeRep) {
    if (type instanceof dart.Typedef) {
      return type.name + "(" + type.functionType.toString() + ")";
    }
    return type.toString();
  }
  if (type instanceof dart.WrappedType) {
    return "Wrapped(" + dart.unwrapType(type) + ")";
  }
  let tag = dart._getRuntimeType(type);
  if (tag === core.Type) {
    let name = type.name;
    let args = dart.getGenericArgs(type);
    if (!args) return name;
    let result = name;
    let allDynamic = true;
    result += '<';
    for (let i = 0; i < args.length; ++i) {
      if (i > 0) result += ', ';
      let argName = dart.typeName(args[i]);
      if (argName != 'dynamic') allDynamic = false;
      result += argName;
    }
    result += '>';
    if (allDynamic) return name;
    return result;
  }
  if (tag) return "Not a type: " + tag.name;
  return "JSObject<" + type.name + ">";
};
dart.getImplicitFunctionType = function(type) {
  if (dart.test(dart.isFunctionType(type))) return type;
  return dart.getMethodTypeFromType(type, 'call');
};
dart.isFunctionType = function(type) {
  return type instanceof dart.AbstractFunctionType || type === core.Function;
};
dart.isLazyJSSubtype = function(t1, t2, covariant) {
  if (dart.equals(t1, t2)) return true;
  if (t1[_jsTypeCallback] == null || t2[_jsTypeCallback] == null) return true;
  return dart.isClassSubType(t1[_rawJSType], t2[_rawJSType], covariant);
};
dart.isFunctionSubtype = function(ft1, ft2, covariant) {
  if (ft2 === core.Function) {
    return true;
  }
  if (ft1 === core.Function) {
    return false;
  }
  let ret1 = ft1.returnType;
  let ret2 = ft2.returnType;
  let args1 = ft1.args;
  let args2 = ft2.args;
  if (args1.length > args2.length) {
    return covariant ? false : null;
  }
  for (let i = 0; i < args1.length; ++i) {
    if (!dart._isSubtype(args2[i], args1[i], !covariant)) {
      return null;
    }
  }
  let optionals1 = ft1.optionals;
  let optionals2 = ft2.optionals;
  if (args1.length + optionals1.length < args2.length + optionals2.length) {
    return covariant ? false : null;
  }
  let j = 0;
  for (let i = args1.length; i < args2.length; ++i, ++j) {
    if (!dart._isSubtype(args2[i], optionals1[j], !covariant)) {
      return null;
    }
  }
  for (let i = 0; i < optionals2.length; ++i, ++j) {
    if (!dart._isSubtype(optionals2[i], optionals1[j], !covariant)) {
      return null;
    }
  }
  let named1 = ft1.named;
  let named2 = ft2.named;
  let names = dart.getOwnPropertyNames(named2);
  for (let i = 0; i < names.length; ++i) {
    let name = names[i];
    let n1 = named1[name];
    let n2 = named2[name];
    if (n1 === void 0) {
      return covariant ? false : null;
    }
    if (!dart._isSubtype(n2, n1, !covariant)) {
      return null;
    }
  }
  if (ret2 === dart.void) return true;
  if (ret1 === dart.void) return ret2 === dart.dynamic;
  if (!dart._isSubtype(ret1, ret2, covariant)) return null;
  return true;
};
dart._subtypeMemo = function(f) {
  let memo = new Map();
  return (t1, t2) => {
    let map = memo.get(t1);
    let result;
    if (map) {
      result = map.get(t2);
      if (result !== void 0) return result;
    } else {
      memo.set(t1, map = new Map());
    }
    result = f(t1, t2);
    map.set(t2, result);
    return result;
  };
};
dart._isBottom = function(type) {
  return type == dart.bottom;
};
dart._isTop = function(type) {
  return type == core.Object || type == dart.dynamic;
};
dart._isSubtype = function(t1, t2, covariant) {
  if (t1 === t2) return true;
  if (dart._isTop(t2) || dart._isBottom(t1)) {
    return true;
  }
  if (dart._isBottom(t2)) return null;
  if (dart._isTop(t1)) {
    if (t1 === dart.dynamic) return null;
    return false;
  }
  if (!(t1 instanceof dart.AbstractFunctionType) && !(t2 instanceof dart.AbstractFunctionType)) {
    let result = dart.isClassSubType(t1, t2, covariant);
    if (result === true || result === null) return result;
  }
  t1 = dart.getImplicitFunctionType(t1);
  if (!t1) return false;
  if (dart.isFunctionType(t1) && dart.isFunctionType(t2)) {
    return dart.isFunctionSubtype(t1, t2, covariant);
  }
  if (t1 instanceof dart.LazyJSType && t2 instanceof dart.LazyJSType) {
    return dart.isLazyJSSubtype(t1, t2, covariant);
  }
  return false;
};
dart.isClassSubType = function(t1, t2, covariant) {
  if (t1 == t2) return true;
  if (t1 == core.Object) return false;
  if (t1 == null) return t2 == core.Object || t2 == dart.dynamic;
  let raw1 = dart.getGenericClass(t1);
  let raw2 = dart.getGenericClass(t2);
  if (raw1 != null && raw1 == raw2) {
    let typeArguments1 = dart.getGenericArgs(t1);
    let typeArguments2 = dart.getGenericArgs(t2);
    let length = typeArguments1.length;
    if (typeArguments2.length == 0) {
      return true;
    } else if (length == 0) {
      if (typeArguments2.every(dart._isTop)) return true;
      return null;
    }
    dart.assert(length == typeArguments2.length);
    for (let i = 0; i < length; ++i) {
      let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], covariant);
      if (!result) {
        return result;
      }
    }
    return true;
  }
  let indefinite = false;
  function definitive(t1, t2) {
    let result = dart.isClassSubType(t1, t2, covariant);
    if (result == null) {
      indefinite = true;
      return false;
    }
    return result;
  }
  if (definitive(t1.__proto__, t2)) return true;
  let mixins = dart.getMixins(t1);
  if (mixins) {
    for (let m1 of mixins) {
      if (m1 != null && definitive(m1, t2)) return true;
    }
  }
  let getInterfaces = dart.getImplements(t1);
  if (getInterfaces) {
    for (let i1 of getInterfaces()) {
      if (i1 != null && definitive(i1, t2)) return true;
    }
  }
  if (indefinite) return null;
  return false;
};
dart.isGroundType = function(type) {
  if (type instanceof dart.AbstractFunctionType) {
    if (!dart._isTop(type.returnType)) return false;
    for (let i = 0; i < type.args.length; ++i) {
      if (!dart._isBottom(type.args[i])) return false;
    }
    for (let i = 0; i < type.optionals.length; ++i) {
      if (!dart._isBottom(type.optionals[i])) return false;
    }
    let names = dart.getOwnPropertyNames(type.named);
    for (let i = 0; i < names.length; ++i) {
      if (!dart._isBottom(type.named[names[i]])) return false;
    }
    return true;
  }
  let typeArgs = dart.getGenericArgs(type);
  if (!typeArgs) return true;
  for (let t of typeArgs) {
    if (t != core.Object && t != dart.dynamic) return false;
  }
  return true;
};
dart.throwCastError = function(object, actual, type) {
  debugger;
  dart.throw(new _js_helper.CastErrorImplementation(object, dart.typeName(actual), dart.typeName(type)));
};
dart.throwTypeError = function(object, actual, type) {
  debugger;
  dart.throw(new _js_helper.TypeErrorImplementation(object, dart.typeName(actual), dart.typeName(type)));
};
dart.throwStrongModeCastError = function(object, actual, type) {
  debugger;
  dart.throw(new _js_helper.StrongModeCastError(object, dart.typeName(actual), dart.typeName(type)));
};
dart.throwStrongModeTypeError = function(object, actual, type) {
  debugger;
  dart.throw(new _js_helper.StrongModeTypeError(object, dart.typeName(actual), dart.typeName(type)));
};
dart.throwUnimplementedError = function(message) {
  debugger;
  dart.throw(new core.UnimplementedError(message));
};
dart.throwAssertionError = function() {
  debugger;
  dart.throw(new core.AssertionError());
};
dart.throwNullValueError = function() {
  debugger;
  dart.throw(new core.NoSuchMethodError(null, new core.Symbol('<Unexpected Null Value>'), null, null, null));
};
dart.syncStar = function(gen, E, ...args) {
  const SyncIterable_E = dart.getGenericClass(_js_helper.SyncIterable)(E);
  return new SyncIterable_E(gen, args);
};
dart.async = function(gen, T, ...args) {
  let iter;
  function onValue(res) {
    if (res === void 0) res = null;
    return next(iter.next(res));
  }
  function onError(err) {
    return next(iter.throw(err));
  }
  function next(ret) {
    if (ret.done) return ret.value;
    let future = ret.value;
    if (!dart.is(future, dart.getGenericClass(async.Future))) {
      future = async.Future.value(future);
    }
    return future.then(dart.dynamic)(onValue, {onError: onError});
  }
  return dart.getGenericClass(async.Future)(T).new(function() {
    iter = gen.apply(null, args)[Symbol.iterator]();
    return onValue();
  });
};
dart.asyncStar = function(gen, T, ...args) {
  return new dart._AsyncStarStreamController(gen, T, args).controller.stream;
};
dart.dload = function(obj, field) {
  let f = dart._canonicalMember(obj, field);
  dart._trackCall(obj);
  if (f != null) {
    if (dart.test(dart.hasMethod(obj, f))) return dart.bind(obj, f, void 0);
    return obj[f];
  }
  return dart.noSuchMethod(obj, new dart.InvocationImpl(core.String._check(field), [], {isGetter: true}));
};
dart.dput = function(obj, field, value) {
  let f = dart._canonicalMember(obj, field);
  dart._trackCall(obj);
  if (f != null) {
    return obj[f] = value;
  }
  return dart.noSuchMethod(obj, new dart.InvocationImpl(core.String._check(field), [value], {isSetter: true}));
};
dart._checkApply = function(type, actuals) {
  if (actuals.length < type.args.length) return false;
  let index = 0;
  for (let i = 0; i < type.args.length; ++i) {
    if (!dart.instanceOfOrNull(actuals[i], type.args[i])) return false;
    ++index;
  }
  if (actuals.length == type.args.length) return true;
  let extras = actuals.length - type.args.length;
  if (type.optionals.length > 0) {
    if (extras > type.optionals.length) return false;
    for (let i = 0, j = index; i < extras; ++i, ++j) {
      if (!dart.instanceOfOrNull(actuals[j], type.optionals[i])) return false;
    }
    return true;
  }
  if (extras != 1) return false;
  if (dart.getOwnPropertyNames(type.named).length == 0) return false;
  let opts = actuals[index];
  let names = dart.getOwnPropertyNames(opts);
  if (names.length == 0) return false;
  for (var name of names) {
    if (!dart.hasOwnProperty.call(type.named, name)) {
      return false;
    }
    if (!dart.instanceOfOrNull(opts[name], type.named[name])) return false;
  }
  return true;
};
dart._dartSymbol = function(name) {
  return dart.const(core.Symbol.new(name.toString()));
};
dart.extractNamedArgs = function(args) {
  if (args.length > 0) {
    let last = args[args.length - 1];
    if (last != null && last.__proto__ === Object.prototype) {
      return args.pop();
    }
  }
  return null;
};
dart._checkAndCall = function(f, ftype, obj, typeArgs, args, name) {
  dart._trackCall(obj);
  let originalTarget = obj === void 0 ? f : obj;
  function callNSM() {
    return dart.noSuchMethod(originalTarget, new dart.InvocationImpl(name, args, {namedArguments: dart.extractNamedArgs(args), isMethod: true}));
  }
  if (!(f instanceof Function)) {
    if (f != null) {
      ftype = dart.getMethodType(f, 'call');
      f = f.call;
    }
    if (!(f instanceof Function)) {
      return callNSM();
    }
  }
  if (ftype === void 0) {
    ftype = dart._getRuntimeType(f);
  }
  if (!ftype) {
    if (typeArgs != null) {
      dart.throwStrongModeError('call to JS object `' + obj + '` with type arguments <' + typeArgs + '> is not supported.');
    }
    return f.apply(obj, args);
  }
  let formalCount = ftype[dart._typeFormalCount];
  if (formalCount != null) {
    if (typeArgs == null) {
      typeArgs = Array(formalCount).fill(dart.dynamic);
    } else if (typeArgs.length != formalCount) {
      dart.throwStrongModeError('incorrect number of arguments to generic function ' + dart.typeName(ftype) + ', got <' + typeArgs + '> expected ' + formalCount + '.');
    }
    ftype = ftype.apply(null, typeArgs);
  } else if (typeArgs != null) {
    dart.throwStrongModeError('got type arguments to non-generic function ' + dart.typeName(ftype) + ', got <' + typeArgs + '> expected none.');
  }
  if (dart._checkApply(ftype, args)) {
    if (typeArgs != null) {
      return f.apply(obj, typeArgs).apply(obj, args);
    }
    return f.apply(obj, args);
  }
  return callNSM();
};
dart.dcall = function(f, ...args) {
  return dart._checkAndCall(f, dart._getRuntimeType(f), void 0, null, args, 'call');
};
dart.dgcall = function(f, typeArgs, ...args) {
  return dart._checkAndCall(f, dart._getRuntimeType(f), void 0, typeArgs, args, 'call');
};
dart._dhelperRepl = function(object, field, callback) {
  let rawField = field;
  if (typeof field == 'symbol') {
    if (field in object) return callback(field);
    field = field.toString();
    field = field.substring('Symbol('.length, field.length - 1);
  } else if (field.charAt(0) != '_') {
    return callback(field);
  }
  if (field in object) return callback(field);
  let proto = object;
  while (proto !== null) {
    let symbols = Object.getOwnPropertySymbols(proto);
    let target = 'Symbol(' + field + ')';
    for (let s = 0; s < symbols.length; s++) {
      let sym = symbols[s];
      if (target == sym.toString()) return callback(sym);
    }
    proto = proto.__proto__;
  }
  return callback(rawField);
};
dart.dloadRepl = function(obj, field) {
  return dart._dhelperRepl(obj, field, dart.fn(resolvedField => dart.dload(obj, resolvedField), dynamicTodynamic()));
};
dart.dputRepl = function(obj, field, value) {
  return dart._dhelperRepl(obj, field, dart.fn(resolvedField => dart.dput(obj, resolvedField, value), dynamicTodynamic()));
};
dart._callMethodRepl = function(obj, method, typeArgs, args) {
  return dart._dhelperRepl(obj, method, dart.fn(resolvedField => dart._callMethod(obj, resolvedField, typeArgs, args, method), dynamicTodynamic()));
};
dart.dsendRepl = function(obj, method, ...args) {
  return dart._callMethodRepl(obj, method, null, args);
};
dart.dgsendRepl = function(obj, typeArgs, method, ...args) {
  return dart._callMethodRepl(obj, method, typeArgs, args);
};
dart.getDynamicStats = function() {
  let ret = JSArrayOfListOfObject().of([]);
  let keys = dart._callMethodStats[dartx.keys][dartx.toList]();
  keys[dartx.sort](dart.fn((a, b) => dart._callMethodStats[dartx._get](b).count[dartx.compareTo](dart._callMethodStats[dartx._get](a).count), StringAndStringToint()));
  for (let key of keys) {
    let stats = dart._callMethodStats[dartx._get](key);
    ret[dartx.add](JSArrayOfObject().of([stats.typeName, stats.frame, stats.count]));
  }
  return ret;
};
dart.clearDynamicStats = function() {
  dart._callMethodStats[dartx.clear]();
};
dart._trackCall = function(obj) {
  if (!dart.trackProfile) return;
  let actual = dart.getReifiedType(obj);
  let stackStr = new Error().stack;
  let stack = stackStr[dartx.split]('\n    at ');
  let src = '';
  for (let i = 2; i < dart.notNull(stack[dartx.length]); ++i) {
    let frame = stack[dartx._get](i);
    if (!dart.test(frame[dartx.contains]('dart_sdk.js'))) {
      src = frame;
      break;
    }
  }
  let actualTypeName = dart.typeName(actual);
  let o = dart._callMethodStats[dartx.putIfAbsent](dart.str`${actualTypeName} <${src}>`, dart.fn(() => new dart._MethodStats(core.String._check(actualTypeName), src), VoidTo_MethodStats()));
  o.count = dart.notNull(o.count) + 1;
};
dart._callMethod = function(obj, name, typeArgs, args, displayName) {
  let symbol = dart._canonicalMember(obj, name);
  if (symbol == null) {
    return dart.noSuchMethod(obj, new dart.InvocationImpl(core.String._check(displayName), core.List._check(args), {isMethod: true}));
  }
  let f = obj != null ? obj[symbol] : null;
  let ftype = dart.getMethodType(obj, symbol);
  return dart._checkAndCall(f, ftype, obj, typeArgs, args, displayName);
};
dart.dsend = function(obj, method, ...args) {
  return dart._callMethod(obj, method, null, args, method);
};
dart.dgsend = function(obj, typeArgs, method, ...args) {
  return dart._callMethod(obj, method, typeArgs, args, method);
};
dart.dindex = function(obj, index) {
  return dart._callMethod(obj, '_get', null, [index], '[]');
};
dart.dsetindex = function(obj, index, value) {
  return dart._callMethod(obj, '_set', null, [index, value], '[]=');
};
dart._ignoreMemo = function(f) {
  let memo = new Map();
  return (t1, t2) => {
    let map = memo.get(t1);
    let result;
    if (map) {
      result = map.get(t2);
      if (result !== void 0) return result;
    } else {
      memo.set(t1, map = new Map());
    }
    result = f(t1, t2);
    map.set(t2, result);
    return result;
  };
};
dart.strongInstanceOf = function(obj, type, ignoreFromWhiteList) {
  let actual = dart.getReifiedType(obj);
  let result = dart.isSubtype(actual, type);
  if (result || actual == dart.jsobject || actual == core.int && type == core.double) return true;
  if (result === false) return false;
  if (ignoreFromWhiteList == void 0) return result;
  if (dart._ignoreTypeFailure(actual, type)) return true;
  return result;
};
dart.instanceOfOrNull = function(obj, type) {
  if (obj == null || dart.strongInstanceOf(obj, type, true)) return true;
  return false;
};
dart.is = function(obj, type) {
  let result = dart.strongInstanceOf(obj, type);
  if (result !== null) return result;
  let actual = dart.getReifiedType(obj);
  dart.throwStrongModeError('Strong mode is-check failure: ' + dart.typeName(actual) + ' does not soundly subtype ' + dart.typeName(type));
};
dart.as = function(obj, type) {
  if (type == dart.dynamic || obj == null) return obj;
  let result = dart.strongInstanceOf(obj, type, true);
  if (result) return obj;
  dart._throwCastError(obj, type, result);
};
dart.check = function(obj, type) {
  if (type == dart.dynamic || obj == null) return obj;
  let result = dart.strongInstanceOf(obj, type, true);
  if (result) return obj;
  dart._throwTypeError(obj, type, result);
};
dart.test = function(obj) {
  if (typeof obj == 'boolean') return obj;
  return dart.booleanConversionFailed(obj);
};
dart.booleanConversionFailed = function(obj) {
  if (obj == null) {
    dart.throw(new _js_helper.BooleanConversionAssertionError());
  }
  let actual = dart.getReifiedType(obj);
  let expected = core.bool;
  dart.throw(new _js_helper.TypeErrorImplementation.fromMessage(dart.str`type '${dart.typeName(actual)}' is not a subtype of ` + dart.str`type '${dart.typeName(expected)}' in boolean expression`));
};
dart._throwCastError = function(obj, type, result) {
  let actual = dart.getReifiedType(obj);
  if (result == false) dart.throwCastError(obj, actual, type);
  dart.throwStrongModeCastError(obj, actual, type);
};
dart._throwTypeError = function(obj, type, result) {
  let actual = dart.getReifiedType(obj);
  if (result == false) dart.throwTypeError(obj, actual, type);
  dart.throwStrongModeTypeError(obj, actual, type);
};
dart.asInt = function(obj) {
  if (obj == null) return null;
  if (Math.floor(obj) != obj) {
    dart.throwCastError(obj, dart.getReifiedType(obj), core.int);
  }
  return obj;
};
dart.addSimpleTypeTests = function(ctor) {
  ctor.is = function is_C(object) {
    if (object instanceof this) return true;
    return dart.is(object, this);
  };
  ctor.as = function as_C(object) {
    if (object instanceof this) return object;
    return dart.as(object, this);
  };
  ctor._check = function check_C(object) {
    if (object instanceof this) return object;
    return dart.check(object, this);
  };
};
dart.addTypeTests = function(ctor) {
  ctor.as = function as_G(object) {
    return dart.as(object, this);
  };
  ctor.is = function is_G(object) {
    return dart.is(object, this);
  };
  ctor._check = function check_G(object) {
    return dart.check(object, this);
  };
};
dart.equals = function(x, y) {
  if (x == null || y == null) return x == y;
  let eq = x['=='];
  return eq ? eq.call(x, y) : x === y;
};
dart.notNull = function(x) {
  if (x == null) dart.throwNullValueError();
  return x;
};
dart.map = function(values, K, V) {
  if (K === void 0) K = null;
  if (V === void 0) V = null;
  return (() => {
    if (K == null) K = dart.dynamic;
    if (V == null) V = dart.dynamic;
    let map = dart.getGenericClass(collection.LinkedHashMap)(K, V).new();
    if (Array.isArray(values)) {
      for (let i = 0, end = values.length - 1; i < end; i += 2) {
        let key = values[i];
        let value = values[i + 1];
        map._set(key, value);
      }
    } else if (typeof values === 'object') {
      for (let key of dart.getOwnPropertyNames(values)) {
        map._set(key, values[key]);
      }
    }
    return map;
  })();
};
dart.assert = function(condition) {
  if (!condition) dart.throwAssertionError();
};
dart.throw = function(obj) {
  if (obj != null && (typeof obj == 'object' || typeof obj == 'function')) {
    dart._stack.set(obj, new Error());
  }
  throw obj;
};
dart.getError = function(exception) {
  var stack = dart._stack.get(exception);
  return stack !== void 0 ? stack : exception;
};
dart.stackPrint = function(exception) {
  var error = dart.getError(exception);
  console.log(error.stack ? error.stack : 'No stack trace for: ' + error);
};
dart.stackTrace = function(exception) {
  var error = dart.getError(exception);
  return _js_helper.getTraceFromException(error);
};
dart.nullSafe = function(obj, ...callbacks) {
  if (obj == null) return obj;
  for (let callback of callbacks) {
    obj = callback(obj);
    if (obj == null) break;
  }
  return obj;
};
dart.multiKeyPutIfAbsent = function(map, keys, valueFn) {
  for (let k of keys) {
    let value = map.get(k);
    if (!value) {
      map.set(k, value = new Map());
    }
    map = value;
  }
  if (map.has(dart._value)) return map.get(dart._value);
  let value = valueFn();
  map.set(dart._value, value);
  return value;
};
dart.const = function(obj) {
  function lookupNonTerminal(map, key) {
    let result = map.get(key);
    if (result !== void 0) return result;
    map.set(key, result = new Map());
    return result;
  }
  let names = dart.getOwnNamesAndSymbols(obj);
  let count = names.length;
  let map = lookupNonTerminal(dart.constants, count);
  for (let i = 0; i < count; i++) {
    let name = names[i];
    map = lookupNonTerminal(map, name);
    map = lookupNonTerminal(map, obj[name]);
  }
  let type = dart.getReifiedType(obj);
  let value = map.get(type);
  if (value) return value;
  map.set(type, obj);
  return obj;
};
dart.constList = function(elements, elementType) {
  function lookupNonTerminal(map, key) {
    let result = map.get(key);
    if (result !== void 0) return result;
    map.set(key, result = new Map());
    return result;
  }
  let count = elements.length;
  let map = lookupNonTerminal(dart.constantLists, count);
  for (let i = 0; i < count; i++) {
    map = lookupNonTerminal(map, elements[i]);
  }
  let value = map.get(elementType);
  if (value) return value;
  value = dart.list(elements, elementType);
  map.set(elementType, value);
  return value;
};
dart.hashCode = function(obj) {
  if (obj == null) return 0;
  switch (typeof obj) {
    case "number":
    {
      return obj & 0x1FFFFFFF;
    }
    case "boolean":
    {
      return obj ? 2 * 3 * 23 * 3761 : 269 * 811;
    }
    case "function":
    {
      return _js_helper.Primitives.objectHashCode(obj);
    }
  }
  let extension = dart.getExtensionType(obj);
  if (extension != null) {
    return obj[dartx.hashCode];
  }
  return obj.hashCode;
};
dart.toString = function(obj) {
  if (obj == null) return "null";
  let extension = dart.getExtensionType(obj);
  if (extension != null) {
    return obj[dartx.toString]();
  }
  if (typeof obj == "function") {
    return "Closure: " + dart.getReifiedType(obj) + " from: " + obj;
  }
  return obj.toString();
};
dart.noSuchMethod = function(obj, invocation) {
  if (obj == null || typeof obj == "function") {
    dart.throw(new core.NoSuchMethodError(obj, invocation.memberName, invocation.positionalArguments, invocation.namedArguments));
  }
  let extension = dart.getExtensionType(obj);
  if (extension != null) {
    return obj[dartx.noSuchMethod](invocation);
  }
  return obj.noSuchMethod(invocation);
};
dart.constFn = function(x) {
  return () => x;
};
dart.runtimeType = function(obj) {
  let result = dart._checkPrimitiveType(obj);
  if (result != null) return dart.wrapType(result);
  let extension = dart.getExtensionType(obj);
  if (extension != null) {
    result = obj[dartx.runtimeType];
    return result != null ? result : dart.wrapType(extension);
  }
  if (typeof obj == "function") {
    return dart.wrapType(dart.getReifiedType(obj));
  }
  return obj.runtimeType;
};
dart.str = function(strings, ...values) {
  let s = strings[0];
  for (let i = 0, len = values.length; i < len;) {
    s += dart.notNull(dart.toString(values[i])) + strings[++i];
  }
  return s;
};
dart._canonicalMember = function(obj, name) {
  if (typeof name === "symbol") return name;
  if (obj != null && dart.getExtensionType(obj) != null) {
    return dartx[name];
  }
  if (dart.equals(name, 'constructor') || dart.equals(name, 'prototype')) {
    name = '+' + dart.notNull(core.String._check(name));
  }
  return name;
};
dart.loadLibrary = function() {
  return async.Future.value();
};
dart.defineProperty = function(obj, name, desc) {
  return Object.defineProperty(obj, name, desc);
};
dart.getOwnPropertyDescriptor = function(obj, name) {
  return Object.getOwnPropertyDescriptor(obj, name);
};
dart.getOwnPropertyNames = function(obj) {
  return Object.getOwnPropertyNames(obj);
};
dart.getOwnPropertySymbols = function(obj) {
  return Object.getOwnPropertySymbols(obj);
};
dart.throwStrongModeError = function(message) {
  debugger;
  throw new _js_helper.StrongModeErrorImplementation(message);
};
dart.throwInternalError = function(message) {
  debugger;
  throw Error(message);
};
dart.getOwnNamesAndSymbols = function(obj) {
  let names = dart.getOwnPropertyNames(obj);
  let symbols = dart.getOwnPropertySymbols(obj);
  return names.concat(symbols);
};
dart.safeGetOwnProperty = function(obj, name) {
  let desc = dart.getOwnPropertyDescriptor(obj, name);
  if (desc != null) return desc.value;
};
dart.defineLazyProperty = function(to, name, desc) {
  let init = desc.get;
  let value = null;
  function lazySetter(x) {
    init = null;
    value = x;
  }
  function circularInitError() {
    dart.throwInternalError('circular initialization for field ' + name);
  }
  function lazyGetter() {
    if (init == null) return value;
    let f = init;
    init = circularInitError;
    lazySetter(f());
    return value;
  }
  desc.get = lazyGetter;
  desc.configurable = true;
  if (desc.set) desc.set = lazySetter;
  return dart.defineProperty(to, name, desc);
};
dart.defineLazy = function(to, from) {
  for (let name of dart.getOwnNamesAndSymbols(from)) {
    dart.defineLazyProperty(to, name, dart.getOwnPropertyDescriptor(from, name));
  }
};
dart.defineMemoizedGetter = function(obj, name, getter) {
  return dart.defineLazyProperty(obj, name, {get: getter});
};
dart.copyTheseProperties = function(to, from, names) {
  for (let i = 0; i < names.length; ++i) {
    dart.copyProperty(to, from, names[i]);
  }
  return to;
};
dart.copyProperty = function(to, from, name) {
  let desc = dart.getOwnPropertyDescriptor(from, name);
  if (name == Symbol.iterator) {
    let existing = dart.getOwnPropertyDescriptor(to, name);
    if (existing != null) {
      if (existing.writable) {
        to[name] = desc.value;
      }
      return;
    }
  }
  dart.defineProperty(to, name, desc);
};
dart.export = function(to, from, name) {
  return dart.copyProperty(to, from, name);
};
dart.copyProperties = function(to, from) {
  return dart.copyTheseProperties(to, from, dart.getOwnNamesAndSymbols(from));
};
dart.global = typeof window == "undefined" ? global : window;
dart.JsSymbol = Symbol;
dart._mixins = Symbol("mixins");
dart.implements = Symbol("implements");
dart._typeArguments = Symbol("typeArguments");
dart._originalDeclaration = Symbol("originalDeclaration");
dart._constructorSig = Symbol("sigCtor");
dart._methodSig = Symbol("sigMethod");
dart._fieldSig = Symbol("sigField");
dart._getterSig = Symbol("sigGetter");
dart._setterSig = Symbol("sigSetter");
dart._staticSig = Symbol("sigStaticMethod");
dart._staticFieldSig = Symbol("sigStaticField");
dart._staticGetterSig = Symbol("sigStaticGetter");
dart._staticSetterSig = Symbol("sigStaticSetter");
dart._genericTypeCtor = Symbol("genericType");
dart._extensionType = Symbol("extensionType");
dart.dartx = dartx;
dart._runtimeType = Symbol("_runtimeType");
dart.isNamedConstructor = Symbol("isNamedConstructor");
dart.defineLazy(dart, {
  get _lazyJSTypes() {
    return new Map();
  },
  set _lazyJSTypes(_) {}
});
dart.metadata = Symbol("metadata");
dart._typeObject = Symbol("typeObject");
core.Object = class Object {
  constructor(...args) {
    return this.new.apply(this, args);
  }
  new() {
  }
  ['=='](other) {
    return core.identical(this, other);
  }
  get hashCode() {
    return _js_helper.Primitives.objectHashCode(this);
  }
  toString() {
    return _js_helper.Primitives.objectToString(this);
  }
  noSuchMethod(invocation) {
    dart.throw(new core.NoSuchMethodError(this, invocation.memberName, invocation.positionalArguments, invocation.namedArguments));
  }
  get runtimeType() {
    return dart.wrapType(dart.getReifiedType(this));
  }
};
core.Object.is = function is_Object(o) {
  if (o instanceof this) return true;
  return dart.is(o, this);
};
core.Object.as = function as_Object(o) {
  if (o == null || o instanceof this) return o;
  return dart.as(o, this);
};
core.Object._check = function check_Object(o) {
  if (o == null || o instanceof this) return o;
  return dart.check(o, this);
};
dart.setSignature(core.Object, {
  constructors: () => ({new: dart.definiteFunctionType(core.Object, [])}),
  getters: () => ({
    hashCode: dart.definiteFunctionType(core.int, []),
    runtimeType: dart.definiteFunctionType(core.Type, [])
  }),
  methods: () => ({
    '==': dart.definiteFunctionType(core.bool, [dart.dynamic]),
    toString: dart.definiteFunctionType(core.String, []),
    noSuchMethod: dart.definiteFunctionType(dart.dynamic, [core.Invocation])
  })
});
dart.tagComputed(core.Object, () => core.Type);
dart.TypeRep = class TypeRep extends core.Object {
  new() {
    dart._initialize;
  }
  get name() {
    return this.toString();
  }
};
dart.TypeRep[dart.implements] = () => [core.Type];
dart.setSignature(dart.TypeRep, {
  constructors: () => ({new: dart.definiteFunctionType(dart.TypeRep, [])}),
  getters: () => ({name: dart.definiteFunctionType(core.String, [])})
});
dart.Dynamic = class Dynamic extends dart.TypeRep {
  new() {
    super.new();
  }
  toString() {
    return 'dynamic';
  }
};
dart.LazyJSType = class LazyJSType extends core.Object {
  new(jsTypeCallback, dartName) {
    this[_jsTypeCallback] = jsTypeCallback;
    this[_dartName] = dartName;
  }
  get [_rawJSType]() {
    return this[_jsTypeCallback]();
  }
  toString() {
    return core.String._check(this[_jsTypeCallback] != null ? dart.typeName(this[_rawJSType]) : this[_dartName]);
  }
};
dart.LazyJSType[dart.implements] = () => [core.Type];
dart.setSignature(dart.LazyJSType, {
  constructors: () => ({new: dart.definiteFunctionType(dart.LazyJSType, [dart.dynamic, dart.dynamic])}),
  fields: () => ({
    [_jsTypeCallback]: dart.dynamic,
    [_dartName]: dart.dynamic
  }),
  getters: () => ({[_rawJSType]: dart.definiteFunctionType(dart.dynamic, [])})
});
dart.dynamic = new dart.Dynamic();
dart._initialize = dart._initialize2();
dart.Void = class Void extends dart.TypeRep {
  new() {
    super.new();
  }
  toString() {
    return 'void';
  }
};
dart.void = new dart.Void();
dart.Bottom = class Bottom extends dart.TypeRep {
  new() {
    super.new();
  }
  toString() {
    return 'bottom';
  }
};
dart.bottom = new dart.Bottom();
dart.JSObject = class JSObject extends dart.TypeRep {
  new() {
    super.new();
  }
  toString() {
    return 'NativeJavaScriptObject';
  }
};
dart.jsobject = new dart.JSObject();
core.Type = class Type extends core.Object {};
dart.WrappedType = class WrappedType extends core.Type {
  new(wrappedType) {
    this[_wrappedType] = wrappedType;
  }
  toString() {
    return core.String._check(dart.typeName(this[_wrappedType]));
  }
};
dart.setSignature(dart.WrappedType, {
  constructors: () => ({new: dart.definiteFunctionType(dart.WrappedType, [dart.dynamic])}),
  fields: () => ({[_wrappedType]: dart.dynamic})
});
dart.AbstractFunctionType = class AbstractFunctionType extends dart.TypeRep {
  constructor() {
    super();
    this._stringValue = null;
  }
  toString() {
    return this.name;
  }
  get name() {
    if (this._stringValue) return this._stringValue;
    let buffer = '(';
    for (let i = 0; i < this.args.length; ++i) {
      if (i > 0) {
        buffer += ', ';
      }
      buffer += dart.typeName(this.args[i]);
    }
    if (this.optionals.length > 0) {
      if (this.args.length > 0) buffer += ', ';
      buffer += '[';
      for (let i = 0; i < this.optionals.length; ++i) {
        if (i > 0) {
          buffer += ', ';
        }
        buffer += dart.typeName(this.optionals[i]);
      }
      buffer += ']';
    } else if (Object.keys(this.named).length > 0) {
      if (this.args.length > 0) buffer += ', ';
      buffer += '{';
      let names = dart.getOwnPropertyNames(this.named).sort();
      for (let i = 0; i < names.length; ++i) {
        if (i > 0) {
          buffer += ', ';
        }
        buffer += names[i] + ': ' + dart.typeName(this.named[names[i]]);
      }
      buffer += '}';
    }
    buffer += ') -> ' + dart.typeName(this.returnType);
    this._stringValue = buffer;
    return buffer;
  }
};
dart._fnTypeNamedArgMap = new Map();
dart._fnTypeArrayArgMap = new Map();
dart._fnTypeTypeMap = new Map();
dart._fnTypeSmallMap = [new Map(), new Map(), new Map()];
dart.FunctionType = class FunctionType extends dart.AbstractFunctionType {
  static _memoizeArray(map, arr, create) {
    let len = arr.length;
    map = FunctionType._lookupNonTerminal(map, len);
    for (var i = 0; i < len - 1; ++i) {
      map = FunctionType._lookupNonTerminal(map, arr[i]);
    }
    let result = map.get(arr[len - 1]);
    if (result !== void 0) return result;
    map.set(arr[len - 1], result = create());
    return result;
  }
  static _normalizeParameter(a) {
    if (a instanceof Array) {
      let result = [];
      result.push(a[0] == dart.dynamic ? dart.bottom : a[0]);
      result.push(a.slice(1));
      return result;
    }
    return a == dart.dynamic ? dart.bottom : a;
  }
  static _canonicalizeArray(definite, array, map) {
    let arr = definite ? array : array.map(FunctionType._normalizeParameter);
    return FunctionType._memoizeArray(map, arr, () => arr);
  }
  static _canonicalizeNamed(definite, named, map) {
    let key = [];
    let names = dart.getOwnPropertyNames(named);
    let r = {};
    for (var i = 0; i < names.length; ++i) {
      let name = names[i];
      let type = named[name];
      if (!definite) r[name] = type = FunctionType._normalizeParameter(type);
      key.push(name);
      key.push(type);
    }
    if (!definite) named = r;
    return FunctionType._memoizeArray(map, key, () => named);
  }
  static _lookupNonTerminal(map, key) {
    let result = map.get(key);
    if (result !== void 0) return result;
    map.set(key, result = new Map());
    return result;
  }
  static _createSmall(count, definite, returnType, required) {
    let map = dart._fnTypeSmallMap[count];
    let args = definite ? required : required.map(FunctionType._normalizeParameter);
    for (var i = 0; i < count; ++i) {
      map = FunctionType._lookupNonTerminal(map, args[i]);
    }
    let result = map.get(returnType);
    if (result !== void 0) return result;
    result = new FunctionType(returnType, args, [], {});
    map.set(returnType, result);
    return result;
  }
  static create(definite, returnType, args, extra) {
    if (extra === void 0 && args.length < 3) {
      return FunctionType._createSmall(args.length, definite, returnType, args);
    }
    args = FunctionType._canonicalizeArray(definite, args, dart._fnTypeArrayArgMap);
    let keys;
    let create;
    if (extra === void 0) {
      keys = [returnType, args];
      create = () => new FunctionType(returnType, args, [], {});
    } else if (extra instanceof Array) {
      let optionals = FunctionType._canonicalizeArray(definite, extra, dart._fnTypeArrayArgMap);
      keys = [returnType, args, optionals];
      create = () => new FunctionType(returnType, args, optionals, {});
    } else {
      let named = FunctionType._canonicalizeNamed(definite, extra, dart._fnTypeNamedArgMap);
      keys = [returnType, args, named];
      create = () => new FunctionType(returnType, args, [], named);
    }
    return FunctionType._memoizeArray(dart._fnTypeTypeMap, keys, create);
  }
  constructor(returnType, args, optionals, named) {
    super();
    this.returnType = returnType;
    this.args = args;
    this.optionals = optionals;
    this.named = named;
    this.metadata = [];
    function process(array, metadata) {
      var result = [];
      for (var i = 0; i < array.length; ++i) {
        var arg = array[i];
        if (arg instanceof Array) {
          metadata.push(arg.slice(1));
          result.push(arg[0]);
        } else {
          metadata.push([]);
          result.push(arg);
        }
      }
      return result;
    }
    this.args = process(this.args, this.metadata);
    this.optionals = process(this.optionals, this.metadata);
  }
};
dart.Typedef = class Typedef extends dart.AbstractFunctionType {
  constructor(name, closure) {
    super();
    this._name = name;
    this._closure = closure;
    this._functionType = null;
  }
  get name() {
    return this._name;
  }
  get functionType() {
    if (!this._functionType) {
      this._functionType = this._closure();
    }
    return this._functionType;
  }
  get returnType() {
    return this.functionType.returnType;
  }
  get args() {
    return this.functionType.args;
  }
  get optionals() {
    return this.functionType.optionals;
  }
  get named() {
    return this.functionType.named;
  }
  get metadata() {
    return this.functionType.metadata;
  }
};
dart._typeFormalCount = Symbol("_typeFormalCount");
dart.isSubtype = dart._subtypeMemo((t1, t2) => t1 === t2 || dart._isSubtype(t1, t2, true));
dart._jsIterator = Symbol("_jsIterator");
dart._current = Symbol("_current");
dart._AsyncStarStreamController = class _AsyncStarStreamController {
  constructor(generator, T, args) {
    this.isAdding = false;
    this.isWaiting = false;
    this.isScheduled = false;
    this.isSuspendedAtYield = false;
    this.canceler = null;
    this.iterator = generator(this, ...args)[Symbol.iterator]();
    this.controller = dart.getGenericClass(async.StreamController)(T).new({
      onListen: () => this.scheduleGenerator(),
      onResume: () => this.onResume(),
      onCancel: () => this.onCancel()
    });
  }
  onResume() {
    if (this.isSuspendedAtYield) {
      this.scheduleGenerator();
    }
  }
  onCancel() {
    if (this.controller.isClosed) {
      return null;
    }
    if (this.canceler == null) {
      this.canceler = async.Completer.new();
      this.scheduleGenerator();
    }
    return this.canceler.future;
  }
  close() {
    if (this.canceler != null && !this.canceler.isCompleted) {
      this.canceler.complete();
    }
    this.controller.close();
  }
  scheduleGenerator() {
    if (this.isScheduled || this.controller.isPaused || this.isAdding || this.isWaiting) {
      return;
    }
    this.isScheduled = true;
    async.scheduleMicrotask(() => this.runBody());
  }
  runBody(opt_awaitValue) {
    this.isScheduled = false;
    this.isSuspendedAtYield = false;
    this.isWaiting = false;
    let iter;
    try {
      iter = this.iterator.next(opt_awaitValue);
    } catch (e) {
      this.addError(e, dart.stackTrace(e));
      this.close();
      return;
    }

    if (iter.done) {
      this.close();
      return;
    }
    if (this.isSuspendedAtYield || this.isAdding) return;
    this.isWaiting = true;
    let future = iter.value;
    if (!dart.is(future, dart.getGenericClass(async.Future))) {
      future = async.Future.value(future);
    }
    return future.then(dart.dynamic)(x => this.runBody(x), {
      onError: (e, s) => this.throwError(e, s)
    });
  }
  add(event) {
    if (!this.controller.hasListener) return true;
    this.controller.add(event);
    this.scheduleGenerator();
    this.isSuspendedAtYield = true;
    return false;
  }
  addStream(stream) {
    if (!this.controller.hasListener) return true;
    this.isAdding = true;
    this.controller.addStream(stream, {cancelOnError: false}).then(dart.dynamic)(() => {
      this.isAdding = false;
      this.scheduleGenerator();
    }, {
      onError: (e, s) => this.throwError(e, s)
    });
  }
  throwError(error, stackTrace) {
    try {
      this.iterator.throw(error);
    } catch (e) {
      this.addError(e, stackTrace);
    }

  }
  addError(error, stackTrace) {
    if (this.canceler != null && !this.canceler.isCompleted) {
      this.canceler.completeError(error, stackTrace);
      return;
    }
    if (!this.controller.hasListener) return;
    this.controller.addError(error, stackTrace);
  }
};
core.Invocation = class Invocation extends core.Object {
  get isAccessor() {
    return dart.test(this.isGetter) || dart.test(this.isSetter);
  }
};
dart.setSignature(core.Invocation, {
  getters: () => ({isAccessor: dart.definiteFunctionType(core.bool, [])})
});
dart.InvocationImpl = class InvocationImpl extends core.Invocation {
  new(memberName, positionalArguments, opts) {
    let namedArguments = opts && 'namedArguments' in opts ? opts.namedArguments : null;
    let isMethod = opts && 'isMethod' in opts ? opts.isMethod : false;
    let isGetter = opts && 'isGetter' in opts ? opts.isGetter : false;
    let isSetter = opts && 'isSetter' in opts ? opts.isSetter : false;
    this.positionalArguments = positionalArguments;
    this.isMethod = isMethod;
    this.isGetter = isGetter;
    this.isSetter = isSetter;
    this.memberName = dart._dartSymbol(memberName);
    this.namedArguments = dart.InvocationImpl._namedArgsToSymbols(namedArguments);
  }
  static _namedArgsToSymbols(namedArgs) {
    if (namedArgs == null) return dart.map({}, core.Symbol, dart.dynamic);
    return MapOfSymbol$dynamic().fromIterable(dart.getOwnPropertyNames(namedArgs), {key: dart._dartSymbol, value: dart.fn(k => namedArgs[k], dynamicTodynamic())});
  }
};
dart.setSignature(dart.InvocationImpl, {
  constructors: () => ({new: dart.definiteFunctionType(dart.InvocationImpl, [core.String, core.List], {namedArguments: dart.dynamic, isMethod: core.bool, isGetter: core.bool, isSetter: core.bool})}),
  fields: () => ({
    memberName: core.Symbol,
    positionalArguments: core.List,
    namedArguments: MapOfSymbol$dynamic(),
    isMethod: core.bool,
    isGetter: core.bool,
    isSetter: core.bool
  }),
  statics: () => ({_namedArgsToSymbols: dart.definiteFunctionType(core.Map$(core.Symbol, dart.dynamic), [dart.dynamic])}),
  names: ['_namedArgsToSymbols']
});
dart._MethodStats = class _MethodStats extends core.Object {
  new(typeName, frame) {
    this.typeName = typeName;
    this.frame = frame;
    this.count = null;
    this.count = 0;
  }
};
dart.setSignature(dart._MethodStats, {
  constructors: () => ({new: dart.definiteFunctionType(dart._MethodStats, [core.String, core.String])}),
  fields: () => ({
    typeName: core.String,
    frame: core.String,
    count: core.int
  })
});
dart.defineLazy(dart, {
  get _callMethodStats() {
    return MapOfString$_MethodStats().new();
  },
  set _callMethodStats(_) {}
});
dart.defineLazy(dart, {
  get trackProfile() {
    return dart.global.trackDdcProfile;
  },
  set trackProfile(_) {}
});
dart._ignoreTypeFailure = (() => {
  return dart._ignoreMemo((actual, type) => {
    if (!!dart.isSubtype(type, core.Iterable) && !!dart.isSubtype(actual, core.Iterable) || !!dart.isSubtype(type, async.Future) && !!dart.isSubtype(actual, async.Future) || !!dart.isSubtype(type, core.Map) && !!dart.isSubtype(actual, core.Map) || dart.isFunctionType(type) && dart.isFunctionType(actual) || !!dart.isSubtype(type, async.Stream) && !!dart.isSubtype(actual, async.Stream) || !!dart.isSubtype(type, async.StreamSubscription) && !!dart.isSubtype(actual, async.StreamSubscription)) {
      console.warn('Ignoring cast fail from ' + dart.typeName(actual) + ' to ' + dart.typeName(type));
      return true;
    }
    return false;
  });
})();
dart._stack = new WeakMap();
dart._value = Symbol("_value");
dart.constants = new Map();
dart.constantLists = new Map();
dart.JsIterator = class JsIterator {
  constructor(dartIterator) {
    this.dartIterator = dartIterator;
  }
  next() {
    let i = this.dartIterator;
    let done = !i.moveNext();
    return {done: done, value: done ? void 0 : i.current};
  }
};
dart.hasOwnProperty = Object.prototype.hasOwnProperty;
_debugger.JsonMLConfig = class JsonMLConfig extends core.Object {
  new(name) {
    this.name = name;
  }
};
dart.setSignature(_debugger.JsonMLConfig, {
  constructors: () => ({new: dart.definiteFunctionType(_debugger.JsonMLConfig, [core.String])}),
  fields: () => ({name: core.String}),
  sfields: () => ({
    none: _debugger.JsonMLConfig,
    skipDart: _debugger.JsonMLConfig,
    keyToString: _debugger.JsonMLConfig,
    asClass: _debugger.JsonMLConfig
  })
});
dart.defineLazy(_debugger.JsonMLConfig, {
  get none() {
    return dart.const(new _debugger.JsonMLConfig("none"));
  },
  get skipDart() {
    return dart.const(new _debugger.JsonMLConfig("skipDart"));
  },
  get keyToString() {
    return dart.const(new _debugger.JsonMLConfig("keyToString"));
  },
  get asClass() {
    return dart.const(new _debugger.JsonMLConfig("asClass"));
  }
});
_debugger._maxSpanLength = 100;
dart.defineLazy(_debugger, {
  get _devtoolsFormatter() {
    return new _debugger.JsonMLFormatter(new _debugger.DartFormatter());
  },
  set _devtoolsFormatter(_) {}
});
_debugger._typeof = function(object) {
  return typeof object;
};
dart.lazyFn(_debugger._typeof, () => dynamicToString());
_debugger.getOwnPropertyNames = function(object) {
  return dart.list(Object.getOwnPropertyNames(object), core.String);
};
dart.lazyFn(_debugger.getOwnPropertyNames, () => dynamicToListOfString());
_debugger.getOwnPropertySymbols = function(object) {
  return Object.getOwnPropertySymbols(object);
};
dart.lazyFn(_debugger.getOwnPropertySymbols, () => dynamicToList());
_debugger.JSNative = class JSNative extends core.Object {
  static getProperty(object, name) {
    return object[name];
  }
  static setProperty(object, name, value) {
    return object[name] = value;
  }
};
dart.setSignature(_debugger.JSNative, {
  statics: () => ({
    getProperty: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic]),
    setProperty: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['getProperty', 'setProperty']
});
_debugger.addMetadataChildren = function(object, ret) {
  ret.add(new _debugger.NameValuePair({name: _debugger.getTypeName(core.Type._check(_debugger._getType(object))), value: object, config: _debugger.JsonMLConfig.asClass}));
};
dart.lazyFn(_debugger.addMetadataChildren, () => dynamicAndSetOfNameValuePairTovoid());
_debugger.getObjectTypeName = function(object) {
  let reifiedType = dart.getReifiedType(object);
  if (reifiedType == null) {
    if (_debugger._typeof(object) == 'function') {
      return '[[Raw JavaScript Function]]';
    }
    return '<Error getting type name>';
  }
  return _debugger.getTypeName(core.Type._check(reifiedType));
};
dart.lazyFn(_debugger.getObjectTypeName, () => dynamicToString());
_debugger.getTypeName = function(type) {
  let name = dart.typeName(type);
  if (dart.equals(name, 'JSArray<dynamic>') || dart.equals(name, 'JSObject<Array>')) return 'List<dynamic>';
  return core.String._check(name);
};
dart.lazyFn(_debugger.getTypeName, () => TypeToString());
_debugger._getType = function(object) {
  return core.Type.is(object) ? object : dart.getReifiedType(object);
};
dart.fn(_debugger._getType, dynamicToObject());
const _simpleFormatter = Symbol('_simpleFormatter');
_debugger.safePreview = function(object, config) {
  try {
    let preview = _debugger._devtoolsFormatter[_simpleFormatter].preview(object, config);
    if (preview != null) return preview;
    return dart.toString(object);
  } catch (e) {
    return dart.str`<Exception thrown> ${e}`;
  }

};
dart.lazyFn(_debugger.safePreview, () => dynamicAnddynamicToString());
_debugger.symbolName = function(symbol) {
  let name = dart.toString(symbol);
  dart.assert(name[dartx.startsWith]('Symbol('));
  return name[dartx.substring]('Symbol('[dartx.length], dart.notNull(name[dartx.length]) - 1);
};
dart.lazyFn(_debugger.symbolName, () => dynamicToString());
_debugger.hasMethod = function(object, name) {
  try {
    return core.bool._check(dart.hasMethod(object, name));
  } catch (e) {
    return false;
  }

};
dart.lazyFn(_debugger.hasMethod, () => dynamicAndStringTobool());
_debugger.NameValuePair = class NameValuePair extends core.Object {
  new(opts) {
    let name = opts && 'name' in opts ? opts.name : null;
    let value = opts && 'value' in opts ? opts.value : null;
    let config = opts && 'config' in opts ? opts.config : _debugger.JsonMLConfig.none;
    let hideName = opts && 'hideName' in opts ? opts.hideName : false;
    this.name = name;
    this.value = value;
    this.config = config;
    this.hideName = hideName;
  }
  ['=='](other) {
    return _debugger.NameValuePair.is(other) && other.name == this.name;
  }
  get hashCode() {
    return dart.hashCode(this.name);
  }
  get displayName() {
    return dart.test(this.hideName) ? '' : this.name;
  }
};
dart.setSignature(_debugger.NameValuePair, {
  constructors: () => ({new: dart.definiteFunctionType(_debugger.NameValuePair, [], {name: core.String, value: core.Object, config: _debugger.JsonMLConfig, hideName: core.bool})}),
  fields: () => ({
    name: core.String,
    value: core.Object,
    config: _debugger.JsonMLConfig,
    hideName: core.bool
  }),
  getters: () => ({displayName: dart.definiteFunctionType(core.String, [])})
});
_debugger.MapEntry = class MapEntry extends core.Object {
  new(opts) {
    let key = opts && 'key' in opts ? opts.key : null;
    let value = opts && 'value' in opts ? opts.value : null;
    this.key = key;
    this.value = value;
  }
};
dart.setSignature(_debugger.MapEntry, {
  constructors: () => ({new: dart.definiteFunctionType(_debugger.MapEntry, [], {key: core.Object, value: core.Object})}),
  fields: () => ({
    key: core.Object,
    value: core.Object
  })
});
_debugger.IterableSpan = class IterableSpan extends core.Object {
  new(start, end, iterable) {
    this.start = start;
    this.end = end;
    this.iterable = iterable;
  }
  get length() {
    return dart.notNull(this.end) - dart.notNull(this.start);
  }
  get maxPowerOfSubsetSize() {
    return (dart.notNull(math.log(dart.notNull(this.length) - 0.5)) / dart.notNull(math.log(_debugger._maxSpanLength)))[dartx.truncate]();
  }
  get subsetSize() {
    return dart.asInt(math.pow(_debugger._maxSpanLength, this.maxPowerOfSubsetSize));
  }
  asMap() {
    return this.iterable[dartx.skip](this.start)[dartx.take](this.length)[dartx.toList]()[dartx.asMap]();
  }
  children() {
    let children = JSArrayOfNameValuePair().of([]);
    if (dart.notNull(this.length) <= dart.notNull(_debugger._maxSpanLength)) {
      this.asMap()[dartx.forEach](dart.fn((i, element) => {
        children[dartx.add](new _debugger.NameValuePair({name: dart.toString(dart.notNull(i) + dart.notNull(this.start)), value: element}));
      }, intAnddynamicTovoid()));
    } else {
      for (let i = this.start; dart.notNull(i) < dart.notNull(this.end); i = dart.notNull(i) + dart.notNull(this.subsetSize)) {
        let subSpan = new _debugger.IterableSpan(i, math.min(core.int)(this.end, dart.notNull(this.subsetSize) + dart.notNull(i)), this.iterable);
        if (subSpan.length == 1) {
          children[dartx.add](new _debugger.NameValuePair({name: dart.toString(i), value: this.iterable[dartx.elementAt](i)}));
        } else {
          children[dartx.add](new _debugger.NameValuePair({name: dart.str`[${i}...${dart.notNull(subSpan.end) - 1}]`, value: subSpan, hideName: true}));
        }
      }
    }
    return children;
  }
};
dart.setSignature(_debugger.IterableSpan, {
  constructors: () => ({new: dart.definiteFunctionType(_debugger.IterableSpan, [core.int, core.int, core.Iterable])}),
  fields: () => ({
    start: core.int,
    end: core.int,
    iterable: core.Iterable
  }),
  getters: () => ({
    length: dart.definiteFunctionType(core.int, []),
    maxPowerOfSubsetSize: dart.definiteFunctionType(core.int, []),
    subsetSize: dart.definiteFunctionType(core.int, [])
  }),
  methods: () => ({
    asMap: dart.definiteFunctionType(core.Map$(core.int, dart.dynamic), []),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [])
  })
});
_debugger.Library = class Library extends core.Object {
  new(name, object) {
    this.name = name;
    this.object = object;
  }
};
dart.setSignature(_debugger.Library, {
  constructors: () => ({new: dart.definiteFunctionType(_debugger.Library, [core.String, core.Object])}),
  fields: () => ({
    name: core.String,
    object: core.Object
  })
});
_debugger.NamedConstructor = class NamedConstructor extends core.Object {
  new(object) {
    this.object = object;
  }
};
dart.setSignature(_debugger.NamedConstructor, {
  constructors: () => ({new: dart.definiteFunctionType(_debugger.NamedConstructor, [core.Object])}),
  fields: () => ({object: core.Object})
});
_debugger.HeritageClause = class HeritageClause extends core.Object {
  new(name, types) {
    this.name = name;
    this.types = types;
  }
};
dart.setSignature(_debugger.HeritageClause, {
  constructors: () => ({new: dart.definiteFunctionType(_debugger.HeritageClause, [core.String, core.List])}),
  fields: () => ({
    name: core.String,
    types: core.List
  })
});
_debugger.safeGetProperty = function(protoChain, name) {
  try {
    return _debugger.JSNative.getProperty(protoChain, name);
  } catch (e) {
    return dart.str`<Exception thrown> ${e}`;
  }

};
dart.fn(_debugger.safeGetProperty, ObjectAndObjectToObject());
_debugger.safeProperties = function(object) {
  return MapOfdynamic$Object().fromIterable(_debugger.getOwnPropertyNames(object)[dartx.where](dart.fn(each => _debugger.safeGetProperty(object, each) != null, StringTobool())), {key: dart.fn(name => name, dynamicTodynamic()), value: dart.fn(name => _debugger.safeGetProperty(object, name), dynamicToObject())});
};
dart.fn(_debugger.safeProperties, dynamicTodynamic());
const _attributes = Symbol('_attributes');
const _jsonML = Symbol('_jsonML');
_debugger.JsonMLElement = class JsonMLElement extends core.Object {
  new(tagName) {
    this[_attributes] = null;
    this[_jsonML] = null;
    this[_attributes] = {};
    this[_jsonML] = [tagName, this[_attributes]];
  }
  appendChild(element) {
    this[_jsonML][dartx.add](dart.dsend(element, 'toJsonML'));
  }
  createChild(tagName) {
    let c = new _debugger.JsonMLElement(tagName);
    this[_jsonML][dartx.add](c.toJsonML());
    return c;
  }
  createObjectTag(object) {
    return (() => {
      let _ = this.createChild('object');
      _.addAttribute('object', object);
      return _;
    })();
  }
  setStyle(style) {
    dart.dput(this[_attributes], 'style', style);
  }
  addStyle(style) {
    if (dart.dload(this[_attributes], 'style') == null) {
      dart.dput(this[_attributes], 'style', style);
    } else {
      let o = this[_attributes];
      dart.dput(o, 'style', dart.dsend(dart.dload(o, 'style'), '+', style));
    }
  }
  addAttribute(key, value) {
    _debugger.JSNative.setProperty(this[_attributes], key, value);
  }
  createTextChild(text) {
    this[_jsonML][dartx.add](text);
  }
  toJsonML() {
    return this[_jsonML];
  }
};
dart.setSignature(_debugger.JsonMLElement, {
  constructors: () => ({new: dart.definiteFunctionType(_debugger.JsonMLElement, [dart.dynamic])}),
  fields: () => ({
    [_attributes]: dart.dynamic,
    [_jsonML]: core.List
  }),
  methods: () => ({
    appendChild: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    createChild: dart.definiteFunctionType(_debugger.JsonMLElement, [core.String]),
    createObjectTag: dart.definiteFunctionType(_debugger.JsonMLElement, [dart.dynamic]),
    setStyle: dart.definiteFunctionType(dart.void, [core.String]),
    addStyle: dart.definiteFunctionType(dart.dynamic, [core.String]),
    addAttribute: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic]),
    createTextChild: dart.definiteFunctionType(dart.dynamic, [core.String]),
    toJsonML: dart.definiteFunctionType(dart.dynamic, [])
  })
});
_debugger.isNativeJavaScriptObject = function(object) {
  let type = _debugger._typeof(object);
  return type != 'object' && type != 'function' || dart.JSObject.is(object) || html.Node.is(object);
};
dart.lazyFn(_debugger.isNativeJavaScriptObject, () => dynamicTobool());
_debugger.JsonMLFormatter = class JsonMLFormatter extends core.Object {
  new(simpleFormatter) {
    this[_simpleFormatter] = simpleFormatter;
    this.customFormattersOn = false;
  }
  setMaxSpanLengthForTestingOnly(spanLength) {
    _debugger._maxSpanLength = spanLength;
  }
  header(object, config) {
    this.customFormattersOn = true;
    if (dart.equals(config, _debugger.JsonMLConfig.skipDart) || dart.test(_debugger.isNativeJavaScriptObject(object))) {
      return null;
    }
    let c = this[_simpleFormatter].preview(object, config);
    if (c == null) return null;
    if (dart.equals(config, _debugger.JsonMLConfig.keyToString)) {
      c = dart.toString(object);
    }
    let element = new _debugger.JsonMLElement('span');
    element.setStyle('background-color: #d9edf7;');
    element.createTextChild(c);
    return element.toJsonML();
  }
  hasBody(object, config) {
    return this[_simpleFormatter].hasChildren(object, config);
  }
  body(object, config) {
    let body = new _debugger.JsonMLElement('ol');
    body.setStyle('list-style-type: none;' + 'padding-left: 0px;' + 'margin-top: 0px;' + 'margin-bottom: 0px;' + 'margin-left: 12px;');
    if (core.StackTrace.is(object)) {
      body.addStyle('color: rgb(196, 26, 22);');
    }
    let children = this[_simpleFormatter].children(object, config);
    for (let child of children) {
      let li = body.createChild('li');
      let nameSpan = new _debugger.JsonMLElement('span');
      nameSpan.createTextChild(dart.test(child.displayName[dartx.isNotEmpty]) ? dart.str`${child.displayName}: ` : '');
      nameSpan.setStyle('color: rgb(136, 19, 145);');
      if (_debugger._typeof(child.value) == 'object' || _debugger._typeof(child.value) == 'function') {
        nameSpan.addStyle("padding-left: 13px;");
        li.appendChild(nameSpan);
        let objectTag = li.createObjectTag(child.value);
        objectTag.addAttribute('config', child.config);
        if (!dart.test(this[_simpleFormatter].hasChildren(child.value, child.config))) {
          li.setStyle("padding-left: 13px;");
        }
      } else {
        li.setStyle("padding-left: 13px;");
        let _ = li.createChild('span');
        _.appendChild(nameSpan);
        _.createTextChild(_debugger.safePreview(child.value, child.config));
      }
    }
    return body.toJsonML();
  }
};
dart.setSignature(_debugger.JsonMLFormatter, {
  constructors: () => ({new: dart.definiteFunctionType(_debugger.JsonMLFormatter, [_debugger.DartFormatter])}),
  fields: () => ({
    [_simpleFormatter]: _debugger.DartFormatter,
    customFormattersOn: core.bool
  }),
  methods: () => ({
    setMaxSpanLengthForTestingOnly: dart.definiteFunctionType(dart.void, [core.int]),
    header: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic]),
    hasBody: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    body: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic])
  })
});
_debugger.Formatter = class Formatter extends core.Object {};
const _formatters = Symbol('_formatters');
_debugger.DartFormatter = class DartFormatter extends core.Object {
  new() {
    this[_formatters] = null;
    this[_formatters] = JSArrayOfFormatter().of([new _debugger.ClassFormatter(), new _debugger.NamedConstructorFormatter(), new _debugger.MapFormatter(), new _debugger.IterableFormatter(), new _debugger.IterableSpanFormatter(), new _debugger.MapEntryFormatter(), new _debugger.StackTraceFormatter(), new _debugger.FunctionFormatter(), new _debugger.HeritageClauseFormatter(), new _debugger.LibraryModuleFormatter(), new _debugger.LibraryFormatter(), new _debugger.ObjectFormatter()]);
  }
  preview(object, config) {
    try {
      if (object == null || typeof object == 'number' || typeof object == 'string' || dart.test(_debugger.isNativeJavaScriptObject(object))) {
        return dart.toString(object);
      }
      for (let formatter of this[_formatters]) {
        if (dart.test(formatter.accept(object, config))) return formatter.preview(object);
      }
    } catch (e) {
      let trace = dart.stackTrace(e);
      html.window[dartx.console].error(dart.str`Caught exception ${e}\n trace:\n${trace}`);
    }

    return null;
  }
  hasChildren(object, config) {
    if (object == null) return false;
    try {
      for (let formatter of this[_formatters]) {
        if (dart.test(formatter.accept(object, config))) return formatter.hasChildren(object);
      }
    } catch (e) {
      let trace = dart.stackTrace(e);
      html.window[dartx.console].error(dart.str`[hasChildren] Caught exception ${e}\n trace:\n${trace}`);
    }

    return false;
  }
  children(object, config) {
    try {
      if (object != null) {
        for (let formatter of this[_formatters]) {
          if (dart.test(formatter.accept(object, config))) return formatter.children(object);
        }
      }
    } catch (e) {
      let trace = dart.stackTrace(e);
      html.window[dartx.console].error(dart.str`Caught exception ${e}\n trace:\n${trace}`);
    }

    return JSArrayOfNameValuePair().of([]);
  }
};
dart.setSignature(_debugger.DartFormatter, {
  constructors: () => ({new: dart.definiteFunctionType(_debugger.DartFormatter, [])}),
  fields: () => ({[_formatters]: ListOfFormatter()}),
  methods: () => ({
    preview: dart.definiteFunctionType(core.String, [dart.dynamic, dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic, dart.dynamic])
  })
});
_debugger.ObjectFormatter = class ObjectFormatter extends _debugger.Formatter {
  accept(object, config) {
    return !dart.test(_debugger.isNativeJavaScriptObject(object));
  }
  preview(object) {
    return _debugger.getObjectTypeName(object);
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    let properties = LinkedHashSetOfNameValuePair().new();
    _debugger.addMetadataChildren(object, properties);
    let current = object;
    let protoChain = JSArrayOfObject().of([]);
    while (current != null && !dart.test(_debugger.isNativeJavaScriptObject(current)) && current !== Object.prototype) {
      protoChain[dartx.add](current);
      current = _debugger.safeGetProperty(current, '__proto__');
    }
    for (/* Unimplemented unknown name */current of protoChain) {
      for (let symbol of _debugger.getOwnPropertySymbols(current)) {
        let dartName = _debugger.symbolName(symbol);
        if (dart.test(_debugger.hasMethod(object, dartName))) {
          continue;
        }
        let dartXPrefix = 'dartx.';
        if (dart.test(dartName[dartx.startsWith](dartXPrefix))) {
          dartName = dartName[dartx.substring](dartXPrefix[dartx.length]);
        } else if (!dart.test(dartName[dartx.startsWith]('_'))) {
          continue;
        }
        let value = _debugger.safeGetProperty(object, symbol);
        properties.add(new _debugger.NameValuePair({name: dartName, value: value}));
      }
    }
    for (/* Unimplemented unknown name */current of protoChain) {
      let className = dart.dload(dart.getReifiedType(current), 'name');
      for (let name of _debugger.getOwnPropertyNames(current)) {
        if (dart.test(_debugger.ObjectFormatter._customNames.contains(name)) || dart.equals(name, className)) continue;
        if (dart.test(_debugger.hasMethod(object, name))) {
          continue;
        }
        let value = _debugger.safeGetProperty(object, name);
        properties.add(new _debugger.NameValuePair({name: name, value: value}));
      }
    }
    return properties.toList();
  }
};
dart.setSignature(_debugger.ObjectFormatter, {
  methods: () => ({
    accept: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.definiteFunctionType(core.String, [dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  }),
  sfields: () => ({_customNames: SetOfString()})
});
dart.defineLazy(_debugger.ObjectFormatter, {
  get _customNames() {
    return (() => {
      let _ = SetOfString().new();
      _.add('constructor');
      _.add('prototype');
      _.add('__proto__');
      return _;
    })();
  },
  set _customNames(_) {}
});
_debugger.LibraryModuleFormatter = class LibraryModuleFormatter extends core.Object {
  accept(object, config) {
    return dart.getDartLibraryName(object) != null;
  }
  hasChildren(object) {
    return true;
  }
  preview(object) {
    let libraryNames = dart.dsend(dart.getDartLibraryName(object), 'split', '/');
    if (dart.test(dart.dsend(dart.dload(libraryNames, 'length'), '>', 1))) {
      dart.dsetindex(libraryNames, dart.dsend(dart.dload(libraryNames, 'length'), '-', 1), '');
    }
    return dart.str`Library Module: ${dart.dsend(libraryNames, 'join', '/')}`;
  }
  children(object) {
    let children = LinkedHashSetOfNameValuePair().new();
    for (let name of _debugger.getOwnPropertyNames(object)) {
      let value = _debugger.safeGetProperty(object, name);
      name = dart.str`${name[dartx.replaceAll]("__", "/")}.dart`;
      children.add(new _debugger.NameValuePair({name: name, value: new _debugger.Library(name, value), hideName: true}));
    }
    return children.toList();
  }
};
_debugger.LibraryModuleFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setSignature(_debugger.LibraryModuleFormatter, {
  methods: () => ({
    accept: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    preview: dart.definiteFunctionType(core.String, [dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  })
});
_debugger.LibraryFormatter = class LibraryFormatter extends core.Object {
  new() {
    this.genericParameters = HashMapOfString$String().new();
  }
  accept(object, config) {
    return _debugger.Library.is(object);
  }
  hasChildren(object) {
    return true;
  }
  preview(object) {
    return core.String._check(dart.dload(object, 'name'));
  }
  children(object) {
    let children = LinkedHashSetOfNameValuePair().new();
    let nonGenericProperties = LinkedHashMapOfString$Object().new();
    let objectProperties = _debugger.safeProperties(dart.dload(object, 'object'));
    dart.dsend(objectProperties, 'forEach', dart.fn((name, value) => {
      let genericTypeConstructor = dart.getGenericTypeCtor(value);
      if (genericTypeConstructor != null) {
        this.recordGenericParameters(core.String._check(name), genericTypeConstructor);
      } else {
        nonGenericProperties._set(core.String._check(name), value);
      }
    }, dynamicAnddynamicTodynamic()));
    nonGenericProperties.forEach(dart.fn((name, value) => {
      if (core.Type.is(value)) {
        children.add(_debugger.NameValuePair._check(this.classChild(name, value)));
      } else {
        children.add(new _debugger.NameValuePair({name: name, value: value}));
      }
    }, StringAndObjectTovoid()));
    return children.toList();
  }
  recordGenericParameters(name, genericTypeConstructor) {
    this.genericParameters._set(name, genericTypeConstructor.toString()[dartx.split](' =>')[dartx.first][dartx.replaceAll](core.RegExp.new('[(|)]'), ''));
  }
  classChild(name, child) {
    let typeName = _debugger.getTypeName(core.Type._check(child));
    let parameterName = dart.str`${name}\$`;
    if (dart.test(this.genericParameters.keys[dartx.contains](parameterName))) {
      typeName = dart.str`${typeName}<${this.genericParameters._get(parameterName)}>`;
      _debugger.JSNative.setProperty(child, 'genericTypeName', typeName);
    }
    return new _debugger.NameValuePair({name: typeName, value: child});
  }
};
_debugger.LibraryFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setSignature(_debugger.LibraryFormatter, {
  fields: () => ({genericParameters: HashMapOfString$String()}),
  methods: () => ({
    accept: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    preview: dart.definiteFunctionType(core.String, [dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic]),
    recordGenericParameters: dart.definiteFunctionType(dart.dynamic, [core.String, core.Object]),
    classChild: dart.definiteFunctionType(dart.dynamic, [core.String, core.Object])
  })
});
_debugger.FunctionFormatter = class FunctionFormatter extends core.Object {
  accept(object, config) {
    if (_debugger._typeof(object) != 'function') return false;
    return dart.getReifiedType(object) != null;
  }
  hasChildren(object) {
    return true;
  }
  preview(object) {
    return core.String._check(dart.typeName(dart.getReifiedType(object)));
  }
  children(object) {
    return JSArrayOfNameValuePair().of([new _debugger.NameValuePair({name: 'signature', value: this.preview(object)}), new _debugger.NameValuePair({name: 'JavaScript Function', value: object, config: _debugger.JsonMLConfig.skipDart})]);
  }
};
_debugger.FunctionFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setSignature(_debugger.FunctionFormatter, {
  methods: () => ({
    accept: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    preview: dart.definiteFunctionType(core.String, [dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  })
});
_debugger.MapFormatter = class MapFormatter extends core.Object {
  accept(object, config) {
    return core.Map.is(object);
  }
  hasChildren(object) {
    return true;
  }
  preview(object) {
    let map = core.Map._check(object);
    return dart.str`${_debugger.getObjectTypeName(map)} length ${map[dartx.length]}`;
  }
  children(object) {
    let map = core.Map._check(object);
    let entries = LinkedHashSetOfNameValuePair().new();
    map[dartx.forEach](dart.fn((key, value) => {
      let entryWrapper = new _debugger.MapEntry({key: key, value: value});
      entries.add(new _debugger.NameValuePair({name: dart.toString(entries.length), value: entryWrapper}));
    }, dynamicAnddynamicTovoid()));
    _debugger.addMetadataChildren(object, entries);
    return entries.toList();
  }
};
_debugger.MapFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setSignature(_debugger.MapFormatter, {
  methods: () => ({
    accept: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    preview: dart.definiteFunctionType(core.String, [dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  })
});
_debugger.IterableFormatter = class IterableFormatter extends core.Object {
  accept(object, config) {
    return core.Iterable.is(object);
  }
  preview(object) {
    let iterable = core.Iterable._check(object);
    try {
      let length = iterable[dartx.length];
      return dart.str`${_debugger.getObjectTypeName(iterable)} length ${length}`;
    } catch (_) {
      return dart.str`${_debugger.getObjectTypeName(iterable)}`;
    }

  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    let children = LinkedHashSetOfNameValuePair().new();
    children.addAll(new _debugger.IterableSpan(0, core.int._check(dart.dload(object, 'length')), core.Iterable._check(object)).children());
    _debugger.addMetadataChildren(object, children);
    return children.toList();
  }
};
_debugger.IterableFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setSignature(_debugger.IterableFormatter, {
  methods: () => ({
    accept: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.definiteFunctionType(core.String, [dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  })
});
_debugger.NamedConstructorFormatter = class NamedConstructorFormatter extends core.Object {
  accept(object, config) {
    return _debugger.NamedConstructor.is(object);
  }
  preview(object) {
    return 'Named Constructor';
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    return JSArrayOfNameValuePair().of([new _debugger.NameValuePair({name: 'JavaScript Function', value: object, config: _debugger.JsonMLConfig.skipDart})]);
  }
};
_debugger.NamedConstructorFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setSignature(_debugger.NamedConstructorFormatter, {
  methods: () => ({
    accept: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.definiteFunctionType(core.String, [dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  })
});
_debugger.MapEntryFormatter = class MapEntryFormatter extends core.Object {
  accept(object, config) {
    return _debugger.MapEntry.is(object);
  }
  preview(object) {
    let entry = _debugger.MapEntry._check(object);
    return dart.str`${_debugger.safePreview(entry.key, _debugger.JsonMLConfig.none)} => ${_debugger.safePreview(entry.value, _debugger.JsonMLConfig.none)}`;
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    return JSArrayOfNameValuePair().of([new _debugger.NameValuePair({name: 'key', value: dart.dload(object, 'key'), config: _debugger.JsonMLConfig.keyToString}), new _debugger.NameValuePair({name: 'value', value: dart.dload(object, 'value')})]);
  }
};
_debugger.MapEntryFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setSignature(_debugger.MapEntryFormatter, {
  methods: () => ({
    accept: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.definiteFunctionType(core.String, [dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  })
});
_debugger.HeritageClauseFormatter = class HeritageClauseFormatter extends core.Object {
  accept(object, config) {
    return _debugger.HeritageClause.is(object);
  }
  preview(object) {
    let clause = _debugger.HeritageClause._check(object);
    let typeNames = clause.types[dartx.map](core.String)(_debugger.getTypeName);
    return dart.str`${clause.name} ${typeNames[dartx.join](", ")}`;
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    let clause = _debugger.HeritageClause._check(object);
    let children = JSArrayOfNameValuePair().of([]);
    for (let type of clause.types) {
      children[dartx.add](new _debugger.NameValuePair({value: type, config: _debugger.JsonMLConfig.asClass}));
    }
    return children;
  }
};
_debugger.HeritageClauseFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setSignature(_debugger.HeritageClauseFormatter, {
  methods: () => ({
    accept: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.definiteFunctionType(core.String, [dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  })
});
_debugger.IterableSpanFormatter = class IterableSpanFormatter extends core.Object {
  accept(object, config) {
    return _debugger.IterableSpan.is(object);
  }
  preview(object) {
    return dart.str`[${dart.dload(object, 'start')}...${dart.dsend(dart.dload(object, 'end'), '-', 1)}]`;
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    return ListOfNameValuePair()._check(dart.dsend(object, 'children'));
  }
};
_debugger.IterableSpanFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setSignature(_debugger.IterableSpanFormatter, {
  methods: () => ({
    accept: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.definiteFunctionType(core.String, [dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  })
});
_debugger.StackTraceFormatter = class StackTraceFormatter extends core.Object {
  accept(object, config) {
    return core.StackTrace.is(object);
  }
  preview(object) {
    return 'StackTrace';
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    return dart.toString(object)[dartx.split]('\n')[dartx.map](_debugger.NameValuePair)(dart.fn(line => new _debugger.NameValuePair({value: line[dartx.replaceFirst](core.RegExp.new('^\\s+at\\s'), ''), hideName: true}), StringToNameValuePair()))[dartx.toList]();
  }
};
_debugger.StackTraceFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setSignature(_debugger.StackTraceFormatter, {
  methods: () => ({
    accept: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.definiteFunctionType(core.String, [dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  })
});
_debugger.ClassFormatter = class ClassFormatter extends core.Object {
  accept(object, config) {
    return core.Type.is(object) || dart.equals(config, _debugger.JsonMLConfig.asClass);
  }
  preview(object) {
    let typeName = _debugger.safeGetProperty(object, 'genericTypeName');
    if (typeName != null) return core.String._check(typeName);
    let type = _debugger._getType(object);
    let implements$ = dart.getImplements(type);
    typeName = _debugger.getTypeName(core.Type._check(type));
    if (implements$ != null) {
      let typeNames = dart.dsend(dart.dcall(implements$), 'map', _debugger.getTypeName);
      return dart.str`${typeName} implements ${dart.dsend(typeNames, 'join', ", ")}`;
    } else {
      return core.String._check(typeName);
    }
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    let type = _debugger._getType(object);
    let children = JSArrayOfNameValuePair().of([]);
    let typeName = _debugger.getTypeName(core.Type._check(_debugger._getType(object)));
    let mixins = dart.getMixins(type);
    if (mixins != null && dart.test(dart.dload(mixins, 'isNotEmpty'))) {
      children[dartx.add](new _debugger.NameValuePair({name: '[[Mixins]]', value: new _debugger.HeritageClause('mixins', core.List._check(mixins))}));
    }
    let hiddenProperties = JSArrayOfString().of(['length', 'name', 'prototype', 'genericTypeName']);
    for (let name of _debugger.getOwnPropertyNames(object)) {
      if (dart.test(hiddenProperties[dartx.contains](name))) continue;
      let value = _debugger.safeGetProperty(object, name);
      if (value != null && dart.getIsNamedConstructor(value) != null) {
        value = new _debugger.NamedConstructor(value);
        name = dart.str`${typeName}.${name}`;
      }
      children[dartx.add](new _debugger.NameValuePair({name: name, value: value}));
    }
    let hiddenPrototypeProperties = JSArrayOfString().of(['constructor', 'new', '$identityHash']);
    let prototype = object.prototype;
    if (prototype != null) {
      for (let name of _debugger.getOwnPropertyNames(prototype)) {
        if (dart.test(hiddenPrototypeProperties[dartx.contains](name))) continue;
        let func = _debugger.safeGetProperty(prototype, name);
        let constructor = _debugger.safeGetProperty(prototype, 'constructor');
        let sigObj = dart.getMethodSig(constructor);
        if (sigObj != null) {
          let value = _debugger.safeGetProperty(sigObj, name);
          if (_debugger.getTypeName(core.Type._check(dart.getReifiedType(value))) != 'Null') {
            dart.tag(func, value);
            children[dartx.add](new _debugger.NameValuePair({name: name, value: func}));
          }
        }
      }
    }
    return children;
  }
};
_debugger.ClassFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setSignature(_debugger.ClassFormatter, {
  methods: () => ({
    accept: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.definiteFunctionType(core.String, [dart.dynamic]),
    hasChildren: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  })
});
_debugger.registerDevtoolsFormatter = function() {
  let formatters = JSArrayOfJsonMLFormatter().of([_debugger._devtoolsFormatter]);
  dart.global.devtoolsFormatters = formatters;
};
dart.fn(_debugger.registerDevtoolsFormatter, VoidTodynamic());
_foreign_helper.JS = function(typeDescription, codeTemplate, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) {
  if (arg0 === void 0) arg0 = null;
  if (arg1 === void 0) arg1 = null;
  if (arg2 === void 0) arg2 = null;
  if (arg3 === void 0) arg3 = null;
  if (arg4 === void 0) arg4 = null;
  if (arg5 === void 0) arg5 = null;
  if (arg6 === void 0) arg6 = null;
  if (arg7 === void 0) arg7 = null;
  if (arg8 === void 0) arg8 = null;
  if (arg9 === void 0) arg9 = null;
  if (arg10 === void 0) arg10 = null;
  if (arg11 === void 0) arg11 = null;
};
dart.lazyFn(_foreign_helper.JS, () => StringAndString__Todynamic());
_foreign_helper.JSExportName = class JSExportName extends core.Object {
  new(name) {
    this.name = name;
  }
};
dart.setSignature(_foreign_helper.JSExportName, {
  constructors: () => ({new: dart.definiteFunctionType(_foreign_helper.JSExportName, [core.String])}),
  fields: () => ({name: core.String})
});
_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT = function() {
};
dart.lazyFn(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT, () => VoidToIsolateContext());
_foreign_helper.IsolateContext = class IsolateContext extends core.Object {};
_foreign_helper.JS_CALL_IN_ISOLATE = function(isolate, func) {
};
dart.lazyFn(_foreign_helper.JS_CALL_IN_ISOLATE, () => dynamicAndFunctionTodynamic());
_foreign_helper.JS_SET_CURRENT_ISOLATE = function(isolate) {
};
dart.fn(_foreign_helper.JS_SET_CURRENT_ISOLATE, dynamicTovoid());
_foreign_helper.JS_CREATE_ISOLATE = function() {
};
dart.fn(_foreign_helper.JS_CREATE_ISOLATE, VoidTodynamic());
_foreign_helper.JS_DART_OBJECT_CONSTRUCTOR = function() {
};
dart.fn(_foreign_helper.JS_DART_OBJECT_CONSTRUCTOR, VoidTodynamic());
_foreign_helper.JS_INTERCEPTOR_CONSTANT = function(type) {
};
dart.fn(_foreign_helper.JS_INTERCEPTOR_CONSTANT, TypeTodynamic());
_foreign_helper.JS_OPERATOR_IS_PREFIX = function() {
};
dart.lazyFn(_foreign_helper.JS_OPERATOR_IS_PREFIX, () => VoidToString());
_foreign_helper.JS_OPERATOR_AS_PREFIX = function() {
};
dart.lazyFn(_foreign_helper.JS_OPERATOR_AS_PREFIX, () => VoidToString());
_foreign_helper.JS_OBJECT_CLASS_NAME = function() {
};
dart.lazyFn(_foreign_helper.JS_OBJECT_CLASS_NAME, () => VoidToString());
_foreign_helper.JS_NULL_CLASS_NAME = function() {
};
dart.lazyFn(_foreign_helper.JS_NULL_CLASS_NAME, () => VoidToString());
_foreign_helper.JS_FUNCTION_CLASS_NAME = function() {
};
dart.lazyFn(_foreign_helper.JS_FUNCTION_CLASS_NAME, () => VoidToString());
_foreign_helper.JS_IS_INDEXABLE_FIELD_NAME = function() {
};
dart.lazyFn(_foreign_helper.JS_IS_INDEXABLE_FIELD_NAME, () => VoidToString());
_foreign_helper.JS_CURRENT_ISOLATE = function() {
};
dart.fn(_foreign_helper.JS_CURRENT_ISOLATE, VoidTodynamic());
_foreign_helper.JS_SIGNATURE_NAME = function() {
};
dart.lazyFn(_foreign_helper.JS_SIGNATURE_NAME, () => VoidToString());
_foreign_helper.JS_TYPEDEF_TAG = function() {
};
dart.lazyFn(_foreign_helper.JS_TYPEDEF_TAG, () => VoidToString());
_foreign_helper.JS_FUNCTION_TYPE_TAG = function() {
};
dart.lazyFn(_foreign_helper.JS_FUNCTION_TYPE_TAG, () => VoidToString());
_foreign_helper.JS_FUNCTION_TYPE_VOID_RETURN_TAG = function() {
};
dart.lazyFn(_foreign_helper.JS_FUNCTION_TYPE_VOID_RETURN_TAG, () => VoidToString());
_foreign_helper.JS_FUNCTION_TYPE_RETURN_TYPE_TAG = function() {
};
dart.lazyFn(_foreign_helper.JS_FUNCTION_TYPE_RETURN_TYPE_TAG, () => VoidToString());
_foreign_helper.JS_FUNCTION_TYPE_REQUIRED_PARAMETERS_TAG = function() {
};
dart.lazyFn(_foreign_helper.JS_FUNCTION_TYPE_REQUIRED_PARAMETERS_TAG, () => VoidToString());
_foreign_helper.JS_FUNCTION_TYPE_OPTIONAL_PARAMETERS_TAG = function() {
};
dart.lazyFn(_foreign_helper.JS_FUNCTION_TYPE_OPTIONAL_PARAMETERS_TAG, () => VoidToString());
_foreign_helper.JS_FUNCTION_TYPE_NAMED_PARAMETERS_TAG = function() {
};
dart.lazyFn(_foreign_helper.JS_FUNCTION_TYPE_NAMED_PARAMETERS_TAG, () => VoidToString());
_foreign_helper.JS_GET_NAME = function(name) {
};
dart.lazyFn(_foreign_helper.JS_GET_NAME, () => StringToString());
_foreign_helper.JS_EMBEDDED_GLOBAL = function(typeDescription, name) {
};
dart.lazyFn(_foreign_helper.JS_EMBEDDED_GLOBAL, () => StringAndStringTodynamic());
_foreign_helper.JS_GET_FLAG = function(name) {
};
dart.lazyFn(_foreign_helper.JS_GET_FLAG, () => StringTobool());
_foreign_helper.JS_EFFECT = function(code) {
  dart.dcall(code, null);
};
dart.lazyFn(_foreign_helper.JS_EFFECT, () => FunctionTovoid());
_foreign_helper.JS_CONST = class JS_CONST extends core.Object {
  new(code) {
    this.code = code;
  }
};
dart.setSignature(_foreign_helper.JS_CONST, {
  constructors: () => ({new: dart.definiteFunctionType(_foreign_helper.JS_CONST, [core.String])}),
  fields: () => ({code: core.String})
});
_foreign_helper.JS_STRING_CONCAT = function(a, b) {
  return a + b;
};
dart.lazyFn(_foreign_helper.JS_STRING_CONCAT, () => StringAndStringToString());
_foreign_helper._Rest = class _Rest extends core.Object {
  new() {
  }
};
dart.setSignature(_foreign_helper._Rest, {
  constructors: () => ({new: dart.definiteFunctionType(_foreign_helper._Rest, [])})
});
_foreign_helper.rest = dart.const(new _foreign_helper._Rest());
_foreign_helper.spread = function(args) {
  dart.throw(new core.StateError('The spread function cannot be called, ' + 'it should be compiled away.'));
};
dart.fn(_foreign_helper.spread, dynamicTodynamic());
_interceptors.Interceptor = class Interceptor extends core.Object {
  new() {
  }
};
dart.addTypeTests(_interceptors.Interceptor);
dart.setSignature(_interceptors.Interceptor, {
  constructors: () => ({new: dart.definiteFunctionType(_interceptors.Interceptor, [])})
});
_interceptors.getInterceptor = function(obj) {
  return obj;
};
dart.fn(_interceptors.getInterceptor, dynamicTodynamic());
dart.defineExtensionNames([
  'toString',
  'hashCode',
  'runtimeType'
]);
_interceptors.JSBool = class JSBool extends _interceptors.Interceptor {
  new() {
    super.new();
  }
  [dartx.toString]() {
    return String(this);
  }
  get [dartx.hashCode]() {
    return this ? 2 * 3 * 23 * 3761 : 269 * 811;
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(core.bool);
  }
};
_interceptors.JSBool[dart.implements] = () => [core.bool];
dart.setSignature(_interceptors.JSBool, {
  constructors: () => ({new: dart.definiteFunctionType(_interceptors.JSBool, [])})
});
dart.registerExtension(dart.global.Boolean, _interceptors.JSBool);
_interceptors.JSIndexable$ = dart.generic(E => {
  class JSIndexable extends core.Object {}
  dart.addTypeTests(JSIndexable);
  return JSIndexable;
});
_interceptors.JSIndexable = JSIndexable();
_interceptors.JSObject = class JSObject extends core.Object {};
_interceptors.JavaScriptObject = class JavaScriptObject extends _interceptors.Interceptor {
  new() {
    super.new();
  }
  get hashCode() {
    return 0;
  }
  get runtimeType() {
    return dart.wrapType(_interceptors.JSObject);
  }
};
_interceptors.JavaScriptObject[dart.implements] = () => [_interceptors.JSObject];
dart.setSignature(_interceptors.JavaScriptObject, {
  constructors: () => ({new: dart.definiteFunctionType(_interceptors.JavaScriptObject, [])})
});
_interceptors.PlainJavaScriptObject = class PlainJavaScriptObject extends _interceptors.JavaScriptObject {
  new() {
    super.new();
  }
};
dart.setSignature(_interceptors.PlainJavaScriptObject, {
  constructors: () => ({new: dart.definiteFunctionType(_interceptors.PlainJavaScriptObject, [])})
});
_interceptors.UnknownJavaScriptObject = class UnknownJavaScriptObject extends _interceptors.JavaScriptObject {
  new() {
    super.new();
  }
  toString() {
    return String(this);
  }
};
dart.setSignature(_interceptors.UnknownJavaScriptObject, {
  constructors: () => ({new: dart.definiteFunctionType(_interceptors.UnknownJavaScriptObject, [])})
});
_interceptors.findInterceptorConstructorForType = function(type) {
};
dart.fn(_interceptors.findInterceptorConstructorForType, TypeTodynamic());
_interceptors.findConstructorForNativeSubclassType = function(type, name) {
};
dart.lazyFn(_interceptors.findConstructorForNativeSubclassType, () => TypeAndStringTodynamic());
_interceptors.getNativeInterceptor = function(object) {
};
dart.fn(_interceptors.getNativeInterceptor, dynamicTodynamic());
_interceptors.setDispatchProperty = function(object, value) {
};
dart.fn(_interceptors.setDispatchProperty, dynamicAnddynamicTodynamic());
const _removeWhere = Symbol('_removeWhere');
_interceptors.JSArray$ = dart.generic(E => {
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
  let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
  let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
  let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.functionType(E, [E, E])))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.functionType(E, [])))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let ReversedListIterableOfE = () => (ReversedListIterableOfE = dart.constFn(_internal.ReversedListIterable$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let ArrayIteratorOfE = () => (ArrayIteratorOfE = dart.constFn(_interceptors.ArrayIterator$(E)))();
  let ListMapViewOfE = () => (ListMapViewOfE = dart.constFn(_internal.ListMapView$(E)))();
  let JSIndexableOfE = () => (JSIndexableOfE = dart.constFn(_interceptors.JSIndexable$(E)))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  let EAndEToint = () => (EAndEToint = dart.constFn(dart.functionType(core.int, [E, E])))();
  dart.defineExtensionNames([
    'checkMutable',
    'checkGrowable',
    'add',
    'removeAt',
    'insert',
    'insertAll',
    'setAll',
    'removeLast',
    'remove',
    'removeWhere',
    'retainWhere',
    'where',
    'expand',
    'addAll',
    'clear',
    'forEach',
    'map',
    'join',
    'take',
    'takeWhile',
    'skip',
    'skipWhile',
    'reduce',
    'fold',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'elementAt',
    'sublist',
    'getRange',
    'first',
    'last',
    'single',
    'removeRange',
    'setRange',
    'fillRange',
    'replaceRange',
    'any',
    'every',
    'reversed',
    'sort',
    'shuffle',
    'indexOf',
    'lastIndexOf',
    'contains',
    'isEmpty',
    'isNotEmpty',
    'toString',
    'toList',
    'toSet',
    'iterator',
    'hashCode',
    'length',
    'length',
    '_get',
    '_set',
    'asMap'
  ]);
  class JSArray extends core.Object {
    new() {
    }
    static typed(allocation) {
      return dart.list(allocation, E);
    }
    static of(allocation) {
      return dart.setType(allocation, JSArray);
    }
    static markFixed(allocation) {
      return JSArrayOfE().typed(_interceptors.JSArray.markFixedList(core.List._check(allocation)));
    }
    static markGrowable(allocation) {
      return JSArrayOfE().typed(allocation);
    }
    static markFixedList(list) {
      list.fixed$length = Array;
      return list;
    }
    static markUnmodifiableList(list) {
      list.fixed$length = Array;
      list.immutable$list = Array;
      return list;
    }
    [dartx.checkMutable](reason) {
      if (this.immutable$list) {
        dart.throw(new core.UnsupportedError(core.String._check(reason)));
      }
    }
    [dartx.checkGrowable](reason) {
      if (this.fixed$length) {
        dart.throw(new core.UnsupportedError(core.String._check(reason)));
      }
    }
    [dartx.add](value) {
      E._check(value);
      this[dartx.checkGrowable]('add');
      this.push(value);
    }
    [dartx.removeAt](index) {
      this[dartx.checkGrowable]('removeAt');
      if (!(typeof index == 'number')) dart.throw(_js_helper.argumentErrorValue(index));
      if (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(this[dartx.length])) {
        dart.throw(new core.RangeError.value(index));
      }
      return this.splice(index, 1)[0];
    }
    [dartx.insert](index, value) {
      E._check(value);
      this[dartx.checkGrowable]('insert');
      if (!(typeof index == 'number')) dart.throw(_js_helper.argumentErrorValue(index));
      if (dart.notNull(index) < 0 || dart.notNull(index) > dart.notNull(this[dartx.length])) {
        dart.throw(new core.RangeError.value(index));
      }
      this.splice(index, 0, value);
    }
    [dartx.insertAll](index, iterable) {
      IterableOfE()._check(iterable);
      this[dartx.checkGrowable]('insertAll');
      core.RangeError.checkValueInInterval(index, 0, this[dartx.length], "index");
      if (!_internal.EfficientLength.is(iterable)) {
        iterable = iterable[dartx.toList]();
      }
      let insertionLength = iterable[dartx.length];
      this[dartx.length] = dart.notNull(this[dartx.length]) + dart.notNull(insertionLength);
      let end = dart.notNull(index) + dart.notNull(insertionLength);
      this[dartx.setRange](end, this[dartx.length], this, index);
      this[dartx.setRange](index, end, iterable);
    }
    [dartx.setAll](index, iterable) {
      IterableOfE()._check(iterable);
      this[dartx.checkMutable]('setAll');
      core.RangeError.checkValueInInterval(index, 0, this[dartx.length], "index");
      for (let element of iterable) {
        this[dartx._set]((() => {
          let x = index;
          index = dart.notNull(x) + 1;
          return x;
        })(), element);
      }
    }
    [dartx.removeLast]() {
      this[dartx.checkGrowable]('removeLast');
      if (this[dartx.length] == 0) dart.throw(_js_helper.diagnoseIndexError(this, -1));
      return this.pop();
    }
    [dartx.remove](element) {
      this[dartx.checkGrowable]('remove');
      for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
        if (dart.equals(this[dartx._get](i), element)) {
          this.splice(i, 1);
          return true;
        }
      }
      return false;
    }
    [dartx.removeWhere](test) {
      this[dartx.checkGrowable]('removeWhere');
      this[_removeWhere](test, true);
    }
    [dartx.retainWhere](test) {
      this[dartx.checkGrowable]('retainWhere');
      this[_removeWhere](test, false);
    }
    [_removeWhere](test, removeMatching) {
      let retained = [];
      let end = this[dartx.length];
      for (let i = 0; i < dart.notNull(end); i++) {
        let element = this[i];
        if (!dart.test(test(E._check(element))) == removeMatching) {
          retained[dartx.add](element);
        }
        if (this[dartx.length] != end) dart.throw(new core.ConcurrentModificationError(this));
      }
      if (retained[dartx.length] == end) return;
      this[dartx.length] = retained[dartx.length];
      for (let i = 0; i < dart.notNull(retained[dartx.length]); i++) {
        this[dartx._set](i, E._check(retained[dartx._get](i)));
      }
    }
    [dartx.where](f) {
      return new (WhereIterableOfE())(this, f);
    }
    [dartx.expand](T) {
      return f => {
        return new (_internal.ExpandIterable$(E, T))(this, f);
      };
    }
    [dartx.addAll](collection) {
      IterableOfE()._check(collection);
      let i = this[dartx.length];
      this[dartx.checkGrowable]('addAll');
      for (let e of collection) {
        dart.assert(i == this[dartx.length] || dart.test(dart.throw(new core.ConcurrentModificationError(this))));
        i = dart.notNull(i) + 1;
        this.push(e);
      }
    }
    [dartx.clear]() {
      this[dartx.length] = 0;
    }
    [dartx.forEach](f) {
      let end = this[dartx.length];
      for (let i = 0; i < dart.notNull(end); i++) {
        let element = this[i];
        f(element);
        if (this[dartx.length] != end) dart.throw(new core.ConcurrentModificationError(this));
      }
    }
    [dartx.map](T) {
      return f => {
        return new (_internal.MappedListIterable$(E, T))(this, f);
      };
    }
    [dartx.join](separator) {
      if (separator === void 0) separator = "";
      let list = core.List.new(this[dartx.length]);
      for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
        list[dartx._set](i, dart.str`${this[dartx._get](i)}`);
      }
      return list.join(separator);
    }
    [dartx.take](n) {
      return new (SubListIterableOfE())(this, 0, n);
    }
    [dartx.takeWhile](test) {
      return new (TakeWhileIterableOfE())(this, test);
    }
    [dartx.skip](n) {
      return new (SubListIterableOfE())(this, n, null);
    }
    [dartx.skipWhile](test) {
      return new (SkipWhileIterableOfE())(this, test);
    }
    [dartx.reduce](combine) {
      EAndEToE()._check(combine);
      let length = this[dartx.length];
      if (length == 0) dart.throw(_internal.IterableElementError.noElement());
      let value = this[dartx._get](0);
      for (let i = 1; i < dart.notNull(length); i++) {
        let element = this[i];
        value = combine(value, element);
        if (length != this[dartx.length]) dart.throw(new core.ConcurrentModificationError(this));
      }
      return value;
    }
    [dartx.fold](T) {
      return (initialValue, combine) => {
        let value = initialValue;
        let length = this[dartx.length];
        for (let i = 0; i < dart.notNull(length); i++) {
          let element = this[i];
          value = combine(value, element);
          if (this[dartx.length] != length) dart.throw(new core.ConcurrentModificationError(this));
        }
        return value;
      };
    }
    [dartx.firstWhere](test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let end = this[dartx.length];
      for (let i = 0; i < dart.notNull(end); ++i) {
        let element = this[i];
        if (dart.test(test(element))) return element;
        if (this[dartx.length] != end) dart.throw(new core.ConcurrentModificationError(this));
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    [dartx.lastWhere](test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this[dartx.length];
      for (let i = dart.notNull(length) - 1; i >= 0; i--) {
        let element = this[i];
        if (dart.test(test(element))) return element;
        if (length != this[dartx.length]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    [dartx.singleWhere](test) {
      let length = this[dartx.length];
      let match = null;
      let matchFound = false;
      for (let i = 0; i < dart.notNull(length); i++) {
        let element = this[i];
        if (dart.test(test(E._check(element)))) {
          if (matchFound) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          matchFound = true;
          match = E._check(element);
        }
        if (length != this[dartx.length]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      if (matchFound) return match;
      dart.throw(_internal.IterableElementError.noElement());
    }
    [dartx.elementAt](index) {
      return this[dartx._get](index);
    }
    [dartx.sublist](start, end) {
      if (end === void 0) end = null;
      _js_helper.checkNull(start);
      if (!(typeof start == 'number')) dart.throw(_js_helper.argumentErrorValue(start));
      if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(this[dartx.length])) {
        dart.throw(new core.RangeError.range(start, 0, this[dartx.length], "start"));
      }
      if (end == null) {
        end = this[dartx.length];
      } else {
        if (!(typeof end == 'number')) dart.throw(_js_helper.argumentErrorValue(end));
        if (dart.notNull(end) < dart.notNull(start) || dart.notNull(end) > dart.notNull(this[dartx.length])) {
          dart.throw(new core.RangeError.range(end, start, this[dartx.length], "end"));
        }
      }
      if (start == end) return JSArrayOfE().of([]);
      return JSArrayOfE().typed(this.slice(start, end));
    }
    [dartx.getRange](start, end) {
      core.RangeError.checkValidRange(start, end, this[dartx.length]);
      return new (SubListIterableOfE())(this, start, end);
    }
    get [dartx.first]() {
      if (dart.notNull(this[dartx.length]) > 0) return this[dartx._get](0);
      dart.throw(_internal.IterableElementError.noElement());
    }
    get [dartx.last]() {
      if (dart.notNull(this[dartx.length]) > 0) return this[dartx._get](dart.notNull(this[dartx.length]) - 1);
      dart.throw(_internal.IterableElementError.noElement());
    }
    get [dartx.single]() {
      if (this[dartx.length] == 1) return this[dartx._get](0);
      if (this[dartx.length] == 0) dart.throw(_internal.IterableElementError.noElement());
      dart.throw(_internal.IterableElementError.tooMany());
    }
    [dartx.removeRange](start, end) {
      this[dartx.checkGrowable]('removeRange');
      core.RangeError.checkValidRange(start, end, this[dartx.length]);
      let deleteCount = dart.notNull(end) - dart.notNull(start);
      this.splice(start, deleteCount);
    }
    [dartx.setRange](start, end, iterable, skipCount) {
      IterableOfE()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      this[dartx.checkMutable]('set range');
      core.RangeError.checkValidRange(start, end, this[dartx.length]);
      let length = dart.notNull(end) - dart.notNull(start);
      if (length == 0) return;
      core.RangeError.checkNotNegative(skipCount, "skipCount");
      let otherList = null;
      let otherStart = null;
      if (core.List.is(iterable)) {
        otherList = ListOfE()._check(iterable);
        otherStart = skipCount;
      } else {
        otherList = iterable[dartx.skip](skipCount)[dartx.toList]({growable: false});
        otherStart = 0;
      }
      if (dart.notNull(otherStart) + length > dart.notNull(otherList[dartx.length])) {
        dart.throw(_internal.IterableElementError.tooFew());
      }
      if (dart.notNull(otherStart) < dart.notNull(start)) {
        for (let i = length - 1; i >= 0; i--) {
          let element = otherList[dartx._get](dart.notNull(otherStart) + i);
          this[dart.notNull(start) + i] = element;
        }
      } else {
        for (let i = 0; i < length; i++) {
          let element = otherList[dartx._get](dart.notNull(otherStart) + i);
          this[dart.notNull(start) + i] = element;
        }
      }
    }
    [dartx.fillRange](start, end, fillValue) {
      if (fillValue === void 0) fillValue = null;
      E._check(fillValue);
      this[dartx.checkMutable]('fill range');
      core.RangeError.checkValidRange(start, end, this[dartx.length]);
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        this[i] = fillValue;
      }
    }
    [dartx.replaceRange](start, end, replacement) {
      IterableOfE()._check(replacement);
      this[dartx.checkGrowable]('replace range');
      core.RangeError.checkValidRange(start, end, this[dartx.length]);
      if (!_internal.EfficientLength.is(replacement)) {
        replacement = replacement[dartx.toList]();
      }
      let removeLength = dart.notNull(end) - dart.notNull(start);
      let insertLength = replacement[dartx.length];
      if (removeLength >= dart.notNull(insertLength)) {
        let delta = removeLength - dart.notNull(insertLength);
        let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
        let newLength = dart.notNull(this[dartx.length]) - delta;
        this[dartx.setRange](start, insertEnd, replacement);
        if (delta != 0) {
          this[dartx.setRange](insertEnd, newLength, this, end);
          this[dartx.length] = newLength;
        }
      } else {
        let delta = dart.notNull(insertLength) - removeLength;
        let newLength = dart.notNull(this[dartx.length]) + delta;
        let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
        this[dartx.length] = newLength;
        this[dartx.setRange](insertEnd, newLength, this, end);
        this[dartx.setRange](start, insertEnd, replacement);
      }
    }
    [dartx.any](test) {
      let end = this[dartx.length];
      for (let i = 0; i < dart.notNull(end); i++) {
        let element = this[i];
        if (dart.test(test(element))) return true;
        if (this[dartx.length] != end) dart.throw(new core.ConcurrentModificationError(this));
      }
      return false;
    }
    [dartx.every](test) {
      let end = this[dartx.length];
      for (let i = 0; i < dart.notNull(end); i++) {
        let element = this[i];
        if (!dart.test(test(element))) return false;
        if (this[dartx.length] != end) dart.throw(new core.ConcurrentModificationError(this));
      }
      return true;
    }
    get [dartx.reversed]() {
      return new (ReversedListIterableOfE())(this);
    }
    [dartx.sort](compare) {
      if (compare === void 0) compare = null;
      this[dartx.checkMutable]('sort');
      if (compare == null) {
        _internal.Sort.sort(E)(this, dart.fn((a, b) => core.Comparable.compare(core.Comparable._check(a), core.Comparable._check(b)), dynamicAnddynamicToint()));
      } else {
        _internal.Sort.sort(E)(this, compare);
      }
    }
    [dartx.shuffle](random) {
      if (random === void 0) random = null;
      this[dartx.checkMutable]('shuffle');
      if (random == null) random = math.Random.new();
      let length = this[dartx.length];
      while (dart.notNull(length) > 1) {
        let pos = random.nextInt(length);
        length = dart.notNull(length) - 1;
        let tmp = this[dartx._get](length);
        this[dartx._set](length, this[dartx._get](pos));
        this[dartx._set](pos, tmp);
      }
    }
    [dartx.indexOf](element, start) {
      if (start === void 0) start = 0;
      if (dart.notNull(start) >= dart.notNull(this[dartx.length])) {
        return -1;
      }
      if (dart.notNull(start) < 0) {
        start = 0;
      }
      for (let i = start; dart.notNull(i) < dart.notNull(this[dartx.length]); i = dart.notNull(i) + 1) {
        if (dart.equals(this[dartx._get](i), element)) {
          return i;
        }
      }
      return -1;
    }
    [dartx.lastIndexOf](element, startIndex) {
      if (startIndex === void 0) startIndex = null;
      if (startIndex == null) {
        startIndex = dart.notNull(this[dartx.length]) - 1;
      } else {
        if (dart.notNull(startIndex) < 0) {
          return -1;
        }
        if (dart.notNull(startIndex) >= dart.notNull(this[dartx.length])) {
          startIndex = dart.notNull(this[dartx.length]) - 1;
        }
      }
      for (let i = startIndex; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
        if (dart.equals(this[dartx._get](i), element)) {
          return i;
        }
      }
      return -1;
    }
    [dartx.contains](other) {
      for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
        if (dart.equals(this[dartx._get](i), other)) return true;
      }
      return false;
    }
    get [dartx.isEmpty]() {
      return this[dartx.length] == 0;
    }
    get [dartx.isNotEmpty]() {
      return !dart.test(this[dartx.isEmpty]);
    }
    [dartx.toString]() {
      return collection.ListBase.listToString(this);
    }
    [dartx.toList](opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let list = this.slice();
      if (!dart.test(growable)) _interceptors.JSArray.markFixedList(core.List._check(list));
      return JSArrayOfE().typed(list);
    }
    [dartx.toSet]() {
      return SetOfE().from(this);
    }
    get [dartx.iterator]() {
      return new (ArrayIteratorOfE())(this);
    }
    get [dartx.hashCode]() {
      return _js_helper.Primitives.objectHashCode(this);
    }
    get [dartx.length]() {
      return this.length;
    }
    set [dartx.length](newLength) {
      this[dartx.checkGrowable]('set length');
      if (!(typeof newLength == 'number')) {
        dart.throw(new core.ArgumentError.value(newLength, 'newLength'));
      }
      if (dart.notNull(newLength) < 0) {
        dart.throw(new core.RangeError.range(newLength, 0, null, 'newLength'));
      }
      this.length = newLength;
    }
    [dartx._get](index) {
      if (!(typeof index == 'number')) dart.throw(_js_helper.diagnoseIndexError(this, index));
      if (dart.notNull(index) >= dart.notNull(this[dartx.length]) || dart.notNull(index) < 0) dart.throw(_js_helper.diagnoseIndexError(this, index));
      return this[index];
    }
    [dartx._set](index, value) {
      E._check(value);
      this[dartx.checkMutable]('indexed set');
      if (!(typeof index == 'number')) dart.throw(_js_helper.diagnoseIndexError(this, index));
      if (dart.notNull(index) >= dart.notNull(this[dartx.length]) || dart.notNull(index) < 0) dart.throw(_js_helper.diagnoseIndexError(this, index));
      this[index] = value;
      return value;
    }
    [dartx.asMap]() {
      return new (ListMapViewOfE())(this);
    }
  }
  dart.setExtensionBaseClass(JSArray, dart.global.Array);
  dart.addTypeTests(JSArray);
  JSArray[dart.implements] = () => [ListOfE(), JSIndexableOfE()];
  dart.setSignature(JSArray, {
    constructors: () => ({
      new: dart.definiteFunctionType(_interceptors.JSArray$(E), []),
      typed: dart.definiteFunctionType(_interceptors.JSArray$(E), [dart.dynamic]),
      of: dart.definiteFunctionType(_interceptors.JSArray$(E), [dart.dynamic]),
      markFixed: dart.definiteFunctionType(_interceptors.JSArray$(E), [dart.dynamic]),
      markGrowable: dart.definiteFunctionType(_interceptors.JSArray$(E), [dart.dynamic])
    }),
    getters: () => ({
      [dartx.first]: dart.definiteFunctionType(E, []),
      [dartx.last]: dart.definiteFunctionType(E, []),
      [dartx.single]: dart.definiteFunctionType(E, []),
      [dartx.reversed]: dart.definiteFunctionType(core.Iterable$(E), []),
      [dartx.isEmpty]: dart.definiteFunctionType(core.bool, []),
      [dartx.isNotEmpty]: dart.definiteFunctionType(core.bool, []),
      [dartx.iterator]: dart.definiteFunctionType(core.Iterator$(E), []),
      [dartx.length]: dart.definiteFunctionType(core.int, [])
    }),
    setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
    methods: () => ({
      [dartx.checkMutable]: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
      [dartx.checkGrowable]: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
      [dartx.add]: dart.definiteFunctionType(dart.void, [E]),
      [dartx.removeAt]: dart.definiteFunctionType(E, [core.int]),
      [dartx.insert]: dart.definiteFunctionType(dart.void, [core.int, E]),
      [dartx.insertAll]: dart.definiteFunctionType(dart.void, [core.int, IterableOfE()]),
      [dartx.setAll]: dart.definiteFunctionType(dart.void, [core.int, IterableOfE()]),
      [dartx.removeLast]: dart.definiteFunctionType(E, []),
      [dartx.remove]: dart.definiteFunctionType(core.bool, [core.Object]),
      [dartx.removeWhere]: dart.definiteFunctionType(dart.void, [ETobool()]),
      [dartx.retainWhere]: dart.definiteFunctionType(dart.void, [ETobool()]),
      [_removeWhere]: dart.definiteFunctionType(dart.void, [ETobool(), core.bool]),
      [dartx.where]: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      [dartx.expand]: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(core.Iterable$(T), [E])]]),
      [dartx.addAll]: dart.definiteFunctionType(dart.void, [IterableOfE()]),
      [dartx.clear]: dart.definiteFunctionType(dart.void, []),
      [dartx.forEach]: dart.definiteFunctionType(dart.void, [ETovoid()]),
      [dartx.map]: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(T, [E])]]),
      [dartx.join]: dart.definiteFunctionType(core.String, [], [core.String]),
      [dartx.take]: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      [dartx.takeWhile]: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      [dartx.skip]: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      [dartx.skipWhile]: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      [dartx.reduce]: dart.definiteFunctionType(E, [EAndEToE()]),
      [dartx.fold]: dart.definiteFunctionType(T => [T, [T, dart.functionType(T, [T, E])]]),
      [dartx.firstWhere]: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      [dartx.lastWhere]: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      [dartx.singleWhere]: dart.definiteFunctionType(E, [ETobool()]),
      [dartx.elementAt]: dart.definiteFunctionType(E, [core.int]),
      [dartx.sublist]: dart.definiteFunctionType(core.List$(E), [core.int], [core.int]),
      [dartx.getRange]: dart.definiteFunctionType(core.Iterable$(E), [core.int, core.int]),
      [dartx.removeRange]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
      [dartx.setRange]: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfE()], [core.int]),
      [dartx.fillRange]: dart.definiteFunctionType(dart.void, [core.int, core.int], [E]),
      [dartx.replaceRange]: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfE()]),
      [dartx.any]: dart.definiteFunctionType(core.bool, [ETobool()]),
      [dartx.every]: dart.definiteFunctionType(core.bool, [ETobool()]),
      [dartx.sort]: dart.definiteFunctionType(dart.void, [], [EAndEToint()]),
      [dartx.shuffle]: dart.definiteFunctionType(dart.void, [], [math.Random]),
      [dartx.indexOf]: dart.definiteFunctionType(core.int, [core.Object], [core.int]),
      [dartx.lastIndexOf]: dart.definiteFunctionType(core.int, [core.Object], [core.int]),
      [dartx.contains]: dart.definiteFunctionType(core.bool, [core.Object]),
      [dartx.toList]: dart.definiteFunctionType(core.List$(E), [], {growable: core.bool}),
      [dartx.toSet]: dart.definiteFunctionType(core.Set$(E), []),
      [dartx._get]: dart.definiteFunctionType(E, [core.int]),
      [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, E]),
      [dartx.asMap]: dart.definiteFunctionType(core.Map$(core.int, E), [])
    }),
    statics: () => ({
      markFixedList: dart.definiteFunctionType(core.List, [core.List]),
      markUnmodifiableList: dart.definiteFunctionType(core.List, [core.List])
    }),
    names: ['markFixedList', 'markUnmodifiableList']
  });
  return JSArray;
});
_interceptors.JSArray = JSArray();
dart.registerExtension(dart.global.Array, _interceptors.JSArray);
_interceptors.JSMutableArray$ = dart.generic(E => {
  class JSMutableArray extends _interceptors.JSArray$(E) {
    new() {
      super.new();
    }
  }
  return JSMutableArray;
});
_interceptors.JSMutableArray = JSMutableArray();
_interceptors.JSFixedArray$ = dart.generic(E => {
  class JSFixedArray extends _interceptors.JSMutableArray$(E) {
    new() {
      super.new();
    }
  }
  return JSFixedArray;
});
_interceptors.JSFixedArray = JSFixedArray();
_interceptors.JSExtendableArray$ = dart.generic(E => {
  class JSExtendableArray extends _interceptors.JSMutableArray$(E) {
    new() {
      super.new();
    }
  }
  return JSExtendableArray;
});
_interceptors.JSExtendableArray = JSExtendableArray();
_interceptors.JSUnmodifiableArray$ = dart.generic(E => {
  class JSUnmodifiableArray extends _interceptors.JSArray$(E) {
    new() {
      super.new();
    }
  }
  return JSUnmodifiableArray;
});
_interceptors.JSUnmodifiableArray = JSUnmodifiableArray();
const _iterable = Symbol('_iterable');
const _length = Symbol('_length');
const _index = Symbol('_index');
const _current = Symbol('_current');
_interceptors.ArrayIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  class ArrayIterator extends core.Object {
    new(iterable) {
      this[_iterable] = iterable;
      this[_length] = iterable[dartx.length];
      this[_index] = 0;
      this[_current] = null;
    }
    get current() {
      return this[_current];
    }
    moveNext() {
      let length = this[_iterable][dartx.length];
      if (this[_length] != length) {
        dart.throw(_js_helper.throwConcurrentModificationError(this[_iterable]));
      }
      if (dart.notNull(this[_index]) >= dart.notNull(length)) {
        this[_current] = null;
        return false;
      }
      this[_current] = this[_iterable][dartx._get](this[_index]);
      this[_index] = dart.notNull(this[_index]) + 1;
      return true;
    }
  }
  dart.addTypeTests(ArrayIterator);
  ArrayIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(ArrayIterator, {
    constructors: () => ({new: dart.definiteFunctionType(_interceptors.ArrayIterator$(E), [JSArrayOfE()])}),
    fields: () => ({
      [_iterable]: JSArrayOfE(),
      [_length]: core.int,
      [_index]: core.int,
      [_current]: E
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return ArrayIterator;
});
_interceptors.ArrayIterator = ArrayIterator();
const _isInt32 = Symbol('_isInt32');
const _tdivSlow = Symbol('_tdivSlow');
const _shlPositive = Symbol('_shlPositive');
const _shrOtherPositive = Symbol('_shrOtherPositive');
const _shrBothPositive = Symbol('_shrBothPositive');
dart.defineExtensionNames([
  'compareTo',
  'isNegative',
  'isNaN',
  'isInfinite',
  'isFinite',
  'remainder',
  'abs',
  'sign',
  'toInt',
  'truncate',
  'ceil',
  'floor',
  'round',
  'ceilToDouble',
  'floorToDouble',
  'roundToDouble',
  'truncateToDouble',
  'clamp',
  'toDouble',
  'toStringAsFixed',
  'toStringAsExponential',
  'toStringAsPrecision',
  'toRadixString',
  'toString',
  'hashCode',
  '_negate',
  '+',
  '-',
  '/',
  '*',
  '%',
  '~/',
  '<<',
  '>>',
  '&',
  '|',
  '^',
  '<',
  '>',
  '<=',
  '>=',
  'isEven',
  'isOdd',
  'toUnsigned',
  'toSigned',
  'bitLength',
  'modPow',
  'modInverse',
  'gcd',
  '~'
]);
_interceptors.JSNumber = class JSNumber extends _interceptors.Interceptor {
  new() {
    super.new();
  }
  [dartx.compareTo](b) {
    if (this < dart.notNull(b)) {
      return -1;
    } else if (this > dart.notNull(b)) {
      return 1;
    } else if (this == b) {
      if (this == 0) {
        let bIsNegative = b[dartx.isNegative];
        if (this[dartx.isNegative] == bIsNegative) return 0;
        if (dart.test(this[dartx.isNegative])) return -1;
        return 1;
      }
      return 0;
    } else if (dart.test(this[dartx.isNaN])) {
      if (dart.test(b[dartx.isNaN])) {
        return 0;
      }
      return 1;
    } else {
      return -1;
    }
  }
  get [dartx.isNegative]() {
    return this == 0 ? 1 / this < 0 : this < 0;
  }
  get [dartx.isNaN]() {
    return isNaN(this);
  }
  get [dartx.isInfinite]() {
    return this == 1 / 0 || this == -1 / 0;
  }
  get [dartx.isFinite]() {
    return isFinite(this);
  }
  [dartx.remainder](b) {
    if (!(typeof b == 'number')) dart.throw(_js_helper.argumentErrorValue(b));
    return this % b;
  }
  [dartx.abs]() {
    return Math.abs(this);
  }
  get [dartx.sign]() {
    return this > 0 ? 1 : this < 0 ? -1 : this;
  }
  [dartx.toInt]() {
    if (this >= _interceptors.JSNumber._MIN_INT32 && this <= _interceptors.JSNumber._MAX_INT32) {
      return this | 0;
    }
    if (isFinite(this)) {
      return this[dartx.truncateToDouble]() + 0;
    }
    dart.throw(new core.UnsupportedError("" + this));
  }
  [dartx.truncate]() {
    return this[dartx.toInt]();
  }
  [dartx.ceil]() {
    return this[dartx.ceilToDouble]()[dartx.toInt]();
  }
  [dartx.floor]() {
    return this[dartx.floorToDouble]()[dartx.toInt]();
  }
  [dartx.round]() {
    if (this > 0) {
      if (this !== 1 / 0) {
        return Math.round(this);
      }
    } else if (this > -1 / 0) {
      return 0 - Math.round(0 - this);
    }
    dart.throw(new core.UnsupportedError("" + this));
  }
  [dartx.ceilToDouble]() {
    return Math.ceil(this);
  }
  [dartx.floorToDouble]() {
    return Math.floor(this);
  }
  [dartx.roundToDouble]() {
    if (this < 0) {
      return -Math.round(-this);
    } else {
      return Math.round(this);
    }
  }
  [dartx.truncateToDouble]() {
    return this < 0 ? this[dartx.ceilToDouble]() : this[dartx.floorToDouble]();
  }
  [dartx.clamp](lowerLimit, upperLimit) {
    if (dart.notNull(lowerLimit[dartx.compareTo](upperLimit)) > 0) {
      dart.throw(_js_helper.argumentErrorValue(lowerLimit));
    }
    if (dart.notNull(this[dartx.compareTo](lowerLimit)) < 0) return lowerLimit;
    if (dart.notNull(this[dartx.compareTo](upperLimit)) > 0) return upperLimit;
    return this;
  }
  [dartx.toDouble]() {
    return this;
  }
  [dartx.toStringAsFixed](fractionDigits) {
    _js_helper.checkInt(fractionDigits);
    if (dart.notNull(fractionDigits) < 0 || dart.notNull(fractionDigits) > 20) {
      dart.throw(new core.RangeError.range(fractionDigits, 0, 20, "fractionDigits"));
    }
    let result = this.toFixed(fractionDigits);
    if (this == 0 && dart.test(this[dartx.isNegative])) return dart.str`-${result}`;
    return result;
  }
  [dartx.toStringAsExponential](fractionDigits) {
    if (fractionDigits === void 0) fractionDigits = null;
    let result = null;
    if (fractionDigits != null) {
      _js_helper.checkInt(fractionDigits);
      if (dart.notNull(fractionDigits) < 0 || dart.notNull(fractionDigits) > 20) {
        dart.throw(new core.RangeError.range(fractionDigits, 0, 20, "fractionDigits"));
      }
      result = this.toExponential(fractionDigits);
    } else {
      result = this.toExponential();
    }
    if (this == 0 && dart.test(this[dartx.isNegative])) return dart.str`-${result}`;
    return result;
  }
  [dartx.toStringAsPrecision](precision) {
    _js_helper.checkInt(precision);
    if (dart.notNull(precision) < 1 || dart.notNull(precision) > 21) {
      dart.throw(new core.RangeError.range(precision, 1, 21, "precision"));
    }
    let result = this.toPrecision(precision);
    if (this == 0 && dart.test(this[dartx.isNegative])) return dart.str`-${result}`;
    return result;
  }
  [dartx.toRadixString](radix) {
    _js_helper.checkInt(radix);
    if (dart.notNull(radix) < 2 || dart.notNull(radix) > 36) {
      dart.throw(new core.RangeError.range(radix, 2, 36, "radix"));
    }
    let result = this.toString(radix);
    let rightParenCode = 41;
    if (result[dartx.codeUnitAt](dart.notNull(result[dartx.length]) - 1) != rightParenCode) {
      return result;
    }
    return _interceptors.JSNumber._handleIEtoString(result);
  }
  static _handleIEtoString(result) {
    let match = /^([\da-z]+)(?:\.([\da-z]+))?\(e\+(\d+)\)$/.exec(result);
    if (match == null) {
      dart.throw(new core.UnsupportedError(dart.str`Unexpected toString result: ${result}`));
    }
    result = dart.dindex(match, 1);
    let exponent = +dart.dindex(match, 3);
    if (dart.dindex(match, 2) != null) {
      result = result + dart.dindex(match, 2);
      exponent = exponent - dart.dindex(match, 2).length;
    }
    return dart.notNull(result) + "0"[dartx['*']](exponent);
  }
  [dartx.toString]() {
    if (this == 0 && 1 / this < 0) {
      return '-0.0';
    } else {
      return "" + this;
    }
  }
  get [dartx.hashCode]() {
    return this & 0x1FFFFFFF;
  }
  [dartx._negate]() {
    return -this;
  }
  [dartx['+']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    return this + other;
  }
  [dartx['-']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    return this - other;
  }
  [dartx['/']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    return this / other;
  }
  [dartx['*']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    return this * other;
  }
  [dartx['%']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    let result = this % other;
    if (result == 0) return 0;
    if (result > 0) return result;
    if (other < 0) {
      return result - other;
    } else {
      return result + other;
    }
  }
  [_isInt32](value) {
    return (value | 0) === value;
  }
  [dartx['~/']](other) {
    if (dart.test(this[_isInt32](this)) && dart.test(this[_isInt32](other)) && 0 != other && -1 != other) {
      return this / other | 0;
    } else {
      return this[_tdivSlow](other);
    }
  }
  [_tdivSlow](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    return (this / other)[dartx.toInt]();
  }
  [dartx['<<']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    if (other < 0) dart.throw(_js_helper.argumentErrorValue(other));
    return this[_shlPositive](other);
  }
  [_shlPositive](other) {
    return other > 31 ? 0 : this << other >>> 0;
  }
  [dartx['>>']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    if (other < 0) dart.throw(_js_helper.argumentErrorValue(other));
    return this[_shrOtherPositive](other);
  }
  [_shrOtherPositive](other) {
    return this > 0 ? this[_shrBothPositive](other) : this >> (dart.notNull(other) > 31 ? 31 : other) >>> 0;
  }
  [_shrBothPositive](other) {
    return other > 31 ? 0 : this >>> other;
  }
  [dartx['&']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    return (this & other) >>> 0;
  }
  [dartx['|']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    return (this | other) >>> 0;
  }
  [dartx['^']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    return (this ^ other) >>> 0;
  }
  [dartx['<']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    return this < other;
  }
  [dartx['>']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    return this > other;
  }
  [dartx['<=']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    return this <= other;
  }
  [dartx['>=']](other) {
    if (!(typeof other == 'number')) dart.throw(_js_helper.argumentErrorValue(other));
    return this >= other;
  }
  get [dartx.isEven]() {
    return (this & 1) == 0;
  }
  get [dartx.isOdd]() {
    return (this & 1) == 1;
  }
  [dartx.toUnsigned](width) {
    return (this & (1)[dartx['<<']](width) - 1) >>> 0;
  }
  [dartx.toSigned](width) {
    let signMask = (1)[dartx['<<']](dart.notNull(width) - 1);
    return ((this & signMask - 1) >>> 0) - ((this & signMask) >>> 0);
  }
  get [dartx.bitLength]() {
    let nonneg = this < 0 ? -this - 1 : this;
    if (nonneg >= 4294967296) {
      nonneg = (nonneg / 4294967296)[dartx.truncate]();
      return dart.notNull(_interceptors.JSNumber._bitCount(_interceptors.JSNumber._spread(nonneg))) + 32;
    }
    return _interceptors.JSNumber._bitCount(_interceptors.JSNumber._spread(nonneg));
  }
  [dartx.modPow](e, m) {
    if (!(typeof e == 'number')) {
      dart.throw(new core.ArgumentError.value(e, "exponent", "not an integer"));
    }
    if (!(typeof m == 'number')) {
      dart.throw(new core.ArgumentError.value(m, "modulus", "not an integer"));
    }
    if (dart.notNull(e) < 0) dart.throw(new core.RangeError.range(e, 0, null, "exponent"));
    if (dart.notNull(m) <= 0) dart.throw(new core.RangeError.range(m, 1, null, "modulus"));
    if (e == 0) return 1;
    let b = this;
    if (dart.notNull(b) < 0 || dart.notNull(b) > dart.notNull(m)) {
      b = b[dartx['%']](m);
    }
    let r = 1;
    while (dart.notNull(e) > 0) {
      if (dart.test(e[dartx.isOdd])) {
        r = (r * dart.notNull(b))[dartx['%']](m);
      }
      e = (dart.notNull(e) / 2)[dartx.truncate]();
      b = (dart.notNull(b) * dart.notNull(b))[dartx['%']](m);
    }
    return r;
  }
  static _binaryGcd(x, y, inv) {
    let s = 1;
    if (!dart.test(inv)) {
      while (dart.test(x[dartx.isEven]) && dart.test(y[dartx.isEven])) {
        x = (dart.notNull(x) / 2)[dartx.truncate]();
        y = (dart.notNull(y) / 2)[dartx.truncate]();
        s = s * 2;
      }
      if (dart.test(y[dartx.isOdd])) {
        let t = x;
        x = y;
        y = t;
      }
    }
    let ac = x[dartx.isEven];
    let u = x;
    let v = y;
    let a = 1, b = 0, c = 0, d = 1;
    do {
      while (dart.test(u[dartx.isEven])) {
        u = (dart.notNull(u) / 2)[dartx.truncate]();
        if (dart.test(ac)) {
          if (!dart.test(a[dartx.isEven]) || !dart.test(b[dartx.isEven])) {
            a = dart.notNull(a) + dart.notNull(y);
            b = dart.notNull(b) - dart.notNull(x);
          }
          a = (dart.notNull(a) / 2)[dartx.truncate]();
        } else if (!dart.test(b[dartx.isEven])) {
          b = dart.notNull(b) - dart.notNull(x);
        }
        b = (dart.notNull(b) / 2)[dartx.truncate]();
      }
      while (dart.test(v[dartx.isEven])) {
        v = (dart.notNull(v) / 2)[dartx.truncate]();
        if (dart.test(ac)) {
          if (!dart.test(c[dartx.isEven]) || !dart.test(d[dartx.isEven])) {
            c = dart.notNull(c) + dart.notNull(y);
            d = dart.notNull(d) - dart.notNull(x);
          }
          c = (dart.notNull(c) / 2)[dartx.truncate]();
        } else if (!dart.test(d[dartx.isEven])) {
          d = dart.notNull(d) - dart.notNull(x);
        }
        d = (dart.notNull(d) / 2)[dartx.truncate]();
      }
      if (dart.notNull(u) >= dart.notNull(v)) {
        u = dart.notNull(u) - dart.notNull(v);
        if (dart.test(ac)) {
          a = dart.notNull(a) - dart.notNull(c);
        }
        b = dart.notNull(b) - dart.notNull(d);
      } else {
        v = dart.notNull(v) - dart.notNull(u);
        if (dart.test(ac)) {
          c = dart.notNull(c) - dart.notNull(a);
        }
        d = dart.notNull(d) - dart.notNull(b);
      }
    } while (u != 0);
    if (!dart.test(inv)) return s * dart.notNull(v);
    if (v != 1) dart.throw(core.Exception.new("Not coprime"));
    if (dart.notNull(d) < 0) {
      d = dart.notNull(d) + dart.notNull(x);
      if (dart.notNull(d) < 0) {
        d = dart.notNull(d) + dart.notNull(x);
      }
    } else if (dart.notNull(d) > dart.notNull(x)) {
      d = dart.notNull(d) - dart.notNull(x);
      if (dart.notNull(d) > dart.notNull(x)) {
        d = dart.notNull(d) - dart.notNull(x);
      }
    }
    return d;
  }
  [dartx.modInverse](m) {
    if (!(typeof m == 'number')) {
      dart.throw(new core.ArgumentError.value(m, "modulus", "not an integer"));
    }
    if (dart.notNull(m) <= 0) dart.throw(new core.RangeError.range(m, 1, null, "modulus"));
    if (m == 1) return 0;
    let t = this;
    if (dart.notNull(t) < 0 || dart.notNull(t) >= dart.notNull(m)) {
      t = t[dartx['%']](m);
    }
    if (t == 1) return 1;
    if (t == 0 || dart.test(t[dartx.isEven]) && dart.test(m[dartx.isEven])) {
      dart.throw(core.Exception.new("Not coprime"));
    }
    return _interceptors.JSNumber._binaryGcd(m, t, true);
  }
  [dartx.gcd](other) {
    if (!(typeof other == 'number')) {
      dart.throw(new core.ArgumentError.value(other, "other", "not an integer"));
    }
    let x = this[dartx.abs]();
    let y = other[dartx.abs]();
    if (x == 0) return y;
    if (y == 0) return x;
    if (x == 1 || y == 1) return 1;
    return _interceptors.JSNumber._binaryGcd(x, y, false);
  }
  static _bitCount(i) {
    i = dart.notNull(_interceptors.JSNumber._shru(i, 0)) - (dart.notNull(_interceptors.JSNumber._shru(i, 1)) & 1431655765);
    i = (dart.notNull(i) & 858993459) + (dart.notNull(_interceptors.JSNumber._shru(i, 2)) & 858993459);
    i = 252645135 & dart.notNull(i) + dart.notNull(_interceptors.JSNumber._shru(i, 4));
    i = dart.notNull(i) + dart.notNull(_interceptors.JSNumber._shru(i, 8));
    i = dart.notNull(i) + dart.notNull(_interceptors.JSNumber._shru(i, 16));
    return dart.notNull(i) & 63;
  }
  static _shru(value, shift) {
    return value >>> shift;
  }
  static _shrs(value, shift) {
    return value >> shift;
  }
  static _ors(a, b) {
    return a | b;
  }
  static _spread(i) {
    i = _interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 1));
    i = _interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 2));
    i = _interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 4));
    i = _interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 8));
    i = _interceptors.JSNumber._shru(_interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 16)), 0);
    return i;
  }
  [dartx['~']]() {
    return ~this >>> 0;
  }
};
_interceptors.JSNumber[dart.implements] = () => [core.int, core.double];
dart.setSignature(_interceptors.JSNumber, {
  constructors: () => ({new: dart.definiteFunctionType(_interceptors.JSNumber, [])}),
  getters: () => ({
    [dartx.isNegative]: dart.definiteFunctionType(core.bool, []),
    [dartx.isNaN]: dart.definiteFunctionType(core.bool, []),
    [dartx.isInfinite]: dart.definiteFunctionType(core.bool, []),
    [dartx.isFinite]: dart.definiteFunctionType(core.bool, []),
    [dartx.sign]: dart.definiteFunctionType(_interceptors.JSNumber, []),
    [dartx.isEven]: dart.definiteFunctionType(core.bool, []),
    [dartx.isOdd]: dart.definiteFunctionType(core.bool, []),
    [dartx.bitLength]: dart.definiteFunctionType(core.int, [])
  }),
  methods: () => ({
    [dartx.compareTo]: dart.definiteFunctionType(core.int, [core.num]),
    [dartx.remainder]: dart.definiteFunctionType(_interceptors.JSNumber, [core.num]),
    [dartx.abs]: dart.definiteFunctionType(_interceptors.JSNumber, []),
    [dartx.toInt]: dart.definiteFunctionType(core.int, []),
    [dartx.truncate]: dart.definiteFunctionType(core.int, []),
    [dartx.ceil]: dart.definiteFunctionType(core.int, []),
    [dartx.floor]: dart.definiteFunctionType(core.int, []),
    [dartx.round]: dart.definiteFunctionType(core.int, []),
    [dartx.ceilToDouble]: dart.definiteFunctionType(core.double, []),
    [dartx.floorToDouble]: dart.definiteFunctionType(core.double, []),
    [dartx.roundToDouble]: dart.definiteFunctionType(core.double, []),
    [dartx.truncateToDouble]: dart.definiteFunctionType(core.double, []),
    [dartx.clamp]: dart.definiteFunctionType(core.num, [core.num, core.num]),
    [dartx.toDouble]: dart.definiteFunctionType(core.double, []),
    [dartx.toStringAsFixed]: dart.definiteFunctionType(core.String, [core.int]),
    [dartx.toStringAsExponential]: dart.definiteFunctionType(core.String, [], [core.int]),
    [dartx.toStringAsPrecision]: dart.definiteFunctionType(core.String, [core.int]),
    [dartx.toRadixString]: dart.definiteFunctionType(core.String, [core.int]),
    [dartx._negate]: dart.definiteFunctionType(_interceptors.JSNumber, []),
    [dartx['+']]: dart.definiteFunctionType(_interceptors.JSNumber, [core.num]),
    [dartx['-']]: dart.definiteFunctionType(_interceptors.JSNumber, [core.num]),
    [dartx['/']]: dart.definiteFunctionType(core.double, [core.num]),
    [dartx['*']]: dart.definiteFunctionType(_interceptors.JSNumber, [core.num]),
    [dartx['%']]: dart.definiteFunctionType(_interceptors.JSNumber, [core.num]),
    [_isInt32]: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    [dartx['~/']]: dart.definiteFunctionType(core.int, [core.num]),
    [_tdivSlow]: dart.definiteFunctionType(core.int, [core.num]),
    [dartx['<<']]: dart.definiteFunctionType(core.int, [core.num]),
    [_shlPositive]: dart.definiteFunctionType(core.int, [core.num]),
    [dartx['>>']]: dart.definiteFunctionType(core.int, [core.num]),
    [_shrOtherPositive]: dart.definiteFunctionType(core.int, [core.num]),
    [_shrBothPositive]: dart.definiteFunctionType(core.int, [core.num]),
    [dartx['&']]: dart.definiteFunctionType(core.int, [core.num]),
    [dartx['|']]: dart.definiteFunctionType(core.int, [core.num]),
    [dartx['^']]: dart.definiteFunctionType(core.int, [core.num]),
    [dartx['<']]: dart.definiteFunctionType(core.bool, [core.num]),
    [dartx['>']]: dart.definiteFunctionType(core.bool, [core.num]),
    [dartx['<=']]: dart.definiteFunctionType(core.bool, [core.num]),
    [dartx['>=']]: dart.definiteFunctionType(core.bool, [core.num]),
    [dartx.toUnsigned]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.toSigned]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.modPow]: dart.definiteFunctionType(core.int, [core.int, core.int]),
    [dartx.modInverse]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.gcd]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx['~']]: dart.definiteFunctionType(core.int, [])
  }),
  sfields: () => ({
    _MIN_INT32: core.int,
    _MAX_INT32: core.int
  }),
  statics: () => ({
    _handleIEtoString: dart.definiteFunctionType(core.String, [core.String]),
    _binaryGcd: dart.definiteFunctionType(core.int, [core.int, core.int, core.bool]),
    _bitCount: dart.definiteFunctionType(core.int, [core.int]),
    _shru: dart.definiteFunctionType(core.int, [core.int, core.int]),
    _shrs: dart.definiteFunctionType(core.int, [core.int, core.int]),
    _ors: dart.definiteFunctionType(core.int, [core.int, core.int]),
    _spread: dart.definiteFunctionType(core.int, [core.int])
  }),
  names: ['_handleIEtoString', '_binaryGcd', '_bitCount', '_shru', '_shrs', '_ors', '_spread']
});
_interceptors.JSNumber._MIN_INT32 = -2147483648;
_interceptors.JSNumber._MAX_INT32 = 2147483647;
dart.registerExtension(dart.global.Number, _interceptors.JSNumber);
const _defaultSplit = Symbol('_defaultSplit');
let const;
dart.defineExtensionNames([
  'codeUnitAt',
  'allMatches',
  'matchAsPrefix',
  '+',
  'endsWith',
  'replaceAll',
  'replaceAllMapped',
  'splitMapJoin',
  'replaceFirst',
  'replaceFirstMapped',
  'split',
  'replaceRange',
  'startsWith',
  'substring',
  'toLowerCase',
  'toUpperCase',
  'trim',
  'trimLeft',
  'trimRight',
  '*',
  'padLeft',
  'padRight',
  'codeUnits',
  'runes',
  'indexOf',
  'lastIndexOf',
  'contains',
  'isEmpty',
  'isNotEmpty',
  'compareTo',
  'toString',
  'hashCode',
  'runtimeType',
  'length',
  '_get'
]);
_interceptors.JSString = class JSString extends _interceptors.Interceptor {
  new() {
    super.new();
  }
  [dartx.codeUnitAt](index) {
    if (!(typeof index == 'number')) dart.throw(_js_helper.diagnoseIndexError(this, index));
    if (dart.notNull(index) < 0) dart.throw(_js_helper.diagnoseIndexError(this, index));
    if (dart.notNull(index) >= dart.notNull(this[dartx.length])) dart.throw(_js_helper.diagnoseIndexError(this, index));
    return this.charCodeAt(index);
  }
  [dartx.allMatches](string, start) {
    if (start === void 0) start = 0;
    _js_helper.checkString(string);
    _js_helper.checkInt(start);
    if (0 > dart.notNull(start) || dart.notNull(start) > dart.notNull(string[dartx.length])) {
      dart.throw(new core.RangeError.range(start, 0, string[dartx.length]));
    }
    return _js_helper.allMatchesInStringUnchecked(this, string, start);
  }
  [dartx.matchAsPrefix](string, start) {
    if (start === void 0) start = 0;
    if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(string[dartx.length])) {
      dart.throw(new core.RangeError.range(start, 0, string[dartx.length]));
    }
    if (dart.notNull(start) + dart.notNull(this[dartx.length]) > dart.notNull(string[dartx.length])) return null;
    for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
      if (string[dartx.codeUnitAt](dart.notNull(start) + i) != this[dartx.codeUnitAt](i)) {
        return null;
      }
    }
    return new _js_helper.StringMatch(start, string, this);
  }
  [dartx['+']](other) {
    if (!(typeof other == 'string')) dart.throw(new core.ArgumentError.value(other));
    return this + other;
  }
  [dartx.endsWith](other) {
    _js_helper.checkString(other);
    let otherLength = other[dartx.length];
    if (dart.notNull(otherLength) > dart.notNull(this[dartx.length])) return false;
    return other == this[dartx.substring](dart.notNull(this[dartx.length]) - dart.notNull(otherLength));
  }
  [dartx.replaceAll](from, to) {
    _js_helper.checkString(to);
    return _js_helper.stringReplaceAllUnchecked(this, from, to);
  }
  [dartx.replaceAllMapped](from, convert) {
    return this[dartx.splitMapJoin](from, {onMatch: convert});
  }
  [dartx.splitMapJoin](from, opts) {
    let onMatch = opts && 'onMatch' in opts ? opts.onMatch : null;
    let onNonMatch = opts && 'onNonMatch' in opts ? opts.onNonMatch : null;
    return _js_helper.stringReplaceAllFuncUnchecked(this, from, onMatch, onNonMatch);
  }
  [dartx.replaceFirst](from, to, startIndex) {
    if (startIndex === void 0) startIndex = 0;
    _js_helper.checkString(to);
    _js_helper.checkInt(startIndex);
    core.RangeError.checkValueInInterval(startIndex, 0, this[dartx.length], "startIndex");
    return _js_helper.stringReplaceFirstUnchecked(this, from, to, startIndex);
  }
  [dartx.replaceFirstMapped](from, replace, startIndex) {
    if (startIndex === void 0) startIndex = 0;
    _js_helper.checkNull(replace);
    _js_helper.checkInt(startIndex);
    core.RangeError.checkValueInInterval(startIndex, 0, this[dartx.length], "startIndex");
    return _js_helper.stringReplaceFirstMappedUnchecked(this, from, replace, startIndex);
  }
  [dartx.split](pattern) {
    _js_helper.checkNull(pattern);
    if (typeof pattern == 'string') {
      return this.split(pattern);
    } else if (_js_helper.JSSyntaxRegExp.is(pattern) && _js_helper.regExpCaptureCount(pattern) == 0) {
      let re = _js_helper.regExpGetNative(pattern);
      return this.split(re);
    } else {
      return this[_defaultSplit](pattern);
    }
  }
  [dartx.replaceRange](start, end, replacement) {
    _js_helper.checkString(replacement);
    _js_helper.checkInt(start);
    end = core.RangeError.checkValidRange(start, end, this[dartx.length]);
    _js_helper.checkInt(end);
    return _js_helper.stringReplaceRangeUnchecked(this, start, end, replacement);
  }
  [_defaultSplit](pattern) {
    let result = JSArrayOfString().of([]);
    let start = 0;
    let length = 1;
    for (let match of pattern[dartx.allMatches](this)) {
      let matchStart = match.start;
      let matchEnd = match.end;
      length = dart.notNull(matchEnd) - dart.notNull(matchStart);
      if (length == 0 && start == matchStart) {
        continue;
      }
      let end = matchStart;
      result[dartx.add](this[dartx.substring](start, end));
      start = matchEnd;
    }
    if (dart.notNull(start) < dart.notNull(this[dartx.length]) || length > 0) {
      result[dartx.add](this[dartx.substring](start));
    }
    return result;
  }
  [dartx.startsWith](pattern, index) {
    if (index === void 0) index = 0;
    _js_helper.checkInt(index);
    if (dart.notNull(index) < 0 || dart.notNull(index) > dart.notNull(this[dartx.length])) {
      dart.throw(new core.RangeError.range(index, 0, this[dartx.length]));
    }
    if (typeof pattern == 'string') {
      let other = pattern;
      let otherLength = other[dartx.length];
      let endIndex = dart.notNull(index) + dart.notNull(otherLength);
      if (endIndex > dart.notNull(this[dartx.length])) return false;
      return other == this.substring(index, endIndex);
    }
    return pattern[dartx.matchAsPrefix](this, index) != null;
  }
  [dartx.substring](startIndex, endIndex) {
    if (endIndex === void 0) endIndex = null;
    _js_helper.checkInt(startIndex);
    if (endIndex == null) endIndex = this[dartx.length];
    _js_helper.checkInt(endIndex);
    if (dart.notNull(startIndex) < 0) dart.throw(new core.RangeError.value(startIndex));
    if (dart.notNull(startIndex) > dart.notNull(endIndex)) dart.throw(new core.RangeError.value(startIndex));
    if (dart.notNull(endIndex) > dart.notNull(this[dartx.length])) dart.throw(new core.RangeError.value(endIndex));
    return this.substring(startIndex, endIndex);
  }
  [dartx.toLowerCase]() {
    return this.toLowerCase();
  }
  [dartx.toUpperCase]() {
    return this.toUpperCase();
  }
  static _isWhitespace(codeUnit) {
    if (dart.notNull(codeUnit) < 256) {
      switch (codeUnit) {
        case 9:
        case 10:
        case 11:
        case 12:
        case 13:
        case 32:
        case 133:
        case 160:
        {
          return true;
        }
        default:
        {
          return false;
        }
      }
    }
    switch (codeUnit) {
      case 5760:
      case 6158:
      case 8192:
      case 8193:
      case 8194:
      case 8195:
      case 8196:
      case 8197:
      case 8198:
      case 8199:
      case 8200:
      case 8201:
      case 8202:
      case 8232:
      case 8233:
      case 8239:
      case 8287:
      case 12288:
      case 65279:
      {
        return true;
      }
      default:
      {
        return false;
      }
    }
  }
  static _skipLeadingWhitespace(string, index) {
    let SPACE = 32;
    let CARRIAGE_RETURN = 13;
    while (dart.notNull(index) < dart.notNull(string[dartx.length])) {
      let codeUnit = string[dartx.codeUnitAt](index);
      if (codeUnit != SPACE && codeUnit != CARRIAGE_RETURN && !dart.test(_interceptors.JSString._isWhitespace(codeUnit))) {
        break;
      }
      index = dart.notNull(index) + 1;
    }
    return index;
  }
  static _skipTrailingWhitespace(string, index) {
    let SPACE = 32;
    let CARRIAGE_RETURN = 13;
    while (dart.notNull(index) > 0) {
      let codeUnit = string[dartx.codeUnitAt](dart.notNull(index) - 1);
      if (codeUnit != SPACE && codeUnit != CARRIAGE_RETURN && !dart.test(_interceptors.JSString._isWhitespace(codeUnit))) {
        break;
      }
      index = dart.notNull(index) - 1;
    }
    return index;
  }
  [dartx.trim]() {
    let NEL = 133;
    let result = this.trim();
    if (result[dartx.length] == 0) return result;
    let firstCode = result[dartx.codeUnitAt](0);
    let startIndex = 0;
    if (firstCode == NEL) {
      startIndex = _interceptors.JSString._skipLeadingWhitespace(result, 1);
      if (startIndex == result[dartx.length]) return "";
    }
    let endIndex = result[dartx.length];
    let lastCode = result[dartx.codeUnitAt](dart.notNull(endIndex) - 1);
    if (lastCode == NEL) {
      endIndex = _interceptors.JSString._skipTrailingWhitespace(result, dart.notNull(endIndex) - 1);
    }
    if (startIndex == 0 && endIndex == result[dartx.length]) return result;
    return result.substring(startIndex, endIndex);
  }
  [dartx.trimLeft]() {
    let NEL = 133;
    let result = null;
    let startIndex = 0;
    if (typeof this.trimLeft != "undefined") {
      result = this.trimLeft();
      if (result[dartx.length] == 0) return result;
      let firstCode = result[dartx.codeUnitAt](0);
      if (firstCode == NEL) {
        startIndex = _interceptors.JSString._skipLeadingWhitespace(result, 1);
      }
    } else {
      result = this;
      startIndex = _interceptors.JSString._skipLeadingWhitespace(this, 0);
    }
    if (startIndex == 0) return result;
    if (startIndex == result[dartx.length]) return "";
    return result.substring(startIndex);
  }
  [dartx.trimRight]() {
    let NEL = 133;
    let result = null;
    let endIndex = null;
    if (typeof this.trimRight != "undefined") {
      result = this.trimRight();
      endIndex = result[dartx.length];
      if (endIndex == 0) return result;
      let lastCode = result[dartx.codeUnitAt](dart.notNull(endIndex) - 1);
      if (lastCode == NEL) {
        endIndex = _interceptors.JSString._skipTrailingWhitespace(result, dart.notNull(endIndex) - 1);
      }
    } else {
      result = this;
      endIndex = _interceptors.JSString._skipTrailingWhitespace(this, this[dartx.length]);
    }
    if (endIndex == result[dartx.length]) return result;
    if (endIndex == 0) return "";
    return result.substring(0, endIndex);
  }
  [dartx['*']](times) {
    if (0 >= dart.notNull(times)) return '';
    if (times == 1 || this[dartx.length] == 0) return this;
    if (times != times >>> 0) {
      dart.throw(const || (const = dart.const(new core.OutOfMemoryError())));
    }
    let result = '';
    let s = this;
    while (true) {
      if ((dart.notNull(times) & 1) == 1) result = s + result;
      times = times >>> 1;
      if (times == 0) break;
      s = s + s;
    }
    return result;
  }
  [dartx.padLeft](width, padding) {
    if (padding === void 0) padding = ' ';
    let delta = dart.notNull(width) - dart.notNull(this[dartx.length]);
    if (delta <= 0) return this;
    return padding[dartx['*']](delta) + this;
  }
  [dartx.padRight](width, padding) {
    if (padding === void 0) padding = ' ';
    let delta = dart.notNull(width) - dart.notNull(this[dartx.length]);
    if (delta <= 0) return this;
    return this[dartx['+']](padding[dartx['*']](delta));
  }
  get [dartx.codeUnits]() {
    return new _internal.CodeUnits(this);
  }
  get [dartx.runes]() {
    return new core.Runes(this);
  }
  [dartx.indexOf](pattern, start) {
    if (start === void 0) start = 0;
    _js_helper.checkNull(pattern);
    if (!(typeof start == 'number')) dart.throw(_js_helper.argumentErrorValue(start));
    if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(this[dartx.length])) {
      dart.throw(new core.RangeError.range(start, 0, this[dartx.length]));
    }
    if (typeof pattern == 'string') {
      return _js_helper.stringIndexOfStringUnchecked(this, pattern, start);
    }
    if (_js_helper.JSSyntaxRegExp.is(pattern)) {
      let re = pattern;
      let match = _js_helper.firstMatchAfter(re, this, start);
      return match == null ? -1 : match.start;
    }
    for (let i = start; dart.notNull(i) <= dart.notNull(this[dartx.length]); i = dart.notNull(i) + 1) {
      if (pattern[dartx.matchAsPrefix](this, i) != null) return i;
    }
    return -1;
  }
  [dartx.lastIndexOf](pattern, start) {
    if (start === void 0) start = null;
    _js_helper.checkNull(pattern);
    if (start == null) {
      start = this[dartx.length];
    } else if (!(typeof start == 'number')) {
      dart.throw(_js_helper.argumentErrorValue(start));
    } else if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(this[dartx.length])) {
      dart.throw(new core.RangeError.range(start, 0, this[dartx.length]));
    }
    if (typeof pattern == 'string') {
      let other = pattern;
      if (dart.notNull(start) + dart.notNull(other[dartx.length]) > dart.notNull(this[dartx.length])) {
        start = dart.notNull(this[dartx.length]) - dart.notNull(other[dartx.length]);
      }
      return core.int._check(_js_helper.stringLastIndexOfUnchecked(this, other, start));
    }
    for (let i = start; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
      if (pattern[dartx.matchAsPrefix](this, i) != null) return i;
    }
    return -1;
  }
  [dartx.contains](other, startIndex) {
    if (startIndex === void 0) startIndex = 0;
    _js_helper.checkNull(other);
    if (dart.notNull(startIndex) < 0 || dart.notNull(startIndex) > dart.notNull(this[dartx.length])) {
      dart.throw(new core.RangeError.range(startIndex, 0, this[dartx.length]));
    }
    return _js_helper.stringContainsUnchecked(this, other, startIndex);
  }
  get [dartx.isEmpty]() {
    return this[dartx.length] == 0;
  }
  get [dartx.isNotEmpty]() {
    return !dart.test(this[dartx.isEmpty]);
  }
  [dartx.compareTo](other) {
    if (!(typeof other == 'string')) dart.throw(_js_helper.argumentErrorValue(other));
    return dart.equals(this, other) ? 0 : this < other ? -1 : 1;
  }
  [dartx.toString]() {
    return this;
  }
  get [dartx.hashCode]() {
    let hash = 0;
    for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
      hash = 536870911 & hash + this.charCodeAt(i);
      hash = 536870911 & hash + ((524287 & hash) << 10);
      hash = hash ^ hash >> 6;
    }
    hash = 536870911 & hash + ((67108863 & hash) << 3);
    hash = hash ^ hash >> 11;
    return 536870911 & hash + ((16383 & hash) << 15);
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(core.String);
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (!(typeof index == 'number')) dart.throw(_js_helper.diagnoseIndexError(this, index));
    if (dart.notNull(index) >= dart.notNull(this[dartx.length]) || dart.notNull(index) < 0) dart.throw(_js_helper.diagnoseIndexError(this, index));
    return this[index];
  }
};
_interceptors.JSString[dart.implements] = () => [core.String, JSIndexableOfString()];
dart.setSignature(_interceptors.JSString, {
  constructors: () => ({new: dart.definiteFunctionType(_interceptors.JSString, [])}),
  getters: () => ({
    [dartx.codeUnits]: dart.definiteFunctionType(core.List$(core.int), []),
    [dartx.runes]: dart.definiteFunctionType(core.Runes, []),
    [dartx.isEmpty]: dart.definiteFunctionType(core.bool, []),
    [dartx.isNotEmpty]: dart.definiteFunctionType(core.bool, []),
    [dartx.length]: dart.definiteFunctionType(core.int, [])
  }),
  methods: () => ({
    [dartx.codeUnitAt]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.allMatches]: dart.definiteFunctionType(core.Iterable$(core.Match), [core.String], [core.int]),
    [dartx.matchAsPrefix]: dart.definiteFunctionType(core.Match, [core.String], [core.int]),
    [dartx['+']]: dart.definiteFunctionType(core.String, [core.String]),
    [dartx.endsWith]: dart.definiteFunctionType(core.bool, [core.String]),
    [dartx.replaceAll]: dart.definiteFunctionType(core.String, [core.Pattern, core.String]),
    [dartx.replaceAllMapped]: dart.definiteFunctionType(core.String, [core.Pattern, MatchToString()]),
    [dartx.splitMapJoin]: dart.definiteFunctionType(core.String, [core.Pattern], {onMatch: MatchToString(), onNonMatch: StringToString()}),
    [dartx.replaceFirst]: dart.definiteFunctionType(core.String, [core.Pattern, core.String], [core.int]),
    [dartx.replaceFirstMapped]: dart.definiteFunctionType(core.String, [core.Pattern, MatchToString()], [core.int]),
    [dartx.split]: dart.definiteFunctionType(core.List$(core.String), [core.Pattern]),
    [dartx.replaceRange]: dart.definiteFunctionType(core.String, [core.int, core.int, core.String]),
    [_defaultSplit]: dart.definiteFunctionType(core.List$(core.String), [core.Pattern]),
    [dartx.startsWith]: dart.definiteFunctionType(core.bool, [core.Pattern], [core.int]),
    [dartx.substring]: dart.definiteFunctionType(core.String, [core.int], [core.int]),
    [dartx.toLowerCase]: dart.definiteFunctionType(core.String, []),
    [dartx.toUpperCase]: dart.definiteFunctionType(core.String, []),
    [dartx.trim]: dart.definiteFunctionType(core.String, []),
    [dartx.trimLeft]: dart.definiteFunctionType(core.String, []),
    [dartx.trimRight]: dart.definiteFunctionType(core.String, []),
    [dartx['*']]: dart.definiteFunctionType(core.String, [core.int]),
    [dartx.padLeft]: dart.definiteFunctionType(core.String, [core.int], [core.String]),
    [dartx.padRight]: dart.definiteFunctionType(core.String, [core.int], [core.String]),
    [dartx.indexOf]: dart.definiteFunctionType(core.int, [core.Pattern], [core.int]),
    [dartx.lastIndexOf]: dart.definiteFunctionType(core.int, [core.Pattern], [core.int]),
    [dartx.contains]: dart.definiteFunctionType(core.bool, [core.Pattern], [core.int]),
    [dartx.compareTo]: dart.definiteFunctionType(core.int, [core.String]),
    [dartx._get]: dart.definiteFunctionType(core.String, [core.int])
  }),
  statics: () => ({
    _isWhitespace: dart.definiteFunctionType(core.bool, [core.int]),
    _skipLeadingWhitespace: dart.definiteFunctionType(core.int, [core.String, core.int]),
    _skipTrailingWhitespace: dart.definiteFunctionType(core.int, [core.String, core.int])
  }),
  names: ['_isWhitespace', '_skipLeadingWhitespace', '_skipTrailingWhitespace']
});
dart.registerExtension(dart.global.String, _interceptors.JSString);
core.num = class num extends core.Object {
  static parse(input, onError) {
    if (onError === void 0) onError = null;
    let source = input[dartx.trim]();
    let result = core.int.parse(source, {onError: core.num._returnIntNull});
    if (result != null) return result;
    result = core.double.parse(source, core.num._returnDoubleNull);
    if (result != null) return result;
    if (onError == null) dart.throw(new core.FormatException(input));
    return onError(input);
  }
  static _returnIntNull(_) {
    return null;
  }
  static _returnDoubleNull(_) {
    return null;
  }
};
core.num.is = function is_num(o) {
  return typeof o == "number";
};
core.num.as = function as_num(o) {
  if (typeof o == "number" || o == null) return o;
  return dart.as(o, core.num);
};
core.num._check = function check_num(o) {
  if (typeof o == "number" || o == null) return o;
  return dart.check(o, core.num);
};
core.num[dart.implements] = () => [ComparableOfnum()];
dart.setSignature(core.num, {
  statics: () => ({
    parse: dart.definiteFunctionType(core.num, [core.String], [StringTonum()]),
    _returnIntNull: dart.definiteFunctionType(core.int, [core.String]),
    _returnDoubleNull: dart.definiteFunctionType(core.double, [core.String])
  }),
  names: ['parse', '_returnIntNull', '_returnDoubleNull']
});
core.double = class double extends core.num {
  static parse(source, onError) {
    if (onError === void 0) onError = null;
    return _js_helper.Primitives.parseDouble(source, onError);
  }
};
dart.setSignature(core.double, {
  sfields: () => ({
    NAN: core.double,
    INFINITY: core.double,
    NEGATIVE_INFINITY: core.double,
    MIN_POSITIVE: core.double,
    MAX_FINITE: core.double
  }),
  statics: () => ({parse: dart.definiteFunctionType(core.double, [core.String], [StringTodouble()])}),
  names: ['parse']
});
core.double.NAN = 0.0 / 0.0;
core.double.INFINITY = 1.0 / 0.0;
core.double.MIN_POSITIVE = 5e-324;
core.double.MAX_FINITE = 1.7976931348623157e+308;
dart.defineLazy(core.double, {
  get NEGATIVE_INFINITY() {
    return -core.double.INFINITY;
  }
});
_internal.POWERS_OF_TEN = dart.constList([1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 10000000.0, 100000000.0, 1000000000.0, 10000000000.0, 100000000000.0, 1000000000000.0, 10000000000000.0, 100000000000000.0, 1000000000000000.0, 10000000000000000.0, 100000000000000000.0, 1000000000000000000.0, 10000000000000000000.0, 100000000000000000000.0, 1e+21, 1e+22], core.double);
const _string = Symbol('_string');
const _filter = Symbol('_filter');
collection.ListMixin$ = dart.generic(E => {
  let ListIteratorOfE = () => (ListIteratorOfE = dart.constFn(_internal.ListIterator$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.functionType(E, [])))();
  let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.functionType(E, [E, E])))();
  let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
  let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
  let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let ListMapViewOfE = () => (ListMapViewOfE = dart.constFn(_internal.ListMapView$(E)))();
  let ReversedListIterableOfE = () => (ReversedListIterableOfE = dart.constFn(_internal.ReversedListIterable$(E)))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  let EAndEToint = () => (EAndEToint = dart.constFn(dart.functionType(core.int, [E, E])))();
  dart.defineExtensionNames([
    'iterator',
    'elementAt',
    'forEach',
    'isEmpty',
    'isNotEmpty',
    'first',
    'last',
    'single',
    'contains',
    'every',
    'any',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'join',
    'where',
    'map',
    'expand',
    'reduce',
    'fold',
    'skip',
    'skipWhile',
    'take',
    'takeWhile',
    'toList',
    'toSet',
    'add',
    'addAll',
    'remove',
    'removeWhere',
    'retainWhere',
    'clear',
    'removeLast',
    'sort',
    'shuffle',
    'asMap',
    'sublist',
    'getRange',
    'removeRange',
    'fillRange',
    'setRange',
    'replaceRange',
    'indexOf',
    'lastIndexOf',
    'insert',
    'removeAt',
    'insertAll',
    'setAll',
    'reversed',
    'toString'
  ]);
  class ListMixin extends core.Object {
    get iterator() {
      return new (ListIteratorOfE())(this);
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this[dartx.iterator]);
    }
    elementAt(index) {
      return this[dartx._get](index);
    }
    forEach(action) {
      let length = this[dartx.length];
      for (let i = 0; i < dart.notNull(length); i++) {
        action(this[dartx._get](i));
        if (length != this[dartx.length]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
    }
    get isEmpty() {
      return this[dartx.length] == 0;
    }
    get isNotEmpty() {
      return !dart.test(this[dartx.isEmpty]);
    }
    get first() {
      if (this[dartx.length] == 0) dart.throw(_internal.IterableElementError.noElement());
      return this[dartx._get](0);
    }
    get last() {
      if (this[dartx.length] == 0) dart.throw(_internal.IterableElementError.noElement());
      return this[dartx._get](dart.notNull(this[dartx.length]) - 1);
    }
    get single() {
      if (this[dartx.length] == 0) dart.throw(_internal.IterableElementError.noElement());
      if (dart.notNull(this[dartx.length]) > 1) dart.throw(_internal.IterableElementError.tooMany());
      return this[dartx._get](0);
    }
    contains(element) {
      let length = this[dartx.length];
      for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
        if (dart.equals(this[dartx._get](i), element)) return true;
        if (length != this[dartx.length]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      return false;
    }
    every(test) {
      let length = this[dartx.length];
      for (let i = 0; i < dart.notNull(length); i++) {
        if (!dart.test(test(this[dartx._get](i)))) return false;
        if (length != this[dartx.length]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      return true;
    }
    any(test) {
      let length = this[dartx.length];
      for (let i = 0; i < dart.notNull(length); i++) {
        if (dart.test(test(this[dartx._get](i)))) return true;
        if (length != this[dartx.length]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      return false;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this[dartx.length];
      for (let i = 0; i < dart.notNull(length); i++) {
        let element = this[dartx._get](i);
        if (dart.test(test(element))) return element;
        if (length != this[dartx.length]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this[dartx.length];
      for (let i = dart.notNull(length) - 1; i >= 0; i--) {
        let element = this[dartx._get](i);
        if (dart.test(test(element))) return element;
        if (length != this[dartx.length]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test) {
      let length = this[dartx.length];
      let match = null;
      let matchFound = false;
      for (let i = 0; i < dart.notNull(length); i++) {
        let element = this[dartx._get](i);
        if (dart.test(test(element))) {
          if (matchFound) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          matchFound = true;
          match = element;
        }
        if (length != this[dartx.length]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      if (matchFound) return match;
      dart.throw(_internal.IterableElementError.noElement());
    }
    join(separator) {
      if (separator === void 0) separator = "";
      if (this[dartx.length] == 0) return "";
      let buffer = new core.StringBuffer();
      buffer.writeAll(this, separator);
      return buffer.toString();
    }
    where(test) {
      return new (WhereIterableOfE())(this, test);
    }
    map(T) {
      return f => {
        return new (_internal.MappedListIterable$(E, T))(this, f);
      };
    }
    expand(T) {
      return f => {
        return new (_internal.ExpandIterable$(E, T))(this, f);
      };
    }
    reduce(combine) {
      EAndEToE()._check(combine);
      let length = this[dartx.length];
      if (length == 0) dart.throw(_internal.IterableElementError.noElement());
      let value = this[dartx._get](0);
      for (let i = 1; i < dart.notNull(length); i++) {
        value = combine(value, this[dartx._get](i));
        if (length != this[dartx.length]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      return value;
    }
    fold(T) {
      return (initialValue, combine) => {
        let value = initialValue;
        let length = this[dartx.length];
        for (let i = 0; i < dart.notNull(length); i++) {
          value = combine(value, this[dartx._get](i));
          if (length != this[dartx.length]) {
            dart.throw(new core.ConcurrentModificationError(this));
          }
        }
        return value;
      };
    }
    skip(count) {
      return new (SubListIterableOfE())(this, count, null);
    }
    skipWhile(test) {
      return new (SkipWhileIterableOfE())(this, test);
    }
    take(count) {
      return new (SubListIterableOfE())(this, 0, count);
    }
    takeWhile(test) {
      return new (TakeWhileIterableOfE())(this, test);
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let result = null;
      if (dart.test(growable)) {
        result = ListOfE().new();
        result[dartx.length] = this[dartx.length];
      } else {
        result = ListOfE().new(this[dartx.length]);
      }
      for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
        result[dartx._set](i, this[dartx._get](i));
      }
      return result;
    }
    toSet() {
      let result = SetOfE().new();
      for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
        result.add(this[dartx._get](i));
      }
      return result;
    }
    add(element) {
      E._check(element);
      this[dartx._set]((() => {
        let x = this[dartx.length];
        this[dartx.length] = dart.notNull(x) + 1;
        return x;
      })(), element);
    }
    addAll(iterable) {
      IterableOfE()._check(iterable);
      let i = this[dartx.length];
      for (let element of iterable) {
        dart.assert(this[dartx.length] == i || dart.test(dart.throw(new core.ConcurrentModificationError(this))));
        this[dartx.length] = dart.notNull(i) + 1;
        this[dartx._set](i, element);
        i = dart.notNull(i) + 1;
      }
    }
    remove(element) {
      for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
        if (dart.equals(this[dartx._get](i), element)) {
          this[dartx.setRange](i, dart.notNull(this[dartx.length]) - 1, this, i + 1);
          this[dartx.length] = dart.notNull(this[dartx.length]) - 1;
          return true;
        }
      }
      return false;
    }
    removeWhere(test) {
      this[_filter](test, false);
    }
    retainWhere(test) {
      this[_filter](test, true);
    }
    [_filter](test, retainMatching) {
      let source = this;
      let retained = JSArrayOfE().of([]);
      let length = source[dartx.length];
      for (let i = 0; i < dart.notNull(length); i++) {
        let element = source[dartx._get](i);
        if (dart.dcall(test, element) == retainMatching) {
          retained[dartx.add](element);
        }
        if (length != source[dartx.length]) {
          dart.throw(new core.ConcurrentModificationError(source));
        }
      }
      if (retained[dartx.length] != source[dartx.length]) {
        source[dartx.setRange](0, retained[dartx.length], retained);
        source[dartx.length] = retained[dartx.length];
      }
    }
    clear() {
      this[dartx.length] = 0;
    }
    removeLast() {
      if (this[dartx.length] == 0) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let result = this[dartx._get](dart.notNull(this[dartx.length]) - 1);
      this[dartx.length] = dart.notNull(this[dartx.length]) - 1;
      return result;
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      if (compare == null) {
        _internal.Sort.sort(E)(this, dart.fn((a, b) => core.Comparable.compare(core.Comparable._check(a), core.Comparable._check(b)), dynamicAnddynamicToint()));
      } else {
        _internal.Sort.sort(E)(this, compare);
      }
    }
    shuffle(random) {
      if (random === void 0) random = null;
      if (random == null) random = math.Random.new();
      let length = this[dartx.length];
      while (dart.notNull(length) > 1) {
        let pos = random.nextInt(length);
        length = dart.notNull(length) - 1;
        let tmp = this[dartx._get](length);
        this[dartx._set](length, this[dartx._get](pos));
        this[dartx._set](pos, tmp);
      }
    }
    asMap() {
      return new (ListMapViewOfE())(this);
    }
    sublist(start, end) {
      if (end === void 0) end = null;
      let listLength = this[dartx.length];
      if (end == null) end = listLength;
      core.RangeError.checkValidRange(start, end, listLength);
      let length = dart.notNull(end) - dart.notNull(start);
      let result = ListOfE().new();
      result[dartx.length] = length;
      for (let i = 0; i < length; i++) {
        result[dartx._set](i, this[dartx._get](dart.notNull(start) + i));
      }
      return result;
    }
    getRange(start, end) {
      core.RangeError.checkValidRange(start, end, this[dartx.length]);
      return new (SubListIterableOfE())(this, start, end);
    }
    removeRange(start, end) {
      core.RangeError.checkValidRange(start, end, this[dartx.length]);
      let length = dart.notNull(end) - dart.notNull(start);
      this[dartx.setRange](start, dart.notNull(this[dartx.length]) - length, this, end);
      this[dartx.length] = dart.notNull(this[dartx.length]) - length;
    }
    fillRange(start, end, fill) {
      if (fill === void 0) fill = null;
      E._check(fill);
      core.RangeError.checkValidRange(start, end, this[dartx.length]);
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        this[dartx._set](i, fill);
      }
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfE()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      core.RangeError.checkValidRange(start, end, this[dartx.length]);
      let length = dart.notNull(end) - dart.notNull(start);
      if (length == 0) return;
      core.RangeError.checkNotNegative(skipCount, "skipCount");
      let otherList = null;
      let otherStart = null;
      if (ListOfE().is(iterable)) {
        otherList = iterable;
        otherStart = skipCount;
      } else {
        otherList = iterable[dartx.skip](skipCount)[dartx.toList]({growable: false});
        otherStart = 0;
      }
      if (dart.notNull(otherStart) + length > dart.notNull(otherList[dartx.length])) {
        dart.throw(_internal.IterableElementError.tooFew());
      }
      if (dart.notNull(otherStart) < dart.notNull(start)) {
        for (let i = length - 1; i >= 0; i--) {
          this[dartx._set](dart.notNull(start) + i, otherList[dartx._get](dart.notNull(otherStart) + i));
        }
      } else {
        for (let i = 0; i < length; i++) {
          this[dartx._set](dart.notNull(start) + i, otherList[dartx._get](dart.notNull(otherStart) + i));
        }
      }
    }
    replaceRange(start, end, newContents) {
      IterableOfE()._check(newContents);
      core.RangeError.checkValidRange(start, end, this[dartx.length]);
      if (!_internal.EfficientLength.is(newContents)) {
        newContents = newContents[dartx.toList]();
      }
      let removeLength = dart.notNull(end) - dart.notNull(start);
      let insertLength = newContents[dartx.length];
      if (removeLength >= dart.notNull(insertLength)) {
        let delta = removeLength - dart.notNull(insertLength);
        let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
        let newLength = dart.notNull(this[dartx.length]) - delta;
        this[dartx.setRange](start, insertEnd, newContents);
        if (delta != 0) {
          this[dartx.setRange](insertEnd, newLength, this, end);
          this[dartx.length] = newLength;
        }
      } else {
        let delta = dart.notNull(insertLength) - removeLength;
        let newLength = dart.notNull(this[dartx.length]) + delta;
        let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
        this[dartx.length] = newLength;
        this[dartx.setRange](insertEnd, newLength, this, end);
        this[dartx.setRange](start, insertEnd, newContents);
      }
    }
    indexOf(element, startIndex) {
      if (startIndex === void 0) startIndex = 0;
      if (dart.notNull(startIndex) >= dart.notNull(this[dartx.length])) {
        return -1;
      }
      if (dart.notNull(startIndex) < 0) {
        startIndex = 0;
      }
      for (let i = startIndex; dart.notNull(i) < dart.notNull(this[dartx.length]); i = dart.notNull(i) + 1) {
        if (dart.equals(this[dartx._get](i), element)) {
          return i;
        }
      }
      return -1;
    }
    lastIndexOf(element, startIndex) {
      if (startIndex === void 0) startIndex = null;
      if (startIndex == null) {
        startIndex = dart.notNull(this[dartx.length]) - 1;
      } else {
        if (dart.notNull(startIndex) < 0) {
          return -1;
        }
        if (dart.notNull(startIndex) >= dart.notNull(this[dartx.length])) {
          startIndex = dart.notNull(this[dartx.length]) - 1;
        }
      }
      for (let i = startIndex; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
        if (dart.equals(this[dartx._get](i), element)) {
          return i;
        }
      }
      return -1;
    }
    insert(index, element) {
      E._check(element);
      core.RangeError.checkValueInInterval(index, 0, this[dartx.length], "index");
      if (index == this[dartx.length]) {
        this[dartx.add](element);
        return;
      }
      if (!(typeof index == 'number')) dart.throw(new core.ArgumentError(index));
      this[dartx.length] = dart.notNull(this[dartx.length]) + 1;
      this[dartx.setRange](dart.notNull(index) + 1, this[dartx.length], this, index);
      this[dartx._set](index, element);
    }
    removeAt(index) {
      let result = this[dartx._get](index);
      this[dartx.setRange](index, dart.notNull(this[dartx.length]) - 1, this, dart.notNull(index) + 1);
      this[dartx.length] = dart.notNull(this[dartx.length]) - 1;
      return result;
    }
    insertAll(index, iterable) {
      IterableOfE()._check(iterable);
      core.RangeError.checkValueInInterval(index, 0, this[dartx.length], "index");
      if (!_internal.EfficientLength.is(iterable) || core.identical(iterable, this)) {
        iterable = iterable[dartx.toList]();
      }
      let insertionLength = iterable[dartx.length];
      this[dartx.length] = dart.notNull(this[dartx.length]) + dart.notNull(insertionLength);
      if (iterable[dartx.length] != insertionLength) {
        this[dartx.length] = dart.notNull(this[dartx.length]) - dart.notNull(insertionLength);
        dart.throw(new core.ConcurrentModificationError(iterable));
      }
      this[dartx.setRange](dart.notNull(index) + dart.notNull(insertionLength), this[dartx.length], this, index);
      this[dartx.setAll](index, iterable);
    }
    setAll(index, iterable) {
      IterableOfE()._check(iterable);
      if (core.List.is(iterable)) {
        this[dartx.setRange](index, dart.notNull(index) + dart.notNull(iterable[dartx.length]), iterable);
      } else {
        for (let element of iterable) {
          this[dartx._set]((() => {
            let x = index;
            index = dart.notNull(x) + 1;
            return x;
          })(), element);
        }
      }
    }
    get reversed() {
      return new (ReversedListIterableOfE())(this);
    }
    toString() {
      return collection.IterableBase.iterableToFullString(this, '[', ']');
    }
  }
  dart.addTypeTests(ListMixin);
  ListMixin[dart.implements] = () => [ListOfE()];
  dart.setSignature(ListMixin, {
    getters: () => ({
      iterator: dart.definiteFunctionType(core.Iterator$(E), []),
      isEmpty: dart.definiteFunctionType(core.bool, []),
      isNotEmpty: dart.definiteFunctionType(core.bool, []),
      first: dart.definiteFunctionType(E, []),
      last: dart.definiteFunctionType(E, []),
      single: dart.definiteFunctionType(E, []),
      reversed: dart.definiteFunctionType(core.Iterable$(E), [])
    }),
    methods: () => ({
      elementAt: dart.definiteFunctionType(E, [core.int]),
      forEach: dart.definiteFunctionType(dart.void, [ETovoid()]),
      contains: dart.definiteFunctionType(core.bool, [core.Object]),
      every: dart.definiteFunctionType(core.bool, [ETobool()]),
      any: dart.definiteFunctionType(core.bool, [ETobool()]),
      firstWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      lastWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      singleWhere: dart.definiteFunctionType(E, [ETobool()]),
      join: dart.definiteFunctionType(core.String, [], [core.String]),
      where: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      map: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(T, [E])]]),
      expand: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(core.Iterable$(T), [E])]]),
      reduce: dart.definiteFunctionType(E, [EAndEToE()]),
      fold: dart.definiteFunctionType(T => [T, [T, dart.functionType(T, [T, E])]]),
      skip: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      skipWhile: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      take: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      takeWhile: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      toList: dart.definiteFunctionType(core.List$(E), [], {growable: core.bool}),
      toSet: dart.definiteFunctionType(core.Set$(E), []),
      add: dart.definiteFunctionType(dart.void, [E]),
      addAll: dart.definiteFunctionType(dart.void, [IterableOfE()]),
      remove: dart.definiteFunctionType(core.bool, [core.Object]),
      removeWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      retainWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      [_filter]: dart.definiteFunctionType(dart.void, [dynamicTobool(), core.bool]),
      clear: dart.definiteFunctionType(dart.void, []),
      removeLast: dart.definiteFunctionType(E, []),
      sort: dart.definiteFunctionType(dart.void, [], [EAndEToint()]),
      shuffle: dart.definiteFunctionType(dart.void, [], [math.Random]),
      asMap: dart.definiteFunctionType(core.Map$(core.int, E), []),
      sublist: dart.definiteFunctionType(core.List$(E), [core.int], [core.int]),
      getRange: dart.definiteFunctionType(core.Iterable$(E), [core.int, core.int]),
      removeRange: dart.definiteFunctionType(dart.void, [core.int, core.int]),
      fillRange: dart.definiteFunctionType(dart.void, [core.int, core.int], [E]),
      setRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfE()], [core.int]),
      replaceRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfE()]),
      indexOf: dart.definiteFunctionType(core.int, [core.Object], [core.int]),
      lastIndexOf: dart.definiteFunctionType(core.int, [core.Object], [core.int]),
      insert: dart.definiteFunctionType(dart.void, [core.int, E]),
      removeAt: dart.definiteFunctionType(E, [core.int]),
      insertAll: dart.definiteFunctionType(dart.void, [core.int, IterableOfE()]),
      setAll: dart.definiteFunctionType(dart.void, [core.int, IterableOfE()])
    })
  });
  dart.defineExtensionMembers(ListMixin, [
    'elementAt',
    'forEach',
    'contains',
    'every',
    'any',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'join',
    'where',
    'map',
    'expand',
    'reduce',
    'fold',
    'skip',
    'skipWhile',
    'take',
    'takeWhile',
    'toList',
    'toSet',
    'add',
    'addAll',
    'remove',
    'removeWhere',
    'retainWhere',
    'clear',
    'removeLast',
    'sort',
    'shuffle',
    'asMap',
    'sublist',
    'getRange',
    'removeRange',
    'fillRange',
    'setRange',
    'replaceRange',
    'indexOf',
    'lastIndexOf',
    'insert',
    'removeAt',
    'insertAll',
    'setAll',
    'toString',
    'iterator',
    'isEmpty',
    'isNotEmpty',
    'first',
    'last',
    'single',
    'reversed'
  ]);
  return ListMixin;
});
collection.ListMixin = ListMixin();
collection.ListBase$ = dart.generic(E => {
  class ListBase extends dart.mixin(core.Object, collection.ListMixin$(E)) {
    static listToString(list) {
      return collection.IterableBase.iterableToFullString(list, '[', ']');
    }
  }
  dart.addTypeTests(ListBase);
  dart.setSignature(ListBase, {
    statics: () => ({listToString: dart.definiteFunctionType(core.String, [core.List])}),
    names: ['listToString']
  });
  return ListBase;
});
collection.ListBase = ListBase();
_internal.UnmodifiableListMixin$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  let ComparatorOfE = () => (ComparatorOfE = dart.constFn(core.Comparator$(E)))();
  class UnmodifiableListMixin extends core.Object {
    _set(index, value) {
      E._check(value);
      dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list"));
      return value;
    }
    set length(newLength) {
      dart.throw(new core.UnsupportedError("Cannot change the length of an unmodifiable list"));
    }
    setAll(at, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list"));
    }
    add(value) {
      E._check(value);
      dart.throw(new core.UnsupportedError("Cannot add to an unmodifiable list"));
    }
    insert(index, element) {
      E._check(element);
      dart.throw(new core.UnsupportedError("Cannot add to an unmodifiable list"));
    }
    insertAll(at, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError("Cannot add to an unmodifiable list"));
    }
    addAll(iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError("Cannot add to an unmodifiable list"));
    }
    remove(element) {
      dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
    }
    removeWhere(test) {
      dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
    }
    retainWhere(test) {
      dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list"));
    }
    shuffle(random) {
      if (random === void 0) random = null;
      dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list"));
    }
    clear() {
      dart.throw(new core.UnsupportedError("Cannot clear an unmodifiable list"));
    }
    removeAt(index) {
      dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
    }
    removeLast() {
      dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfE()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list"));
    }
    removeRange(start, end) {
      dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
    }
    replaceRange(start, end, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError("Cannot remove from an unmodifiable list"));
    }
    fillRange(start, end, fillValue) {
      if (fillValue === void 0) fillValue = null;
      E._check(fillValue);
      dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable list"));
    }
  }
  dart.addTypeTests(UnmodifiableListMixin);
  UnmodifiableListMixin[dart.implements] = () => [ListOfE()];
  dart.setSignature(UnmodifiableListMixin, {
    setters: () => ({length: dart.definiteFunctionType(dart.void, [core.int])}),
    methods: () => ({
      _set: dart.definiteFunctionType(dart.void, [core.int, E]),
      setAll: dart.definiteFunctionType(dart.void, [core.int, IterableOfE()]),
      add: dart.definiteFunctionType(dart.void, [E]),
      insert: dart.definiteFunctionType(dart.void, [core.int, E]),
      insertAll: dart.definiteFunctionType(dart.void, [core.int, IterableOfE()]),
      addAll: dart.definiteFunctionType(dart.void, [IterableOfE()]),
      remove: dart.definiteFunctionType(core.bool, [core.Object]),
      removeWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      retainWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      sort: dart.definiteFunctionType(dart.void, [], [ComparatorOfE()]),
      shuffle: dart.definiteFunctionType(dart.void, [], [math.Random]),
      clear: dart.definiteFunctionType(dart.void, []),
      removeAt: dart.definiteFunctionType(E, [core.int]),
      removeLast: dart.definiteFunctionType(E, []),
      setRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfE()], [core.int]),
      removeRange: dart.definiteFunctionType(dart.void, [core.int, core.int]),
      replaceRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfE()]),
      fillRange: dart.definiteFunctionType(dart.void, [core.int, core.int], [E])
    })
  });
  dart.defineExtensionMembers(UnmodifiableListMixin, [
    '_set',
    'setAll',
    'add',
    'insert',
    'insertAll',
    'addAll',
    'remove',
    'removeWhere',
    'retainWhere',
    'sort',
    'shuffle',
    'clear',
    'removeAt',
    'removeLast',
    'setRange',
    'removeRange',
    'replaceRange',
    'fillRange',
    'length'
  ]);
  return UnmodifiableListMixin;
});
_internal.UnmodifiableListMixin = UnmodifiableListMixin();
_internal.UnmodifiableListBase$ = dart.generic(E => {
  class UnmodifiableListBase extends dart.mixin(collection.ListBase$(E), _internal.UnmodifiableListMixin$(E)) {
    new() {
      super.new();
    }
  }
  return UnmodifiableListBase;
});
_internal.UnmodifiableListBase = UnmodifiableListBase();
core.int = class int extends core.num {
  static fromEnvironment(name, opts) {
    let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
    dart.throw(new core.UnsupportedError('int.fromEnvironment can only be used as a const constructor'));
  }
  static parse(source, opts) {
    let radix = opts && 'radix' in opts ? opts.radix : null;
    let onError = opts && 'onError' in opts ? opts.onError : null;
    return _js_helper.Primitives.parseInt(source, radix, onError);
  }
};
core.int.is = function is_int(o) {
  return typeof o == "number" && Math.floor(o) == o;
};
core.int.as = function as_int(o) {
  if (typeof o == "number" && Math.floor(o) == o || o == null) return o;
  return dart.as(o, core.int);
};
core.int._check = function check_int(o) {
  if (typeof o == "number" && Math.floor(o) == o || o == null) return o;
  return dart.check(o, core.int);
};
dart.setSignature(core.int, {
  constructors: () => ({fromEnvironment: dart.definiteFunctionType(core.int, [core.String], {defaultValue: core.int})}),
  statics: () => ({parse: dart.definiteFunctionType(core.int, [core.String], {radix: core.int, onError: StringToint()})}),
  names: ['parse']
});
_internal.CodeUnits = class CodeUnits extends _internal.UnmodifiableListBase$(core.int) {
  new(string) {
    this[_string] = string;
  }
  get length() {
    return this[_string][dartx.length];
  }
  set length(value) {
    super.length = value;
  }
  _get(i) {
    return this[_string][dartx.codeUnitAt](i);
  }
  static stringOf(u) {
    return u[_string];
  }
};
dart.addSimpleTypeTests(_internal.CodeUnits);
dart.setSignature(_internal.CodeUnits, {
  constructors: () => ({new: dart.definiteFunctionType(_internal.CodeUnits, [core.String])}),
  fields: () => ({[_string]: core.String}),
  getters: () => ({length: dart.definiteFunctionType(core.int, [])}),
  methods: () => ({_get: dart.definiteFunctionType(core.int, [core.int])}),
  statics: () => ({stringOf: dart.definiteFunctionType(core.String, [_internal.CodeUnits])}),
  names: ['stringOf']
});
dart.defineExtensionMembers(_internal.CodeUnits, ['_get', 'length']);
_internal.EfficientLength = class EfficientLength extends core.Object {};
core.Iterable$ = dart.generic(E => {
  let EmptyIterableOfE = () => (EmptyIterableOfE = dart.constFn(_internal.EmptyIterable$(E)))();
  let _GeneratorIterableOfE = () => (_GeneratorIterableOfE = dart.constFn(core._GeneratorIterable$(E)))();
  let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.functionType(E, [E, E])))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
  let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
  let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
  let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.functionType(E, [])))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  let intToE = () => (intToE = dart.constFn(dart.functionType(E, [core.int])))();
  dart.defineExtensionNames([
    'map',
    'where',
    'expand',
    'contains',
    'forEach',
    'reduce',
    'fold',
    'every',
    'join',
    'any',
    'toList',
    'toSet',
    'length',
    'isEmpty',
    'isNotEmpty',
    'take',
    'takeWhile',
    'skip',
    'skipWhile',
    'first',
    'last',
    'single',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'elementAt',
    'toString'
  ]);
  class Iterable extends core.Object {
    new() {
    }
    static generate(count, generator) {
      if (generator === void 0) generator = null;
      if (dart.notNull(count) <= 0) return new (EmptyIterableOfE())();
      return new (_GeneratorIterableOfE())(count, generator);
    }
    static empty() {
      return new (EmptyIterableOfE())();
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this[dartx.iterator]);
    }
    map(T) {
      return f => {
        return _internal.MappedIterable$(E, T).new(this, f);
      };
    }
    where(test) {
      return new (WhereIterableOfE())(this, test);
    }
    expand(T) {
      return f => {
        return new (_internal.ExpandIterable$(E, T))(this, f);
      };
    }
    contains(element) {
      for (let e of this) {
        if (dart.equals(e, element)) return true;
      }
      return false;
    }
    forEach(f) {
      for (let element of this)
        f(element);
    }
    reduce(combine) {
      EAndEToE()._check(combine);
      let iterator = this[dartx.iterator];
      if (!dart.test(iterator.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let value = iterator.current;
      while (dart.test(iterator.moveNext())) {
        value = combine(value, iterator.current);
      }
      return value;
    }
    fold(T) {
      return (initialValue, combine) => {
        let value = initialValue;
        for (let element of this)
          value = combine(value, element);
        return value;
      };
    }
    every(f) {
      for (let element of this) {
        if (!dart.test(f(element))) return false;
      }
      return true;
    }
    join(separator) {
      if (separator === void 0) separator = "";
      let iterator = this[dartx.iterator];
      if (!dart.test(iterator.moveNext())) return "";
      let buffer = new core.StringBuffer();
      if (separator == null || separator == "") {
        do {
          buffer.write(dart.str`${iterator.current}`);
        } while (dart.test(iterator.moveNext()));
      } else {
        buffer.write(dart.str`${iterator.current}`);
        while (dart.test(iterator.moveNext())) {
          buffer.write(separator);
          buffer.write(dart.str`${iterator.current}`);
        }
      }
      return buffer.toString();
    }
    any(f) {
      for (let element of this) {
        if (dart.test(f(element))) return true;
      }
      return false;
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      return ListOfE().from(this, {growable: growable});
    }
    toSet() {
      return SetOfE().from(this);
    }
    get length() {
      dart.assert(!_internal.EfficientLength.is(this));
      let count = 0;
      let it = this[dartx.iterator];
      while (dart.test(it.moveNext())) {
        count++;
      }
      return count;
    }
    get isEmpty() {
      return !dart.test(this[dartx.iterator].moveNext());
    }
    get isNotEmpty() {
      return !dart.test(this[dartx.isEmpty]);
    }
    take(count) {
      return TakeIterableOfE().new(this, count);
    }
    takeWhile(test) {
      return new (TakeWhileIterableOfE())(this, test);
    }
    skip(count) {
      return SkipIterableOfE().new(this, count);
    }
    skipWhile(test) {
      return new (SkipWhileIterableOfE())(this, test);
    }
    get first() {
      let it = this[dartx.iterator];
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      return it.current;
    }
    get last() {
      let it = this[dartx.iterator];
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let result = null;
      do {
        result = it.current;
      } while (dart.test(it.moveNext()));
      return result;
    }
    get single() {
      let it = this[dartx.iterator];
      if (!dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
      let result = it.current;
      if (dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.tooMany());
      return result;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      for (let element of this) {
        if (dart.test(test(element))) return element;
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test) {
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          if (foundMatching) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      dart.throw(_internal.IterableElementError.noElement());
    }
    elementAt(index) {
      if (!(typeof index == 'number')) dart.throw(new core.ArgumentError.notNull("index"));
      core.RangeError.checkNotNegative(index, "index");
      let elementIndex = 0;
      for (let element of this) {
        if (index == elementIndex) return element;
        elementIndex++;
      }
      dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
    }
    toString() {
      return collection.IterableBase.iterableToShortString(this, '(', ')');
    }
  }
  dart.addTypeTests(Iterable);
  dart.setSignature(Iterable, {
    constructors: () => ({
      new: dart.definiteFunctionType(core.Iterable$(E), []),
      generate: dart.definiteFunctionType(core.Iterable$(E), [core.int], [intToE()]),
      empty: dart.definiteFunctionType(core.Iterable$(E), [])
    }),
    getters: () => ({
      length: dart.definiteFunctionType(core.int, []),
      isEmpty: dart.definiteFunctionType(core.bool, []),
      isNotEmpty: dart.definiteFunctionType(core.bool, []),
      first: dart.definiteFunctionType(E, []),
      last: dart.definiteFunctionType(E, []),
      single: dart.definiteFunctionType(E, [])
    }),
    methods: () => ({
      map: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(T, [E])]]),
      where: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      expand: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(core.Iterable$(T), [E])]]),
      contains: dart.definiteFunctionType(core.bool, [core.Object]),
      forEach: dart.definiteFunctionType(dart.void, [ETovoid()]),
      reduce: dart.definiteFunctionType(E, [EAndEToE()]),
      fold: dart.definiteFunctionType(T => [T, [T, dart.functionType(T, [T, E])]]),
      every: dart.definiteFunctionType(core.bool, [ETobool()]),
      join: dart.definiteFunctionType(core.String, [], [core.String]),
      any: dart.definiteFunctionType(core.bool, [ETobool()]),
      toList: dart.definiteFunctionType(core.List$(E), [], {growable: core.bool}),
      toSet: dart.definiteFunctionType(core.Set$(E), []),
      take: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      takeWhile: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      skip: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      skipWhile: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      firstWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      lastWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      singleWhere: dart.definiteFunctionType(E, [ETobool()]),
      elementAt: dart.definiteFunctionType(E, [core.int])
    })
  });
  dart.defineExtensionMembers(Iterable, [
    'map',
    'where',
    'expand',
    'contains',
    'forEach',
    'reduce',
    'fold',
    'every',
    'join',
    'any',
    'toList',
    'toSet',
    'take',
    'takeWhile',
    'skip',
    'skipWhile',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'elementAt',
    'toString',
    'length',
    'isEmpty',
    'isNotEmpty',
    'first',
    'last',
    'single'
  ]);
  return Iterable;
});
core.Iterable = Iterable();
_internal.ListIterable$ = dart.generic(E => {
  let ListIteratorOfE = () => (ListIteratorOfE = dart.constFn(_internal.ListIterator$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.functionType(E, [])))();
  let dynamicAndEToE = () => (dynamicAndEToE = dart.constFn(dart.functionType(E, [dart.dynamic, E])))();
  let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  class ListIterable extends core.Iterable$(E) {
    new() {
      super.new();
    }
    get iterator() {
      return new (ListIteratorOfE())(this);
    }
    forEach(action) {
      let length = this.length;
      for (let i = 0; i < dart.notNull(length); i++) {
        action(this.elementAt(i));
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
    }
    get isEmpty() {
      return this.length == 0;
    }
    get first() {
      if (this.length == 0) dart.throw(_internal.IterableElementError.noElement());
      return this.elementAt(0);
    }
    get last() {
      if (this.length == 0) dart.throw(_internal.IterableElementError.noElement());
      return this.elementAt(dart.notNull(this.length) - 1);
    }
    get single() {
      if (this.length == 0) dart.throw(_internal.IterableElementError.noElement());
      if (dart.notNull(this.length) > 1) dart.throw(_internal.IterableElementError.tooMany());
      return this.elementAt(0);
    }
    contains(element) {
      let length = this.length;
      for (let i = 0; i < dart.notNull(length); i++) {
        if (dart.equals(this.elementAt(i), element)) return true;
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      return false;
    }
    every(test) {
      let length = this.length;
      for (let i = 0; i < dart.notNull(length); i++) {
        if (!dart.test(test(this.elementAt(i)))) return false;
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      return true;
    }
    any(test) {
      let length = this.length;
      for (let i = 0; i < dart.notNull(length); i++) {
        if (dart.test(test(this.elementAt(i)))) return true;
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      return false;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this.length;
      for (let i = 0; i < dart.notNull(length); i++) {
        let element = this.elementAt(i);
        if (dart.test(test(element))) return element;
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this.length;
      for (let i = dart.notNull(length) - 1; i >= 0; i--) {
        let element = this.elementAt(i);
        if (dart.test(test(element))) return element;
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test) {
      let length = this.length;
      let match = null;
      let matchFound = false;
      for (let i = 0; i < dart.notNull(length); i++) {
        let element = this.elementAt(i);
        if (dart.test(test(element))) {
          if (matchFound) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          matchFound = true;
          match = element;
        }
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      if (matchFound) return match;
      dart.throw(_internal.IterableElementError.noElement());
    }
    join(separator) {
      if (separator === void 0) separator = "";
      let length = this.length;
      if (!dart.test(separator[dartx.isEmpty])) {
        if (length == 0) return "";
        let first = dart.str`${this.elementAt(0)}`;
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
        let buffer = new core.StringBuffer(first);
        for (let i = 1; i < dart.notNull(length); i++) {
          buffer.write(separator);
          buffer.write(this.elementAt(i));
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError(this));
          }
        }
        return buffer.toString();
      } else {
        let buffer = new core.StringBuffer();
        for (let i = 0; i < dart.notNull(length); i++) {
          buffer.write(this.elementAt(i));
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError(this));
          }
        }
        return buffer.toString();
      }
    }
    where(test) {
      return super.where(test);
    }
    map(T) {
      return f => {
        return new (_internal.MappedListIterable$(E, T))(this, f);
      };
    }
    reduce(combine) {
      dynamicAndEToE()._check(combine);
      let length = this.length;
      if (length == 0) dart.throw(_internal.IterableElementError.noElement());
      let value = this.elementAt(0);
      for (let i = 1; i < dart.notNull(length); i++) {
        value = dart.dcall(combine, value, this.elementAt(i));
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
      return value;
    }
    fold(T) {
      return (initialValue, combine) => {
        let value = initialValue;
        let length = this.length;
        for (let i = 0; i < dart.notNull(length); i++) {
          value = combine(value, this.elementAt(i));
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError(this));
          }
        }
        return value;
      };
    }
    skip(count) {
      return new (SubListIterableOfE())(this, count, null);
    }
    skipWhile(test) {
      return super.skipWhile(test);
    }
    take(count) {
      return new (SubListIterableOfE())(this, 0, count);
    }
    takeWhile(test) {
      return super.takeWhile(test);
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let result = null;
      if (dart.test(growable)) {
        result = ListOfE().new();
        result[dartx.length] = this.length;
      } else {
        result = ListOfE().new(this.length);
      }
      for (let i = 0; i < dart.notNull(this.length); i++) {
        result[dartx._set](i, this.elementAt(i));
      }
      return result;
    }
    toSet() {
      let result = SetOfE().new();
      for (let i = 0; i < dart.notNull(this.length); i++) {
        result.add(this.elementAt(i));
      }
      return result;
    }
  }
  ListIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(ListIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.ListIterable$(E), [])}),
    getters: () => ({
      iterator: dart.definiteFunctionType(core.Iterator$(E), []),
      first: dart.definiteFunctionType(E, []),
      last: dart.definiteFunctionType(E, []),
      single: dart.definiteFunctionType(E, [])
    }),
    methods: () => ({
      forEach: dart.definiteFunctionType(dart.void, [ETovoid()]),
      every: dart.definiteFunctionType(core.bool, [ETobool()]),
      any: dart.definiteFunctionType(core.bool, [ETobool()]),
      firstWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      lastWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      singleWhere: dart.definiteFunctionType(E, [ETobool()]),
      where: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      map: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(T, [E])]]),
      reduce: dart.definiteFunctionType(E, [dynamicAndEToE()]),
      fold: dart.definiteFunctionType(T => [T, [T, dart.functionType(T, [T, E])]]),
      skip: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      skipWhile: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      take: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      takeWhile: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      toList: dart.definiteFunctionType(core.List$(E), [], {growable: core.bool}),
      toSet: dart.definiteFunctionType(core.Set$(E), [])
    })
  });
  dart.defineExtensionMembers(ListIterable, [
    'forEach',
    'contains',
    'every',
    'any',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'join',
    'where',
    'map',
    'reduce',
    'fold',
    'skip',
    'skipWhile',
    'take',
    'takeWhile',
    'toList',
    'toSet',
    'iterator',
    'isEmpty',
    'first',
    'last',
    'single'
  ]);
  return ListIterable;
});
_internal.ListIterable = ListIterable();
const _iterable = Symbol('_iterable');
const _start = Symbol('_start');
const _endOrLength = Symbol('_endOrLength');
const _endIndex = Symbol('_endIndex');
const _startIndex = Symbol('_startIndex');
_internal.SubListIterable$ = dart.generic(E => {
  let EmptyIterableOfE = () => (EmptyIterableOfE = dart.constFn(_internal.EmptyIterable$(E)))();
  let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class SubListIterable extends _internal.ListIterable$(E) {
    new(iterable, start, endOrLength) {
      this[_iterable] = iterable;
      this[_start] = start;
      this[_endOrLength] = endOrLength;
      super.new();
      core.RangeError.checkNotNegative(this[_start], "start");
      if (this[_endOrLength] != null) {
        core.RangeError.checkNotNegative(this[_endOrLength], "end");
        if (dart.notNull(this[_start]) > dart.notNull(this[_endOrLength])) {
          dart.throw(new core.RangeError.range(this[_start], 0, this[_endOrLength], "start"));
        }
      }
    }
    get [_endIndex]() {
      let length = this[_iterable][dartx.length];
      if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) > dart.notNull(length)) return length;
      return this[_endOrLength];
    }
    get [_startIndex]() {
      let length = this[_iterable][dartx.length];
      if (dart.notNull(this[_start]) > dart.notNull(length)) return length;
      return this[_start];
    }
    get length() {
      let length = this[_iterable][dartx.length];
      if (dart.notNull(this[_start]) >= dart.notNull(length)) return 0;
      if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) >= dart.notNull(length)) {
        return dart.notNull(length) - dart.notNull(this[_start]);
      }
      return dart.notNull(this[_endOrLength]) - dart.notNull(this[_start]);
    }
    elementAt(index) {
      let realIndex = dart.notNull(this[_startIndex]) + dart.notNull(index);
      if (dart.notNull(index) < 0 || realIndex >= dart.notNull(this[_endIndex])) {
        dart.throw(core.RangeError.index(index, this, "index"));
      }
      return this[_iterable][dartx.elementAt](realIndex);
    }
    skip(count) {
      core.RangeError.checkNotNegative(count, "count");
      let newStart = dart.notNull(this[_start]) + dart.notNull(count);
      if (this[_endOrLength] != null && newStart >= dart.notNull(this[_endOrLength])) {
        return new (EmptyIterableOfE())();
      }
      return new (SubListIterableOfE())(this[_iterable], newStart, this[_endOrLength]);
    }
    take(count) {
      core.RangeError.checkNotNegative(count, "count");
      if (this[_endOrLength] == null) {
        return new (SubListIterableOfE())(this[_iterable], this[_start], dart.notNull(this[_start]) + dart.notNull(count));
      } else {
        let newEnd = dart.notNull(this[_start]) + dart.notNull(count);
        if (dart.notNull(this[_endOrLength]) < newEnd) return this;
        return new (SubListIterableOfE())(this[_iterable], this[_start], newEnd);
      }
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let start = this[_start];
      let end = this[_iterable][dartx.length];
      if (this[_endOrLength] != null && dart.notNull(this[_endOrLength]) < dart.notNull(end)) end = this[_endOrLength];
      let length = dart.notNull(end) - dart.notNull(start);
      if (length < 0) length = 0;
      let result = dart.test(growable) ? (() => {
        let _ = ListOfE().new();
        _[dartx.length] = length;
        return _;
      })() : ListOfE().new(length);
      for (let i = 0; i < length; i++) {
        result[dartx._set](i, this[_iterable][dartx.elementAt](dart.notNull(start) + i));
        if (dart.notNull(this[_iterable][dartx.length]) < dart.notNull(end)) dart.throw(new core.ConcurrentModificationError(this));
      }
      return result;
    }
  }
  dart.setSignature(SubListIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.SubListIterable$(E), [IterableOfE(), core.int, core.int])}),
    fields: () => ({
      [_iterable]: IterableOfE(),
      [_start]: core.int,
      [_endOrLength]: core.int
    }),
    getters: () => ({
      [_endIndex]: dart.definiteFunctionType(core.int, []),
      [_startIndex]: dart.definiteFunctionType(core.int, [])
    }),
    methods: () => ({
      elementAt: dart.definiteFunctionType(E, [core.int]),
      skip: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      take: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      toList: dart.definiteFunctionType(core.List$(E), [], {growable: core.bool})
    })
  });
  dart.defineExtensionMembers(SubListIterable, [
    'elementAt',
    'skip',
    'take',
    'toList',
    'length'
  ]);
  return SubListIterable;
});
_internal.SubListIterable = SubListIterable();
const _length = Symbol('_length');
const _index = Symbol('_index');
const _current = Symbol('_current');
_internal.ListIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class ListIterator extends core.Object {
    new(iterable) {
      this[_iterable] = iterable;
      this[_length] = iterable[dartx.length];
      this[_index] = 0;
      this[_current] = null;
    }
    get current() {
      return this[_current];
    }
    moveNext() {
      let length = this[_iterable][dartx.length];
      if (this[_length] != length) {
        dart.throw(new core.ConcurrentModificationError(this[_iterable]));
      }
      if (dart.notNull(this[_index]) >= dart.notNull(length)) {
        this[_current] = null;
        return false;
      }
      this[_current] = this[_iterable][dartx.elementAt](this[_index]);
      this[_index] = dart.notNull(this[_index]) + 1;
      return true;
    }
  }
  dart.addTypeTests(ListIterator);
  ListIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(ListIterator, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.ListIterator$(E), [IterableOfE()])}),
    fields: () => ({
      [_iterable]: IterableOfE(),
      [_length]: core.int,
      [_index]: core.int,
      [_current]: E
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return ListIterator;
});
_internal.ListIterator = ListIterator();
_internal._Transformation$ = dart.generic((S, T) => {
  const _Transformation = dart.typedef('_Transformation', () => dart.functionType(T, [S]));
  return _Transformation;
});
_internal._Transformation = _Transformation();
const _f = Symbol('_f');
_internal.MappedIterable$ = dart.generic((S, T) => {
  let EfficientLengthMappedIterableOfS$T = () => (EfficientLengthMappedIterableOfS$T = dart.constFn(_internal.EfficientLengthMappedIterable$(S, T)))();
  let MappedIterableOfS$T = () => (MappedIterableOfS$T = dart.constFn(_internal.MappedIterable$(S, T)))();
  let MappedIteratorOfS$T = () => (MappedIteratorOfS$T = dart.constFn(_internal.MappedIterator$(S, T)))();
  let IterableOfS = () => (IterableOfS = dart.constFn(core.Iterable$(S)))();
  let _TransformationOfS$T = () => (_TransformationOfS$T = dart.constFn(_internal._Transformation$(S, T)))();
  class MappedIterable extends core.Iterable$(T) {
    static new(iterable, func) {
      if (_internal.EfficientLength.is(iterable)) {
        return new (EfficientLengthMappedIterableOfS$T())(iterable, func);
      }
      return new (MappedIterableOfS$T())._(iterable, func);
    }
    _(iterable, f) {
      this[_iterable] = iterable;
      this[_f] = f;
      super.new();
    }
    get iterator() {
      return new (MappedIteratorOfS$T())(this[_iterable][dartx.iterator], this[_f]);
    }
    get length() {
      return this[_iterable][dartx.length];
    }
    get isEmpty() {
      return this[_iterable][dartx.isEmpty];
    }
    get first() {
      return this[_f](this[_iterable][dartx.first]);
    }
    get last() {
      return this[_f](this[_iterable][dartx.last]);
    }
    get single() {
      return this[_f](this[_iterable][dartx.single]);
    }
    elementAt(index) {
      return this[_f](this[_iterable][dartx.elementAt](index));
    }
  }
  dart.defineNamedConstructor(MappedIterable, '_');
  dart.setSignature(MappedIterable, {
    constructors: () => ({
      new: dart.definiteFunctionType(_internal.MappedIterable$(S, T), [IterableOfS(), _TransformationOfS$T()]),
      _: dart.definiteFunctionType(_internal.MappedIterable$(S, T), [IterableOfS(), _TransformationOfS$T()])
    }),
    fields: () => ({
      [_iterable]: IterableOfS(),
      [_f]: _TransformationOfS$T()
    }),
    getters: () => ({
      iterator: dart.definiteFunctionType(core.Iterator$(T), []),
      first: dart.definiteFunctionType(T, []),
      last: dart.definiteFunctionType(T, []),
      single: dart.definiteFunctionType(T, [])
    }),
    methods: () => ({elementAt: dart.definiteFunctionType(T, [core.int])})
  });
  dart.defineExtensionMembers(MappedIterable, [
    'elementAt',
    'iterator',
    'length',
    'isEmpty',
    'first',
    'last',
    'single'
  ]);
  return MappedIterable;
});
_internal.MappedIterable = MappedIterable();
_internal.EfficientLengthMappedIterable$ = dart.generic((S, T) => {
  let IterableOfS = () => (IterableOfS = dart.constFn(core.Iterable$(S)))();
  let SToT = () => (SToT = dart.constFn(dart.functionType(T, [S])))();
  class EfficientLengthMappedIterable extends _internal.MappedIterable$(S, T) {
    new(iterable, func) {
      super._(iterable, func);
    }
  }
  EfficientLengthMappedIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(EfficientLengthMappedIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.EfficientLengthMappedIterable$(S, T), [IterableOfS(), SToT()])})
  });
  return EfficientLengthMappedIterable;
});
_internal.EfficientLengthMappedIterable = EfficientLengthMappedIterable();
const _iterator = Symbol('_iterator');
core.Iterator$ = dart.generic(E => {
  class Iterator extends core.Object {}
  dart.addTypeTests(Iterator);
  return Iterator;
});
core.Iterator = Iterator();
_internal.MappedIterator$ = dart.generic((S, T) => {
  let IteratorOfS = () => (IteratorOfS = dart.constFn(core.Iterator$(S)))();
  let _TransformationOfS$T = () => (_TransformationOfS$T = dart.constFn(_internal._Transformation$(S, T)))();
  class MappedIterator extends core.Iterator$(T) {
    new(iterator, f) {
      this[_iterator] = iterator;
      this[_f] = f;
      this[_current] = null;
    }
    moveNext() {
      if (dart.test(this[_iterator].moveNext())) {
        this[_current] = this[_f](this[_iterator].current);
        return true;
      }
      this[_current] = null;
      return false;
    }
    get current() {
      return this[_current];
    }
  }
  dart.setSignature(MappedIterator, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.MappedIterator$(S, T), [IteratorOfS(), _TransformationOfS$T()])}),
    fields: () => ({
      [_current]: T,
      [_iterator]: IteratorOfS(),
      [_f]: _TransformationOfS$T()
    }),
    getters: () => ({current: dart.definiteFunctionType(T, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return MappedIterator;
});
_internal.MappedIterator = MappedIterator();
const _source = Symbol('_source');
_internal.MappedListIterable$ = dart.generic((S, T) => {
  let IterableOfS = () => (IterableOfS = dart.constFn(core.Iterable$(S)))();
  let _TransformationOfS$T = () => (_TransformationOfS$T = dart.constFn(_internal._Transformation$(S, T)))();
  class MappedListIterable extends _internal.ListIterable$(T) {
    new(source, f) {
      this[_source] = source;
      this[_f] = f;
      super.new();
    }
    get length() {
      return this[_source][dartx.length];
    }
    elementAt(index) {
      return this[_f](this[_source][dartx.elementAt](index));
    }
  }
  MappedListIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(MappedListIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.MappedListIterable$(S, T), [IterableOfS(), _TransformationOfS$T()])}),
    fields: () => ({
      [_source]: IterableOfS(),
      [_f]: _TransformationOfS$T()
    }),
    methods: () => ({elementAt: dart.definiteFunctionType(T, [core.int])})
  });
  dart.defineExtensionMembers(MappedListIterable, ['elementAt', 'length']);
  return MappedListIterable;
});
_internal.MappedListIterable = MappedListIterable();
_internal._ElementPredicate$ = dart.generic(E => {
  const _ElementPredicate = dart.typedef('_ElementPredicate', () => dart.functionType(core.bool, [E]));
  return _ElementPredicate;
});
_internal._ElementPredicate = _ElementPredicate();
_internal.WhereIterable$ = dart.generic(E => {
  let WhereIteratorOfE = () => (WhereIteratorOfE = dart.constFn(_internal.WhereIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let _ElementPredicateOfE = () => (_ElementPredicateOfE = dart.constFn(_internal._ElementPredicate$(E)))();
  class WhereIterable extends core.Iterable$(E) {
    new(iterable, f) {
      this[_iterable] = iterable;
      this[_f] = f;
      super.new();
    }
    get iterator() {
      return new (WhereIteratorOfE())(this[_iterable][dartx.iterator], this[_f]);
    }
  }
  dart.setSignature(WhereIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.WhereIterable$(E), [IterableOfE(), _ElementPredicateOfE()])}),
    fields: () => ({
      [_iterable]: IterableOfE(),
      [_f]: _ElementPredicateOfE()
    }),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(E), [])})
  });
  dart.defineExtensionMembers(WhereIterable, ['iterator']);
  return WhereIterable;
});
_internal.WhereIterable = WhereIterable();
_internal.WhereIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let _ElementPredicateOfE = () => (_ElementPredicateOfE = dart.constFn(_internal._ElementPredicate$(E)))();
  class WhereIterator extends core.Iterator$(E) {
    new(iterator, f) {
      this[_iterator] = iterator;
      this[_f] = f;
    }
    moveNext() {
      while (dart.test(this[_iterator].moveNext())) {
        if (dart.test(this[_f](this[_iterator].current))) {
          return true;
        }
      }
      return false;
    }
    get current() {
      return this[_iterator].current;
    }
  }
  dart.setSignature(WhereIterator, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.WhereIterator$(E), [IteratorOfE(), _ElementPredicateOfE()])}),
    fields: () => ({
      [_iterator]: IteratorOfE(),
      [_f]: _ElementPredicateOfE()
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return WhereIterator;
});
_internal.WhereIterator = WhereIterator();
_internal._ExpandFunction$ = dart.generic((S, T) => {
  const _ExpandFunction = dart.typedef('_ExpandFunction', () => dart.functionType(core.Iterable$(T), [S]));
  return _ExpandFunction;
});
_internal._ExpandFunction = _ExpandFunction();
_internal.ExpandIterable$ = dart.generic((S, T) => {
  let ExpandIteratorOfS$T = () => (ExpandIteratorOfS$T = dart.constFn(_internal.ExpandIterator$(S, T)))();
  let IterableOfS = () => (IterableOfS = dart.constFn(core.Iterable$(S)))();
  let _ExpandFunctionOfS$T = () => (_ExpandFunctionOfS$T = dart.constFn(_internal._ExpandFunction$(S, T)))();
  let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
  class ExpandIterable extends core.Iterable$(T) {
    new(iterable, f) {
      this[_iterable] = iterable;
      this[_f] = f;
      super.new();
    }
    get iterator() {
      return new (ExpandIteratorOfS$T())(this[_iterable][dartx.iterator], this[_f]);
    }
  }
  dart.setSignature(ExpandIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.ExpandIterable$(S, T), [IterableOfS(), _ExpandFunctionOfS$T()])}),
    fields: () => ({
      [_iterable]: IterableOfS(),
      [_f]: _ExpandFunctionOfS$T()
    }),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(T), [])})
  });
  dart.defineExtensionMembers(ExpandIterable, ['iterator']);
  return ExpandIterable;
});
_internal.ExpandIterable = ExpandIterable();
const _currentExpansion = Symbol('_currentExpansion');
_internal.ExpandIterator$ = dart.generic((S, T) => {
  let IteratorOfS = () => (IteratorOfS = dart.constFn(core.Iterator$(S)))();
  let _ExpandFunctionOfS$T = () => (_ExpandFunctionOfS$T = dart.constFn(_internal._ExpandFunction$(S, T)))();
  let EmptyIteratorOfT = () => (EmptyIteratorOfT = dart.constFn(_internal.EmptyIterator$(T)))();
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
  class ExpandIterator extends core.Object {
    new(iterator, f) {
      this[_iterator] = iterator;
      this[_f] = f;
      this[_currentExpansion] = dart.const(new (EmptyIteratorOfT())());
      this[_current] = null;
    }
    get current() {
      return this[_current];
    }
    moveNext() {
      if (this[_currentExpansion] == null) return false;
      while (!dart.test(this[_currentExpansion].moveNext())) {
        this[_current] = null;
        if (dart.test(this[_iterator].moveNext())) {
          this[_currentExpansion] = null;
          this[_currentExpansion] = this[_f](this[_iterator].current)[dartx.iterator];
        } else {
          return false;
        }
      }
      this[_current] = this[_currentExpansion].current;
      return true;
    }
  }
  dart.addTypeTests(ExpandIterator);
  ExpandIterator[dart.implements] = () => [IteratorOfT()];
  dart.setSignature(ExpandIterator, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.ExpandIterator$(S, T), [IteratorOfS(), _ExpandFunctionOfS$T()])}),
    fields: () => ({
      [_iterator]: IteratorOfS(),
      [_f]: _ExpandFunctionOfS$T(),
      [_currentExpansion]: IteratorOfT(),
      [_current]: T
    }),
    getters: () => ({current: dart.definiteFunctionType(T, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return ExpandIterator;
});
_internal.ExpandIterator = ExpandIterator();
const _takeCount = Symbol('_takeCount');
_internal.TakeIterable$ = dart.generic(E => {
  let EfficientLengthTakeIterableOfE = () => (EfficientLengthTakeIterableOfE = dart.constFn(_internal.EfficientLengthTakeIterable$(E)))();
  let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
  let TakeIteratorOfE = () => (TakeIteratorOfE = dart.constFn(_internal.TakeIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class TakeIterable extends core.Iterable$(E) {
    static new(iterable, takeCount) {
      if (!(typeof takeCount == 'number') || dart.notNull(takeCount) < 0) {
        dart.throw(new core.ArgumentError(takeCount));
      }
      if (_internal.EfficientLength.is(iterable)) {
        return new (EfficientLengthTakeIterableOfE())(iterable, takeCount);
      }
      return new (TakeIterableOfE())._(iterable, takeCount);
    }
    _(iterable, takeCount) {
      this[_iterable] = iterable;
      this[_takeCount] = takeCount;
      super.new();
    }
    get iterator() {
      return new (TakeIteratorOfE())(this[_iterable][dartx.iterator], this[_takeCount]);
    }
  }
  dart.defineNamedConstructor(TakeIterable, '_');
  dart.setSignature(TakeIterable, {
    constructors: () => ({
      new: dart.definiteFunctionType(_internal.TakeIterable$(E), [IterableOfE(), core.int]),
      _: dart.definiteFunctionType(_internal.TakeIterable$(E), [IterableOfE(), core.int])
    }),
    fields: () => ({
      [_iterable]: IterableOfE(),
      [_takeCount]: core.int
    }),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(E), [])})
  });
  dart.defineExtensionMembers(TakeIterable, ['iterator']);
  return TakeIterable;
});
_internal.TakeIterable = TakeIterable();
_internal.EfficientLengthTakeIterable$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class EfficientLengthTakeIterable extends _internal.TakeIterable$(E) {
    new(iterable, takeCount) {
      super._(iterable, takeCount);
    }
    get length() {
      let iterableLength = this[_iterable][dartx.length];
      if (dart.notNull(iterableLength) > dart.notNull(this[_takeCount])) return this[_takeCount];
      return iterableLength;
    }
  }
  EfficientLengthTakeIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(EfficientLengthTakeIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.EfficientLengthTakeIterable$(E), [IterableOfE(), core.int])})
  });
  dart.defineExtensionMembers(EfficientLengthTakeIterable, ['length']);
  return EfficientLengthTakeIterable;
});
_internal.EfficientLengthTakeIterable = EfficientLengthTakeIterable();
const _remaining = Symbol('_remaining');
_internal.TakeIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class TakeIterator extends core.Iterator$(E) {
    new(iterator, remaining) {
      this[_iterator] = iterator;
      this[_remaining] = remaining;
      dart.assert(typeof this[_remaining] == 'number' && dart.notNull(this[_remaining]) >= 0);
    }
    moveNext() {
      this[_remaining] = dart.notNull(this[_remaining]) - 1;
      if (dart.notNull(this[_remaining]) >= 0) {
        return this[_iterator].moveNext();
      }
      this[_remaining] = -1;
      return false;
    }
    get current() {
      if (dart.notNull(this[_remaining]) < 0) return null;
      return this[_iterator].current;
    }
  }
  dart.setSignature(TakeIterator, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.TakeIterator$(E), [IteratorOfE(), core.int])}),
    fields: () => ({
      [_iterator]: IteratorOfE(),
      [_remaining]: core.int
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return TakeIterator;
});
_internal.TakeIterator = TakeIterator();
_internal.TakeWhileIterable$ = dart.generic(E => {
  let TakeWhileIteratorOfE = () => (TakeWhileIteratorOfE = dart.constFn(_internal.TakeWhileIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let _ElementPredicateOfE = () => (_ElementPredicateOfE = dart.constFn(_internal._ElementPredicate$(E)))();
  class TakeWhileIterable extends core.Iterable$(E) {
    new(iterable, f) {
      this[_iterable] = iterable;
      this[_f] = f;
      super.new();
    }
    get iterator() {
      return new (TakeWhileIteratorOfE())(this[_iterable][dartx.iterator], this[_f]);
    }
  }
  dart.setSignature(TakeWhileIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.TakeWhileIterable$(E), [IterableOfE(), _ElementPredicateOfE()])}),
    fields: () => ({
      [_iterable]: IterableOfE(),
      [_f]: _ElementPredicateOfE()
    }),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(E), [])})
  });
  dart.defineExtensionMembers(TakeWhileIterable, ['iterator']);
  return TakeWhileIterable;
});
_internal.TakeWhileIterable = TakeWhileIterable();
const _isFinished = Symbol('_isFinished');
_internal.TakeWhileIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let _ElementPredicateOfE = () => (_ElementPredicateOfE = dart.constFn(_internal._ElementPredicate$(E)))();
  class TakeWhileIterator extends core.Iterator$(E) {
    new(iterator, f) {
      this[_iterator] = iterator;
      this[_f] = f;
      this[_isFinished] = false;
    }
    moveNext() {
      if (dart.test(this[_isFinished])) return false;
      if (!dart.test(this[_iterator].moveNext()) || !dart.test(this[_f](this[_iterator].current))) {
        this[_isFinished] = true;
        return false;
      }
      return true;
    }
    get current() {
      if (dart.test(this[_isFinished])) return null;
      return this[_iterator].current;
    }
  }
  dart.setSignature(TakeWhileIterator, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.TakeWhileIterator$(E), [IteratorOfE(), _ElementPredicateOfE()])}),
    fields: () => ({
      [_iterator]: IteratorOfE(),
      [_f]: _ElementPredicateOfE(),
      [_isFinished]: core.bool
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return TakeWhileIterator;
});
_internal.TakeWhileIterator = TakeWhileIterator();
const _skipCount = Symbol('_skipCount');
_internal.SkipIterable$ = dart.generic(E => {
  let EfficientLengthSkipIterableOfE = () => (EfficientLengthSkipIterableOfE = dart.constFn(_internal.EfficientLengthSkipIterable$(E)))();
  let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
  let SkipIteratorOfE = () => (SkipIteratorOfE = dart.constFn(_internal.SkipIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class SkipIterable extends core.Iterable$(E) {
    static new(iterable, count) {
      if (_internal.EfficientLength.is(iterable)) {
        return new (EfficientLengthSkipIterableOfE())(iterable, count);
      }
      return new (SkipIterableOfE())._(iterable, count);
    }
    _(iterable, skipCount) {
      this[_iterable] = iterable;
      this[_skipCount] = skipCount;
      super.new();
      if (!(typeof this[_skipCount] == 'number')) {
        dart.throw(new core.ArgumentError.value(this[_skipCount], "count is not an integer"));
      }
      core.RangeError.checkNotNegative(this[_skipCount], "count");
    }
    skip(count) {
      if (!(typeof this[_skipCount] == 'number')) {
        dart.throw(new core.ArgumentError.value(this[_skipCount], "count is not an integer"));
      }
      core.RangeError.checkNotNegative(this[_skipCount], "count");
      return new (SkipIterableOfE())._(this[_iterable], dart.notNull(this[_skipCount]) + dart.notNull(count));
    }
    get iterator() {
      return new (SkipIteratorOfE())(this[_iterable][dartx.iterator], this[_skipCount]);
    }
  }
  dart.defineNamedConstructor(SkipIterable, '_');
  dart.setSignature(SkipIterable, {
    constructors: () => ({
      new: dart.definiteFunctionType(_internal.SkipIterable$(E), [IterableOfE(), core.int]),
      _: dart.definiteFunctionType(_internal.SkipIterable$(E), [IterableOfE(), core.int])
    }),
    fields: () => ({
      [_iterable]: IterableOfE(),
      [_skipCount]: core.int
    }),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(E), [])}),
    methods: () => ({skip: dart.definiteFunctionType(core.Iterable$(E), [core.int])})
  });
  dart.defineExtensionMembers(SkipIterable, ['skip', 'iterator']);
  return SkipIterable;
});
_internal.SkipIterable = SkipIterable();
_internal.EfficientLengthSkipIterable$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class EfficientLengthSkipIterable extends _internal.SkipIterable$(E) {
    new(iterable, skipCount) {
      super._(iterable, skipCount);
    }
    get length() {
      let length = dart.notNull(this[_iterable][dartx.length]) - dart.notNull(this[_skipCount]);
      if (length >= 0) return length;
      return 0;
    }
  }
  EfficientLengthSkipIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(EfficientLengthSkipIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.EfficientLengthSkipIterable$(E), [IterableOfE(), core.int])})
  });
  dart.defineExtensionMembers(EfficientLengthSkipIterable, ['length']);
  return EfficientLengthSkipIterable;
});
_internal.EfficientLengthSkipIterable = EfficientLengthSkipIterable();
_internal.SkipIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class SkipIterator extends core.Iterator$(E) {
    new(iterator, skipCount) {
      this[_iterator] = iterator;
      this[_skipCount] = skipCount;
      dart.assert(typeof this[_skipCount] == 'number' && dart.notNull(this[_skipCount]) >= 0);
    }
    moveNext() {
      for (let i = 0; i < dart.notNull(this[_skipCount]); i++)
        this[_iterator].moveNext();
      this[_skipCount] = 0;
      return this[_iterator].moveNext();
    }
    get current() {
      return this[_iterator].current;
    }
  }
  dart.setSignature(SkipIterator, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.SkipIterator$(E), [IteratorOfE(), core.int])}),
    fields: () => ({
      [_iterator]: IteratorOfE(),
      [_skipCount]: core.int
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return SkipIterator;
});
_internal.SkipIterator = SkipIterator();
_internal.SkipWhileIterable$ = dart.generic(E => {
  let SkipWhileIteratorOfE = () => (SkipWhileIteratorOfE = dart.constFn(_internal.SkipWhileIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let _ElementPredicateOfE = () => (_ElementPredicateOfE = dart.constFn(_internal._ElementPredicate$(E)))();
  class SkipWhileIterable extends core.Iterable$(E) {
    new(iterable, f) {
      this[_iterable] = iterable;
      this[_f] = f;
      super.new();
    }
    get iterator() {
      return new (SkipWhileIteratorOfE())(this[_iterable][dartx.iterator], this[_f]);
    }
  }
  dart.setSignature(SkipWhileIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.SkipWhileIterable$(E), [IterableOfE(), _ElementPredicateOfE()])}),
    fields: () => ({
      [_iterable]: IterableOfE(),
      [_f]: _ElementPredicateOfE()
    }),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(E), [])})
  });
  dart.defineExtensionMembers(SkipWhileIterable, ['iterator']);
  return SkipWhileIterable;
});
_internal.SkipWhileIterable = SkipWhileIterable();
const _hasSkipped = Symbol('_hasSkipped');
_internal.SkipWhileIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let _ElementPredicateOfE = () => (_ElementPredicateOfE = dart.constFn(_internal._ElementPredicate$(E)))();
  class SkipWhileIterator extends core.Iterator$(E) {
    new(iterator, f) {
      this[_iterator] = iterator;
      this[_f] = f;
      this[_hasSkipped] = false;
    }
    moveNext() {
      if (!dart.test(this[_hasSkipped])) {
        this[_hasSkipped] = true;
        while (dart.test(this[_iterator].moveNext())) {
          if (!dart.test(this[_f](this[_iterator].current))) return true;
        }
      }
      return this[_iterator].moveNext();
    }
    get current() {
      return this[_iterator].current;
    }
  }
  dart.setSignature(SkipWhileIterator, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.SkipWhileIterator$(E), [IteratorOfE(), _ElementPredicateOfE()])}),
    fields: () => ({
      [_iterator]: IteratorOfE(),
      [_f]: _ElementPredicateOfE(),
      [_hasSkipped]: core.bool
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return SkipWhileIterator;
});
_internal.SkipWhileIterator = SkipWhileIterator();
_internal.EmptyIterable$ = dart.generic(E => {
  let EmptyIteratorOfE = () => (EmptyIteratorOfE = dart.constFn(_internal.EmptyIterator$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.functionType(E, [])))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.functionType(E, [E, E])))();
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  class EmptyIterable extends core.Iterable$(E) {
    new() {
      super.new();
    }
    get iterator() {
      return dart.const(new (EmptyIteratorOfE())());
    }
    forEach(action) {}
    get isEmpty() {
      return true;
    }
    get length() {
      return 0;
    }
    get first() {
      dart.throw(_internal.IterableElementError.noElement());
    }
    get last() {
      dart.throw(_internal.IterableElementError.noElement());
    }
    get single() {
      dart.throw(_internal.IterableElementError.noElement());
    }
    elementAt(index) {
      dart.throw(new core.RangeError.range(index, 0, 0, "index"));
    }
    contains(element) {
      return false;
    }
    every(test) {
      return true;
    }
    any(test) {
      return false;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    join(separator) {
      if (separator === void 0) separator = "";
      return "";
    }
    where(test) {
      return this;
    }
    map(T) {
      return f => {
        return dart.const(new (_internal.EmptyIterable$(T))());
      };
    }
    reduce(combine) {
      EAndEToE()._check(combine);
      dart.throw(_internal.IterableElementError.noElement());
    }
    fold(T) {
      return (initialValue, combine) => {
        return initialValue;
      };
    }
    skip(count) {
      core.RangeError.checkNotNegative(count, "count");
      return this;
    }
    skipWhile(test) {
      return this;
    }
    take(count) {
      core.RangeError.checkNotNegative(count, "count");
      return this;
    }
    takeWhile(test) {
      return this;
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      return dart.test(growable) ? JSArrayOfE().of([]) : ListOfE().new(0);
    }
    toSet() {
      return SetOfE().new();
    }
  }
  EmptyIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(EmptyIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.EmptyIterable$(E), [])}),
    getters: () => ({
      iterator: dart.definiteFunctionType(core.Iterator$(E), []),
      first: dart.definiteFunctionType(E, []),
      last: dart.definiteFunctionType(E, []),
      single: dart.definiteFunctionType(E, [])
    }),
    methods: () => ({
      forEach: dart.definiteFunctionType(dart.void, [ETovoid()]),
      elementAt: dart.definiteFunctionType(E, [core.int]),
      every: dart.definiteFunctionType(core.bool, [ETobool()]),
      any: dart.definiteFunctionType(core.bool, [ETobool()]),
      firstWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      lastWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      singleWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      where: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      map: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(T, [E])]]),
      reduce: dart.definiteFunctionType(E, [EAndEToE()]),
      fold: dart.definiteFunctionType(T => [T, [T, dart.functionType(T, [T, E])]]),
      skip: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      skipWhile: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      take: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      takeWhile: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      toList: dart.definiteFunctionType(core.List$(E), [], {growable: core.bool}),
      toSet: dart.definiteFunctionType(core.Set$(E), [])
    })
  });
  dart.defineExtensionMembers(EmptyIterable, [
    'forEach',
    'elementAt',
    'contains',
    'every',
    'any',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'join',
    'where',
    'map',
    'reduce',
    'fold',
    'skip',
    'skipWhile',
    'take',
    'takeWhile',
    'toList',
    'toSet',
    'iterator',
    'isEmpty',
    'length',
    'first',
    'last',
    'single'
  ]);
  return EmptyIterable;
});
_internal.EmptyIterable = EmptyIterable();
_internal.EmptyIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class EmptyIterator extends core.Object {
    new() {
    }
    moveNext() {
      return false;
    }
    get current() {
      return null;
    }
  }
  dart.addTypeTests(EmptyIterator);
  EmptyIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(EmptyIterator, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.EmptyIterator$(E), [])}),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return EmptyIterator;
});
_internal.EmptyIterator = EmptyIterator();
_internal.IterableElementError = class IterableElementError extends core.Object {
  static noElement() {
    return new core.StateError("No element");
  }
  static tooMany() {
    return new core.StateError("Too many elements");
  }
  static tooFew() {
    return new core.StateError("Too few elements");
  }
};
dart.setSignature(_internal.IterableElementError, {
  statics: () => ({
    noElement: dart.definiteFunctionType(core.StateError, []),
    tooMany: dart.definiteFunctionType(core.StateError, []),
    tooFew: dart.definiteFunctionType(core.StateError, [])
  }),
  names: ['noElement', 'tooMany', 'tooFew']
});
_internal.FixedLengthListMixin$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  dart.defineExtensionNames([
    'length',
    'add',
    'insert',
    'insertAll',
    'addAll',
    'remove',
    'removeWhere',
    'retainWhere',
    'clear',
    'removeAt',
    'removeLast',
    'removeRange',
    'replaceRange'
  ]);
  class FixedLengthListMixin extends core.Object {
    set length(newLength) {
      dart.throw(new core.UnsupportedError("Cannot change the length of a fixed-length list"));
    }
    add(value) {
      E._check(value);
      dart.throw(new core.UnsupportedError("Cannot add to a fixed-length list"));
    }
    insert(index, value) {
      E._check(value);
      dart.throw(new core.UnsupportedError("Cannot add to a fixed-length list"));
    }
    insertAll(at, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError("Cannot add to a fixed-length list"));
    }
    addAll(iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError("Cannot add to a fixed-length list"));
    }
    remove(element) {
      dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
    }
    removeWhere(test) {
      dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
    }
    retainWhere(test) {
      dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
    }
    clear() {
      dart.throw(new core.UnsupportedError("Cannot clear a fixed-length list"));
    }
    removeAt(index) {
      dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
    }
    removeLast() {
      dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
    }
    removeRange(start, end) {
      dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
    }
    replaceRange(start, end, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError("Cannot remove from a fixed-length list"));
    }
  }
  dart.addTypeTests(FixedLengthListMixin);
  dart.setSignature(FixedLengthListMixin, {
    setters: () => ({length: dart.definiteFunctionType(dart.void, [core.int])}),
    methods: () => ({
      add: dart.definiteFunctionType(dart.void, [E]),
      insert: dart.definiteFunctionType(dart.void, [core.int, E]),
      insertAll: dart.definiteFunctionType(dart.void, [core.int, IterableOfE()]),
      addAll: dart.definiteFunctionType(dart.void, [IterableOfE()]),
      remove: dart.definiteFunctionType(core.bool, [core.Object]),
      removeWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      retainWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      clear: dart.definiteFunctionType(dart.void, []),
      removeAt: dart.definiteFunctionType(E, [core.int]),
      removeLast: dart.definiteFunctionType(E, []),
      removeRange: dart.definiteFunctionType(dart.void, [core.int, core.int]),
      replaceRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfE()])
    })
  });
  dart.defineExtensionMembers(FixedLengthListMixin, [
    'add',
    'insert',
    'insertAll',
    'addAll',
    'remove',
    'removeWhere',
    'retainWhere',
    'clear',
    'removeAt',
    'removeLast',
    'removeRange',
    'replaceRange',
    'length'
  ]);
  return FixedLengthListMixin;
});
_internal.FixedLengthListMixin = FixedLengthListMixin();
_internal.FixedLengthListBase$ = dart.generic(E => {
  class FixedLengthListBase extends dart.mixin(collection.ListBase$(E), _internal.FixedLengthListMixin$(E)) {
    new() {
      super.new();
    }
  }
  return FixedLengthListBase;
});
_internal.FixedLengthListBase = FixedLengthListBase();
const _backedList = Symbol('_backedList');
_internal._ListIndicesIterable = class _ListIndicesIterable extends _internal.ListIterable$(core.int) {
  new(backedList) {
    this[_backedList] = backedList;
    super.new();
  }
  get length() {
    return this[_backedList][dartx.length];
  }
  elementAt(index) {
    core.RangeError.checkValidIndex(index, this);
    return index;
  }
};
dart.addSimpleTypeTests(_internal._ListIndicesIterable);
dart.setSignature(_internal._ListIndicesIterable, {
  constructors: () => ({new: dart.definiteFunctionType(_internal._ListIndicesIterable, [core.List])}),
  fields: () => ({[_backedList]: core.List}),
  methods: () => ({elementAt: dart.definiteFunctionType(core.int, [core.int])})
});
dart.defineExtensionMembers(_internal._ListIndicesIterable, ['elementAt', 'length']);
const _values = Symbol('_values');
_internal.ListMapView$ = dart.generic(E => {
  let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.functionType(E, [])))();
  let MapOfint$E = () => (MapOfint$E = dart.constFn(core.Map$(core.int, E)))();
  let intAndETovoid = () => (intAndETovoid = dart.constFn(dart.functionType(dart.void, [core.int, E])))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  class ListMapView extends core.Object {
    new(values) {
      this[_values] = values;
    }
    _get(key) {
      return dart.test(this.containsKey(key)) ? this[_values][dartx._get](core.int._check(key)) : null;
    }
    get length() {
      return this[_values][dartx.length];
    }
    get values() {
      return new (SubListIterableOfE())(this[_values], 0, null);
    }
    get keys() {
      return new _internal._ListIndicesIterable(this[_values]);
    }
    get isEmpty() {
      return this[_values][dartx.isEmpty];
    }
    get isNotEmpty() {
      return this[_values][dartx.isNotEmpty];
    }
    containsValue(value) {
      return this[_values][dartx.contains](value);
    }
    containsKey(key) {
      return typeof key == 'number' && dart.notNull(key) >= 0 && dart.notNull(key) < dart.notNull(this.length);
    }
    forEach(f) {
      let length = this[_values][dartx.length];
      for (let i = 0; i < dart.notNull(length); i++) {
        f(i, this[_values][dartx._get](i));
        if (length != this[_values][dartx.length]) {
          dart.throw(new core.ConcurrentModificationError(this[_values]));
        }
      }
    }
    _set(key, value) {
      E._check(value);
      dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"));
      return value;
    }
    putIfAbsent(key, ifAbsent) {
      VoidToE()._check(ifAbsent);
      dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"));
    }
    remove(key) {
      dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"));
    }
    clear() {
      dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"));
    }
    addAll(other) {
      MapOfint$E()._check(other);
      dart.throw(new core.UnsupportedError("Cannot modify an unmodifiable map"));
    }
    toString() {
      return collection.Maps.mapToString(this);
    }
  }
  dart.addTypeTests(ListMapView);
  ListMapView[dart.implements] = () => [MapOfint$E()];
  dart.setSignature(ListMapView, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.ListMapView$(E), [ListOfE()])}),
    fields: () => ({[_values]: ListOfE()}),
    getters: () => ({
      length: dart.definiteFunctionType(core.int, []),
      values: dart.definiteFunctionType(core.Iterable$(E), []),
      keys: dart.definiteFunctionType(core.Iterable$(core.int), []),
      isEmpty: dart.definiteFunctionType(core.bool, []),
      isNotEmpty: dart.definiteFunctionType(core.bool, [])
    }),
    methods: () => ({
      _get: dart.definiteFunctionType(E, [core.Object]),
      containsValue: dart.definiteFunctionType(core.bool, [core.Object]),
      containsKey: dart.definiteFunctionType(core.bool, [core.Object]),
      forEach: dart.definiteFunctionType(dart.void, [intAndETovoid()]),
      _set: dart.definiteFunctionType(dart.void, [core.int, E]),
      putIfAbsent: dart.definiteFunctionType(E, [core.int, VoidToE()]),
      remove: dart.definiteFunctionType(E, [core.Object]),
      clear: dart.definiteFunctionType(dart.void, []),
      addAll: dart.definiteFunctionType(dart.void, [MapOfint$E()])
    })
  });
  dart.defineExtensionMembers(ListMapView, [
    '_get',
    'containsValue',
    'containsKey',
    'forEach',
    '_set',
    'putIfAbsent',
    'remove',
    'clear',
    'addAll',
    'length',
    'values',
    'keys',
    'isEmpty',
    'isNotEmpty'
  ]);
  return ListMapView;
});
_internal.ListMapView = ListMapView();
_internal.ReversedListIterable$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class ReversedListIterable extends _internal.ListIterable$(E) {
    new(source) {
      this[_source] = source;
      super.new();
    }
    get length() {
      return this[_source][dartx.length];
    }
    elementAt(index) {
      return this[_source][dartx.elementAt](dart.notNull(this[_source][dartx.length]) - 1 - dart.notNull(index));
    }
  }
  dart.setSignature(ReversedListIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_internal.ReversedListIterable$(E), [IterableOfE()])}),
    fields: () => ({[_source]: IterableOfE()}),
    methods: () => ({elementAt: dart.definiteFunctionType(E, [core.int])})
  });
  dart.defineExtensionMembers(ReversedListIterable, ['elementAt', 'length']);
  return ReversedListIterable;
});
_internal.ReversedListIterable = ReversedListIterable();
_internal.UnmodifiableListError = class UnmodifiableListError extends core.Object {
  static add() {
    return new core.UnsupportedError("Cannot add to unmodifiable List");
  }
  static change() {
    return new core.UnsupportedError("Cannot change the content of an unmodifiable List");
  }
  static length() {
    return new core.UnsupportedError("Cannot change length of unmodifiable List");
  }
  static remove() {
    return new core.UnsupportedError("Cannot remove from unmodifiable List");
  }
};
dart.setSignature(_internal.UnmodifiableListError, {
  statics: () => ({
    add: dart.definiteFunctionType(core.UnsupportedError, []),
    change: dart.definiteFunctionType(core.UnsupportedError, []),
    length: dart.definiteFunctionType(core.UnsupportedError, []),
    remove: dart.definiteFunctionType(core.UnsupportedError, [])
  }),
  names: ['add', 'change', 'length', 'remove']
});
_internal.NonGrowableListError = class NonGrowableListError extends core.Object {
  static add() {
    return new core.UnsupportedError("Cannot add to non-growable List");
  }
  static length() {
    return new core.UnsupportedError("Cannot change length of non-growable List");
  }
  static remove() {
    return new core.UnsupportedError("Cannot remove from non-growable List");
  }
};
dart.setSignature(_internal.NonGrowableListError, {
  statics: () => ({
    add: dart.definiteFunctionType(core.UnsupportedError, []),
    length: dart.definiteFunctionType(core.UnsupportedError, []),
    remove: dart.definiteFunctionType(core.UnsupportedError, [])
  }),
  names: ['add', 'length', 'remove']
});
_internal.makeListFixedLength = function(E) {
  return growableList => {
    _interceptors.JSArray.markFixedList(growableList);
    return growableList;
  };
};
dart.lazyFn(_internal.makeListFixedLength, () => ListOfEToListOfE());
_internal.makeFixedListUnmodifiable = function(E) {
  return fixedLengthList => {
    _interceptors.JSArray.markUnmodifiableList(fixedLengthList);
    return fixedLengthList;
  };
};
dart.lazyFn(_internal.makeFixedListUnmodifiable, () => ListOfEToListOfE());
_internal.Lists = class Lists extends core.Object {
  static copy(src, srcStart, dst, dstStart, count) {
    if (dart.notNull(srcStart) < dart.notNull(dstStart)) {
      for (let i = dart.notNull(srcStart) + dart.notNull(count) - 1, j = dart.notNull(dstStart) + dart.notNull(count) - 1; i >= dart.notNull(srcStart); i--, j--) {
        dst[dartx._set](j, src[dartx._get](i));
      }
    } else {
      for (let i = srcStart, j = dstStart; dart.notNull(i) < dart.notNull(srcStart) + dart.notNull(count); i = dart.notNull(i) + 1, j = dart.notNull(j) + 1) {
        dst[dartx._set](j, src[dartx._get](i));
      }
    }
  }
  static areEqual(a, b) {
    if (core.identical(a, b)) return true;
    if (!core.List.is(b)) return false;
    let length = a[dartx.length];
    if (!dart.equals(length, dart.dload(b, 'length'))) return false;
    for (let i = 0; i < dart.notNull(length); i++) {
      if (!core.identical(a[dartx._get](i), dart.dindex(b, i))) return false;
    }
    return true;
  }
  static indexOf(a, element, startIndex, endIndex) {
    if (dart.notNull(startIndex) >= dart.notNull(a[dartx.length])) {
      return -1;
    }
    if (dart.notNull(startIndex) < 0) {
      startIndex = 0;
    }
    for (let i = startIndex; dart.notNull(i) < dart.notNull(endIndex); i = dart.notNull(i) + 1) {
      if (dart.equals(a[dartx._get](i), element)) {
        return i;
      }
    }
    return -1;
  }
  static lastIndexOf(a, element, startIndex) {
    if (dart.notNull(startIndex) < 0) {
      return -1;
    }
    if (dart.notNull(startIndex) >= dart.notNull(a[dartx.length])) {
      startIndex = dart.notNull(a[dartx.length]) - 1;
    }
    for (let i = startIndex; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
      if (dart.equals(a[dartx._get](i), element)) {
        return i;
      }
    }
    return -1;
  }
  static indicesCheck(a, start, end) {
    core.RangeError.checkValidRange(start, end, a[dartx.length]);
  }
  static rangeCheck(a, start, length) {
    core.RangeError.checkNotNegative(length);
    core.RangeError.checkNotNegative(start);
    if (dart.notNull(start) + dart.notNull(length) > dart.notNull(a[dartx.length])) {
      let message = dart.str`${start} + ${length} must be in the range [0..${a[dartx.length]}]`;
      dart.throw(new core.RangeError.range(length, 0, dart.notNull(a[dartx.length]) - dart.notNull(start), "length", message));
    }
  }
};
dart.setSignature(_internal.Lists, {
  statics: () => ({
    copy: dart.definiteFunctionType(dart.void, [core.List, core.int, core.List, core.int, core.int]),
    areEqual: dart.definiteFunctionType(core.bool, [core.List, dart.dynamic]),
    indexOf: dart.definiteFunctionType(core.int, [core.List, core.Object, core.int, core.int]),
    lastIndexOf: dart.definiteFunctionType(core.int, [core.List, core.Object, core.int]),
    indicesCheck: dart.definiteFunctionType(dart.void, [core.List, core.int, core.int]),
    rangeCheck: dart.definiteFunctionType(dart.void, [core.List, core.int, core.int])
  }),
  names: ['copy', 'areEqual', 'indexOf', 'lastIndexOf', 'indicesCheck', 'rangeCheck']
});
_internal.printToZone = null;
_internal.printToConsole = function(line) {
  _js_primitives.printString(dart.str`${line}`);
};
dart.lazyFn(_internal.printToConsole, () => StringTovoid());
_internal.Sort = class Sort extends core.Object {
  static sort(E) {
    return (a, compare) => {
      _internal.Sort._doSort(E)(a, 0, dart.notNull(a[dartx.length]) - 1, compare);
    };
  }
  static sortRange(E) {
    return (a, from, to, compare) => {
      if (dart.notNull(from) < 0 || dart.notNull(to) > dart.notNull(a[dartx.length]) || dart.notNull(to) < dart.notNull(from)) {
        dart.throw("OutOfRange");
      }
      _internal.Sort._doSort(E)(a, from, dart.notNull(to) - 1, compare);
    };
  }
  static _doSort(E) {
    return (a, left, right, compare) => {
      if (dart.notNull(right) - dart.notNull(left) <= _internal.Sort._INSERTION_SORT_THRESHOLD) {
        _internal.Sort._insertionSort(E)(a, left, right, compare);
      } else {
        _internal.Sort._dualPivotQuicksort(E)(a, left, right, compare);
      }
    };
  }
  static _insertionSort(E) {
    return (a, left, right, compare) => {
      for (let i = dart.notNull(left) + 1; i <= dart.notNull(right); i++) {
        let el = a[dartx._get](i);
        let j = i;
        while (j > dart.notNull(left) && dart.notNull(compare(a[dartx._get](j - 1), el)) > 0) {
          a[dartx._set](j, a[dartx._get](j - 1));
          j--;
        }
        a[dartx._set](j, el);
      }
    };
  }
  static _dualPivotQuicksort(E) {
    return (a, left, right, compare) => {
      dart.assert(dart.notNull(right) - dart.notNull(left) > _internal.Sort._INSERTION_SORT_THRESHOLD);
      let sixth = ((dart.notNull(right) - dart.notNull(left) + 1) / 6)[dartx.truncate]();
      let index1 = dart.notNull(left) + sixth;
      let index5 = dart.notNull(right) - sixth;
      let index3 = ((dart.notNull(left) + dart.notNull(right)) / 2)[dartx.truncate]();
      let index2 = index3 - sixth;
      let index4 = index3 + sixth;
      let el1 = a[dartx._get](index1);
      let el2 = a[dartx._get](index2);
      let el3 = a[dartx._get](index3);
      let el4 = a[dartx._get](index4);
      let el5 = a[dartx._get](index5);
      if (dart.notNull(compare(el1, el2)) > 0) {
        let t = el1;
        el1 = el2;
        el2 = t;
      }
      if (dart.notNull(compare(el4, el5)) > 0) {
        let t = el4;
        el4 = el5;
        el5 = t;
      }
      if (dart.notNull(compare(el1, el3)) > 0) {
        let t = el1;
        el1 = el3;
        el3 = t;
      }
      if (dart.notNull(compare(el2, el3)) > 0) {
        let t = el2;
        el2 = el3;
        el3 = t;
      }
      if (dart.notNull(compare(el1, el4)) > 0) {
        let t = el1;
        el1 = el4;
        el4 = t;
      }
      if (dart.notNull(compare(el3, el4)) > 0) {
        let t = el3;
        el3 = el4;
        el4 = t;
      }
      if (dart.notNull(compare(el2, el5)) > 0) {
        let t = el2;
        el2 = el5;
        el5 = t;
      }
      if (dart.notNull(compare(el2, el3)) > 0) {
        let t = el2;
        el2 = el3;
        el3 = t;
      }
      if (dart.notNull(compare(el4, el5)) > 0) {
        let t = el4;
        el4 = el5;
        el5 = t;
      }
      let pivot1 = el2;
      let pivot2 = el4;
      a[dartx._set](index1, el1);
      a[dartx._set](index3, el3);
      a[dartx._set](index5, el5);
      a[dartx._set](index2, a[dartx._get](left));
      a[dartx._set](index4, a[dartx._get](right));
      let less = dart.notNull(left) + 1;
      let great = dart.notNull(right) - 1;
      let pivots_are_equal = compare(pivot1, pivot2) == 0;
      if (pivots_are_equal) {
        let pivot = pivot1;
        for (let k = less; k <= great; k++) {
          let ak = a[dartx._get](k);
          let comp = compare(ak, pivot);
          if (comp == 0) continue;
          if (dart.notNull(comp) < 0) {
            if (k != less) {
              a[dartx._set](k, a[dartx._get](less));
              a[dartx._set](less, ak);
            }
            less++;
          } else {
            while (true) {
              comp = compare(a[dartx._get](great), pivot);
              if (dart.notNull(comp) > 0) {
                great--;
                continue;
              } else if (dart.notNull(comp) < 0) {
                a[dartx._set](k, a[dartx._get](less));
                a[dartx._set](less++, a[dartx._get](great));
                a[dartx._set](great--, ak);
                break;
              } else {
                a[dartx._set](k, a[dartx._get](great));
                a[dartx._set](great--, ak);
                break;
              }
            }
          }
        }
      } else {
        for (let k = less; k <= great; k++) {
          let ak = a[dartx._get](k);
          let comp_pivot1 = compare(ak, pivot1);
          if (dart.notNull(comp_pivot1) < 0) {
            if (k != less) {
              a[dartx._set](k, a[dartx._get](less));
              a[dartx._set](less, ak);
            }
            less++;
          } else {
            let comp_pivot2 = compare(ak, pivot2);
            if (dart.notNull(comp_pivot2) > 0) {
              while (true) {
                let comp = compare(a[dartx._get](great), pivot2);
                if (dart.notNull(comp) > 0) {
                  great--;
                  if (great < k) break;
                  continue;
                } else {
                  comp = compare(a[dartx._get](great), pivot1);
                  if (dart.notNull(comp) < 0) {
                    a[dartx._set](k, a[dartx._get](less));
                    a[dartx._set](less++, a[dartx._get](great));
                    a[dartx._set](great--, ak);
                  } else {
                    a[dartx._set](k, a[dartx._get](great));
                    a[dartx._set](great--, ak);
                  }
                  break;
                }
              }
            }
          }
        }
      }
      a[dartx._set](left, a[dartx._get](less - 1));
      a[dartx._set](less - 1, pivot1);
      a[dartx._set](right, a[dartx._get](great + 1));
      a[dartx._set](great + 1, pivot2);
      _internal.Sort._doSort(E)(a, left, less - 2, compare);
      _internal.Sort._doSort(E)(a, great + 2, right, compare);
      if (pivots_are_equal) {
        return;
      }
      if (less < index1 && great > index5) {
        while (compare(a[dartx._get](less), pivot1) == 0) {
          less++;
        }
        while (compare(a[dartx._get](great), pivot2) == 0) {
          great--;
        }
        for (let k = less; k <= great; k++) {
          let ak = a[dartx._get](k);
          let comp_pivot1 = compare(ak, pivot1);
          if (comp_pivot1 == 0) {
            if (k != less) {
              a[dartx._set](k, a[dartx._get](less));
              a[dartx._set](less, ak);
            }
            less++;
          } else {
            let comp_pivot2 = compare(ak, pivot2);
            if (comp_pivot2 == 0) {
              while (true) {
                let comp = compare(a[dartx._get](great), pivot2);
                if (comp == 0) {
                  great--;
                  if (great < k) break;
                  continue;
                } else {
                  comp = compare(a[dartx._get](great), pivot1);
                  if (dart.notNull(comp) < 0) {
                    a[dartx._set](k, a[dartx._get](less));
                    a[dartx._set](less++, a[dartx._get](great));
                    a[dartx._set](great--, ak);
                  } else {
                    a[dartx._set](k, a[dartx._get](great));
                    a[dartx._set](great--, ak);
                  }
                  break;
                }
              }
            }
          }
        }
        _internal.Sort._doSort(E)(a, less, great, compare);
      } else {
        _internal.Sort._doSort(E)(a, less, great, compare);
      }
    };
  }
};
dart.setSignature(_internal.Sort, {
  sfields: () => ({_INSERTION_SORT_THRESHOLD: core.int}),
  statics: () => ({
    sort: dart.definiteFunctionType(E => [dart.void, [core.List$(E), dart.functionType(core.int, [E, E])]]),
    sortRange: dart.definiteFunctionType(E => [dart.void, [core.List$(E), core.int, core.int, dart.functionType(core.int, [E, E])]]),
    _doSort: dart.definiteFunctionType(E => [dart.void, [core.List$(E), core.int, core.int, dart.functionType(core.int, [E, E])]]),
    _insertionSort: dart.definiteFunctionType(E => [dart.void, [core.List$(E), core.int, core.int, dart.functionType(core.int, [E, E])]]),
    _dualPivotQuicksort: dart.definiteFunctionType(E => [dart.void, [core.List$(E), core.int, core.int, dart.functionType(core.int, [E, E])]])
  }),
  names: ['sort', 'sortRange', '_doSort', '_insertionSort', '_dualPivotQuicksort']
});
_internal.Sort._INSERTION_SORT_THRESHOLD = 32;
const _name = Symbol('_name');
const _nativeSymbol = Symbol('_nativeSymbol');
_internal.Symbol = class Symbol extends core.Object {
  new(name) {
    this[_name] = name;
    this[_nativeSymbol] = null;
  }
  es6(name, nativeSymbol) {
    this[_name] = name;
    this[_nativeSymbol] = nativeSymbol;
  }
  unvalidated(name) {
    this[_name] = name;
    this[_nativeSymbol] = null;
  }
  validated(name) {
    this[_name] = _internal.Symbol.validatePublicSymbol(name);
    this[_nativeSymbol] = null;
  }
  ['=='](other) {
    return _internal.Symbol.is(other) && this[_name] == other[_name] && dart.equals(this[_nativeSymbol], other[_nativeSymbol]);
  }
  get hashCode() {
    let hash = this._hashCode;
    if (hash != null) return hash;
    let arbitraryPrime = 664597;
    hash = 536870911 & arbitraryPrime * dart.notNull(dart.hashCode(this[_name]));
    this._hashCode = hash;
    return hash;
  }
  toString() {
    return dart.str`Symbol("${this[_name]}")`;
  }
  static getName(symbol) {
    return symbol[_name];
  }
  static getNativeSymbol(symbol) {
    return symbol[_nativeSymbol];
  }
  static validatePublicSymbol(name) {
    if (dart.test(name[dartx.isEmpty]) || dart.test(_internal.Symbol.publicSymbolPattern.hasMatch(name))) return name;
    if (dart.test(name[dartx.startsWith]('_'))) {
      dart.throw(new core.ArgumentError(dart.str`"${name}" is a private identifier`));
    }
    dart.throw(new core.ArgumentError(dart.str`"${name}" is not a valid (qualified) symbol name`));
  }
  static isValidSymbol(name) {
    return dart.test(name[dartx.isEmpty]) || dart.test(_internal.Symbol.symbolPattern.hasMatch(name));
  }
};
dart.defineNamedConstructor(_internal.Symbol, 'es6');
dart.defineNamedConstructor(_internal.Symbol, 'unvalidated');
dart.defineNamedConstructor(_internal.Symbol, 'validated');
_internal.Symbol[dart.implements] = () => [core.Symbol];
dart.setSignature(_internal.Symbol, {
  constructors: () => ({
    new: dart.definiteFunctionType(_internal.Symbol, [core.String]),
    es6: dart.definiteFunctionType(_internal.Symbol, [core.String, dart.dynamic]),
    unvalidated: dart.definiteFunctionType(_internal.Symbol, [core.String]),
    validated: dart.definiteFunctionType(_internal.Symbol, [core.String])
  }),
  fields: () => ({
    [_name]: core.String,
    [_nativeSymbol]: dart.dynamic
  }),
  methods: () => ({'==': dart.definiteFunctionType(core.bool, [core.Object])}),
  sfields: () => ({
    reservedWordRE: core.String,
    publicIdentifierRE: core.String,
    identifierRE: core.String,
    operatorRE: core.String,
    publicSymbolPattern: core.RegExp,
    symbolPattern: core.RegExp
  }),
  statics: () => ({
    getName: dart.definiteFunctionType(core.String, [_internal.Symbol]),
    getNativeSymbol: dart.definiteFunctionType(dart.dynamic, [_internal.Symbol]),
    validatePublicSymbol: dart.definiteFunctionType(core.String, [core.String]),
    isValidSymbol: dart.definiteFunctionType(core.bool, [core.String])
  }),
  names: ['getName', 'getNativeSymbol', 'validatePublicSymbol', 'isValidSymbol']
});
_internal.Symbol.reservedWordRE = '(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|' + 'e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|' + 'ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|' + 'v(?:ar|oid)|w(?:hile|ith))';
_internal.Symbol.operatorRE = '(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)';
dart.defineLazy(_internal.Symbol, {
  get publicIdentifierRE() {
    return '(?!' + dart.str`${_internal.Symbol.reservedWordRE}` + '\\b(?!\\$))[a-zA-Z$][\\w$]*';
  },
  get identifierRE() {
    return '(?!' + dart.str`${_internal.Symbol.reservedWordRE}` + '\\b(?!\\$))[a-zA-Z$_][\\w$]*';
  },
  get publicSymbolPattern() {
    return core.RegExp.new(dart.str`^(?:${_internal.Symbol.operatorRE}\$|${_internal.Symbol.publicIdentifierRE}(?:=?\$|[.](?!\$)))+?\$`);
  },
  get symbolPattern() {
    return core.RegExp.new(dart.str`^(?:${_internal.Symbol.operatorRE}\$|${_internal.Symbol.identifierRE}(?:=?\$|[.](?!\$)))+?\$`);
  }
});
_isolate_helper._callInIsolate = function(isolate, func) {
  let result = isolate.eval(func);
  _isolate_helper._globalState.topEventLoop.run();
  return result;
};
dart.lazyFn(_isolate_helper._callInIsolate, () => _IsolateContextAndFunctionTodynamic());
const _activeJsAsyncCount = Symbol('_activeJsAsyncCount');
_isolate_helper.enterJsAsync = function() {
  let o = _isolate_helper._globalState.topEventLoop;
  o[_activeJsAsyncCount] = dart.notNull(o[_activeJsAsyncCount]) + 1;
};
dart.fn(_isolate_helper.enterJsAsync, VoidTodynamic());
_isolate_helper.leaveJsAsync = function() {
  let o = _isolate_helper._globalState.topEventLoop;
  o[_activeJsAsyncCount] = dart.notNull(o[_activeJsAsyncCount]) - 1;
  dart.assert(dart.notNull(_isolate_helper._globalState.topEventLoop[_activeJsAsyncCount]) >= 0);
};
dart.fn(_isolate_helper.leaveJsAsync, VoidTodynamic());
_isolate_helper.isWorker = function() {
  return _isolate_helper._globalState.isWorker;
};
dart.lazyFn(_isolate_helper.isWorker, () => VoidTobool());
_isolate_helper._currentIsolate = function() {
  return _isolate_helper._globalState.currentContext;
};
dart.lazyFn(_isolate_helper._currentIsolate, () => VoidTo_IsolateContext());
_isolate_helper.startRootIsolate = function(entry, args) {
  args = args;
  if (args == null) args = [];
  if (!core.List.is(args)) {
    dart.throw(new core.ArgumentError(dart.str`Arguments to main must be a List: ${args}`));
  }
  _isolate_helper._globalState = new _isolate_helper._Manager(core.Function._check(entry));
  if (dart.test(_isolate_helper._globalState.isWorker)) return;
  let rootContext = new _isolate_helper._IsolateContext();
  _isolate_helper._globalState.rootContext = rootContext;
  _isolate_helper._globalState.currentContext = rootContext;
  if (_isolate_helper._MainFunctionArgs.is(entry)) {
    rootContext.eval(dart.fn(() => {
      dart.dcall(entry, args);
    }, VoidTodynamic()));
  } else if (_isolate_helper._MainFunctionArgsMessage.is(entry)) {
    rootContext.eval(dart.fn(() => {
      dart.dcall(entry, args, null);
    }, VoidTodynamic()));
  } else {
    rootContext.eval(core.Function._check(entry));
  }
  _isolate_helper._globalState.topEventLoop.run();
};
dart.fn(_isolate_helper.startRootIsolate, dynamicAnddynamicTovoid());
dart.copyProperties(_isolate_helper, {
  get _globalState() {
    return dart.globalState;
  },
  set _globalState(val) {
    dart.globalState = val;
  }
});
const _nativeDetectEnvironment = Symbol('_nativeDetectEnvironment');
const _nativeInitWorkerMessageHandler = Symbol('_nativeInitWorkerMessageHandler');
_isolate_helper._Manager = class _Manager extends core.Object {
  get useWorkers() {
    return this.supportsWorkers;
  }
  new(entry) {
    this.entry = entry;
    this.nextIsolateId = 0;
    this.currentManagerId = 0;
    this.nextManagerId = 1;
    this.currentContext = null;
    this.rootContext = null;
    this.topEventLoop = null;
    this.fromCommandLine = null;
    this.isWorker = null;
    this.supportsWorkers = null;
    this.isolates = null;
    this.mainManager = null;
    this.managers = null;
    this[_nativeDetectEnvironment]();
    this.topEventLoop = new _isolate_helper._EventLoop();
    this.isolates = MapOfint$_IsolateContext().new();
    this.managers = MapOfint$dynamic().new();
    if (dart.test(this.isWorker)) {
      this.mainManager = new _isolate_helper._MainManagerStub();
      this[_nativeInitWorkerMessageHandler]();
    }
  }
  [_nativeDetectEnvironment]() {
    let isWindowDefined = _isolate_helper.globalWindow != null;
    let isWorkerDefined = _isolate_helper.globalWorker != null;
    this.isWorker = !isWindowDefined && dart.test(_isolate_helper.globalPostMessageDefined);
    this.supportsWorkers = dart.test(this.isWorker) || isWorkerDefined && _isolate_helper.IsolateNatives.thisScript != null;
    this.fromCommandLine = !isWindowDefined && !dart.test(this.isWorker);
  }
  [_nativeInitWorkerMessageHandler]() {
    let func = (function(f, a) {
      return function(e) {
        f(a, e);
      };
    })(_isolate_helper.IsolateNatives._processWorkerMessage, this.mainManager);
    self.onmessage = func;
    self.dartPrint = self.dartPrint || (function(serialize) {
      return function(object) {
        if (self.console && self.console.log) {
          self.console.log(object);
        } else {
          self.postMessage(serialize(object));
        }
      };
    })(_isolate_helper._Manager._serializePrintMessage);
  }
  static _serializePrintMessage(object) {
    return _isolate_helper._serializeMessage(dart.map({command: "print", msg: object}, core.String, dart.dynamic));
  }
  maybeCloseWorker() {
    if (dart.test(this.isWorker) && dart.test(this.isolates[dartx.isEmpty]) && this.topEventLoop[_activeJsAsyncCount] == 0) {
      this.mainManager.postMessage(_isolate_helper._serializeMessage(dart.map({command: 'close'}, core.String, core.String)));
    }
  }
};
dart.setSignature(_isolate_helper._Manager, {
  constructors: () => ({new: dart.definiteFunctionType(_isolate_helper._Manager, [core.Function])}),
  fields: () => ({
    nextIsolateId: core.int,
    currentManagerId: core.int,
    nextManagerId: core.int,
    currentContext: _isolate_helper._IsolateContext,
    rootContext: _isolate_helper._IsolateContext,
    topEventLoop: _isolate_helper._EventLoop,
    fromCommandLine: core.bool,
    isWorker: core.bool,
    supportsWorkers: core.bool,
    isolates: MapOfint$_IsolateContext(),
    mainManager: _isolate_helper._MainManagerStub,
    managers: MapOfint$dynamic(),
    entry: core.Function
  }),
  getters: () => ({useWorkers: dart.definiteFunctionType(core.bool, [])}),
  methods: () => ({
    [_nativeDetectEnvironment]: dart.definiteFunctionType(dart.void, []),
    [_nativeInitWorkerMessageHandler]: dart.definiteFunctionType(dart.void, []),
    maybeCloseWorker: dart.definiteFunctionType(dart.void, [])
  }),
  statics: () => ({_serializePrintMessage: dart.definiteFunctionType(dart.dynamic, [dart.dynamic])}),
  names: ['_serializePrintMessage']
});
const _scheduledControlEvents = Symbol('_scheduledControlEvents');
const _isExecutingEvent = Symbol('_isExecutingEvent');
const _id = Symbol('_id');
const _updateGlobalState = Symbol('_updateGlobalState');
const _setGlobals = Symbol('_setGlobals');
const _addRegistration = Symbol('_addRegistration');
const _close = Symbol('_close');
_isolate_helper._IsolateContext = class _IsolateContext extends core.Object {
  new() {
    this.id = (() => {
      let o = _isolate_helper._globalState, x = o.nextIsolateId;
      o.nextIsolateId = dart.notNull(x) + 1;
      return x;
    })();
    this.ports = MapOfint$RawReceivePortImpl().new();
    this.weakPorts = SetOfint().new();
    this.isolateStatics = _foreign_helper.JS_CREATE_ISOLATE();
    this.controlPort = new _isolate_helper.RawReceivePortImpl._controlPort();
    this.pauseCapability = isolate.Capability.new();
    this.terminateCapability = isolate.Capability.new();
    this.delayedEvents = JSArrayOf_IsolateEvent().of([]);
    this.pauseTokens = SetOfCapability().new();
    this.errorPorts = SetOfSendPort().new();
    this.initialized = false;
    this.isPaused = false;
    this.doneHandlers = null;
    this[_scheduledControlEvents] = null;
    this[_isExecutingEvent] = false;
    this.errorsAreFatal = true;
    this.registerWeak(this.controlPort[_id], this.controlPort);
  }
  addPause(authentification, resume) {
    if (!dart.equals(this.pauseCapability, authentification)) return;
    if (dart.test(this.pauseTokens.add(resume)) && !dart.test(this.isPaused)) {
      this.isPaused = true;
    }
    this[_updateGlobalState]();
  }
  removePause(resume) {
    if (!dart.test(this.isPaused)) return;
    this.pauseTokens.remove(resume);
    if (dart.test(this.pauseTokens.isEmpty)) {
      while (dart.test(this.delayedEvents[dartx.isNotEmpty])) {
        let event = this.delayedEvents[dartx.removeLast]();
        _isolate_helper._globalState.topEventLoop.prequeue(event);
      }
      this.isPaused = false;
    }
    this[_updateGlobalState]();
  }
  addDoneListener(responsePort) {
    if (this.doneHandlers == null) {
      this.doneHandlers = [];
    }
    if (dart.test(dart.dsend(this.doneHandlers, 'contains', responsePort))) return;
    dart.dsend(this.doneHandlers, 'add', responsePort);
  }
  removeDoneListener(responsePort) {
    if (this.doneHandlers == null) return;
    dart.dsend(this.doneHandlers, 'remove', responsePort);
  }
  setErrorsFatal(authentification, errorsAreFatal) {
    if (!dart.equals(this.terminateCapability, authentification)) return;
    this.errorsAreFatal = errorsAreFatal;
  }
  handlePing(responsePort, pingType) {
    if (pingType == isolate.Isolate.IMMEDIATE || pingType == isolate.Isolate.BEFORE_NEXT_EVENT && !dart.test(this[_isExecutingEvent])) {
      responsePort.send(null);
      return;
    }
    function respond() {
      responsePort.send(null);
    }
    dart.fn(respond, VoidTovoid());
    if (pingType == isolate.Isolate.AS_EVENT) {
      _isolate_helper._globalState.topEventLoop.enqueue(this, respond, "ping");
      return;
    }
    dart.assert(pingType == isolate.Isolate.BEFORE_NEXT_EVENT);
    if (this[_scheduledControlEvents] == null) {
      this[_scheduledControlEvents] = collection.Queue.new();
    }
    dart.dsend(this[_scheduledControlEvents], 'addLast', respond);
  }
  handleKill(authentification, priority) {
    if (!dart.equals(this.terminateCapability, authentification)) return;
    if (priority == isolate.Isolate.IMMEDIATE || priority == isolate.Isolate.BEFORE_NEXT_EVENT && !dart.test(this[_isExecutingEvent])) {
      this.kill();
      return;
    }
    if (priority == isolate.Isolate.AS_EVENT) {
      _isolate_helper._globalState.topEventLoop.enqueue(this, dart.bind(this, 'kill'), "kill");
      return;
    }
    dart.assert(priority == isolate.Isolate.BEFORE_NEXT_EVENT);
    if (this[_scheduledControlEvents] == null) {
      this[_scheduledControlEvents] = collection.Queue.new();
    }
    dart.dsend(this[_scheduledControlEvents], 'addLast', dart.bind(this, 'kill'));
  }
  addErrorListener(port) {
    this.errorPorts.add(port);
  }
  removeErrorListener(port) {
    this.errorPorts.remove(port);
  }
  handleUncaughtError(error, stackTrace) {
    if (dart.test(this.errorPorts.isEmpty)) {
      if (dart.test(this.errorsAreFatal) && core.identical(this, _isolate_helper._globalState.rootContext)) {
        return;
      }
      if (self.console && self.console.error) {
        self.console.error(error, stackTrace);
      } else {
        core.print(error);
        if (stackTrace != null) core.print(stackTrace);
      }
      return;
    }
    let message = core.List.new(2);
    message[dartx._set](0, dart.toString(error));
    message[dartx._set](1, stackTrace == null ? null : dart.toString(stackTrace));
    for (let port of this.errorPorts)
      port.send(message);
  }
  eval(code) {
    let old = _isolate_helper._globalState.currentContext;
    _isolate_helper._globalState.currentContext = this;
    this[_setGlobals]();
    let result = null;
    this[_isExecutingEvent] = true;
    try {
      result = dart.dcall(code);
    } catch (e) {
      let s = dart.stackTrace(e);
      this.handleUncaughtError(e, s);
      if (dart.test(this.errorsAreFatal)) {
        this.kill();
        if (core.identical(this, _isolate_helper._globalState.rootContext)) {
          throw e;
        }
      }
    }
 finally {
      this[_isExecutingEvent] = false;
      _isolate_helper._globalState.currentContext = old;
      if (old != null) old[_setGlobals]();
      if (this[_scheduledControlEvents] != null) {
        while (dart.test(dart.dload(this[_scheduledControlEvents], 'isNotEmpty'))) {
          dart.dcall(dart.dsend(this[_scheduledControlEvents], 'removeFirst'));
        }
      }
    }
    return result;
  }
  [_setGlobals]() {
    _foreign_helper.JS_SET_CURRENT_ISOLATE(this.isolateStatics);
  }
  handleControlMessage(message) {
    switch (dart.dindex(message, 0)) {
      case "pause":
      {
        this.addPause(isolate.Capability._check(dart.dindex(message, 1)), isolate.Capability._check(dart.dindex(message, 2)));
        break;
      }
      case "resume":
      {
        this.removePause(isolate.Capability._check(dart.dindex(message, 1)));
        break;
      }
      case 'add-ondone':
      {
        this.addDoneListener(isolate.SendPort._check(dart.dindex(message, 1)));
        break;
      }
      case 'remove-ondone':
      {
        this.removeDoneListener(isolate.SendPort._check(dart.dindex(message, 1)));
        break;
      }
      case 'set-errors-fatal':
      {
        this.setErrorsFatal(isolate.Capability._check(dart.dindex(message, 1)), core.bool._check(dart.dindex(message, 2)));
        break;
      }
      case "ping":
      {
        this.handlePing(isolate.SendPort._check(dart.dindex(message, 1)), core.int._check(dart.dindex(message, 2)));
        break;
      }
      case "kill":
      {
        this.handleKill(isolate.Capability._check(dart.dindex(message, 1)), core.int._check(dart.dindex(message, 2)));
        break;
      }
      case "getErrors":
      {
        this.addErrorListener(isolate.SendPort._check(dart.dindex(message, 1)));
        break;
      }
      case "stopErrors":
      {
        this.removeErrorListener(isolate.SendPort._check(dart.dindex(message, 1)));
        break;
      }
      default:
    }
  }
  lookup(portId) {
    return this.ports[dartx._get](portId);
  }
  [_addRegistration](portId, port) {
    if (dart.test(this.ports[dartx.containsKey](portId))) {
      dart.throw(core.Exception.new("Registry: ports must be registered only once."));
    }
    this.ports[dartx._set](portId, port);
  }
  register(portId, port) {
    this[_addRegistration](portId, port);
    this[_updateGlobalState]();
  }
  registerWeak(portId, port) {
    this.weakPorts.add(portId);
    this[_addRegistration](portId, port);
  }
  [_updateGlobalState]() {
    if (dart.notNull(this.ports[dartx.length]) - dart.notNull(this.weakPorts.length) > 0 || dart.test(this.isPaused) || !dart.test(this.initialized)) {
      _isolate_helper._globalState.isolates[dartx._set](this.id, this);
    } else {
      this.kill();
    }
  }
  kill() {
    if (this[_scheduledControlEvents] != null) {
      dart.dsend(this[_scheduledControlEvents], 'clear');
    }
    for (let port of this.ports[dartx.values]) {
      port[_close]();
    }
    this.ports[dartx.clear]();
    this.weakPorts.clear();
    _isolate_helper._globalState.isolates[dartx.remove](this.id);
    this.errorPorts.clear();
    if (this.doneHandlers != null) {
      for (let port of core.Iterable._check(this.doneHandlers)) {
        isolate.SendPort._check(port);
        port.send(null);
      }
      this.doneHandlers = null;
    }
  }
  unregister(portId) {
    this.ports[dartx.remove](portId);
    this.weakPorts.remove(portId);
    this[_updateGlobalState]();
  }
};
_isolate_helper._IsolateContext[dart.implements] = () => [_foreign_helper.IsolateContext];
dart.setSignature(_isolate_helper._IsolateContext, {
  constructors: () => ({new: dart.definiteFunctionType(_isolate_helper._IsolateContext, [])}),
  fields: () => ({
    id: core.int,
    ports: MapOfint$RawReceivePortImpl(),
    weakPorts: SetOfint(),
    isolateStatics: dart.dynamic,
    controlPort: _isolate_helper.RawReceivePortImpl,
    pauseCapability: isolate.Capability,
    terminateCapability: isolate.Capability,
    initialized: core.bool,
    isPaused: core.bool,
    delayedEvents: ListOf_IsolateEvent(),
    pauseTokens: SetOfCapability(),
    doneHandlers: dart.dynamic,
    [_scheduledControlEvents]: dart.dynamic,
    [_isExecutingEvent]: core.bool,
    errorsAreFatal: core.bool,
    errorPorts: SetOfSendPort()
  }),
  methods: () => ({
    addPause: dart.definiteFunctionType(dart.void, [isolate.Capability, isolate.Capability]),
    removePause: dart.definiteFunctionType(dart.void, [isolate.Capability]),
    addDoneListener: dart.definiteFunctionType(dart.void, [isolate.SendPort]),
    removeDoneListener: dart.definiteFunctionType(dart.void, [isolate.SendPort]),
    setErrorsFatal: dart.definiteFunctionType(dart.void, [isolate.Capability, core.bool]),
    handlePing: dart.definiteFunctionType(dart.void, [isolate.SendPort, core.int]),
    handleKill: dart.definiteFunctionType(dart.void, [isolate.Capability, core.int]),
    addErrorListener: dart.definiteFunctionType(dart.void, [isolate.SendPort]),
    removeErrorListener: dart.definiteFunctionType(dart.void, [isolate.SendPort]),
    handleUncaughtError: dart.definiteFunctionType(dart.void, [dart.dynamic, core.StackTrace]),
    eval: dart.definiteFunctionType(dart.dynamic, [core.Function]),
    [_setGlobals]: dart.definiteFunctionType(dart.void, []),
    handleControlMessage: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    lookup: dart.definiteFunctionType(_isolate_helper.RawReceivePortImpl, [core.int]),
    [_addRegistration]: dart.definiteFunctionType(dart.void, [core.int, _isolate_helper.RawReceivePortImpl]),
    register: dart.definiteFunctionType(dart.void, [core.int, _isolate_helper.RawReceivePortImpl]),
    registerWeak: dart.definiteFunctionType(dart.void, [core.int, _isolate_helper.RawReceivePortImpl]),
    [_updateGlobalState]: dart.definiteFunctionType(dart.void, []),
    kill: dart.definiteFunctionType(dart.void, []),
    unregister: dart.definiteFunctionType(dart.void, [core.int])
  })
});
const _runHelper = Symbol('_runHelper');
_isolate_helper._EventLoop = class _EventLoop extends core.Object {
  new() {
    this.events = QueueOf_IsolateEvent().new();
    this[_activeJsAsyncCount] = 0;
  }
  enqueue(isolate, fn, msg) {
    this.events.addLast(new _isolate_helper._IsolateEvent(_isolate_helper._IsolateContext._check(isolate), core.Function._check(fn), core.String._check(msg)));
  }
  prequeue(event) {
    this.events.addFirst(event);
  }
  dequeue() {
    if (dart.test(this.events.isEmpty)) return null;
    return this.events.removeFirst();
  }
  checkOpenReceivePortsFromCommandLine() {
    if (_isolate_helper._globalState.rootContext != null && dart.test(_isolate_helper._globalState.isolates[dartx.containsKey](_isolate_helper._globalState.rootContext.id)) && dart.test(_isolate_helper._globalState.fromCommandLine) && dart.test(_isolate_helper._globalState.rootContext.ports[dartx.isEmpty])) {
      dart.throw(core.Exception.new("Program exited with open ReceivePorts."));
    }
  }
  runIteration() {
    let event = this.dequeue();
    if (event == null) {
      this.checkOpenReceivePortsFromCommandLine();
      _isolate_helper._globalState.maybeCloseWorker();
      return false;
    }
    event.process();
    return true;
  }
  [_runHelper]() {
    if (_isolate_helper.globalWindow != null) {
      const next = (function() {
        if (!dart.test(this.runIteration())) return;
        async.Timer.run(next);
      }).bind(this);
      dart.fn(next, VoidTodynamic());
      next();
    } else {
      while (dart.test(this.runIteration())) {
      }
    }
  }
  run() {
    if (!dart.test(_isolate_helper._globalState.isWorker)) {
      this[_runHelper]();
    } else {
      try {
        this[_runHelper]();
      } catch (e) {
        let trace = dart.stackTrace(e);
        _isolate_helper._globalState.mainManager.postMessage(_isolate_helper._serializeMessage(dart.map({command: 'error', msg: dart.str`${e}\n${trace}`}, core.String, core.String)));
      }

    }
  }
};
dart.setSignature(_isolate_helper._EventLoop, {
  constructors: () => ({new: dart.definiteFunctionType(_isolate_helper._EventLoop, [])}),
  fields: () => ({
    events: QueueOf_IsolateEvent(),
    [_activeJsAsyncCount]: core.int
  }),
  methods: () => ({
    enqueue: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
    prequeue: dart.definiteFunctionType(dart.void, [_isolate_helper._IsolateEvent]),
    dequeue: dart.definiteFunctionType(_isolate_helper._IsolateEvent, []),
    checkOpenReceivePortsFromCommandLine: dart.definiteFunctionType(dart.void, []),
    runIteration: dart.definiteFunctionType(core.bool, []),
    [_runHelper]: dart.definiteFunctionType(dart.void, []),
    run: dart.definiteFunctionType(dart.void, [])
  })
});
_isolate_helper._IsolateEvent = class _IsolateEvent extends core.Object {
  new(isolate, fn, message) {
    this.isolate = isolate;
    this.fn = fn;
    this.message = message;
  }
  process() {
    if (dart.test(this.isolate.isPaused)) {
      this.isolate.delayedEvents[dartx.add](this);
      return;
    }
    this.isolate.eval(this.fn);
  }
};
dart.setSignature(_isolate_helper._IsolateEvent, {
  constructors: () => ({new: dart.definiteFunctionType(_isolate_helper._IsolateEvent, [_isolate_helper._IsolateContext, core.Function, core.String])}),
  fields: () => ({
    isolate: _isolate_helper._IsolateContext,
    fn: core.Function,
    message: core.String
  }),
  methods: () => ({process: dart.definiteFunctionType(dart.void, [])})
});
dart.defineLazy(_isolate_helper, {
  get _global() {
    return typeof global == 'undefined' ? self : global;
  }
});
_isolate_helper._MainManagerStub = class _MainManagerStub extends core.Object {
  postMessage(msg) {
    _isolate_helper._global.postMessage(msg);
  }
};
dart.setSignature(_isolate_helper._MainManagerStub, {
  methods: () => ({postMessage: dart.definiteFunctionType(dart.void, [dart.dynamic])})
});
_isolate_helper._SPAWNED_SIGNAL = "spawned";
_isolate_helper._SPAWN_FAILED_SIGNAL = "spawn failed";
dart.copyProperties(_isolate_helper, {
  get globalWindow() {
    return _isolate_helper._global.window;
  }
});
dart.copyProperties(_isolate_helper, {
  get globalWorker() {
    return _isolate_helper._global.Worker;
  }
});
dart.copyProperties(_isolate_helper, {
  get globalPostMessageDefined() {
    return !!_isolate_helper._global.postMessage;
  }
});
_isolate_helper._MainFunction = dart.typedef('_MainFunction', () => dart.functionType(dart.dynamic, []));
_isolate_helper._MainFunctionArgs = dart.typedef('_MainFunctionArgs', () => dart.functionType(dart.dynamic, [dart.dynamic]));
_isolate_helper._MainFunctionArgsMessage = dart.typedef('_MainFunctionArgsMessage', () => dart.functionType(dart.dynamic, [dart.dynamic, dart.dynamic]));
_isolate_helper.IsolateNatives = class IsolateNatives extends core.Object {
  static computeThisScript() {
    let currentScript = document.currentScript;
    if (currentScript != null) {
      return String(currentScript.src);
    }
    if (dart.test(_js_helper.Primitives.isD8)) return _isolate_helper.IsolateNatives.computeThisScriptD8();
    if (dart.test(_js_helper.Primitives.isJsshell)) return _isolate_helper.IsolateNatives.computeThisScriptJsshell();
    if (_isolate_helper._globalState != null && dart.test(_isolate_helper._globalState.isWorker)) {
      return _isolate_helper.IsolateNatives.computeThisScriptFromTrace();
    }
    return null;
  }
  static computeThisScriptJsshell() {
    return thisFilename();
  }
  static computeThisScriptD8() {
    return _isolate_helper.IsolateNatives.computeThisScriptFromTrace();
  }
  static computeThisScriptFromTrace() {
    let stack = new Error().stack;
    if (stack == null) {
      stack = (function() {
        try {
          throw new Error();
        } catch (e) {
          return e.stack;
        }

      })();
      if (stack == null) dart.throw(new core.UnsupportedError('No stack trace'));
    }
    let pattern = null, matches = null;
    pattern = new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$", "m");
    matches = stack.match(pattern);
    if (matches != null) return matches[1];
    pattern = new RegExp("^[^@]*@(.*):[0-9]*$", "m");
    matches = stack.match(pattern);
    if (matches != null) return matches[1];
    dart.throw(new core.UnsupportedError(dart.str`Cannot extract URI from "${stack}"`));
  }
  static _getEventData(e) {
    return e.data;
  }
  static _processWorkerMessage(sender, e) {
    let msg = _isolate_helper._deserializeMessage(_isolate_helper.IsolateNatives._getEventData(e));
    switch (dart.dindex(msg, 'command')) {
      case 'start':
      {
        _isolate_helper._globalState.currentManagerId = core.int._check(dart.dindex(msg, 'id'));
        let functionName = core.String._check(dart.dindex(msg, 'functionName'));
        let entryPoint = core.Function._check(functionName == null ? _isolate_helper._globalState.entry : _isolate_helper.IsolateNatives._getJSFunctionFromName(functionName));
        let args = dart.dindex(msg, 'args');
        let message = _isolate_helper._deserializeMessage(dart.dindex(msg, 'msg'));
        let isSpawnUri = dart.dindex(msg, 'isSpawnUri');
        let startPaused = dart.dindex(msg, 'startPaused');
        let replyTo = _isolate_helper._deserializeMessage(dart.dindex(msg, 'replyTo'));
        let context = new _isolate_helper._IsolateContext();
        _isolate_helper._globalState.topEventLoop.enqueue(context, dart.fn(() => {
          _isolate_helper.IsolateNatives._startIsolate(entryPoint, ListOfString()._check(args), message, core.bool._check(isSpawnUri), core.bool._check(startPaused), isolate.SendPort._check(replyTo));
        }, VoidTodynamic()), 'worker-start');
        _isolate_helper._globalState.currentContext = context;
        _isolate_helper._globalState.topEventLoop.run();
        break;
      }
      case 'spawn-worker':
      {
        if (_isolate_helper.IsolateNatives.enableSpawnWorker != null) _isolate_helper.IsolateNatives.handleSpawnWorkerRequest(msg);
        break;
      }
      case 'message':
      {
        let port = isolate.SendPort._check(dart.dindex(msg, 'port'));
        if (port != null) {
          dart.dsend(dart.dindex(msg, 'port'), 'send', dart.dindex(msg, 'msg'));
        }
        _isolate_helper._globalState.topEventLoop.run();
        break;
      }
      case 'close':
      {
        _isolate_helper._globalState.managers[dartx.remove](_isolate_helper.IsolateNatives.workerIds._get(sender));
        sender.terminate();
        _isolate_helper._globalState.topEventLoop.run();
        break;
      }
      case 'log':
      {
        _isolate_helper.IsolateNatives._log(dart.dindex(msg, 'msg'));
        break;
      }
      case 'print':
      {
        if (dart.test(_isolate_helper._globalState.isWorker)) {
          _isolate_helper._globalState.mainManager.postMessage(_isolate_helper._serializeMessage(dart.map({command: 'print', msg: msg}, core.String, dart.dynamic)));
        } else {
          core.print(dart.dindex(msg, 'msg'));
        }
        break;
      }
      case 'error':
      {
        dart.throw(dart.dindex(msg, 'msg'));
      }
    }
  }
  static handleSpawnWorkerRequest(msg) {
    let replyPort = dart.dindex(msg, 'replyPort');
    _isolate_helper.IsolateNatives.spawn(core.String._check(dart.dindex(msg, 'functionName')), core.String._check(dart.dindex(msg, 'uri')), ListOfString()._check(dart.dindex(msg, 'args')), dart.dindex(msg, 'msg'), false, core.bool._check(dart.dindex(msg, 'isSpawnUri')), core.bool._check(dart.dindex(msg, 'startPaused'))).then(dart.dynamic)(dart.fn(msg => {
      dart.dsend(replyPort, 'send', msg);
    }, ListTodynamic()), {onError: dart.fn(errorMessage => {
        dart.dsend(replyPort, 'send', JSArrayOfString().of([_isolate_helper._SPAWN_FAILED_SIGNAL, errorMessage]));
      }, StringTodynamic())});
  }
  static _log(msg) {
    if (dart.test(_isolate_helper._globalState.isWorker)) {
      _isolate_helper._globalState.mainManager.postMessage(_isolate_helper._serializeMessage(dart.map({command: 'log', msg: msg}, core.String, dart.dynamic)));
    } else {
      try {
        _isolate_helper.IsolateNatives._consoleLog(msg);
      } catch (e) {
        let trace = dart.stackTrace(e);
        dart.throw(core.Exception.new(trace));
      }

    }
  }
  static _consoleLog(msg) {
    self.console.log(msg);
  }
  static _getJSFunctionFromName(functionName) {
    let globalFunctionsContainer = _foreign_helper.JS_EMBEDDED_GLOBAL("", _js_embedded_names.GLOBAL_FUNCTIONS);
    return globalFunctionsContainer[functionName]();
  }
  static _getJSFunctionName(f) {
    return f.$name;
  }
  static _allocate(ctor) {
    return new ctor();
  }
  static spawnFunction(topLevelFunction, message, startPaused) {
    _isolate_helper.IsolateNatives.enableSpawnWorker = true;
    let name = _isolate_helper.IsolateNatives._getJSFunctionName(topLevelFunction);
    if (name == null) {
      dart.throw(new core.UnsupportedError("only top-level functions can be spawned."));
    }
    let isLight = false;
    let isSpawnUri = false;
    return _isolate_helper.IsolateNatives.spawn(name, null, null, message, isLight, isSpawnUri, startPaused);
  }
  static spawnUri(uri, args, message, startPaused) {
    _isolate_helper.IsolateNatives.enableSpawnWorker = true;
    let isLight = false;
    let isSpawnUri = true;
    return _isolate_helper.IsolateNatives.spawn(null, dart.toString(uri), args, message, isLight, isSpawnUri, startPaused);
  }
  static spawn(functionName, uri, args, message, isLight, isSpawnUri, startPaused) {
    if (uri != null && dart.test(uri[dartx.endsWith](".dart"))) {
      uri = dart.notNull(uri) + ".js";
    }
    let port = isolate.ReceivePort.new();
    let completer = CompleterOfList().new();
    port.first.then(dart.dynamic)(dart.fn(msg => {
      if (dart.equals(dart.dindex(msg, 0), _isolate_helper._SPAWNED_SIGNAL)) {
        completer.complete(msg);
      } else {
        dart.assert(dart.equals(dart.dindex(msg, 0), _isolate_helper._SPAWN_FAILED_SIGNAL));
        completer.completeError(dart.dindex(msg, 1));
      }
    }, dynamicTodynamic()));
    let signalReply = port.sendPort;
    if (dart.test(_isolate_helper._globalState.useWorkers) && !dart.test(isLight)) {
      _isolate_helper.IsolateNatives._startWorker(functionName, uri, args, message, isSpawnUri, startPaused, signalReply, dart.fn(message => completer.completeError(message), StringTovoid()));
    } else {
      _isolate_helper.IsolateNatives._startNonWorker(functionName, uri, args, message, isSpawnUri, startPaused, signalReply);
    }
    return completer.future;
  }
  static _startWorker(functionName, uri, args, message, isSpawnUri, startPaused, replyPort, onError) {
    if (args != null) args = ListOfString().from(args);
    if (dart.test(_isolate_helper._globalState.isWorker)) {
      _isolate_helper._globalState.mainManager.postMessage(_isolate_helper._serializeMessage(dart.map({command: 'spawn-worker', functionName: functionName, args: args, msg: message, uri: uri, isSpawnUri: isSpawnUri, startPaused: startPaused, replyPort: replyPort}, core.String, core.Object)));
    } else {
      _isolate_helper.IsolateNatives._spawnWorker(functionName, uri, args, message, isSpawnUri, startPaused, replyPort, onError);
    }
  }
  static _startNonWorker(functionName, uri, args, message, isSpawnUri, startPaused, replyPort) {
    if (uri != null) {
      dart.throw(new core.UnsupportedError("Currently spawnUri is not supported without web workers."));
    }
    message = _isolate_helper._clone(message);
    if (args != null) args = ListOfString().from(args);
    _isolate_helper._globalState.topEventLoop.enqueue(new _isolate_helper._IsolateContext(), dart.fn(() => {
      let func = _isolate_helper.IsolateNatives._getJSFunctionFromName(functionName);
      _isolate_helper.IsolateNatives._startIsolate(core.Function._check(func), args, message, isSpawnUri, startPaused, replyPort);
    }, VoidTodynamic()), 'nonworker start');
  }
  static get currentIsolate() {
    let context = _isolate_helper._IsolateContext._check(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT());
    return new isolate.Isolate(context.controlPort.sendPort, {pauseCapability: context.pauseCapability, terminateCapability: context.terminateCapability});
  }
  static _startIsolate(topLevel, args, message, isSpawnUri, startPaused, replyTo) {
    let context = _isolate_helper._IsolateContext._check(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT());
    _js_helper.Primitives.initializeStatics(context.id);
    replyTo.send(JSArrayOfObject().of([_isolate_helper._SPAWNED_SIGNAL, context.controlPort.sendPort, context.pauseCapability, context.terminateCapability]));
    function runStartFunction() {
      context.initialized = true;
      if (!dart.test(isSpawnUri)) {
        dart.dcall(topLevel, message);
      } else if (_isolate_helper._MainFunctionArgsMessage.is(topLevel)) {
        dart.dcall(topLevel, args, message);
      } else if (_isolate_helper._MainFunctionArgs.is(topLevel)) {
        dart.dcall(topLevel, args);
      } else {
        dart.dcall(topLevel);
      }
    }
    dart.fn(runStartFunction, VoidTovoid());
    if (dart.test(startPaused)) {
      context.addPause(context.pauseCapability, context.pauseCapability);
      _isolate_helper._globalState.topEventLoop.enqueue(context, runStartFunction, 'start isolate');
    } else {
      runStartFunction();
    }
  }
  static _spawnWorker(functionName, uri, args, message, isSpawnUri, startPaused, replyPort, onError) {
    if (uri == null) uri = _isolate_helper.IsolateNatives.thisScript;
    let worker = new Worker(uri);
    let onerrorTrampoline = (function(f, u, c) {
      return function(e) {
        return f(e, u, c);
      };
    })(_isolate_helper.IsolateNatives.workerOnError, uri, onError);
    worker.onerror = onerrorTrampoline;
    let processWorkerMessageTrampoline = (function(f, a) {
      return function(e) {
        e.onerror = null;
        return f(a, e);
      };
    })(_isolate_helper.IsolateNatives._processWorkerMessage, worker);
    worker.onmessage = processWorkerMessageTrampoline;
    let o = _isolate_helper._globalState;
    let workerId = o.nextManagerId;
    o.nextManagerId = dart.notNull(workerId) + 1;
    _isolate_helper.IsolateNatives.workerIds._set(worker, workerId);
    _isolate_helper._globalState.managers[dartx._set](workerId, worker);
    worker.postMessage(_isolate_helper._serializeMessage(dart.map({command: 'start', id: workerId, replyTo: _isolate_helper._serializeMessage(replyPort), args: args, msg: _isolate_helper._serializeMessage(message), isSpawnUri: isSpawnUri, startPaused: startPaused, functionName: functionName}, core.String, core.Object)));
  }
  static workerOnError(event, uri, onError) {
    event.preventDefault();
    let message = event.message;
    if (message == null) {
      message = dart.str`Error spawning worker for ${uri}`;
    } else {
      message = dart.str`Error spawning worker for ${uri} (${message})`;
    }
    onError(message);
    return true;
  }
};
dart.setSignature(_isolate_helper.IsolateNatives, {
  sfields: () => ({
    enableSpawnWorker: dart.dynamic,
    thisScript: core.String,
    workerIds: ExpandoOfint()
  }),
  sgetters: () => ({currentIsolate: dart.definiteFunctionType(isolate.Isolate, [])}),
  statics: () => ({
    computeThisScript: dart.definiteFunctionType(core.String, []),
    computeThisScriptJsshell: dart.definiteFunctionType(core.String, []),
    computeThisScriptD8: dart.definiteFunctionType(core.String, []),
    computeThisScriptFromTrace: dart.definiteFunctionType(core.String, []),
    _getEventData: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    _processWorkerMessage: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic]),
    handleSpawnWorkerRequest: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    _log: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    _consoleLog: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    _getJSFunctionFromName: dart.definiteFunctionType(dart.dynamic, [core.String]),
    _getJSFunctionName: dart.definiteFunctionType(core.String, [core.Function]),
    _allocate: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    spawnFunction: dart.definiteFunctionType(async.Future$(core.List), [dynamicTovoid(), dart.dynamic, core.bool]),
    spawnUri: dart.definiteFunctionType(async.Future$(core.List), [core.Uri, ListOfString(), dart.dynamic, core.bool]),
    spawn: dart.definiteFunctionType(async.Future$(core.List), [core.String, core.String, ListOfString(), dart.dynamic, core.bool, core.bool, core.bool]),
    _startWorker: dart.definiteFunctionType(dart.void, [core.String, core.String, ListOfString(), dart.dynamic, core.bool, core.bool, isolate.SendPort, StringTovoid()]),
    _startNonWorker: dart.definiteFunctionType(dart.void, [core.String, core.String, ListOfString(), dart.dynamic, core.bool, core.bool, isolate.SendPort]),
    _startIsolate: dart.definiteFunctionType(dart.void, [core.Function, ListOfString(), dart.dynamic, core.bool, core.bool, isolate.SendPort]),
    _spawnWorker: dart.definiteFunctionType(dart.void, [dart.dynamic, core.String, ListOfString(), dart.dynamic, core.bool, core.bool, isolate.SendPort, StringTovoid()]),
    workerOnError: dart.definiteFunctionType(core.bool, [dart.dynamic, core.String, StringTovoid()])
  }),
  names: ['computeThisScript', 'computeThisScriptJsshell', 'computeThisScriptD8', 'computeThisScriptFromTrace', '_getEventData', '_processWorkerMessage', 'handleSpawnWorkerRequest', '_log', '_consoleLog', '_getJSFunctionFromName', '_getJSFunctionName', '_allocate', 'spawnFunction', 'spawnUri', 'spawn', '_startWorker', '_startNonWorker', '_startIsolate', '_spawnWorker', 'workerOnError']
});
_isolate_helper.IsolateNatives.enableSpawnWorker = null;
dart.defineLazy(_isolate_helper.IsolateNatives, {
  get thisScript() {
    return _isolate_helper.IsolateNatives.computeThisScript();
  },
  set thisScript(_) {},
  get workerIds() {
    return new (ExpandoOfint())();
  }
});
const _isolateId = Symbol('_isolateId');
const _checkReplyTo = Symbol('_checkReplyTo');
_isolate_helper._BaseSendPort = class _BaseSendPort extends core.Object {
  new(isolateId) {
    this[_isolateId] = isolateId;
  }
  [_checkReplyTo](replyTo) {
    if (replyTo != null && !_isolate_helper._NativeJsSendPort.is(replyTo) && !_isolate_helper._WorkerSendPort.is(replyTo)) {
      dart.throw(core.Exception.new("SendPort.send: Illegal replyTo port type"));
    }
  }
};
_isolate_helper._BaseSendPort[dart.implements] = () => [isolate.SendPort];
dart.setSignature(_isolate_helper._BaseSendPort, {
  constructors: () => ({new: dart.definiteFunctionType(_isolate_helper._BaseSendPort, [core.int])}),
  fields: () => ({[_isolateId]: core.int}),
  methods: () => ({[_checkReplyTo]: dart.definiteFunctionType(dart.void, [isolate.SendPort])})
});
const _receivePort = Symbol('_receivePort');
const _isClosed = Symbol('_isClosed');
const _add = Symbol('_add');
_isolate_helper._NativeJsSendPort = class _NativeJsSendPort extends _isolate_helper._BaseSendPort {
  new(receivePort, isolateId) {
    this[_receivePort] = receivePort;
    super.new(isolateId);
  }
  send(message) {
    let isolate = _isolate_helper._globalState.isolates[dartx._get](this[_isolateId]);
    if (isolate == null) return;
    if (dart.test(this[_receivePort][_isClosed])) return;
    let msg = _isolate_helper._clone(message);
    if (dart.equals(isolate.controlPort, this[_receivePort])) {
      isolate.handleControlMessage(msg);
      return;
    }
    _isolate_helper._globalState.topEventLoop.enqueue(isolate, dart.fn(() => {
      if (!dart.test(this[_receivePort][_isClosed])) {
        this[_receivePort][_add](msg);
      }
    }, VoidTodynamic()), dart.str`receive ${message}`);
  }
  ['=='](other) {
    return _isolate_helper._NativeJsSendPort.is(other) && dart.equals(this[_receivePort], other[_receivePort]);
  }
  get hashCode() {
    return this[_receivePort][_id];
  }
};
_isolate_helper._NativeJsSendPort[dart.implements] = () => [isolate.SendPort];
dart.setSignature(_isolate_helper._NativeJsSendPort, {
  constructors: () => ({new: dart.definiteFunctionType(_isolate_helper._NativeJsSendPort, [_isolate_helper.RawReceivePortImpl, core.int])}),
  fields: () => ({[_receivePort]: _isolate_helper.RawReceivePortImpl}),
  methods: () => ({send: dart.definiteFunctionType(dart.void, [dart.dynamic])})
});
const _workerId = Symbol('_workerId');
const _receivePortId = Symbol('_receivePortId');
_isolate_helper._WorkerSendPort = class _WorkerSendPort extends _isolate_helper._BaseSendPort {
  new(workerId, isolateId, receivePortId) {
    this[_workerId] = workerId;
    this[_receivePortId] = receivePortId;
    super.new(isolateId);
  }
  send(message) {
    let workerMessage = _isolate_helper._serializeMessage(dart.map({command: 'message', port: this, msg: message}, core.String, core.Object));
    if (dart.test(_isolate_helper._globalState.isWorker)) {
      _isolate_helper._globalState.mainManager.postMessage(workerMessage);
    } else {
      let manager = _isolate_helper._globalState.managers[dartx._get](this[_workerId]);
      if (manager != null) {
        manager.postMessage(workerMessage);
      }
    }
  }
  ['=='](other) {
    return _isolate_helper._WorkerSendPort.is(other) && this[_workerId] == other[_workerId] && this[_isolateId] == other[_isolateId] && this[_receivePortId] == other[_receivePortId];
  }
  get hashCode() {
    return (dart.notNull(this[_workerId]) << 16 ^ dart.notNull(this[_isolateId]) << 8 ^ dart.notNull(this[_receivePortId])) >>> 0;
  }
};
_isolate_helper._WorkerSendPort[dart.implements] = () => [isolate.SendPort];
dart.setSignature(_isolate_helper._WorkerSendPort, {
  constructors: () => ({new: dart.definiteFunctionType(_isolate_helper._WorkerSendPort, [core.int, core.int, core.int])}),
  fields: () => ({
    [_workerId]: core.int,
    [_receivePortId]: core.int
  }),
  methods: () => ({send: dart.definiteFunctionType(dart.void, [dart.dynamic])})
});
const _handler = Symbol('_handler');
_isolate_helper.RawReceivePortImpl = class RawReceivePortImpl extends core.Object {
  new(handler) {
    this[_handler] = handler;
    this[_id] = (() => {
      let x = _isolate_helper.RawReceivePortImpl._nextFreeId;
      _isolate_helper.RawReceivePortImpl._nextFreeId = dart.notNull(x) + 1;
      return x;
    })();
    this[_isClosed] = false;
    _isolate_helper._globalState.currentContext.register(this[_id], this);
  }
  weak(handler) {
    this[_handler] = handler;
    this[_id] = (() => {
      let x = _isolate_helper.RawReceivePortImpl._nextFreeId;
      _isolate_helper.RawReceivePortImpl._nextFreeId = dart.notNull(x) + 1;
      return x;
    })();
    this[_isClosed] = false;
    _isolate_helper._globalState.currentContext.registerWeak(this[_id], this);
  }
  _controlPort() {
    this[_handler] = null;
    this[_id] = 0;
    this[_isClosed] = false;
  }
  set handler(newHandler) {
    this[_handler] = newHandler;
  }
  [_close]() {
    this[_isClosed] = true;
    this[_handler] = null;
  }
  close() {
    if (dart.test(this[_isClosed])) return;
    this[_isClosed] = true;
    this[_handler] = null;
    _isolate_helper._globalState.currentContext.unregister(this[_id]);
  }
  [_add](dataEvent) {
    if (dart.test(this[_isClosed])) return;
    dart.dcall(this[_handler], dataEvent);
  }
  get sendPort() {
    return new _isolate_helper._NativeJsSendPort(this, _isolate_helper._globalState.currentContext.id);
  }
};
dart.defineNamedConstructor(_isolate_helper.RawReceivePortImpl, 'weak');
dart.defineNamedConstructor(_isolate_helper.RawReceivePortImpl, '_controlPort');
_isolate_helper.RawReceivePortImpl[dart.implements] = () => [isolate.RawReceivePort];
dart.setSignature(_isolate_helper.RawReceivePortImpl, {
  constructors: () => ({
    new: dart.definiteFunctionType(_isolate_helper.RawReceivePortImpl, [core.Function]),
    weak: dart.definiteFunctionType(_isolate_helper.RawReceivePortImpl, [core.Function]),
    _controlPort: dart.definiteFunctionType(_isolate_helper.RawReceivePortImpl, [])
  }),
  fields: () => ({
    [_id]: core.int,
    [_handler]: core.Function,
    [_isClosed]: core.bool
  }),
  getters: () => ({sendPort: dart.definiteFunctionType(isolate.SendPort, [])}),
  setters: () => ({handler: dart.definiteFunctionType(dart.void, [core.Function])}),
  methods: () => ({
    [_close]: dart.definiteFunctionType(dart.void, []),
    close: dart.definiteFunctionType(dart.void, []),
    [_add]: dart.definiteFunctionType(dart.void, [dart.dynamic])
  }),
  sfields: () => ({_nextFreeId: core.int})
});
_isolate_helper.RawReceivePortImpl._nextFreeId = 1;
const _rawPort = Symbol('_rawPort');
const _controller = Symbol('_controller');
const _add = Symbol('_add');
const _closeUnchecked = Symbol('_closeUnchecked');
const _addError = Symbol('_addError');
const _completeError = Symbol('_completeError');
const _complete = Symbol('_complete');
const _sink = Symbol('_sink');
async.Stream$ = dart.generic(T => {
  let _EmptyStreamOfT = () => (_EmptyStreamOfT = dart.constFn(async._EmptyStream$(T)))();
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  let _StreamControllerOfT = () => (_StreamControllerOfT = dart.constFn(async._StreamController$(T)))();
  let TTodynamic = () => (TTodynamic = dart.constFn(dart.functionType(dart.dynamic, [T])))();
  let _GeneratedStreamImplOfT = () => (_GeneratedStreamImplOfT = dart.constFn(async._GeneratedStreamImpl$(T)))();
  let _IterablePendingEventsOfT = () => (_IterablePendingEventsOfT = dart.constFn(async._IterablePendingEvents$(T)))();
  let _BoundSinkStreamOfdynamic$T = () => (_BoundSinkStreamOfdynamic$T = dart.constFn(async._BoundSinkStream$(dart.dynamic, T)))();
  let _AsBroadcastStreamOfT = () => (_AsBroadcastStreamOfT = dart.constFn(async._AsBroadcastStream$(T)))();
  let _WhereStreamOfT = () => (_WhereStreamOfT = dart.constFn(async._WhereStream$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  let _HandleErrorStreamOfT = () => (_HandleErrorStreamOfT = dart.constFn(async._HandleErrorStream$(T)))();
  let StreamConsumerOfT = () => (StreamConsumerOfT = dart.constFn(async.StreamConsumer$(T)))();
  let TAndTToT = () => (TAndTToT = dart.constFn(dart.functionType(T, [T, T])))();
  let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
  let JSArrayOfT = () => (JSArrayOfT = dart.constFn(_interceptors.JSArray$(T)))();
  let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
  let _FutureOfListOfT = () => (_FutureOfListOfT = dart.constFn(async._Future$(ListOfT())))();
  let SetOfT = () => (SetOfT = dart.constFn(core.Set$(T)))();
  let _FutureOfSetOfT = () => (_FutureOfSetOfT = dart.constFn(async._Future$(SetOfT())))();
  let _TakeStreamOfT = () => (_TakeStreamOfT = dart.constFn(async._TakeStream$(T)))();
  let _TakeWhileStreamOfT = () => (_TakeWhileStreamOfT = dart.constFn(async._TakeWhileStream$(T)))();
  let _SkipStreamOfT = () => (_SkipStreamOfT = dart.constFn(async._SkipStream$(T)))();
  let _SkipWhileStreamOfT = () => (_SkipWhileStreamOfT = dart.constFn(async._SkipWhileStream$(T)))();
  let _DistinctStreamOfT = () => (_DistinctStreamOfT = dart.constFn(async._DistinctStream$(T)))();
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  let _SyncBroadcastStreamControllerOfT = () => (_SyncBroadcastStreamControllerOfT = dart.constFn(async._SyncBroadcastStreamController$(T)))();
  let _SyncStreamControllerOfT = () => (_SyncStreamControllerOfT = dart.constFn(async._SyncStreamController$(T)))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let StreamSubscriptionOfTTovoid = () => (StreamSubscriptionOfTTovoid = dart.constFn(dart.functionType(dart.void, [StreamSubscriptionOfT()])))();
  let TTobool = () => (TTobool = dart.constFn(dart.functionType(core.bool, [T])))();
  let TAndTTobool = () => (TAndTTobool = dart.constFn(dart.functionType(core.bool, [T, T])))();
  let EventSinkOfTTovoid = () => (EventSinkOfTTovoid = dart.constFn(dart.functionType(dart.void, [EventSinkOfT()])))();
  let FutureOfT = () => (FutureOfT = dart.constFn(async.Future$(T)))();
  let IterableOfFutureOfT = () => (IterableOfFutureOfT = dart.constFn(core.Iterable$(FutureOfT())))();
  let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
  let intToT = () => (intToT = dart.constFn(dart.functionType(T, [core.int])))();
  let EventSinkOfTToEventSink = () => (EventSinkOfTToEventSink = dart.constFn(dart.functionType(async.EventSink, [EventSinkOfT()])))();
  let TTodynamic$ = () => (TTodynamic$ = dart.constFn(dart.definiteFunctionType(dart.dynamic, [T])))();
  let VoidTo_IterablePendingEventsOfT = () => (VoidTo_IterablePendingEventsOfT = dart.constFn(dart.definiteFunctionType(_IterablePendingEventsOfT(), [])))();
  let TTovoid$ = () => (TTovoid$ = dart.constFn(dart.definiteFunctionType(dart.void, [T])))();
  let VoidToT = () => (VoidToT = dart.constFn(dart.definiteFunctionType(T, [])))();
  class Stream extends core.Object {
    new() {
    }
    _internal() {
    }
    static empty() {
      return new (_EmptyStreamOfT())();
    }
    static fromFuture(future) {
      let controller = _StreamControllerOfT()._check(StreamControllerOfT().new({sync: true}));
      future.then(dart.dynamic)(dart.fn(value => {
        controller[_add](value);
        controller[_closeUnchecked]();
      }, TTodynamic$()), {onError: dart.fn((error, stackTrace) => {
          controller[_addError](error, core.StackTrace._check(stackTrace));
          controller[_closeUnchecked]();
        }, dynamicAnddynamicTodynamic())});
      return controller.stream;
    }
    static fromFutures(futures) {
      let controller = _StreamControllerOfT()._check(StreamControllerOfT().new({sync: true}));
      let count = 0;
      let onValue = dart.fn(value => {
        if (!dart.test(controller.isClosed)) {
          controller[_add](value);
          if (--count == 0) controller[_closeUnchecked]();
        }
      }, TTodynamic$());
      let onError = dart.fn((error, stack) => {
        if (!dart.test(controller.isClosed)) {
          controller[_addError](error, core.StackTrace._check(stack));
          if (--count == 0) controller[_closeUnchecked]();
        }
      }, dynamicAnddynamicTodynamic());
      for (let future of futures) {
        count++;
        future.then(dart.dynamic)(onValue, {onError: onError});
      }
      if (count == 0) async.scheduleMicrotask(dart.bind(controller, 'close'));
      return controller.stream;
    }
    static fromIterable(data) {
      return new (_GeneratedStreamImplOfT())(dart.fn(() => new (_IterablePendingEventsOfT())(data), VoidTo_IterablePendingEventsOfT()));
    }
    static periodic(period, computation) {
      if (computation === void 0) computation = null;
      let timer = null;
      let computationCount = 0;
      let controller = null;
      let watch = new core.Stopwatch();
      function sendEvent() {
        watch.reset();
        let data = null;
        if (computation != null) {
          try {
            data = computation(computationCount++);
          } catch (e) {
            let s = dart.stackTrace(e);
            controller.addError(e, s);
            return;
          }

        }
        controller.add(data);
      }
      dart.fn(sendEvent, VoidTovoid());
      function startPeriodicTimer() {
        dart.assert(timer == null);
        timer = async.Timer.periodic(period, dart.fn(timer => {
          sendEvent();
        }, TimerTovoid()));
      }
      dart.fn(startPeriodicTimer, VoidTovoid());
      controller = StreamControllerOfT().new({sync: true, onListen: dart.fn(() => {
          watch.start();
          startPeriodicTimer();
        }, VoidTovoid()), onPause: dart.fn(() => {
          timer.cancel();
          timer = null;
          watch.stop();
        }, VoidTovoid()), onResume: dart.fn(() => {
          dart.assert(timer == null);
          let elapsed = watch.elapsed;
          watch.start();
          timer = async.Timer.new(period['-'](elapsed), dart.fn(() => {
            timer = null;
            startPeriodicTimer();
            sendEvent();
          }, VoidTovoid()));
        }, VoidTovoid()), onCancel: dart.fn(() => {
          if (timer != null) timer.cancel();
          timer = null;
        }, VoidTodynamic())});
      return controller.stream;
    }
    static eventTransformed(source, mapSink) {
      return new (_BoundSinkStreamOfdynamic$T())(source, mapSink);
    }
    get isBroadcast() {
      return false;
    }
    asBroadcastStream(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      return new (_AsBroadcastStreamOfT())(this, onListen, onCancel);
    }
    where(test) {
      return new (_WhereStreamOfT())(this, test);
    }
    map(S) {
      return convert => {
        return new (async._MapStream$(T, S))(this, convert);
      };
    }
    asyncMap(E) {
      return convert => {
        let controller = null;
        let subscription = null;
        const onListen = (function() {
          let add = dart.bind(controller, 'add');
          dart.assert(async._StreamController.is(controller) || async._BroadcastStreamController.is(controller));
          let eventSink = async._EventSink$(E).as(controller);
          let addError = dart.bind(eventSink, _addError);
          subscription = this.listen(dart.fn(event => {
            let newValue = null;
            try {
              newValue = convert(event);
            } catch (e) {
              let s = dart.stackTrace(e);
              controller.addError(e, s);
              return;
            }

            if (async.Future.is(newValue)) {
              subscription.pause();
              newValue.then(dart.dynamic)(add, {onError: addError}).whenComplete(dart.bind(subscription, 'resume'));
            } else {
              controller.add(E.as(newValue));
            }
          }, TTovoid$()), {onError: addError, onDone: dart.bind(controller, 'close')});
        }).bind(this);
        dart.fn(onListen, VoidTovoid());
        if (dart.test(this.isBroadcast)) {
          controller = async.StreamController$(E).broadcast({onListen: onListen, onCancel: dart.fn(() => {
              subscription.cancel();
            }, VoidTovoid()), sync: true});
        } else {
          controller = async.StreamController$(E).new({onListen: onListen, onPause: dart.fn(() => {
              subscription.pause();
            }, VoidTovoid()), onResume: dart.fn(() => {
              subscription.resume();
            }, VoidTovoid()), onCancel: dart.fn(() => {
              subscription.cancel();
            }, VoidTodynamic()), sync: true});
        }
        return controller.stream;
      };
    }
    asyncExpand(E) {
      return convert => {
        let controller = null;
        let subscription = null;
        const onListen = (function() {
          dart.assert(async._StreamController.is(controller) || async._BroadcastStreamController.is(controller));
          let eventSink = async._EventSink$(E).as(controller);
          subscription = this.listen(dart.fn(event => {
            let newStream = null;
            try {
              newStream = convert(event);
            } catch (e) {
              let s = dart.stackTrace(e);
              controller.addError(e, s);
              return;
            }

            if (newStream != null) {
              subscription.pause();
              controller.addStream(newStream).whenComplete(dart.bind(subscription, 'resume'));
            }
          }, TTovoid$()), {onError: dart.bind(eventSink, _addError), onDone: dart.bind(controller, 'close')});
        }).bind(this);
        dart.fn(onListen, VoidTovoid());
        if (dart.test(this.isBroadcast)) {
          controller = async.StreamController$(E).broadcast({onListen: onListen, onCancel: dart.fn(() => {
              subscription.cancel();
            }, VoidTovoid()), sync: true});
        } else {
          controller = async.StreamController$(E).new({onListen: onListen, onPause: dart.fn(() => {
              subscription.pause();
            }, VoidTovoid()), onResume: dart.fn(() => {
              subscription.resume();
            }, VoidTovoid()), onCancel: dart.fn(() => {
              subscription.cancel();
            }, VoidTodynamic()), sync: true});
        }
        return controller.stream;
      };
    }
    handleError(onError, opts) {
      let test = opts && 'test' in opts ? opts.test : null;
      return new (_HandleErrorStreamOfT())(this, onError, test);
    }
    expand(S) {
      return convert => {
        return new (async._ExpandStream$(T, S))(this, convert);
      };
    }
    pipe(streamConsumer) {
      StreamConsumerOfT()._check(streamConsumer);
      return streamConsumer.addStream(this).then(dart.dynamic)(dart.fn(_ => streamConsumer.close(), dynamicToFuture()));
    }
    transform(S) {
      return streamTransformer => {
        async.StreamTransformer$(T, S)._check(streamTransformer);
        return streamTransformer.bind(this);
      };
    }
    reduce(combine) {
      TAndTToT()._check(combine);
      let result = new (_FutureOfT())();
      let seenFirst = false;
      let value = null;
      let subscription = null;
      subscription = this.listen(dart.fn(element => {
        if (seenFirst) {
          async._runUserCode(dart.fn(() => combine(value, element), VoidToT()), dart.fn(newValue => {
            value = newValue;
          }, TTodynamic$()), async._cancelAndErrorClosure(subscription, result));
        } else {
          value = element;
          seenFirst = true;
        }
      }, TTovoid$()), {onError: dart.bind(result, _completeError), onDone: dart.fn(() => {
          if (!seenFirst) {
            try {
              dart.throw(_internal.IterableElementError.noElement());
            } catch (e) {
              let s = dart.stackTrace(e);
              async._completeWithErrorCallback(result, e, s);
            }

          } else {
            result[_complete](value);
          }
        }, VoidTovoid()), cancelOnError: true});
      return result;
    }
    fold(S) {
      return (initialValue, combine) => {
        let result = new (async._Future$(S))();
        let value = initialValue;
        let subscription = null;
        subscription = this.listen(dart.fn(element => {
          async._runUserCode(dart.fn(() => combine(value, element), dart.definiteFunctionType(S, [])), dart.fn(newValue => {
            value = newValue;
          }, dart.definiteFunctionType(dart.dynamic, [S])), async._cancelAndErrorClosure(subscription, result));
        }, TTovoid$()), {onError: dart.fn((e, st) => {
            result[_completeError](e, core.StackTrace._check(st));
          }, dynamicAnddynamicTodynamic()), onDone: dart.fn(() => {
            result[_complete](value);
          }, VoidTovoid()), cancelOnError: true});
        return result;
      };
    }
    join(separator) {
      if (separator === void 0) separator = "";
      let result = new (_FutureOfString())();
      let buffer = new core.StringBuffer();
      let subscription = null;
      let first = true;
      subscription = this.listen(dart.fn(element => {
        if (!first) {
          buffer.write(separator);
        }
        first = false;
        try {
          buffer.write(element);
        } catch (e) {
          let s = dart.stackTrace(e);
          async._cancelAndErrorWithReplacement(subscription, result, e, s);
        }

      }, TTovoid$()), {onError: dart.fn(e => {
          result[_completeError](e);
        }, dynamicTodynamic()), onDone: dart.fn(() => {
          result[_complete](buffer.toString());
        }, VoidTovoid()), cancelOnError: true});
      return result;
    }
    contains(needle) {
      let future = new (_FutureOfbool())();
      let subscription = null;
      subscription = this.listen(dart.fn(element => {
        async._runUserCode(dart.fn(() => dart.equals(element, needle), VoidTobool()), dart.fn(isMatch => {
          if (dart.test(isMatch)) {
            async._cancelAndValue(subscription, future, true);
          }
        }, boolTodynamic()), async._cancelAndErrorClosure(subscription, future));
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](false);
        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    forEach(action) {
      let future = new async._Future();
      let subscription = null;
      subscription = this.listen(dart.fn(element => {
        async._runUserCode(dart.fn(() => action(element), VoidTovoid()), dart.fn(_ => {
        }, dynamicTodynamic()), async._cancelAndErrorClosure(subscription, future));
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](null);
        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    every(test) {
      let future = new (_FutureOfbool())();
      let subscription = null;
      subscription = this.listen(dart.fn(element => {
        async._runUserCode(dart.fn(() => test(element), VoidTobool()), dart.fn(isMatch => {
          if (!dart.test(isMatch)) {
            async._cancelAndValue(subscription, future, false);
          }
        }, boolTodynamic()), async._cancelAndErrorClosure(subscription, future));
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](true);
        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    any(test) {
      let future = new (_FutureOfbool())();
      let subscription = null;
      subscription = this.listen(dart.fn(element => {
        async._runUserCode(dart.fn(() => test(element), VoidTobool()), dart.fn(isMatch => {
          if (dart.test(isMatch)) {
            async._cancelAndValue(subscription, future, true);
          }
        }, boolTodynamic()), async._cancelAndErrorClosure(subscription, future));
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](false);
        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    get length() {
      let future = new (_FutureOfint())();
      let count = 0;
      this.listen(dart.fn(_ => {
        count++;
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](count);
        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    get isEmpty() {
      let future = new (_FutureOfbool())();
      let subscription = null;
      subscription = this.listen(dart.fn(_ => {
        async._cancelAndValue(subscription, future, false);
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](true);
        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    toList() {
      let result = JSArrayOfT().of([]);
      let future = new (_FutureOfListOfT())();
      this.listen(dart.fn(data => {
        result[dartx.add](data);
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](result);
        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    toSet() {
      let result = SetOfT().new();
      let future = new (_FutureOfSetOfT())();
      this.listen(dart.fn(data => {
        result.add(data);
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](result);
        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    drain(E) {
      return futureValue => {
        if (futureValue === void 0) futureValue = null;
        return this.listen(null, {cancelOnError: true}).asFuture(E)(futureValue);
      };
    }
    take(count) {
      return new (_TakeStreamOfT())(this, count);
    }
    takeWhile(test) {
      return new (_TakeWhileStreamOfT())(this, test);
    }
    skip(count) {
      return new (_SkipStreamOfT())(this, count);
    }
    skipWhile(test) {
      return new (_SkipWhileStreamOfT())(this, test);
    }
    distinct(equals) {
      if (equals === void 0) equals = null;
      return new (_DistinctStreamOfT())(this, equals);
    }
    get first() {
      let future = new (_FutureOfT())();
      let subscription = null;
      subscription = this.listen(dart.fn(value => {
        async._cancelAndValue(subscription, future, value);
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          try {
            dart.throw(_internal.IterableElementError.noElement());
          } catch (e) {
            let s = dart.stackTrace(e);
            async._completeWithErrorCallback(future, e, s);
          }

        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    get last() {
      let future = new (_FutureOfT())();
      let result = null;
      let foundResult = false;
      this.listen(dart.fn(value => {
        foundResult = true;
        result = value;
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          if (foundResult) {
            future[_complete](result);
            return;
          }
          try {
            dart.throw(_internal.IterableElementError.noElement());
          } catch (e) {
            let s = dart.stackTrace(e);
            async._completeWithErrorCallback(future, e, s);
          }

        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    get single() {
      let future = new (_FutureOfT())();
      let result = null;
      let foundResult = false;
      let subscription = null;
      subscription = this.listen(dart.fn(value => {
        if (foundResult) {
          try {
            dart.throw(_internal.IterableElementError.tooMany());
          } catch (e) {
            let s = dart.stackTrace(e);
            async._cancelAndErrorWithReplacement(subscription, future, e, s);
          }

          return;
        }
        foundResult = true;
        result = value;
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          if (foundResult) {
            future[_complete](result);
            return;
          }
          try {
            dart.throw(_internal.IterableElementError.noElement());
          } catch (e) {
            let s = dart.stackTrace(e);
            async._completeWithErrorCallback(future, e, s);
          }

        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    firstWhere(test, opts) {
      let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
      let future = new async._Future();
      let subscription = null;
      subscription = this.listen(dart.fn(value => {
        async._runUserCode(dart.fn(() => test(value), VoidTobool()), dart.fn(isMatch => {
          if (dart.test(isMatch)) {
            async._cancelAndValue(subscription, future, value);
          }
        }, boolTodynamic()), async._cancelAndErrorClosure(subscription, future));
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          if (defaultValue != null) {
            async._runUserCode(defaultValue, dart.bind(future, _complete), dart.bind(future, _completeError));
            return;
          }
          try {
            dart.throw(_internal.IterableElementError.noElement());
          } catch (e) {
            let s = dart.stackTrace(e);
            async._completeWithErrorCallback(future, e, s);
          }

        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    lastWhere(test, opts) {
      let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
      let future = new async._Future();
      let result = null;
      let foundResult = false;
      let subscription = null;
      subscription = this.listen(dart.fn(value => {
        async._runUserCode(dart.fn(() => true == test(value), VoidTobool()), dart.fn(isMatch => {
          if (dart.test(isMatch)) {
            foundResult = true;
            result = value;
          }
        }, boolTodynamic()), async._cancelAndErrorClosure(subscription, future));
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          if (foundResult) {
            future[_complete](result);
            return;
          }
          if (defaultValue != null) {
            async._runUserCode(defaultValue, dart.bind(future, _complete), dart.bind(future, _completeError));
            return;
          }
          try {
            dart.throw(_internal.IterableElementError.noElement());
          } catch (e) {
            let s = dart.stackTrace(e);
            async._completeWithErrorCallback(future, e, s);
          }

        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    singleWhere(test) {
      let future = new (_FutureOfT())();
      let result = null;
      let foundResult = false;
      let subscription = null;
      subscription = this.listen(dart.fn(value => {
        async._runUserCode(dart.fn(() => true == test(value), VoidTobool()), dart.fn(isMatch => {
          if (dart.test(isMatch)) {
            if (foundResult) {
              try {
                dart.throw(_internal.IterableElementError.tooMany());
              } catch (e) {
                let s = dart.stackTrace(e);
                async._cancelAndErrorWithReplacement(subscription, future, e, s);
              }

              return;
            }
            foundResult = true;
            result = value;
          }
        }, boolTodynamic()), async._cancelAndErrorClosure(subscription, future));
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          if (foundResult) {
            future[_complete](result);
            return;
          }
          try {
            dart.throw(_internal.IterableElementError.noElement());
          } catch (e) {
            let s = dart.stackTrace(e);
            async._completeWithErrorCallback(future, e, s);
          }

        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    elementAt(index) {
      if (!(typeof index == 'number') || dart.notNull(index) < 0) dart.throw(new core.ArgumentError(index));
      let future = new (_FutureOfT())();
      let subscription = null;
      let elementIndex = 0;
      subscription = this.listen(dart.fn(value => {
        if (index == elementIndex) {
          async._cancelAndValue(subscription, future, value);
          return;
        }
        elementIndex = elementIndex + 1;
      }, TTovoid$()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_completeError](core.RangeError.index(index, this, "index", null, elementIndex));
        }, VoidTovoid()), cancelOnError: true});
      return future;
    }
    timeout(timeLimit, opts) {
      let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null;
      let controller = null;
      let subscription = null;
      let timer = null;
      let zone = null;
      let timeout = null;
      function onData(event) {
        timer.cancel();
        controller.add(event);
        timer = zone.createTimer(timeLimit, timeout);
      }
      dart.fn(onData, TTovoid$());
      function onError(error, stackTrace) {
        timer.cancel();
        dart.assert(async._StreamController.is(controller) || async._BroadcastStreamController.is(controller));
        let eventSink = controller;
        dart.dsend(eventSink, _addError, error, stackTrace);
        timer = zone.createTimer(timeLimit, timeout);
      }
      dart.fn(onError, dynamicAndStackTraceTovoid());
      function onDone() {
        timer.cancel();
        controller.close();
      }
      dart.fn(onDone, VoidTovoid());
      const onListen = (function() {
        zone = async.Zone.current;
        if (onTimeout == null) {
          timeout = dart.fn(() => {
            controller.addError(new async.TimeoutException("No stream event", timeLimit), null);
          }, VoidTovoid());
        } else {
          let registeredOnTimeout = zone.registerUnaryCallback(dart.dynamic, EventSinkOfT())(onTimeout);
          let wrapper = new async._ControllerEventSinkWrapper(null);
          timeout = dart.fn(() => {
            wrapper[_sink] = controller;
            zone.runUnaryGuarded(dart.dynamic, EventSinkOfT())(registeredOnTimeout, wrapper);
            wrapper[_sink] = null;
          }, VoidTovoid());
        }
        subscription = this.listen(onData, {onError: onError, onDone: onDone});
        timer = zone.createTimer(timeLimit, timeout);
      }).bind(this);
      dart.fn(onListen, VoidTovoid());
      function onCancel() {
        timer.cancel();
        let result = subscription.cancel();
        subscription = null;
        return result;
      }
      dart.fn(onCancel, VoidToFuture());
      controller = dart.test(this.isBroadcast) ? new (_SyncBroadcastStreamControllerOfT())(onListen, onCancel) : new (_SyncStreamControllerOfT())(onListen, dart.fn(() => {
        timer.cancel();
        subscription.pause();
      }, VoidTovoid()), dart.fn(() => {
        subscription.resume();
        timer = zone.createTimer(timeLimit, timeout);
      }, VoidTovoid()), onCancel);
      return controller.stream;
    }
  }
  dart.addTypeTests(Stream);
  dart.defineNamedConstructor(Stream, '_internal');
  dart.setSignature(Stream, {
    constructors: () => ({
      new: dart.definiteFunctionType(async.Stream$(T), []),
      _internal: dart.definiteFunctionType(async.Stream$(T), []),
      empty: dart.definiteFunctionType(async.Stream$(T), []),
      fromFuture: dart.definiteFunctionType(async.Stream$(T), [FutureOfT()]),
      fromFutures: dart.definiteFunctionType(async.Stream$(T), [IterableOfFutureOfT()]),
      fromIterable: dart.definiteFunctionType(async.Stream$(T), [IterableOfT()]),
      periodic: dart.definiteFunctionType(async.Stream$(T), [core.Duration], [intToT()]),
      eventTransformed: dart.definiteFunctionType(async.Stream$(T), [async.Stream, EventSinkOfTToEventSink()])
    }),
    getters: () => ({
      isBroadcast: dart.definiteFunctionType(core.bool, []),
      length: dart.definiteFunctionType(async.Future$(core.int), []),
      isEmpty: dart.definiteFunctionType(async.Future$(core.bool), []),
      first: dart.definiteFunctionType(async.Future$(T), []),
      last: dart.definiteFunctionType(async.Future$(T), []),
      single: dart.definiteFunctionType(async.Future$(T), [])
    }),
    methods: () => ({
      asBroadcastStream: dart.definiteFunctionType(async.Stream$(T), [], {onListen: StreamSubscriptionOfTTovoid(), onCancel: StreamSubscriptionOfTTovoid()}),
      where: dart.definiteFunctionType(async.Stream$(T), [TTobool()]),
      map: dart.definiteFunctionType(S => [async.Stream$(S), [dart.functionType(S, [T])]]),
      asyncMap: dart.definiteFunctionType(E => [async.Stream$(E), [TTodynamic()]]),
      asyncExpand: dart.definiteFunctionType(E => [async.Stream$(E), [dart.functionType(async.Stream$(E), [T])]]),
      handleError: dart.definiteFunctionType(async.Stream$(T), [core.Function], {test: dynamicTobool()}),
      expand: dart.definiteFunctionType(S => [async.Stream$(S), [dart.functionType(core.Iterable$(S), [T])]]),
      pipe: dart.definiteFunctionType(async.Future, [StreamConsumerOfT()]),
      transform: dart.definiteFunctionType(S => [async.Stream$(S), [async.StreamTransformer$(T, S)]]),
      reduce: dart.definiteFunctionType(async.Future$(T), [TAndTToT()]),
      fold: dart.definiteFunctionType(S => [async.Future$(S), [S, dart.functionType(S, [S, T])]]),
      join: dart.definiteFunctionType(async.Future$(core.String), [], [core.String]),
      contains: dart.definiteFunctionType(async.Future$(core.bool), [core.Object]),
      forEach: dart.definiteFunctionType(async.Future, [TTovoid()]),
      every: dart.definiteFunctionType(async.Future$(core.bool), [TTobool()]),
      any: dart.definiteFunctionType(async.Future$(core.bool), [TTobool()]),
      toList: dart.definiteFunctionType(async.Future$(core.List$(T)), []),
      toSet: dart.definiteFunctionType(async.Future$(core.Set$(T)), []),
      drain: dart.definiteFunctionType(E => [async.Future$(E), [], [E]]),
      take: dart.definiteFunctionType(async.Stream$(T), [core.int]),
      takeWhile: dart.definiteFunctionType(async.Stream$(T), [TTobool()]),
      skip: dart.definiteFunctionType(async.Stream$(T), [core.int]),
      skipWhile: dart.definiteFunctionType(async.Stream$(T), [TTobool()]),
      distinct: dart.definiteFunctionType(async.Stream$(T), [], [TAndTTobool()]),
      firstWhere: dart.definiteFunctionType(async.Future, [TTobool()], {defaultValue: VoidToObject()}),
      lastWhere: dart.definiteFunctionType(async.Future, [TTobool()], {defaultValue: VoidToObject()}),
      singleWhere: dart.definiteFunctionType(async.Future$(T), [TTobool()]),
      elementAt: dart.definiteFunctionType(async.Future$(T), [core.int]),
      timeout: dart.definiteFunctionType(async.Stream$(T), [core.Duration], {onTimeout: EventSinkOfTTovoid()})
    })
  });
  return Stream;
});
async.Stream = Stream();
_isolate_helper.ReceivePortImpl = class ReceivePortImpl extends async.Stream {
  new() {
    ReceivePortImpl.prototype.fromRawReceivePort.call(this, new _isolate_helper.RawReceivePortImpl(null));
  }
  weak() {
    ReceivePortImpl.prototype.fromRawReceivePort.call(this, new _isolate_helper.RawReceivePortImpl.weak(null));
  }
  fromRawReceivePort(rawPort) {
    this[_rawPort] = rawPort;
    this[_controller] = null;
    super.new();
    this[_controller] = async.StreamController.new({onCancel: dart.bind(this, 'close'), sync: true});
    this[_rawPort].handler = dart.bind(this[_controller], 'add');
  }
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    return this[_controller].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
  close() {
    this[_rawPort].close();
    this[_controller].close();
  }
  get sendPort() {
    return this[_rawPort].sendPort;
  }
};
dart.addSimpleTypeTests(_isolate_helper.ReceivePortImpl);
dart.defineNamedConstructor(_isolate_helper.ReceivePortImpl, 'weak');
dart.defineNamedConstructor(_isolate_helper.ReceivePortImpl, 'fromRawReceivePort');
_isolate_helper.ReceivePortImpl[dart.implements] = () => [isolate.ReceivePort];
dart.setSignature(_isolate_helper.ReceivePortImpl, {
  constructors: () => ({
    new: dart.definiteFunctionType(_isolate_helper.ReceivePortImpl, []),
    weak: dart.definiteFunctionType(_isolate_helper.ReceivePortImpl, []),
    fromRawReceivePort: dart.definiteFunctionType(_isolate_helper.ReceivePortImpl, [isolate.RawReceivePort])
  }),
  fields: () => ({
    [_rawPort]: isolate.RawReceivePort,
    [_controller]: async.StreamController
  }),
  getters: () => ({sendPort: dart.definiteFunctionType(isolate.SendPort, [])}),
  methods: () => ({
    listen: dart.definiteFunctionType(async.StreamSubscription, [dynamicTovoid()], {onError: core.Function, onDone: VoidTovoid(), cancelOnError: core.bool}),
    close: dart.definiteFunctionType(dart.void, [])
  })
});
const _once = Symbol('_once');
const _inEventLoop = Symbol('_inEventLoop');
const _handle = Symbol('_handle');
_isolate_helper.TimerImpl = class TimerImpl extends core.Object {
  new(milliseconds, callback) {
    this[_once] = true;
    this[_inEventLoop] = false;
    this[_handle] = null;
    if (milliseconds == 0 && (!dart.test(_isolate_helper.hasTimer()) || dart.test(_isolate_helper._globalState.isWorker))) {
      const internalCallback = (function() {
        this[_handle] = null;
        callback();
      }).bind(this);
      dart.fn(internalCallback, VoidTovoid());
      this[_handle] = 1;
      _isolate_helper._globalState.topEventLoop.enqueue(_isolate_helper._globalState.currentContext, internalCallback, 'timer');
      this[_inEventLoop] = true;
    } else if (dart.test(_isolate_helper.hasTimer())) {
      const internalCallback = (function() {
        this[_handle] = null;
        _isolate_helper.leaveJsAsync();
        callback();
      }).bind(this);
      dart.fn(internalCallback, VoidTovoid());
      _isolate_helper.enterJsAsync();
      this[_handle] = self.setTimeout(internalCallback, milliseconds);
    } else {
      dart.assert(dart.notNull(milliseconds) > 0);
      dart.throw(new core.UnsupportedError("Timer greater than 0."));
    }
  }
  periodic(milliseconds, callback) {
    this[_once] = false;
    this[_inEventLoop] = false;
    this[_handle] = null;
    if (dart.test(_isolate_helper.hasTimer())) {
      _isolate_helper.enterJsAsync();
      this[_handle] = self.setInterval(dart.fn(() => {
        callback(this);
      }, VoidTodynamic()), milliseconds);
    } else {
      dart.throw(new core.UnsupportedError("Periodic timer."));
    }
  }
  cancel() {
    if (dart.test(_isolate_helper.hasTimer())) {
      if (dart.test(this[_inEventLoop])) {
        dart.throw(new core.UnsupportedError("Timer in event loop cannot be canceled."));
      }
      if (this[_handle] == null) return;
      _isolate_helper.leaveJsAsync();
      if (dart.test(this[_once])) {
        self.clearTimeout(this[_handle]);
      } else {
        self.clearInterval(this[_handle]);
      }
      this[_handle] = null;
    } else {
      dart.throw(new core.UnsupportedError("Canceling a timer."));
    }
  }
  get isActive() {
    return this[_handle] != null;
  }
};
dart.defineNamedConstructor(_isolate_helper.TimerImpl, 'periodic');
_isolate_helper.TimerImpl[dart.implements] = () => [async.Timer];
dart.setSignature(_isolate_helper.TimerImpl, {
  constructors: () => ({
    new: dart.definiteFunctionType(_isolate_helper.TimerImpl, [core.int, VoidTovoid()]),
    periodic: dart.definiteFunctionType(_isolate_helper.TimerImpl, [core.int, TimerTovoid()])
  }),
  fields: () => ({
    [_once]: core.bool,
    [_inEventLoop]: core.bool,
    [_handle]: core.int
  }),
  getters: () => ({isActive: dart.definiteFunctionType(core.bool, [])}),
  methods: () => ({cancel: dart.definiteFunctionType(dart.void, [])})
});
_isolate_helper.hasTimer = function() {
  return self.setTimeout != null;
};
dart.lazyFn(_isolate_helper.hasTimer, () => VoidTobool());
_isolate_helper.CapabilityImpl = class CapabilityImpl extends core.Object {
  new() {
    CapabilityImpl.prototype._internal.call(this, _js_helper.random64());
  }
  _internal(id) {
    this[_id] = id;
  }
  get hashCode() {
    let hash = this[_id];
    hash = (hash[dartx['>>']](0) ^ (dart.notNull(hash) / 4294967296)[dartx.truncate]()) >>> 0;
    hash = ((~dart.notNull(hash) >>> 0) + (dart.notNull(hash) << 15 >>> 0) & 4294967295) >>> 0;
    hash = (dart.notNull(hash) ^ hash[dartx['>>']](12)) >>> 0;
    hash = (dart.notNull(hash) * 5 & 4294967295) >>> 0;
    hash = (dart.notNull(hash) ^ hash[dartx['>>']](4)) >>> 0;
    hash = (dart.notNull(hash) * 2057 & 4294967295) >>> 0;
    hash = (dart.notNull(hash) ^ hash[dartx['>>']](16)) >>> 0;
    return hash;
  }
  ['=='](other) {
    if (core.identical(other, this)) return true;
    if (_isolate_helper.CapabilityImpl.is(other)) {
      return core.identical(this[_id], other[_id]);
    }
    return false;
  }
};
dart.defineNamedConstructor(_isolate_helper.CapabilityImpl, '_internal');
_isolate_helper.CapabilityImpl[dart.implements] = () => [isolate.Capability];
dart.setSignature(_isolate_helper.CapabilityImpl, {
  constructors: () => ({
    new: dart.definiteFunctionType(_isolate_helper.CapabilityImpl, []),
    _internal: dart.definiteFunctionType(_isolate_helper.CapabilityImpl, [core.int])
  }),
  fields: () => ({[_id]: core.int}),
  methods: () => ({'==': dart.definiteFunctionType(core.bool, [core.Object])})
});
_isolate_helper._serializeMessage = function(message) {
  return new _isolate_helper._Serializer().serialize(message);
};
dart.fn(_isolate_helper._serializeMessage, dynamicTodynamic());
_isolate_helper._deserializeMessage = function(message) {
  return new _isolate_helper._Deserializer().deserialize(message);
};
dart.fn(_isolate_helper._deserializeMessage, dynamicTodynamic());
_isolate_helper._clone = function(message) {
  let serializer = new _isolate_helper._Serializer({serializeSendPorts: false});
  let deserializer = new _isolate_helper._Deserializer();
  return deserializer.deserialize(serializer.serialize(message));
};
dart.fn(_isolate_helper._clone, dynamicTodynamic());
const _serializeSendPorts = Symbol('_serializeSendPorts');
_isolate_helper._Serializer = class _Serializer extends core.Object {
  new(opts) {
    let serializeSendPorts = opts && 'serializeSendPorts' in opts ? opts.serializeSendPorts : true;
    this.serializedObjectIds = MapOfdynamic$int().identity();
    this[_serializeSendPorts] = core.bool._check(serializeSendPorts);
  }
  serialize(x) {
    if (dart.test(this.isPrimitive(x))) return this.serializePrimitive(x);
    let serializationId = this.serializedObjectIds[dartx._get](x);
    if (serializationId != null) return this.makeRef(serializationId);
    serializationId = this.serializedObjectIds[dartx.length];
    this.serializedObjectIds[dartx._set](x, serializationId);
    if (_native_typed_data.NativeByteBuffer.is(x)) return this.serializeByteBuffer(x);
    if (_native_typed_data.NativeTypedData.is(x)) return this.serializeTypedData(x);
    if (_interceptors.JSIndexable.is(x)) return this.serializeJSIndexable(x);
    if (_js_helper.InternalMap.is(x)) return this.serializeMap(x);
    if (_interceptors.JSObject.is(x)) return this.serializeJSObject(x);
    if (_interceptors.Interceptor.is(x)) this.unsupported(x);
    if (isolate.RawReceivePort.is(x)) {
      this.unsupported(x, "RawReceivePorts can't be transmitted:");
    }
    if (_isolate_helper._NativeJsSendPort.is(x)) return this.serializeJsSendPort(x);
    if (_isolate_helper._WorkerSendPort.is(x)) return this.serializeWorkerSendPort(x);
    if (core.Function.is(x)) return this.serializeClosure(x);
    return this.serializeDartObject(x);
  }
  unsupported(x, message) {
    if (message === void 0) message = null;
    if (message == null) message = "Can't transmit:";
    dart.throw(new core.UnsupportedError(dart.str`${message} ${x}`));
  }
  makeRef(serializationId) {
    return JSArrayOfObject().of(["ref", serializationId]);
  }
  isPrimitive(x) {
    return x == null || typeof x == 'string' || typeof x == 'number' || typeof x == 'boolean';
  }
  serializePrimitive(primitive) {
    return primitive;
  }
  serializeByteBuffer(buffer) {
    return JSArrayOfObject().of(["buffer", buffer]);
  }
  serializeTypedData(data) {
    return JSArrayOfObject().of(["typed", data]);
  }
  serializeJSIndexable(indexable) {
    dart.assert(!(typeof indexable == 'string'));
    let serialized = core.List._check(this.serializeArray(_interceptors.JSArray._check(indexable)));
    if (_interceptors.JSFixedArray.is(indexable)) return JSArrayOfObject().of(["fixed", serialized]);
    if (_interceptors.JSExtendableArray.is(indexable)) return JSArrayOfObject().of(["extendable", serialized]);
    if (_interceptors.JSMutableArray.is(indexable)) return JSArrayOfObject().of(["mutable", serialized]);
    if (_interceptors.JSArray.is(indexable)) return JSArrayOfObject().of(["const", serialized]);
    this.unsupported(indexable, "Can't serialize indexable: ");
    return null;
  }
  serializeArray(x) {
    let serialized = [];
    serialized[dartx.length] = x[dartx.length];
    for (let i = 0; i < dart.notNull(x[dartx.length]); i++) {
      serialized[dartx._set](i, this.serialize(x[dartx._get](i)));
    }
    return serialized;
  }
  serializeArrayInPlace(x) {
    for (let i = 0; i < dart.notNull(x[dartx.length]); i++) {
      x[dartx._set](i, this.serialize(x[dartx._get](i)));
    }
    return x;
  }
  serializeMap(x) {
    let serializeTearOff = dart.bind(this, 'serialize');
    return JSArrayOfObject().of(['map', x.keys[dartx.map](dart.dynamic)(dynamicTodynamic()._check(serializeTearOff))[dartx.toList](), x.values[dartx.map](dart.dynamic)(dynamicTodynamic()._check(serializeTearOff))[dartx.toList]()]);
  }
  serializeJSObject(x) {
    if (!!x.constructor && x.constructor !== Object) {
      this.unsupported(x, "Only plain JS Objects are supported:");
    }
    let keys = Object.keys(x);
    let values = [];
    values[dartx.length] = keys[dartx.length];
    for (let i = 0; i < dart.notNull(keys[dartx.length]); i++) {
      values[dartx._set](i, this.serialize(x[keys[dartx._get](i)]));
    }
    return JSArrayOfObject().of(['js-object', keys, values]);
  }
  serializeWorkerSendPort(x) {
    if (dart.test(this[_serializeSendPorts])) {
      return JSArrayOfObject().of(['sendport', x[_workerId], x[_isolateId], x[_receivePortId]]);
    }
    return JSArrayOfObject().of(['raw sendport', x]);
  }
  serializeJsSendPort(x) {
    if (dart.test(this[_serializeSendPorts])) {
      let workerId = _isolate_helper._globalState.currentManagerId;
      return JSArrayOfObject().of(['sendport', workerId, x[_isolateId], x[_receivePort][_id]]);
    }
    return JSArrayOfObject().of(['raw sendport', x]);
  }
  serializeCapability(x) {
    return JSArrayOfObject().of(['capability', x[_id]]);
  }
  serializeClosure(x) {
    let name = _isolate_helper.IsolateNatives._getJSFunctionName(x);
    if (name == null) {
      this.unsupported(x, "Closures can't be transmitted:");
    }
    return JSArrayOfString().of(['function', name]);
  }
  serializeDartObject(x) {
    let classExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_names.CLASS_ID_EXTRACTOR);
    let fieldsExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_names.CLASS_FIELDS_EXTRACTOR);
    let classId = classExtractor(x);
    let fields = fieldsExtractor(x);
    return ['dart', classId, this.serializeArrayInPlace(_interceptors.JSArray._check(fields))];
  }
};
dart.setSignature(_isolate_helper._Serializer, {
  constructors: () => ({new: dart.definiteFunctionType(_isolate_helper._Serializer, [], {serializeSendPorts: dart.dynamic})}),
  fields: () => ({
    [_serializeSendPorts]: core.bool,
    serializedObjectIds: MapOfdynamic$int()
  }),
  methods: () => ({
    serialize: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    unsupported: dart.definiteFunctionType(dart.void, [dart.dynamic], [core.String]),
    makeRef: dart.definiteFunctionType(dart.dynamic, [core.int]),
    isPrimitive: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    serializePrimitive: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    serializeByteBuffer: dart.definiteFunctionType(dart.dynamic, [_native_typed_data.NativeByteBuffer]),
    serializeTypedData: dart.definiteFunctionType(dart.dynamic, [_native_typed_data.NativeTypedData]),
    serializeJSIndexable: dart.definiteFunctionType(dart.dynamic, [_interceptors.JSIndexable]),
    serializeArray: dart.definiteFunctionType(dart.dynamic, [_interceptors.JSArray]),
    serializeArrayInPlace: dart.definiteFunctionType(dart.dynamic, [_interceptors.JSArray]),
    serializeMap: dart.definiteFunctionType(dart.dynamic, [_js_helper.InternalMap]),
    serializeJSObject: dart.definiteFunctionType(dart.dynamic, [_interceptors.JSObject]),
    serializeWorkerSendPort: dart.definiteFunctionType(dart.dynamic, [_isolate_helper._WorkerSendPort]),
    serializeJsSendPort: dart.definiteFunctionType(dart.dynamic, [_isolate_helper._NativeJsSendPort]),
    serializeCapability: dart.definiteFunctionType(dart.dynamic, [_isolate_helper.CapabilityImpl]),
    serializeClosure: dart.definiteFunctionType(dart.dynamic, [core.Function]),
    serializeDartObject: dart.definiteFunctionType(dart.dynamic, [dart.dynamic])
  })
});
const _adjustSendPorts = Symbol('_adjustSendPorts');
_isolate_helper._Deserializer = class _Deserializer extends core.Object {
  new(opts) {
    let adjustSendPorts = opts && 'adjustSendPorts' in opts ? opts.adjustSendPorts : true;
    this.deserializedObjects = core.List.new();
    this[_adjustSendPorts] = core.bool._check(adjustSendPorts);
  }
  deserialize(x) {
    if (dart.test(this.isPrimitive(x))) return this.deserializePrimitive(x);
    if (!_interceptors.JSArray.is(x)) dart.throw(new core.ArgumentError(dart.str`Bad serialized message: ${x}`));
    switch (dart.dload(x, 'first')) {
      case "ref":
      {
        return this.deserializeRef(x);
      }
      case "buffer":
      {
        return this.deserializeByteBuffer(x);
      }
      case "typed":
      {
        return this.deserializeTypedData(x);
      }
      case "fixed":
      {
        return this.deserializeFixed(x);
      }
      case "extendable":
      {
        return this.deserializeExtendable(x);
      }
      case "mutable":
      {
        return this.deserializeMutable(x);
      }
      case "const":
      {
        return this.deserializeConst(x);
      }
      case "map":
      {
        return this.deserializeMap(_js_helper.InternalMap._check(x));
      }
      case "sendport":
      {
        return this.deserializeSendPort(x);
      }
      case "raw sendport":
      {
        return this.deserializeRawSendPort(x);
      }
      case "js-object":
      {
        return this.deserializeJSObject(x);
      }
      case "function":
      {
        return this.deserializeClosure(x);
      }
      case "dart":
      {
        return this.deserializeDartObject(x);
      }
      default:
      {
        dart.throw(dart.str`couldn't deserialize: ${x}`);
      }
    }
  }
  isPrimitive(x) {
    return x == null || typeof x == 'string' || typeof x == 'number' || typeof x == 'boolean';
  }
  deserializePrimitive(x) {
    return x;
  }
  deserializeRef(x) {
    dart.assert(dart.equals(dart.dindex(x, 0), 'ref'));
    let serializationId = core.int._check(dart.dindex(x, 1));
    return this.deserializedObjects[dartx._get](serializationId);
  }
  deserializeByteBuffer(x) {
    dart.assert(dart.equals(dart.dindex(x, 0), 'buffer'));
    let result = _native_typed_data.NativeByteBuffer._check(dart.dindex(x, 1));
    this.deserializedObjects[dartx.add](result);
    return result;
  }
  deserializeTypedData(x) {
    dart.assert(dart.equals(dart.dindex(x, 0), 'typed'));
    let result = _native_typed_data.NativeTypedData._check(dart.dindex(x, 1));
    this.deserializedObjects[dartx.add](result);
    return result;
  }
  deserializeArrayInPlace(x) {
    for (let i = 0; i < dart.notNull(x[dartx.length]); i++) {
      x[dartx._set](i, this.deserialize(x[dartx._get](i)));
    }
    return x;
  }
  deserializeFixed(x) {
    dart.assert(dart.equals(dart.dindex(x, 0), 'fixed'));
    let result = core.List._check(dart.dindex(x, 1));
    this.deserializedObjects[dartx.add](result);
    return _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(_interceptors.JSArray._check(result)));
  }
  deserializeExtendable(x) {
    dart.assert(dart.equals(dart.dindex(x, 0), 'extendable'));
    let result = core.List._check(dart.dindex(x, 1));
    this.deserializedObjects[dartx.add](result);
    return _interceptors.JSArray.markGrowable(this.deserializeArrayInPlace(_interceptors.JSArray._check(result)));
  }
  deserializeMutable(x) {
    dart.assert(dart.equals(dart.dindex(x, 0), 'mutable'));
    let result = core.List._check(dart.dindex(x, 1));
    this.deserializedObjects[dartx.add](result);
    return this.deserializeArrayInPlace(_interceptors.JSArray._check(result));
  }
  deserializeConst(x) {
    dart.assert(dart.equals(dart.dindex(x, 0), 'const'));
    let result = core.List._check(dart.dindex(x, 1));
    this.deserializedObjects[dartx.add](result);
    return _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(_interceptors.JSArray._check(result)));
  }
  deserializeMap(x) {
    dart.assert(dart.equals(x._get(0), 'map'));
    let keys = core.List._check(x._get(1));
    let values = core.List._check(x._get(2));
    let result = dart.map();
    this.deserializedObjects[dartx.add](result);
    keys = keys[dartx.map](dart.dynamic)(dart.bind(this, 'deserialize'))[dartx.toList]();
    for (let i = 0; i < dart.notNull(keys[dartx.length]); i++) {
      result[dartx._set](keys[dartx._get](i), this.deserialize(values[dartx._get](i)));
    }
    return result;
  }
  deserializeSendPort(x) {
    dart.assert(dart.equals(dart.dindex(x, 0), 'sendport'));
    let managerId = core.int._check(dart.dindex(x, 1));
    let isolateId = core.int._check(dart.dindex(x, 2));
    let receivePortId = core.int._check(dart.dindex(x, 3));
    let result = null;
    if (managerId == _isolate_helper._globalState.currentManagerId) {
      let isolate = _isolate_helper._globalState.isolates[dartx._get](isolateId);
      if (isolate == null) return null;
      let receivePort = isolate.lookup(receivePortId);
      if (receivePort == null) return null;
      result = new _isolate_helper._NativeJsSendPort(receivePort, isolateId);
    } else {
      result = new _isolate_helper._WorkerSendPort(managerId, isolateId, receivePortId);
    }
    this.deserializedObjects[dartx.add](result);
    return result;
  }
  deserializeRawSendPort(x) {
    dart.assert(dart.equals(dart.dindex(x, 0), 'raw sendport'));
    let result = isolate.SendPort._check(dart.dindex(x, 1));
    this.deserializedObjects[dartx.add](result);
    return result;
  }
  deserializeJSObject(x) {
    dart.assert(dart.equals(dart.dindex(x, 0), 'js-object'));
    let keys = core.List._check(dart.dindex(x, 1));
    let values = core.List._check(dart.dindex(x, 2));
    let o = {};
    this.deserializedObjects[dartx.add](o);
    for (let i = 0; i < dart.notNull(keys[dartx.length]); i++) {
      o[keys[dartx._get](i)] = this.deserialize(values[dartx._get](i));
    }
    return o;
  }
  deserializeClosure(x) {
    dart.assert(dart.equals(dart.dindex(x, 0), 'function'));
    let name = core.String._check(dart.dindex(x, 1));
    let result = core.Function._check(_isolate_helper.IsolateNatives._getJSFunctionFromName(name));
    this.deserializedObjects[dartx.add](result);
    return result;
  }
  deserializeDartObject(x) {
    dart.assert(dart.equals(dart.dindex(x, 0), 'dart'));
    let classId = core.String._check(dart.dindex(x, 1));
    let fields = core.List._check(dart.dindex(x, 2));
    let instanceFromClassId = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_names.INSTANCE_FROM_CLASS_ID);
    let initializeObject = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_names.INITIALIZE_EMPTY_INSTANCE);
    let emptyInstance = instanceFromClassId(classId);
    this.deserializedObjects[dartx.add](emptyInstance);
    this.deserializeArrayInPlace(_interceptors.JSArray._check(fields));
    return initializeObject(classId, emptyInstance, fields);
  }
};
dart.setSignature(_isolate_helper._Deserializer, {
  constructors: () => ({new: dart.definiteFunctionType(_isolate_helper._Deserializer, [], {adjustSendPorts: dart.dynamic})}),
  fields: () => ({
    [_adjustSendPorts]: core.bool,
    deserializedObjects: core.List
  }),
  methods: () => ({
    deserialize: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    isPrimitive: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    deserializePrimitive: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    deserializeRef: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    deserializeByteBuffer: dart.definiteFunctionType(_native_typed_data.NativeByteBuffer, [dart.dynamic]),
    deserializeTypedData: dart.definiteFunctionType(_native_typed_data.NativeTypedData, [dart.dynamic]),
    deserializeArrayInPlace: dart.definiteFunctionType(core.List, [_interceptors.JSArray]),
    deserializeFixed: dart.definiteFunctionType(core.List, [dart.dynamic]),
    deserializeExtendable: dart.definiteFunctionType(core.List, [dart.dynamic]),
    deserializeMutable: dart.definiteFunctionType(core.List, [dart.dynamic]),
    deserializeConst: dart.definiteFunctionType(core.List, [dart.dynamic]),
    deserializeMap: dart.definiteFunctionType(core.Map, [_js_helper.InternalMap]),
    deserializeSendPort: dart.definiteFunctionType(isolate.SendPort, [dart.dynamic]),
    deserializeRawSendPort: dart.definiteFunctionType(isolate.SendPort, [dart.dynamic]),
    deserializeJSObject: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    deserializeClosure: dart.definiteFunctionType(core.Function, [dart.dynamic]),
    deserializeDartObject: dart.definiteFunctionType(dart.dynamic, [dart.dynamic])
  })
});
_js_embedded_names.DISPATCH_PROPERTY_NAME = "dispatchPropertyName";
_js_embedded_names.TYPE_INFORMATION = 'typeInformation';
_js_embedded_names.GLOBAL_FUNCTIONS = 'globalFunctions';
_js_embedded_names.STATICS = 'statics';
_js_embedded_names.INTERCEPTED_NAMES = 'interceptedNames';
_js_embedded_names.MANGLED_GLOBAL_NAMES = 'mangledGlobalNames';
_js_embedded_names.MANGLED_NAMES = 'mangledNames';
_js_embedded_names.LIBRARIES = 'libraries';
_js_embedded_names.FINISHED_CLASSES = 'finishedClasses';
_js_embedded_names.ALL_CLASSES = 'allClasses';
_js_embedded_names.METADATA = 'metadata';
_js_embedded_names.INTERCEPTORS_BY_TAG = 'interceptorsByTag';
_js_embedded_names.LEAF_TAGS = 'leafTags';
_js_embedded_names.LAZIES = 'lazies';
_js_embedded_names.GET_ISOLATE_TAG = 'getIsolateTag';
_js_embedded_names.ISOLATE_TAG = 'isolateTag';
_js_embedded_names.CURRENT_SCRIPT = 'currentScript';
_js_embedded_names.DEFERRED_LIBRARY_URIS = 'deferredLibraryUris';
_js_embedded_names.DEFERRED_LIBRARY_HASHES = 'deferredLibraryHashes';
_js_embedded_names.INITIALIZE_LOADED_HUNK = 'initializeLoadedHunk';
_js_embedded_names.IS_HUNK_LOADED = 'isHunkLoaded';
_js_embedded_names.IS_HUNK_INITIALIZED = 'isHunkInitialized';
_js_embedded_names.DEFERRED_INITIALIZED = 'deferredInitialized';
_js_embedded_names.CLASS_ID_EXTRACTOR = 'classIdExtractor';
_js_embedded_names.CLASS_FIELDS_EXTRACTOR = 'classFieldsExtractor';
_js_embedded_names.INSTANCE_FROM_CLASS_ID = "instanceFromClassId";
_js_embedded_names.INITIALIZE_EMPTY_INSTANCE = "initializeEmptyInstance";
_js_embedded_names.TYPEDEF_TYPE_PROPERTY_NAME = "$typedefType";
_js_embedded_names.TYPEDEF_PREDICATE_PROPERTY_NAME = "$$isTypedef";
_js_embedded_names.NATIVE_SUPERCLASS_TAG_NAME = "$nativeSuperclassTag";
_js_embedded_names.MAP_TYPE_TO_INTERCEPTOR = "mapTypeToInterceptor";
_js_helper._Patch = class _Patch extends core.Object {
  new() {
  }
};
dart.setSignature(_js_helper._Patch, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper._Patch, [])})
});
_js_helper.patch = dart.const(new _js_helper._Patch());
_js_helper.InternalMap$ = dart.generic((K, V) => {
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  class InternalMap extends core.Object {}
  dart.addTypeTests(InternalMap);
  InternalMap[dart.implements] = () => [MapOfK$V()];
  return InternalMap;
});
_js_helper.InternalMap = InternalMap();
_js_helper.Primitives = class Primitives extends core.Object {
  static initializeStatics(id) {
    _js_helper.Primitives.mirrorFunctionCacheName = dart.notNull(_js_helper.Primitives.mirrorFunctionCacheName) + dart.str`_${id}`;
    _js_helper.Primitives.mirrorInvokeCacheName = dart.notNull(_js_helper.Primitives.mirrorInvokeCacheName) + dart.str`_${id}`;
  }
  static objectHashCode(object) {
    let hash = object.$identityHash;
    if (hash == null) {
      hash = Math.random() * 0x3fffffff | 0;
      object.$identityHash = hash;
    }
    return hash;
  }
  static _parseIntError(source, handleError) {
    if (handleError == null) dart.throw(new core.FormatException(source));
    return handleError(source);
  }
  static parseInt(source, radix, handleError) {
    _js_helper.checkString(source);
    let re = /^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i;
    let match = re.exec(source);
    let digitsIndex = 1;
    let hexIndex = 2;
    let decimalIndex = 3;
    let nonDecimalHexIndex = 4;
    if (match == null) {
      return _js_helper.Primitives._parseIntError(source, handleError);
    }
    let decimalMatch = match[dartx._get](decimalIndex);
    if (radix == null) {
      if (decimalMatch != null) {
        return parseInt(source, 10);
      }
      if (match[dartx._get](hexIndex) != null) {
        return parseInt(source, 16);
      }
      return _js_helper.Primitives._parseIntError(source, handleError);
    }
    if (!(typeof radix == 'number')) {
      dart.throw(new core.ArgumentError.value(radix, 'radix', 'is not an integer'));
    }
    if (dart.notNull(radix) < 2 || dart.notNull(radix) > 36) {
      dart.throw(new core.RangeError.range(radix, 2, 36, 'radix'));
    }
    if (radix == 10 && decimalMatch != null) {
      return parseInt(source, 10);
    }
    if (dart.notNull(radix) < 10 || decimalMatch == null) {
      let maxCharCode = null;
      if (dart.notNull(radix) <= 10) {
        maxCharCode = 48 - 1 + dart.notNull(radix);
      } else {
        maxCharCode = 97 - 10 - 1 + dart.notNull(radix);
      }
      dart.assert(typeof match[dartx._get](digitsIndex) == 'string');
      let digitsPart = match[digitsIndex];
      for (let i = 0; i < dart.notNull(digitsPart[dartx.length]); i++) {
        let characterCode = (dart.notNull(digitsPart[dartx.codeUnitAt](i)) | 32) >>> 0;
        if (characterCode > dart.notNull(maxCharCode)) {
          return _js_helper.Primitives._parseIntError(source, handleError);
        }
      }
    }
    return parseInt(source, radix);
  }
  static _parseDoubleError(source, handleError) {
    if (handleError == null) {
      dart.throw(new core.FormatException('Invalid double', source));
    }
    return handleError(source);
  }
  static parseDouble(source, handleError) {
    _js_helper.checkString(source);
    if (!/^\s*[+-]?(?:Infinity|NaN|(?:\.\d+|\d+(?:\.\d*)?)(?:[eE][+-]?\d+)?)\s*$/.test(source)) {
      return _js_helper.Primitives._parseDoubleError(source, handleError);
    }
    let result = parseFloat(source);
    if (dart.test(result[dartx.isNaN])) {
      let trimmed = source[dartx.trim]();
      if (trimmed == 'NaN' || trimmed == '+NaN' || trimmed == '-NaN') {
        return result;
      }
      return _js_helper.Primitives._parseDoubleError(source, handleError);
    }
    return result;
  }
  static objectTypeName(object) {
    return dart.toString(_js_helper.getRuntimeType(object));
  }
  static objectToString(object) {
    let name = dart.typeName(dart.getReifiedType(object));
    return dart.str`Instance of '${name}'`;
  }
  static dateNow() {
    return Date.now();
  }
  static initTicker() {
    if (_js_helper.Primitives.timerFrequency != null) return;
    _js_helper.Primitives.timerFrequency = 1000;
    _js_helper.Primitives.timerTicks = _js_helper.Primitives.dateNow;
    if (typeof window == "undefined") return;
    let jsWindow = window;
    if (jsWindow == null) return;
    let performance = jsWindow.performance;
    if (performance == null) return;
    if (typeof performance.now != "function") return;
    _js_helper.Primitives.timerFrequency = 1000000;
    _js_helper.Primitives.timerTicks = dart.fn(() => (1000 * performance.now())[dartx.floor](), VoidToint());
  }
  static get isD8() {
    return typeof version == "function" && typeof os == "object" && "system" in os;
  }
  static get isJsshell() {
    return typeof version == "function" && typeof system == "function";
  }
  static currentUri() {
    if (!!self.location) {
      return self.location.href;
    }
    return null;
  }
  static _fromCharCodeApply(array) {
    let kMaxApply = 500;
    let end = array[dartx.length];
    if (dart.notNull(end) <= kMaxApply) {
      return String.fromCharCode.apply(null, array);
    }
    let result = '';
    for (let i = 0; i < dart.notNull(end); i = i + kMaxApply) {
      let chunkEnd = i + kMaxApply < dart.notNull(end) ? i + kMaxApply : end;
      result = result + String.fromCharCode.apply(null, array.slice(i, chunkEnd));
    }
    return result;
  }
  static stringFromCodePoints(codePoints) {
    let a = JSArrayOfint().of([]);
    for (let i of codePoints) {
      if (!(typeof i == 'number')) dart.throw(_js_helper.argumentErrorValue(i));
      if (dart.notNull(i) <= 65535) {
        a[dartx.add](i);
      } else if (dart.notNull(i) <= 1114111) {
        a[dartx.add](55296 + (dart.notNull(i) - 65536 >> 10 & 1023));
        a[dartx.add](56320 + (dart.notNull(i) & 1023));
      } else {
        dart.throw(_js_helper.argumentErrorValue(i));
      }
    }
    return _js_helper.Primitives._fromCharCodeApply(a);
  }
  static stringFromCharCodes(charCodes) {
    for (let i of charCodes) {
      if (!(typeof i == 'number')) dart.throw(_js_helper.argumentErrorValue(i));
      if (dart.notNull(i) < 0) dart.throw(_js_helper.argumentErrorValue(i));
      if (dart.notNull(i) > 65535) return _js_helper.Primitives.stringFromCodePoints(charCodes);
    }
    return _js_helper.Primitives._fromCharCodeApply(charCodes);
  }
  static stringFromNativeUint8List(charCodes, start, end) {
    let kMaxApply = 500;
    if (dart.notNull(end) <= kMaxApply && start == 0 && end == charCodes[dartx.length]) {
      return String.fromCharCode.apply(null, charCodes);
    }
    let result = '';
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + kMaxApply) {
      let chunkEnd = dart.notNull(i) + kMaxApply < dart.notNull(end) ? dart.notNull(i) + kMaxApply : end;
      result = result + String.fromCharCode.apply(null, charCodes.subarray(i, chunkEnd));
    }
    return result;
  }
  static stringFromCharCode(charCode) {
    if (0 <= dart.notNull(charCode)) {
      if (dart.notNull(charCode) <= 65535) {
        return String.fromCharCode(charCode);
      }
      if (dart.notNull(charCode) <= 1114111) {
        let bits = dart.notNull(charCode) - 65536;
        let low = 56320 | bits & 1023;
        let high = (55296 | bits[dartx['>>']](10)) >>> 0;
        return String.fromCharCode(high, low);
      }
    }
    dart.throw(new core.RangeError.range(charCode, 0, 1114111));
  }
  static stringConcatUnchecked(string1, string2) {
    return _foreign_helper.JS_STRING_CONCAT(string1, string2);
  }
  static flattenString(str) {
    return str.charCodeAt(0) == 0 ? str : str;
  }
  static getTimeZoneName(receiver) {
    let d = _js_helper.Primitives.lazyAsJsDate(receiver);
    let match = /\((.*)\)/.exec(d.toString());
    if (match != null) return core.String._check(match[dartx._get](1));
    match = /^[A-Z,a-z]{3}\s[A-Z,a-z]{3}\s\d+\s\d{2}:\d{2}:\d{2}\s([A-Z]{3,5})\s\d{4}$/.exec(d.toString());
    if (match != null) return core.String._check(match[dartx._get](1));
    match = /(?:GMT|UTC)[+-]\d{4}/.exec(d.toString());
    if (match != null) return core.String._check(match[dartx._get](0));
    return "";
  }
  static getTimeZoneOffsetInMinutes(receiver) {
    return -_js_helper.Primitives.lazyAsJsDate(receiver).getTimezoneOffset();
  }
  static valueFromDecomposedDate(years, month, day, hours, minutes, seconds, milliseconds, isUtc) {
    let MAX_MILLISECONDS_SINCE_EPOCH = 8640000000000000;
    _js_helper.checkInt(years);
    _js_helper.checkInt(month);
    _js_helper.checkInt(day);
    _js_helper.checkInt(hours);
    _js_helper.checkInt(minutes);
    _js_helper.checkInt(seconds);
    _js_helper.checkInt(milliseconds);
    _js_helper.checkBool(isUtc);
    let jsMonth = dart.notNull(month) - 1;
    let value = null;
    if (dart.test(isUtc)) {
      value = Date.UTC(years, jsMonth, day, hours, minutes, seconds, milliseconds);
    } else {
      value = new Date(years, jsMonth, day, hours, minutes, seconds, milliseconds).valueOf();
    }
    if (dart.test(value[dartx.isNaN]) || dart.notNull(value) < -MAX_MILLISECONDS_SINCE_EPOCH || dart.notNull(value) > MAX_MILLISECONDS_SINCE_EPOCH) {
      return null;
    }
    if (dart.notNull(years) <= 0 || dart.notNull(years) < 100) return core.num._check(_js_helper.Primitives.patchUpY2K(value, years, isUtc));
    return value;
  }
  static patchUpY2K(value, years, isUtc) {
    let date = new Date(value);
    if (dart.test(isUtc)) {
      date.setUTCFullYear(years);
    } else {
      date.setFullYear(years);
    }
    return date.valueOf();
  }
  static lazyAsJsDate(receiver) {
    if (receiver.date === void 0) {
      receiver.date = new Date(receiver.millisecondsSinceEpoch);
    }
    return receiver.date;
  }
  static getYear(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCFullYear() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getFullYear() + 0;
  }
  static getMonth(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCMonth() + 1 : _js_helper.Primitives.lazyAsJsDate(receiver).getMonth() + 1;
  }
  static getDay(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCDate() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getDate() + 0;
  }
  static getHours(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCHours() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getHours() + 0;
  }
  static getMinutes(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCMinutes() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getMinutes() + 0;
  }
  static getSeconds(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCSeconds() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getSeconds() + 0;
  }
  static getMilliseconds(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCMilliseconds() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getMilliseconds() + 0;
  }
  static getWeekday(receiver) {
    let weekday = dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCDay() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getDay() + 0;
    return (weekday + 6)[dartx['%']](7) + 1;
  }
  static valueFromDateString(str) {
    if (!(typeof str == 'string')) dart.throw(_js_helper.argumentErrorValue(str));
    let value = Date.parse(str);
    if (dart.test(value[dartx.isNaN])) dart.throw(_js_helper.argumentErrorValue(str));
    return value;
  }
  static getProperty(object, key) {
    if (object == null || typeof object == 'boolean' || typeof object == 'number' || typeof object == 'string') {
      dart.throw(_js_helper.argumentErrorValue(object));
    }
    return object[key];
  }
  static setProperty(object, key, value) {
    if (object == null || typeof object == 'boolean' || typeof object == 'number' || typeof object == 'string') {
      dart.throw(_js_helper.argumentErrorValue(object));
    }
    object[key] = value;
  }
  static extractStackTrace(error) {
    return _js_helper.getTraceFromException(error.$thrownJsError);
  }
};
dart.setSignature(_js_helper.Primitives, {
  sfields: () => ({
    mirrorFunctionCacheName: core.String,
    mirrorInvokeCacheName: core.String,
    DOLLAR_CHAR_VALUE: core.int,
    timerFrequency: core.int,
    timerTicks: core.Function
  }),
  sgetters: () => ({
    isD8: dart.definiteFunctionType(core.bool, []),
    isJsshell: dart.definiteFunctionType(core.bool, [])
  }),
  statics: () => ({
    initializeStatics: dart.definiteFunctionType(dart.void, [core.int]),
    objectHashCode: dart.definiteFunctionType(core.int, [dart.dynamic]),
    _parseIntError: dart.definiteFunctionType(core.int, [core.String, StringToint()]),
    parseInt: dart.definiteFunctionType(core.int, [core.String, core.int, StringToint()]),
    _parseDoubleError: dart.definiteFunctionType(core.double, [core.String, StringTodouble()]),
    parseDouble: dart.definiteFunctionType(core.double, [core.String, StringTodouble()]),
    objectTypeName: dart.definiteFunctionType(core.String, [core.Object]),
    objectToString: dart.definiteFunctionType(core.String, [core.Object]),
    dateNow: dart.definiteFunctionType(core.int, []),
    initTicker: dart.definiteFunctionType(dart.void, []),
    currentUri: dart.definiteFunctionType(core.String, []),
    _fromCharCodeApply: dart.definiteFunctionType(core.String, [ListOfint()]),
    stringFromCodePoints: dart.definiteFunctionType(core.String, [JSArrayOfint()]),
    stringFromCharCodes: dart.definiteFunctionType(core.String, [JSArrayOfint()]),
    stringFromNativeUint8List: dart.definiteFunctionType(core.String, [_native_typed_data.NativeUint8List, core.int, core.int]),
    stringFromCharCode: dart.definiteFunctionType(core.String, [core.int]),
    stringConcatUnchecked: dart.definiteFunctionType(core.String, [core.String, core.String]),
    flattenString: dart.definiteFunctionType(core.String, [core.String]),
    getTimeZoneName: dart.definiteFunctionType(core.String, [core.DateTime]),
    getTimeZoneOffsetInMinutes: dart.definiteFunctionType(core.int, [core.DateTime]),
    valueFromDecomposedDate: dart.definiteFunctionType(core.num, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.bool]),
    patchUpY2K: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic, dart.dynamic]),
    lazyAsJsDate: dart.definiteFunctionType(dart.dynamic, [core.DateTime]),
    getYear: dart.definiteFunctionType(dart.dynamic, [core.DateTime]),
    getMonth: dart.definiteFunctionType(dart.dynamic, [core.DateTime]),
    getDay: dart.definiteFunctionType(dart.dynamic, [core.DateTime]),
    getHours: dart.definiteFunctionType(dart.dynamic, [core.DateTime]),
    getMinutes: dart.definiteFunctionType(dart.dynamic, [core.DateTime]),
    getSeconds: dart.definiteFunctionType(dart.dynamic, [core.DateTime]),
    getMilliseconds: dart.definiteFunctionType(dart.dynamic, [core.DateTime]),
    getWeekday: dart.definiteFunctionType(dart.dynamic, [core.DateTime]),
    valueFromDateString: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    getProperty: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic]),
    setProperty: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
    extractStackTrace: dart.definiteFunctionType(core.StackTrace, [core.Error])
  }),
  names: ['initializeStatics', 'objectHashCode', '_parseIntError', 'parseInt', '_parseDoubleError', 'parseDouble', 'objectTypeName', 'objectToString', 'dateNow', 'initTicker', 'currentUri', '_fromCharCodeApply', 'stringFromCodePoints', 'stringFromCharCodes', 'stringFromNativeUint8List', 'stringFromCharCode', 'stringConcatUnchecked', 'flattenString', 'getTimeZoneName', 'getTimeZoneOffsetInMinutes', 'valueFromDecomposedDate', 'patchUpY2K', 'lazyAsJsDate', 'getYear', 'getMonth', 'getDay', 'getHours', 'getMinutes', 'getSeconds', 'getMilliseconds', 'getWeekday', 'valueFromDateString', 'getProperty', 'setProperty', 'extractStackTrace']
});
_js_helper.Primitives.mirrorFunctionCacheName = '$cachedFunction';
_js_helper.Primitives.mirrorInvokeCacheName = '$cachedInvocation';
_js_helper.Primitives.DOLLAR_CHAR_VALUE = 36;
_js_helper.Primitives.timerFrequency = null;
_js_helper.Primitives.timerTicks = null;
_js_helper.diagnoseIndexError = function(indexable, index) {
  if (!(typeof index == 'number')) return new core.ArgumentError.value(index, 'index');
  let length = core.int._check(dart.dload(indexable, 'length'));
  if (dart.test(dart.dsend(index, '<', 0)) || dart.test(dart.dsend(index, '>=', length))) {
    return core.RangeError.index(core.int._check(index), indexable, 'index', null, length);
  }
  return new core.RangeError.value(core.num._check(index), 'index');
};
dart.lazyFn(_js_helper.diagnoseIndexError, () => dynamicAnddynamicToError());
_js_helper.diagnoseRangeError = function(start, end, length) {
  if (!(typeof start == 'number')) {
    return new core.ArgumentError.value(start, 'start');
  }
  if (dart.test(dart.dsend(start, '<', 0)) || dart.test(dart.dsend(start, '>', length))) {
    return new core.RangeError.range(core.num._check(start), 0, core.int._check(length), 'start');
  }
  if (end != null) {
    if (!(typeof end == 'number')) {
      return new core.ArgumentError.value(end, 'end');
    }
    if (dart.test(dart.dsend(end, '<', start)) || dart.test(dart.dsend(end, '>', length))) {
      return new core.RangeError.range(core.num._check(end), core.int._check(start), core.int._check(length), 'end');
    }
  }
  return new core.ArgumentError.value(end, "end");
};
dart.lazyFn(_js_helper.diagnoseRangeError, () => dynamicAnddynamicAnddynamicToError());
_js_helper.stringLastIndexOfUnchecked = function(receiver, element, start) {
  return receiver.lastIndexOf(element, start);
};
dart.fn(_js_helper.stringLastIndexOfUnchecked, dynamicAnddynamicAnddynamicTodynamic());
_js_helper.argumentErrorValue = function(object) {
  return new core.ArgumentError.value(object);
};
dart.lazyFn(_js_helper.argumentErrorValue, () => dynamicToArgumentError());
_js_helper.checkNull = function(object) {
  if (object == null) dart.throw(_js_helper.argumentErrorValue(object));
  return object;
};
dart.fn(_js_helper.checkNull, dynamicTodynamic());
_js_helper.checkNum = function(value) {
  if (!(typeof value == 'number')) dart.throw(_js_helper.argumentErrorValue(value));
  return value;
};
dart.fn(_js_helper.checkNum, dynamicTodynamic());
_js_helper.checkInt = function(value) {
  if (!(typeof value == 'number')) dart.throw(_js_helper.argumentErrorValue(value));
  return value;
};
dart.fn(_js_helper.checkInt, dynamicTodynamic());
_js_helper.checkBool = function(value) {
  if (!(typeof value == 'boolean')) dart.throw(_js_helper.argumentErrorValue(value));
  return value;
};
dart.fn(_js_helper.checkBool, dynamicTodynamic());
_js_helper.checkString = function(value) {
  if (!(typeof value == 'string')) dart.throw(_js_helper.argumentErrorValue(value));
  return value;
};
dart.fn(_js_helper.checkString, dynamicTodynamic());
_js_helper.throwRuntimeError = function(message) {
  dart.throw(new _js_helper.RuntimeError(message));
};
dart.fn(_js_helper.throwRuntimeError, dynamicTodynamic());
_js_helper.throwAbstractClassInstantiationError = function(className) {
  dart.throw(new core.AbstractClassInstantiationError(core.String._check(className)));
};
dart.fn(_js_helper.throwAbstractClassInstantiationError, dynamicTodynamic());
_js_helper.throwConcurrentModificationError = function(collection) {
  dart.throw(new core.ConcurrentModificationError(collection));
};
dart.fn(_js_helper.throwConcurrentModificationError, dynamicTodynamic());
const _message = Symbol('_message');
const _method = Symbol('_method');
core.Error = class Error extends core.Object {
  new() {
  }
  static safeToString(object) {
    if (typeof object == 'number' || typeof object == 'boolean' || null == object) {
      return dart.toString(object);
    }
    if (typeof object == 'string') {
      return core.Error._stringToSafeString(object);
    }
    return core.Error._objectToString(object);
  }
  static _stringToSafeString(string) {
    return _js_helper.jsonEncodeNative(string);
  }
  static _objectToString(object) {
    return _js_helper.Primitives.objectToString(object);
  }
  get stackTrace() {
    return _js_helper.Primitives.extractStackTrace(this);
  }
};
dart.setSignature(core.Error, {
  constructors: () => ({new: dart.definiteFunctionType(core.Error, [])}),
  getters: () => ({stackTrace: dart.definiteFunctionType(core.StackTrace, [])}),
  statics: () => ({
    safeToString: dart.definiteFunctionType(core.String, [core.Object]),
    _stringToSafeString: dart.definiteFunctionType(core.String, [core.String]),
    _objectToString: dart.definiteFunctionType(core.String, [core.Object])
  }),
  names: ['safeToString', '_stringToSafeString', '_objectToString']
});
_js_helper.NullError = class NullError extends core.Error {
  new(message, match) {
    this[_message] = message;
    this[_method] = core.String._check(match == null ? null : match.method);
    super.new();
  }
  toString() {
    if (this[_method] == null) return dart.str`NullError: ${this[_message]}`;
    return dart.str`NullError: method not found: '${this[_method]}' on null`;
  }
};
_js_helper.NullError[dart.implements] = () => [core.NoSuchMethodError];
dart.setSignature(_js_helper.NullError, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.NullError, [core.String, dart.dynamic])}),
  fields: () => ({
    [_message]: core.String,
    [_method]: core.String
  })
});
const _receiver = Symbol('_receiver');
_js_helper.JsNoSuchMethodError = class JsNoSuchMethodError extends core.Error {
  new(message, match) {
    this[_message] = message;
    this[_method] = core.String._check(match == null ? null : match.method);
    this[_receiver] = core.String._check(match == null ? null : match.receiver);
    super.new();
  }
  toString() {
    if (this[_method] == null) return dart.str`NoSuchMethodError: ${this[_message]}`;
    if (this[_receiver] == null) {
      return dart.str`NoSuchMethodError: method not found: '${this[_method]}' (${this[_message]})`;
    }
    return "NoSuchMethodError: " + dart.str`method not found: '${this[_method]}' on '${this[_receiver]}' (${this[_message]})`;
  }
};
_js_helper.JsNoSuchMethodError[dart.implements] = () => [core.NoSuchMethodError];
dart.setSignature(_js_helper.JsNoSuchMethodError, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.JsNoSuchMethodError, [core.String, dart.dynamic])}),
  fields: () => ({
    [_message]: core.String,
    [_method]: core.String,
    [_receiver]: core.String
  })
});
_js_helper.UnknownJsTypeError = class UnknownJsTypeError extends core.Error {
  new(message) {
    this[_message] = message;
    super.new();
  }
  toString() {
    return dart.test(this[_message][dartx.isEmpty]) ? 'Error' : dart.str`Error: ${this[_message]}`;
  }
};
dart.setSignature(_js_helper.UnknownJsTypeError, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.UnknownJsTypeError, [core.String])}),
  fields: () => ({[_message]: core.String})
});
_js_helper.getTraceFromException = function(exception) {
  return new _js_helper._StackTrace(exception);
};
dart.lazyFn(_js_helper.getTraceFromException, () => dynamicToStackTrace());
const _exception = Symbol('_exception');
const _trace = Symbol('_trace');
_js_helper._StackTrace = class _StackTrace extends core.Object {
  new(exception) {
    this[_exception] = exception;
    this[_trace] = null;
  }
  toString() {
    if (this[_trace] != null) return this[_trace];
    let trace = null;
    if (this[_exception] !== null && typeof this[_exception] === "object") {
      trace = this[_exception].stack;
    }
    return this[_trace] = trace == null ? '' : trace;
  }
};
_js_helper._StackTrace[dart.implements] = () => [core.StackTrace];
dart.setSignature(_js_helper._StackTrace, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper._StackTrace, [dart.dynamic])}),
  fields: () => ({
    [_exception]: dart.dynamic,
    [_trace]: core.String
  })
});
_js_helper.objectHashCode = function(object) {
  if (object == null || typeof object != 'object') {
    return dart.hashCode(object);
  } else {
    return _js_helper.Primitives.objectHashCode(object);
  }
};
dart.fn(_js_helper.objectHashCode, dynamicToint());
_js_helper.fillLiteralMap = function(keyValuePairs, result) {
  let index = 0;
  let length = _js_helper.getLength(keyValuePairs);
  while (index < dart.notNull(length)) {
    let key = _js_helper.getIndex(keyValuePairs, index++);
    let value = _js_helper.getIndex(keyValuePairs, index++);
    result[dartx._set](key, value);
  }
  return result;
};
dart.lazyFn(_js_helper.fillLiteralMap, () => dynamicAndMapTodynamic());
_js_helper.jsHasOwnProperty = function(jsObject, property) {
  return jsObject.hasOwnProperty(property);
};
dart.lazyFn(_js_helper.jsHasOwnProperty, () => dynamicAndStringTobool());
_js_helper.jsPropertyAccess = function(jsObject, property) {
  return jsObject[property];
};
dart.lazyFn(_js_helper.jsPropertyAccess, () => dynamicAndStringTodynamic());
_js_helper.getFallThroughError = function() {
  return new _js_helper.FallThroughErrorImplementation();
};
dart.fn(_js_helper.getFallThroughError, VoidTodynamic());
_js_helper.Creates = class Creates extends core.Object {
  new(types) {
    this.types = types;
  }
};
dart.setSignature(_js_helper.Creates, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.Creates, [core.String])}),
  fields: () => ({types: core.String})
});
_js_helper.Returns = class Returns extends core.Object {
  new(types) {
    this.types = types;
  }
};
dart.setSignature(_js_helper.Returns, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.Returns, [core.String])}),
  fields: () => ({types: core.String})
});
_js_helper.JSName = class JSName extends core.Object {
  new(name) {
    this.name = name;
  }
};
dart.setSignature(_js_helper.JSName, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.JSName, [core.String])}),
  fields: () => ({name: core.String})
});
_js_helper.JavaScriptIndexingBehavior = class JavaScriptIndexingBehavior extends core.Object {};
_js_helper.TypeErrorImplementation = class TypeErrorImplementation extends core.Error {
  new(value, actualType, expectedType) {
    this.message = dart.str`Type '${actualType}' is not a subtype ` + dart.str`of type '${expectedType}'`;
    super.new();
  }
  fromMessage(message) {
    this.message = message;
    super.new();
  }
  toString() {
    return this.message;
  }
};
dart.defineNamedConstructor(_js_helper.TypeErrorImplementation, 'fromMessage');
_js_helper.TypeErrorImplementation[dart.implements] = () => [core.TypeError];
dart.setSignature(_js_helper.TypeErrorImplementation, {
  constructors: () => ({
    new: dart.definiteFunctionType(_js_helper.TypeErrorImplementation, [core.Object, core.Object, core.Object]),
    fromMessage: dart.definiteFunctionType(_js_helper.TypeErrorImplementation, [core.String])
  }),
  fields: () => ({message: core.String})
});
_js_helper.CastErrorImplementation = class CastErrorImplementation extends core.Error {
  new(value, actualType, expectedType) {
    this.message = dart.str`CastError: Casting value of type '${actualType}' to` + dart.str` incompatible type '${expectedType}'`;
    super.new();
  }
  toString() {
    return this.message;
  }
};
_js_helper.CastErrorImplementation[dart.implements] = () => [core.CastError];
dart.setSignature(_js_helper.CastErrorImplementation, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.CastErrorImplementation, [core.Object, core.Object, core.Object])}),
  fields: () => ({message: core.String})
});
_js_helper.StrongModeTypeError = class StrongModeTypeError extends core.Error {
  new(value, actualType, expectedType) {
    this.message = dart.str`Type '${actualType}' is not a subtype ` + dart.str`of type '${expectedType}' in strong mode`;
    super.new();
  }
  toString() {
    return this.message;
  }
};
_js_helper.StrongModeTypeError[dart.implements] = () => [core.TypeError, core.StrongModeError];
dart.setSignature(_js_helper.StrongModeTypeError, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.StrongModeTypeError, [core.Object, core.Object, core.Object])}),
  fields: () => ({message: core.String})
});
_js_helper.StrongModeCastError = class StrongModeCastError extends core.Error {
  new(value, actualType, expectedType) {
    this.message = dart.str`CastError: Casting value of type '${actualType}' to` + dart.str` type '${expectedType}' which is incompatible in strong mode`;
    super.new();
  }
  toString() {
    return this.message;
  }
};
_js_helper.StrongModeCastError[dart.implements] = () => [core.CastError, core.StrongModeError];
dart.setSignature(_js_helper.StrongModeCastError, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.StrongModeCastError, [core.Object, core.Object, core.Object])}),
  fields: () => ({message: core.String})
});
_js_helper.StrongModeErrorImplementation = class StrongModeErrorImplementation extends core.Error {
  new(message) {
    this.message = message;
    super.new();
  }
  toString() {
    return this.message;
  }
};
_js_helper.StrongModeErrorImplementation[dart.implements] = () => [core.StrongModeError];
dart.setSignature(_js_helper.StrongModeErrorImplementation, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.StrongModeErrorImplementation, [core.String])}),
  fields: () => ({message: core.String})
});
core.FallThroughError = class FallThroughError extends core.Error {
  new() {
    super.new();
  }
};
dart.setSignature(core.FallThroughError, {
  constructors: () => ({new: dart.definiteFunctionType(core.FallThroughError, [])})
});
_js_helper.FallThroughErrorImplementation = class FallThroughErrorImplementation extends core.FallThroughError {
  new() {
    super.new();
  }
  toString() {
    return "Switch case fall-through.";
  }
};
dart.setSignature(_js_helper.FallThroughErrorImplementation, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.FallThroughErrorImplementation, [])})
});
_js_helper.RuntimeError = class RuntimeError extends core.Error {
  new(message) {
    this.message = message;
    super.new();
  }
  toString() {
    return dart.str`RuntimeError: ${this.message}`;
  }
};
dart.setSignature(_js_helper.RuntimeError, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.RuntimeError, [dart.dynamic])}),
  fields: () => ({message: dart.dynamic})
});
_js_helper.random64 = function() {
  let int32a = Math.random() * 0x100000000 >>> 0;
  let int32b = Math.random() * 0x100000000 >>> 0;
  return int32a + int32b * 4294967296;
};
dart.fn(_js_helper.random64, VoidToint());
_js_helper.jsonEncodeNative = function(string) {
  return JSON.stringify(string);
};
dart.lazyFn(_js_helper.jsonEncodeNative, () => StringToString());
const _jsIterator = Symbol('_jsIterator');
const _current = Symbol('_current');
_js_helper.SyncIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class SyncIterator extends core.Object {
    new(jsIterator) {
      this[_jsIterator] = jsIterator;
      this[_current] = null;
    }
    get current() {
      return this[_current];
    }
    moveNext() {
      let ret = this[_jsIterator].next();
      this[_current] = ret.value;
      return !ret.done;
    }
  }
  dart.addTypeTests(SyncIterator);
  SyncIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(SyncIterator, {
    constructors: () => ({new: dart.definiteFunctionType(_js_helper.SyncIterator$(E), [dart.dynamic])}),
    fields: () => ({
      [_jsIterator]: dart.dynamic,
      [_current]: E
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return SyncIterator;
});
_js_helper.SyncIterator = SyncIterator();
const _generator = Symbol('_generator');
const _args = Symbol('_args');
collection.IterableBase$ = dart.generic(E => {
  class IterableBase extends core.Iterable$(E) {
    new() {
      super.new();
    }
    static iterableToShortString(iterable, leftDelimiter, rightDelimiter) {
      if (leftDelimiter === void 0) leftDelimiter = '(';
      if (rightDelimiter === void 0) rightDelimiter = ')';
      if (dart.test(collection._isToStringVisiting(iterable))) {
        if (leftDelimiter == "(" && rightDelimiter == ")") {
          return "(...)";
        }
        return dart.str`${leftDelimiter}...${rightDelimiter}`;
      }
      let parts = [];
      collection._toStringVisiting[dartx.add](iterable);
      try {
        collection._iterablePartsToStrings(iterable, parts);
      } finally {
        dart.assert(core.identical(collection._toStringVisiting[dartx.last], iterable));
        collection._toStringVisiting[dartx.removeLast]();
      }
      return (() => {
        let _ = new core.StringBuffer(leftDelimiter);
        _.writeAll(parts, ", ");
        _.write(rightDelimiter);
        return _;
      })().toString();
    }
    static iterableToFullString(iterable, leftDelimiter, rightDelimiter) {
      if (leftDelimiter === void 0) leftDelimiter = '(';
      if (rightDelimiter === void 0) rightDelimiter = ')';
      if (dart.test(collection._isToStringVisiting(iterable))) {
        return dart.str`${leftDelimiter}...${rightDelimiter}`;
      }
      let buffer = new core.StringBuffer(leftDelimiter);
      collection._toStringVisiting[dartx.add](iterable);
      try {
        buffer.writeAll(iterable, ", ");
      } finally {
        dart.assert(core.identical(collection._toStringVisiting[dartx.last], iterable));
        collection._toStringVisiting[dartx.removeLast]();
      }
      buffer.write(rightDelimiter);
      return buffer.toString();
    }
  }
  dart.setSignature(IterableBase, {
    constructors: () => ({new: dart.definiteFunctionType(collection.IterableBase$(E), [])}),
    statics: () => ({
      iterableToShortString: dart.definiteFunctionType(core.String, [core.Iterable], [core.String, core.String]),
      iterableToFullString: dart.definiteFunctionType(core.String, [core.Iterable], [core.String, core.String])
    }),
    names: ['iterableToShortString', 'iterableToFullString']
  });
  return IterableBase;
});
collection.IterableBase = IterableBase();
_js_helper.SyncIterable$ = dart.generic(E => {
  let SyncIteratorOfE = () => (SyncIteratorOfE = dart.constFn(_js_helper.SyncIterator$(E)))();
  class SyncIterable extends collection.IterableBase$(E) {
    new(generator, args) {
      this[_generator] = generator;
      this[_args] = args;
      super.new();
    }
    [_jsIterator]() {
      return this[_generator](...this[_args]);
    }
    get iterator() {
      return new (SyncIteratorOfE())(this[_jsIterator]());
    }
  }
  dart.setSignature(SyncIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_js_helper.SyncIterable$(E), [dart.dynamic, dart.dynamic])}),
    fields: () => ({
      [_generator]: dart.dynamic,
      [_args]: dart.dynamic
    }),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(E), [])}),
    methods: () => ({[_jsIterator]: dart.definiteFunctionType(dart.dynamic, [])})
  });
  dart.defineExtensionMembers(SyncIterable, ['iterator']);
  return SyncIterable;
});
_js_helper.SyncIterable = SyncIterable();
core.AssertionError = class AssertionError extends core.Error {
  new() {
    super.new();
  }
  toString() {
    return "Assertion failed";
  }
};
dart.setSignature(core.AssertionError, {
  constructors: () => ({new: dart.definiteFunctionType(core.AssertionError, [])})
});
_js_helper.BooleanConversionAssertionError = class BooleanConversionAssertionError extends core.AssertionError {
  new() {
    super.new();
  }
  toString() {
    return 'Failed assertion: boolean expression must not be null';
  }
};
_js_helper.NoThrows = class NoThrows extends core.Object {
  new() {
  }
};
dart.setSignature(_js_helper.NoThrows, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.NoThrows, [])})
});
_js_helper.NoInline = class NoInline extends core.Object {
  new() {
  }
};
dart.setSignature(_js_helper.NoInline, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.NoInline, [])})
});
_js_helper.Native = class Native extends core.Object {
  new(name) {
    this.name = name;
  }
};
dart.setSignature(_js_helper.Native, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.Native, [core.String])}),
  fields: () => ({name: core.String})
});
_js_helper.JsPeerInterface = class JsPeerInterface extends core.Object {
  new(opts) {
    let name = opts && 'name' in opts ? opts.name : null;
    this.name = name;
  }
};
dart.setSignature(_js_helper.JsPeerInterface, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.JsPeerInterface, [], {name: core.String})}),
  fields: () => ({name: core.String})
});
_js_helper.SupportJsExtensionMethods = class SupportJsExtensionMethods extends core.Object {
  new() {
  }
};
dart.setSignature(_js_helper.SupportJsExtensionMethods, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.SupportJsExtensionMethods, [])})
});
const _length = Symbol('_length');
const _strings = Symbol('_strings');
const _nums = Symbol('_nums');
const _rest = Symbol('_rest');
const _first = Symbol('_first');
const _last = Symbol('_last');
const _modifications = Symbol('_modifications');
const _containsTableEntry = Symbol('_containsTableEntry');
const _getBucket = Symbol('_getBucket');
const _getTableCell = Symbol('_getTableCell');
const _newHashTable = Symbol('_newHashTable');
const _addHashTableEntry = Symbol('_addHashTableEntry');
const _getTableBucket = Symbol('_getTableBucket');
const _newLinkedCell = Symbol('_newLinkedCell');
const _setTableEntry = Symbol('_setTableEntry');
const _removeHashTableEntry = Symbol('_removeHashTableEntry');
const _unlinkCell = Symbol('_unlinkCell');
const _modified = Symbol('_modified');
const _next = Symbol('_next');
const _deleteTableEntry = Symbol('_deleteTableEntry');
const _previous = Symbol('_previous');
_js_helper.JsLinkedHashMap$ = dart.generic((K, V) => {
  let JsLinkedHashMapOfK$V = () => (JsLinkedHashMapOfK$V = dart.constFn(_js_helper.JsLinkedHashMap$(K, V)))();
  let LinkedHashMapKeyIterableOfK = () => (LinkedHashMapKeyIterableOfK = dart.constFn(_js_helper.LinkedHashMapKeyIterable$(K)))();
  let MappedIterableOfK$V = () => (MappedIterableOfK$V = dart.constFn(_internal.MappedIterable$(K, V)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let KAndVTovoid = () => (KAndVTovoid = dart.constFn(dart.functionType(dart.void, [K, V])))();
  let LinkedHashMapCellOfK$V = () => (LinkedHashMapCellOfK$V = dart.constFn(_js_helper.LinkedHashMapCell$(K, V)))();
  let LinkedHashMapOfK$V = () => (LinkedHashMapOfK$V = dart.constFn(collection.LinkedHashMap$(K, V)))();
  let InternalMapOfK$V = () => (InternalMapOfK$V = dart.constFn(_js_helper.InternalMap$(K, V)))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.functionType(V, [])))();
  let KToV = () => (KToV = dart.constFn(dart.definiteFunctionType(V, [K])))();
  let KTobool = () => (KTobool = dart.constFn(dart.definiteFunctionType(core.bool, [K])))();
  let KAndVTovoid$ = () => (KAndVTovoid$ = dart.constFn(dart.definiteFunctionType(dart.void, [K, V])))();
  class JsLinkedHashMap extends core.Object {
    new() {
      this[_length] = 0;
      this[_strings] = null;
      this[_nums] = null;
      this[_rest] = null;
      this[_first] = null;
      this[_last] = null;
      this[_modifications] = 0;
    }
    static es6() {
      return new (JsLinkedHashMapOfK$V())();
    }
    get length() {
      return this[_length];
    }
    get isEmpty() {
      return this[_length] == 0;
    }
    get isNotEmpty() {
      return !dart.test(this.isEmpty);
    }
    get keys() {
      return new (LinkedHashMapKeyIterableOfK())(this);
    }
    get values() {
      return MappedIterableOfK$V().new(this.keys, dart.fn(each => this._get(each), KToV()));
    }
    containsKey(key) {
      if (dart.test(_js_helper.JsLinkedHashMap._isStringKey(key))) {
        let strings = this[_strings];
        if (strings == null) return false;
        return this[_containsTableEntry](strings, key);
      } else if (dart.test(_js_helper.JsLinkedHashMap._isNumericKey(key))) {
        let nums = this[_nums];
        if (nums == null) return false;
        return this[_containsTableEntry](nums, key);
      } else {
        return this.internalContainsKey(key);
      }
    }
    internalContainsKey(key) {
      let rest = this[_rest];
      if (rest == null) return false;
      let bucket = this[_getBucket](rest, key);
      return dart.notNull(this.internalFindBucketIndex(bucket, key)) >= 0;
    }
    containsValue(value) {
      return this.keys[dartx.any](dart.fn(each => dart.equals(this._get(each), value), KTobool()));
    }
    addAll(other) {
      MapOfK$V()._check(other);
      other[dartx.forEach](dart.fn((key, value) => {
        this._set(key, value);
      }, KAndVTovoid$()));
    }
    _get(key) {
      if (dart.test(_js_helper.JsLinkedHashMap._isStringKey(key))) {
        let strings = this[_strings];
        if (strings == null) return null;
        let cell = this[_getTableCell](strings, key);
        return cell == null ? null : cell.hashMapCellValue;
      } else if (dart.test(_js_helper.JsLinkedHashMap._isNumericKey(key))) {
        let nums = this[_nums];
        if (nums == null) return null;
        let cell = this[_getTableCell](nums, key);
        return cell == null ? null : cell.hashMapCellValue;
      } else {
        return this.internalGet(key);
      }
    }
    internalGet(key) {
      let rest = this[_rest];
      if (rest == null) return null;
      let bucket = this[_getBucket](rest, key);
      let index = this.internalFindBucketIndex(bucket, key);
      if (dart.notNull(index) < 0) return null;
      let cell = bucket[index];
      return cell.hashMapCellValue;
    }
    _set(key, value) {
      K._check(key);
      V._check(value);
      if (dart.test(_js_helper.JsLinkedHashMap._isStringKey(key))) {
        let strings = this[_strings];
        if (strings == null) this[_strings] = strings = this[_newHashTable]();
        this[_addHashTableEntry](strings, key, value);
      } else if (dart.test(_js_helper.JsLinkedHashMap._isNumericKey(key))) {
        let nums = this[_nums];
        if (nums == null) this[_nums] = nums = this[_newHashTable]();
        this[_addHashTableEntry](nums, key, value);
      } else {
        this.internalSet(key, value);
      }
      return value;
    }
    internalSet(key, value) {
      K._check(key);
      V._check(value);
      let rest = this[_rest];
      if (rest == null) this[_rest] = rest = this[_newHashTable]();
      let hash = this.internalComputeHashCode(key);
      let bucket = this[_getTableBucket](rest, hash);
      if (bucket == null) {
        let cell = this[_newLinkedCell](key, value);
        this[_setTableEntry](rest, hash, [cell]);
      } else {
        let index = this.internalFindBucketIndex(bucket, key);
        if (dart.notNull(index) >= 0) {
          let cell = bucket[index];
          cell.hashMapCellValue = value;
        } else {
          let cell = this[_newLinkedCell](key, value);
          bucket.push(cell);
        }
      }
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      if (dart.test(this.containsKey(key))) return this._get(key);
      let value = ifAbsent();
      this._set(key, value);
      return value;
    }
    remove(key) {
      if (dart.test(_js_helper.JsLinkedHashMap._isStringKey(key))) {
        return this[_removeHashTableEntry](this[_strings], key);
      } else if (dart.test(_js_helper.JsLinkedHashMap._isNumericKey(key))) {
        return this[_removeHashTableEntry](this[_nums], key);
      } else {
        return this.internalRemove(key);
      }
    }
    internalRemove(key) {
      let rest = this[_rest];
      if (rest == null) return null;
      let bucket = this[_getBucket](rest, key);
      let index = this.internalFindBucketIndex(bucket, key);
      if (dart.notNull(index) < 0) return null;
      let cell = bucket.splice(index, 1)[0];
      this[_unlinkCell](cell);
      return cell.hashMapCellValue;
    }
    clear() {
      if (dart.notNull(this[_length]) > 0) {
        this[_strings] = this[_nums] = this[_rest] = this[_first] = this[_last] = null;
        this[_length] = 0;
        this[_modified]();
      }
    }
    forEach(action) {
      let cell = this[_first];
      let modifications = this[_modifications];
      while (cell != null) {
        action(cell.hashMapCellKey, cell.hashMapCellValue);
        if (modifications != this[_modifications]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
        cell = cell[_next];
      }
    }
    [_addHashTableEntry](table, key, value) {
      K._check(key);
      V._check(value);
      let cell = this[_getTableCell](table, key);
      if (cell == null) {
        this[_setTableEntry](table, key, this[_newLinkedCell](key, value));
      } else {
        cell.hashMapCellValue = value;
      }
    }
    [_removeHashTableEntry](table, key) {
      if (table == null) return null;
      let cell = this[_getTableCell](table, key);
      if (cell == null) return null;
      this[_unlinkCell](cell);
      this[_deleteTableEntry](table, key);
      return cell.hashMapCellValue;
    }
    [_modified]() {
      this[_modifications] = dart.notNull(this[_modifications]) + 1 & 67108863;
    }
    [_newLinkedCell](key, value) {
      K._check(key);
      V._check(value);
      let cell = new (LinkedHashMapCellOfK$V())(key, value);
      if (this[_first] == null) {
        this[_first] = this[_last] = cell;
      } else {
        let last = this[_last];
        cell[_previous] = last;
        this[_last] = last[_next] = cell;
      }
      this[_length] = dart.notNull(this[_length]) + 1;
      this[_modified]();
      return cell;
    }
    [_unlinkCell](cell) {
      LinkedHashMapCellOfK$V()._check(cell);
      let previous = cell[_previous];
      let next = cell[_next];
      if (previous == null) {
        dart.assert(dart.equals(cell, this[_first]));
        this[_first] = next;
      } else {
        previous[_next] = next;
      }
      if (next == null) {
        dart.assert(dart.equals(cell, this[_last]));
        this[_last] = previous;
      } else {
        next[_previous] = previous;
      }
      this[_length] = dart.notNull(this[_length]) - 1;
      this[_modified]();
    }
    static _isStringKey(key) {
      return typeof key == 'string';
    }
    static _isNumericKey(key) {
      return typeof key == 'number' && (key & 0x3ffffff) === key;
    }
    internalComputeHashCode(key) {
      return dart.hashCode(key) & 0x3ffffff;
    }
    [_getBucket](table, key) {
      let hash = this.internalComputeHashCode(key);
      return this[_getTableBucket](table, hash);
    }
    internalFindBucketIndex(bucket, key) {
      if (bucket == null) return -1;
      let length = bucket.length;
      for (let i = 0; i < length; i++) {
        let cell = bucket[i];
        if (dart.equals(cell.hashMapCellKey, key)) return i;
      }
      return -1;
    }
    toString() {
      return collection.Maps.mapToString(this);
    }
    [_getTableCell](table, key) {
      return table[key];
    }
    [_getTableBucket](table, key) {
      return table[key];
    }
    [_setTableEntry](table, key, value) {
      dart.assert(value != null);
      table[key] = value;
    }
    [_deleteTableEntry](table, key) {
      delete table[key];
    }
    [_containsTableEntry](table, key) {
      let cell = this[_getTableCell](table, key);
      return cell != null;
    }
    [_newHashTable]() {
      let table = Object.create(null);
      let temporaryKey = '<non-identifier-key>';
      this[_setTableEntry](table, temporaryKey, table);
      this[_deleteTableEntry](table, temporaryKey);
      return table;
    }
  }
  dart.addTypeTests(JsLinkedHashMap);
  JsLinkedHashMap[dart.implements] = () => [LinkedHashMapOfK$V(), InternalMapOfK$V()];
  dart.setSignature(JsLinkedHashMap, {
    constructors: () => ({
      new: dart.definiteFunctionType(_js_helper.JsLinkedHashMap$(K, V), []),
      es6: dart.definiteFunctionType(_js_helper.JsLinkedHashMap$(K, V), [])
    }),
    fields: () => ({
      [_length]: core.int,
      [_strings]: dart.dynamic,
      [_nums]: dart.dynamic,
      [_rest]: dart.dynamic,
      [_first]: LinkedHashMapCellOfK$V(),
      [_last]: LinkedHashMapCellOfK$V(),
      [_modifications]: core.int
    }),
    getters: () => ({
      length: dart.definiteFunctionType(core.int, []),
      isEmpty: dart.definiteFunctionType(core.bool, []),
      isNotEmpty: dart.definiteFunctionType(core.bool, []),
      keys: dart.definiteFunctionType(core.Iterable$(K), []),
      values: dart.definiteFunctionType(core.Iterable$(V), [])
    }),
    methods: () => ({
      containsKey: dart.definiteFunctionType(core.bool, [core.Object]),
      internalContainsKey: dart.definiteFunctionType(core.bool, [core.Object]),
      containsValue: dart.definiteFunctionType(core.bool, [core.Object]),
      addAll: dart.definiteFunctionType(dart.void, [MapOfK$V()]),
      _get: dart.definiteFunctionType(V, [core.Object]),
      internalGet: dart.definiteFunctionType(V, [core.Object]),
      _set: dart.definiteFunctionType(dart.void, [K, V]),
      internalSet: dart.definiteFunctionType(dart.void, [K, V]),
      putIfAbsent: dart.definiteFunctionType(V, [K, VoidToV()]),
      remove: dart.definiteFunctionType(V, [core.Object]),
      internalRemove: dart.definiteFunctionType(V, [core.Object]),
      clear: dart.definiteFunctionType(dart.void, []),
      forEach: dart.definiteFunctionType(dart.void, [KAndVTovoid()]),
      [_addHashTableEntry]: dart.definiteFunctionType(dart.void, [dart.dynamic, K, V]),
      [_removeHashTableEntry]: dart.definiteFunctionType(V, [dart.dynamic, core.Object]),
      [_modified]: dart.definiteFunctionType(dart.void, []),
      [_newLinkedCell]: dart.definiteFunctionType(_js_helper.LinkedHashMapCell$(K, V), [K, V]),
      [_unlinkCell]: dart.definiteFunctionType(dart.void, [LinkedHashMapCellOfK$V()]),
      internalComputeHashCode: dart.definiteFunctionType(core.int, [dart.dynamic]),
      [_getBucket]: dart.definiteFunctionType(core.List$(_js_helper.LinkedHashMapCell$(K, V)), [dart.dynamic, dart.dynamic]),
      internalFindBucketIndex: dart.definiteFunctionType(core.int, [dart.dynamic, dart.dynamic]),
      [_getTableCell]: dart.definiteFunctionType(_js_helper.LinkedHashMapCell$(K, V), [dart.dynamic, dart.dynamic]),
      [_getTableBucket]: dart.definiteFunctionType(core.List$(_js_helper.LinkedHashMapCell$(K, V)), [dart.dynamic, dart.dynamic]),
      [_setTableEntry]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
      [_deleteTableEntry]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic]),
      [_containsTableEntry]: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
      [_newHashTable]: dart.definiteFunctionType(dart.dynamic, [])
    }),
    statics: () => ({
      _isStringKey: dart.definiteFunctionType(core.bool, [dart.dynamic]),
      _isNumericKey: dart.definiteFunctionType(core.bool, [dart.dynamic])
    }),
    names: ['_isStringKey', '_isNumericKey']
  });
  dart.defineExtensionMembers(JsLinkedHashMap, [
    'containsKey',
    'containsValue',
    'addAll',
    '_get',
    '_set',
    'putIfAbsent',
    'remove',
    'clear',
    'forEach',
    'length',
    'isEmpty',
    'isNotEmpty',
    'keys',
    'values'
  ]);
  return JsLinkedHashMap;
});
_js_helper.JsLinkedHashMap = JsLinkedHashMap();
_js_helper.Es6LinkedHashMap$ = dart.generic((K, V) => {
  class Es6LinkedHashMap extends _js_helper.JsLinkedHashMap$(K, V) {
    new() {
      super.new();
    }
    [_getTableCell](table, key) {
      return table.get(key);
    }
    [_getTableBucket](table, key) {
      return table.get(key);
    }
    [_setTableEntry](table, key, value) {
      table.set(key, value);
    }
    [_deleteTableEntry](table, key) {
      table.delete(key);
    }
    [_containsTableEntry](table, key) {
      return table.has(key);
    }
    [_newHashTable]() {
      return new Map();
    }
  }
  dart.setSignature(Es6LinkedHashMap, {
    methods: () => ({
      [_getTableCell]: dart.definiteFunctionType(_js_helper.LinkedHashMapCell$(K, V), [dart.dynamic, dart.dynamic]),
      [_getTableBucket]: dart.definiteFunctionType(core.List$(_js_helper.LinkedHashMapCell$(K, V)), [dart.dynamic, dart.dynamic])
    })
  });
  return Es6LinkedHashMap;
});
_js_helper.Es6LinkedHashMap = Es6LinkedHashMap();
_js_helper.LinkedHashMapCell$ = dart.generic((K, V) => {
  let LinkedHashMapCellOfK$V = () => (LinkedHashMapCellOfK$V = dart.constFn(_js_helper.LinkedHashMapCell$(K, V)))();
  class LinkedHashMapCell extends core.Object {
    new(hashMapCellKey, hashMapCellValue) {
      this.hashMapCellKey = hashMapCellKey;
      this.hashMapCellValue = hashMapCellValue;
      this[_next] = null;
      this[_previous] = null;
    }
  }
  dart.addTypeTests(LinkedHashMapCell);
  dart.setSignature(LinkedHashMapCell, {
    constructors: () => ({new: dart.definiteFunctionType(_js_helper.LinkedHashMapCell$(K, V), [K, V])}),
    fields: () => ({
      hashMapCellKey: K,
      hashMapCellValue: V,
      [_next]: LinkedHashMapCellOfK$V(),
      [_previous]: LinkedHashMapCellOfK$V()
    })
  });
  return LinkedHashMapCell;
});
_js_helper.LinkedHashMapCell = LinkedHashMapCell();
const _map = Symbol('_map');
_js_helper.LinkedHashMapKeyIterable$ = dart.generic(E => {
  let LinkedHashMapKeyIteratorOfE = () => (LinkedHashMapKeyIteratorOfE = dart.constFn(_js_helper.LinkedHashMapKeyIterator$(E)))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  let JsLinkedHashMapOfE$dynamic = () => (JsLinkedHashMapOfE$dynamic = dart.constFn(_js_helper.JsLinkedHashMap$(E, dart.dynamic)))();
  class LinkedHashMapKeyIterable extends core.Iterable$(E) {
    new(map) {
      this[_map] = map;
      super.new();
    }
    get length() {
      return this[_map][_length];
    }
    get isEmpty() {
      return this[_map][_length] == 0;
    }
    get iterator() {
      return new (LinkedHashMapKeyIteratorOfE())(this[_map], this[_map][_modifications]);
    }
    contains(element) {
      return this[_map].containsKey(element);
    }
    forEach(f) {
      let cell = this[_map][_first];
      let modifications = this[_map][_modifications];
      while (cell != null) {
        f(cell.hashMapCellKey);
        if (modifications != this[_map][_modifications]) {
          dart.throw(new core.ConcurrentModificationError(this[_map]));
        }
        cell = cell[_next];
      }
    }
  }
  LinkedHashMapKeyIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(LinkedHashMapKeyIterable, {
    constructors: () => ({new: dart.definiteFunctionType(_js_helper.LinkedHashMapKeyIterable$(E), [JsLinkedHashMapOfE$dynamic()])}),
    fields: () => ({[_map]: JsLinkedHashMapOfE$dynamic()}),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(E), [])}),
    methods: () => ({forEach: dart.definiteFunctionType(dart.void, [ETovoid()])})
  });
  dart.defineExtensionMembers(LinkedHashMapKeyIterable, [
    'contains',
    'forEach',
    'length',
    'isEmpty',
    'iterator'
  ]);
  return LinkedHashMapKeyIterable;
});
_js_helper.LinkedHashMapKeyIterable = LinkedHashMapKeyIterable();
const _cell = Symbol('_cell');
_js_helper.LinkedHashMapKeyIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let JsLinkedHashMapOfE$dynamic = () => (JsLinkedHashMapOfE$dynamic = dart.constFn(_js_helper.JsLinkedHashMap$(E, dart.dynamic)))();
  let LinkedHashMapCellOfE$dynamic = () => (LinkedHashMapCellOfE$dynamic = dart.constFn(_js_helper.LinkedHashMapCell$(E, dart.dynamic)))();
  class LinkedHashMapKeyIterator extends core.Object {
    new(map, modifications) {
      this[_map] = map;
      this[_modifications] = modifications;
      this[_cell] = null;
      this[_current] = null;
      this[_cell] = this[_map][_first];
    }
    get current() {
      return this[_current];
    }
    moveNext() {
      if (this[_modifications] != this[_map][_modifications]) {
        dart.throw(new core.ConcurrentModificationError(this[_map]));
      } else if (this[_cell] == null) {
        this[_current] = null;
        return false;
      } else {
        this[_current] = this[_cell].hashMapCellKey;
        this[_cell] = this[_cell][_next];
        return true;
      }
    }
  }
  dart.addTypeTests(LinkedHashMapKeyIterator);
  LinkedHashMapKeyIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(LinkedHashMapKeyIterator, {
    constructors: () => ({new: dart.definiteFunctionType(_js_helper.LinkedHashMapKeyIterator$(E), [JsLinkedHashMapOfE$dynamic(), core.int])}),
    fields: () => ({
      [_map]: JsLinkedHashMapOfE$dynamic(),
      [_modifications]: core.int,
      [_cell]: LinkedHashMapCellOfE$dynamic(),
      [_current]: E
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return LinkedHashMapKeyIterator;
});
_js_helper.LinkedHashMapKeyIterator = LinkedHashMapKeyIterator();
_js_helper.defineProperty = function(obj, property, value) {
  Object.defineProperty(obj, property, {value: value, enumerable: false, writable: true, configurable: true});
};
dart.lazyFn(_js_helper.defineProperty, () => dynamicAndStringAnddynamicTovoid());
_js_helper.convertDartClosureToJS = function(F) {
  return (closure, arity) => {
    return closure;
  };
};
dart.fn(_js_helper.convertDartClosureToJS, FAndintToF());
_js_helper.setNativeSubclassDispatchRecord = function(proto, interceptor) {
};
dart.fn(_js_helper.setNativeSubclassDispatchRecord, dynamicAnddynamicTodynamic());
_js_helper.findDispatchTagForInterceptorClass = function(interceptorClassConstructor) {
};
dart.fn(_js_helper.findDispatchTagForInterceptorClass, dynamicTodynamic());
_js_helper.makeLeafDispatchRecord = function(interceptor) {
};
dart.fn(_js_helper.makeLeafDispatchRecord, dynamicTodynamic());
const _nativeRegExp = Symbol('_nativeRegExp');
_js_helper.regExpGetNative = function(regexp) {
  return regexp[_nativeRegExp];
};
dart.lazyFn(_js_helper.regExpGetNative, () => JSSyntaxRegExpTodynamic());
const _nativeGlobalVersion = Symbol('_nativeGlobalVersion');
_js_helper.regExpGetGlobalNative = function(regexp) {
  let nativeRegexp = regexp[_nativeGlobalVersion];
  nativeRegexp.lastIndex = 0;
  return nativeRegexp;
};
dart.lazyFn(_js_helper.regExpGetGlobalNative, () => JSSyntaxRegExpTodynamic());
const _nativeAnchoredVersion = Symbol('_nativeAnchoredVersion');
_js_helper.regExpCaptureCount = function(regexp) {
  let nativeAnchoredRegExp = regexp[_nativeAnchoredVersion];
  let match = nativeAnchoredRegExp.exec('');
  return core.int._check(dart.dsend(dart.dload(match, 'length'), '-', 2));
};
dart.lazyFn(_js_helper.regExpCaptureCount, () => JSSyntaxRegExpToint());
const _nativeGlobalRegExp = Symbol('_nativeGlobalRegExp');
const _nativeAnchoredRegExp = Symbol('_nativeAnchoredRegExp');
const _isMultiLine = Symbol('_isMultiLine');
const _isCaseSensitive = Symbol('_isCaseSensitive');
const _execGlobal = Symbol('_execGlobal');
const _execAnchored = Symbol('_execAnchored');
_js_helper.JSSyntaxRegExp = class JSSyntaxRegExp extends core.Object {
  toString() {
    return dart.str`RegExp/${this.pattern}/`;
  }
  new(source, opts) {
    let multiLine = opts && 'multiLine' in opts ? opts.multiLine : false;
    let caseSensitive = opts && 'caseSensitive' in opts ? opts.caseSensitive : true;
    this.pattern = source;
    this[_nativeRegExp] = _js_helper.JSSyntaxRegExp.makeNative(source, multiLine, caseSensitive, false);
    this[_nativeGlobalRegExp] = null;
    this[_nativeAnchoredRegExp] = null;
  }
  get [_nativeGlobalVersion]() {
    if (this[_nativeGlobalRegExp] != null) return this[_nativeGlobalRegExp];
    return this[_nativeGlobalRegExp] = _js_helper.JSSyntaxRegExp.makeNative(this.pattern, this[_isMultiLine], this[_isCaseSensitive], true);
  }
  get [_nativeAnchoredVersion]() {
    if (this[_nativeAnchoredRegExp] != null) return this[_nativeAnchoredRegExp];
    return this[_nativeAnchoredRegExp] = _js_helper.JSSyntaxRegExp.makeNative(dart.str`${this.pattern}|()`, this[_isMultiLine], this[_isCaseSensitive], true);
  }
  get [_isMultiLine]() {
    return this[_nativeRegExp].multiline;
  }
  get [_isCaseSensitive]() {
    return !this[_nativeRegExp].ignoreCase;
  }
  static makeNative(source, multiLine, caseSensitive, global) {
    _js_helper.checkString(source);
    let m = dart.test(multiLine) ? 'm' : '';
    let i = dart.test(caseSensitive) ? '' : 'i';
    let g = dart.test(global) ? 'g' : '';
    let regexp = (function() {
      try {
        return new RegExp(source, m + i + g);
      } catch (e) {
        return e;
      }

    })();
    if (regexp instanceof RegExp) return regexp;
    let errorMessage = String(regexp);
    dart.throw(new core.FormatException(dart.str`Illegal RegExp pattern: ${source}, ${errorMessage}`));
  }
  firstMatch(string) {
    let m = this[_nativeRegExp].exec(_js_helper.checkString(string));
    if (m == null) return null;
    return new _js_helper._MatchImplementation(this, m);
  }
  hasMatch(string) {
    return this[_nativeRegExp].test(_js_helper.checkString(string));
  }
  stringMatch(string) {
    let match = this.firstMatch(string);
    if (match != null) return match.group(0);
    return null;
  }
  allMatches(string, start) {
    if (start === void 0) start = 0;
    _js_helper.checkString(string);
    _js_helper.checkInt(start);
    if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(string[dartx.length])) {
      dart.throw(new core.RangeError.range(start, 0, string[dartx.length]));
    }
    return new _js_helper._AllMatchesIterable(this, string, start);
  }
  [_execGlobal](string, start) {
    let regexp = this[_nativeGlobalVersion];
    regexp.lastIndex = start;
    let match = regexp.exec(string);
    if (match == null) return null;
    return new _js_helper._MatchImplementation(this, ListOfString()._check(match));
  }
  [_execAnchored](string, start) {
    let regexp = this[_nativeAnchoredVersion];
    regexp.lastIndex = start;
    let match = regexp.exec(string);
    if (match == null) return null;
    if (match[dartx._get](dart.notNull(match[dartx.length]) - 1) != null) return null;
    match[dartx.length] = dart.notNull(match[dartx.length]) - 1;
    return new _js_helper._MatchImplementation(this, ListOfString()._check(match));
  }
  matchAsPrefix(string, start) {
    if (start === void 0) start = 0;
    if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(string[dartx.length])) {
      dart.throw(new core.RangeError.range(start, 0, string[dartx.length]));
    }
    return this[_execAnchored](string, start);
  }
  get isMultiLine() {
    return this[_isMultiLine];
  }
  get isCaseSensitive() {
    return this[_isCaseSensitive];
  }
};
_js_helper.JSSyntaxRegExp[dart.implements] = () => [core.RegExp];
dart.setSignature(_js_helper.JSSyntaxRegExp, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.JSSyntaxRegExp, [core.String], {multiLine: core.bool, caseSensitive: core.bool})}),
  fields: () => ({
    pattern: core.String,
    [_nativeRegExp]: dart.dynamic,
    [_nativeGlobalRegExp]: dart.dynamic,
    [_nativeAnchoredRegExp]: dart.dynamic
  }),
  getters: () => ({
    [_nativeGlobalVersion]: dart.definiteFunctionType(dart.dynamic, []),
    [_nativeAnchoredVersion]: dart.definiteFunctionType(dart.dynamic, []),
    [_isMultiLine]: dart.definiteFunctionType(core.bool, []),
    [_isCaseSensitive]: dart.definiteFunctionType(core.bool, []),
    isMultiLine: dart.definiteFunctionType(core.bool, []),
    isCaseSensitive: dart.definiteFunctionType(core.bool, [])
  }),
  methods: () => ({
    firstMatch: dart.definiteFunctionType(core.Match, [core.String]),
    hasMatch: dart.definiteFunctionType(core.bool, [core.String]),
    stringMatch: dart.definiteFunctionType(core.String, [core.String]),
    allMatches: dart.definiteFunctionType(core.Iterable$(core.Match), [core.String], [core.int]),
    [_execGlobal]: dart.definiteFunctionType(core.Match, [core.String, core.int]),
    [_execAnchored]: dart.definiteFunctionType(core.Match, [core.String, core.int]),
    matchAsPrefix: dart.definiteFunctionType(core.Match, [core.String], [core.int])
  }),
  statics: () => ({makeNative: dart.definiteFunctionType(dart.dynamic, [core.String, core.bool, core.bool, core.bool])}),
  names: ['makeNative']
});
dart.defineExtensionMembers(_js_helper.JSSyntaxRegExp, ['allMatches', 'matchAsPrefix']);
const _match = Symbol('_match');
_js_helper._MatchImplementation = class _MatchImplementation extends core.Object {
  new(pattern, match) {
    this.pattern = pattern;
    this[_match] = match;
    dart.assert(typeof this[_match].input == 'string');
    dart.assert(typeof this[_match].index == 'number');
  }
  get input() {
    return this[_match].input;
  }
  get start() {
    return this[_match].index;
  }
  get end() {
    return dart.notNull(this.start) + dart.notNull(this[_match][dartx._get](0)[dartx.length]);
  }
  group(index) {
    return this[_match][dartx._get](index);
  }
  _get(index) {
    return this.group(index);
  }
  get groupCount() {
    return dart.notNull(this[_match][dartx.length]) - 1;
  }
  groups(groups) {
    let out = JSArrayOfString().of([]);
    for (let i of groups) {
      out[dartx.add](this.group(i));
    }
    return out;
  }
};
_js_helper._MatchImplementation[dart.implements] = () => [core.Match];
dart.setSignature(_js_helper._MatchImplementation, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper._MatchImplementation, [core.Pattern, ListOfString()])}),
  fields: () => ({
    pattern: core.Pattern,
    [_match]: ListOfString()
  }),
  getters: () => ({
    input: dart.definiteFunctionType(core.String, []),
    start: dart.definiteFunctionType(core.int, []),
    end: dart.definiteFunctionType(core.int, []),
    groupCount: dart.definiteFunctionType(core.int, [])
  }),
  methods: () => ({
    group: dart.definiteFunctionType(core.String, [core.int]),
    _get: dart.definiteFunctionType(core.String, [core.int]),
    groups: dart.definiteFunctionType(core.List$(core.String), [ListOfint()])
  })
});
const _re = Symbol('_re');
const _string = Symbol('_string');
const _start = Symbol('_start');
core.Match = class Match extends core.Object {};
_js_helper._AllMatchesIterable = class _AllMatchesIterable extends collection.IterableBase$(core.Match) {
  new(re, string, start) {
    this[_re] = re;
    this[_string] = string;
    this[_start] = start;
    super.new();
  }
  get iterator() {
    return new _js_helper._AllMatchesIterator(this[_re], this[_string], this[_start]);
  }
};
dart.addSimpleTypeTests(_js_helper._AllMatchesIterable);
dart.setSignature(_js_helper._AllMatchesIterable, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper._AllMatchesIterable, [_js_helper.JSSyntaxRegExp, core.String, core.int])}),
  fields: () => ({
    [_re]: _js_helper.JSSyntaxRegExp,
    [_string]: core.String,
    [_start]: core.int
  }),
  getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(core.Match), [])})
});
dart.defineExtensionMembers(_js_helper._AllMatchesIterable, ['iterator']);
const _regExp = Symbol('_regExp');
const _nextIndex = Symbol('_nextIndex');
_js_helper._AllMatchesIterator = class _AllMatchesIterator extends core.Object {
  new(regExp, string, nextIndex) {
    this[_regExp] = regExp;
    this[_string] = string;
    this[_nextIndex] = nextIndex;
    this[_current] = null;
  }
  get current() {
    return this[_current];
  }
  moveNext() {
    if (this[_string] == null) return false;
    if (dart.notNull(this[_nextIndex]) <= dart.notNull(this[_string][dartx.length])) {
      let match = this[_regExp][_execGlobal](this[_string], this[_nextIndex]);
      if (match != null) {
        this[_current] = match;
        let nextIndex = match.end;
        if (match.start == nextIndex) {
          nextIndex = dart.notNull(nextIndex) + 1;
        }
        this[_nextIndex] = nextIndex;
        return true;
      }
    }
    this[_current] = null;
    this[_string] = null;
    return false;
  }
};
_js_helper._AllMatchesIterator[dart.implements] = () => [IteratorOfMatch()];
dart.setSignature(_js_helper._AllMatchesIterator, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper._AllMatchesIterator, [_js_helper.JSSyntaxRegExp, core.String, core.int])}),
  fields: () => ({
    [_regExp]: _js_helper.JSSyntaxRegExp,
    [_string]: core.String,
    [_nextIndex]: core.int,
    [_current]: core.Match
  }),
  getters: () => ({current: dart.definiteFunctionType(core.Match, [])}),
  methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
});
_js_helper.firstMatchAfter = function(regExp, string, start) {
  return regExp[_execGlobal](string, start);
};
dart.lazyFn(_js_helper.firstMatchAfter, () => JSSyntaxRegExpAndStringAndintToMatch());
_js_helper.stringIndexOfStringUnchecked = function(receiver, other, startIndex) {
  return receiver.indexOf(other, startIndex);
};
dart.fn(_js_helper.stringIndexOfStringUnchecked, dynamicAnddynamicAnddynamicToint());
_js_helper.substring1Unchecked = function(receiver, startIndex) {
  return receiver.substring(startIndex);
};
dart.lazyFn(_js_helper.substring1Unchecked, () => dynamicAnddynamicToString());
_js_helper.substring2Unchecked = function(receiver, startIndex, endIndex) {
  return receiver.substring(startIndex, endIndex);
};
dart.lazyFn(_js_helper.substring2Unchecked, () => dynamicAnddynamicAnddynamicToString());
_js_helper.stringContainsStringUnchecked = function(receiver, other, startIndex) {
  return dart.notNull(_js_helper.stringIndexOfStringUnchecked(receiver, other, startIndex)) >= 0;
};
dart.lazyFn(_js_helper.stringContainsStringUnchecked, () => dynamicAnddynamicAnddynamicTobool());
_js_helper.StringMatch = class StringMatch extends core.Object {
  new(start, input, pattern) {
    this.start = start;
    this.input = input;
    this.pattern = pattern;
  }
  get end() {
    return dart.notNull(this.start) + dart.notNull(this.pattern[dartx.length]);
  }
  _get(g) {
    return this.group(g);
  }
  get groupCount() {
    return 0;
  }
  group(group_) {
    if (group_ != 0) {
      dart.throw(new core.RangeError.value(group_));
    }
    return this.pattern;
  }
  groups(groups_) {
    let result = ListOfString().new();
    for (let g of groups_) {
      result[dartx.add](this.group(g));
    }
    return result;
  }
};
_js_helper.StringMatch[dart.implements] = () => [core.Match];
dart.setSignature(_js_helper.StringMatch, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper.StringMatch, [core.int, core.String, core.String])}),
  fields: () => ({
    start: core.int,
    input: core.String,
    pattern: core.String
  }),
  getters: () => ({
    end: dart.definiteFunctionType(core.int, []),
    groupCount: dart.definiteFunctionType(core.int, [])
  }),
  methods: () => ({
    _get: dart.definiteFunctionType(core.String, [core.int]),
    group: dart.definiteFunctionType(core.String, [core.int]),
    groups: dart.definiteFunctionType(core.List$(core.String), [ListOfint()])
  })
});
_js_helper.allMatchesInStringUnchecked = function(pattern, string, startIndex) {
  return new _js_helper._StringAllMatchesIterable(string, pattern, startIndex);
};
dart.lazyFn(_js_helper.allMatchesInStringUnchecked, () => StringAndStringAndintToIterableOfMatch());
const _input = Symbol('_input');
const _pattern = Symbol('_pattern');
const _index = Symbol('_index');
_js_helper._StringAllMatchesIterable = class _StringAllMatchesIterable extends core.Iterable$(core.Match) {
  new(input, pattern, index) {
    this[_input] = input;
    this[_pattern] = pattern;
    this[_index] = index;
    super.new();
  }
  get iterator() {
    return new _js_helper._StringAllMatchesIterator(this[_input], this[_pattern], this[_index]);
  }
  get first() {
    let index = _js_helper.stringIndexOfStringUnchecked(this[_input], this[_pattern], this[_index]);
    if (dart.notNull(index) >= 0) {
      return new _js_helper.StringMatch(index, this[_input], this[_pattern]);
    }
    dart.throw(_internal.IterableElementError.noElement());
  }
};
dart.addSimpleTypeTests(_js_helper._StringAllMatchesIterable);
dart.setSignature(_js_helper._StringAllMatchesIterable, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper._StringAllMatchesIterable, [core.String, core.String, core.int])}),
  fields: () => ({
    [_input]: core.String,
    [_pattern]: core.String,
    [_index]: core.int
  }),
  getters: () => ({
    iterator: dart.definiteFunctionType(core.Iterator$(core.Match), []),
    first: dart.definiteFunctionType(core.Match, [])
  })
});
dart.defineExtensionMembers(_js_helper._StringAllMatchesIterable, ['iterator', 'first']);
_js_helper._StringAllMatchesIterator = class _StringAllMatchesIterator extends core.Object {
  new(input, pattern, index) {
    this[_input] = input;
    this[_pattern] = pattern;
    this[_index] = index;
    this[_current] = null;
  }
  moveNext() {
    if (dart.notNull(this[_index]) + dart.notNull(this[_pattern][dartx.length]) > dart.notNull(this[_input][dartx.length])) {
      this[_current] = null;
      return false;
    }
    let index = _js_helper.stringIndexOfStringUnchecked(this[_input], this[_pattern], this[_index]);
    if (dart.notNull(index) < 0) {
      this[_index] = dart.notNull(this[_input][dartx.length]) + 1;
      this[_current] = null;
      return false;
    }
    let end = dart.notNull(index) + dart.notNull(this[_pattern][dartx.length]);
    this[_current] = new _js_helper.StringMatch(index, this[_input], this[_pattern]);
    if (end == this[_index]) end++;
    this[_index] = end;
    return true;
  }
  get current() {
    return this[_current];
  }
};
_js_helper._StringAllMatchesIterator[dart.implements] = () => [IteratorOfMatch()];
dart.setSignature(_js_helper._StringAllMatchesIterator, {
  constructors: () => ({new: dart.definiteFunctionType(_js_helper._StringAllMatchesIterator, [core.String, core.String, core.int])}),
  fields: () => ({
    [_input]: core.String,
    [_pattern]: core.String,
    [_index]: core.int,
    [_current]: core.Match
  }),
  getters: () => ({current: dart.definiteFunctionType(core.Match, [])}),
  methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
});
_js_helper.stringContainsUnchecked = function(receiver, other, startIndex) {
  if (typeof other == 'string') {
    return _js_helper.stringContainsStringUnchecked(receiver, other, startIndex);
  } else if (_js_helper.JSSyntaxRegExp.is(other)) {
    return other.hasMatch(receiver[dartx.substring](startIndex));
  } else {
    let substr = receiver[dartx.substring](startIndex);
    return core.bool._check(dart.dload(dart.dsend(other, 'allMatches', substr), 'isNotEmpty'));
  }
};
dart.lazyFn(_js_helper.stringContainsUnchecked, () => StringAnddynamicAndintTobool());
_js_helper.stringReplaceJS = function(receiver, replacer, replacement) {
  replacement = replacement.replace(/\$/g, "$$$$");
  return receiver.replace(replacer, replacement);
};
dart.lazyFn(_js_helper.stringReplaceJS, () => dynamicAnddynamicAnddynamicToString());
_js_helper.stringReplaceFirstRE = function(receiver, regexp, replacement, startIndex) {
  let match = regexp[_execGlobal](receiver, startIndex);
  if (match == null) return receiver;
  let start = match.start;
  let end = match.end;
  return _js_helper.stringReplaceRangeUnchecked(receiver, start, end, replacement);
};
dart.lazyFn(_js_helper.stringReplaceFirstRE, () => StringAndJSSyntaxRegExpAndString__ToString());
_js_helper.quoteStringForRegExp = function(string) {
  return string.replace(/[[\]{}()*+?.\\^$|]/g, "\\$&");
};
dart.lazyFn(_js_helper.quoteStringForRegExp, () => dynamicToString());
_js_helper.stringReplaceAllUnchecked = function(receiver, pattern, replacement) {
  _js_helper.checkString(replacement);
  if (typeof pattern == 'string') {
    if (pattern == "") {
      if (receiver == "") {
        return replacement;
      } else {
        let result = new core.StringBuffer();
        let length = receiver[dartx.length];
        result.write(replacement);
        for (let i = 0; i < dart.notNull(length); i++) {
          result.write(receiver[dartx._get](i));
          result.write(replacement);
        }
        return result.toString();
      }
    } else {
      let quoted = _js_helper.quoteStringForRegExp(pattern);
      let replacer = new RegExp(quoted, 'g');
      return _js_helper.stringReplaceJS(receiver, replacer, replacement);
    }
  } else if (_js_helper.JSSyntaxRegExp.is(pattern)) {
    let re = _js_helper.regExpGetGlobalNative(pattern);
    return _js_helper.stringReplaceJS(receiver, re, replacement);
  } else {
    _js_helper.checkNull(pattern);
    dart.throw("String.replaceAll(Pattern) UNIMPLEMENTED");
  }
};
dart.lazyFn(_js_helper.stringReplaceAllUnchecked, () => StringAndPatternAndStringToString());
_js_helper._matchString = function(match) {
  return match._get(0);
};
dart.lazyFn(_js_helper._matchString, () => MatchToString());
_js_helper._stringIdentity = function(string) {
  return string;
};
dart.lazyFn(_js_helper._stringIdentity, () => StringToString());
_js_helper.stringReplaceAllFuncUnchecked = function(receiver, pattern, onMatch, onNonMatch) {
  if (onMatch == null) onMatch = _js_helper._matchString;
  if (onNonMatch == null) onNonMatch = _js_helper._stringIdentity;
  if (typeof pattern == 'string') {
    return _js_helper.stringReplaceAllStringFuncUnchecked(receiver, pattern, onMatch, onNonMatch);
  }
  if (!core.Pattern.is(pattern)) {
    dart.throw(new core.ArgumentError.value(pattern, 'pattern', 'is not a Pattern'));
  }
  let buffer = new core.StringBuffer();
  let startIndex = 0;
  for (let match of pattern[dartx.allMatches](receiver)) {
    buffer.write(onNonMatch(receiver[dartx.substring](startIndex, match.start)));
    buffer.write(onMatch(match));
    startIndex = match.end;
  }
  buffer.write(onNonMatch(receiver[dartx.substring](startIndex)));
  return buffer.toString();
};
dart.lazyFn(_js_helper.stringReplaceAllFuncUnchecked, () => StringAndPatternAndFn__ToString());
_js_helper.stringReplaceAllEmptyFuncUnchecked = function(receiver, onMatch, onNonMatch) {
  let buffer = new core.StringBuffer();
  let length = receiver[dartx.length];
  let i = 0;
  buffer.write(onNonMatch(""));
  while (i < dart.notNull(length)) {
    buffer.write(onMatch(new _js_helper.StringMatch(i, receiver, "")));
    let code = receiver[dartx.codeUnitAt](i);
    if ((dart.notNull(code) & ~1023) == 55296 && dart.notNull(length) > i + 1) {
      code = receiver[dartx.codeUnitAt](i + 1);
      if ((dart.notNull(code) & ~1023) == 56320) {
        buffer.write(onNonMatch(receiver[dartx.substring](i, i + 2)));
        i = i + 2;
        continue;
      }
    }
    buffer.write(onNonMatch(receiver[dartx._get](i)));
    i++;
  }
  buffer.write(onMatch(new _js_helper.StringMatch(i, receiver, "")));
  buffer.write(onNonMatch(""));
  return buffer.toString();
};
dart.lazyFn(_js_helper.stringReplaceAllEmptyFuncUnchecked, () => StringAndFnAndFnToString());
_js_helper.stringReplaceAllStringFuncUnchecked = function(receiver, pattern, onMatch, onNonMatch) {
  let patternLength = pattern[dartx.length];
  if (patternLength == 0) {
    return _js_helper.stringReplaceAllEmptyFuncUnchecked(receiver, onMatch, onNonMatch);
  }
  let length = receiver[dartx.length];
  let buffer = new core.StringBuffer();
  let startIndex = 0;
  while (startIndex < dart.notNull(length)) {
    let position = _js_helper.stringIndexOfStringUnchecked(receiver, pattern, startIndex);
    if (position == -1) {
      break;
    }
    buffer.write(onNonMatch(receiver[dartx.substring](startIndex, position)));
    buffer.write(onMatch(new _js_helper.StringMatch(position, receiver, pattern)));
    startIndex = dart.notNull(position) + dart.notNull(patternLength);
  }
  buffer.write(onNonMatch(receiver[dartx.substring](startIndex)));
  return buffer.toString();
};
dart.lazyFn(_js_helper.stringReplaceAllStringFuncUnchecked, () => StringAndStringAndFn__ToString());
_js_helper.stringReplaceFirstUnchecked = function(receiver, pattern, replacement, startIndex) {
  if (typeof pattern == 'string') {
    let index = _js_helper.stringIndexOfStringUnchecked(receiver, pattern, startIndex);
    if (dart.notNull(index) < 0) return receiver;
    let end = dart.notNull(index) + dart.notNull(pattern[dartx.length]);
    return _js_helper.stringReplaceRangeUnchecked(receiver, index, end, replacement);
  }
  if (_js_helper.JSSyntaxRegExp.is(pattern)) {
    return startIndex == 0 ? _js_helper.stringReplaceJS(receiver, _js_helper.regExpGetNative(pattern), replacement) : _js_helper.stringReplaceFirstRE(receiver, pattern, replacement, startIndex);
  }
  _js_helper.checkNull(pattern);
  let matches = pattern[dartx.allMatches](receiver, startIndex)[dartx.iterator];
  if (!dart.test(matches.moveNext())) return receiver;
  let match = matches.current;
  return receiver[dartx.replaceRange](match.start, match.end, replacement);
};
dart.lazyFn(_js_helper.stringReplaceFirstUnchecked, () => StringAndPatternAndString__ToString());
_js_helper.stringReplaceFirstMappedUnchecked = function(receiver, pattern, replace, startIndex) {
  let matches = pattern[dartx.allMatches](receiver, startIndex)[dartx.iterator];
  if (!dart.test(matches.moveNext())) return receiver;
  let match = matches.current;
  let replacement = dart.str`${replace(match)}`;
  return receiver[dartx.replaceRange](match.start, match.end, replacement);
};
dart.lazyFn(_js_helper.stringReplaceFirstMappedUnchecked, () => StringAndPatternAndFn__ToString());
_js_helper.stringJoinUnchecked = function(array, separator) {
  return array.join(separator);
};
dart.lazyFn(_js_helper.stringJoinUnchecked, () => dynamicAnddynamicToString());
_js_helper.stringReplaceRangeUnchecked = function(receiver, start, end, replacement) {
  let prefix = receiver.substring(0, start);
  let suffix = receiver.substring(end);
  return dart.str`${prefix}${replacement}${suffix}`;
};
dart.lazyFn(_js_helper.stringReplaceRangeUnchecked, () => StringAndintAndint__ToString());
_js_helper.getRuntimeType = function(object) {
  return dart.getReifiedType(object);
};
dart.fn(_js_helper.getRuntimeType, dynamicToType());
_js_helper.getIndex = function(array, index) {
  dart.assert(_js_helper.isJsArray(array));
  return array[index];
};
dart.fn(_js_helper.getIndex, dynamicAndintTodynamic());
_js_helper.getLength = function(array) {
  dart.assert(_js_helper.isJsArray(array));
  return array.length;
};
dart.fn(_js_helper.getLength, dynamicToint());
_js_helper.isJsArray = function(value) {
  return _interceptors.JSArray.is(value);
};
dart.lazyFn(_js_helper.isJsArray, () => dynamicTobool());
_js_mirrors.getName = function(symbol) {
  return _internal.Symbol.getName(_internal.Symbol.as(symbol));
};
dart.lazyFn(_js_mirrors.getName, () => SymbolToString());
_js_mirrors.getSymbol = function(name, library) {
  return dart.throw(new core.UnimplementedError("MirrorSystem.getSymbol unimplemented"));
};
dart.lazyFn(_js_mirrors.getSymbol, () => dynamicAnddynamicToSymbol());
dart.defineLazy(_js_mirrors, {
  get currentJsMirrorSystem() {
    return dart.throw(new core.UnimplementedError("MirrorSystem.currentJsMirrorSystem unimplemented"));
  }
});
dart.defineLazy(_js_mirrors, {
  get _typeMirror() {
    return Symbol("_typeMirror");
  }
});
_js_mirrors.reflect = function(reflectee) {
  if (core.Function.is(reflectee)) {
    return new _js_mirrors.JsClosureMirror._(reflectee);
  } else {
    return new _js_mirrors.JsInstanceMirror._(reflectee);
  }
};
dart.lazyFn(_js_mirrors.reflect, () => dynamicToInstanceMirror());
_js_mirrors.reflectType = function(key) {
  let unwrapped = _js_mirrors._unwrap(key);
  let property = Object.getOwnPropertyDescriptor(unwrapped, _js_mirrors._typeMirror);
  if (property != null) {
    return property.value;
  }
  let mirror = new _js_mirrors.JsClassMirror._(key);
  unwrapped[_js_mirrors._typeMirror] = mirror;
  return mirror;
};
dart.lazyFn(_js_mirrors.reflectType, () => TypeToTypeMirror());
dart.defineLazy(_js_mirrors, {
  get _dart() {
    return dart;
  }
});
_js_mirrors._dload = function(obj, name) {
  return _js_mirrors._dart.dload(obj, name);
};
dart.lazyFn(_js_mirrors._dload, () => dynamicAndStringTodynamic());
_js_mirrors._dput = function(obj, name, val) {
  _js_mirrors._dart.dput(obj, name, val);
};
dart.lazyFn(_js_mirrors._dput, () => dynamicAndStringAnddynamicTovoid());
_js_mirrors._dcall = function(obj, args) {
  return _js_mirrors._dart.dcall(obj, ...args);
};
dart.lazyFn(_js_mirrors._dcall, () => dynamicAndListTodynamic());
_js_mirrors._dsend = function(obj, name, args) {
  return _js_mirrors._dart.dsend(obj, name, ...args);
};
dart.lazyFn(_js_mirrors._dsend, () => dynamicAndStringAndListTodynamic());
_js_mirrors._getGenericClass = function(obj) {
  return _js_mirrors._dart.getGenericClass(obj);
};
dart.fn(_js_mirrors._getGenericClass, dynamicTodynamic());
_js_mirrors._getGenericArgs = function(obj) {
  return _js_mirrors._dart.getGenericArgs(obj);
};
dart.fn(_js_mirrors._getGenericArgs, dynamicTodynamic());
_js_mirrors._defaultConstructorType = function(type) {
  return _js_mirrors._dart.definiteFunctionType(type, []);
};
dart.fn(_js_mirrors._defaultConstructorType, dynamicTodynamic());
_js_mirrors._getMixins = function(type) {
  return _js_mirrors._dart.getMixins(type, []);
};
dart.fn(_js_mirrors._getMixins, dynamicTodynamic());
_js_mirrors._Lazy$ = dart.generic(T => {
  const _Lazy = dart.typedef('_Lazy', () => dart.functionType(T, []));
  return _Lazy;
});
_js_mirrors._Lazy = _Lazy();
_js_mirrors._getESSymbol = function(symbol) {
  return _internal.Symbol.getNativeSymbol(_internal.Symbol.as(symbol));
};
dart.lazyFn(_js_mirrors._getESSymbol, () => SymbolTodynamic());
_js_mirrors._getMember = function(symbol) {
  let privateSymbol = _js_mirrors._getESSymbol(symbol);
  if (privateSymbol != null) {
    return privateSymbol;
  }
  return _js_mirrors.getName(symbol);
};
dart.lazyFn(_js_mirrors._getMember, () => SymbolTodynamic());
_js_mirrors._getNameForESSymbol = function(member) {
  dart.assert(typeof member == "symbol");
  let str = dart.toString(member);
  dart.assert(dart.test(str[dartx.startsWith]('Symbol(')) && dart.test(str[dartx.endsWith](')')));
  return str[dartx.substring](7, dart.notNull(str[dartx.length]) - 1);
};
dart.lazyFn(_js_mirrors._getNameForESSymbol, () => dynamicToString());
_js_mirrors._getSymbolForESSymbol = function(member) {
  let name = _js_mirrors._getNameForESSymbol(member);
  return new _internal.Symbol.es6(name, member);
};
dart.lazyFn(_js_mirrors._getSymbolForESSymbol, () => dynamicToSymbol());
_js_mirrors._getSymbolForMember = function(member) {
  if (typeof member == 'string') {
    return core.Symbol.new(member);
  } else {
    let name = _js_mirrors._getNameForESSymbol(member);
    return new _internal.Symbol.es6(name, member);
  }
};
dart.lazyFn(_js_mirrors._getSymbolForMember, () => dynamicToSymbol());
_js_mirrors._toDartMap = function(data) {
  if (data == null) return dart.map({}, core.Symbol, dart.dynamic);
  let map = MapOfSymbol$dynamic().new();
  let publicMembers = Object.getOwnPropertyNames(data);
  for (let member of core.Iterable._check(publicMembers)) {
    let symbol = core.Symbol.new(core.String._check(member));
    map[dartx._set](symbol, data[member]);
  }
  let privateMembers = Object.getOwnPropertySymbols(data);
  for (let member of core.Iterable._check(privateMembers)) {
    let symbol = _js_mirrors._getSymbolForESSymbol(member);
    map[dartx._set](symbol, data[member]);
  }
  return map;
};
dart.lazyFn(_js_mirrors._toDartMap, () => dynamicToMapOfSymbol$dynamic());
_js_mirrors._getConstructors = function(obj) {
  let sig = _js_mirrors._dart.getConstructorSig(obj);
  return _js_mirrors._toDartMap(sig);
};
dart.lazyFn(_js_mirrors._getConstructors, () => dynamicToMapOfSymbol$dynamic());
_js_mirrors._getFields = function(obj) {
  let sig = _js_mirrors._dart.getFieldSig(obj);
  return _js_mirrors._toDartMap(sig);
};
dart.lazyFn(_js_mirrors._getFields, () => dynamicToMapOfSymbol$dynamic());
_js_mirrors._getMethods = function(obj) {
  let sig = _js_mirrors._dart.getMethodSig(obj);
  return _js_mirrors._toDartMap(sig);
};
dart.lazyFn(_js_mirrors._getMethods, () => dynamicToMapOfSymbol$dynamic());
_js_mirrors._getGetters = function(obj) {
  let sig = _js_mirrors._dart.getGetterSig(obj);
  return _js_mirrors._toDartMap(sig);
};
dart.lazyFn(_js_mirrors._getGetters, () => dynamicToMapOfSymbol$dynamic());
_js_mirrors._getSetters = function(obj) {
  let sig = _js_mirrors._dart.getSetterSig(obj);
  return _js_mirrors._toDartMap(sig);
};
dart.lazyFn(_js_mirrors._getSetters, () => dynamicToMapOfSymbol$dynamic());
_js_mirrors._getStaticFields = function(obj) {
  let sig = _js_mirrors._dart.getStaticFieldSig(obj);
  return _js_mirrors._toDartMap(sig);
};
dart.lazyFn(_js_mirrors._getStaticFields, () => dynamicToMapOfSymbol$dynamic());
_js_mirrors._getStatics = function(obj) {
  let sig = _js_mirrors._dart.getStaticSig(obj);
  return _js_mirrors._toDartMap(sig);
};
dart.lazyFn(_js_mirrors._getStatics, () => dynamicToMapOfSymbol$dynamic());
_js_mirrors._getStaticGetters = function(obj) {
  let sig = _js_mirrors._dart.getStaticGetterSig(obj);
  return _js_mirrors._toDartMap(sig);
};
dart.lazyFn(_js_mirrors._getStaticGetters, () => dynamicToMapOfSymbol$dynamic());
_js_mirrors._getStaticSetters = function(obj) {
  let sig = _js_mirrors._dart.getStaticSetterSig(obj);
  return _js_mirrors._toDartMap(sig);
};
dart.lazyFn(_js_mirrors._getStaticSetters, () => dynamicToMapOfSymbol$dynamic());
_js_mirrors._unwrap = function(obj) {
  return _js_mirrors._dart.unwrapType(obj);
};
dart.fn(_js_mirrors._unwrap, dynamicTodynamic());
_js_mirrors._wrap = function(obj) {
  return _js_mirrors._dart.wrapType(obj);
};
dart.fn(_js_mirrors._wrap, dynamicTodynamic());
_js_mirrors._runtimeType = function(obj) {
  return _js_mirrors._wrap(_js_mirrors._dart.getReifiedType(obj));
};
dart.fn(_js_mirrors._runtimeType, dynamicTodynamic());
_js_mirrors._unimplemented = function(t, i) {
  dart.throw(new core.UnimplementedError(dart.str`${t}.${_js_mirrors.getName(i.memberName)} unimplemented`));
};
dart.fn(_js_mirrors._unimplemented, TypeAndInvocationTodynamic());
_js_mirrors._toJsMap = function(map) {
  let obj = {};
  map[dartx.forEach](dart.fn((key, value) => {
    obj[_js_mirrors.getName(key)] = value;
  }, SymbolAnddynamicTovoid()));
  return obj;
};
dart.lazyFn(_js_mirrors._toJsMap, () => MapOfSymbol$dynamicTodynamic());
_js_mirrors.JsMirror = class JsMirror extends core.Object {
  noSuchMethod(i) {
    _js_mirrors._unimplemented(this.runtimeType, i);
  }
};
_js_mirrors.JsMirror[dart.implements] = () => [mirrors.Mirror];
_js_mirrors.JsCombinatorMirror = class JsCombinatorMirror extends _js_mirrors.JsMirror {
  get identifiers() {
    return ListOfSymbol()._check(this.noSuchMethod(new dart.InvocationImpl('identifiers', [], {isGetter: true})));
  }
  get isShow() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isShow', [], {isGetter: true})));
  }
  get isHide() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isHide', [], {isGetter: true})));
  }
};
_js_mirrors.JsCombinatorMirror[dart.implements] = () => [mirrors.CombinatorMirror];
_js_mirrors.JsDeclarationMirror = class JsDeclarationMirror extends _js_mirrors.JsMirror {
  get simpleName() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl('simpleName', [], {isGetter: true})));
  }
  get qualifiedName() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl('qualifiedName', [], {isGetter: true})));
  }
  get owner() {
    return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl('owner', [], {isGetter: true})));
  }
  get isPrivate() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isPrivate', [], {isGetter: true})));
  }
  get isTopLevel() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isTopLevel', [], {isGetter: true})));
  }
  get location() {
    return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl('location', [], {isGetter: true})));
  }
  get metadata() {
    return ListOfInstanceMirror()._check(this.noSuchMethod(new dart.InvocationImpl('metadata', [], {isGetter: true})));
  }
};
_js_mirrors.JsDeclarationMirror[dart.implements] = () => [mirrors.DeclarationMirror];
_js_mirrors.JsIsolateMirror = class JsIsolateMirror extends _js_mirrors.JsMirror {
  get debugName() {
    return core.String._check(this.noSuchMethod(new dart.InvocationImpl('debugName', [], {isGetter: true})));
  }
  get isCurrent() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isCurrent', [], {isGetter: true})));
  }
  get rootLibrary() {
    return mirrors.LibraryMirror._check(this.noSuchMethod(new dart.InvocationImpl('rootLibrary', [], {isGetter: true})));
  }
};
_js_mirrors.JsIsolateMirror[dart.implements] = () => [mirrors.IsolateMirror];
_js_mirrors.JsLibraryDependencyMirror = class JsLibraryDependencyMirror extends _js_mirrors.JsMirror {
  get isImport() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isImport', [], {isGetter: true})));
  }
  get isExport() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isExport', [], {isGetter: true})));
  }
  get sourceLibrary() {
    return mirrors.LibraryMirror._check(this.noSuchMethod(new dart.InvocationImpl('sourceLibrary', [], {isGetter: true})));
  }
  get targetLibrary() {
    return mirrors.LibraryMirror._check(this.noSuchMethod(new dart.InvocationImpl('targetLibrary', [], {isGetter: true})));
  }
  get prefix() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl('prefix', [], {isGetter: true})));
  }
  get combinators() {
    return ListOfCombinatorMirror()._check(this.noSuchMethod(new dart.InvocationImpl('combinators', [], {isGetter: true})));
  }
  get location() {
    return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl('location', [], {isGetter: true})));
  }
  get metadata() {
    return ListOfInstanceMirror()._check(this.noSuchMethod(new dart.InvocationImpl('metadata', [], {isGetter: true})));
  }
};
_js_mirrors.JsLibraryDependencyMirror[dart.implements] = () => [mirrors.LibraryDependencyMirror];
_js_mirrors.JsObjectMirror = class JsObjectMirror extends _js_mirrors.JsMirror {
  invoke(...args) {
    return mirrors.InstanceMirror._check(this.noSuchMethod(new dart.InvocationImpl('invoke', args, {isMethod: true})));
  }
  getField(...args) {
    return mirrors.InstanceMirror._check(this.noSuchMethod(new dart.InvocationImpl('getField', args, {isMethod: true})));
  }
  setField(...args) {
    return mirrors.InstanceMirror._check(this.noSuchMethod(new dart.InvocationImpl('setField', args, {isMethod: true})));
  }
};
_js_mirrors.JsObjectMirror[dart.implements] = () => [mirrors.ObjectMirror];
const _getAccessor = Symbol('_getAccessor');
_js_mirrors.JsInstanceMirror = class JsInstanceMirror extends _js_mirrors.JsObjectMirror {
  get hasReflectee() {
    return true;
  }
  get type() {
    if (this.reflectee == null) return mirrors.reflectClass(dart.wrapType(core.Null));
    return mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._runtimeType(this.reflectee))));
  }
  _(reflectee) {
    this.reflectee = reflectee;
  }
  ['=='](other) {
    return _js_mirrors.JsInstanceMirror.is(other) && core.identical(this.reflectee, other.reflectee);
  }
  get hashCode() {
    return (dart.notNull(core.identityHashCode(this.reflectee)) ^ 909522486) >>> 0;
  }
  [_getAccessor](reflectee, symbol, args, namedArgs) {
    if (args === void 0) args = null;
    if (namedArgs === void 0) namedArgs = null;
    return _js_mirrors._getMember(symbol);
  }
  getField(symbol) {
    let name = this[_getAccessor](this.reflectee, symbol);
    let field = _js_mirrors._dload(this.reflectee, core.String._check(name));
    return _js_mirrors.reflect(field);
  }
  setField(symbol, value) {
    let name = this[_getAccessor](this.reflectee, symbol);
    _js_mirrors._dput(this.reflectee, core.String._check(name), value);
    return _js_mirrors.reflect(value);
  }
  invoke(symbol, args, namedArgs) {
    if (namedArgs === void 0) namedArgs = null;
    let name = this[_getAccessor](this.reflectee, symbol, args, namedArgs);
    if (namedArgs != null) {
      args = core.List.from(args);
      args[dartx.add](_js_mirrors._toJsMap(namedArgs));
    }
    let result = _js_mirrors._dsend(this.reflectee, core.String._check(name), args);
    return _js_mirrors.reflect(result);
  }
  toString() {
    return dart.str`InstanceMirror on '${this.reflectee}'`;
  }
  delegate(...args) {
    return this.noSuchMethod(new dart.InvocationImpl('delegate', args, {isMethod: true}));
  }
};
dart.defineNamedConstructor(_js_mirrors.JsInstanceMirror, '_');
_js_mirrors.JsInstanceMirror[dart.implements] = () => [mirrors.InstanceMirror];
dart.setSignature(_js_mirrors.JsInstanceMirror, {
  constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsInstanceMirror, [dart.dynamic])}),
  fields: () => ({reflectee: dart.dynamic}),
  getters: () => ({
    hasReflectee: dart.definiteFunctionType(core.bool, []),
    type: dart.definiteFunctionType(mirrors.ClassMirror, [])
  }),
  methods: () => ({
    '==': dart.definiteFunctionType(core.bool, [core.Object]),
    [_getAccessor]: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.Symbol], [core.List, MapOfSymbol$dynamic()]),
    getField: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol]),
    setField: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.Object]),
    invoke: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.List], [MapOfSymbol$dynamic()])
  })
});
_js_mirrors.JsClosureMirror = class JsClosureMirror extends _js_mirrors.JsInstanceMirror {
  _(reflectee) {
    super._(reflectee);
  }
  apply(args, namedArgs) {
    if (namedArgs === void 0) namedArgs = null;
    if (namedArgs != null) {
      args = core.List.from(args);
      args[dartx.add](_js_mirrors._toJsMap(namedArgs));
    }
    let result = _js_mirrors._dcall(this.reflectee, args);
    return _js_mirrors.reflect(result);
  }
  delegate(...args) {
    return this.noSuchMethod(new dart.InvocationImpl('delegate', args, {isMethod: true}));
  }
  get function() {
    return mirrors.MethodMirror._check(this.noSuchMethod(new dart.InvocationImpl('function', [], {isGetter: true})));
  }
};
dart.defineNamedConstructor(_js_mirrors.JsClosureMirror, '_');
_js_mirrors.JsClosureMirror[dart.implements] = () => [mirrors.ClosureMirror];
dart.setSignature(_js_mirrors.JsClosureMirror, {
  constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsClosureMirror, [dart.dynamic])}),
  methods: () => ({apply: dart.definiteFunctionType(mirrors.InstanceMirror, [core.List], [MapOfSymbol$dynamic()])})
});
const _metadata = Symbol('_metadata');
const _cls = Symbol('_cls');
let const;
const _declarations = Symbol('_declarations');
const _raw = Symbol('_raw');
const _mixin = Symbol('_mixin');
const _typeArguments = Symbol('_typeArguments');
let const;
_js_mirrors.JsClassMirror = class JsClassMirror extends _js_mirrors.JsMirror {
  get metadata() {
    if (this[_metadata] == null) {
      let unwrapped = _js_mirrors._unwrap(this[_cls]);
      let fn = Object.hasOwnProperty.call(unwrapped, dart.metadata) ? unwrapped[dart.metadata] : null;
      this[_metadata] = fn == null ? const || (const = dart.constList([], mirrors.InstanceMirror)) : ListOfInstanceMirror().unmodifiable(core.Iterable._check(dart.dsend(dart.dcall(fn), 'map', dart.fn(i => _js_mirrors.reflect(i), dynamicToInstanceMirror()))));
    }
    return this[_metadata];
  }
  get declarations() {
    if (this[_declarations] == null) {
      this[_declarations] = MapOfSymbol$DeclarationMirror().new();
      let unwrapped = _js_mirrors._unwrap(this[_cls]);
      let constructors = _js_mirrors._getConstructors(unwrapped);
      constructors[dartx.forEach](dart.fn((symbol, ft) => {
        let name = _js_mirrors.getName(symbol);
        this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
      }, SymbolAnddynamicTovoid()));
      if (dart.test(constructors[dartx.isEmpty])) {
        let name = 'new';
        let ft = _js_mirrors._defaultConstructorType(_js_mirrors._unwrap(this[_cls]));
        let symbol = core.Symbol.new(name);
        this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
      }
      let fields = _js_mirrors._getFields(unwrapped);
      fields[dartx.forEach](dart.fn((symbol, t) => {
        let metadata = [];
        if (core.List.is(t)) {
          metadata = core.List._check(dart.dsend(dart.dsend(t, 'skip', 1), 'toList'));
          t = dart.dindex(t, 0);
        }
        this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(symbol, core.Type._check(_js_mirrors._wrap(t)), metadata));
      }, SymbolAnddynamicTovoid()));
      let methods = _js_mirrors._getMethods(unwrapped);
      methods[dartx.forEach](dart.fn((symbol, ft) => {
        let name = _js_mirrors.getName(symbol);
        this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
      }, SymbolAnddynamicTovoid()));
      let getters = _js_mirrors._getGetters(unwrapped);
      getters[dartx.forEach](dart.fn((symbol, ft) => {
        let name = _js_mirrors.getName(symbol);
        this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
      }, SymbolAnddynamicTovoid()));
      let setters = _js_mirrors._getSetters(unwrapped);
      setters[dartx.forEach](dart.fn((symbol, ft) => {
        let name = dart.notNull(_js_mirrors.getName(symbol)) + '=';
        symbol = new _internal.Symbol.es6(name, _js_mirrors._getESSymbol(symbol));
        this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
      }, SymbolAnddynamicTovoid()));
      let staticFields = _js_mirrors._getStaticFields(unwrapped);
      staticFields[dartx.forEach](dart.fn((symbol, t) => {
        let name = _js_mirrors.getName(symbol);
        let metadata = [];
        if (core.List.is(t)) {
          metadata = core.List._check(dart.dsend(dart.dsend(t, 'skip', 1), 'toList'));
          t = dart.dindex(t, 0);
        }
        this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(symbol, core.Type._check(_js_mirrors._wrap(t)), metadata));
      }, SymbolAnddynamicTovoid()));
      let statics = _js_mirrors._getStatics(unwrapped);
      statics[dartx.forEach](dart.fn((symbol, ft) => {
        let name = _js_mirrors.getName(symbol);
        this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
      }, SymbolAnddynamicTovoid()));
      let staticGetters = _js_mirrors._getStaticGetters(unwrapped);
      staticGetters[dartx.forEach](dart.fn((symbol, ft) => {
        let name = _js_mirrors.getName(symbol);
        this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
      }, SymbolAnddynamicTovoid()));
      let staticSetters = _js_mirrors._getStaticSetters(unwrapped);
      staticSetters[dartx.forEach](dart.fn((symbol, ft) => {
        let name = _js_mirrors.getName(symbol);
        this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
      }, SymbolAnddynamicTovoid()));
      this[_declarations] = MapOfSymbol$DeclarationMirror().unmodifiable(this[_declarations]);
    }
    return this[_declarations];
  }
  _(cls) {
    this[_cls] = cls;
    this[_raw] = _js_mirrors._getGenericClass(_js_mirrors._unwrap(cls));
    this.simpleName = core.Symbol.new(_js_mirrors._unwrap(cls).name);
    this[_mixin] = null;
    this[_typeArguments] = null;
    this[_metadata] = null;
    this[_declarations] = null;
    let typeArgs = _js_mirrors._getGenericArgs(_js_mirrors._unwrap(cls));
    if (typeArgs == null) {
      this[_typeArguments] = const || (const = dart.constList([], mirrors.TypeMirror));
    } else {
      this[_typeArguments] = ListOfTypeMirror().unmodifiable(core.Iterable._check(dart.dsend(typeArgs, 'map', dart.fn(t => _js_mirrors.reflectType(core.Type._check(_js_mirrors._wrap(t))), dynamicToTypeMirror()))));
    }
  }
  newInstance(constructorName, args, namedArgs) {
    if (namedArgs === void 0) namedArgs = null;
    let name = _js_mirrors.getName(constructorName);
    dart.assert(namedArgs == null || dart.test(namedArgs[dartx.isEmpty]));
    let instance = name == 'new' || name == '' ? new (_js_mirrors._unwrap(this[_cls]))(...args) : new (_js_mirrors._unwrap(this[_cls]))[name](...args);
    return _js_mirrors.reflect(instance);
  }
  getField(symbol) {
    let name = _js_mirrors.getName(symbol);
    return _js_mirrors.reflect(_js_mirrors._unwrap(this[_cls])[name]);
  }
  setField(symbol, value) {
    let name = _js_mirrors.getName(symbol);
    _js_mirrors._unwrap(this[_cls])[name] = value;
    return _js_mirrors.reflect(value);
  }
  invoke(symbol, args, namedArgs) {
    if (namedArgs === void 0) namedArgs = null;
    let name = _js_mirrors.getName(symbol);
    if (namedArgs != null) {
      args = core.List.from(args);
      args[dartx.add](_js_mirrors._toJsMap(namedArgs));
    }
    let result = _js_mirrors._unwrap(this[_cls])[name](...args);
    return _js_mirrors.reflect(result);
  }
  get superinterfaces() {
    let interfaceThunk = _js_mirrors._unwrap(this[_cls])[dart.implements];
    if (interfaceThunk == null) {
      return JSArrayOfClassMirror().of([]);
    } else {
      let interfaces = interfaceThunk();
      return ListOfClassMirror()._check(interfaces[dartx.map](mirrors.TypeMirror)(dart.fn(t => _js_mirrors.reflectType(t), TypeToTypeMirror()))[dartx.toList]());
    }
  }
  get hasReflectedType() {
    return true;
  }
  get reflectedType() {
    return this[_cls];
  }
  get isOriginalDeclaration() {
    return this[_raw] == null;
  }
  get typeArguments() {
    return this[_typeArguments];
  }
  get originalDeclaration() {
    if (this[_raw] == null) {
      return this;
    }
    dart.throw(new core.UnimplementedError("ClassMirror.originalDeclaration unimplemented"));
  }
  get superclass() {
    if (dart.equals(this[_cls], dart.wrapType(core.Object))) {
      return null;
    } else {
      return mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._wrap(_js_mirrors._unwrap(this[_cls]).__proto__))));
    }
  }
  get mixin() {
    if (this[_mixin] != null) {
      return this[_mixin];
    }
    let mixins = _js_mirrors._getMixins(_js_mirrors._unwrap(this[_cls]));
    if (mixins == null || dart.test(dart.dload(mixins, 'isEmpty'))) {
      this[_mixin] = this;
      return this[_mixin];
    }
    if (dart.test(dart.dsend(dart.dload(mixins, 'length'), '>', 1))) {
      dart.throw(new core.UnsupportedError("ClassMirror.mixin not yet supported for " + dart.str`classes (${this[_cls]}) with multiple mixins`));
    }
    this[_mixin] = mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._wrap(dart.dindex(mixins, 0)))));
    return this[_mixin];
  }
  toString() {
    return dart.str`ClassMirror on '${this[_cls]}'`;
  }
  get qualifiedName() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl('qualifiedName', [], {isGetter: true})));
  }
  get owner() {
    return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl('owner', [], {isGetter: true})));
  }
  get isPrivate() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isPrivate', [], {isGetter: true})));
  }
  get isTopLevel() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isTopLevel', [], {isGetter: true})));
  }
  get location() {
    return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl('location', [], {isGetter: true})));
  }
  isSubtypeOf(...args) {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isSubtypeOf', args, {isMethod: true})));
  }
  isAssignableTo(...args) {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isAssignableTo', args, {isMethod: true})));
  }
  get typeVariables() {
    return ListOfTypeVariableMirror()._check(this.noSuchMethod(new dart.InvocationImpl('typeVariables', [], {isGetter: true})));
  }
  isSubclassOf(...args) {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isSubclassOf', args, {isMethod: true})));
  }
  get isAbstract() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isAbstract', [], {isGetter: true})));
  }
  get instanceMembers() {
    return MapOfSymbol$MethodMirror()._check(this.noSuchMethod(new dart.InvocationImpl('instanceMembers', [], {isGetter: true})));
  }
  get staticMembers() {
    return MapOfSymbol$MethodMirror()._check(this.noSuchMethod(new dart.InvocationImpl('staticMembers', [], {isGetter: true})));
  }
};
dart.defineNamedConstructor(_js_mirrors.JsClassMirror, '_');
_js_mirrors.JsClassMirror[dart.implements] = () => [mirrors.ClassMirror];
dart.setSignature(_js_mirrors.JsClassMirror, {
  constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsClassMirror, [core.Type])}),
  fields: () => ({
    [_cls]: core.Type,
    simpleName: core.Symbol,
    [_raw]: dart.dynamic,
    [_mixin]: mirrors.ClassMirror,
    [_typeArguments]: ListOfTypeMirror(),
    [_metadata]: ListOfInstanceMirror(),
    [_declarations]: MapOfSymbol$DeclarationMirror()
  }),
  getters: () => ({
    metadata: dart.definiteFunctionType(core.List$(mirrors.InstanceMirror), []),
    declarations: dart.definiteFunctionType(core.Map$(core.Symbol, mirrors.DeclarationMirror), []),
    superinterfaces: dart.definiteFunctionType(core.List$(mirrors.ClassMirror), []),
    hasReflectedType: dart.definiteFunctionType(core.bool, []),
    reflectedType: dart.definiteFunctionType(core.Type, []),
    isOriginalDeclaration: dart.definiteFunctionType(core.bool, []),
    typeArguments: dart.definiteFunctionType(core.List$(mirrors.TypeMirror), []),
    originalDeclaration: dart.definiteFunctionType(mirrors.TypeMirror, []),
    superclass: dart.definiteFunctionType(mirrors.ClassMirror, []),
    mixin: dart.definiteFunctionType(mirrors.ClassMirror, [])
  }),
  methods: () => ({
    newInstance: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.List], [MapOfSymbol$dynamic()]),
    getField: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol]),
    setField: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.Object]),
    invoke: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.List], [MapOfSymbol$dynamic()])
  })
});
const _symbol = Symbol('_symbol');
const _name = Symbol('_name');
_js_mirrors.JsVariableMirror = class JsVariableMirror extends _js_mirrors.JsMirror {
  get simpleName() {
    return this[_symbol];
  }
  _(symbol, t, annotations) {
    this[_symbol] = symbol;
    this[_name] = _js_mirrors.getName(symbol);
    this.type = _js_mirrors.reflectType(t);
    this.metadata = ListOfInstanceMirror().unmodifiable(annotations[dartx.map](mirrors.InstanceMirror)(dart.fn(a => _js_mirrors.reflect(a), dynamicToInstanceMirror())));
    this.isStatic = false;
    this.isFinal = false;
  }
  toString() {
    return dart.str`VariableMirror on '${this[_name]}'`;
  }
  get qualifiedName() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl('qualifiedName', [], {isGetter: true})));
  }
  get owner() {
    return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl('owner', [], {isGetter: true})));
  }
  get isPrivate() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isPrivate', [], {isGetter: true})));
  }
  get isTopLevel() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isTopLevel', [], {isGetter: true})));
  }
  get location() {
    return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl('location', [], {isGetter: true})));
  }
  get isConst() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isConst', [], {isGetter: true})));
  }
};
dart.defineNamedConstructor(_js_mirrors.JsVariableMirror, '_');
_js_mirrors.JsVariableMirror[dart.implements] = () => [mirrors.VariableMirror];
dart.setSignature(_js_mirrors.JsVariableMirror, {
  constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsVariableMirror, [core.Symbol, core.Type, core.List])}),
  fields: () => ({
    [_symbol]: core.Symbol,
    [_name]: core.String,
    type: mirrors.TypeMirror,
    metadata: ListOfInstanceMirror(),
    isStatic: core.bool,
    isFinal: core.bool
  }),
  getters: () => ({simpleName: dart.definiteFunctionType(core.Symbol, [])})
});
_js_mirrors.JsParameterMirror = class JsParameterMirror extends _js_mirrors.JsVariableMirror {
  _(member, t, annotations) {
    super._(member, t, annotations);
  }
  toString() {
    return dart.str`ParameterMirror on '${this[_name]}'`;
  }
  get qualifiedName() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl('qualifiedName', [], {isGetter: true})));
  }
  get owner() {
    return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl('owner', [], {isGetter: true})));
  }
  get isPrivate() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isPrivate', [], {isGetter: true})));
  }
  get isTopLevel() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isTopLevel', [], {isGetter: true})));
  }
  get location() {
    return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl('location', [], {isGetter: true})));
  }
  get isConst() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isConst', [], {isGetter: true})));
  }
  get isOptional() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isOptional', [], {isGetter: true})));
  }
  get isNamed() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isNamed', [], {isGetter: true})));
  }
  get hasDefaultValue() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('hasDefaultValue', [], {isGetter: true})));
  }
  get defaultValue() {
    return mirrors.InstanceMirror._check(this.noSuchMethod(new dart.InvocationImpl('defaultValue', [], {isGetter: true})));
  }
};
dart.defineNamedConstructor(_js_mirrors.JsParameterMirror, '_');
_js_mirrors.JsParameterMirror[dart.implements] = () => [mirrors.ParameterMirror];
dart.setSignature(_js_mirrors.JsParameterMirror, {
  constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsParameterMirror, [core.Symbol, core.Type, core.List])})
});
const _params = Symbol('_params');
const _createParameterMirrorList = Symbol('_createParameterMirrorList');
let const;
let const;
let const;
_js_mirrors.JsMethodMirror = class JsMethodMirror extends _js_mirrors.JsMirror {
  get isSetter() {
    return this[_name][dartx.endsWith]('=');
  }
  get isPrivate() {
    return this[_name][dartx.startsWith]('_');
  }
  get simpleName() {
    return this[_symbol];
  }
  _constructor(cls, symbol, ftype) {
    this[_symbol] = symbol;
    this[_name] = _js_mirrors.getName(symbol);
    this.isConstructor = true;
    this.isStatic = false;
    this[_params] = null;
    this[_metadata] = null;
    this.isFinal = false;
    this[_createParameterMirrorList](ftype);
  }
  _instanceMethod(cls, symbol, ftype) {
    this[_symbol] = symbol;
    this[_name] = _js_mirrors.getName(symbol);
    this.isConstructor = false;
    this.isStatic = false;
    this[_params] = null;
    this[_metadata] = null;
    this.isFinal = false;
    this[_createParameterMirrorList](ftype);
  }
  _staticMethod(cls, symbol, ftype) {
    this[_symbol] = symbol;
    this[_name] = _js_mirrors.getName(symbol);
    this.isConstructor = false;
    this.isStatic = true;
    this[_params] = null;
    this[_metadata] = null;
    this.isFinal = false;
    this[_createParameterMirrorList](ftype);
  }
  get constructorName() {
    return dart.test(this.isConstructor) ? this[_symbol] : null;
  }
  get parameters() {
    return this[_params];
  }
  get metadata() {
    return this[_metadata];
  }
  [_createParameterMirrorList](ftype) {
    if (ftype == null) {
      this[_params] = const || (const = dart.constList([], mirrors.ParameterMirror));
      this[_metadata] = const || (const = dart.constList([], mirrors.InstanceMirror));
      return;
    }
    if (!core.Function.is(ftype) && core.List.is(ftype)) {
      this[_metadata] = ListOfInstanceMirror().unmodifiable(core.Iterable._check(dart.dsend(dart.dsend(ftype, 'skip', 1), 'map', dart.fn(a => _js_mirrors.reflect(a), dynamicToInstanceMirror()))));
      ftype = dart.dindex(ftype, 0);
    } else {
      this[_metadata] = const || (const = dart.constList([], mirrors.InstanceMirror));
    }
    if (typeof ftype == "function") {
      ftype = ftype.apply(null, JSArrayOfType().of([dart.dynamic, dart.dynamic, dart.dynamic]));
    }
    let args = core.List._check(dart.dload(ftype, 'args'));
    let opts = core.List._check(dart.dload(ftype, 'optionals'));
    let params = ListOfParameterMirror().new(dart.notNull(args[dartx.length]) + dart.notNull(opts[dartx.length]));
    for (let i = 0; i < dart.notNull(args[dartx.length]); ++i) {
      let type = args[dartx._get](i);
      let metadata = dart.dindex(dart.dload(ftype, 'metadata'), i);
      let param = new _js_mirrors.JsParameterMirror._(core.Symbol.new(''), core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
      params[dartx._set](i, param);
    }
    for (let i = 0; i < dart.notNull(opts[dartx.length]); ++i) {
      let type = opts[dartx._get](i);
      let metadata = dart.dindex(dart.dload(ftype, 'metadata'), dart.notNull(args[dartx.length]) + i);
      let param = new _js_mirrors.JsParameterMirror._(core.Symbol.new(''), core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
      params[dartx._set](i + dart.notNull(args[dartx.length]), param);
    }
    this[_params] = ListOfParameterMirror().unmodifiable(params);
  }
  toString() {
    return dart.str`MethodMirror on '${this[_name]}'`;
  }
  get qualifiedName() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl('qualifiedName', [], {isGetter: true})));
  }
  get owner() {
    return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl('owner', [], {isGetter: true})));
  }
  get isTopLevel() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isTopLevel', [], {isGetter: true})));
  }
  get location() {
    return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl('location', [], {isGetter: true})));
  }
  get returnType() {
    return mirrors.TypeMirror._check(this.noSuchMethod(new dart.InvocationImpl('returnType', [], {isGetter: true})));
  }
  get source() {
    return core.String._check(this.noSuchMethod(new dart.InvocationImpl('source', [], {isGetter: true})));
  }
  get isAbstract() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isAbstract', [], {isGetter: true})));
  }
  get isSynthetic() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isSynthetic', [], {isGetter: true})));
  }
  get isRegularMethod() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isRegularMethod', [], {isGetter: true})));
  }
  get isOperator() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isOperator', [], {isGetter: true})));
  }
  get isGetter() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isGetter', [], {isGetter: true})));
  }
  get isConstConstructor() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isConstConstructor', [], {isGetter: true})));
  }
  get isGenerativeConstructor() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isGenerativeConstructor', [], {isGetter: true})));
  }
  get isRedirectingConstructor() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isRedirectingConstructor', [], {isGetter: true})));
  }
  get isFactoryConstructor() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl('isFactoryConstructor', [], {isGetter: true})));
  }
};
dart.defineNamedConstructor(_js_mirrors.JsMethodMirror, '_constructor');
dart.defineNamedConstructor(_js_mirrors.JsMethodMirror, '_instanceMethod');
dart.defineNamedConstructor(_js_mirrors.JsMethodMirror, '_staticMethod');
_js_mirrors.JsMethodMirror[dart.implements] = () => [mirrors.MethodMirror];
dart.setSignature(_js_mirrors.JsMethodMirror, {
  constructors: () => ({
    _constructor: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic]),
    _instanceMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic]),
    _staticMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic])
  }),
  fields: () => ({
    [_symbol]: core.Symbol,
    [_name]: core.String,
    [_params]: ListOfParameterMirror(),
    [_metadata]: ListOfInstanceMirror(),
    isConstructor: core.bool,
    isStatic: core.bool,
    isFinal: core.bool
  }),
  getters: () => ({
    isSetter: dart.definiteFunctionType(core.bool, []),
    isPrivate: dart.definiteFunctionType(core.bool, []),
    simpleName: dart.definiteFunctionType(core.Symbol, []),
    constructorName: dart.definiteFunctionType(core.Symbol, []),
    parameters: dart.definiteFunctionType(core.List$(mirrors.ParameterMirror), []),
    metadata: dart.definiteFunctionType(core.List$(mirrors.InstanceMirror), [])
  }),
  methods: () => ({[_createParameterMirrorList]: dart.definiteFunctionType(dart.void, [dart.dynamic])})
});
_js_primitives.printString = function(string) {
  if (typeof dartPrint == "function") {
    dartPrint(string);
    return;
  }
  if (typeof console == "object" && typeof console.log != "undefined") {
    console.log(string);
    return;
  }
  if (typeof window == "object") {
    return;
  }
  if (typeof print == "function") {
    print(string);
    return;
  }
  throw "Unable to print message: " + String(string);
};
dart.lazyFn(_js_primitives.printString, () => StringTovoid());
_metadata.SupportedBrowser = class SupportedBrowser extends core.Object {
  new(browserName, minimumVersion) {
    if (minimumVersion === void 0) minimumVersion = null;
    this.browserName = browserName;
    this.minimumVersion = minimumVersion;
  }
};
dart.setSignature(_metadata.SupportedBrowser, {
  constructors: () => ({new: dart.definiteFunctionType(_metadata.SupportedBrowser, [core.String], [core.String])}),
  fields: () => ({
    browserName: core.String,
    minimumVersion: core.String
  }),
  sfields: () => ({
    CHROME: core.String,
    FIREFOX: core.String,
    IE: core.String,
    OPERA: core.String,
    SAFARI: core.String
  })
});
_metadata.SupportedBrowser.CHROME = "Chrome";
_metadata.SupportedBrowser.FIREFOX = "Firefox";
_metadata.SupportedBrowser.IE = "Internet Explorer";
_metadata.SupportedBrowser.OPERA = "Opera";
_metadata.SupportedBrowser.SAFARI = "Safari";
_metadata.Experimental = class Experimental extends core.Object {
  new() {
  }
};
dart.setSignature(_metadata.Experimental, {
  constructors: () => ({new: dart.definiteFunctionType(_metadata.Experimental, [])})
});
_metadata.DomName = class DomName extends core.Object {
  new(name) {
    this.name = name;
  }
};
dart.setSignature(_metadata.DomName, {
  constructors: () => ({new: dart.definiteFunctionType(_metadata.DomName, [core.String])}),
  fields: () => ({name: core.String})
});
_metadata.DocsEditable = class DocsEditable extends core.Object {
  new() {
  }
};
dart.setSignature(_metadata.DocsEditable, {
  constructors: () => ({new: dart.definiteFunctionType(_metadata.DocsEditable, [])})
});
_metadata.Unstable = class Unstable extends core.Object {
  new() {
  }
};
dart.setSignature(_metadata.Unstable, {
  constructors: () => ({new: dart.definiteFunctionType(_metadata.Unstable, [])})
});
dart.defineExtensionNames([
  'lengthInBytes',
  'runtimeType',
  'asUint8List',
  'asInt8List',
  'asUint8ClampedList',
  'asUint16List',
  'asInt16List',
  'asUint32List',
  'asInt32List',
  'asUint64List',
  'asInt64List',
  'asInt32x4List',
  'asFloat32List',
  'asFloat64List',
  'asFloat32x4List',
  'asFloat64x2List',
  'asByteData'
]);
_native_typed_data.NativeByteBuffer = class NativeByteBuffer extends core.Object {
  get [dartx.lengthInBytes]() {
    return this.byteLength;
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(typed_data.ByteBuffer);
  }
  [dartx.asUint8List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeUint8List.view(this, offsetInBytes, length);
  }
  [dartx.asInt8List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeInt8List.view(this, offsetInBytes, length);
  }
  [dartx.asUint8ClampedList](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeUint8ClampedList.view(this, offsetInBytes, length);
  }
  [dartx.asUint16List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeUint16List.view(this, offsetInBytes, length);
  }
  [dartx.asInt16List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeInt16List.view(this, offsetInBytes, length);
  }
  [dartx.asUint32List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeUint32List.view(this, offsetInBytes, length);
  }
  [dartx.asInt32List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeInt32List.view(this, offsetInBytes, length);
  }
  [dartx.asUint64List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    dart.throw(new core.UnsupportedError("Uint64List not supported by dart2js."));
  }
  [dartx.asInt64List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    dart.throw(new core.UnsupportedError("Int64List not supported by dart2js."));
  }
  [dartx.asInt32x4List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    let storage = _native_typed_data.NativeInt32List._check(this[dartx.asInt32List](offsetInBytes, length != null ? dart.notNull(length) * 4 : null));
    return new _native_typed_data.NativeInt32x4List._externalStorage(storage);
  }
  [dartx.asFloat32List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeFloat32List.view(this, offsetInBytes, length);
  }
  [dartx.asFloat64List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeFloat64List.view(this, offsetInBytes, length);
  }
  [dartx.asFloat32x4List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    let storage = _native_typed_data.NativeFloat32List._check(this[dartx.asFloat32List](offsetInBytes, length != null ? dart.notNull(length) * 4 : null));
    return new _native_typed_data.NativeFloat32x4List._externalStorage(storage);
  }
  [dartx.asFloat64x2List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    let storage = _native_typed_data.NativeFloat64List._check(this[dartx.asFloat64List](offsetInBytes, length != null ? dart.notNull(length) * 2 : null));
    return new _native_typed_data.NativeFloat64x2List._externalStorage(storage);
  }
  [dartx.asByteData](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeByteData.view(this, offsetInBytes, length);
  }
};
_native_typed_data.NativeByteBuffer[dart.implements] = () => [typed_data.ByteBuffer];
dart.setSignature(_native_typed_data.NativeByteBuffer, {
  getters: () => ({[dartx.lengthInBytes]: dart.definiteFunctionType(core.int, [])}),
  methods: () => ({
    [dartx.asUint8List]: dart.definiteFunctionType(typed_data.Uint8List, [], [core.int, core.int]),
    [dartx.asInt8List]: dart.definiteFunctionType(typed_data.Int8List, [], [core.int, core.int]),
    [dartx.asUint8ClampedList]: dart.definiteFunctionType(typed_data.Uint8ClampedList, [], [core.int, core.int]),
    [dartx.asUint16List]: dart.definiteFunctionType(typed_data.Uint16List, [], [core.int, core.int]),
    [dartx.asInt16List]: dart.definiteFunctionType(typed_data.Int16List, [], [core.int, core.int]),
    [dartx.asUint32List]: dart.definiteFunctionType(typed_data.Uint32List, [], [core.int, core.int]),
    [dartx.asInt32List]: dart.definiteFunctionType(typed_data.Int32List, [], [core.int, core.int]),
    [dartx.asUint64List]: dart.definiteFunctionType(typed_data.Uint64List, [], [core.int, core.int]),
    [dartx.asInt64List]: dart.definiteFunctionType(typed_data.Int64List, [], [core.int, core.int]),
    [dartx.asInt32x4List]: dart.definiteFunctionType(typed_data.Int32x4List, [], [core.int, core.int]),
    [dartx.asFloat32List]: dart.definiteFunctionType(typed_data.Float32List, [], [core.int, core.int]),
    [dartx.asFloat64List]: dart.definiteFunctionType(typed_data.Float64List, [], [core.int, core.int]),
    [dartx.asFloat32x4List]: dart.definiteFunctionType(typed_data.Float32x4List, [], [core.int, core.int]),
    [dartx.asFloat64x2List]: dart.definiteFunctionType(typed_data.Float64x2List, [], [core.int, core.int]),
    [dartx.asByteData]: dart.definiteFunctionType(typed_data.ByteData, [], [core.int, core.int])
  })
});
dart.registerExtension(dart.global.ArrayBuffer, _native_typed_data.NativeByteBuffer);
const _storage = Symbol('_storage');
typed_data.Float32x4 = class Float32x4 extends core.Object {
  static new(x, y, z, w) {
    return new _native_typed_data.NativeFloat32x4(x, y, z, w);
  }
  static splat(v) {
    return new _native_typed_data.NativeFloat32x4.splat(v);
  }
  static zero() {
    return new _native_typed_data.NativeFloat32x4.zero();
  }
  static fromInt32x4Bits(x) {
    return _native_typed_data.NativeFloat32x4.fromInt32x4Bits(x);
  }
  static fromFloat64x2(v) {
    return new _native_typed_data.NativeFloat32x4.fromFloat64x2(v);
  }
};
dart.setSignature(typed_data.Float32x4, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Float32x4, [core.double, core.double, core.double, core.double]),
    splat: dart.definiteFunctionType(typed_data.Float32x4, [core.double]),
    zero: dart.definiteFunctionType(typed_data.Float32x4, []),
    fromInt32x4Bits: dart.definiteFunctionType(typed_data.Float32x4, [typed_data.Int32x4]),
    fromFloat64x2: dart.definiteFunctionType(typed_data.Float32x4, [typed_data.Float64x2])
  }),
  sfields: () => ({
    XXXX: core.int,
    XXXY: core.int,
    XXXZ: core.int,
    XXXW: core.int,
    XXYX: core.int,
    XXYY: core.int,
    XXYZ: core.int,
    XXYW: core.int,
    XXZX: core.int,
    XXZY: core.int,
    XXZZ: core.int,
    XXZW: core.int,
    XXWX: core.int,
    XXWY: core.int,
    XXWZ: core.int,
    XXWW: core.int,
    XYXX: core.int,
    XYXY: core.int,
    XYXZ: core.int,
    XYXW: core.int,
    XYYX: core.int,
    XYYY: core.int,
    XYYZ: core.int,
    XYYW: core.int,
    XYZX: core.int,
    XYZY: core.int,
    XYZZ: core.int,
    XYZW: core.int,
    XYWX: core.int,
    XYWY: core.int,
    XYWZ: core.int,
    XYWW: core.int,
    XZXX: core.int,
    XZXY: core.int,
    XZXZ: core.int,
    XZXW: core.int,
    XZYX: core.int,
    XZYY: core.int,
    XZYZ: core.int,
    XZYW: core.int,
    XZZX: core.int,
    XZZY: core.int,
    XZZZ: core.int,
    XZZW: core.int,
    XZWX: core.int,
    XZWY: core.int,
    XZWZ: core.int,
    XZWW: core.int,
    XWXX: core.int,
    XWXY: core.int,
    XWXZ: core.int,
    XWXW: core.int,
    XWYX: core.int,
    XWYY: core.int,
    XWYZ: core.int,
    XWYW: core.int,
    XWZX: core.int,
    XWZY: core.int,
    XWZZ: core.int,
    XWZW: core.int,
    XWWX: core.int,
    XWWY: core.int,
    XWWZ: core.int,
    XWWW: core.int,
    YXXX: core.int,
    YXXY: core.int,
    YXXZ: core.int,
    YXXW: core.int,
    YXYX: core.int,
    YXYY: core.int,
    YXYZ: core.int,
    YXYW: core.int,
    YXZX: core.int,
    YXZY: core.int,
    YXZZ: core.int,
    YXZW: core.int,
    YXWX: core.int,
    YXWY: core.int,
    YXWZ: core.int,
    YXWW: core.int,
    YYXX: core.int,
    YYXY: core.int,
    YYXZ: core.int,
    YYXW: core.int,
    YYYX: core.int,
    YYYY: core.int,
    YYYZ: core.int,
    YYYW: core.int,
    YYZX: core.int,
    YYZY: core.int,
    YYZZ: core.int,
    YYZW: core.int,
    YYWX: core.int,
    YYWY: core.int,
    YYWZ: core.int,
    YYWW: core.int,
    YZXX: core.int,
    YZXY: core.int,
    YZXZ: core.int,
    YZXW: core.int,
    YZYX: core.int,
    YZYY: core.int,
    YZYZ: core.int,
    YZYW: core.int,
    YZZX: core.int,
    YZZY: core.int,
    YZZZ: core.int,
    YZZW: core.int,
    YZWX: core.int,
    YZWY: core.int,
    YZWZ: core.int,
    YZWW: core.int,
    YWXX: core.int,
    YWXY: core.int,
    YWXZ: core.int,
    YWXW: core.int,
    YWYX: core.int,
    YWYY: core.int,
    YWYZ: core.int,
    YWYW: core.int,
    YWZX: core.int,
    YWZY: core.int,
    YWZZ: core.int,
    YWZW: core.int,
    YWWX: core.int,
    YWWY: core.int,
    YWWZ: core.int,
    YWWW: core.int,
    ZXXX: core.int,
    ZXXY: core.int,
    ZXXZ: core.int,
    ZXXW: core.int,
    ZXYX: core.int,
    ZXYY: core.int,
    ZXYZ: core.int,
    ZXYW: core.int,
    ZXZX: core.int,
    ZXZY: core.int,
    ZXZZ: core.int,
    ZXZW: core.int,
    ZXWX: core.int,
    ZXWY: core.int,
    ZXWZ: core.int,
    ZXWW: core.int,
    ZYXX: core.int,
    ZYXY: core.int,
    ZYXZ: core.int,
    ZYXW: core.int,
    ZYYX: core.int,
    ZYYY: core.int,
    ZYYZ: core.int,
    ZYYW: core.int,
    ZYZX: core.int,
    ZYZY: core.int,
    ZYZZ: core.int,
    ZYZW: core.int,
    ZYWX: core.int,
    ZYWY: core.int,
    ZYWZ: core.int,
    ZYWW: core.int,
    ZZXX: core.int,
    ZZXY: core.int,
    ZZXZ: core.int,
    ZZXW: core.int,
    ZZYX: core.int,
    ZZYY: core.int,
    ZZYZ: core.int,
    ZZYW: core.int,
    ZZZX: core.int,
    ZZZY: core.int,
    ZZZZ: core.int,
    ZZZW: core.int,
    ZZWX: core.int,
    ZZWY: core.int,
    ZZWZ: core.int,
    ZZWW: core.int,
    ZWXX: core.int,
    ZWXY: core.int,
    ZWXZ: core.int,
    ZWXW: core.int,
    ZWYX: core.int,
    ZWYY: core.int,
    ZWYZ: core.int,
    ZWYW: core.int,
    ZWZX: core.int,
    ZWZY: core.int,
    ZWZZ: core.int,
    ZWZW: core.int,
    ZWWX: core.int,
    ZWWY: core.int,
    ZWWZ: core.int,
    ZWWW: core.int,
    WXXX: core.int,
    WXXY: core.int,
    WXXZ: core.int,
    WXXW: core.int,
    WXYX: core.int,
    WXYY: core.int,
    WXYZ: core.int,
    WXYW: core.int,
    WXZX: core.int,
    WXZY: core.int,
    WXZZ: core.int,
    WXZW: core.int,
    WXWX: core.int,
    WXWY: core.int,
    WXWZ: core.int,
    WXWW: core.int,
    WYXX: core.int,
    WYXY: core.int,
    WYXZ: core.int,
    WYXW: core.int,
    WYYX: core.int,
    WYYY: core.int,
    WYYZ: core.int,
    WYYW: core.int,
    WYZX: core.int,
    WYZY: core.int,
    WYZZ: core.int,
    WYZW: core.int,
    WYWX: core.int,
    WYWY: core.int,
    WYWZ: core.int,
    WYWW: core.int,
    WZXX: core.int,
    WZXY: core.int,
    WZXZ: core.int,
    WZXW: core.int,
    WZYX: core.int,
    WZYY: core.int,
    WZYZ: core.int,
    WZYW: core.int,
    WZZX: core.int,
    WZZY: core.int,
    WZZZ: core.int,
    WZZW: core.int,
    WZWX: core.int,
    WZWY: core.int,
    WZWZ: core.int,
    WZWW: core.int,
    WWXX: core.int,
    WWXY: core.int,
    WWXZ: core.int,
    WWXW: core.int,
    WWYX: core.int,
    WWYY: core.int,
    WWYZ: core.int,
    WWYW: core.int,
    WWZX: core.int,
    WWZY: core.int,
    WWZZ: core.int,
    WWZW: core.int,
    WWWX: core.int,
    WWWY: core.int,
    WWWZ: core.int,
    WWWW: core.int
  })
});
typed_data.Float32x4.XXXX = 0;
typed_data.Float32x4.XXXY = 64;
typed_data.Float32x4.XXXZ = 128;
typed_data.Float32x4.XXXW = 192;
typed_data.Float32x4.XXYX = 16;
typed_data.Float32x4.XXYY = 80;
typed_data.Float32x4.XXYZ = 144;
typed_data.Float32x4.XXYW = 208;
typed_data.Float32x4.XXZX = 32;
typed_data.Float32x4.XXZY = 96;
typed_data.Float32x4.XXZZ = 160;
typed_data.Float32x4.XXZW = 224;
typed_data.Float32x4.XXWX = 48;
typed_data.Float32x4.XXWY = 112;
typed_data.Float32x4.XXWZ = 176;
typed_data.Float32x4.XXWW = 240;
typed_data.Float32x4.XYXX = 4;
typed_data.Float32x4.XYXY = 68;
typed_data.Float32x4.XYXZ = 132;
typed_data.Float32x4.XYXW = 196;
typed_data.Float32x4.XYYX = 20;
typed_data.Float32x4.XYYY = 84;
typed_data.Float32x4.XYYZ = 148;
typed_data.Float32x4.XYYW = 212;
typed_data.Float32x4.XYZX = 36;
typed_data.Float32x4.XYZY = 100;
typed_data.Float32x4.XYZZ = 164;
typed_data.Float32x4.XYZW = 228;
typed_data.Float32x4.XYWX = 52;
typed_data.Float32x4.XYWY = 116;
typed_data.Float32x4.XYWZ = 180;
typed_data.Float32x4.XYWW = 244;
typed_data.Float32x4.XZXX = 8;
typed_data.Float32x4.XZXY = 72;
typed_data.Float32x4.XZXZ = 136;
typed_data.Float32x4.XZXW = 200;
typed_data.Float32x4.XZYX = 24;
typed_data.Float32x4.XZYY = 88;
typed_data.Float32x4.XZYZ = 152;
typed_data.Float32x4.XZYW = 216;
typed_data.Float32x4.XZZX = 40;
typed_data.Float32x4.XZZY = 104;
typed_data.Float32x4.XZZZ = 168;
typed_data.Float32x4.XZZW = 232;
typed_data.Float32x4.XZWX = 56;
typed_data.Float32x4.XZWY = 120;
typed_data.Float32x4.XZWZ = 184;
typed_data.Float32x4.XZWW = 248;
typed_data.Float32x4.XWXX = 12;
typed_data.Float32x4.XWXY = 76;
typed_data.Float32x4.XWXZ = 140;
typed_data.Float32x4.XWXW = 204;
typed_data.Float32x4.XWYX = 28;
typed_data.Float32x4.XWYY = 92;
typed_data.Float32x4.XWYZ = 156;
typed_data.Float32x4.XWYW = 220;
typed_data.Float32x4.XWZX = 44;
typed_data.Float32x4.XWZY = 108;
typed_data.Float32x4.XWZZ = 172;
typed_data.Float32x4.XWZW = 236;
typed_data.Float32x4.XWWX = 60;
typed_data.Float32x4.XWWY = 124;
typed_data.Float32x4.XWWZ = 188;
typed_data.Float32x4.XWWW = 252;
typed_data.Float32x4.YXXX = 1;
typed_data.Float32x4.YXXY = 65;
typed_data.Float32x4.YXXZ = 129;
typed_data.Float32x4.YXXW = 193;
typed_data.Float32x4.YXYX = 17;
typed_data.Float32x4.YXYY = 81;
typed_data.Float32x4.YXYZ = 145;
typed_data.Float32x4.YXYW = 209;
typed_data.Float32x4.YXZX = 33;
typed_data.Float32x4.YXZY = 97;
typed_data.Float32x4.YXZZ = 161;
typed_data.Float32x4.YXZW = 225;
typed_data.Float32x4.YXWX = 49;
typed_data.Float32x4.YXWY = 113;
typed_data.Float32x4.YXWZ = 177;
typed_data.Float32x4.YXWW = 241;
typed_data.Float32x4.YYXX = 5;
typed_data.Float32x4.YYXY = 69;
typed_data.Float32x4.YYXZ = 133;
typed_data.Float32x4.YYXW = 197;
typed_data.Float32x4.YYYX = 21;
typed_data.Float32x4.YYYY = 85;
typed_data.Float32x4.YYYZ = 149;
typed_data.Float32x4.YYYW = 213;
typed_data.Float32x4.YYZX = 37;
typed_data.Float32x4.YYZY = 101;
typed_data.Float32x4.YYZZ = 165;
typed_data.Float32x4.YYZW = 229;
typed_data.Float32x4.YYWX = 53;
typed_data.Float32x4.YYWY = 117;
typed_data.Float32x4.YYWZ = 181;
typed_data.Float32x4.YYWW = 245;
typed_data.Float32x4.YZXX = 9;
typed_data.Float32x4.YZXY = 73;
typed_data.Float32x4.YZXZ = 137;
typed_data.Float32x4.YZXW = 201;
typed_data.Float32x4.YZYX = 25;
typed_data.Float32x4.YZYY = 89;
typed_data.Float32x4.YZYZ = 153;
typed_data.Float32x4.YZYW = 217;
typed_data.Float32x4.YZZX = 41;
typed_data.Float32x4.YZZY = 105;
typed_data.Float32x4.YZZZ = 169;
typed_data.Float32x4.YZZW = 233;
typed_data.Float32x4.YZWX = 57;
typed_data.Float32x4.YZWY = 121;
typed_data.Float32x4.YZWZ = 185;
typed_data.Float32x4.YZWW = 249;
typed_data.Float32x4.YWXX = 13;
typed_data.Float32x4.YWXY = 77;
typed_data.Float32x4.YWXZ = 141;
typed_data.Float32x4.YWXW = 205;
typed_data.Float32x4.YWYX = 29;
typed_data.Float32x4.YWYY = 93;
typed_data.Float32x4.YWYZ = 157;
typed_data.Float32x4.YWYW = 221;
typed_data.Float32x4.YWZX = 45;
typed_data.Float32x4.YWZY = 109;
typed_data.Float32x4.YWZZ = 173;
typed_data.Float32x4.YWZW = 237;
typed_data.Float32x4.YWWX = 61;
typed_data.Float32x4.YWWY = 125;
typed_data.Float32x4.YWWZ = 189;
typed_data.Float32x4.YWWW = 253;
typed_data.Float32x4.ZXXX = 2;
typed_data.Float32x4.ZXXY = 66;
typed_data.Float32x4.ZXXZ = 130;
typed_data.Float32x4.ZXXW = 194;
typed_data.Float32x4.ZXYX = 18;
typed_data.Float32x4.ZXYY = 82;
typed_data.Float32x4.ZXYZ = 146;
typed_data.Float32x4.ZXYW = 210;
typed_data.Float32x4.ZXZX = 34;
typed_data.Float32x4.ZXZY = 98;
typed_data.Float32x4.ZXZZ = 162;
typed_data.Float32x4.ZXZW = 226;
typed_data.Float32x4.ZXWX = 50;
typed_data.Float32x4.ZXWY = 114;
typed_data.Float32x4.ZXWZ = 178;
typed_data.Float32x4.ZXWW = 242;
typed_data.Float32x4.ZYXX = 6;
typed_data.Float32x4.ZYXY = 70;
typed_data.Float32x4.ZYXZ = 134;
typed_data.Float32x4.ZYXW = 198;
typed_data.Float32x4.ZYYX = 22;
typed_data.Float32x4.ZYYY = 86;
typed_data.Float32x4.ZYYZ = 150;
typed_data.Float32x4.ZYYW = 214;
typed_data.Float32x4.ZYZX = 38;
typed_data.Float32x4.ZYZY = 102;
typed_data.Float32x4.ZYZZ = 166;
typed_data.Float32x4.ZYZW = 230;
typed_data.Float32x4.ZYWX = 54;
typed_data.Float32x4.ZYWY = 118;
typed_data.Float32x4.ZYWZ = 182;
typed_data.Float32x4.ZYWW = 246;
typed_data.Float32x4.ZZXX = 10;
typed_data.Float32x4.ZZXY = 74;
typed_data.Float32x4.ZZXZ = 138;
typed_data.Float32x4.ZZXW = 202;
typed_data.Float32x4.ZZYX = 26;
typed_data.Float32x4.ZZYY = 90;
typed_data.Float32x4.ZZYZ = 154;
typed_data.Float32x4.ZZYW = 218;
typed_data.Float32x4.ZZZX = 42;
typed_data.Float32x4.ZZZY = 106;
typed_data.Float32x4.ZZZZ = 170;
typed_data.Float32x4.ZZZW = 234;
typed_data.Float32x4.ZZWX = 58;
typed_data.Float32x4.ZZWY = 122;
typed_data.Float32x4.ZZWZ = 186;
typed_data.Float32x4.ZZWW = 250;
typed_data.Float32x4.ZWXX = 14;
typed_data.Float32x4.ZWXY = 78;
typed_data.Float32x4.ZWXZ = 142;
typed_data.Float32x4.ZWXW = 206;
typed_data.Float32x4.ZWYX = 30;
typed_data.Float32x4.ZWYY = 94;
typed_data.Float32x4.ZWYZ = 158;
typed_data.Float32x4.ZWYW = 222;
typed_data.Float32x4.ZWZX = 46;
typed_data.Float32x4.ZWZY = 110;
typed_data.Float32x4.ZWZZ = 174;
typed_data.Float32x4.ZWZW = 238;
typed_data.Float32x4.ZWWX = 62;
typed_data.Float32x4.ZWWY = 126;
typed_data.Float32x4.ZWWZ = 190;
typed_data.Float32x4.ZWWW = 254;
typed_data.Float32x4.WXXX = 3;
typed_data.Float32x4.WXXY = 67;
typed_data.Float32x4.WXXZ = 131;
typed_data.Float32x4.WXXW = 195;
typed_data.Float32x4.WXYX = 19;
typed_data.Float32x4.WXYY = 83;
typed_data.Float32x4.WXYZ = 147;
typed_data.Float32x4.WXYW = 211;
typed_data.Float32x4.WXZX = 35;
typed_data.Float32x4.WXZY = 99;
typed_data.Float32x4.WXZZ = 163;
typed_data.Float32x4.WXZW = 227;
typed_data.Float32x4.WXWX = 51;
typed_data.Float32x4.WXWY = 115;
typed_data.Float32x4.WXWZ = 179;
typed_data.Float32x4.WXWW = 243;
typed_data.Float32x4.WYXX = 7;
typed_data.Float32x4.WYXY = 71;
typed_data.Float32x4.WYXZ = 135;
typed_data.Float32x4.WYXW = 199;
typed_data.Float32x4.WYYX = 23;
typed_data.Float32x4.WYYY = 87;
typed_data.Float32x4.WYYZ = 151;
typed_data.Float32x4.WYYW = 215;
typed_data.Float32x4.WYZX = 39;
typed_data.Float32x4.WYZY = 103;
typed_data.Float32x4.WYZZ = 167;
typed_data.Float32x4.WYZW = 231;
typed_data.Float32x4.WYWX = 55;
typed_data.Float32x4.WYWY = 119;
typed_data.Float32x4.WYWZ = 183;
typed_data.Float32x4.WYWW = 247;
typed_data.Float32x4.WZXX = 11;
typed_data.Float32x4.WZXY = 75;
typed_data.Float32x4.WZXZ = 139;
typed_data.Float32x4.WZXW = 203;
typed_data.Float32x4.WZYX = 27;
typed_data.Float32x4.WZYY = 91;
typed_data.Float32x4.WZYZ = 155;
typed_data.Float32x4.WZYW = 219;
typed_data.Float32x4.WZZX = 43;
typed_data.Float32x4.WZZY = 107;
typed_data.Float32x4.WZZZ = 171;
typed_data.Float32x4.WZZW = 235;
typed_data.Float32x4.WZWX = 59;
typed_data.Float32x4.WZWY = 123;
typed_data.Float32x4.WZWZ = 187;
typed_data.Float32x4.WZWW = 251;
typed_data.Float32x4.WWXX = 15;
typed_data.Float32x4.WWXY = 79;
typed_data.Float32x4.WWXZ = 143;
typed_data.Float32x4.WWXW = 207;
typed_data.Float32x4.WWYX = 31;
typed_data.Float32x4.WWYY = 95;
typed_data.Float32x4.WWYZ = 159;
typed_data.Float32x4.WWYW = 223;
typed_data.Float32x4.WWZX = 47;
typed_data.Float32x4.WWZY = 111;
typed_data.Float32x4.WWZZ = 175;
typed_data.Float32x4.WWZW = 239;
typed_data.Float32x4.WWWX = 63;
typed_data.Float32x4.WWWY = 127;
typed_data.Float32x4.WWWZ = 191;
typed_data.Float32x4.WWWW = 255;
_native_typed_data.NativeFloat32x4List = class NativeFloat32x4List extends dart.mixin(core.Object, collection.ListMixin$(typed_data.Float32x4), _internal.FixedLengthListMixin$(typed_data.Float32x4)) {
  new(length) {
    this[_storage] = _native_typed_data.NativeFloat32List.new(dart.notNull(length) * 4);
  }
  _externalStorage(storage) {
    this[_storage] = storage;
  }
  _slowFromList(list) {
    this[_storage] = _native_typed_data.NativeFloat32List.new(dart.notNull(list[dartx.length]) * 4);
    for (let i = 0; i < dart.notNull(list[dartx.length]); i++) {
      let e = list[dartx._get](i);
      this[_storage][dartx._set](i * 4 + 0, e.x);
      this[_storage][dartx._set](i * 4 + 1, e.y);
      this[_storage][dartx._set](i * 4 + 2, e.z);
      this[_storage][dartx._set](i * 4 + 3, e.w);
    }
  }
  get runtimeType() {
    return dart.wrapType(typed_data.Float32x4List);
  }
  static fromList(list) {
    if (_native_typed_data.NativeFloat32x4List.is(list)) {
      return new _native_typed_data.NativeFloat32x4List._externalStorage(_native_typed_data.NativeFloat32List.fromList(list[_storage]));
    } else {
      return new _native_typed_data.NativeFloat32x4List._slowFromList(list);
    }
  }
  get buffer() {
    return this[_storage][dartx.buffer];
  }
  get lengthInBytes() {
    return this[_storage][dartx.lengthInBytes];
  }
  get offsetInBytes() {
    return this[_storage][dartx.offsetInBytes];
  }
  get elementSizeInBytes() {
    return typed_data.Float32x4List.BYTES_PER_ELEMENT;
  }
  get length() {
    return (dart.notNull(this[_storage][dartx.length]) / 4)[dartx.truncate]();
  }
  set length(value) {
    super.length = value;
  }
  _get(index) {
    _native_typed_data._checkValidIndex(index, this, this.length);
    let _x = this[_storage][dartx._get](dart.notNull(index) * 4 + 0);
    let _y = this[_storage][dartx._get](dart.notNull(index) * 4 + 1);
    let _z = this[_storage][dartx._get](dart.notNull(index) * 4 + 2);
    let _w = this[_storage][dartx._get](dart.notNull(index) * 4 + 3);
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  _set(index, value) {
    _native_typed_data._checkValidIndex(index, this, this.length);
    this[_storage][dartx._set](dart.notNull(index) * 4 + 0, value.x);
    this[_storage][dartx._set](dart.notNull(index) * 4 + 1, value.y);
    this[_storage][dartx._set](dart.notNull(index) * 4 + 2, value.z);
    this[_storage][dartx._set](dart.notNull(index) * 4 + 3, value.w);
    return value;
  }
  sublist(start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this.length);
    return new _native_typed_data.NativeFloat32x4List._externalStorage(_native_typed_data.NativeFloat32List._check(this[_storage][dartx.sublist](dart.notNull(start) * 4, dart.notNull(end) * 4)));
  }
};
dart.defineNamedConstructor(_native_typed_data.NativeFloat32x4List, '_externalStorage');
dart.defineNamedConstructor(_native_typed_data.NativeFloat32x4List, '_slowFromList');
_native_typed_data.NativeFloat32x4List[dart.implements] = () => [typed_data.Float32x4List];
dart.setSignature(_native_typed_data.NativeFloat32x4List, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeFloat32x4List, [core.int]),
    _externalStorage: dart.definiteFunctionType(_native_typed_data.NativeFloat32x4List, [_native_typed_data.NativeFloat32List]),
    _slowFromList: dart.definiteFunctionType(_native_typed_data.NativeFloat32x4List, [ListOfFloat32x4()]),
    fromList: dart.definiteFunctionType(_native_typed_data.NativeFloat32x4List, [ListOfFloat32x4()])
  }),
  fields: () => ({[_storage]: _native_typed_data.NativeFloat32List}),
  getters: () => ({
    buffer: dart.definiteFunctionType(typed_data.ByteBuffer, []),
    lengthInBytes: dart.definiteFunctionType(core.int, []),
    offsetInBytes: dart.definiteFunctionType(core.int, []),
    elementSizeInBytes: dart.definiteFunctionType(core.int, []),
    length: dart.definiteFunctionType(core.int, [])
  }),
  methods: () => ({
    _get: dart.definiteFunctionType(typed_data.Float32x4, [core.int]),
    _set: dart.definiteFunctionType(dart.void, [core.int, typed_data.Float32x4]),
    sublist: dart.definiteFunctionType(core.List$(typed_data.Float32x4), [core.int], [core.int])
  })
});
dart.defineExtensionMembers(_native_typed_data.NativeFloat32x4List, [
  '_get',
  '_set',
  'sublist',
  'buffer',
  'lengthInBytes',
  'offsetInBytes',
  'elementSizeInBytes',
  'length'
]);
typed_data.Int32x4 = class Int32x4 extends core.Object {
  static new(x, y, z, w) {
    return new _native_typed_data.NativeInt32x4(x, y, z, w);
  }
  static bool(x, y, z, w) {
    return new _native_typed_data.NativeInt32x4.bool(x, y, z, w);
  }
  static fromFloat32x4Bits(x) {
    return _native_typed_data.NativeInt32x4.fromFloat32x4Bits(x);
  }
};
dart.setSignature(typed_data.Int32x4, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Int32x4, [core.int, core.int, core.int, core.int]),
    bool: dart.definiteFunctionType(typed_data.Int32x4, [core.bool, core.bool, core.bool, core.bool]),
    fromFloat32x4Bits: dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Float32x4])
  }),
  sfields: () => ({
    XXXX: core.int,
    XXXY: core.int,
    XXXZ: core.int,
    XXXW: core.int,
    XXYX: core.int,
    XXYY: core.int,
    XXYZ: core.int,
    XXYW: core.int,
    XXZX: core.int,
    XXZY: core.int,
    XXZZ: core.int,
    XXZW: core.int,
    XXWX: core.int,
    XXWY: core.int,
    XXWZ: core.int,
    XXWW: core.int,
    XYXX: core.int,
    XYXY: core.int,
    XYXZ: core.int,
    XYXW: core.int,
    XYYX: core.int,
    XYYY: core.int,
    XYYZ: core.int,
    XYYW: core.int,
    XYZX: core.int,
    XYZY: core.int,
    XYZZ: core.int,
    XYZW: core.int,
    XYWX: core.int,
    XYWY: core.int,
    XYWZ: core.int,
    XYWW: core.int,
    XZXX: core.int,
    XZXY: core.int,
    XZXZ: core.int,
    XZXW: core.int,
    XZYX: core.int,
    XZYY: core.int,
    XZYZ: core.int,
    XZYW: core.int,
    XZZX: core.int,
    XZZY: core.int,
    XZZZ: core.int,
    XZZW: core.int,
    XZWX: core.int,
    XZWY: core.int,
    XZWZ: core.int,
    XZWW: core.int,
    XWXX: core.int,
    XWXY: core.int,
    XWXZ: core.int,
    XWXW: core.int,
    XWYX: core.int,
    XWYY: core.int,
    XWYZ: core.int,
    XWYW: core.int,
    XWZX: core.int,
    XWZY: core.int,
    XWZZ: core.int,
    XWZW: core.int,
    XWWX: core.int,
    XWWY: core.int,
    XWWZ: core.int,
    XWWW: core.int,
    YXXX: core.int,
    YXXY: core.int,
    YXXZ: core.int,
    YXXW: core.int,
    YXYX: core.int,
    YXYY: core.int,
    YXYZ: core.int,
    YXYW: core.int,
    YXZX: core.int,
    YXZY: core.int,
    YXZZ: core.int,
    YXZW: core.int,
    YXWX: core.int,
    YXWY: core.int,
    YXWZ: core.int,
    YXWW: core.int,
    YYXX: core.int,
    YYXY: core.int,
    YYXZ: core.int,
    YYXW: core.int,
    YYYX: core.int,
    YYYY: core.int,
    YYYZ: core.int,
    YYYW: core.int,
    YYZX: core.int,
    YYZY: core.int,
    YYZZ: core.int,
    YYZW: core.int,
    YYWX: core.int,
    YYWY: core.int,
    YYWZ: core.int,
    YYWW: core.int,
    YZXX: core.int,
    YZXY: core.int,
    YZXZ: core.int,
    YZXW: core.int,
    YZYX: core.int,
    YZYY: core.int,
    YZYZ: core.int,
    YZYW: core.int,
    YZZX: core.int,
    YZZY: core.int,
    YZZZ: core.int,
    YZZW: core.int,
    YZWX: core.int,
    YZWY: core.int,
    YZWZ: core.int,
    YZWW: core.int,
    YWXX: core.int,
    YWXY: core.int,
    YWXZ: core.int,
    YWXW: core.int,
    YWYX: core.int,
    YWYY: core.int,
    YWYZ: core.int,
    YWYW: core.int,
    YWZX: core.int,
    YWZY: core.int,
    YWZZ: core.int,
    YWZW: core.int,
    YWWX: core.int,
    YWWY: core.int,
    YWWZ: core.int,
    YWWW: core.int,
    ZXXX: core.int,
    ZXXY: core.int,
    ZXXZ: core.int,
    ZXXW: core.int,
    ZXYX: core.int,
    ZXYY: core.int,
    ZXYZ: core.int,
    ZXYW: core.int,
    ZXZX: core.int,
    ZXZY: core.int,
    ZXZZ: core.int,
    ZXZW: core.int,
    ZXWX: core.int,
    ZXWY: core.int,
    ZXWZ: core.int,
    ZXWW: core.int,
    ZYXX: core.int,
    ZYXY: core.int,
    ZYXZ: core.int,
    ZYXW: core.int,
    ZYYX: core.int,
    ZYYY: core.int,
    ZYYZ: core.int,
    ZYYW: core.int,
    ZYZX: core.int,
    ZYZY: core.int,
    ZYZZ: core.int,
    ZYZW: core.int,
    ZYWX: core.int,
    ZYWY: core.int,
    ZYWZ: core.int,
    ZYWW: core.int,
    ZZXX: core.int,
    ZZXY: core.int,
    ZZXZ: core.int,
    ZZXW: core.int,
    ZZYX: core.int,
    ZZYY: core.int,
    ZZYZ: core.int,
    ZZYW: core.int,
    ZZZX: core.int,
    ZZZY: core.int,
    ZZZZ: core.int,
    ZZZW: core.int,
    ZZWX: core.int,
    ZZWY: core.int,
    ZZWZ: core.int,
    ZZWW: core.int,
    ZWXX: core.int,
    ZWXY: core.int,
    ZWXZ: core.int,
    ZWXW: core.int,
    ZWYX: core.int,
    ZWYY: core.int,
    ZWYZ: core.int,
    ZWYW: core.int,
    ZWZX: core.int,
    ZWZY: core.int,
    ZWZZ: core.int,
    ZWZW: core.int,
    ZWWX: core.int,
    ZWWY: core.int,
    ZWWZ: core.int,
    ZWWW: core.int,
    WXXX: core.int,
    WXXY: core.int,
    WXXZ: core.int,
    WXXW: core.int,
    WXYX: core.int,
    WXYY: core.int,
    WXYZ: core.int,
    WXYW: core.int,
    WXZX: core.int,
    WXZY: core.int,
    WXZZ: core.int,
    WXZW: core.int,
    WXWX: core.int,
    WXWY: core.int,
    WXWZ: core.int,
    WXWW: core.int,
    WYXX: core.int,
    WYXY: core.int,
    WYXZ: core.int,
    WYXW: core.int,
    WYYX: core.int,
    WYYY: core.int,
    WYYZ: core.int,
    WYYW: core.int,
    WYZX: core.int,
    WYZY: core.int,
    WYZZ: core.int,
    WYZW: core.int,
    WYWX: core.int,
    WYWY: core.int,
    WYWZ: core.int,
    WYWW: core.int,
    WZXX: core.int,
    WZXY: core.int,
    WZXZ: core.int,
    WZXW: core.int,
    WZYX: core.int,
    WZYY: core.int,
    WZYZ: core.int,
    WZYW: core.int,
    WZZX: core.int,
    WZZY: core.int,
    WZZZ: core.int,
    WZZW: core.int,
    WZWX: core.int,
    WZWY: core.int,
    WZWZ: core.int,
    WZWW: core.int,
    WWXX: core.int,
    WWXY: core.int,
    WWXZ: core.int,
    WWXW: core.int,
    WWYX: core.int,
    WWYY: core.int,
    WWYZ: core.int,
    WWYW: core.int,
    WWZX: core.int,
    WWZY: core.int,
    WWZZ: core.int,
    WWZW: core.int,
    WWWX: core.int,
    WWWY: core.int,
    WWWZ: core.int,
    WWWW: core.int
  })
});
typed_data.Int32x4.XXXX = 0;
typed_data.Int32x4.XXXY = 64;
typed_data.Int32x4.XXXZ = 128;
typed_data.Int32x4.XXXW = 192;
typed_data.Int32x4.XXYX = 16;
typed_data.Int32x4.XXYY = 80;
typed_data.Int32x4.XXYZ = 144;
typed_data.Int32x4.XXYW = 208;
typed_data.Int32x4.XXZX = 32;
typed_data.Int32x4.XXZY = 96;
typed_data.Int32x4.XXZZ = 160;
typed_data.Int32x4.XXZW = 224;
typed_data.Int32x4.XXWX = 48;
typed_data.Int32x4.XXWY = 112;
typed_data.Int32x4.XXWZ = 176;
typed_data.Int32x4.XXWW = 240;
typed_data.Int32x4.XYXX = 4;
typed_data.Int32x4.XYXY = 68;
typed_data.Int32x4.XYXZ = 132;
typed_data.Int32x4.XYXW = 196;
typed_data.Int32x4.XYYX = 20;
typed_data.Int32x4.XYYY = 84;
typed_data.Int32x4.XYYZ = 148;
typed_data.Int32x4.XYYW = 212;
typed_data.Int32x4.XYZX = 36;
typed_data.Int32x4.XYZY = 100;
typed_data.Int32x4.XYZZ = 164;
typed_data.Int32x4.XYZW = 228;
typed_data.Int32x4.XYWX = 52;
typed_data.Int32x4.XYWY = 116;
typed_data.Int32x4.XYWZ = 180;
typed_data.Int32x4.XYWW = 244;
typed_data.Int32x4.XZXX = 8;
typed_data.Int32x4.XZXY = 72;
typed_data.Int32x4.XZXZ = 136;
typed_data.Int32x4.XZXW = 200;
typed_data.Int32x4.XZYX = 24;
typed_data.Int32x4.XZYY = 88;
typed_data.Int32x4.XZYZ = 152;
typed_data.Int32x4.XZYW = 216;
typed_data.Int32x4.XZZX = 40;
typed_data.Int32x4.XZZY = 104;
typed_data.Int32x4.XZZZ = 168;
typed_data.Int32x4.XZZW = 232;
typed_data.Int32x4.XZWX = 56;
typed_data.Int32x4.XZWY = 120;
typed_data.Int32x4.XZWZ = 184;
typed_data.Int32x4.XZWW = 248;
typed_data.Int32x4.XWXX = 12;
typed_data.Int32x4.XWXY = 76;
typed_data.Int32x4.XWXZ = 140;
typed_data.Int32x4.XWXW = 204;
typed_data.Int32x4.XWYX = 28;
typed_data.Int32x4.XWYY = 92;
typed_data.Int32x4.XWYZ = 156;
typed_data.Int32x4.XWYW = 220;
typed_data.Int32x4.XWZX = 44;
typed_data.Int32x4.XWZY = 108;
typed_data.Int32x4.XWZZ = 172;
typed_data.Int32x4.XWZW = 236;
typed_data.Int32x4.XWWX = 60;
typed_data.Int32x4.XWWY = 124;
typed_data.Int32x4.XWWZ = 188;
typed_data.Int32x4.XWWW = 252;
typed_data.Int32x4.YXXX = 1;
typed_data.Int32x4.YXXY = 65;
typed_data.Int32x4.YXXZ = 129;
typed_data.Int32x4.YXXW = 193;
typed_data.Int32x4.YXYX = 17;
typed_data.Int32x4.YXYY = 81;
typed_data.Int32x4.YXYZ = 145;
typed_data.Int32x4.YXYW = 209;
typed_data.Int32x4.YXZX = 33;
typed_data.Int32x4.YXZY = 97;
typed_data.Int32x4.YXZZ = 161;
typed_data.Int32x4.YXZW = 225;
typed_data.Int32x4.YXWX = 49;
typed_data.Int32x4.YXWY = 113;
typed_data.Int32x4.YXWZ = 177;
typed_data.Int32x4.YXWW = 241;
typed_data.Int32x4.YYXX = 5;
typed_data.Int32x4.YYXY = 69;
typed_data.Int32x4.YYXZ = 133;
typed_data.Int32x4.YYXW = 197;
typed_data.Int32x4.YYYX = 21;
typed_data.Int32x4.YYYY = 85;
typed_data.Int32x4.YYYZ = 149;
typed_data.Int32x4.YYYW = 213;
typed_data.Int32x4.YYZX = 37;
typed_data.Int32x4.YYZY = 101;
typed_data.Int32x4.YYZZ = 165;
typed_data.Int32x4.YYZW = 229;
typed_data.Int32x4.YYWX = 53;
typed_data.Int32x4.YYWY = 117;
typed_data.Int32x4.YYWZ = 181;
typed_data.Int32x4.YYWW = 245;
typed_data.Int32x4.YZXX = 9;
typed_data.Int32x4.YZXY = 73;
typed_data.Int32x4.YZXZ = 137;
typed_data.Int32x4.YZXW = 201;
typed_data.Int32x4.YZYX = 25;
typed_data.Int32x4.YZYY = 89;
typed_data.Int32x4.YZYZ = 153;
typed_data.Int32x4.YZYW = 217;
typed_data.Int32x4.YZZX = 41;
typed_data.Int32x4.YZZY = 105;
typed_data.Int32x4.YZZZ = 169;
typed_data.Int32x4.YZZW = 233;
typed_data.Int32x4.YZWX = 57;
typed_data.Int32x4.YZWY = 121;
typed_data.Int32x4.YZWZ = 185;
typed_data.Int32x4.YZWW = 249;
typed_data.Int32x4.YWXX = 13;
typed_data.Int32x4.YWXY = 77;
typed_data.Int32x4.YWXZ = 141;
typed_data.Int32x4.YWXW = 205;
typed_data.Int32x4.YWYX = 29;
typed_data.Int32x4.YWYY = 93;
typed_data.Int32x4.YWYZ = 157;
typed_data.Int32x4.YWYW = 221;
typed_data.Int32x4.YWZX = 45;
typed_data.Int32x4.YWZY = 109;
typed_data.Int32x4.YWZZ = 173;
typed_data.Int32x4.YWZW = 237;
typed_data.Int32x4.YWWX = 61;
typed_data.Int32x4.YWWY = 125;
typed_data.Int32x4.YWWZ = 189;
typed_data.Int32x4.YWWW = 253;
typed_data.Int32x4.ZXXX = 2;
typed_data.Int32x4.ZXXY = 66;
typed_data.Int32x4.ZXXZ = 130;
typed_data.Int32x4.ZXXW = 194;
typed_data.Int32x4.ZXYX = 18;
typed_data.Int32x4.ZXYY = 82;
typed_data.Int32x4.ZXYZ = 146;
typed_data.Int32x4.ZXYW = 210;
typed_data.Int32x4.ZXZX = 34;
typed_data.Int32x4.ZXZY = 98;
typed_data.Int32x4.ZXZZ = 162;
typed_data.Int32x4.ZXZW = 226;
typed_data.Int32x4.ZXWX = 50;
typed_data.Int32x4.ZXWY = 114;
typed_data.Int32x4.ZXWZ = 178;
typed_data.Int32x4.ZXWW = 242;
typed_data.Int32x4.ZYXX = 6;
typed_data.Int32x4.ZYXY = 70;
typed_data.Int32x4.ZYXZ = 134;
typed_data.Int32x4.ZYXW = 198;
typed_data.Int32x4.ZYYX = 22;
typed_data.Int32x4.ZYYY = 86;
typed_data.Int32x4.ZYYZ = 150;
typed_data.Int32x4.ZYYW = 214;
typed_data.Int32x4.ZYZX = 38;
typed_data.Int32x4.ZYZY = 102;
typed_data.Int32x4.ZYZZ = 166;
typed_data.Int32x4.ZYZW = 230;
typed_data.Int32x4.ZYWX = 54;
typed_data.Int32x4.ZYWY = 118;
typed_data.Int32x4.ZYWZ = 182;
typed_data.Int32x4.ZYWW = 246;
typed_data.Int32x4.ZZXX = 10;
typed_data.Int32x4.ZZXY = 74;
typed_data.Int32x4.ZZXZ = 138;
typed_data.Int32x4.ZZXW = 202;
typed_data.Int32x4.ZZYX = 26;
typed_data.Int32x4.ZZYY = 90;
typed_data.Int32x4.ZZYZ = 154;
typed_data.Int32x4.ZZYW = 218;
typed_data.Int32x4.ZZZX = 42;
typed_data.Int32x4.ZZZY = 106;
typed_data.Int32x4.ZZZZ = 170;
typed_data.Int32x4.ZZZW = 234;
typed_data.Int32x4.ZZWX = 58;
typed_data.Int32x4.ZZWY = 122;
typed_data.Int32x4.ZZWZ = 186;
typed_data.Int32x4.ZZWW = 250;
typed_data.Int32x4.ZWXX = 14;
typed_data.Int32x4.ZWXY = 78;
typed_data.Int32x4.ZWXZ = 142;
typed_data.Int32x4.ZWXW = 206;
typed_data.Int32x4.ZWYX = 30;
typed_data.Int32x4.ZWYY = 94;
typed_data.Int32x4.ZWYZ = 158;
typed_data.Int32x4.ZWYW = 222;
typed_data.Int32x4.ZWZX = 46;
typed_data.Int32x4.ZWZY = 110;
typed_data.Int32x4.ZWZZ = 174;
typed_data.Int32x4.ZWZW = 238;
typed_data.Int32x4.ZWWX = 62;
typed_data.Int32x4.ZWWY = 126;
typed_data.Int32x4.ZWWZ = 190;
typed_data.Int32x4.ZWWW = 254;
typed_data.Int32x4.WXXX = 3;
typed_data.Int32x4.WXXY = 67;
typed_data.Int32x4.WXXZ = 131;
typed_data.Int32x4.WXXW = 195;
typed_data.Int32x4.WXYX = 19;
typed_data.Int32x4.WXYY = 83;
typed_data.Int32x4.WXYZ = 147;
typed_data.Int32x4.WXYW = 211;
typed_data.Int32x4.WXZX = 35;
typed_data.Int32x4.WXZY = 99;
typed_data.Int32x4.WXZZ = 163;
typed_data.Int32x4.WXZW = 227;
typed_data.Int32x4.WXWX = 51;
typed_data.Int32x4.WXWY = 115;
typed_data.Int32x4.WXWZ = 179;
typed_data.Int32x4.WXWW = 243;
typed_data.Int32x4.WYXX = 7;
typed_data.Int32x4.WYXY = 71;
typed_data.Int32x4.WYXZ = 135;
typed_data.Int32x4.WYXW = 199;
typed_data.Int32x4.WYYX = 23;
typed_data.Int32x4.WYYY = 87;
typed_data.Int32x4.WYYZ = 151;
typed_data.Int32x4.WYYW = 215;
typed_data.Int32x4.WYZX = 39;
typed_data.Int32x4.WYZY = 103;
typed_data.Int32x4.WYZZ = 167;
typed_data.Int32x4.WYZW = 231;
typed_data.Int32x4.WYWX = 55;
typed_data.Int32x4.WYWY = 119;
typed_data.Int32x4.WYWZ = 183;
typed_data.Int32x4.WYWW = 247;
typed_data.Int32x4.WZXX = 11;
typed_data.Int32x4.WZXY = 75;
typed_data.Int32x4.WZXZ = 139;
typed_data.Int32x4.WZXW = 203;
typed_data.Int32x4.WZYX = 27;
typed_data.Int32x4.WZYY = 91;
typed_data.Int32x4.WZYZ = 155;
typed_data.Int32x4.WZYW = 219;
typed_data.Int32x4.WZZX = 43;
typed_data.Int32x4.WZZY = 107;
typed_data.Int32x4.WZZZ = 171;
typed_data.Int32x4.WZZW = 235;
typed_data.Int32x4.WZWX = 59;
typed_data.Int32x4.WZWY = 123;
typed_data.Int32x4.WZWZ = 187;
typed_data.Int32x4.WZWW = 251;
typed_data.Int32x4.WWXX = 15;
typed_data.Int32x4.WWXY = 79;
typed_data.Int32x4.WWXZ = 143;
typed_data.Int32x4.WWXW = 207;
typed_data.Int32x4.WWYX = 31;
typed_data.Int32x4.WWYY = 95;
typed_data.Int32x4.WWYZ = 159;
typed_data.Int32x4.WWYW = 223;
typed_data.Int32x4.WWZX = 47;
typed_data.Int32x4.WWZY = 111;
typed_data.Int32x4.WWZZ = 175;
typed_data.Int32x4.WWZW = 239;
typed_data.Int32x4.WWWX = 63;
typed_data.Int32x4.WWWY = 127;
typed_data.Int32x4.WWWZ = 191;
typed_data.Int32x4.WWWW = 255;
_native_typed_data.NativeInt32x4List = class NativeInt32x4List extends dart.mixin(core.Object, collection.ListMixin$(typed_data.Int32x4), _internal.FixedLengthListMixin$(typed_data.Int32x4)) {
  new(length) {
    this[_storage] = _native_typed_data.NativeInt32List.new(dart.notNull(length) * 4);
  }
  _externalStorage(storage) {
    this[_storage] = storage;
  }
  _slowFromList(list) {
    this[_storage] = _native_typed_data.NativeInt32List.new(dart.notNull(list[dartx.length]) * 4);
    for (let i = 0; i < dart.notNull(list[dartx.length]); i++) {
      let e = list[dartx._get](i);
      this[_storage][dartx._set](i * 4 + 0, e.x);
      this[_storage][dartx._set](i * 4 + 1, e.y);
      this[_storage][dartx._set](i * 4 + 2, e.z);
      this[_storage][dartx._set](i * 4 + 3, e.w);
    }
  }
  get runtimeType() {
    return dart.wrapType(typed_data.Int32x4List);
  }
  static fromList(list) {
    if (_native_typed_data.NativeInt32x4List.is(list)) {
      return new _native_typed_data.NativeInt32x4List._externalStorage(_native_typed_data.NativeInt32List.fromList(list[_storage]));
    } else {
      return new _native_typed_data.NativeInt32x4List._slowFromList(list);
    }
  }
  get buffer() {
    return this[_storage][dartx.buffer];
  }
  get lengthInBytes() {
    return this[_storage][dartx.lengthInBytes];
  }
  get offsetInBytes() {
    return this[_storage][dartx.offsetInBytes];
  }
  get elementSizeInBytes() {
    return typed_data.Int32x4List.BYTES_PER_ELEMENT;
  }
  get length() {
    return (dart.notNull(this[_storage][dartx.length]) / 4)[dartx.truncate]();
  }
  set length(value) {
    super.length = value;
  }
  _get(index) {
    _native_typed_data._checkValidIndex(index, this, this.length);
    let _x = this[_storage][dartx._get](dart.notNull(index) * 4 + 0);
    let _y = this[_storage][dartx._get](dart.notNull(index) * 4 + 1);
    let _z = this[_storage][dartx._get](dart.notNull(index) * 4 + 2);
    let _w = this[_storage][dartx._get](dart.notNull(index) * 4 + 3);
    return new _native_typed_data.NativeInt32x4._truncated(_x, _y, _z, _w);
  }
  _set(index, value) {
    _native_typed_data._checkValidIndex(index, this, this.length);
    this[_storage][dartx._set](dart.notNull(index) * 4 + 0, value.x);
    this[_storage][dartx._set](dart.notNull(index) * 4 + 1, value.y);
    this[_storage][dartx._set](dart.notNull(index) * 4 + 2, value.z);
    this[_storage][dartx._set](dart.notNull(index) * 4 + 3, value.w);
    return value;
  }
  sublist(start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this.length);
    return new _native_typed_data.NativeInt32x4List._externalStorage(typed_data.Int32List._check(this[_storage][dartx.sublist](dart.notNull(start) * 4, dart.notNull(end) * 4)));
  }
};
dart.defineNamedConstructor(_native_typed_data.NativeInt32x4List, '_externalStorage');
dart.defineNamedConstructor(_native_typed_data.NativeInt32x4List, '_slowFromList');
_native_typed_data.NativeInt32x4List[dart.implements] = () => [typed_data.Int32x4List];
dart.setSignature(_native_typed_data.NativeInt32x4List, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeInt32x4List, [core.int]),
    _externalStorage: dart.definiteFunctionType(_native_typed_data.NativeInt32x4List, [typed_data.Int32List]),
    _slowFromList: dart.definiteFunctionType(_native_typed_data.NativeInt32x4List, [ListOfInt32x4()]),
    fromList: dart.definiteFunctionType(_native_typed_data.NativeInt32x4List, [ListOfInt32x4()])
  }),
  fields: () => ({[_storage]: typed_data.Int32List}),
  getters: () => ({
    buffer: dart.definiteFunctionType(typed_data.ByteBuffer, []),
    lengthInBytes: dart.definiteFunctionType(core.int, []),
    offsetInBytes: dart.definiteFunctionType(core.int, []),
    elementSizeInBytes: dart.definiteFunctionType(core.int, []),
    length: dart.definiteFunctionType(core.int, [])
  }),
  methods: () => ({
    _get: dart.definiteFunctionType(typed_data.Int32x4, [core.int]),
    _set: dart.definiteFunctionType(dart.void, [core.int, typed_data.Int32x4]),
    sublist: dart.definiteFunctionType(core.List$(typed_data.Int32x4), [core.int], [core.int])
  })
});
dart.defineExtensionMembers(_native_typed_data.NativeInt32x4List, [
  '_get',
  '_set',
  'sublist',
  'buffer',
  'lengthInBytes',
  'offsetInBytes',
  'elementSizeInBytes',
  'length'
]);
typed_data.Float64x2 = class Float64x2 extends core.Object {
  static new(x, y) {
    return new _native_typed_data.NativeFloat64x2(x, y);
  }
  static splat(v) {
    return new _native_typed_data.NativeFloat64x2.splat(v);
  }
  static zero() {
    return new _native_typed_data.NativeFloat64x2.zero();
  }
  static fromFloat32x4(v) {
    return new _native_typed_data.NativeFloat64x2.fromFloat32x4(v);
  }
};
dart.setSignature(typed_data.Float64x2, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Float64x2, [core.double, core.double]),
    splat: dart.definiteFunctionType(typed_data.Float64x2, [core.double]),
    zero: dart.definiteFunctionType(typed_data.Float64x2, []),
    fromFloat32x4: dart.definiteFunctionType(typed_data.Float64x2, [typed_data.Float32x4])
  })
});
_native_typed_data.NativeFloat64x2List = class NativeFloat64x2List extends dart.mixin(core.Object, collection.ListMixin$(typed_data.Float64x2), _internal.FixedLengthListMixin$(typed_data.Float64x2)) {
  new(length) {
    this[_storage] = _native_typed_data.NativeFloat64List.new(dart.notNull(length) * 2);
  }
  _externalStorage(storage) {
    this[_storage] = storage;
  }
  _slowFromList(list) {
    this[_storage] = _native_typed_data.NativeFloat64List.new(dart.notNull(list[dartx.length]) * 2);
    for (let i = 0; i < dart.notNull(list[dartx.length]); i++) {
      let e = list[dartx._get](i);
      this[_storage][dartx._set](i * 2 + 0, e.x);
      this[_storage][dartx._set](i * 2 + 1, e.y);
    }
  }
  static fromList(list) {
    if (_native_typed_data.NativeFloat64x2List.is(list)) {
      return new _native_typed_data.NativeFloat64x2List._externalStorage(_native_typed_data.NativeFloat64List.fromList(list[_storage]));
    } else {
      return new _native_typed_data.NativeFloat64x2List._slowFromList(list);
    }
  }
  get runtimeType() {
    return dart.wrapType(typed_data.Float64x2List);
  }
  get buffer() {
    return this[_storage][dartx.buffer];
  }
  get lengthInBytes() {
    return this[_storage][dartx.lengthInBytes];
  }
  get offsetInBytes() {
    return this[_storage][dartx.offsetInBytes];
  }
  get elementSizeInBytes() {
    return typed_data.Float64x2List.BYTES_PER_ELEMENT;
  }
  get length() {
    return (dart.notNull(this[_storage][dartx.length]) / 2)[dartx.truncate]();
  }
  set length(value) {
    super.length = value;
  }
  _get(index) {
    _native_typed_data._checkValidIndex(index, this, this.length);
    let _x = this[_storage][dartx._get](dart.notNull(index) * 2 + 0);
    let _y = this[_storage][dartx._get](dart.notNull(index) * 2 + 1);
    return typed_data.Float64x2.new(_x, _y);
  }
  _set(index, value) {
    _native_typed_data._checkValidIndex(index, this, this.length);
    this[_storage][dartx._set](dart.notNull(index) * 2 + 0, value.x);
    this[_storage][dartx._set](dart.notNull(index) * 2 + 1, value.y);
    return value;
  }
  sublist(start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this.length);
    return new _native_typed_data.NativeFloat64x2List._externalStorage(_native_typed_data.NativeFloat64List._check(this[_storage][dartx.sublist](dart.notNull(start) * 2, dart.notNull(end) * 2)));
  }
};
dart.defineNamedConstructor(_native_typed_data.NativeFloat64x2List, '_externalStorage');
dart.defineNamedConstructor(_native_typed_data.NativeFloat64x2List, '_slowFromList');
_native_typed_data.NativeFloat64x2List[dart.implements] = () => [typed_data.Float64x2List];
dart.setSignature(_native_typed_data.NativeFloat64x2List, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeFloat64x2List, [core.int]),
    _externalStorage: dart.definiteFunctionType(_native_typed_data.NativeFloat64x2List, [_native_typed_data.NativeFloat64List]),
    _slowFromList: dart.definiteFunctionType(_native_typed_data.NativeFloat64x2List, [ListOfFloat64x2()]),
    fromList: dart.definiteFunctionType(_native_typed_data.NativeFloat64x2List, [ListOfFloat64x2()])
  }),
  fields: () => ({[_storage]: _native_typed_data.NativeFloat64List}),
  getters: () => ({
    buffer: dart.definiteFunctionType(typed_data.ByteBuffer, []),
    lengthInBytes: dart.definiteFunctionType(core.int, []),
    offsetInBytes: dart.definiteFunctionType(core.int, []),
    elementSizeInBytes: dart.definiteFunctionType(core.int, []),
    length: dart.definiteFunctionType(core.int, [])
  }),
  methods: () => ({
    _get: dart.definiteFunctionType(typed_data.Float64x2, [core.int]),
    _set: dart.definiteFunctionType(dart.void, [core.int, typed_data.Float64x2]),
    sublist: dart.definiteFunctionType(core.List$(typed_data.Float64x2), [core.int], [core.int])
  })
});
dart.defineExtensionMembers(_native_typed_data.NativeFloat64x2List, [
  '_get',
  '_set',
  'sublist',
  'buffer',
  'lengthInBytes',
  'offsetInBytes',
  'elementSizeInBytes',
  'length'
]);
const _invalidPosition = Symbol('_invalidPosition');
const _checkPosition = Symbol('_checkPosition');
dart.defineExtensionNames([
  'buffer',
  'lengthInBytes',
  'offsetInBytes',
  'elementSizeInBytes'
]);
_native_typed_data.NativeTypedData = class NativeTypedData extends core.Object {
  get [dartx.buffer]() {
    return this.buffer;
  }
  get [dartx.lengthInBytes]() {
    return this.byteLength;
  }
  get [dartx.offsetInBytes]() {
    return this.byteOffset;
  }
  get [dartx.elementSizeInBytes]() {
    return this.BYTES_PER_ELEMENT;
  }
  [_invalidPosition](position, length, name) {
    if (!(typeof position == 'number')) {
      dart.throw(new core.ArgumentError.value(position, name, 'Invalid list position'));
    } else {
      dart.throw(new core.RangeError.range(position, 0, length, name));
    }
  }
  [_checkPosition](position, length, name) {
    if (position >>> 0 !== position || position > dart.notNull(length)) {
      this[_invalidPosition](position, length, name);
    }
  }
};
_native_typed_data.NativeTypedData[dart.implements] = () => [typed_data.TypedData];
dart.setSignature(_native_typed_data.NativeTypedData, {
  getters: () => ({
    [dartx.buffer]: dart.definiteFunctionType(typed_data.ByteBuffer, []),
    [dartx.lengthInBytes]: dart.definiteFunctionType(core.int, []),
    [dartx.offsetInBytes]: dart.definiteFunctionType(core.int, []),
    [dartx.elementSizeInBytes]: dart.definiteFunctionType(core.int, [])
  }),
  methods: () => ({
    [_invalidPosition]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.String]),
    [_checkPosition]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.String])
  })
});
dart.registerExtension(dart.global.ArrayBufferView, _native_typed_data.NativeTypedData);
_native_typed_data._checkLength = function(length) {
  if (!(typeof length == 'number')) dart.throw(new core.ArgumentError(dart.str`Invalid length ${length}`));
  return core.int._check(length);
};
dart.fn(_native_typed_data._checkLength, dynamicToint());
_native_typed_data._checkViewArguments = function(buffer, offsetInBytes, length) {
  if (!_native_typed_data.NativeByteBuffer.is(buffer)) {
    dart.throw(new core.ArgumentError('Invalid view buffer'));
  }
  if (!(typeof offsetInBytes == 'number')) {
    dart.throw(new core.ArgumentError(dart.str`Invalid view offsetInBytes ${offsetInBytes}`));
  }
  if (length != null && !(typeof length == 'number')) {
    dart.throw(new core.ArgumentError(dart.str`Invalid view length ${length}`));
  }
};
dart.fn(_native_typed_data._checkViewArguments, dynamicAnddynamicAnddynamicTovoid());
_native_typed_data._ensureNativeList = function(list) {
  if (_interceptors.JSIndexable.is(list)) return list;
  let result = core.List.new(list[dartx.length]);
  for (let i = 0; i < dart.notNull(list[dartx.length]); i++) {
    result[dartx._set](i, list[dartx._get](i));
  }
  return result;
};
dart.lazyFn(_native_typed_data._ensureNativeList, () => ListToList());
const _getFloat32 = Symbol('_getFloat32');
const _getFloat64 = Symbol('_getFloat64');
const _getInt16 = Symbol('_getInt16');
const _getInt32 = Symbol('_getInt32');
const _getUint16 = Symbol('_getUint16');
const _getUint32 = Symbol('_getUint32');
const _setFloat32 = Symbol('_setFloat32');
const _setFloat64 = Symbol('_setFloat64');
const _setInt16 = Symbol('_setInt16');
const _setInt32 = Symbol('_setInt32');
const _setUint16 = Symbol('_setUint16');
const _setUint32 = Symbol('_setUint32');
dart.defineExtensionNames([
  'runtimeType',
  'elementSizeInBytes',
  'getFloat32',
  'getFloat64',
  'getInt16',
  'getInt32',
  'getInt64',
  'getInt8',
  'getUint16',
  'getUint32',
  'getUint64',
  'getUint8',
  'setFloat32',
  'setFloat64',
  'setInt16',
  'setInt32',
  'setInt64',
  'setInt8',
  'setUint16',
  'setUint32',
  'setUint64',
  'setUint8'
]);
_native_typed_data.NativeByteData = class NativeByteData extends _native_typed_data.NativeTypedData {
  static new(length) {
    return _native_typed_data.NativeByteData._create1(_native_typed_data._checkLength(length));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeByteData._create2(buffer, offsetInBytes) : _native_typed_data.NativeByteData._create3(buffer, offsetInBytes, length);
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(typed_data.ByteData);
  }
  get [dartx.elementSizeInBytes]() {
    return 1;
  }
  [dartx.getFloat32](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    return this[_getFloat32](byteOffset, dart.equals(typed_data.Endianness.LITTLE_ENDIAN, endian));
  }
  [_getFloat32](...args) {
    return this.getFloat32.apply(this, args);
  }
  [dartx.getFloat64](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    return this[_getFloat64](byteOffset, dart.equals(typed_data.Endianness.LITTLE_ENDIAN, endian));
  }
  [_getFloat64](...args) {
    return this.getFloat64.apply(this, args);
  }
  [dartx.getInt16](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    return this[_getInt16](byteOffset, dart.equals(typed_data.Endianness.LITTLE_ENDIAN, endian));
  }
  [_getInt16](...args) {
    return this.getInt16.apply(this, args);
  }
  [dartx.getInt32](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    return this[_getInt32](byteOffset, dart.equals(typed_data.Endianness.LITTLE_ENDIAN, endian));
  }
  [_getInt32](...args) {
    return this.getInt32.apply(this, args);
  }
  [dartx.getInt64](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    dart.throw(new core.UnsupportedError('Int64 accessor not supported by dart2js.'));
  }
  [dartx.getInt8](...args) {
    return this.getInt8.apply(this, args);
  }
  [dartx.getUint16](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    return this[_getUint16](byteOffset, dart.equals(typed_data.Endianness.LITTLE_ENDIAN, endian));
  }
  [_getUint16](...args) {
    return this.getUint16.apply(this, args);
  }
  [dartx.getUint32](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    return this[_getUint32](byteOffset, dart.equals(typed_data.Endianness.LITTLE_ENDIAN, endian));
  }
  [_getUint32](...args) {
    return this.getUint32.apply(this, args);
  }
  [dartx.getUint64](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    dart.throw(new core.UnsupportedError('Uint64 accessor not supported by dart2js.'));
  }
  [dartx.getUint8](...args) {
    return this.getUint8.apply(this, args);
  }
  [dartx.setFloat32](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    return this[_setFloat32](byteOffset, value, dart.equals(typed_data.Endianness.LITTLE_ENDIAN, endian));
  }
  [_setFloat32](...args) {
    return this.setFloat32.apply(this, args);
  }
  [dartx.setFloat64](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    return this[_setFloat64](byteOffset, value, dart.equals(typed_data.Endianness.LITTLE_ENDIAN, endian));
  }
  [_setFloat64](...args) {
    return this.setFloat64.apply(this, args);
  }
  [dartx.setInt16](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    return this[_setInt16](byteOffset, value, dart.equals(typed_data.Endianness.LITTLE_ENDIAN, endian));
  }
  [_setInt16](...args) {
    return this.setInt16.apply(this, args);
  }
  [dartx.setInt32](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    return this[_setInt32](byteOffset, value, dart.equals(typed_data.Endianness.LITTLE_ENDIAN, endian));
  }
  [_setInt32](...args) {
    return this.setInt32.apply(this, args);
  }
  [dartx.setInt64](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    dart.throw(new core.UnsupportedError('Int64 accessor not supported by dart2js.'));
  }
  [dartx.setInt8](...args) {
    return this.setInt8.apply(this, args);
  }
  [dartx.setUint16](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    return this[_setUint16](byteOffset, value, dart.equals(typed_data.Endianness.LITTLE_ENDIAN, endian));
  }
  [_setUint16](...args) {
    return this.setUint16.apply(this, args);
  }
  [dartx.setUint32](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    return this[_setUint32](byteOffset, value, dart.equals(typed_data.Endianness.LITTLE_ENDIAN, endian));
  }
  [_setUint32](...args) {
    return this.setUint32.apply(this, args);
  }
  [dartx.setUint64](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endianness.BIG_ENDIAN;
    dart.throw(new core.UnsupportedError('Uint64 accessor not supported by dart2js.'));
  }
  [dartx.setUint8](...args) {
    return this.setUint8.apply(this, args);
  }
  static _create1(arg) {
    return new DataView(new ArrayBuffer(arg));
  }
  static _create2(arg1, arg2) {
    return new DataView(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new DataView(arg1, arg2, arg3);
  }
};
_native_typed_data.NativeByteData[dart.implements] = () => [typed_data.ByteData];
dart.setSignature(_native_typed_data.NativeByteData, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeByteData, [core.int]),
    view: dart.definiteFunctionType(_native_typed_data.NativeByteData, [typed_data.ByteBuffer, core.int, core.int])
  }),
  methods: () => ({
    [dartx.getFloat32]: dart.definiteFunctionType(core.double, [core.int], [typed_data.Endianness]),
    [_getFloat32]: dart.definiteFunctionType(core.double, [core.int], [core.bool]),
    [dartx.getFloat64]: dart.definiteFunctionType(core.double, [core.int], [typed_data.Endianness]),
    [_getFloat64]: dart.definiteFunctionType(core.double, [core.int], [core.bool]),
    [dartx.getInt16]: dart.definiteFunctionType(core.int, [core.int], [typed_data.Endianness]),
    [_getInt16]: dart.definiteFunctionType(core.int, [core.int], [core.bool]),
    [dartx.getInt32]: dart.definiteFunctionType(core.int, [core.int], [typed_data.Endianness]),
    [_getInt32]: dart.definiteFunctionType(core.int, [core.int], [core.bool]),
    [dartx.getInt64]: dart.definiteFunctionType(core.int, [core.int], [typed_data.Endianness]),
    [dartx.getInt8]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.getUint16]: dart.definiteFunctionType(core.int, [core.int], [typed_data.Endianness]),
    [_getUint16]: dart.definiteFunctionType(core.int, [core.int], [core.bool]),
    [dartx.getUint32]: dart.definiteFunctionType(core.int, [core.int], [typed_data.Endianness]),
    [_getUint32]: dart.definiteFunctionType(core.int, [core.int], [core.bool]),
    [dartx.getUint64]: dart.definiteFunctionType(core.int, [core.int], [typed_data.Endianness]),
    [dartx.getUint8]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.setFloat32]: dart.definiteFunctionType(dart.void, [core.int, core.num], [typed_data.Endianness]),
    [_setFloat32]: dart.definiteFunctionType(dart.void, [core.int, core.num], [core.bool]),
    [dartx.setFloat64]: dart.definiteFunctionType(dart.void, [core.int, core.num], [typed_data.Endianness]),
    [_setFloat64]: dart.definiteFunctionType(dart.void, [core.int, core.num], [core.bool]),
    [dartx.setInt16]: dart.definiteFunctionType(dart.void, [core.int, core.int], [typed_data.Endianness]),
    [_setInt16]: dart.definiteFunctionType(dart.void, [core.int, core.int], [core.bool]),
    [dartx.setInt32]: dart.definiteFunctionType(dart.void, [core.int, core.int], [typed_data.Endianness]),
    [_setInt32]: dart.definiteFunctionType(dart.void, [core.int, core.int], [core.bool]),
    [dartx.setInt64]: dart.definiteFunctionType(dart.void, [core.int, core.int], [typed_data.Endianness]),
    [dartx.setInt8]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [dartx.setUint16]: dart.definiteFunctionType(dart.void, [core.int, core.int], [typed_data.Endianness]),
    [_setUint16]: dart.definiteFunctionType(dart.void, [core.int, core.int], [core.bool]),
    [dartx.setUint32]: dart.definiteFunctionType(dart.void, [core.int, core.int], [typed_data.Endianness]),
    [_setUint32]: dart.definiteFunctionType(dart.void, [core.int, core.int], [core.bool]),
    [dartx.setUint64]: dart.definiteFunctionType(dart.void, [core.int, core.int], [typed_data.Endianness]),
    [dartx.setUint8]: dart.definiteFunctionType(dart.void, [core.int, core.int])
  }),
  statics: () => ({
    _create1: dart.definiteFunctionType(_native_typed_data.NativeByteData, [dart.dynamic]),
    _create2: dart.definiteFunctionType(_native_typed_data.NativeByteData, [dart.dynamic, dart.dynamic]),
    _create3: dart.definiteFunctionType(_native_typed_data.NativeByteData, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create1', '_create2', '_create3']
});
dart.registerExtension(dart.global.DataView, _native_typed_data.NativeByteData);
const _setRangeFast = Symbol('_setRangeFast');
_native_typed_data.NativeTypedArray = class NativeTypedArray extends _native_typed_data.NativeTypedData {
  [_setRangeFast](start, end, source, skipCount) {
    let targetLength = this[dartx.length];
    this[_checkPosition](start, targetLength, "start");
    this[_checkPosition](end, targetLength, "end");
    if (dart.notNull(start) > dart.notNull(end)) dart.throw(new core.RangeError.range(start, 0, end));
    let count = dart.notNull(end) - dart.notNull(start);
    if (dart.notNull(skipCount) < 0) dart.throw(new core.ArgumentError(skipCount));
    let sourceLength = source[dartx.length];
    if (dart.notNull(sourceLength) - dart.notNull(skipCount) < count) {
      dart.throw(new core.StateError('Not enough elements'));
    }
    if (skipCount != 0 || sourceLength != count) {
      source = source.subarray(skipCount, dart.notNull(skipCount) + count);
    }
    this.set(source, start);
  }
};
_native_typed_data.NativeTypedArray[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior];
dart.setSignature(_native_typed_data.NativeTypedArray, {
  methods: () => ({[_setRangeFast]: dart.definiteFunctionType(dart.void, [core.int, core.int, _native_typed_data.NativeTypedArray, core.int])})
});
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'setRange'
]);
_native_typed_data.NativeTypedArrayOfDouble = class NativeTypedArrayOfDouble extends dart.mixin(_native_typed_data.NativeTypedArray, collection.ListMixin$(core.double), _internal.FixedLengthListMixin$(core.double)) {
  get length() {
    return this.length;
  }
  set length(value) {
    super.length = value;
  }
  _get(index) {
    _native_typed_data._checkValidIndex(index, this, this[dartx.length]);
    return this[index];
  }
  _set(index, value) {
    _native_typed_data._checkValidIndex(index, this, this[dartx.length]);
    this[index] = value;
    return value;
  }
  setRange(start, end, iterable, skipCount) {
    if (skipCount === void 0) skipCount = 0;
    if (_native_typed_data.NativeTypedArrayOfDouble.is(iterable)) {
      this[_setRangeFast](start, end, iterable, skipCount);
      return;
    }
    super[dartx.setRange](start, end, iterable, skipCount);
  }
};
dart.setSignature(_native_typed_data.NativeTypedArrayOfDouble, {
  getters: () => ({length: dart.definiteFunctionType(core.int, [])}),
  methods: () => ({
    _get: dart.definiteFunctionType(core.double, [core.int]),
    _set: dart.definiteFunctionType(dart.void, [core.int, core.num]),
    setRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfdouble()], [core.int])
  })
});
dart.defineExtensionMembers(_native_typed_data.NativeTypedArrayOfDouble, ['_get', '_set', 'setRange', 'length']);
dart.defineExtensionNames([
  'length',
  '_set',
  'setRange'
]);
_native_typed_data.NativeTypedArrayOfInt = class NativeTypedArrayOfInt extends dart.mixin(_native_typed_data.NativeTypedArray, collection.ListMixin$(core.int), _internal.FixedLengthListMixin$(core.int)) {
  get length() {
    return this.length;
  }
  set length(value) {
    super.length = value;
  }
  _set(index, value) {
    _native_typed_data._checkValidIndex(index, this, this[dartx.length]);
    this[index] = value;
    return value;
  }
  setRange(start, end, iterable, skipCount) {
    if (skipCount === void 0) skipCount = 0;
    if (_native_typed_data.NativeTypedArrayOfInt.is(iterable)) {
      this[_setRangeFast](start, end, iterable, skipCount);
      return;
    }
    super[dartx.setRange](start, end, iterable, skipCount);
  }
};
_native_typed_data.NativeTypedArrayOfInt[dart.implements] = () => [ListOfint()];
dart.setSignature(_native_typed_data.NativeTypedArrayOfInt, {
  getters: () => ({length: dart.definiteFunctionType(core.int, [])}),
  methods: () => ({
    _set: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    setRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfint()], [core.int])
  })
});
dart.defineExtensionMembers(_native_typed_data.NativeTypedArrayOfInt, ['_set', 'setRange', 'length']);
dart.defineExtensionNames([
  'runtimeType',
  'sublist'
]);
_native_typed_data.NativeFloat32List = class NativeFloat32List extends _native_typed_data.NativeTypedArrayOfDouble {
  static new(length) {
    return _native_typed_data.NativeFloat32List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeFloat32List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeFloat32List._create2(buffer, offsetInBytes) : _native_typed_data.NativeFloat32List._create3(buffer, offsetInBytes, length);
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(typed_data.Float32List);
  }
  [dartx.sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[dartx.length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeFloat32List._create1(source);
  }
  static _create1(arg) {
    return new Float32Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Float32Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Float32Array(arg1, arg2, arg3);
  }
};
_native_typed_data.NativeFloat32List[dart.implements] = () => [typed_data.Float32List];
dart.setSignature(_native_typed_data.NativeFloat32List, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeFloat32List, [core.int]),
    fromList: dart.definiteFunctionType(_native_typed_data.NativeFloat32List, [ListOfdouble()]),
    view: dart.definiteFunctionType(_native_typed_data.NativeFloat32List, [typed_data.ByteBuffer, core.int, core.int])
  }),
  methods: () => ({[dartx.sublist]: dart.definiteFunctionType(core.List$(core.double), [core.int], [core.int])}),
  statics: () => ({
    _create1: dart.definiteFunctionType(_native_typed_data.NativeFloat32List, [dart.dynamic]),
    _create2: dart.definiteFunctionType(_native_typed_data.NativeFloat32List, [dart.dynamic, dart.dynamic]),
    _create3: dart.definiteFunctionType(_native_typed_data.NativeFloat32List, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create1', '_create2', '_create3']
});
dart.registerExtension(dart.global.Float32Array, _native_typed_data.NativeFloat32List);
dart.defineExtensionNames([
  'runtimeType',
  'sublist'
]);
_native_typed_data.NativeFloat64List = class NativeFloat64List extends _native_typed_data.NativeTypedArrayOfDouble {
  static new(length) {
    return _native_typed_data.NativeFloat64List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeFloat64List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeFloat64List._create2(buffer, offsetInBytes) : _native_typed_data.NativeFloat64List._create3(buffer, offsetInBytes, length);
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(typed_data.Float64List);
  }
  [dartx.sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[dartx.length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeFloat64List._create1(source);
  }
  static _create1(arg) {
    return new Float64Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Float64Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Float64Array(arg1, arg2, arg3);
  }
};
_native_typed_data.NativeFloat64List[dart.implements] = () => [typed_data.Float64List];
dart.setSignature(_native_typed_data.NativeFloat64List, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeFloat64List, [core.int]),
    fromList: dart.definiteFunctionType(_native_typed_data.NativeFloat64List, [ListOfdouble()]),
    view: dart.definiteFunctionType(_native_typed_data.NativeFloat64List, [typed_data.ByteBuffer, core.int, core.int])
  }),
  methods: () => ({[dartx.sublist]: dart.definiteFunctionType(core.List$(core.double), [core.int], [core.int])}),
  statics: () => ({
    _create1: dart.definiteFunctionType(_native_typed_data.NativeFloat64List, [dart.dynamic]),
    _create2: dart.definiteFunctionType(_native_typed_data.NativeFloat64List, [dart.dynamic, dart.dynamic]),
    _create3: dart.definiteFunctionType(_native_typed_data.NativeFloat64List, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create1', '_create2', '_create3']
});
dart.registerExtension(dart.global.Float64Array, _native_typed_data.NativeFloat64List);
dart.defineExtensionNames([
  'runtimeType',
  '_get',
  'sublist'
]);
_native_typed_data.NativeInt16List = class NativeInt16List extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeInt16List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt16List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeInt16List._create2(buffer, offsetInBytes) : _native_typed_data.NativeInt16List._create3(buffer, offsetInBytes, length);
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(typed_data.Int16List);
  }
  [dartx._get](index) {
    _native_typed_data._checkValidIndex(index, this, this[dartx.length]);
    return this[index];
  }
  [dartx.sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[dartx.length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeInt16List._create1(source);
  }
  static _create1(arg) {
    return new Int16Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Int16Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Int16Array(arg1, arg2, arg3);
  }
};
_native_typed_data.NativeInt16List[dart.implements] = () => [typed_data.Int16List];
dart.setSignature(_native_typed_data.NativeInt16List, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeInt16List, [core.int]),
    fromList: dart.definiteFunctionType(_native_typed_data.NativeInt16List, [ListOfint()]),
    view: dart.definiteFunctionType(_native_typed_data.NativeInt16List, [_native_typed_data.NativeByteBuffer, core.int, core.int])
  }),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.sublist]: dart.definiteFunctionType(core.List$(core.int), [core.int], [core.int])
  }),
  statics: () => ({
    _create1: dart.definiteFunctionType(_native_typed_data.NativeInt16List, [dart.dynamic]),
    _create2: dart.definiteFunctionType(_native_typed_data.NativeInt16List, [dart.dynamic, dart.dynamic]),
    _create3: dart.definiteFunctionType(_native_typed_data.NativeInt16List, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create1', '_create2', '_create3']
});
dart.registerExtension(dart.global.Int16Array, _native_typed_data.NativeInt16List);
dart.defineExtensionNames([
  'runtimeType',
  '_get',
  'sublist'
]);
_native_typed_data.NativeInt32List = class NativeInt32List extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeInt32List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt32List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeInt32List._create2(buffer, offsetInBytes) : _native_typed_data.NativeInt32List._create3(buffer, offsetInBytes, length);
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(typed_data.Int32List);
  }
  [dartx._get](index) {
    _native_typed_data._checkValidIndex(index, this, this[dartx.length]);
    return this[index];
  }
  [dartx.sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[dartx.length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeInt32List._create1(source);
  }
  static _create1(arg) {
    return new Int32Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Int32Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Int32Array(arg1, arg2, arg3);
  }
};
_native_typed_data.NativeInt32List[dart.implements] = () => [typed_data.Int32List];
dart.setSignature(_native_typed_data.NativeInt32List, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeInt32List, [core.int]),
    fromList: dart.definiteFunctionType(_native_typed_data.NativeInt32List, [ListOfint()]),
    view: dart.definiteFunctionType(_native_typed_data.NativeInt32List, [typed_data.ByteBuffer, core.int, core.int])
  }),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.sublist]: dart.definiteFunctionType(core.List$(core.int), [core.int], [core.int])
  }),
  statics: () => ({
    _create1: dart.definiteFunctionType(_native_typed_data.NativeInt32List, [dart.dynamic]),
    _create2: dart.definiteFunctionType(_native_typed_data.NativeInt32List, [dart.dynamic, dart.dynamic]),
    _create3: dart.definiteFunctionType(_native_typed_data.NativeInt32List, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create1', '_create2', '_create3']
});
dart.registerExtension(dart.global.Int32Array, _native_typed_data.NativeInt32List);
dart.defineExtensionNames([
  'runtimeType',
  '_get',
  'sublist'
]);
_native_typed_data.NativeInt8List = class NativeInt8List extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeInt8List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt8List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return _native_typed_data.NativeInt8List._check(length == null ? _native_typed_data.NativeInt8List._create2(buffer, offsetInBytes) : _native_typed_data.NativeInt8List._create3(buffer, offsetInBytes, length));
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(typed_data.Int8List);
  }
  [dartx._get](index) {
    _native_typed_data._checkValidIndex(index, this, this[dartx.length]);
    return this[index];
  }
  [dartx.sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[dartx.length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeInt8List._create1(source);
  }
  static _create1(arg) {
    return new Int8Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Int8Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Int8Array(arg1, arg2, arg3);
  }
};
_native_typed_data.NativeInt8List[dart.implements] = () => [typed_data.Int8List];
dart.setSignature(_native_typed_data.NativeInt8List, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeInt8List, [core.int]),
    fromList: dart.definiteFunctionType(_native_typed_data.NativeInt8List, [ListOfint()]),
    view: dart.definiteFunctionType(_native_typed_data.NativeInt8List, [typed_data.ByteBuffer, core.int, core.int])
  }),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.sublist]: dart.definiteFunctionType(core.List$(core.int), [core.int], [core.int])
  }),
  statics: () => ({
    _create1: dart.definiteFunctionType(_native_typed_data.NativeInt8List, [dart.dynamic]),
    _create2: dart.definiteFunctionType(_native_typed_data.NativeInt8List, [dart.dynamic, dart.dynamic]),
    _create3: dart.definiteFunctionType(typed_data.Int8List, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create1', '_create2', '_create3']
});
dart.registerExtension(dart.global.Int8Array, _native_typed_data.NativeInt8List);
dart.defineExtensionNames([
  'runtimeType',
  '_get',
  'sublist'
]);
_native_typed_data.NativeUint16List = class NativeUint16List extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeUint16List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(list) {
    return _native_typed_data.NativeUint16List._create1(_native_typed_data._ensureNativeList(list));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeUint16List._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint16List._create3(buffer, offsetInBytes, length);
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(typed_data.Uint16List);
  }
  [dartx._get](index) {
    _native_typed_data._checkValidIndex(index, this, this[dartx.length]);
    return this[index];
  }
  [dartx.sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[dartx.length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeUint16List._create1(source);
  }
  static _create1(arg) {
    return new Uint16Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Uint16Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Uint16Array(arg1, arg2, arg3);
  }
};
_native_typed_data.NativeUint16List[dart.implements] = () => [typed_data.Uint16List];
dart.setSignature(_native_typed_data.NativeUint16List, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeUint16List, [core.int]),
    fromList: dart.definiteFunctionType(_native_typed_data.NativeUint16List, [ListOfint()]),
    view: dart.definiteFunctionType(_native_typed_data.NativeUint16List, [typed_data.ByteBuffer, core.int, core.int])
  }),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.sublist]: dart.definiteFunctionType(core.List$(core.int), [core.int], [core.int])
  }),
  statics: () => ({
    _create1: dart.definiteFunctionType(_native_typed_data.NativeUint16List, [dart.dynamic]),
    _create2: dart.definiteFunctionType(_native_typed_data.NativeUint16List, [dart.dynamic, dart.dynamic]),
    _create3: dart.definiteFunctionType(_native_typed_data.NativeUint16List, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create1', '_create2', '_create3']
});
dart.registerExtension(dart.global.Uint16Array, _native_typed_data.NativeUint16List);
dart.defineExtensionNames([
  'runtimeType',
  '_get',
  'sublist'
]);
_native_typed_data.NativeUint32List = class NativeUint32List extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeUint32List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint32List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeUint32List._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint32List._create3(buffer, offsetInBytes, length);
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(typed_data.Uint32List);
  }
  [dartx._get](index) {
    _native_typed_data._checkValidIndex(index, this, this[dartx.length]);
    return this[index];
  }
  [dartx.sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[dartx.length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeUint32List._create1(source);
  }
  static _create1(arg) {
    return new Uint32Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Uint32Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Uint32Array(arg1, arg2, arg3);
  }
};
_native_typed_data.NativeUint32List[dart.implements] = () => [typed_data.Uint32List];
dart.setSignature(_native_typed_data.NativeUint32List, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeUint32List, [core.int]),
    fromList: dart.definiteFunctionType(_native_typed_data.NativeUint32List, [ListOfint()]),
    view: dart.definiteFunctionType(_native_typed_data.NativeUint32List, [typed_data.ByteBuffer, core.int, core.int])
  }),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.sublist]: dart.definiteFunctionType(core.List$(core.int), [core.int], [core.int])
  }),
  statics: () => ({
    _create1: dart.definiteFunctionType(_native_typed_data.NativeUint32List, [dart.dynamic]),
    _create2: dart.definiteFunctionType(_native_typed_data.NativeUint32List, [dart.dynamic, dart.dynamic]),
    _create3: dart.definiteFunctionType(_native_typed_data.NativeUint32List, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create1', '_create2', '_create3']
});
dart.registerExtension(dart.global.Uint32Array, _native_typed_data.NativeUint32List);
dart.defineExtensionNames([
  'runtimeType',
  'length',
  '_get',
  'sublist'
]);
_native_typed_data.NativeUint8ClampedList = class NativeUint8ClampedList extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeUint8ClampedList._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint8ClampedList._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeUint8ClampedList._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint8ClampedList._create3(buffer, offsetInBytes, length);
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(typed_data.Uint8ClampedList);
  }
  get [dartx.length]() {
    return this.length;
  }
  set [dartx.length](value) {
    super[dartx.length] = value;
  }
  [dartx._get](index) {
    _native_typed_data._checkValidIndex(index, this, this[dartx.length]);
    return this[index];
  }
  [dartx.sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[dartx.length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeUint8ClampedList._create1(source);
  }
  static _create1(arg) {
    return new Uint8ClampedArray(arg);
  }
  static _create2(arg1, arg2) {
    return new Uint8ClampedArray(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Uint8ClampedArray(arg1, arg2, arg3);
  }
};
_native_typed_data.NativeUint8ClampedList[dart.implements] = () => [typed_data.Uint8ClampedList];
dart.setSignature(_native_typed_data.NativeUint8ClampedList, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeUint8ClampedList, [core.int]),
    fromList: dart.definiteFunctionType(_native_typed_data.NativeUint8ClampedList, [ListOfint()]),
    view: dart.definiteFunctionType(_native_typed_data.NativeUint8ClampedList, [typed_data.ByteBuffer, core.int, core.int])
  }),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.sublist]: dart.definiteFunctionType(core.List$(core.int), [core.int], [core.int])
  }),
  statics: () => ({
    _create1: dart.definiteFunctionType(_native_typed_data.NativeUint8ClampedList, [dart.dynamic]),
    _create2: dart.definiteFunctionType(_native_typed_data.NativeUint8ClampedList, [dart.dynamic, dart.dynamic]),
    _create3: dart.definiteFunctionType(_native_typed_data.NativeUint8ClampedList, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create1', '_create2', '_create3']
});
dart.registerExtension(dart.global.Uint8ClampedArray, _native_typed_data.NativeUint8ClampedList);
dart.registerExtension(dart.global.CanvasPixelArray, _native_typed_data.NativeUint8ClampedList);
dart.defineExtensionNames([
  'runtimeType',
  'length',
  '_get',
  'sublist'
]);
_native_typed_data.NativeUint8List = class NativeUint8List extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeUint8List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint8List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeUint8List._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint8List._create3(buffer, offsetInBytes, length);
  }
  get [dartx.runtimeType]() {
    return dart.wrapType(typed_data.Uint8List);
  }
  get [dartx.length]() {
    return this.length;
  }
  set [dartx.length](value) {
    super[dartx.length] = value;
  }
  [dartx._get](index) {
    _native_typed_data._checkValidIndex(index, this, this[dartx.length]);
    return this[index];
  }
  [dartx.sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[dartx.length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeUint8List._create1(source);
  }
  static _create1(arg) {
    return new Uint8Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Uint8Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Uint8Array(arg1, arg2, arg3);
  }
};
_native_typed_data.NativeUint8List[dart.implements] = () => [typed_data.Uint8List];
dart.setSignature(_native_typed_data.NativeUint8List, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeUint8List, [core.int]),
    fromList: dart.definiteFunctionType(_native_typed_data.NativeUint8List, [ListOfint()]),
    view: dart.definiteFunctionType(_native_typed_data.NativeUint8List, [typed_data.ByteBuffer, core.int, core.int])
  }),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.sublist]: dart.definiteFunctionType(core.List$(core.int), [core.int], [core.int])
  }),
  statics: () => ({
    _create1: dart.definiteFunctionType(_native_typed_data.NativeUint8List, [dart.dynamic]),
    _create2: dart.definiteFunctionType(_native_typed_data.NativeUint8List, [dart.dynamic, dart.dynamic]),
    _create3: dart.definiteFunctionType(_native_typed_data.NativeUint8List, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create1', '_create2', '_create3']
});
dart.registerExtension(dart.global.Uint8Array, _native_typed_data.NativeUint8List);
_native_typed_data.NativeFloat32x4 = class NativeFloat32x4 extends core.Object {
  static _truncate(x) {
    _native_typed_data.NativeFloat32x4._list[dartx._set](0, core.num._check(x));
    return _native_typed_data.NativeFloat32x4._list[dartx._get](0);
  }
  new(x, y, z, w) {
    this.x = core.double._check(_native_typed_data.NativeFloat32x4._truncate(x));
    this.y = core.double._check(_native_typed_data.NativeFloat32x4._truncate(y));
    this.z = core.double._check(_native_typed_data.NativeFloat32x4._truncate(z));
    this.w = core.double._check(_native_typed_data.NativeFloat32x4._truncate(w));
    if (!(typeof x == 'number')) dart.throw(new core.ArgumentError(x));
    if (!(typeof y == 'number')) dart.throw(new core.ArgumentError(y));
    if (!(typeof z == 'number')) dart.throw(new core.ArgumentError(z));
    if (!(typeof w == 'number')) dart.throw(new core.ArgumentError(w));
  }
  splat(v) {
    NativeFloat32x4.prototype.new.call(this, v, v, v, v);
  }
  zero() {
    NativeFloat32x4.prototype._truncated.call(this, 0.0, 0.0, 0.0, 0.0);
  }
  static fromInt32x4Bits(i) {
    _native_typed_data.NativeFloat32x4._uint32view[dartx._set](0, i.x);
    _native_typed_data.NativeFloat32x4._uint32view[dartx._set](1, i.y);
    _native_typed_data.NativeFloat32x4._uint32view[dartx._set](2, i.z);
    _native_typed_data.NativeFloat32x4._uint32view[dartx._set](3, i.w);
    return new _native_typed_data.NativeFloat32x4._truncated(_native_typed_data.NativeFloat32x4._list[dartx._get](0), _native_typed_data.NativeFloat32x4._list[dartx._get](1), _native_typed_data.NativeFloat32x4._list[dartx._get](2), _native_typed_data.NativeFloat32x4._list[dartx._get](3));
  }
  fromFloat64x2(v) {
    NativeFloat32x4.prototype._truncated.call(this, core.double._check(_native_typed_data.NativeFloat32x4._truncate(v.x)), core.double._check(_native_typed_data.NativeFloat32x4._truncate(v.y)), 0.0, 0.0);
  }
  _doubles(x, y, z, w) {
    this.x = core.double._check(_native_typed_data.NativeFloat32x4._truncate(x));
    this.y = core.double._check(_native_typed_data.NativeFloat32x4._truncate(y));
    this.z = core.double._check(_native_typed_data.NativeFloat32x4._truncate(z));
    this.w = core.double._check(_native_typed_data.NativeFloat32x4._truncate(w));
  }
  _truncated(x, y, z, w) {
    this.x = x;
    this.y = y;
    this.z = z;
    this.w = w;
  }
  toString() {
    return dart.str`[${this.x}, ${this.y}, ${this.z}, ${this.w}]`;
  }
  ['+'](other) {
    let _x = dart.notNull(this.x) + dart.notNull(other.x);
    let _y = dart.notNull(this.y) + dart.notNull(other.y);
    let _z = dart.notNull(this.z) + dart.notNull(other.z);
    let _w = dart.notNull(this.w) + dart.notNull(other.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  _negate() {
    return new _native_typed_data.NativeFloat32x4._truncated(-dart.notNull(this.x), -dart.notNull(this.y), -dart.notNull(this.z), -dart.notNull(this.w));
  }
  ['-'](other) {
    let _x = dart.notNull(this.x) - dart.notNull(other.x);
    let _y = dart.notNull(this.y) - dart.notNull(other.y);
    let _z = dart.notNull(this.z) - dart.notNull(other.z);
    let _w = dart.notNull(this.w) - dart.notNull(other.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  ['*'](other) {
    let _x = dart.notNull(this.x) * dart.notNull(other.x);
    let _y = dart.notNull(this.y) * dart.notNull(other.y);
    let _z = dart.notNull(this.z) * dart.notNull(other.z);
    let _w = dart.notNull(this.w) * dart.notNull(other.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  ['/'](other) {
    let _x = dart.notNull(this.x) / dart.notNull(other.x);
    let _y = dart.notNull(this.y) / dart.notNull(other.y);
    let _z = dart.notNull(this.z) / dart.notNull(other.z);
    let _w = dart.notNull(this.w) / dart.notNull(other.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  lessThan(other) {
    let _cx = dart.notNull(this.x) < dart.notNull(other.x);
    let _cy = dart.notNull(this.y) < dart.notNull(other.y);
    let _cz = dart.notNull(this.z) < dart.notNull(other.z);
    let _cw = dart.notNull(this.w) < dart.notNull(other.w);
    return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
  }
  lessThanOrEqual(other) {
    let _cx = dart.notNull(this.x) <= dart.notNull(other.x);
    let _cy = dart.notNull(this.y) <= dart.notNull(other.y);
    let _cz = dart.notNull(this.z) <= dart.notNull(other.z);
    let _cw = dart.notNull(this.w) <= dart.notNull(other.w);
    return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
  }
  greaterThan(other) {
    let _cx = dart.notNull(this.x) > dart.notNull(other.x);
    let _cy = dart.notNull(this.y) > dart.notNull(other.y);
    let _cz = dart.notNull(this.z) > dart.notNull(other.z);
    let _cw = dart.notNull(this.w) > dart.notNull(other.w);
    return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
  }
  greaterThanOrEqual(other) {
    let _cx = dart.notNull(this.x) >= dart.notNull(other.x);
    let _cy = dart.notNull(this.y) >= dart.notNull(other.y);
    let _cz = dart.notNull(this.z) >= dart.notNull(other.z);
    let _cw = dart.notNull(this.w) >= dart.notNull(other.w);
    return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
  }
  equal(other) {
    let _cx = this.x == other.x;
    let _cy = this.y == other.y;
    let _cz = this.z == other.z;
    let _cw = this.w == other.w;
    return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
  }
  notEqual(other) {
    let _cx = this.x != other.x;
    let _cy = this.y != other.y;
    let _cz = this.z != other.z;
    let _cw = this.w != other.w;
    return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
  }
  scale(s) {
    let _x = dart.notNull(s) * dart.notNull(this.x);
    let _y = dart.notNull(s) * dart.notNull(this.y);
    let _z = dart.notNull(s) * dart.notNull(this.z);
    let _w = dart.notNull(s) * dart.notNull(this.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  abs() {
    let _x = this.x[dartx.abs]();
    let _y = this.y[dartx.abs]();
    let _z = this.z[dartx.abs]();
    let _w = this.w[dartx.abs]();
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  clamp(lowerLimit, upperLimit) {
    let _lx = lowerLimit.x;
    let _ly = lowerLimit.y;
    let _lz = lowerLimit.z;
    let _lw = lowerLimit.w;
    let _ux = upperLimit.x;
    let _uy = upperLimit.y;
    let _uz = upperLimit.z;
    let _uw = upperLimit.w;
    let _x = this.x;
    let _y = this.y;
    let _z = this.z;
    let _w = this.w;
    _x = dart.notNull(_x) > dart.notNull(_ux) ? _ux : _x;
    _y = dart.notNull(_y) > dart.notNull(_uy) ? _uy : _y;
    _z = dart.notNull(_z) > dart.notNull(_uz) ? _uz : _z;
    _w = dart.notNull(_w) > dart.notNull(_uw) ? _uw : _w;
    _x = dart.notNull(_x) < dart.notNull(_lx) ? _lx : _x;
    _y = dart.notNull(_y) < dart.notNull(_ly) ? _ly : _y;
    _z = dart.notNull(_z) < dart.notNull(_lz) ? _lz : _z;
    _w = dart.notNull(_w) < dart.notNull(_lw) ? _lw : _w;
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  get signMask() {
    let view = _native_typed_data.NativeFloat32x4._uint32view;
    let mx = null, my = null, mz = null, mw = null;
    _native_typed_data.NativeFloat32x4._list[dartx._set](0, this.x);
    _native_typed_data.NativeFloat32x4._list[dartx._set](1, this.y);
    _native_typed_data.NativeFloat32x4._list[dartx._set](2, this.z);
    _native_typed_data.NativeFloat32x4._list[dartx._set](3, this.w);
    mx = (dart.notNull(view[dartx._get](0)) & 2147483648) >>> 31;
    my = (dart.notNull(view[dartx._get](1)) & 2147483648) >>> 30;
    mz = (dart.notNull(view[dartx._get](2)) & 2147483648) >>> 29;
    mw = (dart.notNull(view[dartx._get](3)) & 2147483648) >>> 28;
    return core.int._check(dart.dsend(dart.dsend(dart.dsend(mx, '|', my), '|', mz), '|', mw));
  }
  shuffle(mask) {
    if (dart.notNull(mask) < 0 || dart.notNull(mask) > 255) {
      dart.throw(new core.RangeError.range(mask, 0, 255, "mask"));
    }
    _native_typed_data.NativeFloat32x4._list[dartx._set](0, this.x);
    _native_typed_data.NativeFloat32x4._list[dartx._set](1, this.y);
    _native_typed_data.NativeFloat32x4._list[dartx._set](2, this.z);
    _native_typed_data.NativeFloat32x4._list[dartx._set](3, this.w);
    let _x = _native_typed_data.NativeFloat32x4._list[dartx._get](dart.notNull(mask) & 3);
    let _y = _native_typed_data.NativeFloat32x4._list[dartx._get](dart.notNull(mask) >> 2 & 3);
    let _z = _native_typed_data.NativeFloat32x4._list[dartx._get](dart.notNull(mask) >> 4 & 3);
    let _w = _native_typed_data.NativeFloat32x4._list[dartx._get](dart.notNull(mask) >> 6 & 3);
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  shuffleMix(other, mask) {
    if (dart.notNull(mask) < 0 || dart.notNull(mask) > 255) {
      dart.throw(new core.RangeError.range(mask, 0, 255, "mask"));
    }
    _native_typed_data.NativeFloat32x4._list[dartx._set](0, this.x);
    _native_typed_data.NativeFloat32x4._list[dartx._set](1, this.y);
    _native_typed_data.NativeFloat32x4._list[dartx._set](2, this.z);
    _native_typed_data.NativeFloat32x4._list[dartx._set](3, this.w);
    let _x = _native_typed_data.NativeFloat32x4._list[dartx._get](dart.notNull(mask) & 3);
    let _y = _native_typed_data.NativeFloat32x4._list[dartx._get](dart.notNull(mask) >> 2 & 3);
    _native_typed_data.NativeFloat32x4._list[dartx._set](0, other.x);
    _native_typed_data.NativeFloat32x4._list[dartx._set](1, other.y);
    _native_typed_data.NativeFloat32x4._list[dartx._set](2, other.z);
    _native_typed_data.NativeFloat32x4._list[dartx._set](3, other.w);
    let _z = _native_typed_data.NativeFloat32x4._list[dartx._get](dart.notNull(mask) >> 4 & 3);
    let _w = _native_typed_data.NativeFloat32x4._list[dartx._get](dart.notNull(mask) >> 6 & 3);
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  withX(newX) {
    return new _native_typed_data.NativeFloat32x4._truncated(core.double._check(_native_typed_data.NativeFloat32x4._truncate(newX)), this.y, this.z, this.w);
  }
  withY(newY) {
    return new _native_typed_data.NativeFloat32x4._truncated(this.x, core.double._check(_native_typed_data.NativeFloat32x4._truncate(newY)), this.z, this.w);
  }
  withZ(newZ) {
    return new _native_typed_data.NativeFloat32x4._truncated(this.x, this.y, core.double._check(_native_typed_data.NativeFloat32x4._truncate(newZ)), this.w);
  }
  withW(newW) {
    return new _native_typed_data.NativeFloat32x4._truncated(this.x, this.y, this.z, core.double._check(_native_typed_data.NativeFloat32x4._truncate(newW)));
  }
  min(other) {
    let _x = dart.notNull(this.x) < dart.notNull(other.x) ? this.x : other.x;
    let _y = dart.notNull(this.y) < dart.notNull(other.y) ? this.y : other.y;
    let _z = dart.notNull(this.z) < dart.notNull(other.z) ? this.z : other.z;
    let _w = dart.notNull(this.w) < dart.notNull(other.w) ? this.w : other.w;
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  max(other) {
    let _x = dart.notNull(this.x) > dart.notNull(other.x) ? this.x : other.x;
    let _y = dart.notNull(this.y) > dart.notNull(other.y) ? this.y : other.y;
    let _z = dart.notNull(this.z) > dart.notNull(other.z) ? this.z : other.z;
    let _w = dart.notNull(this.w) > dart.notNull(other.w) ? this.w : other.w;
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  sqrt() {
    let _x = math.sqrt(this.x);
    let _y = math.sqrt(this.y);
    let _z = math.sqrt(this.z);
    let _w = math.sqrt(this.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  reciprocal() {
    let _x = 1.0 / dart.notNull(this.x);
    let _y = 1.0 / dart.notNull(this.y);
    let _z = 1.0 / dart.notNull(this.z);
    let _w = 1.0 / dart.notNull(this.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  reciprocalSqrt() {
    let _x = math.sqrt(1.0 / dart.notNull(this.x));
    let _y = math.sqrt(1.0 / dart.notNull(this.y));
    let _z = math.sqrt(1.0 / dart.notNull(this.z));
    let _w = math.sqrt(1.0 / dart.notNull(this.w));
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
};
dart.defineNamedConstructor(_native_typed_data.NativeFloat32x4, 'splat');
dart.defineNamedConstructor(_native_typed_data.NativeFloat32x4, 'zero');
dart.defineNamedConstructor(_native_typed_data.NativeFloat32x4, 'fromFloat64x2');
dart.defineNamedConstructor(_native_typed_data.NativeFloat32x4, '_doubles');
dart.defineNamedConstructor(_native_typed_data.NativeFloat32x4, '_truncated');
_native_typed_data.NativeFloat32x4[dart.implements] = () => [typed_data.Float32x4];
dart.setSignature(_native_typed_data.NativeFloat32x4, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeFloat32x4, [core.double, core.double, core.double, core.double]),
    splat: dart.definiteFunctionType(_native_typed_data.NativeFloat32x4, [core.double]),
    zero: dart.definiteFunctionType(_native_typed_data.NativeFloat32x4, []),
    fromInt32x4Bits: dart.definiteFunctionType(_native_typed_data.NativeFloat32x4, [typed_data.Int32x4]),
    fromFloat64x2: dart.definiteFunctionType(_native_typed_data.NativeFloat32x4, [typed_data.Float64x2]),
    _doubles: dart.definiteFunctionType(_native_typed_data.NativeFloat32x4, [core.double, core.double, core.double, core.double]),
    _truncated: dart.definiteFunctionType(_native_typed_data.NativeFloat32x4, [core.double, core.double, core.double, core.double])
  }),
  fields: () => ({
    x: core.double,
    y: core.double,
    z: core.double,
    w: core.double
  }),
  getters: () => ({signMask: dart.definiteFunctionType(core.int, [])}),
  methods: () => ({
    '+': dart.definiteFunctionType(typed_data.Float32x4, [typed_data.Float32x4]),
    _negate: dart.definiteFunctionType(typed_data.Float32x4, []),
    '-': dart.definiteFunctionType(typed_data.Float32x4, [typed_data.Float32x4]),
    '*': dart.definiteFunctionType(typed_data.Float32x4, [typed_data.Float32x4]),
    '/': dart.definiteFunctionType(typed_data.Float32x4, [typed_data.Float32x4]),
    lessThan: dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Float32x4]),
    lessThanOrEqual: dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Float32x4]),
    greaterThan: dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Float32x4]),
    greaterThanOrEqual: dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Float32x4]),
    equal: dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Float32x4]),
    notEqual: dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Float32x4]),
    scale: dart.definiteFunctionType(typed_data.Float32x4, [core.double]),
    abs: dart.definiteFunctionType(typed_data.Float32x4, []),
    clamp: dart.definiteFunctionType(typed_data.Float32x4, [typed_data.Float32x4, typed_data.Float32x4]),
    shuffle: dart.definiteFunctionType(typed_data.Float32x4, [core.int]),
    shuffleMix: dart.definiteFunctionType(typed_data.Float32x4, [typed_data.Float32x4, core.int]),
    withX: dart.definiteFunctionType(typed_data.Float32x4, [core.double]),
    withY: dart.definiteFunctionType(typed_data.Float32x4, [core.double]),
    withZ: dart.definiteFunctionType(typed_data.Float32x4, [core.double]),
    withW: dart.definiteFunctionType(typed_data.Float32x4, [core.double]),
    min: dart.definiteFunctionType(typed_data.Float32x4, [typed_data.Float32x4]),
    max: dart.definiteFunctionType(typed_data.Float32x4, [typed_data.Float32x4]),
    sqrt: dart.definiteFunctionType(typed_data.Float32x4, []),
    reciprocal: dart.definiteFunctionType(typed_data.Float32x4, []),
    reciprocalSqrt: dart.definiteFunctionType(typed_data.Float32x4, [])
  }),
  sfields: () => ({
    _list: _native_typed_data.NativeFloat32List,
    _uint32view: typed_data.Uint32List
  }),
  statics: () => ({_truncate: dart.definiteFunctionType(dart.dynamic, [dart.dynamic])}),
  names: ['_truncate']
});
dart.defineLazy(_native_typed_data.NativeFloat32x4, {
  get _list() {
    return _native_typed_data.NativeFloat32List.new(4);
  },
  get _uint32view() {
    return _native_typed_data.NativeFloat32x4._list[dartx.buffer][dartx.asUint32List]();
  }
});
_native_typed_data.NativeInt32x4 = class NativeInt32x4 extends core.Object {
  static _truncate(x) {
    _native_typed_data.NativeInt32x4._list[dartx._set](0, core.int._check(x));
    return _native_typed_data.NativeInt32x4._list[dartx._get](0);
  }
  new(x, y, z, w) {
    this.x = core.int._check(_native_typed_data.NativeInt32x4._truncate(x));
    this.y = core.int._check(_native_typed_data.NativeInt32x4._truncate(y));
    this.z = core.int._check(_native_typed_data.NativeInt32x4._truncate(z));
    this.w = core.int._check(_native_typed_data.NativeInt32x4._truncate(w));
    if (x != this.x && !(typeof x == 'number')) dart.throw(new core.ArgumentError(x));
    if (y != this.y && !(typeof y == 'number')) dart.throw(new core.ArgumentError(y));
    if (z != this.z && !(typeof z == 'number')) dart.throw(new core.ArgumentError(z));
    if (w != this.w && !(typeof w == 'number')) dart.throw(new core.ArgumentError(w));
  }
  bool(x, y, z, w) {
    this.x = dart.test(x) ? -1 : 0;
    this.y = dart.test(y) ? -1 : 0;
    this.z = dart.test(z) ? -1 : 0;
    this.w = dart.test(w) ? -1 : 0;
  }
  static fromFloat32x4Bits(f) {
    let floatList = _native_typed_data.NativeFloat32x4._list;
    floatList[dartx._set](0, f.x);
    floatList[dartx._set](1, f.y);
    floatList[dartx._set](2, f.z);
    floatList[dartx._set](3, f.w);
    let view = _native_typed_data.NativeInt32List._check(floatList[dartx.buffer][dartx.asInt32List]());
    return new _native_typed_data.NativeInt32x4._truncated(view[dartx._get](0), view[dartx._get](1), view[dartx._get](2), view[dartx._get](3));
  }
  _truncated(x, y, z, w) {
    this.x = x;
    this.y = y;
    this.z = z;
    this.w = w;
  }
  toString() {
    return dart.str`[${this.x}, ${this.y}, ${this.z}, ${this.w}]`;
  }
  ['|'](other) {
    return new _native_typed_data.NativeInt32x4._truncated(this.x | other.x, this.y | other.y, this.z | other.z, this.w | other.w);
  }
  ['&'](other) {
    return new _native_typed_data.NativeInt32x4._truncated(this.x & other.x, this.y & other.y, this.z & other.z, this.w & other.w);
  }
  ['^'](other) {
    return new _native_typed_data.NativeInt32x4._truncated(this.x ^ other.x, this.y ^ other.y, this.z ^ other.z, this.w ^ other.w);
  }
  ['+'](other) {
    return new _native_typed_data.NativeInt32x4._truncated(this.x + other.x | 0, this.y + other.y | 0, this.z + other.z | 0, this.w + other.w | 0);
  }
  ['-'](other) {
    return new _native_typed_data.NativeInt32x4._truncated(this.x - other.x | 0, this.y - other.y | 0, this.z - other.z | 0, this.w - other.w | 0);
  }
  _negate() {
    return new _native_typed_data.NativeInt32x4._truncated(-this.x | 0, -this.y | 0, -this.z | 0, -this.w | 0);
  }
  get signMask() {
    let mx = (dart.notNull(this.x) & 2147483648) >>> 31;
    let my = (dart.notNull(this.y) & 2147483648) >>> 31;
    let mz = (dart.notNull(this.z) & 2147483648) >>> 31;
    let mw = (dart.notNull(this.w) & 2147483648) >>> 31;
    return (mx | my << 1 | mz << 2 | mw << 3) >>> 0;
  }
  shuffle(mask) {
    if (dart.notNull(mask) < 0 || dart.notNull(mask) > 255) {
      dart.throw(new core.RangeError.range(mask, 0, 255, "mask"));
    }
    _native_typed_data.NativeInt32x4._list[dartx._set](0, this.x);
    _native_typed_data.NativeInt32x4._list[dartx._set](1, this.y);
    _native_typed_data.NativeInt32x4._list[dartx._set](2, this.z);
    _native_typed_data.NativeInt32x4._list[dartx._set](3, this.w);
    let _x = _native_typed_data.NativeInt32x4._list[dartx._get](dart.notNull(mask) & 3);
    let _y = _native_typed_data.NativeInt32x4._list[dartx._get](dart.notNull(mask) >> 2 & 3);
    let _z = _native_typed_data.NativeInt32x4._list[dartx._get](dart.notNull(mask) >> 4 & 3);
    let _w = _native_typed_data.NativeInt32x4._list[dartx._get](dart.notNull(mask) >> 6 & 3);
    return new _native_typed_data.NativeInt32x4._truncated(_x, _y, _z, _w);
  }
  shuffleMix(other, mask) {
    if (dart.notNull(mask) < 0 || dart.notNull(mask) > 255) {
      dart.throw(new core.RangeError.range(mask, 0, 255, "mask"));
    }
    _native_typed_data.NativeInt32x4._list[dartx._set](0, this.x);
    _native_typed_data.NativeInt32x4._list[dartx._set](1, this.y);
    _native_typed_data.NativeInt32x4._list[dartx._set](2, this.z);
    _native_typed_data.NativeInt32x4._list[dartx._set](3, this.w);
    let _x = _native_typed_data.NativeInt32x4._list[dartx._get](dart.notNull(mask) & 3);
    let _y = _native_typed_data.NativeInt32x4._list[dartx._get](dart.notNull(mask) >> 2 & 3);
    _native_typed_data.NativeInt32x4._list[dartx._set](0, other.x);
    _native_typed_data.NativeInt32x4._list[dartx._set](1, other.y);
    _native_typed_data.NativeInt32x4._list[dartx._set](2, other.z);
    _native_typed_data.NativeInt32x4._list[dartx._set](3, other.w);
    let _z = _native_typed_data.NativeInt32x4._list[dartx._get](dart.notNull(mask) >> 4 & 3);
    let _w = _native_typed_data.NativeInt32x4._list[dartx._get](dart.notNull(mask) >> 6 & 3);
    return new _native_typed_data.NativeInt32x4._truncated(_x, _y, _z, _w);
  }
  withX(x) {
    let _x = core.int._check(_native_typed_data.NativeInt32x4._truncate(x));
    return new _native_typed_data.NativeInt32x4._truncated(_x, this.y, this.z, this.w);
  }
  withY(y) {
    let _y = core.int._check(_native_typed_data.NativeInt32x4._truncate(y));
    return new _native_typed_data.NativeInt32x4._truncated(this.x, _y, this.z, this.w);
  }
  withZ(z) {
    let _z = core.int._check(_native_typed_data.NativeInt32x4._truncate(z));
    return new _native_typed_data.NativeInt32x4._truncated(this.x, this.y, _z, this.w);
  }
  withW(w) {
    let _w = core.int._check(_native_typed_data.NativeInt32x4._truncate(w));
    return new _native_typed_data.NativeInt32x4._truncated(this.x, this.y, this.z, _w);
  }
  get flagX() {
    return this.x != 0;
  }
  get flagY() {
    return this.y != 0;
  }
  get flagZ() {
    return this.z != 0;
  }
  get flagW() {
    return this.w != 0;
  }
  withFlagX(flagX) {
    let _x = dart.test(flagX) ? -1 : 0;
    return new _native_typed_data.NativeInt32x4._truncated(_x, this.y, this.z, this.w);
  }
  withFlagY(flagY) {
    let _y = dart.test(flagY) ? -1 : 0;
    return new _native_typed_data.NativeInt32x4._truncated(this.x, _y, this.z, this.w);
  }
  withFlagZ(flagZ) {
    let _z = dart.test(flagZ) ? -1 : 0;
    return new _native_typed_data.NativeInt32x4._truncated(this.x, this.y, _z, this.w);
  }
  withFlagW(flagW) {
    let _w = dart.test(flagW) ? -1 : 0;
    return new _native_typed_data.NativeInt32x4._truncated(this.x, this.y, this.z, _w);
  }
  select(trueValue, falseValue) {
    let floatList = _native_typed_data.NativeFloat32x4._list;
    let intView = _native_typed_data.NativeFloat32x4._uint32view;
    floatList[dartx._set](0, trueValue.x);
    floatList[dartx._set](1, trueValue.y);
    floatList[dartx._set](2, trueValue.z);
    floatList[dartx._set](3, trueValue.w);
    let stx = intView[dartx._get](0);
    let sty = intView[dartx._get](1);
    let stz = intView[dartx._get](2);
    let stw = intView[dartx._get](3);
    floatList[dartx._set](0, falseValue.x);
    floatList[dartx._set](1, falseValue.y);
    floatList[dartx._set](2, falseValue.z);
    floatList[dartx._set](3, falseValue.w);
    let sfx = intView[dartx._get](0);
    let sfy = intView[dartx._get](1);
    let sfz = intView[dartx._get](2);
    let sfw = intView[dartx._get](3);
    let _x = (dart.notNull(this.x) & dart.notNull(stx) | ~dart.notNull(this.x) & dart.notNull(sfx)) >>> 0;
    let _y = (dart.notNull(this.y) & dart.notNull(sty) | ~dart.notNull(this.y) & dart.notNull(sfy)) >>> 0;
    let _z = (dart.notNull(this.z) & dart.notNull(stz) | ~dart.notNull(this.z) & dart.notNull(sfz)) >>> 0;
    let _w = (dart.notNull(this.w) & dart.notNull(stw) | ~dart.notNull(this.w) & dart.notNull(sfw)) >>> 0;
    intView[dartx._set](0, _x);
    intView[dartx._set](1, _y);
    intView[dartx._set](2, _z);
    intView[dartx._set](3, _w);
    return new _native_typed_data.NativeFloat32x4._truncated(floatList[dartx._get](0), floatList[dartx._get](1), floatList[dartx._get](2), floatList[dartx._get](3));
  }
};
dart.defineNamedConstructor(_native_typed_data.NativeInt32x4, 'bool');
dart.defineNamedConstructor(_native_typed_data.NativeInt32x4, '_truncated');
_native_typed_data.NativeInt32x4[dart.implements] = () => [typed_data.Int32x4];
dart.setSignature(_native_typed_data.NativeInt32x4, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeInt32x4, [core.int, core.int, core.int, core.int]),
    bool: dart.definiteFunctionType(_native_typed_data.NativeInt32x4, [core.bool, core.bool, core.bool, core.bool]),
    fromFloat32x4Bits: dart.definiteFunctionType(_native_typed_data.NativeInt32x4, [typed_data.Float32x4]),
    _truncated: dart.definiteFunctionType(_native_typed_data.NativeInt32x4, [core.int, core.int, core.int, core.int])
  }),
  fields: () => ({
    x: core.int,
    y: core.int,
    z: core.int,
    w: core.int
  }),
  getters: () => ({
    signMask: dart.definiteFunctionType(core.int, []),
    flagX: dart.definiteFunctionType(core.bool, []),
    flagY: dart.definiteFunctionType(core.bool, []),
    flagZ: dart.definiteFunctionType(core.bool, []),
    flagW: dart.definiteFunctionType(core.bool, [])
  }),
  methods: () => ({
    '|': dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Int32x4]),
    '&': dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Int32x4]),
    '^': dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Int32x4]),
    '+': dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Int32x4]),
    '-': dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Int32x4]),
    _negate: dart.definiteFunctionType(typed_data.Int32x4, []),
    shuffle: dart.definiteFunctionType(typed_data.Int32x4, [core.int]),
    shuffleMix: dart.definiteFunctionType(typed_data.Int32x4, [typed_data.Int32x4, core.int]),
    withX: dart.definiteFunctionType(typed_data.Int32x4, [core.int]),
    withY: dart.definiteFunctionType(typed_data.Int32x4, [core.int]),
    withZ: dart.definiteFunctionType(typed_data.Int32x4, [core.int]),
    withW: dart.definiteFunctionType(typed_data.Int32x4, [core.int]),
    withFlagX: dart.definiteFunctionType(typed_data.Int32x4, [core.bool]),
    withFlagY: dart.definiteFunctionType(typed_data.Int32x4, [core.bool]),
    withFlagZ: dart.definiteFunctionType(typed_data.Int32x4, [core.bool]),
    withFlagW: dart.definiteFunctionType(typed_data.Int32x4, [core.bool]),
    select: dart.definiteFunctionType(typed_data.Float32x4, [typed_data.Float32x4, typed_data.Float32x4])
  }),
  sfields: () => ({_list: _native_typed_data.NativeInt32List}),
  statics: () => ({_truncate: dart.definiteFunctionType(dart.dynamic, [dart.dynamic])}),
  names: ['_truncate']
});
dart.defineLazy(_native_typed_data.NativeInt32x4, {
  get _list() {
    return _native_typed_data.NativeInt32List.new(4);
  }
});
_native_typed_data.NativeFloat64x2 = class NativeFloat64x2 extends core.Object {
  new(x, y) {
    this.x = x;
    this.y = y;
    if (!(typeof this.x == 'number')) dart.throw(new core.ArgumentError(this.x));
    if (!(typeof this.y == 'number')) dart.throw(new core.ArgumentError(this.y));
  }
  splat(v) {
    NativeFloat64x2.prototype.new.call(this, v, v);
  }
  zero() {
    NativeFloat64x2.prototype.splat.call(this, 0.0);
  }
  fromFloat32x4(v) {
    NativeFloat64x2.prototype.new.call(this, v.x, v.y);
  }
  _doubles(x, y) {
    this.x = x;
    this.y = y;
  }
  toString() {
    return dart.str`[${this.x}, ${this.y}]`;
  }
  ['+'](other) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) + dart.notNull(other.x), dart.notNull(this.y) + dart.notNull(other.y));
  }
  _negate() {
    return new _native_typed_data.NativeFloat64x2._doubles(-dart.notNull(this.x), -dart.notNull(this.y));
  }
  ['-'](other) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) - dart.notNull(other.x), dart.notNull(this.y) - dart.notNull(other.y));
  }
  ['*'](other) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) * dart.notNull(other.x), dart.notNull(this.y) * dart.notNull(other.y));
  }
  ['/'](other) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) / dart.notNull(other.x), dart.notNull(this.y) / dart.notNull(other.y));
  }
  scale(s) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) * dart.notNull(s), dart.notNull(this.y) * dart.notNull(s));
  }
  abs() {
    return new _native_typed_data.NativeFloat64x2._doubles(this.x[dartx.abs](), this.y[dartx.abs]());
  }
  clamp(lowerLimit, upperLimit) {
    let _lx = lowerLimit.x;
    let _ly = lowerLimit.y;
    let _ux = upperLimit.x;
    let _uy = upperLimit.y;
    let _x = this.x;
    let _y = this.y;
    _x = dart.notNull(_x) > dart.notNull(_ux) ? _ux : _x;
    _y = dart.notNull(_y) > dart.notNull(_uy) ? _uy : _y;
    _x = dart.notNull(_x) < dart.notNull(_lx) ? _lx : _x;
    _y = dart.notNull(_y) < dart.notNull(_ly) ? _ly : _y;
    return new _native_typed_data.NativeFloat64x2._doubles(_x, _y);
  }
  get signMask() {
    let view = _native_typed_data.NativeFloat64x2._uint32View;
    _native_typed_data.NativeFloat64x2._list[dartx._set](0, this.x);
    _native_typed_data.NativeFloat64x2._list[dartx._set](1, this.y);
    let mx = (dart.notNull(view[dartx._get](1)) & 2147483648) >>> 31;
    let my = (dart.notNull(view[dartx._get](3)) & 2147483648) >>> 31;
    return (mx | my << 1) >>> 0;
  }
  withX(x) {
    if (!(typeof x == 'number')) dart.throw(new core.ArgumentError(x));
    return new _native_typed_data.NativeFloat64x2._doubles(x, this.y);
  }
  withY(y) {
    if (!(typeof y == 'number')) dart.throw(new core.ArgumentError(y));
    return new _native_typed_data.NativeFloat64x2._doubles(this.x, y);
  }
  min(other) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) < dart.notNull(other.x) ? this.x : other.x, dart.notNull(this.y) < dart.notNull(other.y) ? this.y : other.y);
  }
  max(other) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) > dart.notNull(other.x) ? this.x : other.x, dart.notNull(this.y) > dart.notNull(other.y) ? this.y : other.y);
  }
  sqrt() {
    return new _native_typed_data.NativeFloat64x2._doubles(math.sqrt(this.x), math.sqrt(this.y));
  }
};
dart.defineNamedConstructor(_native_typed_data.NativeFloat64x2, 'splat');
dart.defineNamedConstructor(_native_typed_data.NativeFloat64x2, 'zero');
dart.defineNamedConstructor(_native_typed_data.NativeFloat64x2, 'fromFloat32x4');
dart.defineNamedConstructor(_native_typed_data.NativeFloat64x2, '_doubles');
_native_typed_data.NativeFloat64x2[dart.implements] = () => [typed_data.Float64x2];
dart.setSignature(_native_typed_data.NativeFloat64x2, {
  constructors: () => ({
    new: dart.definiteFunctionType(_native_typed_data.NativeFloat64x2, [core.double, core.double]),
    splat: dart.definiteFunctionType(_native_typed_data.NativeFloat64x2, [core.double]),
    zero: dart.definiteFunctionType(_native_typed_data.NativeFloat64x2, []),
    fromFloat32x4: dart.definiteFunctionType(_native_typed_data.NativeFloat64x2, [typed_data.Float32x4]),
    _doubles: dart.definiteFunctionType(_native_typed_data.NativeFloat64x2, [core.double, core.double])
  }),
  fields: () => ({
    x: core.double,
    y: core.double
  }),
  getters: () => ({signMask: dart.definiteFunctionType(core.int, [])}),
  methods: () => ({
    '+': dart.definiteFunctionType(typed_data.Float64x2, [typed_data.Float64x2]),
    _negate: dart.definiteFunctionType(typed_data.Float64x2, []),
    '-': dart.definiteFunctionType(typed_data.Float64x2, [typed_data.Float64x2]),
    '*': dart.definiteFunctionType(typed_data.Float64x2, [typed_data.Float64x2]),
    '/': dart.definiteFunctionType(typed_data.Float64x2, [typed_data.Float64x2]),
    scale: dart.definiteFunctionType(typed_data.Float64x2, [core.double]),
    abs: dart.definiteFunctionType(typed_data.Float64x2, []),
    clamp: dart.definiteFunctionType(typed_data.Float64x2, [typed_data.Float64x2, typed_data.Float64x2]),
    withX: dart.definiteFunctionType(typed_data.Float64x2, [core.double]),
    withY: dart.definiteFunctionType(typed_data.Float64x2, [core.double]),
    min: dart.definiteFunctionType(typed_data.Float64x2, [typed_data.Float64x2]),
    max: dart.definiteFunctionType(typed_data.Float64x2, [typed_data.Float64x2]),
    sqrt: dart.definiteFunctionType(typed_data.Float64x2, [])
  }),
  sfields: () => ({
    _list: _native_typed_data.NativeFloat64List,
    _uint32View: _native_typed_data.NativeUint32List
  })
});
dart.defineLazy(_native_typed_data.NativeFloat64x2, {
  get _list() {
    return _native_typed_data.NativeFloat64List.new(2);
  },
  set _list(_) {},
  get _uint32View() {
    return _native_typed_data.NativeUint32List._check(_native_typed_data.NativeFloat64x2._list[dartx.buffer][dartx.asUint32List]());
  },
  set _uint32View(_) {}
});
_native_typed_data._isInvalidArrayIndex = function(index) {
  return index >>> 0 !== index;
};
dart.lazyFn(_native_typed_data._isInvalidArrayIndex, () => intTobool());
_native_typed_data._checkValidIndex = function(index, list, length) {
  if (dart.test(_native_typed_data._isInvalidArrayIndex(index)) || index >= dart.notNull(length)) {
    dart.throw(_js_helper.diagnoseIndexError(list, index));
  }
};
dart.lazyFn(_native_typed_data._checkValidIndex, () => intAndListAndintTovoid());
_native_typed_data._checkValidRange = function(start, end, length) {
  if (dart.test(_native_typed_data._isInvalidArrayIndex(start)) || (end == null ? dart.notNull(start) > dart.notNull(length) : dart.test(_native_typed_data._isInvalidArrayIndex(end)) || dart.notNull(start) > dart.notNull(end) || dart.notNull(end) > dart.notNull(length))) {
    dart.throw(_js_helper.diagnoseRangeError(start, end, length));
  }
  if (end == null) return length;
  return end;
};
dart.fn(_native_typed_data._checkValidRange, intAndintAndintToint());
async._invokeErrorHandler = function(errorHandler, error, stackTrace) {
  if (async.ZoneBinaryCallback.is(errorHandler)) {
    return dart.dcall(errorHandler, error, stackTrace);
  } else {
    let unaryErrorHandler = async.ZoneUnaryCallback._check(errorHandler);
    return dart.dcall(unaryErrorHandler, error);
  }
};
dart.lazyFn(async._invokeErrorHandler, () => FunctionAndObjectAndStackTraceTodynamic());
async._registerErrorHandler = function(R) {
  return (errorHandler, zone) => {
    if (async.ZoneBinaryCallback.is(errorHandler)) {
      return zone.registerBinaryCallback(dart.dynamic, dart.dynamic, core.StackTrace)(ZoneBinaryCallbackOfdynamic$dynamic$StackTrace().as(errorHandler));
    } else {
      return zone.registerUnaryCallback(dart.dynamic, dart.dynamic)(async.ZoneUnaryCallback.as(errorHandler));
    }
  };
};
dart.lazyFn(async._registerErrorHandler, () => FunctionAndZoneToFunction());
async.AsyncError = class AsyncError extends core.Object {
  new(error, stackTrace) {
    this.error = error;
    this.stackTrace = stackTrace;
  }
  toString() {
    return dart.str`${this.error}`;
  }
};
async.AsyncError[dart.implements] = () => [core.Error];
dart.setSignature(async.AsyncError, {
  constructors: () => ({new: dart.definiteFunctionType(async.AsyncError, [core.Object, core.StackTrace])}),
  fields: () => ({
    error: core.Object,
    stackTrace: core.StackTrace
  })
});
async._UncaughtAsyncError = class _UncaughtAsyncError extends async.AsyncError {
  new(error, stackTrace) {
    super.new(error, async._UncaughtAsyncError._getBestStackTrace(error, stackTrace));
  }
  static _getBestStackTrace(error, stackTrace) {
    if (stackTrace != null) return stackTrace;
    if (core.Error.is(error)) {
      return error.stackTrace;
    }
    return null;
  }
  toString() {
    let result = dart.str`Uncaught Error: ${this.error}`;
    if (this.stackTrace != null) {
      result = result + dart.str`\nStack Trace:\n${this.stackTrace}`;
    }
    return result;
  }
};
dart.setSignature(async._UncaughtAsyncError, {
  constructors: () => ({new: dart.definiteFunctionType(async._UncaughtAsyncError, [dart.dynamic, core.StackTrace])}),
  statics: () => ({_getBestStackTrace: dart.definiteFunctionType(core.StackTrace, [dart.dynamic, core.StackTrace])}),
  names: ['_getBestStackTrace']
});
const _controller = Symbol('_controller');
const _subscribe = Symbol('_subscribe');
const _createSubscription = Symbol('_createSubscription');
const _onListen = Symbol('_onListen');
async._StreamImpl$ = dart.generic(T => {
  let _BufferingStreamSubscriptionOfT = () => (_BufferingStreamSubscriptionOfT = dart.constFn(async._BufferingStreamSubscription$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _StreamImpl extends async.Stream$(T) {
    new() {
      super.new();
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      cancelOnError = core.identical(true, cancelOnError);
      let subscription = this[_createSubscription](onData, onError, onDone, cancelOnError);
      this[_onListen](subscription);
      return subscription;
    }
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      return new (_BufferingStreamSubscriptionOfT())(onData, onError, onDone, cancelOnError);
    }
    [_onListen](subscription) {}
  }
  dart.setSignature(_StreamImpl, {
    methods: () => ({
      listen: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid()], {onError: core.Function, onDone: VoidTovoid(), cancelOnError: core.bool}),
      [_createSubscription]: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid(), core.Function, VoidTovoid(), core.bool]),
      [_onListen]: dart.definiteFunctionType(dart.void, [async.StreamSubscription])
    })
  });
  return _StreamImpl;
});
async._StreamImpl = _StreamImpl();
async._ControllerStream$ = dart.generic(T => {
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  let _StreamControllerLifecycleOfT = () => (_StreamControllerLifecycleOfT = dart.constFn(async._StreamControllerLifecycle$(T)))();
  class _ControllerStream extends async._StreamImpl$(T) {
    new(controller) {
      this[_controller] = controller;
      super.new();
    }
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      return this[_controller][_subscribe](onData, onError, onDone, cancelOnError);
    }
    get hashCode() {
      return (dart.notNull(dart.hashCode(this[_controller])) ^ 892482866) >>> 0;
    }
    ['=='](other) {
      if (core.identical(this, other)) return true;
      if (!async._ControllerStream.is(other)) return false;
      let otherStream = async._ControllerStream._check(other);
      return core.identical(otherStream[_controller], this[_controller]);
    }
  }
  dart.setSignature(_ControllerStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._ControllerStream$(T), [_StreamControllerLifecycleOfT()])}),
    fields: () => ({[_controller]: _StreamControllerLifecycleOfT()}),
    methods: () => ({
      [_createSubscription]: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid(), core.Function, VoidTovoid(), core.bool]),
      '==': dart.definiteFunctionType(core.bool, [core.Object])
    })
  });
  return _ControllerStream;
});
async._ControllerStream = _ControllerStream();
async._BroadcastStream$ = dart.generic(T => {
  let _StreamControllerLifecycleOfT = () => (_StreamControllerLifecycleOfT = dart.constFn(async._StreamControllerLifecycle$(T)))();
  class _BroadcastStream extends async._ControllerStream$(T) {
    new(controller) {
      super.new(controller);
    }
    get isBroadcast() {
      return true;
    }
  }
  dart.setSignature(_BroadcastStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._BroadcastStream$(T), [_StreamControllerLifecycleOfT()])})
  });
  return _BroadcastStream;
});
async._BroadcastStream = _BroadcastStream();
const _eventState = Symbol('_eventState');
const _next = Symbol('_next');
const _previous = Symbol('_previous');
const _expectsEvent = Symbol('_expectsEvent');
const _toggleEventId = Symbol('_toggleEventId');
const _isFiring = Symbol('_isFiring');
const _setRemoveAfterFiring = Symbol('_setRemoveAfterFiring');
const _removeAfterFiring = Symbol('_removeAfterFiring');
const _onPause = Symbol('_onPause');
const _onResume = Symbol('_onResume');
const _recordCancel = Symbol('_recordCancel');
const _onCancel = Symbol('_onCancel');
const _recordPause = Symbol('_recordPause');
const _recordResume = Symbol('_recordResume');
const _zone = Symbol('_zone');
const _state = Symbol('_state');
const _onData = Symbol('_onData');
const _onError = Symbol('_onError');
const _onDone = Symbol('_onDone');
const _cancelFuture = Symbol('_cancelFuture');
const _pending = Symbol('_pending');
const _setPendingEvents = Symbol('_setPendingEvents');
const _isCanceled = Symbol('_isCanceled');
const _isPaused = Symbol('_isPaused');
const _isInputPaused = Symbol('_isInputPaused');
const _inCallback = Symbol('_inCallback');
const _guardCallback = Symbol('_guardCallback');
const _decrementPauseCount = Symbol('_decrementPauseCount');
const _hasPending = Symbol('_hasPending');
const _mayResumeInput = Symbol('_mayResumeInput');
const _cancel = Symbol('_cancel');
const _isClosed = Symbol('_isClosed');
const _waitsForCancel = Symbol('_waitsForCancel');
const _canFire = Symbol('_canFire');
const _cancelOnError = Symbol('_cancelOnError');
const _incrementPauseCount = Symbol('_incrementPauseCount');
const _sendData = Symbol('_sendData');
const _addPending = Symbol('_addPending');
const _sendError = Symbol('_sendError');
const _sendDone = Symbol('_sendDone');
let const;
const _close = Symbol('_close');
const _checkState = Symbol('_checkState');
async._BufferingStreamSubscription$ = dart.generic(T => {
  let _PendingEventsOfT = () => (_PendingEventsOfT = dart.constFn(async._PendingEvents$(T)))();
  let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
  let _StreamImplEventsOfT = () => (_StreamImplEventsOfT = dart.constFn(async._StreamImplEvents$(T)))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _BufferingStreamSubscription extends core.Object {
    new(onData, onError, onDone, cancelOnError) {
      this[_zone] = async.Zone.current;
      this[_state] = dart.test(cancelOnError) ? async._BufferingStreamSubscription._STATE_CANCEL_ON_ERROR : 0;
      this[_onData] = null;
      this[_onError] = null;
      this[_onDone] = null;
      this[_cancelFuture] = null;
      this[_pending] = null;
      this.onData(onData);
      this.onError(onError);
      this.onDone(onDone);
    }
    [_setPendingEvents](pendingEvents) {
      _PendingEventsOfT()._check(pendingEvents);
      dart.assert(this[_pending] == null);
      if (pendingEvents == null) return;
      this[_pending] = pendingEvents;
      if (!dart.test(pendingEvents.isEmpty)) {
        this[_state] = (dart.notNull(this[_state]) | async._BufferingStreamSubscription._STATE_HAS_PENDING) >>> 0;
        this[_pending].schedule(this);
      }
    }
    onData(handleData) {
      if (handleData == null) handleData = async._nullDataHandler;
      this[_onData] = this[_zone].registerUnaryCallback(dart.dynamic, T)(handleData);
    }
    onError(handleError) {
      if (handleError == null) handleError = async._nullErrorHandler;
      this[_onError] = async._registerErrorHandler(T)(handleError, this[_zone]);
    }
    onDone(handleDone) {
      if (handleDone == null) handleDone = async._nullDoneHandler;
      this[_onDone] = this[_zone].registerCallback(dart.dynamic)(handleDone);
    }
    pause(resumeSignal) {
      if (resumeSignal === void 0) resumeSignal = null;
      if (dart.test(this[_isCanceled])) return;
      let wasPaused = this[_isPaused];
      let wasInputPaused = this[_isInputPaused];
      this[_state] = (dart.notNull(this[_state]) + async._BufferingStreamSubscription._STATE_PAUSE_COUNT | async._BufferingStreamSubscription._STATE_INPUT_PAUSED) >>> 0;
      if (resumeSignal != null) resumeSignal.whenComplete(dart.bind(this, 'resume'));
      if (!dart.test(wasPaused) && this[_pending] != null) this[_pending].cancelSchedule();
      if (!dart.test(wasInputPaused) && !dart.test(this[_inCallback])) this[_guardCallback](dart.bind(this, _onPause));
    }
    resume() {
      if (dart.test(this[_isCanceled])) return;
      if (dart.test(this[_isPaused])) {
        this[_decrementPauseCount]();
        if (!dart.test(this[_isPaused])) {
          if (dart.test(this[_hasPending]) && !dart.test(this[_pending].isEmpty)) {
            this[_pending].schedule(this);
          } else {
            dart.assert(this[_mayResumeInput]);
            this[_state] = (dart.notNull(this[_state]) & ~async._BufferingStreamSubscription._STATE_INPUT_PAUSED) >>> 0;
            if (!dart.test(this[_inCallback])) this[_guardCallback](dart.bind(this, _onResume));
          }
        }
      }
    }
    cancel() {
      this[_state] = (dart.notNull(this[_state]) & ~async._BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL) >>> 0;
      if (dart.test(this[_isCanceled])) return this[_cancelFuture];
      this[_cancel]();
      return this[_cancelFuture];
    }
    asFuture(E) {
      return futureValue => {
        if (futureValue === void 0) futureValue = null;
        let result = new (async._Future$(E))();
        this[_onDone] = dart.fn(() => {
          result[_complete](futureValue);
        }, VoidTovoid());
        this[_onError] = dart.fn((error, stackTrace) => {
          this.cancel();
          result[_completeError](error, core.StackTrace._check(stackTrace));
        }, dynamicAnddynamicTodynamic());
        return result;
      };
    }
    get [_isInputPaused]() {
      return (dart.notNull(this[_state]) & async._BufferingStreamSubscription._STATE_INPUT_PAUSED) != 0;
    }
    get [_isClosed]() {
      return (dart.notNull(this[_state]) & async._BufferingStreamSubscription._STATE_CLOSED) != 0;
    }
    get [_isCanceled]() {
      return (dart.notNull(this[_state]) & async._BufferingStreamSubscription._STATE_CANCELED) != 0;
    }
    get [_waitsForCancel]() {
      return (dart.notNull(this[_state]) & async._BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL) != 0;
    }
    get [_inCallback]() {
      return (dart.notNull(this[_state]) & async._BufferingStreamSubscription._STATE_IN_CALLBACK) != 0;
    }
    get [_hasPending]() {
      return (dart.notNull(this[_state]) & async._BufferingStreamSubscription._STATE_HAS_PENDING) != 0;
    }
    get [_isPaused]() {
      return dart.notNull(this[_state]) >= async._BufferingStreamSubscription._STATE_PAUSE_COUNT;
    }
    get [_canFire]() {
      return dart.notNull(this[_state]) < async._BufferingStreamSubscription._STATE_IN_CALLBACK;
    }
    get [_mayResumeInput]() {
      return !dart.test(this[_isPaused]) && (this[_pending] == null || dart.test(this[_pending].isEmpty));
    }
    get [_cancelOnError]() {
      return (dart.notNull(this[_state]) & async._BufferingStreamSubscription._STATE_CANCEL_ON_ERROR) != 0;
    }
    get isPaused() {
      return this[_isPaused];
    }
    [_cancel]() {
      this[_state] = (dart.notNull(this[_state]) | async._BufferingStreamSubscription._STATE_CANCELED) >>> 0;
      if (dart.test(this[_hasPending])) {
        this[_pending].cancelSchedule();
      }
      if (!dart.test(this[_inCallback])) this[_pending] = null;
      this[_cancelFuture] = this[_onCancel]();
    }
    [_incrementPauseCount]() {
      this[_state] = (dart.notNull(this[_state]) + async._BufferingStreamSubscription._STATE_PAUSE_COUNT | async._BufferingStreamSubscription._STATE_INPUT_PAUSED) >>> 0;
    }
    [_decrementPauseCount]() {
      dart.assert(this[_isPaused]);
      this[_state] = dart.notNull(this[_state]) - async._BufferingStreamSubscription._STATE_PAUSE_COUNT;
    }
    [_add](data) {
      T._check(data);
      dart.assert(!dart.test(this[_isClosed]));
      if (dart.test(this[_isCanceled])) return;
      if (dart.test(this[_canFire])) {
        this[_sendData](data);
      } else {
        this[_addPending](new (_DelayedDataOfT())(data));
      }
    }
    [_addError](error, stackTrace) {
      if (dart.test(this[_isCanceled])) return;
      if (dart.test(this[_canFire])) {
        this[_sendError](error, stackTrace);
      } else {
        this[_addPending](new async._DelayedError(error, stackTrace));
      }
    }
    [_close]() {
      dart.assert(!dart.test(this[_isClosed]));
      if (dart.test(this[_isCanceled])) return;
      this[_state] = (dart.notNull(this[_state]) | async._BufferingStreamSubscription._STATE_CLOSED) >>> 0;
      if (dart.test(this[_canFire])) {
        this[_sendDone]();
      } else {
        this[_addPending](const || (const = dart.const(new async._DelayedDone())));
      }
    }
    [_onPause]() {
      dart.assert(this[_isInputPaused]);
    }
    [_onResume]() {
      dart.assert(!dart.test(this[_isInputPaused]));
    }
    [_onCancel]() {
      dart.assert(this[_isCanceled]);
      return null;
    }
    [_addPending](event) {
      let pending = _StreamImplEventsOfT()._check(this[_pending]);
      if (this[_pending] == null) {
        pending = this[_pending] = new (_StreamImplEventsOfT())();
      }
      pending.add(event);
      if (!dart.test(this[_hasPending])) {
        this[_state] = (dart.notNull(this[_state]) | async._BufferingStreamSubscription._STATE_HAS_PENDING) >>> 0;
        if (!dart.test(this[_isPaused])) {
          this[_pending].schedule(this);
        }
      }
    }
    [_sendData](data) {
      T._check(data);
      dart.assert(!dart.test(this[_isCanceled]));
      dart.assert(!dart.test(this[_isPaused]));
      dart.assert(!dart.test(this[_inCallback]));
      let wasInputPaused = this[_isInputPaused];
      this[_state] = (dart.notNull(this[_state]) | async._BufferingStreamSubscription._STATE_IN_CALLBACK) >>> 0;
      this[_zone].runUnaryGuarded(dart.dynamic, T)(this[_onData], data);
      this[_state] = (dart.notNull(this[_state]) & ~async._BufferingStreamSubscription._STATE_IN_CALLBACK) >>> 0;
      this[_checkState](wasInputPaused);
    }
    [_sendError](error, stackTrace) {
      dart.assert(!dart.test(this[_isCanceled]));
      dart.assert(!dart.test(this[_isPaused]));
      dart.assert(!dart.test(this[_inCallback]));
      let wasInputPaused = this[_isInputPaused];
      const sendError = (function() {
        if (dart.test(this[_isCanceled]) && !dart.test(this[_waitsForCancel])) return;
        this[_state] = (dart.notNull(this[_state]) | async._BufferingStreamSubscription._STATE_IN_CALLBACK) >>> 0;
        if (ZoneBinaryCallbackOfdynamic$Object$StackTrace().is(this[_onError])) {
          let errorCallback = ZoneBinaryCallbackOfdynamic$Object$StackTrace().as(this[_onError]);
          this[_zone].runBinaryGuarded(dart.dynamic, core.Object, core.StackTrace)(errorCallback, error, stackTrace);
        } else {
          this[_zone].runUnaryGuarded(dart.dynamic, dart.dynamic)(async.ZoneUnaryCallback.as(this[_onError]), error);
        }
        this[_state] = (dart.notNull(this[_state]) & ~async._BufferingStreamSubscription._STATE_IN_CALLBACK) >>> 0;
      }).bind(this);
      dart.fn(sendError, VoidTovoid());
      if (dart.test(this[_cancelOnError])) {
        this[_state] = (dart.notNull(this[_state]) | async._BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL) >>> 0;
        this[_cancel]();
        if (async.Future.is(this[_cancelFuture])) {
          this[_cancelFuture].whenComplete(sendError);
        } else {
          sendError();
        }
      } else {
        sendError();
        this[_checkState](wasInputPaused);
      }
    }
    [_sendDone]() {
      dart.assert(!dart.test(this[_isCanceled]));
      dart.assert(!dart.test(this[_isPaused]));
      dart.assert(!dart.test(this[_inCallback]));
      const sendDone = (function() {
        if (!dart.test(this[_waitsForCancel])) return;
        this[_state] = (dart.notNull(this[_state]) | async._BufferingStreamSubscription._STATE_CANCELED | async._BufferingStreamSubscription._STATE_CLOSED | async._BufferingStreamSubscription._STATE_IN_CALLBACK) >>> 0;
        this[_zone].runGuarded(dart.dynamic)(this[_onDone]);
        this[_state] = (dart.notNull(this[_state]) & ~async._BufferingStreamSubscription._STATE_IN_CALLBACK) >>> 0;
      }).bind(this);
      dart.fn(sendDone, VoidTovoid());
      this[_cancel]();
      this[_state] = (dart.notNull(this[_state]) | async._BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL) >>> 0;
      if (async.Future.is(this[_cancelFuture])) {
        this[_cancelFuture].whenComplete(sendDone);
      } else {
        sendDone();
      }
    }
    [_guardCallback](callback) {
      dart.assert(!dart.test(this[_inCallback]));
      let wasInputPaused = this[_isInputPaused];
      this[_state] = (dart.notNull(this[_state]) | async._BufferingStreamSubscription._STATE_IN_CALLBACK) >>> 0;
      dart.dcall(callback);
      this[_state] = (dart.notNull(this[_state]) & ~async._BufferingStreamSubscription._STATE_IN_CALLBACK) >>> 0;
      this[_checkState](wasInputPaused);
    }
    [_checkState](wasInputPaused) {
      dart.assert(!dart.test(this[_inCallback]));
      if (dart.test(this[_hasPending]) && dart.test(this[_pending].isEmpty)) {
        this[_state] = (dart.notNull(this[_state]) & ~async._BufferingStreamSubscription._STATE_HAS_PENDING) >>> 0;
        if (dart.test(this[_isInputPaused]) && dart.test(this[_mayResumeInput])) {
          this[_state] = (dart.notNull(this[_state]) & ~async._BufferingStreamSubscription._STATE_INPUT_PAUSED) >>> 0;
        }
      }
      while (true) {
        if (dart.test(this[_isCanceled])) {
          this[_pending] = null;
          return;
        }
        let isInputPaused = this[_isInputPaused];
        if (wasInputPaused == isInputPaused) break;
        this[_state] = (dart.notNull(this[_state]) ^ async._BufferingStreamSubscription._STATE_IN_CALLBACK) >>> 0;
        if (dart.test(isInputPaused)) {
          this[_onPause]();
        } else {
          this[_onResume]();
        }
        this[_state] = (dart.notNull(this[_state]) & ~async._BufferingStreamSubscription._STATE_IN_CALLBACK) >>> 0;
        wasInputPaused = isInputPaused;
      }
      if (dart.test(this[_hasPending]) && !dart.test(this[_isPaused])) {
        this[_pending].schedule(this);
      }
    }
  }
  dart.addTypeTests(_BufferingStreamSubscription);
  _BufferingStreamSubscription[dart.implements] = () => [StreamSubscriptionOfT(), _EventSinkOfT(), _EventDispatchOfT()];
  dart.setSignature(_BufferingStreamSubscription, {
    constructors: () => ({new: dart.definiteFunctionType(async._BufferingStreamSubscription$(T), [TTovoid(), core.Function, VoidTovoid(), core.bool])}),
    fields: () => ({
      [_onData]: TTovoid(),
      [_onError]: core.Function,
      [_onDone]: async._DoneHandler,
      [_zone]: async.Zone,
      [_state]: core.int,
      [_cancelFuture]: async.Future,
      [_pending]: _PendingEventsOfT()
    }),
    getters: () => ({
      [_isInputPaused]: dart.definiteFunctionType(core.bool, []),
      [_isClosed]: dart.definiteFunctionType(core.bool, []),
      [_isCanceled]: dart.definiteFunctionType(core.bool, []),
      [_waitsForCancel]: dart.definiteFunctionType(core.bool, []),
      [_inCallback]: dart.definiteFunctionType(core.bool, []),
      [_hasPending]: dart.definiteFunctionType(core.bool, []),
      [_isPaused]: dart.definiteFunctionType(core.bool, []),
      [_canFire]: dart.definiteFunctionType(core.bool, []),
      [_mayResumeInput]: dart.definiteFunctionType(core.bool, []),
      [_cancelOnError]: dart.definiteFunctionType(core.bool, []),
      isPaused: dart.definiteFunctionType(core.bool, [])
    }),
    methods: () => ({
      [_setPendingEvents]: dart.definiteFunctionType(dart.void, [_PendingEventsOfT()]),
      onData: dart.definiteFunctionType(dart.void, [TTovoid()]),
      onError: dart.definiteFunctionType(dart.void, [core.Function]),
      onDone: dart.definiteFunctionType(dart.void, [VoidTovoid()]),
      pause: dart.definiteFunctionType(dart.void, [], [async.Future]),
      resume: dart.definiteFunctionType(dart.void, []),
      cancel: dart.definiteFunctionType(async.Future, []),
      asFuture: dart.definiteFunctionType(E => [async.Future$(E), [], [E]]),
      [_cancel]: dart.definiteFunctionType(dart.void, []),
      [_incrementPauseCount]: dart.definiteFunctionType(dart.void, []),
      [_decrementPauseCount]: dart.definiteFunctionType(dart.void, []),
      [_add]: dart.definiteFunctionType(dart.void, [T]),
      [_addError]: dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace]),
      [_close]: dart.definiteFunctionType(dart.void, []),
      [_onPause]: dart.definiteFunctionType(dart.void, []),
      [_onResume]: dart.definiteFunctionType(dart.void, []),
      [_onCancel]: dart.definiteFunctionType(async.Future, []),
      [_addPending]: dart.definiteFunctionType(dart.void, [async._DelayedEvent]),
      [_sendData]: dart.definiteFunctionType(dart.void, [T]),
      [_sendError]: dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace]),
      [_sendDone]: dart.definiteFunctionType(dart.void, []),
      [_guardCallback]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
      [_checkState]: dart.definiteFunctionType(dart.void, [core.bool])
    }),
    sfields: () => ({
      _STATE_CANCEL_ON_ERROR: core.int,
      _STATE_CLOSED: core.int,
      _STATE_INPUT_PAUSED: core.int,
      _STATE_CANCELED: core.int,
      _STATE_WAIT_FOR_CANCEL: core.int,
      _STATE_IN_CALLBACK: core.int,
      _STATE_HAS_PENDING: core.int,
      _STATE_PAUSE_COUNT: core.int,
      _STATE_PAUSE_COUNT_SHIFT: core.int
    })
  });
  return _BufferingStreamSubscription;
});
async._BufferingStreamSubscription = _BufferingStreamSubscription();
async._BufferingStreamSubscription._STATE_CANCEL_ON_ERROR = 1;
async._BufferingStreamSubscription._STATE_CLOSED = 2;
async._BufferingStreamSubscription._STATE_INPUT_PAUSED = 4;
async._BufferingStreamSubscription._STATE_CANCELED = 8;
async._BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL = 16;
async._BufferingStreamSubscription._STATE_IN_CALLBACK = 32;
async._BufferingStreamSubscription._STATE_HAS_PENDING = 64;
async._BufferingStreamSubscription._STATE_PAUSE_COUNT = 128;
async._BufferingStreamSubscription._STATE_PAUSE_COUNT_SHIFT = 7;
async._ControllerSubscription$ = dart.generic(T => {
  let _StreamControllerLifecycleOfT = () => (_StreamControllerLifecycleOfT = dart.constFn(async._StreamControllerLifecycle$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _ControllerSubscription extends async._BufferingStreamSubscription$(T) {
    new(controller, onData, onError, onDone, cancelOnError) {
      this[_controller] = controller;
      super.new(onData, onError, onDone, cancelOnError);
    }
    [_onCancel]() {
      return this[_controller][_recordCancel](this);
    }
    [_onPause]() {
      this[_controller][_recordPause](this);
    }
    [_onResume]() {
      this[_controller][_recordResume](this);
    }
  }
  dart.setSignature(_ControllerSubscription, {
    constructors: () => ({new: dart.definiteFunctionType(async._ControllerSubscription$(T), [_StreamControllerLifecycleOfT(), TTovoid(), core.Function, VoidTovoid(), core.bool])}),
    fields: () => ({[_controller]: _StreamControllerLifecycleOfT()})
  });
  return _ControllerSubscription;
});
async._ControllerSubscription = _ControllerSubscription();
async._BroadcastSubscription$ = dart.generic(T => {
  let _BroadcastSubscriptionOfT = () => (_BroadcastSubscriptionOfT = dart.constFn(async._BroadcastSubscription$(T)))();
  let _StreamControllerLifecycleOfT = () => (_StreamControllerLifecycleOfT = dart.constFn(async._StreamControllerLifecycle$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _BroadcastSubscription extends async._ControllerSubscription$(T) {
    new(controller, onData, onError, onDone, cancelOnError) {
      this[_eventState] = 0;
      this[_next] = null;
      this[_previous] = null;
      super.new(controller, onData, onError, onDone, cancelOnError);
      this[_next] = this[_previous] = this;
    }
    [_expectsEvent](eventId) {
      return (dart.notNull(this[_eventState]) & async._BroadcastSubscription._STATE_EVENT_ID) == eventId;
    }
    [_toggleEventId]() {
      this[_eventState] = (dart.notNull(this[_eventState]) ^ async._BroadcastSubscription._STATE_EVENT_ID) >>> 0;
    }
    get [_isFiring]() {
      return (dart.notNull(this[_eventState]) & async._BroadcastSubscription._STATE_FIRING) != 0;
    }
    [_setRemoveAfterFiring]() {
      dart.assert(this[_isFiring]);
      this[_eventState] = (dart.notNull(this[_eventState]) | async._BroadcastSubscription._STATE_REMOVE_AFTER_FIRING) >>> 0;
    }
    get [_removeAfterFiring]() {
      return (dart.notNull(this[_eventState]) & async._BroadcastSubscription._STATE_REMOVE_AFTER_FIRING) != 0;
    }
    [_onPause]() {}
    [_onResume]() {}
  }
  dart.setSignature(_BroadcastSubscription, {
    constructors: () => ({new: dart.definiteFunctionType(async._BroadcastSubscription$(T), [_StreamControllerLifecycleOfT(), TTovoid(), core.Function, VoidTovoid(), core.bool])}),
    fields: () => ({
      [_eventState]: core.int,
      [_next]: _BroadcastSubscriptionOfT(),
      [_previous]: _BroadcastSubscriptionOfT()
    }),
    getters: () => ({
      [_isFiring]: dart.definiteFunctionType(core.bool, []),
      [_removeAfterFiring]: dart.definiteFunctionType(core.bool, [])
    }),
    methods: () => ({
      [_expectsEvent]: dart.definiteFunctionType(core.bool, [core.int]),
      [_toggleEventId]: dart.definiteFunctionType(dart.void, []),
      [_setRemoveAfterFiring]: dart.definiteFunctionType(dart.void, [])
    }),
    sfields: () => ({
      _STATE_EVENT_ID: core.int,
      _STATE_FIRING: core.int,
      _STATE_REMOVE_AFTER_FIRING: core.int
    })
  });
  return _BroadcastSubscription;
});
async._BroadcastSubscription = _BroadcastSubscription();
async._BroadcastSubscription._STATE_EVENT_ID = 1;
async._BroadcastSubscription._STATE_FIRING = 2;
async._BroadcastSubscription._STATE_REMOVE_AFTER_FIRING = 4;
const _firstSubscription = Symbol('_firstSubscription');
const _lastSubscription = Symbol('_lastSubscription');
const _addStreamState = Symbol('_addStreamState');
const _doneFuture = Symbol('_doneFuture');
const _isEmpty = Symbol('_isEmpty');
const _hasOneListener = Symbol('_hasOneListener');
const _isAddingStream = Symbol('_isAddingStream');
const _mayAddEvent = Symbol('_mayAddEvent');
const _ensureDoneFuture = Symbol('_ensureDoneFuture');
const _addListener = Symbol('_addListener');
const _removeListener = Symbol('_removeListener');
const _callOnCancel = Symbol('_callOnCancel');
const _addEventError = Symbol('_addEventError');
const _forEachListener = Symbol('_forEachListener');
const _mayComplete = Symbol('_mayComplete');
const _asyncComplete = Symbol('_asyncComplete');
async._BroadcastStreamController$ = dart.generic(T => {
  let _BroadcastStreamOfT = () => (_BroadcastStreamOfT = dart.constFn(async._BroadcastStream$(T)))();
  let _StreamSinkWrapperOfT = () => (_StreamSinkWrapperOfT = dart.constFn(async._StreamSinkWrapper$(T)))();
  let _BroadcastSubscriptionOfT = () => (_BroadcastSubscriptionOfT = dart.constFn(async._BroadcastSubscription$(T)))();
  let _DoneStreamSubscriptionOfT = () => (_DoneStreamSubscriptionOfT = dart.constFn(async._DoneStreamSubscription$(T)))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let _AddStreamStateOfT = () => (_AddStreamStateOfT = dart.constFn(async._AddStreamState$(T)))();
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  let _StreamControllerLifecycleOfT = () => (_StreamControllerLifecycleOfT = dart.constFn(async._StreamControllerLifecycle$(T)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  let _BufferingStreamSubscriptionOfT = () => (_BufferingStreamSubscriptionOfT = dart.constFn(async._BufferingStreamSubscription$(T)))();
  let _BufferingStreamSubscriptionOfTTovoid = () => (_BufferingStreamSubscriptionOfTTovoid = dart.constFn(dart.functionType(dart.void, [_BufferingStreamSubscriptionOfT()])))();
  class _BroadcastStreamController extends core.Object {
    new(onListen, onCancel) {
      this.onListen = onListen;
      this.onCancel = onCancel;
      this[_state] = async._BroadcastStreamController._STATE_INITIAL;
      this[_firstSubscription] = null;
      this[_lastSubscription] = null;
      this[_addStreamState] = null;
      this[_doneFuture] = null;
    }
    get onPause() {
      dart.throw(new core.UnsupportedError("Broadcast stream controllers do not support pause callbacks"));
    }
    set onPause(onPauseHandler) {
      dart.throw(new core.UnsupportedError("Broadcast stream controllers do not support pause callbacks"));
    }
    get onResume() {
      dart.throw(new core.UnsupportedError("Broadcast stream controllers do not support pause callbacks"));
    }
    set onResume(onResumeHandler) {
      dart.throw(new core.UnsupportedError("Broadcast stream controllers do not support pause callbacks"));
    }
    get stream() {
      return new (_BroadcastStreamOfT())(this);
    }
    get sink() {
      return new (_StreamSinkWrapperOfT())(this);
    }
    get isClosed() {
      return (dart.notNull(this[_state]) & async._BroadcastStreamController._STATE_CLOSED) != 0;
    }
    get isPaused() {
      return false;
    }
    get hasListener() {
      return !dart.test(this[_isEmpty]);
    }
    get [_hasOneListener]() {
      dart.assert(!dart.test(this[_isEmpty]));
      return core.identical(this[_firstSubscription], this[_lastSubscription]);
    }
    get [_isFiring]() {
      return (dart.notNull(this[_state]) & async._BroadcastStreamController._STATE_FIRING) != 0;
    }
    get [_isAddingStream]() {
      return (dart.notNull(this[_state]) & async._BroadcastStreamController._STATE_ADDSTREAM) != 0;
    }
    get [_mayAddEvent]() {
      return dart.notNull(this[_state]) < async._BroadcastStreamController._STATE_CLOSED;
    }
    [_ensureDoneFuture]() {
      if (this[_doneFuture] != null) return this[_doneFuture];
      return this[_doneFuture] = new async._Future();
    }
    get [_isEmpty]() {
      return this[_firstSubscription] == null;
    }
    [_addListener](subscription) {
      _BroadcastSubscriptionOfT()._check(subscription);
      dart.assert(core.identical(subscription[_next], subscription));
      subscription[_eventState] = dart.notNull(this[_state]) & async._BroadcastStreamController._STATE_EVENT_ID;
      let oldLast = this[_lastSubscription];
      this[_lastSubscription] = subscription;
      subscription[_next] = null;
      subscription[_previous] = oldLast;
      if (oldLast == null) {
        this[_firstSubscription] = subscription;
      } else {
        oldLast[_next] = subscription;
      }
    }
    [_removeListener](subscription) {
      _BroadcastSubscriptionOfT()._check(subscription);
      dart.assert(core.identical(subscription[_controller], this));
      dart.assert(!core.identical(subscription[_next], subscription));
      let previous = subscription[_previous];
      let next = subscription[_next];
      if (previous == null) {
        this[_firstSubscription] = next;
      } else {
        previous[_next] = next;
      }
      if (next == null) {
        this[_lastSubscription] = previous;
      } else {
        next[_previous] = previous;
      }
      subscription[_next] = subscription[_previous] = subscription;
    }
    [_subscribe](onData, onError, onDone, cancelOnError) {
      if (dart.test(this.isClosed)) {
        if (onDone == null) onDone = async._nullDoneHandler;
        return new (_DoneStreamSubscriptionOfT())(onDone);
      }
      let subscription = new (_BroadcastSubscriptionOfT())(this, onData, onError, onDone, cancelOnError);
      this[_addListener](_BroadcastSubscriptionOfT()._check(subscription));
      if (core.identical(this[_firstSubscription], this[_lastSubscription])) {
        async._runGuarded(this.onListen);
      }
      return subscription;
    }
    [_recordCancel](sub) {
      StreamSubscriptionOfT()._check(sub);
      let subscription = _BroadcastSubscriptionOfT()._check(sub);
      if (core.identical(subscription[_next], subscription)) return null;
      if (dart.test(subscription[_isFiring])) {
        subscription[_setRemoveAfterFiring]();
      } else {
        this[_removeListener](subscription);
        if (!dart.test(this[_isFiring]) && dart.test(this[_isEmpty])) {
          this[_callOnCancel]();
        }
      }
      return null;
    }
    [_recordPause](subscription) {
      StreamSubscriptionOfT()._check(subscription);
    }
    [_recordResume](subscription) {
      StreamSubscriptionOfT()._check(subscription);
    }
    [_addEventError]() {
      if (dart.test(this.isClosed)) {
        return new core.StateError("Cannot add new events after calling close");
      }
      dart.assert(this[_isAddingStream]);
      return new core.StateError("Cannot add new events while doing an addStream");
    }
    add(data) {
      T._check(data);
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
      this[_sendData](data);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      error = async._nonNullError(error);
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
      let replacement = async.Zone.current.errorCallback(error, stackTrace);
      if (replacement != null) {
        error = async._nonNullError(replacement.error);
        stackTrace = replacement.stackTrace;
      }
      this[_sendError](error, stackTrace);
    }
    close() {
      if (dart.test(this.isClosed)) {
        dart.assert(this[_doneFuture] != null);
        return this[_doneFuture];
      }
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
      this[_state] = (dart.notNull(this[_state]) | async._BroadcastStreamController._STATE_CLOSED) >>> 0;
      let doneFuture = this[_ensureDoneFuture]();
      this[_sendDone]();
      return doneFuture;
    }
    get done() {
      return this[_ensureDoneFuture]();
    }
    addStream(stream, opts) {
      StreamOfT()._check(stream);
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : true;
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
      this[_state] = (dart.notNull(this[_state]) | async._BroadcastStreamController._STATE_ADDSTREAM) >>> 0;
      this[_addStreamState] = new (_AddStreamStateOfT())(this, stream, cancelOnError);
      return this[_addStreamState].addStreamFuture;
    }
    [_add](data) {
      T._check(data);
      this[_sendData](data);
    }
    [_addError](error, stackTrace) {
      this[_sendError](error, stackTrace);
    }
    [_close]() {
      dart.assert(this[_isAddingStream]);
      let addState = this[_addStreamState];
      this[_addStreamState] = null;
      this[_state] = (dart.notNull(this[_state]) & ~async._BroadcastStreamController._STATE_ADDSTREAM) >>> 0;
      addState.complete();
    }
    [_forEachListener](action) {
      if (dart.test(this[_isFiring])) {
        dart.throw(new core.StateError("Cannot fire new event. Controller is already firing an event"));
      }
      if (dart.test(this[_isEmpty])) return;
      let id = dart.notNull(this[_state]) & async._BroadcastStreamController._STATE_EVENT_ID;
      this[_state] = (dart.notNull(this[_state]) ^ (async._BroadcastStreamController._STATE_EVENT_ID | async._BroadcastStreamController._STATE_FIRING)) >>> 0;
      let subscription = this[_firstSubscription];
      while (subscription != null) {
        if (dart.test(subscription[_expectsEvent](id))) {
          subscription[_eventState] = (dart.notNull(subscription[_eventState]) | async._BroadcastSubscription._STATE_FIRING) >>> 0;
          action(subscription);
          subscription[_toggleEventId]();
          let next = subscription[_next];
          if (dart.test(subscription[_removeAfterFiring])) {
            this[_removeListener](subscription);
          }
          subscription[_eventState] = (dart.notNull(subscription[_eventState]) & ~async._BroadcastSubscription._STATE_FIRING) >>> 0;
          subscription = next;
        } else {
          subscription = subscription[_next];
        }
      }
      this[_state] = (dart.notNull(this[_state]) & ~async._BroadcastStreamController._STATE_FIRING) >>> 0;
      if (dart.test(this[_isEmpty])) {
        this[_callOnCancel]();
      }
    }
    [_callOnCancel]() {
      dart.assert(this[_isEmpty]);
      if (dart.test(this.isClosed) && dart.test(this[_doneFuture][_mayComplete])) {
        this[_doneFuture][_asyncComplete](null);
      }
      async._runGuarded(this.onCancel);
    }
  }
  dart.addTypeTests(_BroadcastStreamController);
  _BroadcastStreamController[dart.implements] = () => [StreamControllerOfT(), _StreamControllerLifecycleOfT(), _EventSinkOfT(), _EventDispatchOfT()];
  dart.setSignature(_BroadcastStreamController, {
    constructors: () => ({new: dart.definiteFunctionType(async._BroadcastStreamController$(T), [async.ControllerCallback, async.ControllerCancelCallback])}),
    fields: () => ({
      onListen: async.ControllerCallback,
      onCancel: async.ControllerCancelCallback,
      [_state]: core.int,
      [_firstSubscription]: _BroadcastSubscriptionOfT(),
      [_lastSubscription]: _BroadcastSubscriptionOfT(),
      [_addStreamState]: _AddStreamStateOfT(),
      [_doneFuture]: async._Future
    }),
    getters: () => ({
      onPause: dart.definiteFunctionType(async.ControllerCallback, []),
      onResume: dart.definiteFunctionType(async.ControllerCallback, []),
      stream: dart.definiteFunctionType(async.Stream$(T), []),
      sink: dart.definiteFunctionType(async.StreamSink$(T), []),
      isClosed: dart.definiteFunctionType(core.bool, []),
      isPaused: dart.definiteFunctionType(core.bool, []),
      hasListener: dart.definiteFunctionType(core.bool, []),
      [_hasOneListener]: dart.definiteFunctionType(core.bool, []),
      [_isFiring]: dart.definiteFunctionType(core.bool, []),
      [_isAddingStream]: dart.definiteFunctionType(core.bool, []),
      [_mayAddEvent]: dart.definiteFunctionType(core.bool, []),
      [_isEmpty]: dart.definiteFunctionType(core.bool, []),
      done: dart.definiteFunctionType(async.Future, [])
    }),
    setters: () => ({
      onPause: dart.definiteFunctionType(dart.void, [VoidTovoid()]),
      onResume: dart.definiteFunctionType(dart.void, [VoidTovoid()])
    }),
    methods: () => ({
      [_ensureDoneFuture]: dart.definiteFunctionType(async._Future, []),
      [_addListener]: dart.definiteFunctionType(dart.void, [_BroadcastSubscriptionOfT()]),
      [_removeListener]: dart.definiteFunctionType(dart.void, [_BroadcastSubscriptionOfT()]),
      [_subscribe]: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid(), core.Function, VoidTovoid(), core.bool]),
      [_recordCancel]: dart.definiteFunctionType(async.Future, [StreamSubscriptionOfT()]),
      [_recordPause]: dart.definiteFunctionType(dart.void, [StreamSubscriptionOfT()]),
      [_recordResume]: dart.definiteFunctionType(dart.void, [StreamSubscriptionOfT()]),
      [_addEventError]: dart.definiteFunctionType(core.Error, []),
      add: dart.definiteFunctionType(dart.void, [T]),
      addError: dart.definiteFunctionType(dart.void, [core.Object], [core.StackTrace]),
      close: dart.definiteFunctionType(async.Future, []),
      addStream: dart.definiteFunctionType(async.Future, [StreamOfT()], {cancelOnError: core.bool}),
      [_add]: dart.definiteFunctionType(dart.void, [T]),
      [_addError]: dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace]),
      [_close]: dart.definiteFunctionType(dart.void, []),
      [_forEachListener]: dart.definiteFunctionType(dart.void, [_BufferingStreamSubscriptionOfTTovoid()]),
      [_callOnCancel]: dart.definiteFunctionType(dart.void, [])
    }),
    sfields: () => ({
      _STATE_INITIAL: core.int,
      _STATE_EVENT_ID: core.int,
      _STATE_FIRING: core.int,
      _STATE_CLOSED: core.int,
      _STATE_ADDSTREAM: core.int
    })
  });
  return _BroadcastStreamController;
});
async._BroadcastStreamController = _BroadcastStreamController();
async._BroadcastStreamController._STATE_INITIAL = 0;
async._BroadcastStreamController._STATE_EVENT_ID = 1;
async._BroadcastStreamController._STATE_FIRING = 2;
async._BroadcastStreamController._STATE_CLOSED = 4;
async._BroadcastStreamController._STATE_ADDSTREAM = 8;
async._SyncBroadcastStreamController$ = dart.generic(T => {
  let _BufferingStreamSubscriptionOfT = () => (_BufferingStreamSubscriptionOfT = dart.constFn(async._BufferingStreamSubscription$(T)))();
  let SynchronousStreamControllerOfT = () => (SynchronousStreamControllerOfT = dart.constFn(async.SynchronousStreamController$(T)))();
  let _BufferingStreamSubscriptionOfTTovoid = () => (_BufferingStreamSubscriptionOfTTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [_BufferingStreamSubscriptionOfT()])))();
  class _SyncBroadcastStreamController extends async._BroadcastStreamController$(T) {
    new(onListen, onCancel) {
      super.new(onListen, onCancel);
    }
    get [_mayAddEvent]() {
      return dart.test(super[_mayAddEvent]) && !dart.test(this[_isFiring]);
    }
    [_addEventError]() {
      if (dart.test(this[_isFiring])) {
        return new core.StateError("Cannot fire new event. Controller is already firing an event");
      }
      return super[_addEventError]();
    }
    [_sendData](data) {
      T._check(data);
      if (dart.test(this[_isEmpty])) return;
      if (dart.test(this[_hasOneListener])) {
        this[_state] = (dart.notNull(this[_state]) | async._BroadcastStreamController._STATE_FIRING) >>> 0;
        let subscription = this[_firstSubscription];
        subscription[_add](data);
        this[_state] = (dart.notNull(this[_state]) & ~async._BroadcastStreamController._STATE_FIRING) >>> 0;
        if (dart.test(this[_isEmpty])) {
          this[_callOnCancel]();
        }
        return;
      }
      this[_forEachListener](dart.fn(subscription => {
        subscription[_add](data);
      }, _BufferingStreamSubscriptionOfTTovoid()));
    }
    [_sendError](error, stackTrace) {
      if (dart.test(this[_isEmpty])) return;
      this[_forEachListener](dart.fn(subscription => {
        subscription[_addError](error, stackTrace);
      }, _BufferingStreamSubscriptionOfTTovoid()));
    }
    [_sendDone]() {
      if (!dart.test(this[_isEmpty])) {
        this[_forEachListener](dart.fn(subscription => {
          subscription[_close]();
        }, _BufferingStreamSubscriptionOfTTovoid()));
      } else {
        dart.assert(this[_doneFuture] != null);
        dart.assert(this[_doneFuture][_mayComplete]);
        this[_doneFuture][_asyncComplete](null);
      }
    }
  }
  _SyncBroadcastStreamController[dart.implements] = () => [SynchronousStreamControllerOfT()];
  dart.setSignature(_SyncBroadcastStreamController, {
    constructors: () => ({new: dart.definiteFunctionType(async._SyncBroadcastStreamController$(T), [VoidTovoid(), VoidTovoid()])}),
    methods: () => ({
      [_sendData]: dart.definiteFunctionType(dart.void, [T]),
      [_sendError]: dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace]),
      [_sendDone]: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _SyncBroadcastStreamController;
});
async._SyncBroadcastStreamController = _SyncBroadcastStreamController();
let const;
async._AsyncBroadcastStreamController$ = dart.generic(T => {
  let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
  class _AsyncBroadcastStreamController extends async._BroadcastStreamController$(T) {
    new(onListen, onCancel) {
      super.new(onListen, onCancel);
    }
    [_sendData](data) {
      T._check(data);
      for (let subscription = this[_firstSubscription]; subscription != null; subscription = subscription[_next]) {
        subscription[_addPending](new (_DelayedDataOfT())(data));
      }
    }
    [_sendError](error, stackTrace) {
      for (let subscription = this[_firstSubscription]; subscription != null; subscription = subscription[_next]) {
        subscription[_addPending](new async._DelayedError(error, stackTrace));
      }
    }
    [_sendDone]() {
      if (!dart.test(this[_isEmpty])) {
        for (let subscription = this[_firstSubscription]; subscription != null; subscription = subscription[_next]) {
          subscription[_addPending](const || (const = dart.const(new async._DelayedDone())));
        }
      } else {
        dart.assert(this[_doneFuture] != null);
        dart.assert(this[_doneFuture][_mayComplete]);
        this[_doneFuture][_asyncComplete](null);
      }
    }
  }
  dart.setSignature(_AsyncBroadcastStreamController, {
    constructors: () => ({new: dart.definiteFunctionType(async._AsyncBroadcastStreamController$(T), [VoidTovoid(), VoidTovoid()])}),
    methods: () => ({
      [_sendData]: dart.definiteFunctionType(dart.void, [T]),
      [_sendError]: dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace]),
      [_sendDone]: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _AsyncBroadcastStreamController;
});
async._AsyncBroadcastStreamController = _AsyncBroadcastStreamController();
const _addPendingEvent = Symbol('_addPendingEvent');
let const;
async._AsBroadcastStreamController$ = dart.generic(T => {
  let _StreamImplEventsOfT = () => (_StreamImplEventsOfT = dart.constFn(async._StreamImplEvents$(T)))();
  let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  class _AsBroadcastStreamController extends async._SyncBroadcastStreamController$(T) {
    new(onListen, onCancel) {
      this[_pending] = null;
      super.new(onListen, onCancel);
    }
    get [_hasPending]() {
      return this[_pending] != null && !dart.test(this[_pending].isEmpty);
    }
    [_addPendingEvent](event) {
      if (this[_pending] == null) {
        this[_pending] = new (_StreamImplEventsOfT())();
      }
      this[_pending].add(event);
    }
    add(data) {
      T._check(data);
      if (!dart.test(this.isClosed) && dart.test(this[_isFiring])) {
        this[_addPendingEvent](new (_DelayedDataOfT())(data));
        return;
      }
      super.add(data);
      while (dart.test(this[_hasPending])) {
        this[_pending].handleNext(this);
      }
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      if (!dart.test(this.isClosed) && dart.test(this[_isFiring])) {
        this[_addPendingEvent](new async._DelayedError(error, stackTrace));
        return;
      }
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
      this[_sendError](error, stackTrace);
      while (dart.test(this[_hasPending])) {
        this[_pending].handleNext(this);
      }
    }
    close() {
      if (!dart.test(this.isClosed) && dart.test(this[_isFiring])) {
        this[_addPendingEvent](const || (const = dart.const(new async._DelayedDone())));
        this[_state] = (dart.notNull(this[_state]) | async._BroadcastStreamController._STATE_CLOSED) >>> 0;
        return super.done;
      }
      let result = super.close();
      dart.assert(!dart.test(this[_hasPending]));
      return result;
    }
    [_callOnCancel]() {
      if (dart.test(this[_hasPending])) {
        this[_pending].clear();
        this[_pending] = null;
      }
      super[_callOnCancel]();
    }
  }
  _AsBroadcastStreamController[dart.implements] = () => [_EventDispatchOfT()];
  dart.setSignature(_AsBroadcastStreamController, {
    constructors: () => ({new: dart.definiteFunctionType(async._AsBroadcastStreamController$(T), [VoidTovoid(), VoidTovoid()])}),
    fields: () => ({[_pending]: _StreamImplEventsOfT()}),
    getters: () => ({[_hasPending]: dart.definiteFunctionType(core.bool, [])}),
    methods: () => ({
      [_addPendingEvent]: dart.definiteFunctionType(dart.void, [async._DelayedEvent]),
      add: dart.definiteFunctionType(dart.void, [T])
    })
  });
  return _AsBroadcastStreamController;
});
async._AsBroadcastStreamController = _AsBroadcastStreamController();
const _pauseCount = Symbol('_pauseCount');
const _resume = Symbol('_resume');
async._DoneSubscription$ = dart.generic(T => {
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _DoneSubscription extends core.Object {
    new() {
      this[_pauseCount] = 0;
    }
    onData(handleData) {}
    onError(handleError) {}
    onDone(handleDone) {}
    pause(resumeSignal) {
      if (resumeSignal === void 0) resumeSignal = null;
      if (resumeSignal != null) resumeSignal.then(dart.dynamic)(dart.bind(this, _resume));
      this[_pauseCount] = dart.notNull(this[_pauseCount]) + 1;
    }
    resume() {
      this[_resume](null);
    }
    [_resume](_) {
      if (dart.notNull(this[_pauseCount]) > 0) {
        this[_pauseCount] = dart.notNull(this[_pauseCount]) - 1;
      }
    }
    cancel() {
      return new async._Future.immediate(null);
    }
    get isPaused() {
      return dart.notNull(this[_pauseCount]) > 0;
    }
    asFuture(E) {
      return value => {
        if (value === void 0) value = null;
        return new (async._Future$(E))();
      };
    }
  }
  dart.addTypeTests(_DoneSubscription);
  _DoneSubscription[dart.implements] = () => [StreamSubscriptionOfT()];
  dart.setSignature(_DoneSubscription, {
    fields: () => ({[_pauseCount]: core.int}),
    getters: () => ({isPaused: dart.definiteFunctionType(core.bool, [])}),
    methods: () => ({
      onData: dart.definiteFunctionType(dart.void, [TTovoid()]),
      onError: dart.definiteFunctionType(dart.void, [core.Function]),
      onDone: dart.definiteFunctionType(dart.void, [VoidTovoid()]),
      pause: dart.definiteFunctionType(dart.void, [], [async.Future]),
      resume: dart.definiteFunctionType(dart.void, []),
      [_resume]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
      cancel: dart.definiteFunctionType(async.Future, []),
      asFuture: dart.definiteFunctionType(E => [async.Future$(E), [], [E]])
    })
  });
  return _DoneSubscription;
});
async._DoneSubscription = _DoneSubscription();
async.DeferredLibrary = class DeferredLibrary extends core.Object {
  new(libraryName, opts) {
    let uri = opts && 'uri' in opts ? opts.uri : null;
    this.libraryName = libraryName;
    this.uri = uri;
  }
  load() {
    dart.throw('DeferredLibrary not supported. ' + 'please use the `import "lib.dart" deferred as lib` syntax.');
  }
};
dart.setSignature(async.DeferredLibrary, {
  constructors: () => ({new: dart.definiteFunctionType(async.DeferredLibrary, [core.String], {uri: core.String})}),
  fields: () => ({
    libraryName: core.String,
    uri: core.String
  }),
  methods: () => ({load: dart.definiteFunctionType(async.Future$(core.Null), [])})
});
const _s = Symbol('_s');
async.DeferredLoadException = class DeferredLoadException extends core.Object {
  new(s) {
    this[_s] = s;
  }
  toString() {
    return dart.str`DeferredLoadException: '${this[_s]}'`;
  }
};
async.DeferredLoadException[dart.implements] = () => [core.Exception];
dart.setSignature(async.DeferredLoadException, {
  constructors: () => ({new: dart.definiteFunctionType(async.DeferredLoadException, [core.String])}),
  fields: () => ({[_s]: core.String})
});
const _completeWithValue = Symbol('_completeWithValue');
let const;
async.Future$ = dart.flattenFutures(dart.generic(T => {
  let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
  let FutureOfT = () => (FutureOfT = dart.constFn(async.Future$(T)))();
  class Future extends core.Object {
    static new(computation) {
      let result = new (_FutureOfT())();
      async.Timer.run(dart.fn(() => {
        try {
          result[_complete](computation());
        } catch (e) {
          let s = dart.stackTrace(e);
          async._completeWithErrorCallback(result, e, s);
        }

      }, VoidTovoid()));
      return result;
    }
    static microtask(computation) {
      let result = new (_FutureOfT())();
      async.scheduleMicrotask(dart.fn(() => {
        try {
          result[_complete](computation());
        } catch (e) {
          let s = dart.stackTrace(e);
          async._completeWithErrorCallback(result, e, s);
        }

      }, VoidTovoid()));
      return result;
    }
    static sync(computation) {
      try {
        let result = computation();
        return FutureOfT().value(result);
      } catch (error) {
        let stackTrace = dart.stackTrace(error);
        return FutureOfT().error(error, stackTrace);
      }

    }
    static value(value) {
      if (value === void 0) value = null;
      return new (_FutureOfT()).immediate(value);
    }
    static error(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      error = async._nonNullError(error);
      if (!core.identical(async.Zone.current, async._ROOT_ZONE)) {
        let replacement = async.Zone.current.errorCallback(error, stackTrace);
        if (replacement != null) {
          error = async._nonNullError(replacement.error);
          stackTrace = replacement.stackTrace;
        }
      }
      return new (_FutureOfT()).immediateError(error, stackTrace);
    }
    static delayed(duration, computation) {
      if (computation === void 0) computation = null;
      let result = new (_FutureOfT())();
      async.Timer.new(duration, dart.fn(() => {
        try {
          result[_complete](computation == null ? null : computation());
        } catch (e) {
          let s = dart.stackTrace(e);
          async._completeWithErrorCallback(result, e, s);
        }

      }, VoidTovoid()));
      return result;
    }
    static wait(T) {
      return (futures, opts) => {
        let eagerError = opts && 'eagerError' in opts ? opts.eagerError : false;
        let cleanUp = opts && 'cleanUp' in opts ? opts.cleanUp : null;
        let result = new (async._Future$(core.List$(T)))();
        let values = null;
        let remaining = 0;
        let error = null;
        let stackTrace = null;
        function handleError(theError, theStackTrace) {
          remaining--;
          if (values != null) {
            if (cleanUp != null) {
              for (let value of values) {
                if (value != null) {
                  async.Future.sync(dart.fn(() => {
                    cleanUp(value);
                  }, VoidTodynamic()));
                }
              }
            }
            values = null;
            if (remaining == 0 || dart.test(eagerError)) {
              result[_completeError](theError, core.StackTrace._check(theStackTrace));
            } else {
              error = theError;
              stackTrace = core.StackTrace._check(theStackTrace);
            }
          } else if (remaining == 0 && !dart.test(eagerError)) {
            result[_completeError](error, stackTrace);
          }
        }
        dart.fn(handleError, dynamicAnddynamicTovoid());
        for (let future of futures) {
          let pos = remaining++;
          future.then(dart.dynamic)(dart.fn(value => {
            remaining--;
            if (values != null) {
              values[dartx._set](pos, value);
              if (remaining == 0) {
                result[_completeWithValue](values);
              }
            } else {
              if (cleanUp != null && value != null) {
                async.Future.sync(dart.fn(() => {
                  cleanUp(value);
                }, VoidTodynamic()));
              }
              if (remaining == 0 && !dart.test(eagerError)) {
                result[_completeError](error, stackTrace);
              }
            }
          }, dart.definiteFunctionType(dart.dynamic, [T])), {onError: handleError});
        }
        if (remaining == 0) {
          return async.Future$(core.List$(T)).value(const || (const = dart.constList([], dart.dynamic)));
        }
        values = core.List$(T).new(remaining);
        return result;
      };
    }
    static any(T) {
      return futures => {
        let completer = async.Completer$(T).sync();
        let onValue = dart.fn(value => {
          if (!dart.test(completer.isCompleted)) completer.complete(value);
        }, dart.definiteFunctionType(dart.dynamic, [T]));
        let onError = dart.fn((error, stack) => {
          if (!dart.test(completer.isCompleted)) completer.completeError(error, core.StackTrace._check(stack));
        }, dynamicAnddynamicTodynamic());
        for (let future of futures) {
          future.then(dart.dynamic)(onValue, {onError: onError});
        }
        return completer.future;
      };
    }
    static forEach(input, f) {
      let iterator = input[dartx.iterator];
      return async.Future.doWhile(dart.fn(() => {
        if (!dart.test(iterator.moveNext())) return false;
        return async.Future.sync(dart.fn(() => dart.dcall(f, iterator.current), VoidTodynamic())).then(core.bool)(dart.fn(_ => true, dynamicTobool()));
      }, VoidToObject()));
    }
    static doWhile(f) {
      let doneSignal = new async._Future();
      let nextIteration = null;
      nextIteration = async.Zone.current.bindUnaryCallback(dart.dynamic, core.bool)(dart.fn(keepGoing => {
        if (dart.test(keepGoing)) {
          async.Future.sync(f).then(dart.dynamic)(dynamicTodynamic()._check(nextIteration), {onError: dart.bind(doneSignal, _completeError)});
        } else {
          doneSignal[_complete](null);
        }
      }, boolTodynamic()), {runGuarded: true});
      dart.dcall(nextIteration, true);
      return doneSignal;
    }
  }
  dart.addTypeTests(Future);
  dart.setSignature(Future, {
    constructors: () => ({
      new: dart.definiteFunctionType(async.Future$(T), [VoidTodynamic()]),
      microtask: dart.definiteFunctionType(async.Future$(T), [VoidTodynamic()]),
      sync: dart.definiteFunctionType(async.Future$(T), [VoidTodynamic()]),
      value: dart.definiteFunctionType(async.Future$(T), [], [dart.dynamic]),
      error: dart.definiteFunctionType(async.Future$(T), [core.Object], [core.StackTrace]),
      delayed: dart.definiteFunctionType(async.Future$(T), [core.Duration], [VoidTodynamic()])
    }),
    sfields: () => ({_nullFuture: async._Future}),
    statics: () => ({
      wait: dart.definiteFunctionType(T => [async.Future$(core.List$(T)), [core.Iterable$(async.Future$(T))], {eagerError: core.bool, cleanUp: dart.functionType(dart.void, [T])}]),
      any: dart.definiteFunctionType(T => [async.Future$(T), [core.Iterable$(async.Future$(T))]]),
      forEach: dart.definiteFunctionType(async.Future, [core.Iterable, dynamicTodynamic()]),
      doWhile: dart.definiteFunctionType(async.Future, [VoidTodynamic()])
    }),
    names: ['wait', 'any', 'forEach', 'doWhile']
  });
  return Future;
}));
async.Future = Future();
dart.defineLazy(async.Future, {
  get _nullFuture() {
    return async._Future._check(async.Future.value(null));
  }
});
async.TimeoutException = class TimeoutException extends core.Object {
  new(message, duration) {
    if (duration === void 0) duration = null;
    this.message = message;
    this.duration = duration;
  }
  toString() {
    let result = "TimeoutException";
    if (this.duration != null) result = dart.str`TimeoutException after ${this.duration}`;
    if (this.message != null) result = dart.str`${result}: ${this.message}`;
    return result;
  }
};
async.TimeoutException[dart.implements] = () => [core.Exception];
dart.setSignature(async.TimeoutException, {
  constructors: () => ({new: dart.definiteFunctionType(async.TimeoutException, [core.String], [core.Duration])}),
  fields: () => ({
    message: core.String,
    duration: core.Duration
  })
});
async.Completer$ = dart.generic(T => {
  let _AsyncCompleterOfT = () => (_AsyncCompleterOfT = dart.constFn(async._AsyncCompleter$(T)))();
  let _SyncCompleterOfT = () => (_SyncCompleterOfT = dart.constFn(async._SyncCompleter$(T)))();
  class Completer extends core.Object {
    static new() {
      return new (_AsyncCompleterOfT())();
    }
    static sync() {
      return new (_SyncCompleterOfT())();
    }
  }
  dart.addTypeTests(Completer);
  dart.setSignature(Completer, {
    constructors: () => ({
      new: dart.definiteFunctionType(async.Completer$(T), []),
      sync: dart.definiteFunctionType(async.Completer$(T), [])
    })
  });
  return Completer;
});
async.Completer = Completer();
async._completeWithErrorCallback = function(result, error, stackTrace) {
  let replacement = async.Zone.current.errorCallback(error, core.StackTrace._check(stackTrace));
  if (replacement != null) {
    error = async._nonNullError(replacement.error);
    stackTrace = replacement.stackTrace;
  }
  result[_completeError](error, core.StackTrace._check(stackTrace));
};
dart.lazyFn(async._completeWithErrorCallback, () => _FutureAnddynamicAnddynamicTovoid());
async._nonNullError = function(error) {
  return error != null ? error : new core.NullThrownError();
};
dart.fn(async._nonNullError, ObjectToObject());
async._FutureOnValue$ = dart.generic((S, T) => {
  const _FutureOnValue = dart.typedef('_FutureOnValue', () => dart.functionType(dart.dynamic, [S]));
  return _FutureOnValue;
});
async._FutureOnValue = _FutureOnValue();
async._FutureErrorTest = dart.typedef('_FutureErrorTest', () => dart.functionType(core.bool, [dart.dynamic]));
async._FutureAction = dart.typedef('_FutureAction', () => dart.functionType(dart.dynamic, []));
async._Completer$ = dart.generic(T => {
  let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
  let CompleterOfT = () => (CompleterOfT = dart.constFn(async.Completer$(T)))();
  class _Completer extends core.Object {
    new() {
      this.future = new (_FutureOfT())();
    }
    completeError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      error = async._nonNullError(error);
      if (!dart.test(this.future[_mayComplete])) dart.throw(new core.StateError("Future already completed"));
      let replacement = async.Zone.current.errorCallback(error, stackTrace);
      if (replacement != null) {
        error = async._nonNullError(replacement.error);
        stackTrace = replacement.stackTrace;
      }
      this[_completeError](error, stackTrace);
    }
    get isCompleted() {
      return !dart.test(this.future[_mayComplete]);
    }
  }
  dart.addTypeTests(_Completer);
  _Completer[dart.implements] = () => [CompleterOfT()];
  dart.setSignature(_Completer, {
    fields: () => ({future: _FutureOfT()}),
    getters: () => ({isCompleted: dart.definiteFunctionType(core.bool, [])}),
    methods: () => ({completeError: dart.definiteFunctionType(dart.void, [core.Object], [core.StackTrace])})
  });
  return _Completer;
});
async._Completer = _Completer();
const _asyncCompleteError = Symbol('_asyncCompleteError');
async._AsyncCompleter$ = dart.generic(T => {
  class _AsyncCompleter extends async._Completer$(T) {
    new() {
      super.new();
    }
    complete(value) {
      if (value === void 0) value = null;
      if (!dart.test(this.future[_mayComplete])) dart.throw(new core.StateError("Future already completed"));
      this.future[_asyncComplete](value);
    }
    [_completeError](error, stackTrace) {
      this.future[_asyncCompleteError](error, stackTrace);
    }
  }
  dart.setSignature(_AsyncCompleter, {
    methods: () => ({
      complete: dart.definiteFunctionType(dart.void, [], [dart.dynamic]),
      [_completeError]: dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace])
    })
  });
  return _AsyncCompleter;
});
async._AsyncCompleter = _AsyncCompleter();
async._SyncCompleter$ = dart.generic(T => {
  class _SyncCompleter extends async._Completer$(T) {
    new() {
      super.new();
    }
    complete(value) {
      if (value === void 0) value = null;
      if (!dart.test(this.future[_mayComplete])) dart.throw(new core.StateError("Future already completed"));
      this.future[_complete](value);
    }
    [_completeError](error, stackTrace) {
      this.future[_completeError](error, stackTrace);
    }
  }
  dart.setSignature(_SyncCompleter, {
    methods: () => ({
      complete: dart.definiteFunctionType(dart.void, [], [dart.dynamic]),
      [_completeError]: dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace])
    })
  });
  return _SyncCompleter;
});
async._SyncCompleter = _SyncCompleter();
const _nextListener = Symbol('_nextListener');
const _onValue = Symbol('_onValue');
const _errorTest = Symbol('_errorTest');
const _whenCompleteAction = Symbol('_whenCompleteAction');
async._FutureListener$ = dart.generic((S, T) => {
  let _FutureOnValueOfS$T = () => (_FutureOnValueOfS$T = dart.constFn(async._FutureOnValue$(S, T)))();
  let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
  class _FutureListener extends core.Object {
    then(result, onValue, errorCallback) {
      this.result = result;
      this.callback = onValue;
      this.errorCallback = errorCallback;
      this.state = errorCallback == null ? async._FutureListener.STATE_THEN : async._FutureListener.STATE_THEN_ONERROR;
      this[_nextListener] = null;
    }
    catchError(result, errorCallback, test) {
      this.result = result;
      this.errorCallback = errorCallback;
      this.callback = test;
      this.state = test == null ? async._FutureListener.STATE_CATCHERROR : async._FutureListener.STATE_CATCHERROR_TEST;
      this[_nextListener] = null;
    }
    whenComplete(result, onComplete) {
      this.result = result;
      this.callback = onComplete;
      this.errorCallback = null;
      this.state = async._FutureListener.STATE_WHENCOMPLETE;
      this[_nextListener] = null;
    }
    get [_zone]() {
      return this.result[_zone];
    }
    get handlesValue() {
      return (dart.notNull(this.state) & async._FutureListener.MASK_VALUE) != 0;
    }
    get handlesError() {
      return (dart.notNull(this.state) & async._FutureListener.MASK_ERROR) != 0;
    }
    get hasErrorTest() {
      return this.state == async._FutureListener.STATE_CATCHERROR_TEST;
    }
    get handlesComplete() {
      return this.state == async._FutureListener.STATE_WHENCOMPLETE;
    }
    get [_onValue]() {
      dart.assert(this.handlesValue);
      return _FutureOnValueOfS$T().as(this.callback);
    }
    get [_onError]() {
      return this.errorCallback;
    }
    get [_errorTest]() {
      dart.assert(this.hasErrorTest);
      return async._FutureErrorTest.as(this.callback);
    }
    get [_whenCompleteAction]() {
      dart.assert(this.handlesComplete);
      return async._FutureAction.as(this.callback);
    }
    get hasErrorCallback() {
      dart.assert(this.handlesError);
      return this[_onError] != null;
    }
    handleValue(sourceResult) {
      S._check(sourceResult);
      return this[_zone].runUnary(dart.dynamic, S)(this[_onValue], sourceResult);
    }
    matchesErrorTest(asyncError) {
      if (!dart.test(this.hasErrorTest)) return true;
      let test = this[_errorTest];
      return this[_zone].runUnary(core.bool, dart.dynamic)(this[_errorTest], asyncError.error);
    }
    handleError(asyncError) {
      dart.assert(dart.test(this.handlesError) && dart.test(this.hasErrorCallback));
      if (async.ZoneBinaryCallback.is(this.errorCallback)) {
        let typedErrorCallback = ZoneBinaryCallbackOfObject$Object$StackTrace().as(this.errorCallback);
        return this[_zone].runBinary(core.Object, core.Object, core.StackTrace)(typedErrorCallback, asyncError.error, asyncError.stackTrace);
      } else {
        return this[_zone].runUnary(dart.dynamic, dart.dynamic)(dynamicTodynamic()._check(this.errorCallback), asyncError.error);
      }
    }
    handleWhenComplete() {
      dart.assert(!dart.test(this.handlesError));
      return this[_zone].run(dart.dynamic)(this[_whenCompleteAction]);
    }
  }
  dart.addTypeTests(_FutureListener);
  dart.defineNamedConstructor(_FutureListener, 'then');
  dart.defineNamedConstructor(_FutureListener, 'catchError');
  dart.defineNamedConstructor(_FutureListener, 'whenComplete');
  dart.setSignature(_FutureListener, {
    constructors: () => ({
      then: dart.definiteFunctionType(async._FutureListener$(S, T), [_FutureOfT(), _FutureOnValueOfS$T(), core.Function]),
      catchError: dart.definiteFunctionType(async._FutureListener$(S, T), [_FutureOfT(), core.Function, async._FutureErrorTest]),
      whenComplete: dart.definiteFunctionType(async._FutureListener$(S, T), [_FutureOfT(), async._FutureAction])
    }),
    fields: () => ({
      [_nextListener]: async._FutureListener,
      result: _FutureOfT(),
      state: core.int,
      callback: core.Function,
      errorCallback: core.Function
    }),
    getters: () => ({
      [_zone]: dart.definiteFunctionType(async.Zone, []),
      handlesValue: dart.definiteFunctionType(core.bool, []),
      handlesError: dart.definiteFunctionType(core.bool, []),
      hasErrorTest: dart.definiteFunctionType(core.bool, []),
      handlesComplete: dart.definiteFunctionType(core.bool, []),
      [_onValue]: dart.definiteFunctionType(async._FutureOnValue$(S, T), []),
      [_onError]: dart.definiteFunctionType(core.Function, []),
      [_errorTest]: dart.definiteFunctionType(async._FutureErrorTest, []),
      [_whenCompleteAction]: dart.definiteFunctionType(async._FutureAction, []),
      hasErrorCallback: dart.definiteFunctionType(core.bool, [])
    }),
    methods: () => ({
      handleValue: dart.definiteFunctionType(dart.dynamic, [S]),
      matchesErrorTest: dart.definiteFunctionType(core.bool, [async.AsyncError]),
      handleError: dart.definiteFunctionType(dart.dynamic, [async.AsyncError]),
      handleWhenComplete: dart.definiteFunctionType(dart.dynamic, [])
    }),
    sfields: () => ({
      MASK_VALUE: core.int,
      MASK_ERROR: core.int,
      MASK_TEST_ERROR: core.int,
      MASK_WHENCOMPLETE: core.int,
      STATE_CHAIN: core.int,
      STATE_THEN: core.int,
      STATE_THEN_ONERROR: core.int,
      STATE_CATCHERROR: core.int,
      STATE_CATCHERROR_TEST: core.int,
      STATE_WHENCOMPLETE: core.int
    })
  });
  return _FutureListener;
});
async._FutureListener = _FutureListener();
async._FutureListener.MASK_VALUE = 1;
async._FutureListener.MASK_ERROR = 2;
async._FutureListener.MASK_TEST_ERROR = 4;
async._FutureListener.MASK_WHENCOMPLETE = 8;
async._FutureListener.STATE_CHAIN = 0;
async._FutureListener.STATE_THEN_ONERROR = 3;
async._FutureListener.STATE_CATCHERROR_TEST = 6;
dart.defineLazy(async._FutureListener, {
  get STATE_THEN() {
    return async._FutureListener.MASK_VALUE;
  },
  get STATE_CATCHERROR() {
    return async._FutureListener.MASK_ERROR;
  },
  get STATE_WHENCOMPLETE() {
    return async._FutureListener.MASK_WHENCOMPLETE;
  }
});
const _resultOrListeners = Symbol('_resultOrListeners');
const _isPendingComplete = Symbol('_isPendingComplete');
const _mayAddListener = Symbol('_mayAddListener');
const _isChained = Symbol('_isChained');
const _isComplete = Symbol('_isComplete');
const _hasError = Symbol('_hasError');
const _setChained = Symbol('_setChained');
const _thenNoZoneRegistration = Symbol('_thenNoZoneRegistration');
const _setPendingComplete = Symbol('_setPendingComplete');
const _error = Symbol('_error');
const _chainSource = Symbol('_chainSource');
const _setValue = Symbol('_setValue');
const _setErrorObject = Symbol('_setErrorObject');
const _setError = Symbol('_setError');
const _cloneResult = Symbol('_cloneResult');
const _prependListeners = Symbol('_prependListeners');
const _reverseListeners = Symbol('_reverseListeners');
const _removeListeners = Symbol('_removeListeners');
async._Future$ = dart.flattenFutures(dart.generic(T => {
  let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
  let _FutureListenerOfT$T = () => (_FutureListenerOfT$T = dart.constFn(async._FutureListener$(T, T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let FutureOfT = () => (FutureOfT = dart.constFn(async.Future$(T)))();
  let TTodynamic = () => (TTodynamic = dart.constFn(dart.functionType(dart.dynamic, [T])))();
  let TTodynamic$ = () => (TTodynamic$ = dart.constFn(dart.definiteFunctionType(dart.dynamic, [T])))();
  class _Future extends core.Object {
    new() {
      this[_zone] = async.Zone.current;
      this[_state] = async._Future._INCOMPLETE;
      this[_resultOrListeners] = null;
    }
    immediate(value) {
      this[_zone] = async.Zone.current;
      this[_state] = async._Future._INCOMPLETE;
      this[_resultOrListeners] = null;
      this[_asyncComplete](value);
    }
    immediateError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_zone] = async.Zone.current;
      this[_state] = async._Future._INCOMPLETE;
      this[_resultOrListeners] = null;
      this[_asyncCompleteError](error, stackTrace);
    }
    get [_mayComplete]() {
      return this[_state] == async._Future._INCOMPLETE;
    }
    get [_isPendingComplete]() {
      return this[_state] == async._Future._PENDING_COMPLETE;
    }
    get [_mayAddListener]() {
      return dart.notNull(this[_state]) <= async._Future._PENDING_COMPLETE;
    }
    get [_isChained]() {
      return this[_state] == async._Future._CHAINED;
    }
    get [_isComplete]() {
      return dart.notNull(this[_state]) >= async._Future._VALUE;
    }
    get [_hasError]() {
      return this[_state] == async._Future._ERROR;
    }
    [_setChained](source) {
      dart.assert(this[_mayAddListener]);
      this[_state] = async._Future._CHAINED;
      this[_resultOrListeners] = source;
    }
    then(E) {
      return (f, opts) => {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let currentZone = async.Zone.current;
        let registered = null;
        if (!core.identical(currentZone, async._ROOT_ZONE)) {
          f = currentZone.registerUnaryCallback(dart.dynamic, T)(f);
          if (onError != null) {
            onError = async._registerErrorHandler(T)(onError, currentZone);
          }
        }
        return this[_thenNoZoneRegistration](E)(f, onError);
      };
    }
    [_thenNoZoneRegistration](E) {
      return (f, onError) => {
        let result = new (async._Future$(E))();
        this[_addListener](new (async._FutureListener$(T, E)).then(result, f, onError));
        return result;
      };
    }
    catchError(onError, opts) {
      let test = opts && 'test' in opts ? opts.test : null;
      let result = new (_FutureOfT())();
      if (!core.identical(result[_zone], async._ROOT_ZONE)) {
        onError = async._registerErrorHandler(T)(onError, result[_zone]);
        if (test != null) test = result[_zone].registerUnaryCallback(core.bool, dart.dynamic)(test);
      }
      this[_addListener](new (_FutureListenerOfT$T()).catchError(result, onError, test));
      return result;
    }
    whenComplete(action) {
      let result = new (_FutureOfT())();
      if (!core.identical(result[_zone], async._ROOT_ZONE)) {
        action = result[_zone].registerCallback(dart.dynamic)(action);
      }
      this[_addListener](new (_FutureListenerOfT$T()).whenComplete(result, action));
      return result;
    }
    asStream() {
      return StreamOfT().fromFuture(this);
    }
    [_setPendingComplete]() {
      dart.assert(this[_mayComplete]);
      this[_state] = async._Future._PENDING_COMPLETE;
    }
    get [_error]() {
      dart.assert(this[_hasError]);
      return async.AsyncError._check(this[_resultOrListeners]);
    }
    get [_chainSource]() {
      dart.assert(this[_isChained]);
      return async._Future._check(this[_resultOrListeners]);
    }
    [_setValue](value) {
      T._check(value);
      dart.assert(!dart.test(this[_isComplete]));
      this[_state] = async._Future._VALUE;
      this[_resultOrListeners] = value;
    }
    [_setErrorObject](error) {
      dart.assert(!dart.test(this[_isComplete]));
      this[_state] = async._Future._ERROR;
      this[_resultOrListeners] = error;
    }
    [_setError](error, stackTrace) {
      this[_setErrorObject](new async.AsyncError(error, stackTrace));
    }
    [_cloneResult](source) {
      dart.assert(!dart.test(this[_isComplete]));
      dart.assert(source[_isComplete]);
      this[_state] = source[_state];
      this[_resultOrListeners] = source[_resultOrListeners];
    }
    [_addListener](listener) {
      dart.assert(listener[_nextListener] == null);
      if (dart.test(this[_mayAddListener])) {
        listener[_nextListener] = async._FutureListener._check(this[_resultOrListeners]);
        this[_resultOrListeners] = listener;
      } else {
        if (dart.test(this[_isChained])) {
          let source = this[_chainSource];
          if (!dart.test(source[_isComplete])) {
            source[_addListener](listener);
            return;
          }
          this[_cloneResult](source);
        }
        dart.assert(this[_isComplete]);
        this[_zone].scheduleMicrotask(dart.fn(() => {
          async._Future._propagateToListeners(this, listener);
        }, VoidTovoid()));
      }
    }
    [_prependListeners](listeners) {
      if (listeners == null) return;
      if (dart.test(this[_mayAddListener])) {
        let existingListeners = async._FutureListener._check(this[_resultOrListeners]);
        this[_resultOrListeners] = listeners;
        if (existingListeners != null) {
          let cursor = listeners;
          while (cursor[_nextListener] != null) {
            cursor = cursor[_nextListener];
          }
          cursor[_nextListener] = existingListeners;
        }
      } else {
        if (dart.test(this[_isChained])) {
          let source = this[_chainSource];
          if (!dart.test(source[_isComplete])) {
            source[_prependListeners](listeners);
            return;
          }
          this[_cloneResult](source);
        }
        dart.assert(this[_isComplete]);
        listeners = this[_reverseListeners](listeners);
        this[_zone].scheduleMicrotask(dart.fn(() => {
          async._Future._propagateToListeners(this, listeners);
        }, VoidTovoid()));
      }
    }
    [_removeListeners]() {
      dart.assert(!dart.test(this[_isComplete]));
      let current = async._FutureListener._check(this[_resultOrListeners]);
      this[_resultOrListeners] = null;
      return this[_reverseListeners](current);
    }
    [_reverseListeners](listeners) {
      let prev = null;
      let current = listeners;
      while (current != null) {
        let next = current[_nextListener];
        current[_nextListener] = prev;
        prev = current;
        current = next;
      }
      return prev;
    }
    static _chainForeignFuture(source, target) {
      dart.assert(!dart.test(target[_isComplete]));
      dart.assert(!async._Future.is(source));
      target[_setPendingComplete]();
      try {
        source.then(dart.dynamic)(dart.fn(value => {
          dart.assert(target[_isPendingComplete]);
          target[_completeWithValue](value);
        }, dynamicTodynamic()), {onError: dart.fn((error, stackTrace) => {
            if (stackTrace === void 0) stackTrace = null;
            dart.assert(target[_isPendingComplete]);
            target[_completeError](error, core.StackTrace._check(stackTrace));
          }, dynamic__Todynamic())});
      } catch (e) {
        let s = dart.stackTrace(e);
        async.scheduleMicrotask(dart.fn(() => {
          target[_completeError](e, s);
        }, VoidTovoid()));
      }

    }
    static _chainCoreFuture(source, target) {
      dart.assert(target[_mayAddListener]);
      while (dart.test(source[_isChained])) {
        source = source[_chainSource];
      }
      if (dart.test(source[_isComplete])) {
        let listeners = target[_removeListeners]();
        target[_cloneResult](source);
        async._Future._propagateToListeners(target, listeners);
      } else {
        let listeners = async._FutureListener._check(target[_resultOrListeners]);
        target[_setChained](source);
        source[_prependListeners](listeners);
      }
    }
    [_complete](value) {
      dart.assert(!dart.test(this[_isComplete]));
      if (async.Future.is(value)) {
        if (async._Future.is(value)) {
          async._Future._chainCoreFuture(value, this);
        } else {
          async._Future._chainForeignFuture(value, this);
        }
      } else {
        let listeners = this[_removeListeners]();
        this[_setValue](T.as(value));
        async._Future._propagateToListeners(this, listeners);
      }
    }
    [_completeWithValue](value) {
      T._check(value);
      dart.assert(!dart.test(this[_isComplete]));
      dart.assert(!async.Future.is(value));
      let listeners = this[_removeListeners]();
      this[_setValue](value);
      async._Future._propagateToListeners(this, listeners);
    }
    [_completeError](error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      dart.assert(!dart.test(this[_isComplete]));
      let listeners = this[_removeListeners]();
      this[_setError](error, stackTrace);
      async._Future._propagateToListeners(this, listeners);
    }
    [_asyncComplete](value) {
      dart.assert(!dart.test(this[_isComplete]));
      if (async.Future.is(value)) {
        let typedFuture = FutureOfT().as(value);
        if (async._Future.is(typedFuture)) {
          let coreFuture = _FutureOfT()._check(typedFuture);
          if (dart.test(coreFuture[_hasError])) {
            this[_setPendingComplete]();
            this[_zone].scheduleMicrotask(dart.fn(() => {
              async._Future._chainCoreFuture(coreFuture, this);
            }, VoidTovoid()));
          } else {
            async._Future._chainCoreFuture(coreFuture, this);
          }
        } else {
          async._Future._chainForeignFuture(typedFuture, this);
        }
        return;
      }
      let typedValue = T.as(value);
      this[_setPendingComplete]();
      this[_zone].scheduleMicrotask(dart.fn(() => {
        this[_completeWithValue](typedValue);
      }, VoidTovoid()));
    }
    [_asyncCompleteError](error, stackTrace) {
      dart.assert(!dart.test(this[_isComplete]));
      this[_setPendingComplete]();
      this[_zone].scheduleMicrotask(dart.fn(() => {
        this[_completeError](error, stackTrace);
      }, VoidTovoid()));
    }
    static _propagateToListeners(source, listeners) {
      while (true) {
        dart.assert(source[_isComplete]);
        let hasError = source[_hasError];
        if (listeners == null) {
          if (dart.test(hasError)) {
            let asyncError = source[_error];
            source[_zone].handleUncaughtError(dart.dynamic)(asyncError.error, asyncError.stackTrace);
          }
          return;
        }
        while (listeners[_nextListener] != null) {
          let listener = listeners;
          listeners = listener[_nextListener];
          listener[_nextListener] = null;
          async._Future._propagateToListeners(source, listener);
        }
        let listener = listeners;
        let sourceResult = source[_resultOrListeners];
        let listenerHasError = hasError;
        let listenerValueOrError = sourceResult;
        if (dart.test(hasError) || dart.test(listener.handlesValue) || dart.test(listener.handlesComplete)) {
          let zone = listener[_zone];
          if (dart.test(hasError) && !dart.test(source[_zone].inSameErrorZone(zone))) {
            let asyncError = source[_error];
            source[_zone].handleUncaughtError(dart.dynamic)(asyncError.error, asyncError.stackTrace);
            return;
          }
          let oldZone = null;
          if (!core.identical(async.Zone.current, zone)) {
            oldZone = async.Zone._enter(zone);
          }
          function handleWhenCompleteCallback() {
            dart.assert(!dart.test(listener.handlesValue));
            dart.assert(!dart.test(listener.handlesError));
            let completeResult = null;
            try {
              completeResult = listener.handleWhenComplete();
            } catch (e) {
              let s = dart.stackTrace(e);
              if (dart.test(hasError) && core.identical(source[_error].error, e)) {
                listenerValueOrError = source[_error];
              } else {
                listenerValueOrError = new async.AsyncError(e, s);
              }
              listenerHasError = true;
              return;
            }

            if (async.Future.is(completeResult)) {
              if (async._Future.is(completeResult) && dart.test(completeResult[_isComplete])) {
                if (dart.test(completeResult[_hasError])) {
                  listenerValueOrError = completeResult[_error];
                  listenerHasError = true;
                }
                return;
              }
              let originalSource = source;
              listenerValueOrError = completeResult.then(dart.dynamic)(dart.fn(_ => originalSource, dynamicTo_Future()));
              listenerHasError = false;
            }
          }
          dart.fn(handleWhenCompleteCallback, VoidTovoid());
          function handleValueCallback() {
            try {
              listenerValueOrError = listener.handleValue(sourceResult);
            } catch (e) {
              let s = dart.stackTrace(e);
              listenerValueOrError = new async.AsyncError(e, s);
              listenerHasError = true;
            }

          }
          dart.fn(handleValueCallback, VoidTovoid());
          function handleError() {
            try {
              let asyncError = source[_error];
              if (dart.test(listener.matchesErrorTest(asyncError)) && dart.test(listener.hasErrorCallback)) {
                listenerValueOrError = listener.handleError(asyncError);
                listenerHasError = false;
              }
            } catch (e) {
              let s = dart.stackTrace(e);
              if (core.identical(source[_error].error, e)) {
                listenerValueOrError = source[_error];
              } else {
                listenerValueOrError = new async.AsyncError(e, s);
              }
              listenerHasError = true;
            }

          }
          dart.fn(handleError, VoidTovoid());
          if (dart.test(listener.handlesComplete)) {
            handleWhenCompleteCallback();
          } else if (!dart.test(hasError)) {
            if (dart.test(listener.handlesValue)) {
              handleValueCallback();
            }
          } else {
            if (dart.test(listener.handlesError)) {
              handleError();
            }
          }
          if (oldZone != null) async.Zone._leave(oldZone);
          if (async.Future.is(listenerValueOrError)) {
            let chainSource = async.Future._check(listenerValueOrError);
            let result = listener.result;
            if (async._Future.is(chainSource)) {
              if (dart.test(chainSource[_isComplete])) {
                listeners = result[_removeListeners]();
                result[_cloneResult](chainSource);
                source = chainSource;
                continue;
              } else {
                async._Future._chainCoreFuture(chainSource, result);
              }
            } else {
              async._Future._chainForeignFuture(chainSource, result);
            }
            return;
          }
        }
        let result = listener.result;
        listeners = result[_removeListeners]();
        if (!dart.test(listenerHasError)) {
          result[_setValue](listenerValueOrError);
        } else {
          let asyncError = async.AsyncError._check(listenerValueOrError);
          result[_setErrorObject](asyncError);
        }
        source = result;
      }
    }
    timeout(timeLimit, opts) {
      let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null;
      if (dart.test(this[_isComplete])) return new (_FutureOfT()).immediate(this);
      let result = new (_FutureOfT())();
      let timer = null;
      if (onTimeout == null) {
        timer = async.Timer.new(timeLimit, dart.fn(() => {
          result[_completeError](new async.TimeoutException("Future not completed", timeLimit));
        }, VoidTovoid()));
      } else {
        let zone = async.Zone.current;
        onTimeout = zone.registerCallback(dart.dynamic)(onTimeout);
        timer = async.Timer.new(timeLimit, dart.fn(() => {
          try {
            result[_complete](zone.run(dart.dynamic)(onTimeout));
          } catch (e) {
            let s = dart.stackTrace(e);
            result[_completeError](e, s);
          }

        }, VoidTovoid()));
      }
      this.then(dart.dynamic)(dart.fn(v => {
        if (dart.test(timer.isActive)) {
          timer.cancel();
          result[_completeWithValue](v);
        }
      }, TTodynamic$()), {onError: dart.fn((e, s) => {
          if (dart.test(timer.isActive)) {
            timer.cancel();
            result[_completeError](e, core.StackTrace._check(s));
          }
        }, dynamicAnddynamicTodynamic())});
      return result;
    }
  }
  dart.addTypeTests(_Future);
  dart.defineNamedConstructor(_Future, 'immediate');
  dart.defineNamedConstructor(_Future, 'immediateError');
  _Future[dart.implements] = () => [FutureOfT()];
  dart.setSignature(_Future, {
    constructors: () => ({
      new: dart.definiteFunctionType(async._Future$(T), []),
      immediate: dart.definiteFunctionType(async._Future$(T), [dart.dynamic]),
      immediateError: dart.definiteFunctionType(async._Future$(T), [dart.dynamic], [core.StackTrace])
    }),
    fields: () => ({
      [_state]: core.int,
      [_zone]: async.Zone,
      [_resultOrListeners]: dart.dynamic
    }),
    getters: () => ({
      [_mayComplete]: dart.definiteFunctionType(core.bool, []),
      [_isPendingComplete]: dart.definiteFunctionType(core.bool, []),
      [_mayAddListener]: dart.definiteFunctionType(core.bool, []),
      [_isChained]: dart.definiteFunctionType(core.bool, []),
      [_isComplete]: dart.definiteFunctionType(core.bool, []),
      [_hasError]: dart.definiteFunctionType(core.bool, []),
      [_error]: dart.definiteFunctionType(async.AsyncError, []),
      [_chainSource]: dart.definiteFunctionType(async._Future, [])
    }),
    methods: () => ({
      [_setChained]: dart.definiteFunctionType(dart.void, [async._Future]),
      then: dart.definiteFunctionType(E => [async.Future$(E), [TTodynamic()], {onError: core.Function}]),
      [_thenNoZoneRegistration]: dart.definiteFunctionType(E => [async.Future$(E), [TTodynamic(), core.Function]]),
      catchError: dart.definiteFunctionType(async.Future$(T), [core.Function], {test: dynamicTobool()}),
      whenComplete: dart.definiteFunctionType(async.Future$(T), [VoidTodynamic()]),
      asStream: dart.definiteFunctionType(async.Stream$(T), []),
      [_setPendingComplete]: dart.definiteFunctionType(dart.void, []),
      [_setValue]: dart.definiteFunctionType(dart.void, [T]),
      [_setErrorObject]: dart.definiteFunctionType(dart.void, [async.AsyncError]),
      [_setError]: dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace]),
      [_cloneResult]: dart.definiteFunctionType(dart.void, [async._Future]),
      [_addListener]: dart.definiteFunctionType(dart.void, [async._FutureListener]),
      [_prependListeners]: dart.definiteFunctionType(dart.void, [async._FutureListener]),
      [_removeListeners]: dart.definiteFunctionType(async._FutureListener, []),
      [_reverseListeners]: dart.definiteFunctionType(async._FutureListener, [async._FutureListener]),
      [_complete]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
      [_completeWithValue]: dart.definiteFunctionType(dart.void, [T]),
      [_completeError]: dart.definiteFunctionType(dart.void, [dart.dynamic], [core.StackTrace]),
      [_asyncComplete]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
      [_asyncCompleteError]: dart.definiteFunctionType(dart.void, [dart.dynamic, core.StackTrace]),
      timeout: dart.definiteFunctionType(async.Future$(T), [core.Duration], {onTimeout: VoidTodynamic()})
    }),
    sfields: () => ({
      _INCOMPLETE: core.int,
      _PENDING_COMPLETE: core.int,
      _CHAINED: core.int,
      _VALUE: core.int,
      _ERROR: core.int
    }),
    statics: () => ({
      _chainForeignFuture: dart.definiteFunctionType(dart.void, [async.Future, async._Future]),
      _chainCoreFuture: dart.definiteFunctionType(dart.void, [async._Future, async._Future]),
      _propagateToListeners: dart.definiteFunctionType(dart.void, [async._Future, async._FutureListener])
    }),
    names: ['_chainForeignFuture', '_chainCoreFuture', '_propagateToListeners']
  });
  return _Future;
}));
async._Future = _Future();
async._Future._INCOMPLETE = 0;
async._Future._PENDING_COMPLETE = 1;
async._Future._CHAINED = 2;
async._Future._VALUE = 4;
async._Future._ERROR = 8;
async._AsyncCallback = dart.typedef('_AsyncCallback', () => dart.functionType(dart.void, []));
async._AsyncCallbackEntry = class _AsyncCallbackEntry extends core.Object {
  new(callback) {
    this.callback = callback;
    this.next = null;
  }
};
dart.setSignature(async._AsyncCallbackEntry, {
  constructors: () => ({new: dart.definiteFunctionType(async._AsyncCallbackEntry, [async._AsyncCallback])}),
  fields: () => ({
    callback: async._AsyncCallback,
    next: async._AsyncCallbackEntry
  })
});
async._nextCallback = null;
async._lastCallback = null;
async._lastPriorityCallback = null;
async._isInCallbackLoop = false;
async._microtaskLoop = function() {
  while (async._nextCallback != null) {
    async._lastPriorityCallback = null;
    let entry = async._nextCallback;
    async._nextCallback = entry.next;
    if (async._nextCallback == null) async._lastCallback = null;
    entry.callback();
  }
};
dart.fn(async._microtaskLoop, VoidTovoid());
async._startMicrotaskLoop = function() {
  async._isInCallbackLoop = true;
  try {
    async._microtaskLoop();
  } finally {
    async._lastPriorityCallback = null;
    async._isInCallbackLoop = false;
    if (async._nextCallback != null) {
      async._AsyncRun._scheduleImmediate(async._startMicrotaskLoop);
    }
  }
};
dart.fn(async._startMicrotaskLoop, VoidTovoid());
async._scheduleAsyncCallback = function(callback) {
  let newEntry = new async._AsyncCallbackEntry(callback);
  if (async._nextCallback == null) {
    async._nextCallback = async._lastCallback = newEntry;
    if (!dart.test(async._isInCallbackLoop)) {
      async._AsyncRun._scheduleImmediate(async._startMicrotaskLoop);
    }
  } else {
    async._lastCallback.next = newEntry;
    async._lastCallback = newEntry;
  }
};
dart.fn(async._scheduleAsyncCallback, _AsyncCallbackTovoid());
async._schedulePriorityAsyncCallback = function(callback) {
  if (async._nextCallback == null) {
    async._scheduleAsyncCallback(callback);
    async._lastPriorityCallback = async._lastCallback;
    return;
  }
  let entry = new async._AsyncCallbackEntry(callback);
  if (async._lastPriorityCallback == null) {
    entry.next = async._nextCallback;
    async._nextCallback = async._lastPriorityCallback = entry;
  } else {
    entry.next = async._lastPriorityCallback.next;
    async._lastPriorityCallback.next = entry;
    async._lastPriorityCallback = entry;
    if (entry.next == null) {
      async._lastCallback = entry;
    }
  }
};
dart.fn(async._schedulePriorityAsyncCallback, _AsyncCallbackTovoid());
const _scheduleMicrotask = Symbol('_scheduleMicrotask');
async.scheduleMicrotask = function(callback) {
  let currentZone = async._Zone._check(async.Zone.current);
  if (core.identical(async._ROOT_ZONE, currentZone)) {
    async._rootScheduleMicrotask(null, null, async._ROOT_ZONE, callback);
    return;
  }
  let implementation = currentZone[_scheduleMicrotask];
  if (core.identical(async._ROOT_ZONE, implementation.zone) && dart.test(async._ROOT_ZONE.inSameErrorZone(currentZone))) {
    async._rootScheduleMicrotask(null, null, currentZone, currentZone.registerCallback(dart.dynamic)(callback));
    return;
  }
  async.Zone.current.scheduleMicrotask(async.Zone.current.bindCallback(dart.dynamic)(callback, {runGuarded: true}));
};
dart.fn(async.scheduleMicrotask, _AsyncCallbackTovoid());
async._AsyncRun = class _AsyncRun extends core.Object {
  static _scheduleImmediate(callback) {
    dart.dcall(async._AsyncRun._scheduleImmediateClosure, callback);
  }
  static _initializeScheduleImmediate() {
    if (self.scheduleImmediate != null) {
      return async._AsyncRun._scheduleImmediateJsOverride;
    }
    if (self.MutationObserver != null && self.document != null) {
      let div = self.document.createElement("div");
      let span = self.document.createElement("span");
      let storedCallback = null;
      function internalCallback(_) {
        _isolate_helper.leaveJsAsync();
        let f = storedCallback;
        storedCallback = null;
        dart.dcall(f);
      }
      dart.fn(internalCallback, dynamicTodynamic());
      ;
      let observer = new self.MutationObserver(internalCallback);
      observer.observe(div, {childList: true});
      return dart.fn(callback => {
        dart.assert(storedCallback == null);
        _isolate_helper.enterJsAsync();
        storedCallback = callback;
        div.firstChild ? div.removeChild(span) : div.appendChild(span);
      }, FnTodynamic());
    } else if (self.setImmediate != null) {
      return async._AsyncRun._scheduleImmediateWithSetImmediate;
    }
    return async._AsyncRun._scheduleImmediateWithTimer;
  }
  static _scheduleImmediateJsOverride(callback) {
    function internalCallback() {
      _isolate_helper.leaveJsAsync();
      callback();
    }
    dart.fn(internalCallback, VoidTodynamic());
    ;
    _isolate_helper.enterJsAsync();
    self.scheduleImmediate(internalCallback);
  }
  static _scheduleImmediateWithSetImmediate(callback) {
    function internalCallback() {
      _isolate_helper.leaveJsAsync();
      callback();
    }
    dart.fn(internalCallback, VoidTodynamic());
    ;
    _isolate_helper.enterJsAsync();
    self.setImmediate(internalCallback);
  }
  static _scheduleImmediateWithTimer(callback) {
    async.Timer._createTimer(core.Duration.ZERO, callback);
  }
};
dart.setSignature(async._AsyncRun, {
  sfields: () => ({_scheduleImmediateClosure: core.Function}),
  statics: () => ({
    _scheduleImmediate: dart.definiteFunctionType(dart.void, [VoidTovoid()]),
    _initializeScheduleImmediate: dart.definiteFunctionType(core.Function, []),
    _scheduleImmediateJsOverride: dart.definiteFunctionType(dart.void, [VoidTovoid()]),
    _scheduleImmediateWithSetImmediate: dart.definiteFunctionType(dart.void, [VoidTovoid()]),
    _scheduleImmediateWithTimer: dart.definiteFunctionType(dart.void, [VoidTovoid()])
  }),
  names: ['_scheduleImmediate', '_initializeScheduleImmediate', '_scheduleImmediateJsOverride', '_scheduleImmediateWithSetImmediate', '_scheduleImmediateWithTimer']
});
dart.defineLazy(async._AsyncRun, {
  get _scheduleImmediateClosure() {
    return async._AsyncRun._initializeScheduleImmediate();
  }
});
async._TimerCallback = dart.typedef('_TimerCallback', () => dart.functionType(dart.void, []));
async.StreamSubscription$ = dart.generic(T => {
  class StreamSubscription extends core.Object {}
  dart.addTypeTests(StreamSubscription);
  return StreamSubscription;
});
async.StreamSubscription = StreamSubscription();
async.EventSink$ = dart.generic(T => {
  let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
  class EventSink extends core.Object {}
  dart.addTypeTests(EventSink);
  EventSink[dart.implements] = () => [SinkOfT()];
  return EventSink;
});
async.EventSink = EventSink();
const _stream = Symbol('_stream');
async.StreamView$ = dart.generic(T => {
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let StreamSubscriptionOfTTovoid = () => (StreamSubscriptionOfTTovoid = dart.constFn(dart.functionType(dart.void, [StreamSubscriptionOfT()])))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class StreamView extends async.Stream$(T) {
    new(stream) {
      this[_stream] = stream;
      super._internal();
    }
    get isBroadcast() {
      return this[_stream].isBroadcast;
    }
    asBroadcastStream(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      return this[_stream].asBroadcastStream({onListen: onListen, onCancel: onCancel});
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return this[_stream].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
  }
  dart.setSignature(StreamView, {
    constructors: () => ({new: dart.definiteFunctionType(async.StreamView$(T), [StreamOfT()])}),
    fields: () => ({[_stream]: StreamOfT()}),
    methods: () => ({
      asBroadcastStream: dart.definiteFunctionType(async.Stream$(T), [], {onListen: StreamSubscriptionOfTTovoid(), onCancel: StreamSubscriptionOfTTovoid()}),
      listen: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid()], {onError: core.Function, onDone: VoidTovoid(), cancelOnError: core.bool})
    })
  });
  return StreamView;
});
async.StreamView = StreamView();
async.StreamConsumer$ = dart.generic(S => {
  class StreamConsumer extends core.Object {}
  dart.addTypeTests(StreamConsumer);
  return StreamConsumer;
});
async.StreamConsumer = StreamConsumer();
async.StreamSink$ = dart.generic(S => {
  let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
  let StreamConsumerOfS = () => (StreamConsumerOfS = dart.constFn(async.StreamConsumer$(S)))();
  class StreamSink extends core.Object {}
  dart.addTypeTests(StreamSink);
  StreamSink[dart.implements] = () => [EventSinkOfS(), StreamConsumerOfS()];
  return StreamSink;
});
async.StreamSink = StreamSink();
async.StreamTransformer$ = dart.generic((S, T) => {
  let _StreamSubscriptionTransformerOfS$T = () => (_StreamSubscriptionTransformerOfS$T = dart.constFn(async._StreamSubscriptionTransformer$(S, T)))();
  let _StreamHandlerTransformerOfS$T = () => (_StreamHandlerTransformerOfS$T = dart.constFn(async._StreamHandlerTransformer$(S, T)))();
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let StreamOfSAndboolToStreamSubscriptionOfT = () => (StreamOfSAndboolToStreamSubscriptionOfT = dart.constFn(dart.functionType(StreamSubscriptionOfT(), [StreamOfS(), core.bool])))();
  let SAndEventSinkOfTTovoid = () => (SAndEventSinkOfTTovoid = dart.constFn(dart.functionType(dart.void, [S, EventSinkOfT()])))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  let ObjectAndStackTraceAndEventSinkOfTTovoid = () => (ObjectAndStackTraceAndEventSinkOfTTovoid = dart.constFn(dart.functionType(dart.void, [core.Object, core.StackTrace, EventSinkOfT()])))();
  let EventSinkOfTTovoid = () => (EventSinkOfTTovoid = dart.constFn(dart.functionType(dart.void, [EventSinkOfT()])))();
  class StreamTransformer extends core.Object {
    static new(transformer) {
      return new (_StreamSubscriptionTransformerOfS$T())(transformer);
    }
    static fromHandlers(opts) {
      return new (_StreamHandlerTransformerOfS$T())(opts);
    }
  }
  dart.addTypeTests(StreamTransformer);
  dart.setSignature(StreamTransformer, {
    constructors: () => ({
      new: dart.definiteFunctionType(async.StreamTransformer$(S, T), [StreamOfSAndboolToStreamSubscriptionOfT()]),
      fromHandlers: dart.definiteFunctionType(async.StreamTransformer$(S, T), [], {handleData: SAndEventSinkOfTTovoid(), handleError: ObjectAndStackTraceAndEventSinkOfTTovoid(), handleDone: EventSinkOfTTovoid()})
    })
  });
  return StreamTransformer;
});
async.StreamTransformer = StreamTransformer();
async.StreamIterator$ = dart.generic(T => {
  let _StreamIteratorImplOfT = () => (_StreamIteratorImplOfT = dart.constFn(async._StreamIteratorImpl$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class StreamIterator extends core.Object {
    static new(stream) {
      return new (_StreamIteratorImplOfT())(stream);
    }
  }
  dart.addTypeTests(StreamIterator);
  dart.setSignature(StreamIterator, {
    constructors: () => ({new: dart.definiteFunctionType(async.StreamIterator$(T), [StreamOfT()])})
  });
  return StreamIterator;
});
async.StreamIterator = StreamIterator();
async._ControllerEventSinkWrapper$ = dart.generic(T => {
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  class _ControllerEventSinkWrapper extends core.Object {
    new(sink) {
      this[_sink] = sink;
    }
    add(data) {
      T._check(data);
      this[_sink].add(data);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_sink].addError(error, stackTrace);
    }
    close() {
      this[_sink].close();
    }
  }
  dart.addTypeTests(_ControllerEventSinkWrapper);
  _ControllerEventSinkWrapper[dart.implements] = () => [EventSinkOfT()];
  dart.setSignature(_ControllerEventSinkWrapper, {
    constructors: () => ({new: dart.definiteFunctionType(async._ControllerEventSinkWrapper$(T), [async.EventSink])}),
    fields: () => ({[_sink]: async.EventSink}),
    methods: () => ({
      add: dart.definiteFunctionType(dart.void, [T]),
      addError: dart.definiteFunctionType(dart.void, [dart.dynamic], [core.StackTrace]),
      close: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _ControllerEventSinkWrapper;
});
async._ControllerEventSinkWrapper = _ControllerEventSinkWrapper();
async.ControllerCallback = dart.typedef('ControllerCallback', () => dart.functionType(dart.void, []));
async.ControllerCancelCallback = dart.typedef('ControllerCancelCallback', () => dart.functionType(dart.dynamic, []));
async.StreamController$ = dart.generic(T => {
  let _SyncStreamControllerOfT = () => (_SyncStreamControllerOfT = dart.constFn(async._SyncStreamController$(T)))();
  let _AsyncStreamControllerOfT = () => (_AsyncStreamControllerOfT = dart.constFn(async._AsyncStreamController$(T)))();
  let _SyncBroadcastStreamControllerOfT = () => (_SyncBroadcastStreamControllerOfT = dart.constFn(async._SyncBroadcastStreamController$(T)))();
  let _AsyncBroadcastStreamControllerOfT = () => (_AsyncBroadcastStreamControllerOfT = dart.constFn(async._AsyncBroadcastStreamController$(T)))();
  let StreamSinkOfT = () => (StreamSinkOfT = dart.constFn(async.StreamSink$(T)))();
  class StreamController extends core.Object {
    static new(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onPause = opts && 'onPause' in opts ? opts.onPause : null;
      let onResume = opts && 'onResume' in opts ? opts.onResume : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      let sync = opts && 'sync' in opts ? opts.sync : false;
      return dart.test(sync) ? new (_SyncStreamControllerOfT())(onListen, onPause, onResume, onCancel) : new (_AsyncStreamControllerOfT())(onListen, onPause, onResume, onCancel);
    }
    static broadcast(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      let sync = opts && 'sync' in opts ? opts.sync : false;
      return dart.test(sync) ? new (_SyncBroadcastStreamControllerOfT())(onListen, onCancel) : new (_AsyncBroadcastStreamControllerOfT())(onListen, onCancel);
    }
  }
  dart.addTypeTests(StreamController);
  StreamController[dart.implements] = () => [StreamSinkOfT()];
  dart.setSignature(StreamController, {
    constructors: () => ({
      new: dart.definiteFunctionType(async.StreamController$(T), [], {onListen: VoidTovoid(), onPause: VoidTovoid(), onResume: VoidTovoid(), onCancel: VoidTodynamic(), sync: core.bool}),
      broadcast: dart.definiteFunctionType(async.StreamController$(T), [], {onListen: VoidTovoid(), onCancel: VoidTovoid(), sync: core.bool})
    })
  });
  return StreamController;
});
async.StreamController = StreamController();
async.SynchronousStreamController$ = dart.generic(T => {
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  class SynchronousStreamController extends core.Object {}
  dart.addTypeTests(SynchronousStreamController);
  SynchronousStreamController[dart.implements] = () => [StreamControllerOfT()];
  return SynchronousStreamController;
});
async.SynchronousStreamController = SynchronousStreamController();
async._StreamControllerLifecycle$ = dart.generic(T => {
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  class _StreamControllerLifecycle extends core.Object {
    [_recordPause](subscription) {
      StreamSubscriptionOfT()._check(subscription);
    }
    [_recordResume](subscription) {
      StreamSubscriptionOfT()._check(subscription);
    }
    [_recordCancel](subscription) {
      StreamSubscriptionOfT()._check(subscription);
      return null;
    }
  }
  dart.addTypeTests(_StreamControllerLifecycle);
  dart.setSignature(_StreamControllerLifecycle, {
    methods: () => ({
      [_recordPause]: dart.definiteFunctionType(dart.void, [StreamSubscriptionOfT()]),
      [_recordResume]: dart.definiteFunctionType(dart.void, [StreamSubscriptionOfT()]),
      [_recordCancel]: dart.definiteFunctionType(async.Future, [StreamSubscriptionOfT()])
    })
  });
  return _StreamControllerLifecycle;
});
async._StreamControllerLifecycle = _StreamControllerLifecycle();
const _varData = Symbol('_varData');
const _isInitialState = Symbol('_isInitialState');
const _subscription = Symbol('_subscription');
const _pendingEvents = Symbol('_pendingEvents');
const _ensurePendingEvents = Symbol('_ensurePendingEvents');
const _badEventState = Symbol('_badEventState');
let const;
async._StreamController$ = dart.generic(T => {
  let _ControllerStreamOfT = () => (_ControllerStreamOfT = dart.constFn(async._ControllerStream$(T)))();
  let _StreamSinkWrapperOfT = () => (_StreamSinkWrapperOfT = dart.constFn(async._StreamSinkWrapper$(T)))();
  let _PendingEventsOfT = () => (_PendingEventsOfT = dart.constFn(async._PendingEvents$(T)))();
  let _StreamControllerAddStreamStateOfT = () => (_StreamControllerAddStreamStateOfT = dart.constFn(async._StreamControllerAddStreamState$(T)))();
  let _StreamImplEventsOfT = () => (_StreamImplEventsOfT = dart.constFn(async._StreamImplEvents$(T)))();
  let _ControllerSubscriptionOfT = () => (_ControllerSubscriptionOfT = dart.constFn(async._ControllerSubscription$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  let _StreamControllerLifecycleOfT = () => (_StreamControllerLifecycleOfT = dart.constFn(async._StreamControllerLifecycle$(T)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _StreamController extends core.Object {
    new(onListen, onPause, onResume, onCancel) {
      this.onListen = onListen;
      this.onPause = onPause;
      this.onResume = onResume;
      this.onCancel = onCancel;
      this[_varData] = null;
      this[_state] = async._StreamController._STATE_INITIAL;
      this[_doneFuture] = null;
    }
    get stream() {
      return new (_ControllerStreamOfT())(this);
    }
    get sink() {
      return new (_StreamSinkWrapperOfT())(this);
    }
    get [_isCanceled]() {
      return (dart.notNull(this[_state]) & async._StreamController._STATE_CANCELED) != 0;
    }
    get hasListener() {
      return (dart.notNull(this[_state]) & async._StreamController._STATE_SUBSCRIBED) != 0;
    }
    get [_isInitialState]() {
      return (dart.notNull(this[_state]) & async._StreamController._STATE_SUBSCRIPTION_MASK) == async._StreamController._STATE_INITIAL;
    }
    get isClosed() {
      return (dart.notNull(this[_state]) & async._StreamController._STATE_CLOSED) != 0;
    }
    get isPaused() {
      return dart.test(this.hasListener) ? this[_subscription][_isInputPaused] : !dart.test(this[_isCanceled]);
    }
    get [_isAddingStream]() {
      return (dart.notNull(this[_state]) & async._StreamController._STATE_ADDSTREAM) != 0;
    }
    get [_mayAddEvent]() {
      return dart.notNull(this[_state]) < async._StreamController._STATE_CLOSED;
    }
    get [_pendingEvents]() {
      dart.assert(this[_isInitialState]);
      if (!dart.test(this[_isAddingStream])) {
        return _PendingEventsOfT().as(this[_varData]);
      }
      let state = _StreamControllerAddStreamStateOfT().as(this[_varData]);
      return _PendingEventsOfT().as(state.varData);
    }
    [_ensurePendingEvents]() {
      dart.assert(this[_isInitialState]);
      if (!dart.test(this[_isAddingStream])) {
        if (this[_varData] == null) this[_varData] = new (_StreamImplEventsOfT())();
        return _StreamImplEventsOfT().as(this[_varData]);
      }
      let state = _StreamControllerAddStreamStateOfT().as(this[_varData]);
      if (state.varData == null) state.varData = new (_StreamImplEventsOfT())();
      return _StreamImplEventsOfT().as(state.varData);
    }
    get [_subscription]() {
      dart.assert(this.hasListener);
      if (dart.test(this[_isAddingStream])) {
        let addState = _StreamControllerAddStreamStateOfT().as(this[_varData]);
        return _ControllerSubscriptionOfT().as(addState.varData);
      }
      return _ControllerSubscriptionOfT().as(this[_varData]);
    }
    [_badEventState]() {
      if (dart.test(this.isClosed)) {
        return new core.StateError("Cannot add event after closing");
      }
      dart.assert(this[_isAddingStream]);
      return new core.StateError("Cannot add event while adding a stream");
    }
    addStream(source, opts) {
      StreamOfT()._check(source);
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : true;
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_badEventState]());
      if (dart.test(this[_isCanceled])) return new async._Future.immediate(null);
      let addState = new (_StreamControllerAddStreamStateOfT())(this, this[_varData], source, cancelOnError);
      this[_varData] = addState;
      this[_state] = (dart.notNull(this[_state]) | async._StreamController._STATE_ADDSTREAM) >>> 0;
      return addState.addStreamFuture;
    }
    get done() {
      return this[_ensureDoneFuture]();
    }
    [_ensureDoneFuture]() {
      if (this[_doneFuture] == null) {
        this[_doneFuture] = dart.test(this[_isCanceled]) ? async.Future._nullFuture : new async._Future();
      }
      return this[_doneFuture];
    }
    add(value) {
      T._check(value);
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_badEventState]());
      this[_add](value);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_badEventState]());
      error = async._nonNullError(error);
      let replacement = async.Zone.current.errorCallback(error, stackTrace);
      if (replacement != null) {
        error = async._nonNullError(replacement.error);
        stackTrace = replacement.stackTrace;
      }
      this[_addError](error, stackTrace);
    }
    close() {
      if (dart.test(this.isClosed)) {
        return this[_ensureDoneFuture]();
      }
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_badEventState]());
      this[_closeUnchecked]();
      return this[_ensureDoneFuture]();
    }
    [_closeUnchecked]() {
      this[_state] = (dart.notNull(this[_state]) | async._StreamController._STATE_CLOSED) >>> 0;
      if (dart.test(this.hasListener)) {
        this[_sendDone]();
      } else if (dart.test(this[_isInitialState])) {
        this[_ensurePendingEvents]().add(const || (const = dart.const(new async._DelayedDone())));
      }
    }
    [_add](value) {
      T._check(value);
      if (dart.test(this.hasListener)) {
        this[_sendData](value);
      } else if (dart.test(this[_isInitialState])) {
        this[_ensurePendingEvents]().add(new (_DelayedDataOfT())(value));
      }
    }
    [_addError](error, stackTrace) {
      if (dart.test(this.hasListener)) {
        this[_sendError](error, stackTrace);
      } else if (dart.test(this[_isInitialState])) {
        this[_ensurePendingEvents]().add(new async._DelayedError(error, stackTrace));
      }
    }
    [_close]() {
      dart.assert(this[_isAddingStream]);
      let addState = _StreamControllerAddStreamStateOfT().as(this[_varData]);
      this[_varData] = addState.varData;
      this[_state] = (dart.notNull(this[_state]) & ~async._StreamController._STATE_ADDSTREAM) >>> 0;
      addState.complete();
    }
    [_subscribe](onData, onError, onDone, cancelOnError) {
      if (!dart.test(this[_isInitialState])) {
        dart.throw(new core.StateError("Stream has already been listened to."));
      }
      let subscription = new (_ControllerSubscriptionOfT())(this, onData, onError, onDone, cancelOnError);
      let pendingEvents = this[_pendingEvents];
      this[_state] = (dart.notNull(this[_state]) | async._StreamController._STATE_SUBSCRIBED) >>> 0;
      if (dart.test(this[_isAddingStream])) {
        let addState = _StreamControllerAddStreamStateOfT().as(this[_varData]);
        addState.varData = subscription;
        addState.resume();
      } else {
        this[_varData] = subscription;
      }
      subscription[_setPendingEvents](pendingEvents);
      subscription[_guardCallback](dart.fn(() => {
        async._runGuarded(this.onListen);
      }, VoidTodynamic()));
      return subscription;
    }
    [_recordCancel](subscription) {
      StreamSubscriptionOfT()._check(subscription);
      let result = null;
      if (dart.test(this[_isAddingStream])) {
        let addState = _StreamControllerAddStreamStateOfT().as(this[_varData]);
        result = addState.cancel();
      }
      this[_varData] = null;
      this[_state] = (dart.notNull(this[_state]) & ~(async._StreamController._STATE_SUBSCRIBED | async._StreamController._STATE_ADDSTREAM) | async._StreamController._STATE_CANCELED) >>> 0;
      if (this.onCancel != null) {
        if (result == null) {
          try {
            result = async.Future._check(this.onCancel());
          } catch (e) {
            let s = dart.stackTrace(e);
            result = new async._Future();
            result[_asyncCompleteError](e, s);
          }

        } else {
          result = result.whenComplete(this.onCancel);
        }
      }
      const complete = (function() {
        if (this[_doneFuture] != null && dart.test(this[_doneFuture][_mayComplete])) {
          this[_doneFuture][_asyncComplete](null);
        }
      }).bind(this);
      dart.fn(complete, VoidTovoid());
      if (result != null) {
        result = result.whenComplete(complete);
      } else {
        complete();
      }
      return result;
    }
    [_recordPause](subscription) {
      StreamSubscriptionOfT()._check(subscription);
      if (dart.test(this[_isAddingStream])) {
        let addState = _StreamControllerAddStreamStateOfT().as(this[_varData]);
        addState.pause();
      }
      async._runGuarded(this.onPause);
    }
    [_recordResume](subscription) {
      StreamSubscriptionOfT()._check(subscription);
      if (dart.test(this[_isAddingStream])) {
        let addState = _StreamControllerAddStreamStateOfT().as(this[_varData]);
        addState.resume();
      }
      async._runGuarded(this.onResume);
    }
  }
  dart.addTypeTests(_StreamController);
  _StreamController[dart.implements] = () => [StreamControllerOfT(), _StreamControllerLifecycleOfT(), _EventSinkOfT(), _EventDispatchOfT()];
  dart.setSignature(_StreamController, {
    constructors: () => ({new: dart.definiteFunctionType(async._StreamController$(T), [async.ControllerCallback, async.ControllerCallback, async.ControllerCallback, async.ControllerCancelCallback])}),
    fields: () => ({
      [_varData]: dart.dynamic,
      [_state]: core.int,
      [_doneFuture]: async._Future,
      onListen: async.ControllerCallback,
      onPause: async.ControllerCallback,
      onResume: async.ControllerCallback,
      onCancel: async.ControllerCancelCallback
    }),
    getters: () => ({
      stream: dart.definiteFunctionType(async.Stream$(T), []),
      sink: dart.definiteFunctionType(async.StreamSink$(T), []),
      [_isCanceled]: dart.definiteFunctionType(core.bool, []),
      hasListener: dart.definiteFunctionType(core.bool, []),
      [_isInitialState]: dart.definiteFunctionType(core.bool, []),
      isClosed: dart.definiteFunctionType(core.bool, []),
      isPaused: dart.definiteFunctionType(core.bool, []),
      [_isAddingStream]: dart.definiteFunctionType(core.bool, []),
      [_mayAddEvent]: dart.definiteFunctionType(core.bool, []),
      [_pendingEvents]: dart.definiteFunctionType(async._PendingEvents$(T), []),
      [_subscription]: dart.definiteFunctionType(async._ControllerSubscription$(T), []),
      done: dart.definiteFunctionType(async.Future, [])
    }),
    methods: () => ({
      [_ensurePendingEvents]: dart.definiteFunctionType(async._StreamImplEvents$(T), []),
      [_badEventState]: dart.definiteFunctionType(core.Error, []),
      addStream: dart.definiteFunctionType(async.Future, [StreamOfT()], {cancelOnError: core.bool}),
      [_ensureDoneFuture]: dart.definiteFunctionType(async.Future, []),
      add: dart.definiteFunctionType(dart.void, [T]),
      addError: dart.definiteFunctionType(dart.void, [core.Object], [core.StackTrace]),
      close: dart.definiteFunctionType(async.Future, []),
      [_closeUnchecked]: dart.definiteFunctionType(dart.void, []),
      [_add]: dart.definiteFunctionType(dart.void, [T]),
      [_addError]: dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace]),
      [_close]: dart.definiteFunctionType(dart.void, []),
      [_subscribe]: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid(), core.Function, VoidTovoid(), core.bool]),
      [_recordCancel]: dart.definiteFunctionType(async.Future, [StreamSubscriptionOfT()]),
      [_recordPause]: dart.definiteFunctionType(dart.void, [StreamSubscriptionOfT()]),
      [_recordResume]: dart.definiteFunctionType(dart.void, [StreamSubscriptionOfT()])
    }),
    sfields: () => ({
      _STATE_INITIAL: core.int,
      _STATE_SUBSCRIBED: core.int,
      _STATE_CANCELED: core.int,
      _STATE_SUBSCRIPTION_MASK: core.int,
      _STATE_CLOSED: core.int,
      _STATE_ADDSTREAM: core.int
    })
  });
  return _StreamController;
});
async._StreamController = _StreamController();
async._StreamController._STATE_INITIAL = 0;
async._StreamController._STATE_SUBSCRIBED = 1;
async._StreamController._STATE_CANCELED = 2;
async._StreamController._STATE_SUBSCRIPTION_MASK = 3;
async._StreamController._STATE_CLOSED = 4;
async._StreamController._STATE_ADDSTREAM = 8;
async._SyncStreamControllerDispatch$ = dart.generic(T => {
  let _StreamControllerOfT = () => (_StreamControllerOfT = dart.constFn(async._StreamController$(T)))();
  let SynchronousStreamControllerOfT = () => (SynchronousStreamControllerOfT = dart.constFn(async.SynchronousStreamController$(T)))();
  class _SyncStreamControllerDispatch extends core.Object {
    [_sendData](data) {
      T._check(data);
      this[_subscription][_add](data);
    }
    [_sendError](error, stackTrace) {
      this[_subscription][_addError](error, stackTrace);
    }
    [_sendDone]() {
      this[_subscription][_close]();
    }
  }
  dart.addTypeTests(_SyncStreamControllerDispatch);
  _SyncStreamControllerDispatch[dart.implements] = () => [_StreamControllerOfT(), SynchronousStreamControllerOfT()];
  dart.setSignature(_SyncStreamControllerDispatch, {
    methods: () => ({
      [_sendData]: dart.definiteFunctionType(dart.void, [T]),
      [_sendError]: dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace]),
      [_sendDone]: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _SyncStreamControllerDispatch;
});
async._SyncStreamControllerDispatch = _SyncStreamControllerDispatch();
let const;
async._AsyncStreamControllerDispatch$ = dart.generic(T => {
  let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
  let _StreamControllerOfT = () => (_StreamControllerOfT = dart.constFn(async._StreamController$(T)))();
  class _AsyncStreamControllerDispatch extends core.Object {
    [_sendData](data) {
      T._check(data);
      this[_subscription][_addPending](new (_DelayedDataOfT())(data));
    }
    [_sendError](error, stackTrace) {
      this[_subscription][_addPending](new async._DelayedError(error, stackTrace));
    }
    [_sendDone]() {
      this[_subscription][_addPending](const || (const = dart.const(new async._DelayedDone())));
    }
  }
  dart.addTypeTests(_AsyncStreamControllerDispatch);
  _AsyncStreamControllerDispatch[dart.implements] = () => [_StreamControllerOfT()];
  dart.setSignature(_AsyncStreamControllerDispatch, {
    methods: () => ({
      [_sendData]: dart.definiteFunctionType(dart.void, [T]),
      [_sendError]: dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace]),
      [_sendDone]: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _AsyncStreamControllerDispatch;
});
async._AsyncStreamControllerDispatch = _AsyncStreamControllerDispatch();
async._AsyncStreamController$ = dart.generic(T => {
  class _AsyncStreamController extends dart.mixin(async._StreamController$(T), async._AsyncStreamControllerDispatch$(T)) {
    new(onListen, onPause, onResume, onCancel) {
      super.new(onListen, onPause, onResume, onCancel);
    }
  }
  return _AsyncStreamController;
});
async._AsyncStreamController = _AsyncStreamController();
async._SyncStreamController$ = dart.generic(T => {
  class _SyncStreamController extends dart.mixin(async._StreamController$(T), async._SyncStreamControllerDispatch$(T)) {
    new(onListen, onPause, onResume, onCancel) {
      super.new(onListen, onPause, onResume, onCancel);
    }
  }
  return _SyncStreamController;
});
async._SyncStreamController = _SyncStreamController();
async._NotificationHandler = dart.typedef('_NotificationHandler', () => dart.functionType(dart.dynamic, []));
async._runGuarded = function(notificationHandler) {
  if (notificationHandler == null) return null;
  try {
    let result = notificationHandler();
    if (async.Future.is(result)) return result;
    return null;
  } catch (e) {
    let s = dart.stackTrace(e);
    async.Zone.current.handleUncaughtError(dart.dynamic)(e, s);
  }

};
dart.fn(async._runGuarded, _NotificationHandlerToFuture());
const _target = Symbol('_target');
async._StreamSinkWrapper$ = dart.generic(T => {
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let StreamSinkOfT = () => (StreamSinkOfT = dart.constFn(async.StreamSink$(T)))();
  class _StreamSinkWrapper extends core.Object {
    new(target) {
      this[_target] = target;
    }
    add(data) {
      T._check(data);
      this[_target].add(data);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_target].addError(error, stackTrace);
    }
    close() {
      return this[_target].close();
    }
    addStream(source, opts) {
      StreamOfT()._check(source);
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : true;
      return this[_target].addStream(source, {cancelOnError: cancelOnError});
    }
    get done() {
      return this[_target].done;
    }
  }
  dart.addTypeTests(_StreamSinkWrapper);
  _StreamSinkWrapper[dart.implements] = () => [StreamSinkOfT()];
  dart.setSignature(_StreamSinkWrapper, {
    constructors: () => ({new: dart.definiteFunctionType(async._StreamSinkWrapper$(T), [async.StreamController])}),
    fields: () => ({[_target]: async.StreamController}),
    getters: () => ({done: dart.definiteFunctionType(async.Future, [])}),
    methods: () => ({
      add: dart.definiteFunctionType(dart.void, [T]),
      addError: dart.definiteFunctionType(dart.void, [core.Object], [core.StackTrace]),
      close: dart.definiteFunctionType(async.Future, []),
      addStream: dart.definiteFunctionType(async.Future, [StreamOfT()], {cancelOnError: core.bool})
    })
  });
  return _StreamSinkWrapper;
});
async._StreamSinkWrapper = _StreamSinkWrapper();
async._AddStreamState$ = dart.generic(T => {
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  class _AddStreamState extends core.Object {
    new(controller, source, cancelOnError) {
      this.addStreamFuture = new async._Future();
      this.addSubscription = source.listen(dart.bind(controller, _add), {onError: core.Function._check(dart.test(cancelOnError) ? async._AddStreamState.makeErrorHandler(controller) : dart.bind(controller, _addError)), onDone: dart.bind(controller, _close), cancelOnError: cancelOnError});
    }
    static makeErrorHandler(controller) {
      return dart.fn((e, s) => {
        controller[_addError](e, s);
        controller[_close]();
      }, dynamicAndStackTraceTodynamic());
    }
    pause() {
      this.addSubscription.pause();
    }
    resume() {
      this.addSubscription.resume();
    }
    cancel() {
      let cancel = this.addSubscription.cancel();
      if (cancel == null) {
        this.addStreamFuture[_asyncComplete](null);
        return null;
      }
      return cancel.whenComplete(dart.fn(() => {
        this.addStreamFuture[_asyncComplete](null);
      }, VoidTodynamic()));
    }
    complete() {
      this.addStreamFuture[_asyncComplete](null);
    }
  }
  dart.addTypeTests(_AddStreamState);
  dart.setSignature(_AddStreamState, {
    constructors: () => ({new: dart.definiteFunctionType(async._AddStreamState$(T), [_EventSinkOfT(), async.Stream, core.bool])}),
    fields: () => ({
      addStreamFuture: async._Future,
      addSubscription: async.StreamSubscription
    }),
    methods: () => ({
      pause: dart.definiteFunctionType(dart.void, []),
      resume: dart.definiteFunctionType(dart.void, []),
      cancel: dart.definiteFunctionType(async.Future, []),
      complete: dart.definiteFunctionType(dart.void, [])
    }),
    statics: () => ({makeErrorHandler: dart.definiteFunctionType(dart.dynamic, [async._EventSink])}),
    names: ['makeErrorHandler']
  });
  return _AddStreamState;
});
async._AddStreamState = _AddStreamState();
async._StreamControllerAddStreamState$ = dart.generic(T => {
  let _StreamControllerOfT = () => (_StreamControllerOfT = dart.constFn(async._StreamController$(T)))();
  class _StreamControllerAddStreamState extends async._AddStreamState$(T) {
    new(controller, varData, source, cancelOnError) {
      this.varData = varData;
      super.new(controller, source, cancelOnError);
      if (dart.test(controller.isPaused)) {
        this.addSubscription.pause();
      }
    }
  }
  dart.setSignature(_StreamControllerAddStreamState, {
    constructors: () => ({new: dart.definiteFunctionType(async._StreamControllerAddStreamState$(T), [_StreamControllerOfT(), dart.dynamic, async.Stream, core.bool])}),
    fields: () => ({varData: dart.dynamic})
  });
  return _StreamControllerAddStreamState;
});
async._StreamControllerAddStreamState = _StreamControllerAddStreamState();
async._EventSink$ = dart.generic(T => {
  class _EventSink extends core.Object {}
  dart.addTypeTests(_EventSink);
  return _EventSink;
});
async._EventSink = _EventSink();
async._EventDispatch$ = dart.generic(T => {
  class _EventDispatch extends core.Object {}
  dart.addTypeTests(_EventDispatch);
  return _EventDispatch;
});
async._EventDispatch = _EventDispatch();
async._EventGenerator$ = dart.generic(T => {
  const _EventGenerator = dart.typedef('_EventGenerator', () => dart.functionType(async._PendingEvents$(T), []));
  return _EventGenerator;
});
async._EventGenerator = _EventGenerator();
const _isUsed = Symbol('_isUsed');
async._GeneratedStreamImpl$ = dart.generic(T => {
  let _BufferingStreamSubscriptionOfT = () => (_BufferingStreamSubscriptionOfT = dart.constFn(async._BufferingStreamSubscription$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  let _EventGeneratorOfT = () => (_EventGeneratorOfT = dart.constFn(async._EventGenerator$(T)))();
  class _GeneratedStreamImpl extends async._StreamImpl$(T) {
    new(pending) {
      this[_pending] = pending;
      this[_isUsed] = false;
      super.new();
    }
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      if (dart.test(this[_isUsed])) dart.throw(new core.StateError("Stream has already been listened to."));
      this[_isUsed] = true;
      let _ = new (_BufferingStreamSubscriptionOfT())(onData, onError, onDone, cancelOnError);
      _[_setPendingEvents](this[_pending]());
      return _;
    }
  }
  dart.setSignature(_GeneratedStreamImpl, {
    constructors: () => ({new: dart.definiteFunctionType(async._GeneratedStreamImpl$(T), [_EventGeneratorOfT()])}),
    fields: () => ({
      [_pending]: _EventGeneratorOfT(),
      [_isUsed]: core.bool
    }),
    methods: () => ({[_createSubscription]: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid(), core.Function, VoidTovoid(), core.bool])})
  });
  return _GeneratedStreamImpl;
});
async._GeneratedStreamImpl = _GeneratedStreamImpl();
const _iterator = Symbol('_iterator');
const _eventScheduled = Symbol('_eventScheduled');
async._PendingEvents$ = dart.generic(T => {
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  class _PendingEvents extends core.Object {
    new() {
      this[_state] = async._PendingEvents._STATE_UNSCHEDULED;
    }
    get isScheduled() {
      return this[_state] == async._PendingEvents._STATE_SCHEDULED;
    }
    get [_eventScheduled]() {
      return dart.notNull(this[_state]) >= async._PendingEvents._STATE_SCHEDULED;
    }
    schedule(dispatch) {
      _EventDispatchOfT()._check(dispatch);
      if (dart.test(this.isScheduled)) return;
      dart.assert(!dart.test(this.isEmpty));
      if (dart.test(this[_eventScheduled])) {
        dart.assert(this[_state] == async._PendingEvents._STATE_CANCELED);
        this[_state] = async._PendingEvents._STATE_SCHEDULED;
        return;
      }
      async.scheduleMicrotask(dart.fn(() => {
        let oldState = this[_state];
        this[_state] = async._PendingEvents._STATE_UNSCHEDULED;
        if (oldState == async._PendingEvents._STATE_CANCELED) return;
        this.handleNext(dispatch);
      }, VoidTovoid()));
      this[_state] = async._PendingEvents._STATE_SCHEDULED;
    }
    cancelSchedule() {
      if (dart.test(this.isScheduled)) this[_state] = async._PendingEvents._STATE_CANCELED;
    }
  }
  dart.addTypeTests(_PendingEvents);
  dart.setSignature(_PendingEvents, {
    fields: () => ({[_state]: core.int}),
    getters: () => ({
      isScheduled: dart.definiteFunctionType(core.bool, []),
      [_eventScheduled]: dart.definiteFunctionType(core.bool, [])
    }),
    methods: () => ({
      schedule: dart.definiteFunctionType(dart.void, [_EventDispatchOfT()]),
      cancelSchedule: dart.definiteFunctionType(dart.void, [])
    }),
    sfields: () => ({
      _STATE_UNSCHEDULED: core.int,
      _STATE_SCHEDULED: core.int,
      _STATE_CANCELED: core.int
    })
  });
  return _PendingEvents;
});
async._PendingEvents = _PendingEvents();
async._PendingEvents._STATE_UNSCHEDULED = 0;
async._PendingEvents._STATE_SCHEDULED = 1;
async._PendingEvents._STATE_CANCELED = 3;
async._IterablePendingEvents$ = dart.generic(T => {
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
  class _IterablePendingEvents extends async._PendingEvents$(T) {
    new(data) {
      this[_iterator] = data[dartx.iterator];
      super.new();
    }
    get isEmpty() {
      return this[_iterator] == null;
    }
    handleNext(dispatch) {
      _EventDispatchOfT()._check(dispatch);
      if (this[_iterator] == null) {
        dart.throw(new core.StateError("No events pending."));
      }
      let isDone = null;
      try {
        isDone = !dart.test(this[_iterator].moveNext());
      } catch (e) {
        let s = dart.stackTrace(e);
        this[_iterator] = null;
        dispatch[_sendError](e, s);
        return;
      }

      if (!dart.test(isDone)) {
        dispatch[_sendData](this[_iterator].current);
      } else {
        this[_iterator] = null;
        dispatch[_sendDone]();
      }
    }
    clear() {
      if (dart.test(this.isScheduled)) this.cancelSchedule();
      this[_iterator] = null;
    }
  }
  dart.setSignature(_IterablePendingEvents, {
    constructors: () => ({new: dart.definiteFunctionType(async._IterablePendingEvents$(T), [IterableOfT()])}),
    fields: () => ({[_iterator]: IteratorOfT()}),
    getters: () => ({isEmpty: dart.definiteFunctionType(core.bool, [])}),
    methods: () => ({
      handleNext: dart.definiteFunctionType(dart.void, [_EventDispatchOfT()]),
      clear: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _IterablePendingEvents;
});
async._IterablePendingEvents = _IterablePendingEvents();
async._DataHandler$ = dart.generic(T => {
  const _DataHandler = dart.typedef('_DataHandler', () => dart.functionType(dart.void, [T]));
  return _DataHandler;
});
async._DataHandler = _DataHandler();
async._DoneHandler = dart.typedef('_DoneHandler', () => dart.functionType(dart.void, []));
async._nullDataHandler = function(value) {
};
dart.fn(async._nullDataHandler, dynamicTovoid());
async._nullErrorHandler = function(error, stackTrace) {
  if (stackTrace === void 0) stackTrace = null;
  async.Zone.current.handleUncaughtError(dart.dynamic)(error, stackTrace);
};
dart.lazyFn(async._nullErrorHandler, () => dynamic__Tovoid());
async._nullDoneHandler = function() {
};
dart.fn(async._nullDoneHandler, VoidTovoid());
async._DelayedEvent$ = dart.generic(T => {
  class _DelayedEvent extends core.Object {
    new() {
      this.next = null;
    }
  }
  dart.addTypeTests(_DelayedEvent);
  dart.setSignature(_DelayedEvent, {
    fields: () => ({next: async._DelayedEvent})
  });
  return _DelayedEvent;
});
async._DelayedEvent = _DelayedEvent();
async._DelayedData$ = dart.generic(T => {
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  class _DelayedData extends async._DelayedEvent$(T) {
    new(value) {
      this.value = value;
      super.new();
    }
    perform(dispatch) {
      _EventDispatchOfT()._check(dispatch);
      dispatch[_sendData](this.value);
    }
  }
  dart.setSignature(_DelayedData, {
    constructors: () => ({new: dart.definiteFunctionType(async._DelayedData$(T), [T])}),
    fields: () => ({value: T}),
    methods: () => ({perform: dart.definiteFunctionType(dart.void, [_EventDispatchOfT()])})
  });
  return _DelayedData;
});
async._DelayedData = _DelayedData();
async._DelayedError = class _DelayedError extends async._DelayedEvent {
  new(error, stackTrace) {
    this.error = error;
    this.stackTrace = stackTrace;
    super.new();
  }
  perform(dispatch) {
    dispatch[_sendError](this.error, this.stackTrace);
  }
};
dart.addSimpleTypeTests(async._DelayedError);
dart.setSignature(async._DelayedError, {
  constructors: () => ({new: dart.definiteFunctionType(async._DelayedError, [dart.dynamic, core.StackTrace])}),
  fields: () => ({
    error: dart.dynamic,
    stackTrace: core.StackTrace
  }),
  methods: () => ({perform: dart.definiteFunctionType(dart.void, [async._EventDispatch])})
});
async._DelayedDone = class _DelayedDone extends core.Object {
  new() {
  }
  perform(dispatch) {
    dispatch[_sendDone]();
  }
  get next() {
    return null;
  }
  set next(_) {
    dart.throw(new core.StateError("No events after a done."));
  }
};
async._DelayedDone[dart.implements] = () => [async._DelayedEvent];
dart.setSignature(async._DelayedDone, {
  constructors: () => ({new: dart.definiteFunctionType(async._DelayedDone, [])}),
  getters: () => ({next: dart.definiteFunctionType(async._DelayedEvent, [])}),
  setters: () => ({next: dart.definiteFunctionType(dart.void, [async._DelayedEvent])}),
  methods: () => ({perform: dart.definiteFunctionType(dart.void, [async._EventDispatch])})
});
async._StreamImplEvents$ = dart.generic(T => {
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  class _StreamImplEvents extends async._PendingEvents$(T) {
    new() {
      this.firstPendingEvent = null;
      this.lastPendingEvent = null;
      super.new();
    }
    get isEmpty() {
      return this.lastPendingEvent == null;
    }
    add(event) {
      if (this.lastPendingEvent == null) {
        this.firstPendingEvent = this.lastPendingEvent = event;
      } else {
        this.lastPendingEvent = this.lastPendingEvent.next = event;
      }
    }
    handleNext(dispatch) {
      _EventDispatchOfT()._check(dispatch);
      dart.assert(!dart.test(this.isScheduled));
      let event = this.firstPendingEvent;
      this.firstPendingEvent = event.next;
      if (this.firstPendingEvent == null) {
        this.lastPendingEvent = null;
      }
      event.perform(dispatch);
    }
    clear() {
      if (dart.test(this.isScheduled)) this.cancelSchedule();
      this.firstPendingEvent = this.lastPendingEvent = null;
    }
  }
  dart.setSignature(_StreamImplEvents, {
    fields: () => ({
      firstPendingEvent: async._DelayedEvent,
      lastPendingEvent: async._DelayedEvent
    }),
    getters: () => ({isEmpty: dart.definiteFunctionType(core.bool, [])}),
    methods: () => ({
      add: dart.definiteFunctionType(dart.void, [async._DelayedEvent]),
      handleNext: dart.definiteFunctionType(dart.void, [_EventDispatchOfT()]),
      clear: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _StreamImplEvents;
});
async._StreamImplEvents = _StreamImplEvents();
const _unlink = Symbol('_unlink');
const _insertBefore = Symbol('_insertBefore');
async._BroadcastLinkedList = class _BroadcastLinkedList extends core.Object {
  new() {
    this[_next] = null;
    this[_previous] = null;
  }
  [_unlink]() {
    this[_previous][_next] = this[_next];
    this[_next][_previous] = this[_previous];
    this[_next] = this[_previous] = this;
  }
  [_insertBefore](newNext) {
    let newPrevious = newNext[_previous];
    newPrevious[_next] = this;
    newNext[_previous] = this[_previous];
    this[_previous][_next] = newNext;
    this[_previous] = newPrevious;
  }
};
dart.setSignature(async._BroadcastLinkedList, {
  fields: () => ({
    [_next]: async._BroadcastLinkedList,
    [_previous]: async._BroadcastLinkedList
  }),
  methods: () => ({
    [_unlink]: dart.definiteFunctionType(dart.void, []),
    [_insertBefore]: dart.definiteFunctionType(dart.void, [async._BroadcastLinkedList])
  })
});
async._BroadcastCallback$ = dart.generic(T => {
  const _BroadcastCallback = dart.typedef('_BroadcastCallback', () => dart.functionType(dart.void, [async.StreamSubscription$(T)]));
  return _BroadcastCallback;
});
async._BroadcastCallback = _BroadcastCallback();
const _schedule = Symbol('_schedule');
const _isSent = Symbol('_isSent');
const _isScheduled = Symbol('_isScheduled');
async._DoneStreamSubscription$ = dart.generic(T => {
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _DoneStreamSubscription extends core.Object {
    new(onDone) {
      this[_onDone] = onDone;
      this[_zone] = async.Zone.current;
      this[_state] = 0;
      this[_schedule]();
    }
    get [_isSent]() {
      return (dart.notNull(this[_state]) & async._DoneStreamSubscription._DONE_SENT) != 0;
    }
    get [_isScheduled]() {
      return (dart.notNull(this[_state]) & async._DoneStreamSubscription._SCHEDULED) != 0;
    }
    get isPaused() {
      return dart.notNull(this[_state]) >= async._DoneStreamSubscription._PAUSED;
    }
    [_schedule]() {
      if (dart.test(this[_isScheduled])) return;
      this[_zone].scheduleMicrotask(dart.bind(this, _sendDone));
      this[_state] = (dart.notNull(this[_state]) | async._DoneStreamSubscription._SCHEDULED) >>> 0;
    }
    onData(handleData) {}
    onError(handleError) {}
    onDone(handleDone) {
      this[_onDone] = handleDone;
    }
    pause(resumeSignal) {
      if (resumeSignal === void 0) resumeSignal = null;
      this[_state] = dart.notNull(this[_state]) + async._DoneStreamSubscription._PAUSED;
      if (resumeSignal != null) resumeSignal.whenComplete(dart.bind(this, 'resume'));
    }
    resume() {
      if (dart.test(this.isPaused)) {
        this[_state] = dart.notNull(this[_state]) - async._DoneStreamSubscription._PAUSED;
        if (!dart.test(this.isPaused) && !dart.test(this[_isSent])) {
          this[_schedule]();
        }
      }
    }
    cancel() {
      return null;
    }
    asFuture(E) {
      return futureValue => {
        if (futureValue === void 0) futureValue = null;
        let result = new (async._Future$(E))();
        this[_onDone] = dart.fn(() => {
          result[_completeWithValue](null);
        }, VoidTovoid());
        return result;
      };
    }
    [_sendDone]() {
      this[_state] = (dart.notNull(this[_state]) & ~async._DoneStreamSubscription._SCHEDULED) >>> 0;
      if (dart.test(this.isPaused)) return;
      this[_state] = (dart.notNull(this[_state]) | async._DoneStreamSubscription._DONE_SENT) >>> 0;
      if (this[_onDone] != null) this[_zone].runGuarded(dart.dynamic)(this[_onDone]);
    }
  }
  dart.addTypeTests(_DoneStreamSubscription);
  _DoneStreamSubscription[dart.implements] = () => [StreamSubscriptionOfT()];
  dart.setSignature(_DoneStreamSubscription, {
    constructors: () => ({new: dart.definiteFunctionType(async._DoneStreamSubscription$(T), [async._DoneHandler])}),
    fields: () => ({
      [_zone]: async.Zone,
      [_state]: core.int,
      [_onDone]: async._DoneHandler
    }),
    getters: () => ({
      [_isSent]: dart.definiteFunctionType(core.bool, []),
      [_isScheduled]: dart.definiteFunctionType(core.bool, []),
      isPaused: dart.definiteFunctionType(core.bool, [])
    }),
    methods: () => ({
      [_schedule]: dart.definiteFunctionType(dart.void, []),
      onData: dart.definiteFunctionType(dart.void, [TTovoid()]),
      onError: dart.definiteFunctionType(dart.void, [core.Function]),
      onDone: dart.definiteFunctionType(dart.void, [VoidTovoid()]),
      pause: dart.definiteFunctionType(dart.void, [], [async.Future]),
      resume: dart.definiteFunctionType(dart.void, []),
      cancel: dart.definiteFunctionType(async.Future, []),
      asFuture: dart.definiteFunctionType(E => [async.Future$(E), [], [E]]),
      [_sendDone]: dart.definiteFunctionType(dart.void, [])
    }),
    sfields: () => ({
      _DONE_SENT: core.int,
      _SCHEDULED: core.int,
      _PAUSED: core.int
    })
  });
  return _DoneStreamSubscription;
});
async._DoneStreamSubscription = _DoneStreamSubscription();
async._DoneStreamSubscription._DONE_SENT = 1;
async._DoneStreamSubscription._SCHEDULED = 2;
async._DoneStreamSubscription._PAUSED = 4;
const _source = Symbol('_source');
const _onListenHandler = Symbol('_onListenHandler');
const _onCancelHandler = Symbol('_onCancelHandler');
const _cancelSubscription = Symbol('_cancelSubscription');
const _pauseSubscription = Symbol('_pauseSubscription');
const _resumeSubscription = Symbol('_resumeSubscription');
const _isSubscriptionPaused = Symbol('_isSubscriptionPaused');
async._AsBroadcastStream$ = dart.generic(T => {
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let _AsBroadcastStreamControllerOfT = () => (_AsBroadcastStreamControllerOfT = dart.constFn(async._AsBroadcastStreamController$(T)))();
  let _DoneStreamSubscriptionOfT = () => (_DoneStreamSubscriptionOfT = dart.constFn(async._DoneStreamSubscription$(T)))();
  let _BroadcastSubscriptionWrapperOfT = () => (_BroadcastSubscriptionWrapperOfT = dart.constFn(async._BroadcastSubscriptionWrapper$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let _BroadcastCallbackOfT = () => (_BroadcastCallbackOfT = dart.constFn(async._BroadcastCallback$(T)))();
  class _AsBroadcastStream extends async.Stream$(T) {
    new(source, onListenHandler, onCancelHandler) {
      this[_source] = source;
      this[_onListenHandler] = async.Zone.current.registerUnaryCallback(dart.dynamic, StreamSubscriptionOfT())(onListenHandler);
      this[_onCancelHandler] = async.Zone.current.registerUnaryCallback(dart.dynamic, StreamSubscriptionOfT())(onCancelHandler);
      this[_zone] = async.Zone.current;
      this[_controller] = null;
      this[_subscription] = null;
      super.new();
      this[_controller] = new (_AsBroadcastStreamControllerOfT())(dart.bind(this, _onListen), dart.bind(this, _onCancel));
    }
    get isBroadcast() {
      return true;
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      if (this[_controller] == null || dart.test(this[_controller].isClosed)) {
        return new (_DoneStreamSubscriptionOfT())(onDone);
      }
      if (this[_subscription] == null) {
        this[_subscription] = this[_source].listen(dart.bind(this[_controller], 'add'), {onError: dart.bind(this[_controller], 'addError'), onDone: dart.bind(this[_controller], 'close')});
      }
      cancelOnError = core.identical(true, cancelOnError);
      return this[_controller][_subscribe](onData, onError, onDone, cancelOnError);
    }
    [_onCancel]() {
      let shutdown = this[_controller] == null || dart.test(this[_controller].isClosed);
      if (this[_onCancelHandler] != null) {
        this[_zone].runUnary(dart.dynamic, _BroadcastSubscriptionWrapperOfT())(this[_onCancelHandler], new (_BroadcastSubscriptionWrapperOfT())(this));
      }
      if (shutdown) {
        if (this[_subscription] != null) {
          this[_subscription].cancel();
          this[_subscription] = null;
        }
      }
    }
    [_onListen]() {
      if (this[_onListenHandler] != null) {
        this[_zone].runUnary(dart.dynamic, _BroadcastSubscriptionWrapperOfT())(this[_onListenHandler], new (_BroadcastSubscriptionWrapperOfT())(this));
      }
    }
    [_cancelSubscription]() {
      if (this[_subscription] == null) return;
      let subscription = this[_subscription];
      this[_subscription] = null;
      this[_controller] = null;
      subscription.cancel();
    }
    [_pauseSubscription](resumeSignal) {
      if (this[_subscription] == null) return;
      this[_subscription].pause(resumeSignal);
    }
    [_resumeSubscription]() {
      if (this[_subscription] == null) return;
      this[_subscription].resume();
    }
    get [_isSubscriptionPaused]() {
      if (this[_subscription] == null) return false;
      return this[_subscription].isPaused;
    }
  }
  dart.setSignature(_AsBroadcastStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._AsBroadcastStream$(T), [StreamOfT(), _BroadcastCallbackOfT(), _BroadcastCallbackOfT()])}),
    fields: () => ({
      [_source]: StreamOfT(),
      [_onListenHandler]: _BroadcastCallbackOfT(),
      [_onCancelHandler]: _BroadcastCallbackOfT(),
      [_zone]: async.Zone,
      [_controller]: _AsBroadcastStreamControllerOfT(),
      [_subscription]: StreamSubscriptionOfT()
    }),
    getters: () => ({[_isSubscriptionPaused]: dart.definiteFunctionType(core.bool, [])}),
    methods: () => ({
      listen: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid()], {onError: core.Function, onDone: VoidTovoid(), cancelOnError: core.bool}),
      [_onCancel]: dart.definiteFunctionType(dart.void, []),
      [_onListen]: dart.definiteFunctionType(dart.void, []),
      [_cancelSubscription]: dart.definiteFunctionType(dart.void, []),
      [_pauseSubscription]: dart.definiteFunctionType(dart.void, [async.Future]),
      [_resumeSubscription]: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _AsBroadcastStream;
});
async._AsBroadcastStream = _AsBroadcastStream();
async._BroadcastSubscriptionWrapper$ = dart.generic(T => {
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _BroadcastSubscriptionWrapper extends core.Object {
    new(stream) {
      this[_stream] = stream;
    }
    onData(handleData) {
      dart.throw(new core.UnsupportedError("Cannot change handlers of asBroadcastStream source subscription."));
    }
    onError(handleError) {
      dart.throw(new core.UnsupportedError("Cannot change handlers of asBroadcastStream source subscription."));
    }
    onDone(handleDone) {
      dart.throw(new core.UnsupportedError("Cannot change handlers of asBroadcastStream source subscription."));
    }
    pause(resumeSignal) {
      if (resumeSignal === void 0) resumeSignal = null;
      this[_stream][_pauseSubscription](resumeSignal);
    }
    resume() {
      this[_stream][_resumeSubscription]();
    }
    cancel() {
      this[_stream][_cancelSubscription]();
      return null;
    }
    get isPaused() {
      return this[_stream][_isSubscriptionPaused];
    }
    asFuture(E) {
      return futureValue => {
        if (futureValue === void 0) futureValue = null;
        dart.throw(new core.UnsupportedError("Cannot change handlers of asBroadcastStream source subscription."));
      };
    }
  }
  dart.addTypeTests(_BroadcastSubscriptionWrapper);
  _BroadcastSubscriptionWrapper[dart.implements] = () => [StreamSubscriptionOfT()];
  dart.setSignature(_BroadcastSubscriptionWrapper, {
    constructors: () => ({new: dart.definiteFunctionType(async._BroadcastSubscriptionWrapper$(T), [async._AsBroadcastStream])}),
    fields: () => ({[_stream]: async._AsBroadcastStream}),
    getters: () => ({isPaused: dart.definiteFunctionType(core.bool, [])}),
    methods: () => ({
      onData: dart.definiteFunctionType(dart.void, [TTovoid()]),
      onError: dart.definiteFunctionType(dart.void, [core.Function]),
      onDone: dart.definiteFunctionType(dart.void, [VoidTovoid()]),
      pause: dart.definiteFunctionType(dart.void, [], [async.Future]),
      resume: dart.definiteFunctionType(dart.void, []),
      cancel: dart.definiteFunctionType(async.Future, []),
      asFuture: dart.definiteFunctionType(E => [async.Future$(E), [], [E]])
    })
  });
  return _BroadcastSubscriptionWrapper;
});
async._BroadcastSubscriptionWrapper = _BroadcastSubscriptionWrapper();
const _current = Symbol('_current');
const _futureOrPrefetch = Symbol('_futureOrPrefetch');
const _clear = Symbol('_clear');
async._StreamIteratorImpl$ = dart.generic(T => {
  let StreamIteratorOfT = () => (StreamIteratorOfT = dart.constFn(async.StreamIterator$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class _StreamIteratorImpl extends core.Object {
    new(stream) {
      this[_subscription] = null;
      this[_current] = null;
      this[_futureOrPrefetch] = null;
      this[_state] = async._StreamIteratorImpl._STATE_FOUND;
      this[_subscription] = stream.listen(dart.bind(this, _onData), {onError: dart.bind(this, _onError), onDone: dart.bind(this, _onDone), cancelOnError: true});
    }
    get current() {
      return this[_current];
    }
    moveNext() {
      if (this[_state] == async._StreamIteratorImpl._STATE_DONE) {
        return new (_FutureOfbool()).immediate(false);
      }
      if (this[_state] == async._StreamIteratorImpl._STATE_MOVING) {
        dart.throw(new core.StateError("Already waiting for next."));
      }
      if (this[_state] == async._StreamIteratorImpl._STATE_FOUND) {
        this[_state] = async._StreamIteratorImpl._STATE_MOVING;
        this[_current] = null;
        let result = new (_FutureOfbool())();
        this[_futureOrPrefetch] = result;
        return result;
      } else {
        dart.assert(dart.notNull(this[_state]) >= async._StreamIteratorImpl._STATE_EXTRA_DATA);
        switch (this[_state]) {
          case async._StreamIteratorImpl._STATE_EXTRA_DATA:
          {
            this[_state] = async._StreamIteratorImpl._STATE_FOUND;
            this[_current] = T.as(this[_futureOrPrefetch]);
            this[_futureOrPrefetch] = null;
            this[_subscription].resume();
            return new (_FutureOfbool()).immediate(true);
          }
          case async._StreamIteratorImpl._STATE_EXTRA_ERROR:
          {
            let prefetch = async.AsyncError._check(this[_futureOrPrefetch]);
            this[_clear]();
            return new (_FutureOfbool()).immediateError(prefetch.error, prefetch.stackTrace);
          }
          case async._StreamIteratorImpl._STATE_EXTRA_DONE:
          {
            this[_clear]();
            return new (_FutureOfbool()).immediate(false);
          }
        }
      }
    }
    [_clear]() {
      this[_subscription] = null;
      this[_futureOrPrefetch] = null;
      this[_current] = null;
      this[_state] = async._StreamIteratorImpl._STATE_DONE;
    }
    cancel() {
      let subscription = this[_subscription];
      if (subscription == null) return null;
      if (this[_state] == async._StreamIteratorImpl._STATE_MOVING) {
        let hasNext = _FutureOfbool().as(this[_futureOrPrefetch]);
        this[_clear]();
        hasNext[_complete](false);
      } else {
        this[_clear]();
      }
      return subscription.cancel();
    }
    [_onData](data) {
      T._check(data);
      if (this[_state] == async._StreamIteratorImpl._STATE_MOVING) {
        this[_current] = data;
        let hasNext = _FutureOfbool().as(this[_futureOrPrefetch]);
        this[_futureOrPrefetch] = null;
        this[_state] = async._StreamIteratorImpl._STATE_FOUND;
        hasNext[_complete](true);
        return;
      }
      this[_subscription].pause();
      dart.assert(this[_futureOrPrefetch] == null);
      this[_futureOrPrefetch] = data;
      this[_state] = async._StreamIteratorImpl._STATE_EXTRA_DATA;
    }
    [_onError](error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      if (this[_state] == async._StreamIteratorImpl._STATE_MOVING) {
        let hasNext = _FutureOfbool().as(this[_futureOrPrefetch]);
        this[_clear]();
        hasNext[_completeError](error, stackTrace);
        return;
      }
      this[_subscription].pause();
      dart.assert(this[_futureOrPrefetch] == null);
      this[_futureOrPrefetch] = new async.AsyncError(error, stackTrace);
      this[_state] = async._StreamIteratorImpl._STATE_EXTRA_ERROR;
    }
    [_onDone]() {
      if (this[_state] == async._StreamIteratorImpl._STATE_MOVING) {
        let hasNext = _FutureOfbool().as(this[_futureOrPrefetch]);
        this[_clear]();
        hasNext[_complete](false);
        return;
      }
      this[_subscription].pause();
      this[_futureOrPrefetch] = null;
      this[_state] = async._StreamIteratorImpl._STATE_EXTRA_DONE;
    }
  }
  dart.addTypeTests(_StreamIteratorImpl);
  _StreamIteratorImpl[dart.implements] = () => [StreamIteratorOfT()];
  dart.setSignature(_StreamIteratorImpl, {
    constructors: () => ({new: dart.definiteFunctionType(async._StreamIteratorImpl$(T), [StreamOfT()])}),
    fields: () => ({
      [_subscription]: async.StreamSubscription,
      [_current]: T,
      [_futureOrPrefetch]: dart.dynamic,
      [_state]: core.int
    }),
    getters: () => ({current: dart.definiteFunctionType(T, [])}),
    methods: () => ({
      moveNext: dart.definiteFunctionType(async.Future$(core.bool), []),
      [_clear]: dart.definiteFunctionType(dart.void, []),
      cancel: dart.definiteFunctionType(async.Future, []),
      [_onData]: dart.definiteFunctionType(dart.void, [T]),
      [_onError]: dart.definiteFunctionType(dart.void, [core.Object], [core.StackTrace]),
      [_onDone]: dart.definiteFunctionType(dart.void, [])
    }),
    sfields: () => ({
      _STATE_FOUND: core.int,
      _STATE_DONE: core.int,
      _STATE_MOVING: core.int,
      _STATE_EXTRA_DATA: core.int,
      _STATE_EXTRA_ERROR: core.int,
      _STATE_EXTRA_DONE: core.int
    })
  });
  return _StreamIteratorImpl;
});
async._StreamIteratorImpl = _StreamIteratorImpl();
async._StreamIteratorImpl._STATE_FOUND = 0;
async._StreamIteratorImpl._STATE_DONE = 1;
async._StreamIteratorImpl._STATE_MOVING = 2;
async._StreamIteratorImpl._STATE_EXTRA_DATA = 3;
async._StreamIteratorImpl._STATE_EXTRA_ERROR = 4;
async._StreamIteratorImpl._STATE_EXTRA_DONE = 5;
async._EmptyStream$ = dart.generic(T => {
  let _DoneStreamSubscriptionOfT = () => (_DoneStreamSubscriptionOfT = dart.constFn(async._DoneStreamSubscription$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _EmptyStream extends async.Stream$(T) {
    new() {
      super._internal();
    }
    get isBroadcast() {
      return true;
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return new (_DoneStreamSubscriptionOfT())(onDone);
    }
  }
  dart.setSignature(_EmptyStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._EmptyStream$(T), [])}),
    methods: () => ({listen: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid()], {onError: core.Function, onDone: VoidTovoid(), cancelOnError: core.bool})})
  });
  return _EmptyStream;
});
async._EmptyStream = _EmptyStream();
async._runUserCode = function(userCode, onSuccess, onError) {
  try {
    dart.dcall(onSuccess, userCode());
  } catch (e) {
    let s = dart.stackTrace(e);
    let replacement = async.Zone.current.errorCallback(e, s);
    if (replacement == null) {
      dart.dcall(onError, e, s);
    } else {
      let error = async._nonNullError(replacement.error);
      let stackTrace = replacement.stackTrace;
      dart.dcall(onError, error, stackTrace);
    }
  }

};
dart.lazyFn(async._runUserCode, () => FnAndFnAndFnTodynamic());
async._cancelAndError = function(subscription, future, error, stackTrace) {
  let cancelFuture = subscription.cancel();
  if (async.Future.is(cancelFuture)) {
    cancelFuture.whenComplete(dart.fn(() => future[_completeError](error, stackTrace), VoidTovoid()));
  } else {
    future[_completeError](error, stackTrace);
  }
};
dart.lazyFn(async._cancelAndError, () => StreamSubscriptionAnd_FutureAnddynamic__Tovoid());
async._cancelAndErrorWithReplacement = function(subscription, future, error, stackTrace) {
  let replacement = async.Zone.current.errorCallback(error, stackTrace);
  if (replacement != null) {
    error = async._nonNullError(replacement.error);
    stackTrace = replacement.stackTrace;
  }
  async._cancelAndError(subscription, future, error, stackTrace);
};
dart.lazyFn(async._cancelAndErrorWithReplacement, () => StreamSubscriptionAnd_FutureAnddynamic__Tovoid());
async._ErrorCallback = dart.typedef('_ErrorCallback', () => dart.functionType(dart.void, [dart.dynamic, core.StackTrace]));
async._cancelAndErrorClosure = function(subscription, future) {
  return dart.fn((error, stackTrace) => {
    async._cancelAndError(subscription, future, error, stackTrace);
  }, dynamicAndStackTraceTovoid());
};
dart.fn(async._cancelAndErrorClosure, StreamSubscriptionAnd_FutureTo_ErrorCallback());
async._cancelAndValue = function(subscription, future, value) {
  let cancelFuture = subscription.cancel();
  if (async.Future.is(cancelFuture)) {
    cancelFuture.whenComplete(dart.fn(() => future[_complete](value), VoidTovoid()));
  } else {
    future[_complete](value);
  }
};
dart.fn(async._cancelAndValue, StreamSubscriptionAnd_FutureAnddynamicTovoid());
const _handleData = Symbol('_handleData');
const _handleError = Symbol('_handleError');
const _handleDone = Symbol('_handleDone');
async._ForwardingStream$ = dart.generic((S, T) => {
  let _ForwardingStreamSubscriptionOfS$T = () => (_ForwardingStreamSubscriptionOfS$T = dart.constFn(async._ForwardingStreamSubscription$(S, T)))();
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _ForwardingStream extends async.Stream$(T) {
    new(source) {
      this[_source] = source;
      super.new();
    }
    get isBroadcast() {
      return this[_source].isBroadcast;
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      cancelOnError = core.identical(true, cancelOnError);
      return this[_createSubscription](onData, onError, onDone, cancelOnError);
    }
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      return new (_ForwardingStreamSubscriptionOfS$T())(this, onData, onError, onDone, cancelOnError);
    }
    [_handleData](data, sink) {
      S._check(data);
      _EventSinkOfT()._check(sink);
      sink[_add](T.as(data));
    }
    [_handleError](error, stackTrace, sink) {
      _EventSinkOfT()._check(sink);
      sink[_addError](error, stackTrace);
    }
    [_handleDone](sink) {
      _EventSinkOfT()._check(sink);
      sink[_close]();
    }
  }
  dart.setSignature(_ForwardingStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._ForwardingStream$(S, T), [StreamOfS()])}),
    fields: () => ({[_source]: StreamOfS()}),
    methods: () => ({
      listen: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid()], {onError: core.Function, onDone: VoidTovoid(), cancelOnError: core.bool}),
      [_createSubscription]: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid(), core.Function, VoidTovoid(), core.bool]),
      [_handleData]: dart.definiteFunctionType(dart.void, [S, _EventSinkOfT()]),
      [_handleError]: dart.definiteFunctionType(dart.void, [dart.dynamic, core.StackTrace, _EventSinkOfT()]),
      [_handleDone]: dart.definiteFunctionType(dart.void, [_EventSinkOfT()])
    })
  });
  return _ForwardingStream;
});
async._ForwardingStream = _ForwardingStream();
async._ForwardingStreamSubscription$ = dart.generic((S, T) => {
  let _ForwardingStreamOfS$T = () => (_ForwardingStreamOfS$T = dart.constFn(async._ForwardingStream$(S, T)))();
  let StreamSubscriptionOfS = () => (StreamSubscriptionOfS = dart.constFn(async.StreamSubscription$(S)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _ForwardingStreamSubscription extends async._BufferingStreamSubscription$(T) {
    new(stream, onData, onError, onDone, cancelOnError) {
      this[_stream] = stream;
      this[_subscription] = null;
      super.new(onData, onError, onDone, cancelOnError);
      this[_subscription] = this[_stream][_source].listen(dart.bind(this, _handleData), {onError: dart.bind(this, _handleError), onDone: dart.bind(this, _handleDone)});
    }
    [_add](data) {
      T._check(data);
      if (dart.test(this[_isClosed])) return;
      super[_add](data);
    }
    [_addError](error, stackTrace) {
      if (dart.test(this[_isClosed])) return;
      super[_addError](error, stackTrace);
    }
    [_onPause]() {
      if (this[_subscription] == null) return;
      this[_subscription].pause();
    }
    [_onResume]() {
      if (this[_subscription] == null) return;
      this[_subscription].resume();
    }
    [_onCancel]() {
      if (this[_subscription] != null) {
        let subscription = this[_subscription];
        this[_subscription] = null;
        return subscription.cancel();
      }
      return null;
    }
    [_handleData](data) {
      S._check(data);
      this[_stream][_handleData](data, this);
    }
    [_handleError](error, stackTrace) {
      this[_stream][_handleError](error, stackTrace, this);
    }
    [_handleDone]() {
      this[_stream][_handleDone](this);
    }
  }
  dart.setSignature(_ForwardingStreamSubscription, {
    constructors: () => ({new: dart.definiteFunctionType(async._ForwardingStreamSubscription$(S, T), [_ForwardingStreamOfS$T(), TTovoid(), core.Function, VoidTovoid(), core.bool])}),
    fields: () => ({
      [_stream]: _ForwardingStreamOfS$T(),
      [_subscription]: StreamSubscriptionOfS()
    }),
    methods: () => ({
      [_add]: dart.definiteFunctionType(dart.void, [T]),
      [_handleData]: dart.definiteFunctionType(dart.void, [S]),
      [_handleError]: dart.definiteFunctionType(dart.void, [dart.dynamic, core.StackTrace]),
      [_handleDone]: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _ForwardingStreamSubscription;
});
async._ForwardingStreamSubscription = _ForwardingStreamSubscription();
async._Predicate$ = dart.generic(T => {
  const _Predicate = dart.typedef('_Predicate', () => dart.functionType(core.bool, [T]));
  return _Predicate;
});
async._Predicate = _Predicate();
async._addErrorWithReplacement = function(sink, error, stackTrace) {
  let replacement = async.Zone.current.errorCallback(error, core.StackTrace._check(stackTrace));
  if (replacement != null) {
    error = async._nonNullError(replacement.error);
    stackTrace = replacement.stackTrace;
  }
  sink[_addError](error, core.StackTrace._check(stackTrace));
};
dart.fn(async._addErrorWithReplacement, _EventSinkAnddynamicAnddynamicTovoid());
const _test = Symbol('_test');
async._WhereStream$ = dart.generic(T => {
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let _PredicateOfT = () => (_PredicateOfT = dart.constFn(async._Predicate$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class _WhereStream extends async._ForwardingStream$(T, T) {
    new(source, test) {
      this[_test] = test;
      super.new(source);
    }
    [_handleData](inputEvent, sink) {
      T._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let satisfies = null;
      try {
        satisfies = this[_test](inputEvent);
      } catch (e) {
        let s = dart.stackTrace(e);
        async._addErrorWithReplacement(sink, e, s);
        return;
      }

      if (dart.test(satisfies)) {
        sink[_add](inputEvent);
      }
    }
  }
  dart.setSignature(_WhereStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._WhereStream$(T), [StreamOfT(), _PredicateOfT()])}),
    fields: () => ({[_test]: _PredicateOfT()}),
    methods: () => ({[_handleData]: dart.definiteFunctionType(dart.void, [T, _EventSinkOfT()])})
  });
  return _WhereStream;
});
async._WhereStream = _WhereStream();
async._Transformation$ = dart.generic((S, T) => {
  const _Transformation = dart.typedef('_Transformation', () => dart.functionType(T, [S]));
  return _Transformation;
});
async._Transformation = _Transformation();
const _transform = Symbol('_transform');
async._MapStream$ = dart.generic((S, T) => {
  let _TransformationOfS$T = () => (_TransformationOfS$T = dart.constFn(async._Transformation$(S, T)))();
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  class _MapStream extends async._ForwardingStream$(S, T) {
    new(source, transform) {
      this[_transform] = transform;
      super.new(source);
    }
    [_handleData](inputEvent, sink) {
      S._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let outputEvent = null;
      try {
        outputEvent = this[_transform](inputEvent);
      } catch (e) {
        let s = dart.stackTrace(e);
        async._addErrorWithReplacement(sink, e, s);
        return;
      }

      sink[_add](outputEvent);
    }
  }
  dart.setSignature(_MapStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._MapStream$(S, T), [StreamOfS(), _TransformationOfS$T()])}),
    fields: () => ({[_transform]: _TransformationOfS$T()}),
    methods: () => ({[_handleData]: dart.definiteFunctionType(dart.void, [S, _EventSinkOfT()])})
  });
  return _MapStream;
});
async._MapStream = _MapStream();
const _expand = Symbol('_expand');
async._ExpandStream$ = dart.generic((S, T) => {
  let _TransformationOfS$IterableOfT = () => (_TransformationOfS$IterableOfT = dart.constFn(async._Transformation$(S, IterableOfT())))();
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
  class _ExpandStream extends async._ForwardingStream$(S, T) {
    new(source, expand) {
      this[_expand] = expand;
      super.new(source);
    }
    [_handleData](inputEvent, sink) {
      S._check(inputEvent);
      _EventSinkOfT()._check(sink);
      try {
        for (let value of this[_expand](inputEvent)) {
          sink[_add](value);
        }
      } catch (e) {
        let s = dart.stackTrace(e);
        async._addErrorWithReplacement(sink, e, s);
      }

    }
  }
  dart.setSignature(_ExpandStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._ExpandStream$(S, T), [StreamOfS(), _TransformationOfS$IterableOfT()])}),
    fields: () => ({[_expand]: _TransformationOfS$IterableOfT()}),
    methods: () => ({[_handleData]: dart.definiteFunctionType(dart.void, [S, _EventSinkOfT()])})
  });
  return _ExpandStream;
});
async._ExpandStream = _ExpandStream();
async._ErrorTest = dart.typedef('_ErrorTest', () => dart.functionType(core.bool, [dart.dynamic]));
async._HandleErrorStream$ = dart.generic(T => {
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class _HandleErrorStream extends async._ForwardingStream$(T, T) {
    new(source, onError, test) {
      this[_transform] = onError;
      this[_test] = test;
      super.new(source);
    }
    [_handleError](error, stackTrace, sink) {
      _EventSinkOfT()._check(sink);
      let matches = true;
      if (this[_test] != null) {
        try {
          matches = dart.dcall(this[_test], error);
        } catch (e) {
          let s = dart.stackTrace(e);
          async._addErrorWithReplacement(sink, e, s);
          return;
        }

      }
      if (dart.test(matches)) {
        try {
          async._invokeErrorHandler(this[_transform], error, stackTrace);
        } catch (e) {
          let s = dart.stackTrace(e);
          if (core.identical(e, error)) {
            sink[_addError](error, stackTrace);
          } else {
            async._addErrorWithReplacement(sink, e, s);
          }
          return;
        }

      } else {
        sink[_addError](error, stackTrace);
      }
    }
  }
  dart.setSignature(_HandleErrorStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._HandleErrorStream$(T), [StreamOfT(), core.Function, dynamicTobool()])}),
    fields: () => ({
      [_transform]: core.Function,
      [_test]: async._ErrorTest
    }),
    methods: () => ({[_handleError]: dart.definiteFunctionType(dart.void, [core.Object, core.StackTrace, _EventSinkOfT()])})
  });
  return _HandleErrorStream;
});
async._HandleErrorStream = _HandleErrorStream();
const _count = Symbol('_count');
async._TakeStream$ = dart.generic(T => {
  let _StateStreamSubscriptionOfT = () => (_StateStreamSubscriptionOfT = dart.constFn(async._StateStreamSubscription$(T)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class _TakeStream extends async._ForwardingStream$(T, T) {
    new(source, count) {
      this[_count] = count;
      super.new(source);
      if (!(typeof count == 'number')) dart.throw(new core.ArgumentError(count));
    }
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      return new (_StateStreamSubscriptionOfT())(this, onData, onError, onDone, cancelOnError, this[_count]);
    }
    [_handleData](inputEvent, sink) {
      T._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let subscription = _StateStreamSubscriptionOfT()._check(sink);
      let count = subscription[_count];
      if (dart.notNull(count) > 0) {
        sink[_add](inputEvent);
        count = dart.notNull(count) - 1;
        subscription[_count] = count;
        if (count == 0) {
          sink[_close]();
        }
      }
    }
  }
  dart.setSignature(_TakeStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._TakeStream$(T), [StreamOfT(), core.int])}),
    fields: () => ({[_count]: core.int}),
    methods: () => ({
      [_createSubscription]: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid(), core.Function, VoidTovoid(), core.bool]),
      [_handleData]: dart.definiteFunctionType(dart.void, [T, _EventSinkOfT()])
    })
  });
  return _TakeStream;
});
async._TakeStream = _TakeStream();
const _sharedState = Symbol('_sharedState');
const _flag = Symbol('_flag');
async._StateStreamSubscription$ = dart.generic(T => {
  let _ForwardingStreamOfT$T = () => (_ForwardingStreamOfT$T = dart.constFn(async._ForwardingStream$(T, T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _StateStreamSubscription extends async._ForwardingStreamSubscription$(T, T) {
    new(stream, onData, onError, onDone, cancelOnError, sharedState) {
      this[_sharedState] = sharedState;
      super.new(stream, onData, onError, onDone, cancelOnError);
    }
    get [_flag]() {
      return core.bool._check(this[_sharedState]);
    }
    set [_flag](flag) {
      this[_sharedState] = flag;
    }
    get [_count]() {
      return core.int._check(this[_sharedState]);
    }
    set [_count](count) {
      this[_sharedState] = count;
    }
  }
  dart.setSignature(_StateStreamSubscription, {
    constructors: () => ({new: dart.definiteFunctionType(async._StateStreamSubscription$(T), [_ForwardingStreamOfT$T(), TTovoid(), core.Function, VoidTovoid(), core.bool, dart.dynamic])}),
    fields: () => ({[_sharedState]: dart.dynamic}),
    getters: () => ({
      [_flag]: dart.definiteFunctionType(core.bool, []),
      [_count]: dart.definiteFunctionType(core.int, [])
    }),
    setters: () => ({
      [_flag]: dart.definiteFunctionType(dart.void, [core.bool]),
      [_count]: dart.definiteFunctionType(dart.void, [core.int])
    })
  });
  return _StateStreamSubscription;
});
async._StateStreamSubscription = _StateStreamSubscription();
async._TakeWhileStream$ = dart.generic(T => {
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let _PredicateOfT = () => (_PredicateOfT = dart.constFn(async._Predicate$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class _TakeWhileStream extends async._ForwardingStream$(T, T) {
    new(source, test) {
      this[_test] = test;
      super.new(source);
    }
    [_handleData](inputEvent, sink) {
      T._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let satisfies = null;
      try {
        satisfies = this[_test](inputEvent);
      } catch (e) {
        let s = dart.stackTrace(e);
        async._addErrorWithReplacement(sink, e, s);
        sink[_close]();
        return;
      }

      if (dart.test(satisfies)) {
        sink[_add](inputEvent);
      } else {
        sink[_close]();
      }
    }
  }
  dart.setSignature(_TakeWhileStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._TakeWhileStream$(T), [StreamOfT(), _PredicateOfT()])}),
    fields: () => ({[_test]: _PredicateOfT()}),
    methods: () => ({[_handleData]: dart.definiteFunctionType(dart.void, [T, _EventSinkOfT()])})
  });
  return _TakeWhileStream;
});
async._TakeWhileStream = _TakeWhileStream();
async._SkipStream$ = dart.generic(T => {
  let _StateStreamSubscriptionOfT = () => (_StateStreamSubscriptionOfT = dart.constFn(async._StateStreamSubscription$(T)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class _SkipStream extends async._ForwardingStream$(T, T) {
    new(source, count) {
      this[_count] = count;
      super.new(source);
      if (!(typeof count == 'number') || dart.notNull(count) < 0) dart.throw(new core.ArgumentError(count));
    }
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      return new (_StateStreamSubscriptionOfT())(this, onData, onError, onDone, cancelOnError, this[_count]);
    }
    [_handleData](inputEvent, sink) {
      T._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let subscription = _StateStreamSubscriptionOfT()._check(sink);
      let count = subscription[_count];
      if (dart.notNull(count) > 0) {
        subscription[_count] = dart.notNull(count) - 1;
        return;
      }
      sink[_add](inputEvent);
    }
  }
  dart.setSignature(_SkipStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._SkipStream$(T), [StreamOfT(), core.int])}),
    fields: () => ({[_count]: core.int}),
    methods: () => ({
      [_createSubscription]: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid(), core.Function, VoidTovoid(), core.bool]),
      [_handleData]: dart.definiteFunctionType(dart.void, [T, _EventSinkOfT()])
    })
  });
  return _SkipStream;
});
async._SkipStream = _SkipStream();
async._SkipWhileStream$ = dart.generic(T => {
  let _StateStreamSubscriptionOfT = () => (_StateStreamSubscriptionOfT = dart.constFn(async._StateStreamSubscription$(T)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  let _PredicateOfT = () => (_PredicateOfT = dart.constFn(async._Predicate$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class _SkipWhileStream extends async._ForwardingStream$(T, T) {
    new(source, test) {
      this[_test] = test;
      super.new(source);
    }
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      return new (_StateStreamSubscriptionOfT())(this, onData, onError, onDone, cancelOnError, false);
    }
    [_handleData](inputEvent, sink) {
      T._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let subscription = _StateStreamSubscriptionOfT()._check(sink);
      let hasFailed = subscription[_flag];
      if (dart.test(hasFailed)) {
        sink[_add](inputEvent);
        return;
      }
      let satisfies = null;
      try {
        satisfies = this[_test](inputEvent);
      } catch (e) {
        let s = dart.stackTrace(e);
        async._addErrorWithReplacement(sink, e, s);
        subscription[_flag] = true;
        return;
      }

      if (!dart.test(satisfies)) {
        subscription[_flag] = true;
        sink[_add](inputEvent);
      }
    }
  }
  dart.setSignature(_SkipWhileStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._SkipWhileStream$(T), [StreamOfT(), _PredicateOfT()])}),
    fields: () => ({[_test]: _PredicateOfT()}),
    methods: () => ({
      [_createSubscription]: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid(), core.Function, VoidTovoid(), core.bool]),
      [_handleData]: dart.definiteFunctionType(dart.void, [T, _EventSinkOfT()])
    })
  });
  return _SkipWhileStream;
});
async._SkipWhileStream = _SkipWhileStream();
async._Equality$ = dart.generic(T => {
  const _Equality = dart.typedef('_Equality', () => dart.functionType(core.bool, [T, T]));
  return _Equality;
});
async._Equality = _Equality();
const _equals = Symbol('_equals');
async._DistinctStream$ = dart.generic(T => {
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let _EqualityOfT = () => (_EqualityOfT = dart.constFn(async._Equality$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class _DistinctStream extends async._ForwardingStream$(T, T) {
    new(source, equals) {
      this[_previous] = async._DistinctStream._SENTINEL;
      this[_equals] = equals;
      super.new(source);
    }
    [_handleData](inputEvent, sink) {
      T._check(inputEvent);
      _EventSinkOfT()._check(sink);
      if (core.identical(this[_previous], async._DistinctStream._SENTINEL)) {
        this[_previous] = inputEvent;
        return sink[_add](inputEvent);
      } else {
        let isEqual = null;
        try {
          if (this[_equals] == null) {
            isEqual = dart.equals(this[_previous], inputEvent);
          } else {
            isEqual = this[_equals](T.as(this[_previous]), inputEvent);
          }
        } catch (e) {
          let s = dart.stackTrace(e);
          async._addErrorWithReplacement(sink, e, s);
          return null;
        }

        if (!dart.test(isEqual)) {
          sink[_add](inputEvent);
          this[_previous] = inputEvent;
        }
      }
    }
  }
  dart.setSignature(_DistinctStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._DistinctStream$(T), [StreamOfT(), _EqualityOfT()])}),
    fields: () => ({
      [_equals]: _EqualityOfT(),
      [_previous]: core.Object
    }),
    methods: () => ({[_handleData]: dart.definiteFunctionType(dart.void, [T, _EventSinkOfT()])}),
    sfields: () => ({_SENTINEL: core.Object})
  });
  return _DistinctStream;
});
async._DistinctStream = _DistinctStream();
dart.defineLazy(async._DistinctStream, {
  get _SENTINEL() {
    return new core.Object();
  },
  set _SENTINEL(_) {}
});
async._EventSinkWrapper$ = dart.generic(T => {
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  class _EventSinkWrapper extends core.Object {
    new(sink) {
      this[_sink] = sink;
    }
    add(data) {
      T._check(data);
      this[_sink][_add](data);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_sink][_addError](error, stackTrace);
    }
    close() {
      this[_sink][_close]();
    }
  }
  dart.addTypeTests(_EventSinkWrapper);
  _EventSinkWrapper[dart.implements] = () => [EventSinkOfT()];
  dart.setSignature(_EventSinkWrapper, {
    constructors: () => ({new: dart.definiteFunctionType(async._EventSinkWrapper$(T), [async._EventSink])}),
    fields: () => ({[_sink]: async._EventSink}),
    methods: () => ({
      add: dart.definiteFunctionType(dart.void, [T]),
      addError: dart.definiteFunctionType(dart.void, [dart.dynamic], [core.StackTrace]),
      close: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _EventSinkWrapper;
});
async._EventSinkWrapper = _EventSinkWrapper();
const _transformerSink = Symbol('_transformerSink');
const _isSubscribed = Symbol('_isSubscribed');
async._SinkTransformerStreamSubscription$ = dart.generic((S, T) => {
  let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
  let StreamSubscriptionOfS = () => (StreamSubscriptionOfS = dart.constFn(async.StreamSubscription$(S)))();
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let _SinkMapperOfS$T = () => (_SinkMapperOfS$T = dart.constFn(async._SinkMapper$(S, T)))();
  let _EventSinkWrapperOfT = () => (_EventSinkWrapperOfT = dart.constFn(async._EventSinkWrapper$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _SinkTransformerStreamSubscription extends async._BufferingStreamSubscription$(T) {
    new(source, mapper, onData, onError, onDone, cancelOnError) {
      this[_transformerSink] = null;
      this[_subscription] = null;
      super.new(onData, onError, onDone, cancelOnError);
      let eventSink = new (_EventSinkWrapperOfT())(this);
      this[_transformerSink] = mapper(eventSink);
      this[_subscription] = source.listen(dart.bind(this, _handleData), {onError: dart.bind(this, _handleError), onDone: dart.bind(this, _handleDone)});
    }
    get [_isSubscribed]() {
      return this[_subscription] != null;
    }
    [_add](data) {
      T._check(data);
      if (dart.test(this[_isClosed])) {
        dart.throw(new core.StateError("Stream is already closed"));
      }
      super[_add](data);
    }
    [_addError](error, stackTrace) {
      if (dart.test(this[_isClosed])) {
        dart.throw(new core.StateError("Stream is already closed"));
      }
      super[_addError](error, stackTrace);
    }
    [_close]() {
      if (dart.test(this[_isClosed])) {
        dart.throw(new core.StateError("Stream is already closed"));
      }
      super[_close]();
    }
    [_onPause]() {
      if (dart.test(this[_isSubscribed])) this[_subscription].pause();
    }
    [_onResume]() {
      if (dart.test(this[_isSubscribed])) this[_subscription].resume();
    }
    [_onCancel]() {
      if (dart.test(this[_isSubscribed])) {
        let subscription = this[_subscription];
        this[_subscription] = null;
        subscription.cancel();
      }
      return null;
    }
    [_handleData](data) {
      S._check(data);
      try {
        this[_transformerSink].add(data);
      } catch (e) {
        let s = dart.stackTrace(e);
        this[_addError](e, s);
      }

    }
    [_handleError](error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      try {
        this[_transformerSink].addError(error, core.StackTrace._check(stackTrace));
      } catch (e) {
        let s = dart.stackTrace(e);
        if (core.identical(e, error)) {
          this[_addError](error, core.StackTrace._check(stackTrace));
        } else {
          this[_addError](e, s);
        }
      }

    }
    [_handleDone]() {
      try {
        this[_subscription] = null;
        this[_transformerSink].close();
      } catch (e) {
        let s = dart.stackTrace(e);
        this[_addError](e, s);
      }

    }
  }
  dart.setSignature(_SinkTransformerStreamSubscription, {
    constructors: () => ({new: dart.definiteFunctionType(async._SinkTransformerStreamSubscription$(S, T), [StreamOfS(), _SinkMapperOfS$T(), TTovoid(), core.Function, VoidTovoid(), core.bool])}),
    fields: () => ({
      [_transformerSink]: EventSinkOfS(),
      [_subscription]: StreamSubscriptionOfS()
    }),
    getters: () => ({[_isSubscribed]: dart.definiteFunctionType(core.bool, [])}),
    methods: () => ({
      [_add]: dart.definiteFunctionType(dart.void, [T]),
      [_handleData]: dart.definiteFunctionType(dart.void, [S]),
      [_handleError]: dart.definiteFunctionType(dart.void, [dart.dynamic], [dart.dynamic]),
      [_handleDone]: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _SinkTransformerStreamSubscription;
});
async._SinkTransformerStreamSubscription = _SinkTransformerStreamSubscription();
async._SinkMapper$ = dart.generic((S, T) => {
  const _SinkMapper = dart.typedef('_SinkMapper', () => dart.functionType(async.EventSink$(S), [async.EventSink$(T)]));
  return _SinkMapper;
});
async._SinkMapper = _SinkMapper();
const _sinkMapper = Symbol('_sinkMapper');
async._StreamSinkTransformer$ = dart.generic((S, T) => {
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let _BoundSinkStreamOfS$T = () => (_BoundSinkStreamOfS$T = dart.constFn(async._BoundSinkStream$(S, T)))();
  let StreamTransformerOfS$T = () => (StreamTransformerOfS$T = dart.constFn(async.StreamTransformer$(S, T)))();
  let _SinkMapperOfS$T = () => (_SinkMapperOfS$T = dart.constFn(async._SinkMapper$(S, T)))();
  class _StreamSinkTransformer extends core.Object {
    new(sinkMapper) {
      this[_sinkMapper] = sinkMapper;
    }
    bind(stream) {
      StreamOfS()._check(stream);
      return new (_BoundSinkStreamOfS$T())(stream, this[_sinkMapper]);
    }
  }
  dart.addTypeTests(_StreamSinkTransformer);
  _StreamSinkTransformer[dart.implements] = () => [StreamTransformerOfS$T()];
  dart.setSignature(_StreamSinkTransformer, {
    constructors: () => ({new: dart.definiteFunctionType(async._StreamSinkTransformer$(S, T), [_SinkMapperOfS$T()])}),
    fields: () => ({[_sinkMapper]: _SinkMapperOfS$T()}),
    methods: () => ({bind: dart.definiteFunctionType(async.Stream$(T), [StreamOfS()])})
  });
  return _StreamSinkTransformer;
});
async._StreamSinkTransformer = _StreamSinkTransformer();
async._BoundSinkStream$ = dart.generic((S, T) => {
  let _SinkTransformerStreamSubscriptionOfS$T = () => (_SinkTransformerStreamSubscriptionOfS$T = dart.constFn(async._SinkTransformerStreamSubscription$(S, T)))();
  let _SinkMapperOfS$T = () => (_SinkMapperOfS$T = dart.constFn(async._SinkMapper$(S, T)))();
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _BoundSinkStream extends async.Stream$(T) {
    get isBroadcast() {
      return this[_stream].isBroadcast;
    }
    new(stream, sinkMapper) {
      this[_stream] = stream;
      this[_sinkMapper] = sinkMapper;
      super.new();
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      cancelOnError = core.identical(true, cancelOnError);
      let subscription = new (_SinkTransformerStreamSubscriptionOfS$T())(this[_stream], this[_sinkMapper], onData, onError, onDone, cancelOnError);
      return subscription;
    }
  }
  dart.setSignature(_BoundSinkStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._BoundSinkStream$(S, T), [StreamOfS(), _SinkMapperOfS$T()])}),
    fields: () => ({
      [_sinkMapper]: _SinkMapperOfS$T(),
      [_stream]: StreamOfS()
    }),
    methods: () => ({listen: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid()], {onError: core.Function, onDone: VoidTovoid(), cancelOnError: core.bool})})
  });
  return _BoundSinkStream;
});
async._BoundSinkStream = _BoundSinkStream();
async._TransformDataHandler$ = dart.generic((S, T) => {
  const _TransformDataHandler = dart.typedef('_TransformDataHandler', () => dart.functionType(dart.void, [S, async.EventSink$(T)]));
  return _TransformDataHandler;
});
async._TransformDataHandler = _TransformDataHandler();
async._TransformErrorHandler$ = dart.generic(T => {
  const _TransformErrorHandler = dart.typedef('_TransformErrorHandler', () => dart.functionType(dart.void, [core.Object, core.StackTrace, async.EventSink$(T)]));
  return _TransformErrorHandler;
});
async._TransformErrorHandler = _TransformErrorHandler();
async._TransformDoneHandler$ = dart.generic(T => {
  const _TransformDoneHandler = dart.typedef('_TransformDoneHandler', () => dart.functionType(dart.void, [async.EventSink$(T)]));
  return _TransformDoneHandler;
});
async._TransformDoneHandler = _TransformDoneHandler();
async._HandlerEventSink$ = dart.generic((S, T) => {
  let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
  let _TransformDataHandlerOfS$T = () => (_TransformDataHandlerOfS$T = dart.constFn(async._TransformDataHandler$(S, T)))();
  let _TransformErrorHandlerOfT = () => (_TransformErrorHandlerOfT = dart.constFn(async._TransformErrorHandler$(T)))();
  let _TransformDoneHandlerOfT = () => (_TransformDoneHandlerOfT = dart.constFn(async._TransformDoneHandler$(T)))();
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  class _HandlerEventSink extends core.Object {
    new(handleData, handleError, handleDone, sink) {
      this[_handleData] = handleData;
      this[_handleError] = handleError;
      this[_handleDone] = handleDone;
      this[_sink] = sink;
    }
    add(data) {
      S._check(data);
      this[_handleData](data, this[_sink]);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_handleError](error, stackTrace, this[_sink]);
    }
    close() {
      this[_handleDone](this[_sink]);
    }
  }
  dart.addTypeTests(_HandlerEventSink);
  _HandlerEventSink[dart.implements] = () => [EventSinkOfS()];
  dart.setSignature(_HandlerEventSink, {
    constructors: () => ({new: dart.definiteFunctionType(async._HandlerEventSink$(S, T), [_TransformDataHandlerOfS$T(), _TransformErrorHandlerOfT(), _TransformDoneHandlerOfT(), EventSinkOfT()])}),
    fields: () => ({
      [_handleData]: _TransformDataHandlerOfS$T(),
      [_handleError]: _TransformErrorHandlerOfT(),
      [_handleDone]: _TransformDoneHandlerOfT(),
      [_sink]: EventSinkOfT()
    }),
    methods: () => ({
      add: dart.definiteFunctionType(dart.void, [S]),
      addError: dart.definiteFunctionType(dart.void, [core.Object], [core.StackTrace]),
      close: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _HandlerEventSink;
});
async._HandlerEventSink = _HandlerEventSink();
async._StreamHandlerTransformer$ = dart.generic((S, T) => {
  let _HandlerEventSinkOfS$T = () => (_HandlerEventSinkOfS$T = dart.constFn(async._HandlerEventSink$(S, T)))();
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let SAndEventSinkOfTTovoid = () => (SAndEventSinkOfTTovoid = dart.constFn(dart.functionType(dart.void, [S, EventSinkOfT()])))();
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  let ObjectAndStackTraceAndEventSinkOfTTovoid = () => (ObjectAndStackTraceAndEventSinkOfTTovoid = dart.constFn(dart.functionType(dart.void, [core.Object, core.StackTrace, EventSinkOfT()])))();
  let EventSinkOfTTovoid = () => (EventSinkOfTTovoid = dart.constFn(dart.functionType(dart.void, [EventSinkOfT()])))();
  let EventSinkOfTTo_HandlerEventSinkOfS$T = () => (EventSinkOfTTo_HandlerEventSinkOfS$T = dart.constFn(dart.definiteFunctionType(_HandlerEventSinkOfS$T(), [EventSinkOfT()])))();
  class _StreamHandlerTransformer extends async._StreamSinkTransformer$(S, T) {
    new(opts) {
      let handleData = opts && 'handleData' in opts ? opts.handleData : null;
      let handleError = opts && 'handleError' in opts ? opts.handleError : null;
      let handleDone = opts && 'handleDone' in opts ? opts.handleDone : null;
      super.new(dart.fn(outputSink => {
        if (handleData == null) handleData = async._StreamHandlerTransformer._defaultHandleData;
        if (handleError == null) handleError = async._StreamHandlerTransformer._defaultHandleError;
        if (handleDone == null) handleDone = async._StreamHandlerTransformer._defaultHandleDone;
        return new (_HandlerEventSinkOfS$T())(handleData, handleError, handleDone, outputSink);
      }, EventSinkOfTTo_HandlerEventSinkOfS$T()));
    }
    bind(stream) {
      StreamOfS()._check(stream);
      return super.bind(stream);
    }
    static _defaultHandleData(data, sink) {
      sink.add(data);
    }
    static _defaultHandleError(error, stackTrace, sink) {
      sink.addError(error, stackTrace);
    }
    static _defaultHandleDone(sink) {
      sink.close();
    }
  }
  dart.setSignature(_StreamHandlerTransformer, {
    constructors: () => ({new: dart.definiteFunctionType(async._StreamHandlerTransformer$(S, T), [], {handleData: SAndEventSinkOfTTovoid(), handleError: ObjectAndStackTraceAndEventSinkOfTTovoid(), handleDone: EventSinkOfTTovoid()})}),
    methods: () => ({bind: dart.definiteFunctionType(async.Stream$(T), [StreamOfS()])}),
    statics: () => ({
      _defaultHandleData: dart.definiteFunctionType(dart.void, [dart.dynamic, async.EventSink]),
      _defaultHandleError: dart.definiteFunctionType(dart.void, [dart.dynamic, core.StackTrace, async.EventSink]),
      _defaultHandleDone: dart.definiteFunctionType(dart.void, [async.EventSink])
    }),
    names: ['_defaultHandleData', '_defaultHandleError', '_defaultHandleDone']
  });
  return _StreamHandlerTransformer;
});
async._StreamHandlerTransformer = _StreamHandlerTransformer();
async._SubscriptionTransformer$ = dart.generic((S, T) => {
  const _SubscriptionTransformer = dart.typedef('_SubscriptionTransformer', () => dart.functionType(async.StreamSubscription$(T), [async.Stream$(S), core.bool]));
  return _SubscriptionTransformer;
});
async._SubscriptionTransformer = _SubscriptionTransformer();
const _transformer = Symbol('_transformer');
async._StreamSubscriptionTransformer$ = dart.generic((S, T) => {
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let _BoundSubscriptionStreamOfS$T = () => (_BoundSubscriptionStreamOfS$T = dart.constFn(async._BoundSubscriptionStream$(S, T)))();
  let StreamTransformerOfS$T = () => (StreamTransformerOfS$T = dart.constFn(async.StreamTransformer$(S, T)))();
  let _SubscriptionTransformerOfS$T = () => (_SubscriptionTransformerOfS$T = dart.constFn(async._SubscriptionTransformer$(S, T)))();
  class _StreamSubscriptionTransformer extends core.Object {
    new(transformer) {
      this[_transformer] = transformer;
    }
    bind(stream) {
      StreamOfS()._check(stream);
      return new (_BoundSubscriptionStreamOfS$T())(stream, this[_transformer]);
    }
  }
  dart.addTypeTests(_StreamSubscriptionTransformer);
  _StreamSubscriptionTransformer[dart.implements] = () => [StreamTransformerOfS$T()];
  dart.setSignature(_StreamSubscriptionTransformer, {
    constructors: () => ({new: dart.definiteFunctionType(async._StreamSubscriptionTransformer$(S, T), [_SubscriptionTransformerOfS$T()])}),
    fields: () => ({[_transformer]: _SubscriptionTransformerOfS$T()}),
    methods: () => ({bind: dart.definiteFunctionType(async.Stream$(T), [StreamOfS()])})
  });
  return _StreamSubscriptionTransformer;
});
async._StreamSubscriptionTransformer = _StreamSubscriptionTransformer();
async._BoundSubscriptionStream$ = dart.generic((S, T) => {
  let _SubscriptionTransformerOfS$T = () => (_SubscriptionTransformerOfS$T = dart.constFn(async._SubscriptionTransformer$(S, T)))();
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _BoundSubscriptionStream extends async.Stream$(T) {
    new(stream, transformer) {
      this[_stream] = stream;
      this[_transformer] = transformer;
      super.new();
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      cancelOnError = core.identical(true, cancelOnError);
      let result = this[_transformer](this[_stream], cancelOnError);
      result.onData(onData);
      result.onError(onError);
      result.onDone(onDone);
      return result;
    }
  }
  dart.setSignature(_BoundSubscriptionStream, {
    constructors: () => ({new: dart.definiteFunctionType(async._BoundSubscriptionStream$(S, T), [StreamOfS(), _SubscriptionTransformerOfS$T()])}),
    fields: () => ({
      [_transformer]: _SubscriptionTransformerOfS$T(),
      [_stream]: StreamOfS()
    }),
    methods: () => ({listen: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid()], {onError: core.Function, onDone: VoidTovoid(), cancelOnError: core.bool})})
  });
  return _BoundSubscriptionStream;
});
async._BoundSubscriptionStream = _BoundSubscriptionStream();
async.Timer = class Timer extends core.Object {
  static new(duration, callback) {
    if (dart.equals(async.Zone.current, async.Zone.ROOT)) {
      return async.Zone.current.createTimer(duration, callback);
    }
    return async.Zone.current.createTimer(duration, async.Zone.current.bindCallback(dart.dynamic)(callback, {runGuarded: true}));
  }
  static periodic(duration, callback) {
    if (dart.equals(async.Zone.current, async.Zone.ROOT)) {
      return async.Zone.current.createPeriodicTimer(duration, callback);
    }
    let boundCallback = async.Zone.current.bindUnaryCallback(dart.dynamic, async.Timer)(callback, {runGuarded: true});
    return async.Zone.current.createPeriodicTimer(duration, boundCallback);
  }
  static run(callback) {
    async.Timer.new(core.Duration.ZERO, callback);
  }
  static _createTimer(duration, callback) {
    let milliseconds = duration.inMilliseconds;
    if (dart.notNull(milliseconds) < 0) milliseconds = 0;
    return new _isolate_helper.TimerImpl(milliseconds, callback);
  }
  static _createPeriodicTimer(duration, callback) {
    let milliseconds = duration.inMilliseconds;
    if (dart.notNull(milliseconds) < 0) milliseconds = 0;
    return new _isolate_helper.TimerImpl.periodic(milliseconds, callback);
  }
};
dart.setSignature(async.Timer, {
  constructors: () => ({
    new: dart.definiteFunctionType(async.Timer, [core.Duration, VoidTovoid()]),
    periodic: dart.definiteFunctionType(async.Timer, [core.Duration, TimerTovoid()])
  }),
  statics: () => ({
    run: dart.definiteFunctionType(dart.void, [VoidTovoid()]),
    _createTimer: dart.definiteFunctionType(async.Timer, [core.Duration, VoidTovoid()]),
    _createPeriodicTimer: dart.definiteFunctionType(async.Timer, [core.Duration, TimerTovoid()])
  }),
  names: ['run', '_createTimer', '_createPeriodicTimer']
});
async.ZoneCallback$ = dart.generic(R => {
  const ZoneCallback = dart.typedef('ZoneCallback', () => dart.functionType(R, []));
  return ZoneCallback;
});
async.ZoneCallback = ZoneCallback();
async.ZoneUnaryCallback$ = dart.generic((R, T) => {
  const ZoneUnaryCallback = dart.typedef('ZoneUnaryCallback', () => dart.functionType(R, [T]));
  return ZoneUnaryCallback;
});
async.ZoneUnaryCallback = ZoneUnaryCallback();
async.ZoneBinaryCallback$ = dart.generic((R, T1, T2) => {
  const ZoneBinaryCallback = dart.typedef('ZoneBinaryCallback', () => dart.functionType(R, [T1, T2]));
  return ZoneBinaryCallback;
});
async.ZoneBinaryCallback = ZoneBinaryCallback();
async.HandleUncaughtErrorHandler$ = dart.generic(R => {
  const HandleUncaughtErrorHandler = dart.typedef('HandleUncaughtErrorHandler', () => dart.functionType(R, [async.Zone, async.ZoneDelegate, async.Zone, dart.dynamic, core.StackTrace]));
  return HandleUncaughtErrorHandler;
});
async.HandleUncaughtErrorHandler = HandleUncaughtErrorHandler();
async.RunHandler$ = dart.generic(R => {
  const RunHandler = dart.typedef('RunHandler', () => dart.functionType(R, [async.Zone, async.ZoneDelegate, async.Zone, dart.functionType(R, [])]));
  return RunHandler;
});
async.RunHandler = RunHandler();
async.RunUnaryHandler$ = dart.generic((R, T) => {
  const RunUnaryHandler = dart.typedef('RunUnaryHandler', () => dart.functionType(R, [async.Zone, async.ZoneDelegate, async.Zone, dart.functionType(R, [T]), T]));
  return RunUnaryHandler;
});
async.RunUnaryHandler = RunUnaryHandler();
async.RunBinaryHandler$ = dart.generic((R, T1, T2) => {
  const RunBinaryHandler = dart.typedef('RunBinaryHandler', () => dart.functionType(R, [async.Zone, async.ZoneDelegate, async.Zone, dart.functionType(R, [T1, T2]), T1, T2]));
  return RunBinaryHandler;
});
async.RunBinaryHandler = RunBinaryHandler();
async.RegisterCallbackHandler$ = dart.generic(R => {
  const RegisterCallbackHandler = dart.typedef('RegisterCallbackHandler', () => dart.functionType(async.ZoneCallback$(R), [async.Zone, async.ZoneDelegate, async.Zone, dart.functionType(R, [])]));
  return RegisterCallbackHandler;
});
async.RegisterCallbackHandler = RegisterCallbackHandler();
async.RegisterUnaryCallbackHandler$ = dart.generic((R, T) => {
  const RegisterUnaryCallbackHandler = dart.typedef('RegisterUnaryCallbackHandler', () => dart.functionType(async.ZoneUnaryCallback$(R, T), [async.Zone, async.ZoneDelegate, async.Zone, dart.functionType(R, [T])]));
  return RegisterUnaryCallbackHandler;
});
async.RegisterUnaryCallbackHandler = RegisterUnaryCallbackHandler();
async.RegisterBinaryCallbackHandler$ = dart.generic((R, T1, T2) => {
  const RegisterBinaryCallbackHandler = dart.typedef('RegisterBinaryCallbackHandler', () => dart.functionType(async.ZoneBinaryCallback$(R, T1, T2), [async.Zone, async.ZoneDelegate, async.Zone, dart.functionType(R, [T1, T2])]));
  return RegisterBinaryCallbackHandler;
});
async.RegisterBinaryCallbackHandler = RegisterBinaryCallbackHandler();
async.ErrorCallbackHandler = dart.typedef('ErrorCallbackHandler', () => dart.functionType(async.AsyncError, [async.Zone, async.ZoneDelegate, async.Zone, core.Object, core.StackTrace]));
async.ScheduleMicrotaskHandler = dart.typedef('ScheduleMicrotaskHandler', () => dart.functionType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, VoidTovoid()]));
async.CreateTimerHandler = dart.typedef('CreateTimerHandler', () => dart.functionType(async.Timer, [async.Zone, async.ZoneDelegate, async.Zone, core.Duration, VoidTovoid()]));
async.CreatePeriodicTimerHandler = dart.typedef('CreatePeriodicTimerHandler', () => dart.functionType(async.Timer, [async.Zone, async.ZoneDelegate, async.Zone, core.Duration, TimerTovoid()]));
async.PrintHandler = dart.typedef('PrintHandler', () => dart.functionType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, core.String]));
async.ForkHandler = dart.typedef('ForkHandler', () => dart.functionType(async.Zone, [async.Zone, async.ZoneDelegate, async.Zone, async.ZoneSpecification, core.Map]));
async._ZoneFunction$ = dart.generic(T => {
  class _ZoneFunction extends core.Object {
    new(zone, func) {
      this.zone = zone;
      this.function = func;
    }
  }
  dart.addTypeTests(_ZoneFunction);
  dart.setSignature(_ZoneFunction, {
    constructors: () => ({new: dart.definiteFunctionType(async._ZoneFunction$(T), [async._Zone, T])}),
    fields: () => ({
      zone: async._Zone,
      function: T
    })
  });
  return _ZoneFunction;
});
async._ZoneFunction = _ZoneFunction();
async.ZoneSpecification = class ZoneSpecification extends core.Object {
  static new(opts) {
    return new async._ZoneSpecification(opts);
  }
  static from(other, opts) {
    let handleUncaughtError = opts && 'handleUncaughtError' in opts ? opts.handleUncaughtError : null;
    let run = opts && 'run' in opts ? opts.run : null;
    let runUnary = opts && 'runUnary' in opts ? opts.runUnary : null;
    let runBinary = opts && 'runBinary' in opts ? opts.runBinary : null;
    let registerCallback = opts && 'registerCallback' in opts ? opts.registerCallback : null;
    let registerUnaryCallback = opts && 'registerUnaryCallback' in opts ? opts.registerUnaryCallback : null;
    let registerBinaryCallback = opts && 'registerBinaryCallback' in opts ? opts.registerBinaryCallback : null;
    let errorCallback = opts && 'errorCallback' in opts ? opts.errorCallback : null;
    let scheduleMicrotask = opts && 'scheduleMicrotask' in opts ? opts.scheduleMicrotask : null;
    let createTimer = opts && 'createTimer' in opts ? opts.createTimer : null;
    let createPeriodicTimer = opts && 'createPeriodicTimer' in opts ? opts.createPeriodicTimer : null;
    let print = opts && 'print' in opts ? opts.print : null;
    let fork = opts && 'fork' in opts ? opts.fork : null;
    return async.ZoneSpecification.new({handleUncaughtError: (handleUncaughtError != null ? handleUncaughtError : other.handleUncaughtError), run: (run != null ? run : other.run), runUnary: (runUnary != null ? runUnary : other.runUnary), runBinary: (runBinary != null ? runBinary : other.runBinary), registerCallback: (registerCallback != null ? registerCallback : other.registerCallback), registerUnaryCallback: (registerUnaryCallback != null ? registerUnaryCallback : other.registerUnaryCallback), registerBinaryCallback: (registerBinaryCallback != null ? registerBinaryCallback : other.registerBinaryCallback), errorCallback: (errorCallback != null ? errorCallback : other.errorCallback), scheduleMicrotask: (scheduleMicrotask != null ? scheduleMicrotask : other.scheduleMicrotask), createTimer: (createTimer != null ? createTimer : other.createTimer), createPeriodicTimer: (createPeriodicTimer != null ? createPeriodicTimer : other.createPeriodicTimer), print: (print != null ? print : other.print), fork: (fork != null ? fork : other.fork)});
  }
};
dart.setSignature(async.ZoneSpecification, {
  constructors: () => ({
    new: dart.definiteFunctionType(async.ZoneSpecification, [], {handleUncaughtError: async.HandleUncaughtErrorHandler, run: async.RunHandler, runUnary: async.RunUnaryHandler, runBinary: async.RunBinaryHandler, registerCallback: async.RegisterCallbackHandler, registerUnaryCallback: async.RegisterUnaryCallbackHandler, registerBinaryCallback: async.RegisterBinaryCallbackHandler, errorCallback: async.ErrorCallbackHandler, scheduleMicrotask: async.ScheduleMicrotaskHandler, createTimer: async.CreateTimerHandler, createPeriodicTimer: async.CreatePeriodicTimerHandler, print: async.PrintHandler, fork: async.ForkHandler}),
    from: dart.definiteFunctionType(async.ZoneSpecification, [async.ZoneSpecification], {handleUncaughtError: async.HandleUncaughtErrorHandler, run: async.RunHandler, runUnary: async.RunUnaryHandler, runBinary: async.RunBinaryHandler, registerCallback: async.RegisterCallbackHandler, registerUnaryCallback: async.RegisterUnaryCallbackHandler, registerBinaryCallback: async.RegisterBinaryCallbackHandler, errorCallback: async.ErrorCallbackHandler, scheduleMicrotask: async.ScheduleMicrotaskHandler, createTimer: async.CreateTimerHandler, createPeriodicTimer: async.CreatePeriodicTimerHandler, print: async.PrintHandler, fork: async.ForkHandler})
  })
});
async._ZoneSpecification = class _ZoneSpecification extends core.Object {
  new(opts) {
    let handleUncaughtError = opts && 'handleUncaughtError' in opts ? opts.handleUncaughtError : null;
    let run = opts && 'run' in opts ? opts.run : null;
    let runUnary = opts && 'runUnary' in opts ? opts.runUnary : null;
    let runBinary = opts && 'runBinary' in opts ? opts.runBinary : null;
    let registerCallback = opts && 'registerCallback' in opts ? opts.registerCallback : null;
    let registerUnaryCallback = opts && 'registerUnaryCallback' in opts ? opts.registerUnaryCallback : null;
    let registerBinaryCallback = opts && 'registerBinaryCallback' in opts ? opts.registerBinaryCallback : null;
    let errorCallback = opts && 'errorCallback' in opts ? opts.errorCallback : null;
    let scheduleMicrotask = opts && 'scheduleMicrotask' in opts ? opts.scheduleMicrotask : null;
    let createTimer = opts && 'createTimer' in opts ? opts.createTimer : null;
    let createPeriodicTimer = opts && 'createPeriodicTimer' in opts ? opts.createPeriodicTimer : null;
    let print = opts && 'print' in opts ? opts.print : null;
    let fork = opts && 'fork' in opts ? opts.fork : null;
    this.handleUncaughtError = handleUncaughtError;
    this.run = run;
    this.runUnary = runUnary;
    this.runBinary = runBinary;
    this.registerCallback = registerCallback;
    this.registerUnaryCallback = registerUnaryCallback;
    this.registerBinaryCallback = registerBinaryCallback;
    this.errorCallback = errorCallback;
    this.scheduleMicrotask = scheduleMicrotask;
    this.createTimer = createTimer;
    this.createPeriodicTimer = createPeriodicTimer;
    this.print = print;
    this.fork = fork;
  }
};
async._ZoneSpecification[dart.implements] = () => [async.ZoneSpecification];
dart.setSignature(async._ZoneSpecification, {
  constructors: () => ({new: dart.definiteFunctionType(async._ZoneSpecification, [], {handleUncaughtError: async.HandleUncaughtErrorHandler, run: async.RunHandler, runUnary: async.RunUnaryHandler, runBinary: async.RunBinaryHandler, registerCallback: async.RegisterCallbackHandler, registerUnaryCallback: async.RegisterUnaryCallbackHandler, registerBinaryCallback: async.RegisterBinaryCallbackHandler, errorCallback: async.ErrorCallbackHandler, scheduleMicrotask: async.ScheduleMicrotaskHandler, createTimer: async.CreateTimerHandler, createPeriodicTimer: async.CreatePeriodicTimerHandler, print: async.PrintHandler, fork: async.ForkHandler})}),
  fields: () => ({
    handleUncaughtError: async.HandleUncaughtErrorHandler,
    run: async.RunHandler,
    runUnary: async.RunUnaryHandler,
    runBinary: async.RunBinaryHandler,
    registerCallback: async.RegisterCallbackHandler,
    registerUnaryCallback: async.RegisterUnaryCallbackHandler,
    registerBinaryCallback: async.RegisterBinaryCallbackHandler,
    errorCallback: async.ErrorCallbackHandler,
    scheduleMicrotask: async.ScheduleMicrotaskHandler,
    createTimer: async.CreateTimerHandler,
    createPeriodicTimer: async.CreatePeriodicTimerHandler,
    print: async.PrintHandler,
    fork: async.ForkHandler
  })
});
async.ZoneDelegate = class ZoneDelegate extends core.Object {};
async.Zone = class Zone extends core.Object {
  _() {
  }
  static get current() {
    return async.Zone._current;
  }
  static _enter(zone) {
    dart.assert(zone != null);
    dart.assert(!core.identical(zone, async.Zone._current));
    let previous = async.Zone._current;
    async.Zone._current = zone;
    return previous;
  }
  static _leave(previous) {
    dart.assert(previous != null);
    async.Zone._current = previous;
  }
};
dart.defineNamedConstructor(async.Zone, '_');
dart.setSignature(async.Zone, {
  constructors: () => ({_: dart.definiteFunctionType(async.Zone, [])}),
  sfields: () => ({
    ROOT: async.Zone,
    _current: async.Zone
  }),
  sgetters: () => ({current: dart.definiteFunctionType(async.Zone, [])}),
  statics: () => ({
    _enter: dart.definiteFunctionType(async.Zone, [async.Zone]),
    _leave: dart.definiteFunctionType(dart.void, [async.Zone])
  }),
  names: ['_enter', '_leave']
});
dart.defineLazy(async.Zone, {
  get ROOT() {
    return async._ROOT_ZONE;
  },
  get _current() {
    return async._ROOT_ZONE;
  },
  set _current(_) {}
});
const _delegate = Symbol('_delegate');
async._parentDelegate = function(zone) {
  if (zone.parent == null) return null;
  return zone.parent[_delegate];
};
dart.lazyFn(async._parentDelegate, () => _ZoneToZoneDelegate());
const _delegationTarget = Symbol('_delegationTarget');
const _handleUncaughtError = Symbol('_handleUncaughtError');
const _run = Symbol('_run');
const _runUnary = Symbol('_runUnary');
const _runBinary = Symbol('_runBinary');
const _registerCallback = Symbol('_registerCallback');
const _registerUnaryCallback = Symbol('_registerUnaryCallback');
const _registerBinaryCallback = Symbol('_registerBinaryCallback');
const _errorCallback = Symbol('_errorCallback');
const _createTimer = Symbol('_createTimer');
const _createPeriodicTimer = Symbol('_createPeriodicTimer');
const _print = Symbol('_print');
const _fork = Symbol('_fork');
async._ZoneDelegate = class _ZoneDelegate extends core.Object {
  new(delegationTarget) {
    this[_delegationTarget] = delegationTarget;
  }
  handleUncaughtError(R) {
    return (zone, error, stackTrace) => {
      let implementation = this[_delegationTarget][_handleUncaughtError];
      let implZone = implementation.zone;
      let handler = implementation.function;
      return R.as(dart.dcall(handler, implZone, async._parentDelegate(implZone), zone, error, stackTrace));
    };
  }
  run(R) {
    return (zone, f) => {
      let implementation = this[_delegationTarget][_run];
      let implZone = implementation.zone;
      let handler = implementation.function;
      return R.as(handler(implZone, async._parentDelegate(implZone), zone, f));
    };
  }
  runUnary(R, T) {
    return (zone, f, arg) => {
      let implementation = this[_delegationTarget][_runUnary];
      let implZone = implementation.zone;
      let handler = implementation.function;
      return R.as(dart.dcall(handler, implZone, async._parentDelegate(implZone), zone, f, arg));
    };
  }
  runBinary(R, T1, T2) {
    return (zone, f, arg1, arg2) => {
      let implementation = this[_delegationTarget][_runBinary];
      let implZone = implementation.zone;
      let handler = implementation.function;
      return R.as(dart.dcall(handler, implZone, async._parentDelegate(implZone), zone, f, arg1, arg2));
    };
  }
  registerCallback(R) {
    return (zone, f) => {
      let implementation = this[_delegationTarget][_registerCallback];
      let implZone = implementation.zone;
      let handler = implementation.function;
      return async.ZoneCallback$(R).as(handler(implZone, async._parentDelegate(implZone), zone, f));
    };
  }
  registerUnaryCallback(R, T) {
    return (zone, f) => {
      let implementation = this[_delegationTarget][_registerUnaryCallback];
      let implZone = implementation.zone;
      let handler = implementation.function;
      return async.ZoneUnaryCallback$(R, T).as(handler(implZone, async._parentDelegate(implZone), zone, f));
    };
  }
  registerBinaryCallback(R, T1, T2) {
    return (zone, f) => {
      let implementation = this[_delegationTarget][_registerBinaryCallback];
      let implZone = implementation.zone;
      let handler = implementation.function;
      return async.ZoneBinaryCallback$(R, T1, T2).as(handler(implZone, async._parentDelegate(implZone), zone, f));
    };
  }
  errorCallback(zone, error, stackTrace) {
    let implementation = this[_delegationTarget][_errorCallback];
    let implZone = implementation.zone;
    if (core.identical(implZone, async._ROOT_ZONE)) return null;
    let handler = implementation.function;
    return handler(implZone, async._parentDelegate(implZone), zone, error, stackTrace);
  }
  scheduleMicrotask(zone, f) {
    let implementation = this[_delegationTarget][_scheduleMicrotask];
    let implZone = implementation.zone;
    let handler = implementation.function;
    handler(implZone, async._parentDelegate(implZone), zone, f);
  }
  createTimer(zone, duration, f) {
    let implementation = this[_delegationTarget][_createTimer];
    let implZone = implementation.zone;
    let handler = implementation.function;
    return handler(implZone, async._parentDelegate(implZone), zone, duration, f);
  }
  createPeriodicTimer(zone, period, f) {
    let implementation = this[_delegationTarget][_createPeriodicTimer];
    let implZone = implementation.zone;
    let handler = implementation.function;
    return handler(implZone, async._parentDelegate(implZone), zone, period, f);
  }
  print(zone, line) {
    let implementation = this[_delegationTarget][_print];
    let implZone = implementation.zone;
    let handler = implementation.function;
    handler(implZone, async._parentDelegate(implZone), zone, line);
  }
  fork(zone, specification, zoneValues) {
    let implementation = this[_delegationTarget][_fork];
    let implZone = implementation.zone;
    let handler = implementation.function;
    return handler(implZone, async._parentDelegate(implZone), zone, specification, zoneValues);
  }
};
async._ZoneDelegate[dart.implements] = () => [async.ZoneDelegate];
dart.setSignature(async._ZoneDelegate, {
  constructors: () => ({new: dart.definiteFunctionType(async._ZoneDelegate, [async._Zone])}),
  fields: () => ({[_delegationTarget]: async._Zone}),
  methods: () => ({
    handleUncaughtError: dart.definiteFunctionType(R => [R, [async.Zone, dart.dynamic, core.StackTrace]]),
    run: dart.definiteFunctionType(R => [R, [async.Zone, dart.functionType(R, [])]]),
    runUnary: dart.definiteFunctionType((R, T) => [R, [async.Zone, dart.functionType(R, [T]), T]]),
    runBinary: dart.definiteFunctionType((R, T1, T2) => [R, [async.Zone, dart.functionType(R, [T1, T2]), T1, T2]]),
    registerCallback: dart.definiteFunctionType(R => [async.ZoneCallback$(R), [async.Zone, dart.functionType(R, [])]]),
    registerUnaryCallback: dart.definiteFunctionType((R, T) => [async.ZoneUnaryCallback$(R, T), [async.Zone, dart.functionType(R, [T])]]),
    registerBinaryCallback: dart.definiteFunctionType((R, T1, T2) => [async.ZoneBinaryCallback$(R, T1, T2), [async.Zone, dart.functionType(R, [T1, T2])]]),
    errorCallback: dart.definiteFunctionType(async.AsyncError, [async.Zone, core.Object, core.StackTrace]),
    scheduleMicrotask: dart.definiteFunctionType(dart.void, [async.Zone, VoidTodynamic()]),
    createTimer: dart.definiteFunctionType(async.Timer, [async.Zone, core.Duration, VoidTovoid()]),
    createPeriodicTimer: dart.definiteFunctionType(async.Timer, [async.Zone, core.Duration, TimerTovoid()]),
    print: dart.definiteFunctionType(dart.void, [async.Zone, core.String]),
    fork: dart.definiteFunctionType(async.Zone, [async.Zone, async.ZoneSpecification, core.Map])
  })
});
const _map = Symbol('_map');
async._Zone = class _Zone extends core.Object {
  new() {
  }
  inSameErrorZone(otherZone) {
    return core.identical(this, otherZone) || core.identical(this.errorZone, otherZone.errorZone);
  }
};
async._Zone[dart.implements] = () => [async.Zone];
dart.setSignature(async._Zone, {
  constructors: () => ({new: dart.definiteFunctionType(async._Zone, [])}),
  methods: () => ({inSameErrorZone: dart.definiteFunctionType(core.bool, [async.Zone])})
});
const _delegateCache = Symbol('_delegateCache');
async._CustomZone = class _CustomZone extends async._Zone {
  get [_delegate]() {
    if (this[_delegateCache] != null) return this[_delegateCache];
    this[_delegateCache] = new async._ZoneDelegate(this);
    return this[_delegateCache];
  }
  new(parent, specification, map) {
    this.parent = parent;
    this[_map] = map;
    this[_run] = null;
    this[_runUnary] = null;
    this[_runBinary] = null;
    this[_registerCallback] = null;
    this[_registerUnaryCallback] = null;
    this[_registerBinaryCallback] = null;
    this[_errorCallback] = null;
    this[_scheduleMicrotask] = null;
    this[_createTimer] = null;
    this[_createPeriodicTimer] = null;
    this[_print] = null;
    this[_fork] = null;
    this[_handleUncaughtError] = null;
    this[_delegateCache] = null;
    super.new();
    this[_run] = specification.run != null ? new (_ZoneFunctionOfRunHandler())(this, specification.run) : this.parent[_run];
    this[_runUnary] = specification.runUnary != null ? new (_ZoneFunctionOfRunUnaryHandler())(this, specification.runUnary) : this.parent[_runUnary];
    this[_runBinary] = specification.runBinary != null ? new (_ZoneFunctionOfRunBinaryHandler())(this, specification.runBinary) : this.parent[_runBinary];
    this[_registerCallback] = specification.registerCallback != null ? new (_ZoneFunctionOfRegisterCallbackHandler())(this, specification.registerCallback) : this.parent[_registerCallback];
    this[_registerUnaryCallback] = specification.registerUnaryCallback != null ? new (_ZoneFunctionOfRegisterUnaryCallbackHandler())(this, specification.registerUnaryCallback) : this.parent[_registerUnaryCallback];
    this[_registerBinaryCallback] = specification.registerBinaryCallback != null ? new (_ZoneFunctionOfRegisterBinaryCallbackHandler())(this, specification.registerBinaryCallback) : this.parent[_registerBinaryCallback];
    this[_errorCallback] = specification.errorCallback != null ? new (_ZoneFunctionOfErrorCallbackHandler())(this, specification.errorCallback) : this.parent[_errorCallback];
    this[_scheduleMicrotask] = specification.scheduleMicrotask != null ? new (_ZoneFunctionOfScheduleMicrotaskHandler())(this, specification.scheduleMicrotask) : this.parent[_scheduleMicrotask];
    this[_createTimer] = specification.createTimer != null ? new (_ZoneFunctionOfCreateTimerHandler())(this, specification.createTimer) : this.parent[_createTimer];
    this[_createPeriodicTimer] = specification.createPeriodicTimer != null ? new (_ZoneFunctionOfCreatePeriodicTimerHandler())(this, specification.createPeriodicTimer) : this.parent[_createPeriodicTimer];
    this[_print] = specification.print != null ? new (_ZoneFunctionOfPrintHandler())(this, specification.print) : this.parent[_print];
    this[_fork] = specification.fork != null ? new (_ZoneFunctionOfForkHandler())(this, specification.fork) : this.parent[_fork];
    this[_handleUncaughtError] = specification.handleUncaughtError != null ? new (_ZoneFunctionOfHandleUncaughtErrorHandler())(this, specification.handleUncaughtError) : this.parent[_handleUncaughtError];
  }
  get errorZone() {
    return this[_handleUncaughtError].zone;
  }
  runGuarded(R) {
    return f => {
      try {
        return this.run(R)(f);
      } catch (e) {
        let s = dart.stackTrace(e);
        return this.handleUncaughtError(R)(e, s);
      }

    };
  }
  runUnaryGuarded(R, T) {
    return (f, arg) => {
      try {
        return this.runUnary(R, T)(f, arg);
      } catch (e) {
        let s = dart.stackTrace(e);
        return this.handleUncaughtError(R)(e, s);
      }

    };
  }
  runBinaryGuarded(R, T1, T2) {
    return (f, arg1, arg2) => {
      try {
        return this.runBinary(R, T1, T2)(f, arg1, arg2);
      } catch (e) {
        let s = dart.stackTrace(e);
        return this.handleUncaughtError(R)(e, s);
      }

    };
  }
  bindCallback(R) {
    return (f, opts) => {
      let runGuarded = opts && 'runGuarded' in opts ? opts.runGuarded : true;
      let registered = this.registerCallback(R)(f);
      if (dart.test(runGuarded)) {
        return dart.fn(() => this.runGuarded(R)(registered), dart.definiteFunctionType(R, []));
      } else {
        return dart.fn(() => this.run(R)(registered), dart.definiteFunctionType(R, []));
      }
    };
  }
  bindUnaryCallback(R, T) {
    return (f, opts) => {
      let runGuarded = opts && 'runGuarded' in opts ? opts.runGuarded : true;
      let registered = this.registerUnaryCallback(R, T)(f);
      if (dart.test(runGuarded)) {
        return dart.fn(arg => this.runUnaryGuarded(R, T)(registered, arg), dart.definiteFunctionType(R, [T]));
      } else {
        return dart.fn(arg => this.runUnary(R, T)(registered, arg), dart.definiteFunctionType(R, [T]));
      }
    };
  }
  bindBinaryCallback(R, T1, T2) {
    return (f, opts) => {
      let runGuarded = opts && 'runGuarded' in opts ? opts.runGuarded : true;
      let registered = this.registerBinaryCallback(R, T1, T2)(f);
      if (dart.test(runGuarded)) {
        return dart.fn((arg1, arg2) => this.runBinaryGuarded(R, T1, T2)(registered, arg1, arg2), dart.definiteFunctionType(R, [T1, T2]));
      } else {
        return dart.fn((arg1, arg2) => this.runBinary(R, T1, T2)(registered, arg1, arg2), dart.definiteFunctionType(R, [T1, T2]));
      }
    };
  }
  _get(key) {
    let result = this[_map][dartx._get](key);
    if (result != null || dart.test(this[_map][dartx.containsKey](key))) return result;
    if (this.parent != null) {
      let value = this.parent._get(key);
      if (value != null) {
        this[_map][dartx._set](key, value);
      }
      return value;
    }
    dart.assert(dart.equals(this, async._ROOT_ZONE));
    return null;
  }
  handleUncaughtError(R) {
    return (error, stackTrace) => {
      let implementation = this[_handleUncaughtError];
      dart.assert(implementation != null);
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return R.as(dart.dcall(handler, implementation.zone, parentDelegate, this, error, stackTrace));
    };
  }
  fork(opts) {
    let specification = opts && 'specification' in opts ? opts.specification : null;
    let zoneValues = opts && 'zoneValues' in opts ? opts.zoneValues : null;
    let implementation = this[_fork];
    dart.assert(implementation != null);
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = implementation.function;
    return handler(implementation.zone, parentDelegate, this, specification, zoneValues);
  }
  run(R) {
    return f => {
      let implementation = this[_run];
      dart.assert(implementation != null);
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return R.as(handler(implementation.zone, parentDelegate, this, f));
    };
  }
  runUnary(R, T) {
    return (f, arg) => {
      let implementation = this[_runUnary];
      dart.assert(implementation != null);
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return R.as(dart.dcall(handler, implementation.zone, parentDelegate, this, f, arg));
    };
  }
  runBinary(R, T1, T2) {
    return (f, arg1, arg2) => {
      let implementation = this[_runBinary];
      dart.assert(implementation != null);
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return R.as(dart.dcall(handler, implementation.zone, parentDelegate, this, f, arg1, arg2));
    };
  }
  registerCallback(R) {
    return callback => {
      let implementation = this[_registerCallback];
      dart.assert(implementation != null);
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return async.ZoneCallback$(R).as(handler(implementation.zone, parentDelegate, this, callback));
    };
  }
  registerUnaryCallback(R, T) {
    return callback => {
      let implementation = this[_registerUnaryCallback];
      dart.assert(implementation != null);
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return async.ZoneUnaryCallback$(R, T).as(handler(implementation.zone, parentDelegate, this, callback));
    };
  }
  registerBinaryCallback(R, T1, T2) {
    return callback => {
      let implementation = this[_registerBinaryCallback];
      dart.assert(implementation != null);
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return async.ZoneBinaryCallback$(R, T1, T2).as(handler(implementation.zone, parentDelegate, this, callback));
    };
  }
  errorCallback(error, stackTrace) {
    let implementation = this[_errorCallback];
    dart.assert(implementation != null);
    let implementationZone = implementation.zone;
    if (core.identical(implementationZone, async._ROOT_ZONE)) return null;
    let parentDelegate = async._parentDelegate(async._Zone._check(implementationZone));
    let handler = implementation.function;
    return handler(implementationZone, parentDelegate, this, error, stackTrace);
  }
  scheduleMicrotask(f) {
    let implementation = this[_scheduleMicrotask];
    dart.assert(implementation != null);
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = implementation.function;
    return handler(implementation.zone, parentDelegate, this, f);
  }
  createTimer(duration, f) {
    let implementation = this[_createTimer];
    dart.assert(implementation != null);
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = implementation.function;
    return handler(implementation.zone, parentDelegate, this, duration, f);
  }
  createPeriodicTimer(duration, f) {
    let implementation = this[_createPeriodicTimer];
    dart.assert(implementation != null);
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = implementation.function;
    return handler(implementation.zone, parentDelegate, this, duration, f);
  }
  print(line) {
    let implementation = this[_print];
    dart.assert(implementation != null);
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = implementation.function;
    return handler(implementation.zone, parentDelegate, this, line);
  }
};
dart.setSignature(async._CustomZone, {
  constructors: () => ({new: dart.definiteFunctionType(async._CustomZone, [async._Zone, async.ZoneSpecification, core.Map])}),
  fields: () => ({
    [_run]: _ZoneFunctionOfRunHandler(),
    [_runUnary]: _ZoneFunctionOfRunUnaryHandler(),
    [_runBinary]: _ZoneFunctionOfRunBinaryHandler(),
    [_registerCallback]: _ZoneFunctionOfRegisterCallbackHandler(),
    [_registerUnaryCallback]: _ZoneFunctionOfRegisterUnaryCallbackHandler(),
    [_registerBinaryCallback]: _ZoneFunctionOfRegisterBinaryCallbackHandler(),
    [_errorCallback]: _ZoneFunctionOfErrorCallbackHandler(),
    [_scheduleMicrotask]: _ZoneFunctionOfScheduleMicrotaskHandler(),
    [_createTimer]: _ZoneFunctionOfCreateTimerHandler(),
    [_createPeriodicTimer]: _ZoneFunctionOfCreatePeriodicTimerHandler(),
    [_print]: _ZoneFunctionOfPrintHandler(),
    [_fork]: _ZoneFunctionOfForkHandler(),
    [_handleUncaughtError]: _ZoneFunctionOfHandleUncaughtErrorHandler(),
    [_delegateCache]: async.ZoneDelegate,
    parent: async._Zone,
    [_map]: core.Map
  }),
  getters: () => ({
    [_delegate]: dart.definiteFunctionType(async.ZoneDelegate, []),
    errorZone: dart.definiteFunctionType(async.Zone, [])
  }),
  methods: () => ({
    runGuarded: dart.definiteFunctionType(R => [R, [dart.functionType(R, [])]]),
    runUnaryGuarded: dart.definiteFunctionType((R, T) => [R, [dart.functionType(R, [T]), T]]),
    runBinaryGuarded: dart.definiteFunctionType((R, T1, T2) => [R, [dart.functionType(R, [T1, T2]), T1, T2]]),
    bindCallback: dart.definiteFunctionType(R => [async.ZoneCallback$(R), [dart.functionType(R, [])], {runGuarded: core.bool}]),
    bindUnaryCallback: dart.definiteFunctionType((R, T) => [async.ZoneUnaryCallback$(R, T), [dart.functionType(R, [T])], {runGuarded: core.bool}]),
    bindBinaryCallback: dart.definiteFunctionType((R, T1, T2) => [async.ZoneBinaryCallback$(R, T1, T2), [dart.functionType(R, [T1, T2])], {runGuarded: core.bool}]),
    _get: dart.definiteFunctionType(dart.dynamic, [core.Object]),
    handleUncaughtError: dart.definiteFunctionType(R => [R, [dart.dynamic, core.StackTrace]]),
    fork: dart.definiteFunctionType(async.Zone, [], {specification: async.ZoneSpecification, zoneValues: core.Map}),
    run: dart.definiteFunctionType(R => [R, [dart.functionType(R, [])]]),
    runUnary: dart.definiteFunctionType((R, T) => [R, [dart.functionType(R, [T]), T]]),
    runBinary: dart.definiteFunctionType((R, T1, T2) => [R, [dart.functionType(R, [T1, T2]), T1, T2]]),
    registerCallback: dart.definiteFunctionType(R => [async.ZoneCallback$(R), [dart.functionType(R, [])]]),
    registerUnaryCallback: dart.definiteFunctionType((R, T) => [async.ZoneUnaryCallback$(R, T), [dart.functionType(R, [T])]]),
    registerBinaryCallback: dart.definiteFunctionType((R, T1, T2) => [async.ZoneBinaryCallback$(R, T1, T2), [dart.functionType(R, [T1, T2])]]),
    errorCallback: dart.definiteFunctionType(async.AsyncError, [core.Object, core.StackTrace]),
    scheduleMicrotask: dart.definiteFunctionType(dart.void, [VoidTovoid()]),
    createTimer: dart.definiteFunctionType(async.Timer, [core.Duration, VoidTovoid()]),
    createPeriodicTimer: dart.definiteFunctionType(async.Timer, [core.Duration, TimerTovoid()]),
    print: dart.definiteFunctionType(dart.void, [core.String])
  })
});
async._rootHandleUncaughtError = function(R) {
  return (self, parent, zone, error, stackTrace) => {
    async._schedulePriorityAsyncCallback(dart.fn(() => {
      if (error == null) error = new core.NullThrownError();
      if (stackTrace == null) dart.throw(error);
      async._rethrow(error, stackTrace);
    }, VoidTovoid()));
  };
};
dart.lazyFn(async._rootHandleUncaughtError, () => ZoneAndZoneDelegateAndZone__ToR());
async._rethrow = function(error, stackTrace) {
  error.stack = dart.toString(stackTrace);
  throw error;
};
dart.lazyFn(async._rethrow, () => ObjectAndStackTraceTovoid());
async._rootRun = function(R) {
  return (self, parent, zone, f) => {
    if (dart.equals(async.Zone._current, zone)) return f();
    let old = async.Zone._enter(zone);
    try {
      return f();
    } finally {
      async.Zone._leave(old);
    }
  };
};
dart.fn(async._rootRun, ZoneAndZoneDelegateAndZone__ToR());
async._rootRunUnary = function(R, T) {
  return (self, parent, zone, f, arg) => {
    if (dart.equals(async.Zone._current, zone)) return f(arg);
    let old = async.Zone._enter(zone);
    try {
      return f(arg);
    } finally {
      async.Zone._leave(old);
    }
  };
};
dart.fn(async._rootRunUnary, ZoneAndZoneDelegateAndZone__ToR());
async._rootRunBinary = function(R, T1, T2) {
  return (self, parent, zone, f, arg1, arg2) => {
    if (dart.equals(async.Zone._current, zone)) return f(arg1, arg2);
    let old = async.Zone._enter(zone);
    try {
      return f(arg1, arg2);
    } finally {
      async.Zone._leave(old);
    }
  };
};
dart.fn(async._rootRunBinary, ZoneAndZoneDelegateAndZone__ToR());
async._rootRegisterCallback = function(R) {
  return (self, parent, zone, f) => {
    return f;
  };
};
dart.fn(async._rootRegisterCallback, ZoneAndZoneDelegateAndZone__ToZoneCallbackOfR());
async._rootRegisterUnaryCallback = function(R, T) {
  return (self, parent, zone, f) => {
    return f;
  };
};
dart.fn(async._rootRegisterUnaryCallback, ZoneAndZoneDelegateAndZone__ToZoneUnaryCallbackOfR$T());
async._rootRegisterBinaryCallback = function(R, T1, T2) {
  return (self, parent, zone, f) => {
    return f;
  };
};
dart.fn(async._rootRegisterBinaryCallback, ZoneAndZoneDelegateAndZone__ToZoneBinaryCallbackOfR$T1$T2());
async._rootErrorCallback = function(self, parent, zone, error, stackTrace) {
  return null;
};
dart.lazyFn(async._rootErrorCallback, () => ZoneAndZoneDelegateAndZone__ToAsyncError());
async._rootScheduleMicrotask = function(self, parent, zone, f) {
  if (!core.identical(async._ROOT_ZONE, zone)) {
    let hasErrorHandler = !dart.test(async._ROOT_ZONE.inSameErrorZone(zone));
    f = zone.bindCallback(dart.dynamic)(f, {runGuarded: hasErrorHandler});
    zone = async._ROOT_ZONE;
  }
  async._scheduleAsyncCallback(f);
};
dart.fn(async._rootScheduleMicrotask, ZoneAndZoneDelegateAndZone__Tovoid());
async._rootCreateTimer = function(self, parent, zone, duration, callback) {
  if (!core.identical(async._ROOT_ZONE, zone)) {
    callback = zone.bindCallback(dart.dynamic)(callback);
  }
  return async.Timer._createTimer(duration, callback);
};
dart.lazyFn(async._rootCreateTimer, () => ZoneAndZoneDelegateAndZone__ToTimer());
async._rootCreatePeriodicTimer = function(self, parent, zone, duration, callback) {
  if (!core.identical(async._ROOT_ZONE, zone)) {
    callback = zone.bindUnaryCallback(dart.dynamic, async.Timer)(callback);
  }
  return async.Timer._createPeriodicTimer(duration, callback);
};
dart.lazyFn(async._rootCreatePeriodicTimer, () => ZoneAndZoneDelegateAndZone__ToTimer());
async._rootPrint = function(self, parent, zone, line) {
  _internal.printToConsole(line);
};
dart.lazyFn(async._rootPrint, () => ZoneAndZoneDelegateAndZone__Tovoid());
async._printToZone = function(line) {
  async.Zone.current.print(line);
};
dart.lazyFn(async._printToZone, () => StringTovoid());
let const;
async._rootFork = function(self, parent, zone, specification, zoneValues) {
  _internal.printToZone = async._printToZone;
  if (specification == null) {
    specification = const || (const = dart.const(async.ZoneSpecification.new()));
  } else if (!async._ZoneSpecification.is(specification)) {
    dart.throw(new core.ArgumentError("ZoneSpecifications must be instantiated" + " with the provided constructor."));
  }
  let valueMap = null;
  if (zoneValues == null) {
    if (async._Zone.is(zone)) {
      valueMap = zone[_map];
    } else {
      valueMap = collection.HashMap.new();
    }
  } else {
    valueMap = collection.HashMap.from(zoneValues);
  }
  return new async._CustomZone(async._Zone._check(zone), specification, valueMap);
};
dart.lazyFn(async._rootFork, () => ZoneAndZoneDelegateAndZone__ToZone());
let const;
let const;
let const;
let const;
let const;
let const;
let const;
let const;
let const;
let const;
let const;
let const;
let const;
async._RootZone = class _RootZone extends async._Zone {
  new() {
    super.new();
  }
  get [_run]() {
    return const || (const = dart.const(new (_ZoneFunctionOfRunHandler())(async._ROOT_ZONE, dart.gbind(async._rootRun, dart.dynamic))));
  }
  get [_runUnary]() {
    return const || (const = dart.const(new (_ZoneFunctionOfRunUnaryHandler())(async._ROOT_ZONE, dart.gbind(async._rootRunUnary, dart.dynamic, dart.dynamic))));
  }
  get [_runBinary]() {
    return const || (const = dart.const(new (_ZoneFunctionOfRunBinaryHandler())(async._ROOT_ZONE, dart.gbind(async._rootRunBinary, dart.dynamic, dart.dynamic, dart.dynamic))));
  }
  get [_registerCallback]() {
    return const || (const = dart.const(new (_ZoneFunctionOfRegisterCallbackHandler())(async._ROOT_ZONE, dart.gbind(async._rootRegisterCallback, dart.dynamic))));
  }
  get [_registerUnaryCallback]() {
    return const || (const = dart.const(new (_ZoneFunctionOfRegisterUnaryCallbackHandler())(async._ROOT_ZONE, dart.gbind(async._rootRegisterUnaryCallback, dart.dynamic, dart.dynamic))));
  }
  get [_registerBinaryCallback]() {
    return const || (const = dart.const(new (_ZoneFunctionOfRegisterBinaryCallbackHandler())(async._ROOT_ZONE, dart.gbind(async._rootRegisterBinaryCallback, dart.dynamic, dart.dynamic, dart.dynamic))));
  }
  get [_errorCallback]() {
    return const || (const = dart.const(new (_ZoneFunctionOfErrorCallbackHandler())(async._ROOT_ZONE, async._rootErrorCallback)));
  }
  get [_scheduleMicrotask]() {
    return const || (const = dart.const(new (_ZoneFunctionOfScheduleMicrotaskHandler())(async._ROOT_ZONE, async._rootScheduleMicrotask)));
  }
  get [_createTimer]() {
    return const || (const = dart.const(new (_ZoneFunctionOfCreateTimerHandler())(async._ROOT_ZONE, async._rootCreateTimer)));
  }
  get [_createPeriodicTimer]() {
    return const || (const = dart.const(new (_ZoneFunctionOfCreatePeriodicTimerHandler())(async._ROOT_ZONE, async._rootCreatePeriodicTimer)));
  }
  get [_print]() {
    return const || (const = dart.const(new (_ZoneFunctionOfPrintHandler())(async._ROOT_ZONE, async._rootPrint)));
  }
  get [_fork]() {
    return const || (const = dart.const(new (_ZoneFunctionOfForkHandler())(async._ROOT_ZONE, async._rootFork)));
  }
  get [_handleUncaughtError]() {
    return const || (const = dart.const(new (_ZoneFunctionOfHandleUncaughtErrorHandler())(async._ROOT_ZONE, dart.gbind(async._rootHandleUncaughtError, dart.dynamic))));
  }
  get parent() {
    return null;
  }
  get [_map]() {
    return async._RootZone._rootMap;
  }
  get [_delegate]() {
    if (async._RootZone._rootDelegate != null) return async._RootZone._rootDelegate;
    return async._RootZone._rootDelegate = new async._ZoneDelegate(this);
  }
  get errorZone() {
    return this;
  }
  runGuarded(R) {
    return f => {
      try {
        if (core.identical(async._ROOT_ZONE, async.Zone._current)) {
          return f();
        }
        return async._rootRun(R)(null, null, this, f);
      } catch (e) {
        let s = dart.stackTrace(e);
        return this.handleUncaughtError(R)(e, s);
      }

    };
  }
  runUnaryGuarded(R, T) {
    return (f, arg) => {
      try {
        if (core.identical(async._ROOT_ZONE, async.Zone._current)) {
          return f(arg);
        }
        return async._rootRunUnary(R, T)(null, null, this, f, arg);
      } catch (e) {
        let s = dart.stackTrace(e);
        return this.handleUncaughtError(R)(e, s);
      }

    };
  }
  runBinaryGuarded(R, T1, T2) {
    return (f, arg1, arg2) => {
      try {
        if (core.identical(async._ROOT_ZONE, async.Zone._current)) {
          return f(arg1, arg2);
        }
        return async._rootRunBinary(R, T1, T2)(null, null, this, f, arg1, arg2);
      } catch (e) {
        let s = dart.stackTrace(e);
        return this.handleUncaughtError(R)(e, s);
      }

    };
  }
  bindCallback(R) {
    return (f, opts) => {
      let runGuarded = opts && 'runGuarded' in opts ? opts.runGuarded : true;
      if (dart.test(runGuarded)) {
        return dart.fn(() => this.runGuarded(R)(f), dart.definiteFunctionType(R, []));
      } else {
        return dart.fn(() => this.run(R)(f), dart.definiteFunctionType(R, []));
      }
    };
  }
  bindUnaryCallback(R, T) {
    return (f, opts) => {
      let runGuarded = opts && 'runGuarded' in opts ? opts.runGuarded : true;
      if (dart.test(runGuarded)) {
        return dart.fn(arg => this.runUnaryGuarded(R, T)(f, arg), dart.definiteFunctionType(R, [T]));
      } else {
        return dart.fn(arg => this.runUnary(R, T)(f, arg), dart.definiteFunctionType(R, [T]));
      }
    };
  }
  bindBinaryCallback(R, T1, T2) {
    return (f, opts) => {
      let runGuarded = opts && 'runGuarded' in opts ? opts.runGuarded : true;
      if (dart.test(runGuarded)) {
        return dart.fn((arg1, arg2) => this.runBinaryGuarded(R, T1, T2)(f, arg1, arg2), dart.definiteFunctionType(R, [T1, T2]));
      } else {
        return dart.fn((arg1, arg2) => this.runBinary(R, T1, T2)(f, arg1, arg2), dart.definiteFunctionType(R, [T1, T2]));
      }
    };
  }
  _get(key) {
    return null;
  }
  handleUncaughtError(R) {
    return (error, stackTrace) => {
      return async._rootHandleUncaughtError(R)(null, null, this, error, stackTrace);
    };
  }
  fork(opts) {
    let specification = opts && 'specification' in opts ? opts.specification : null;
    let zoneValues = opts && 'zoneValues' in opts ? opts.zoneValues : null;
    return async._rootFork(null, null, this, specification, zoneValues);
  }
  run(R) {
    return f => {
      if (core.identical(async.Zone._current, async._ROOT_ZONE)) return f();
      return async._rootRun(R)(null, null, this, f);
    };
  }
  runUnary(R, T) {
    return (f, arg) => {
      if (core.identical(async.Zone._current, async._ROOT_ZONE)) return f(arg);
      return async._rootRunUnary(R, T)(null, null, this, f, arg);
    };
  }
  runBinary(R, T1, T2) {
    return (f, arg1, arg2) => {
      if (core.identical(async.Zone._current, async._ROOT_ZONE)) return f(arg1, arg2);
      return async._rootRunBinary(R, T1, T2)(null, null, this, f, arg1, arg2);
    };
  }
  registerCallback(R) {
    return f => {
      return f;
    };
  }
  registerUnaryCallback(R, T) {
    return f => {
      return f;
    };
  }
  registerBinaryCallback(R, T1, T2) {
    return f => {
      return f;
    };
  }
  errorCallback(error, stackTrace) {
    return null;
  }
  scheduleMicrotask(f) {
    async._rootScheduleMicrotask(null, null, this, f);
  }
  createTimer(duration, f) {
    return async.Timer._createTimer(duration, f);
  }
  createPeriodicTimer(duration, f) {
    return async.Timer._createPeriodicTimer(duration, f);
  }
  print(line) {
    _internal.printToConsole(line);
  }
};
dart.setSignature(async._RootZone, {
  constructors: () => ({new: dart.definiteFunctionType(async._RootZone, [])}),
  getters: () => ({
    [_run]: dart.definiteFunctionType(async._ZoneFunction$(async.RunHandler), []),
    [_runUnary]: dart.definiteFunctionType(async._ZoneFunction$(async.RunUnaryHandler), []),
    [_runBinary]: dart.definiteFunctionType(async._ZoneFunction$(async.RunBinaryHandler), []),
    [_registerCallback]: dart.definiteFunctionType(async._ZoneFunction$(async.RegisterCallbackHandler), []),
    [_registerUnaryCallback]: dart.definiteFunctionType(async._ZoneFunction$(async.RegisterUnaryCallbackHandler), []),
    [_registerBinaryCallback]: dart.definiteFunctionType(async._ZoneFunction$(async.RegisterBinaryCallbackHandler), []),
    [_errorCallback]: dart.definiteFunctionType(async._ZoneFunction$(async.ErrorCallbackHandler), []),
    [_scheduleMicrotask]: dart.definiteFunctionType(async._ZoneFunction$(async.ScheduleMicrotaskHandler), []),
    [_createTimer]: dart.definiteFunctionType(async._ZoneFunction$(async.CreateTimerHandler), []),
    [_createPeriodicTimer]: dart.definiteFunctionType(async._ZoneFunction$(async.CreatePeriodicTimerHandler), []),
    [_print]: dart.definiteFunctionType(async._ZoneFunction$(async.PrintHandler), []),
    [_fork]: dart.definiteFunctionType(async._ZoneFunction$(async.ForkHandler), []),
    [_handleUncaughtError]: dart.definiteFunctionType(async._ZoneFunction$(async.HandleUncaughtErrorHandler), []),
    parent: dart.definiteFunctionType(async._Zone, []),
    [_map]: dart.definiteFunctionType(core.Map, []),
    [_delegate]: dart.definiteFunctionType(async.ZoneDelegate, []),
    errorZone: dart.definiteFunctionType(async.Zone, [])
  }),
  methods: () => ({
    runGuarded: dart.definiteFunctionType(R => [R, [dart.functionType(R, [])]]),
    runUnaryGuarded: dart.definiteFunctionType((R, T) => [R, [dart.functionType(R, [T]), T]]),
    runBinaryGuarded: dart.definiteFunctionType((R, T1, T2) => [R, [dart.functionType(R, [T1, T2]), T1, T2]]),
    bindCallback: dart.definiteFunctionType(R => [async.ZoneCallback$(R), [dart.functionType(R, [])], {runGuarded: core.bool}]),
    bindUnaryCallback: dart.definiteFunctionType((R, T) => [async.ZoneUnaryCallback$(R, T), [dart.functionType(R, [T])], {runGuarded: core.bool}]),
    bindBinaryCallback: dart.definiteFunctionType((R, T1, T2) => [async.ZoneBinaryCallback$(R, T1, T2), [dart.functionType(R, [T1, T2])], {runGuarded: core.bool}]),
    _get: dart.definiteFunctionType(dart.dynamic, [core.Object]),
    handleUncaughtError: dart.definiteFunctionType(R => [R, [dart.dynamic, core.StackTrace]]),
    fork: dart.definiteFunctionType(async.Zone, [], {specification: async.ZoneSpecification, zoneValues: core.Map}),
    run: dart.definiteFunctionType(R => [R, [dart.functionType(R, [])]]),
    runUnary: dart.definiteFunctionType((R, T) => [R, [dart.functionType(R, [T]), T]]),
    runBinary: dart.definiteFunctionType((R, T1, T2) => [R, [dart.functionType(R, [T1, T2]), T1, T2]]),
    registerCallback: dart.definiteFunctionType(R => [async.ZoneCallback$(R), [dart.functionType(R, [])]]),
    registerUnaryCallback: dart.definiteFunctionType((R, T) => [async.ZoneUnaryCallback$(R, T), [dart.functionType(R, [T])]]),
    registerBinaryCallback: dart.definiteFunctionType((R, T1, T2) => [async.ZoneBinaryCallback$(R, T1, T2), [dart.functionType(R, [T1, T2])]]),
    errorCallback: dart.definiteFunctionType(async.AsyncError, [core.Object, core.StackTrace]),
    scheduleMicrotask: dart.definiteFunctionType(dart.void, [VoidTovoid()]),
    createTimer: dart.definiteFunctionType(async.Timer, [core.Duration, VoidTovoid()]),
    createPeriodicTimer: dart.definiteFunctionType(async.Timer, [core.Duration, TimerTovoid()]),
    print: dart.definiteFunctionType(dart.void, [core.String])
  }),
  sfields: () => ({
    _rootMap: core.Map,
    _rootDelegate: async.ZoneDelegate
  })
});
async._RootZone._rootDelegate = null;
dart.defineLazy(async._RootZone, {
  get _rootMap() {
    return collection.HashMap.new();
  },
  set _rootMap(_) {}
});
async._ROOT_ZONE = dart.const(new async._RootZone());
async.runZoned = function(R) {
  return (body, opts) => {
    let zoneValues = opts && 'zoneValues' in opts ? opts.zoneValues : null;
    let zoneSpecification = opts && 'zoneSpecification' in opts ? opts.zoneSpecification : null;
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let errorHandler = null;
    if (onError != null) {
      errorHandler = dart.fn((self, parent, zone, error, stackTrace) => {
        try {
          if (ZoneBinaryCallbackOfdynamic$dynamic$StackTrace().is(onError)) {
            return R.as(self.parent.runBinary(dart.dynamic, dart.dynamic, core.StackTrace)(onError, error, stackTrace));
          }
          return self.parent.runUnary(dart.dynamic, dart.dynamic)(dynamicTodynamic()._check(onError), error);
        } catch (e) {
          let s = dart.stackTrace(e);
          if (core.identical(e, error)) {
            return parent.handleUncaughtError(dart.dynamic)(zone, error, stackTrace);
          } else {
            return parent.handleUncaughtError(dart.dynamic)(zone, e, s);
          }
        }

      }, ZoneAndZoneDelegateAndZone__Todynamic());
    }
    if (zoneSpecification == null) {
      zoneSpecification = async.ZoneSpecification.new({handleUncaughtError: errorHandler});
    } else if (errorHandler != null) {
      zoneSpecification = async.ZoneSpecification.from(zoneSpecification, {handleUncaughtError: errorHandler});
    }
    let zone = async.Zone.current.fork({specification: zoneSpecification, zoneValues: zoneValues});
    if (onError != null) {
      return zone.runGuarded(R)(body);
    } else {
      return zone.run(R)(body);
    }
  };
};
dart.lazyFn(async.runZoned, () => Fn__ToR());
collection._USE_ES6_MAPS = true;
const _length = Symbol('_length');
const _strings = Symbol('_strings');
const _nums = Symbol('_nums');
const _rest = Symbol('_rest');
const _keys = Symbol('_keys');
const _containsKey = Symbol('_containsKey');
const _getBucket = Symbol('_getBucket');
const _findBucketIndex = Symbol('_findBucketIndex');
const _computeKeys = Symbol('_computeKeys');
const _get = Symbol('_get');
const _addHashTableEntry = Symbol('_addHashTableEntry');
const _set = Symbol('_set');
const _computeHashCode = Symbol('_computeHashCode');
const _removeHashTableEntry = Symbol('_removeHashTableEntry');
const _remove = Symbol('_remove');
collection._HashMap$ = dart.generic((K, V) => {
  let _HashMapKeyIterableOfK = () => (_HashMapKeyIterableOfK = dart.constFn(collection._HashMapKeyIterable$(K)))();
  let MappedIterableOfK$V = () => (MappedIterableOfK$V = dart.constFn(_internal.MappedIterable$(K, V)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let KAndVTovoid = () => (KAndVTovoid = dart.constFn(dart.functionType(dart.void, [K, V])))();
  let ListOfK = () => (ListOfK = dart.constFn(core.List$(K)))();
  let HashMapOfK$V = () => (HashMapOfK$V = dart.constFn(collection.HashMap$(K, V)))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.functionType(V, [])))();
  let KToV = () => (KToV = dart.constFn(dart.definiteFunctionType(V, [K])))();
  let KTobool = () => (KTobool = dart.constFn(dart.definiteFunctionType(core.bool, [K])))();
  let KAndVTovoid$ = () => (KAndVTovoid$ = dart.constFn(dart.definiteFunctionType(dart.void, [K, V])))();
  class _HashMap extends core.Object {
    new() {
      this[_length] = 0;
      this[_strings] = null;
      this[_nums] = null;
      this[_rest] = null;
      this[_keys] = null;
    }
    get length() {
      return this[_length];
    }
    get isEmpty() {
      return this[_length] == 0;
    }
    get isNotEmpty() {
      return !dart.test(this.isEmpty);
    }
    get keys() {
      return new (_HashMapKeyIterableOfK())(this);
    }
    get values() {
      return MappedIterableOfK$V().new(this.keys, dart.fn(each => this._get(each), KToV()));
    }
    containsKey(key) {
      if (dart.test(collection._HashMap._isStringKey(key))) {
        let strings = this[_strings];
        return strings == null ? false : collection._HashMap._hasTableEntry(strings, key);
      } else if (dart.test(collection._HashMap._isNumericKey(key))) {
        let nums = this[_nums];
        return nums == null ? false : collection._HashMap._hasTableEntry(nums, key);
      } else {
        return this[_containsKey](key);
      }
    }
    [_containsKey](key) {
      let rest = this[_rest];
      if (rest == null) return false;
      let bucket = this[_getBucket](rest, key);
      return dart.notNull(this[_findBucketIndex](bucket, key)) >= 0;
    }
    containsValue(value) {
      return this[_computeKeys]()[dartx.any](dart.fn(each => dart.equals(this._get(each), value), KTobool()));
    }
    addAll(other) {
      MapOfK$V()._check(other);
      other[dartx.forEach](dart.fn((key, value) => {
        this._set(key, value);
      }, KAndVTovoid$()));
    }
    _get(key) {
      if (dart.test(collection._HashMap._isStringKey(key))) {
        let strings = this[_strings];
        return V._check(strings == null ? null : collection._HashMap._getTableEntry(strings, key));
      } else if (dart.test(collection._HashMap._isNumericKey(key))) {
        let nums = this[_nums];
        return V._check(nums == null ? null : collection._HashMap._getTableEntry(nums, key));
      } else {
        return this[_get](key);
      }
    }
    [_get](key) {
      let rest = this[_rest];
      if (rest == null) return null;
      let bucket = this[_getBucket](rest, key);
      let index = this[_findBucketIndex](bucket, key);
      return V._check(dart.notNull(index) < 0 ? null : bucket[dart.notNull(index) + 1]);
    }
    _set(key, value) {
      K._check(key);
      V._check(value);
      if (dart.test(collection._HashMap._isStringKey(key))) {
        let strings = this[_strings];
        if (strings == null) this[_strings] = strings = collection._HashMap._newHashTable();
        this[_addHashTableEntry](strings, key, value);
      } else if (dart.test(collection._HashMap._isNumericKey(key))) {
        let nums = this[_nums];
        if (nums == null) this[_nums] = nums = collection._HashMap._newHashTable();
        this[_addHashTableEntry](nums, key, value);
      } else {
        this[_set](key, value);
      }
      return value;
    }
    [_set](key, value) {
      K._check(key);
      V._check(value);
      let rest = this[_rest];
      if (rest == null) this[_rest] = rest = collection._HashMap._newHashTable();
      let hash = this[_computeHashCode](key);
      let bucket = rest[hash];
      if (bucket == null) {
        collection._HashMap._setTableEntry(rest, hash, [key, value]);
        this[_length] = dart.notNull(this[_length]) + 1;
        this[_keys] = null;
      } else {
        let index = this[_findBucketIndex](bucket, key);
        if (dart.notNull(index) >= 0) {
          bucket[dart.notNull(index) + 1] = value;
        } else {
          bucket.push(key, value);
          this[_length] = dart.notNull(this[_length]) + 1;
          this[_keys] = null;
        }
      }
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      if (dart.test(this.containsKey(key))) return this._get(key);
      let value = ifAbsent();
      this._set(key, value);
      return value;
    }
    remove(key) {
      if (dart.test(collection._HashMap._isStringKey(key))) {
        return this[_removeHashTableEntry](this[_strings], key);
      } else if (dart.test(collection._HashMap._isNumericKey(key))) {
        return this[_removeHashTableEntry](this[_nums], key);
      } else {
        return this[_remove](key);
      }
    }
    [_remove](key) {
      let rest = this[_rest];
      if (rest == null) return null;
      let bucket = this[_getBucket](rest, key);
      let index = this[_findBucketIndex](bucket, key);
      if (dart.notNull(index) < 0) return null;
      this[_length] = dart.notNull(this[_length]) - 1;
      this[_keys] = null;
      return bucket.splice(index, 2)[1];
    }
    clear() {
      if (dart.notNull(this[_length]) > 0) {
        this[_strings] = this[_nums] = this[_rest] = this[_keys] = null;
        this[_length] = 0;
      }
    }
    forEach(action) {
      let keys = this[_computeKeys]();
      for (let i = 0, length = keys[dartx.length]; i < dart.notNull(length); i++) {
        let key = keys[i];
        action(K._check(key), this._get(key));
        if (keys !== this[_keys]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
    }
    [_computeKeys]() {
      if (this[_keys] != null) return this[_keys];
      let result = ListOfK().new(this[_length]);
      let index = 0;
      let strings = this[_strings];
      if (strings != null) {
        let names = Object.getOwnPropertyNames(strings);
        let entries = names.length;
        for (let i = 0; i < entries; i++) {
          let key = names[i];
          result[index] = key;
          index++;
        }
      }
      let nums = this[_nums];
      if (nums != null) {
        let names = Object.getOwnPropertyNames(nums);
        let entries = names.length;
        for (let i = 0; i < entries; i++) {
          let key = +names[i];
          result[index] = key;
          index++;
        }
      }
      let rest = this[_rest];
      if (rest != null) {
        let names = Object.getOwnPropertyNames(rest);
        let entries = names.length;
        for (let i = 0; i < entries; i++) {
          let key = names[i];
          let bucket = rest[key];
          let length = bucket.length;
          for (let i = 0; i < length; i = i + 2) {
            let key = bucket[i];
            result[index] = key;
            index++;
          }
        }
      }
      dart.assert(index == this[_length]);
      return this[_keys] = result;
    }
    [_addHashTableEntry](table, key, value) {
      K._check(key);
      V._check(value);
      if (!dart.test(collection._HashMap._hasTableEntry(table, key))) {
        this[_length] = dart.notNull(this[_length]) + 1;
        this[_keys] = null;
      }
      collection._HashMap._setTableEntry(table, key, value);
    }
    [_removeHashTableEntry](table, key) {
      if (table != null && dart.test(collection._HashMap._hasTableEntry(table, key))) {
        let value = V._check(collection._HashMap._getTableEntry(table, key));
        collection._HashMap._deleteTableEntry(table, key);
        this[_length] = dart.notNull(this[_length]) - 1;
        this[_keys] = null;
        return value;
      } else {
        return null;
      }
    }
    static _isStringKey(key) {
      return typeof key == 'string' && key != '__proto__';
    }
    static _isNumericKey(key) {
      return typeof key == 'number' && (key & 0x3ffffff) === key;
    }
    [_computeHashCode](key) {
      return dart.hashCode(key) & 0x3ffffff;
    }
    static _hasTableEntry(table, key) {
      let entry = table[key];
      return entry != null;
    }
    static _getTableEntry(table, key) {
      let entry = table[key];
      return entry === table ? null : entry;
    }
    static _setTableEntry(table, key, value) {
      if (value == null) {
        table[key] = table;
      } else {
        table[key] = value;
      }
    }
    static _deleteTableEntry(table, key) {
      delete table[key];
    }
    [_getBucket](table, key) {
      let hash = this[_computeHashCode](key);
      return table[hash];
    }
    [_findBucketIndex](bucket, key) {
      if (bucket == null) return -1;
      let length = bucket.length;
      for (let i = 0; i < length; i = i + 2) {
        if (dart.equals(bucket[i], key)) return i;
      }
      return -1;
    }
    static _newHashTable() {
      let table = Object.create(null);
      let temporaryKey = '<non-identifier-key>';
      collection._HashMap._setTableEntry(table, temporaryKey, table);
      collection._HashMap._deleteTableEntry(table, temporaryKey);
      return table;
    }
  }
  dart.addTypeTests(_HashMap);
  _HashMap[dart.implements] = () => [HashMapOfK$V()];
  dart.setSignature(_HashMap, {
    constructors: () => ({new: dart.definiteFunctionType(collection._HashMap$(K, V), [])}),
    fields: () => ({
      [_length]: core.int,
      [_strings]: dart.dynamic,
      [_nums]: dart.dynamic,
      [_rest]: dart.dynamic,
      [_keys]: ListOfK()
    }),
    getters: () => ({
      length: dart.definiteFunctionType(core.int, []),
      isEmpty: dart.definiteFunctionType(core.bool, []),
      isNotEmpty: dart.definiteFunctionType(core.bool, []),
      keys: dart.definiteFunctionType(core.Iterable$(K), []),
      values: dart.definiteFunctionType(core.Iterable$(V), [])
    }),
    methods: () => ({
      containsKey: dart.definiteFunctionType(core.bool, [core.Object]),
      [_containsKey]: dart.definiteFunctionType(core.bool, [core.Object]),
      containsValue: dart.definiteFunctionType(core.bool, [core.Object]),
      addAll: dart.definiteFunctionType(dart.void, [MapOfK$V()]),
      _get: dart.definiteFunctionType(V, [core.Object]),
      [_get]: dart.definiteFunctionType(V, [core.Object]),
      _set: dart.definiteFunctionType(dart.void, [K, V]),
      [_set]: dart.definiteFunctionType(dart.void, [K, V]),
      putIfAbsent: dart.definiteFunctionType(V, [K, VoidToV()]),
      remove: dart.definiteFunctionType(V, [core.Object]),
      [_remove]: dart.definiteFunctionType(V, [core.Object]),
      clear: dart.definiteFunctionType(dart.void, []),
      forEach: dart.definiteFunctionType(dart.void, [KAndVTovoid()]),
      [_computeKeys]: dart.definiteFunctionType(core.List$(K), []),
      [_addHashTableEntry]: dart.definiteFunctionType(dart.void, [dart.dynamic, K, V]),
      [_removeHashTableEntry]: dart.definiteFunctionType(V, [dart.dynamic, core.Object]),
      [_computeHashCode]: dart.definiteFunctionType(core.int, [dart.dynamic]),
      [_getBucket]: dart.definiteFunctionType(core.List, [dart.dynamic, dart.dynamic]),
      [_findBucketIndex]: dart.definiteFunctionType(core.int, [dart.dynamic, core.Object])
    }),
    statics: () => ({
      _isStringKey: dart.definiteFunctionType(core.bool, [dart.dynamic]),
      _isNumericKey: dart.definiteFunctionType(core.bool, [dart.dynamic]),
      _hasTableEntry: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
      _getTableEntry: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic]),
      _setTableEntry: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
      _deleteTableEntry: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic]),
      _newHashTable: dart.definiteFunctionType(dart.dynamic, [])
    }),
    names: ['_isStringKey', '_isNumericKey', '_hasTableEntry', '_getTableEntry', '_setTableEntry', '_deleteTableEntry', '_newHashTable']
  });
  dart.defineExtensionMembers(_HashMap, [
    'containsKey',
    'containsValue',
    'addAll',
    '_get',
    '_set',
    'putIfAbsent',
    'remove',
    'clear',
    'forEach',
    'length',
    'isEmpty',
    'isNotEmpty',
    'keys',
    'values'
  ]);
  return _HashMap;
});
collection._HashMap = _HashMap();
collection._IdentityHashMap$ = dart.generic((K, V) => {
  class _IdentityHashMap extends collection._HashMap$(K, V) {
    new() {
      super.new();
    }
    [_computeHashCode](key) {
      return core.identityHashCode(key) & 0x3ffffff;
    }
    [_findBucketIndex](bucket, key) {
      if (bucket == null) return -1;
      let length = bucket.length;
      for (let i = 0; i < length; i = i + 2) {
        if (core.identical(bucket[i], key)) return i;
      }
      return -1;
    }
  }
  return _IdentityHashMap;
});
collection._IdentityHashMap = _IdentityHashMap();
const _equals = Symbol('_equals');
const _hashCode = Symbol('_hashCode');
const _validKey = Symbol('_validKey');
collection._CustomHashMap$ = dart.generic((K, V) => {
  let _EqualityOfK = () => (_EqualityOfK = dart.constFn(collection._Equality$(K)))();
  let _HasherOfK = () => (_HasherOfK = dart.constFn(collection._Hasher$(K)))();
  class _CustomHashMap extends collection._HashMap$(K, V) {
    new(equals, hashCode, validKey) {
      this[_equals] = equals;
      this[_hashCode] = hashCode;
      this[_validKey] = validKey != null ? validKey : dart.fn(v => K.is(v), ObjectTobool());
      super.new();
    }
    _get(key) {
      if (!dart.test(this[_validKey](key))) return null;
      return super[_get](key);
    }
    _set(key, value) {
      K._check(key);
      V._check(value);
      super[_set](key, value);
      return value;
    }
    containsKey(key) {
      if (!dart.test(this[_validKey](key))) return false;
      return super[_containsKey](key);
    }
    remove(key) {
      if (!dart.test(this[_validKey](key))) return null;
      return super[_remove](key);
    }
    [_computeHashCode](key) {
      return this[_hashCode](K._check(key)) & 0x3ffffff;
    }
    [_findBucketIndex](bucket, key) {
      if (bucket == null) return -1;
      let length = bucket.length;
      for (let i = 0; i < length; i = i + 2) {
        if (dart.test(this[_equals](bucket[i], K._check(key)))) return i;
      }
      return -1;
    }
    toString() {
      return collection.Maps.mapToString(this);
    }
  }
  dart.setSignature(_CustomHashMap, {
    constructors: () => ({new: dart.definiteFunctionType(collection._CustomHashMap$(K, V), [_EqualityOfK(), _HasherOfK(), _PredicateOfObject()])}),
    fields: () => ({
      [_equals]: _EqualityOfK(),
      [_hashCode]: _HasherOfK(),
      [_validKey]: _PredicateOfObject()
    }),
    methods: () => ({
      _get: dart.definiteFunctionType(V, [core.Object]),
      _set: dart.definiteFunctionType(dart.void, [K, V]),
      remove: dart.definiteFunctionType(V, [core.Object])
    })
  });
  dart.defineExtensionMembers(_CustomHashMap, ['_get', '_set', 'containsKey', 'remove']);
  return _CustomHashMap;
});
collection._CustomHashMap = _CustomHashMap();
const _map = Symbol('_map');
collection._HashMapKeyIterable$ = dart.generic(E => {
  let _HashMapKeyIteratorOfE = () => (_HashMapKeyIteratorOfE = dart.constFn(collection._HashMapKeyIterator$(E)))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  let _HashMapOfE$dynamic = () => (_HashMapOfE$dynamic = dart.constFn(collection._HashMap$(E, dart.dynamic)))();
  class _HashMapKeyIterable extends core.Iterable$(E) {
    new(map) {
      this[_map] = map;
      super.new();
    }
    get length() {
      return this[_map][_length];
    }
    get isEmpty() {
      return this[_map][_length] == 0;
    }
    get iterator() {
      return new (_HashMapKeyIteratorOfE())(this[_map], this[_map][_computeKeys]());
    }
    contains(element) {
      return this[_map].containsKey(element);
    }
    forEach(f) {
      let keys = this[_map][_computeKeys]();
      for (let i = 0, length = keys.length; i < length; i++) {
        f(keys[i]);
        if (keys !== this[_map][_keys]) {
          dart.throw(new core.ConcurrentModificationError(this[_map]));
        }
      }
    }
  }
  _HashMapKeyIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(_HashMapKeyIterable, {
    constructors: () => ({new: dart.definiteFunctionType(collection._HashMapKeyIterable$(E), [_HashMapOfE$dynamic()])}),
    fields: () => ({[_map]: _HashMapOfE$dynamic()}),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(E), [])}),
    methods: () => ({forEach: dart.definiteFunctionType(dart.void, [ETovoid()])})
  });
  dart.defineExtensionMembers(_HashMapKeyIterable, [
    'contains',
    'forEach',
    'length',
    'isEmpty',
    'iterator'
  ]);
  return _HashMapKeyIterable;
});
collection._HashMapKeyIterable = _HashMapKeyIterable();
const _offset = Symbol('_offset');
const _current = Symbol('_current');
collection._HashMapKeyIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let _HashMapOfE$dynamic = () => (_HashMapOfE$dynamic = dart.constFn(collection._HashMap$(E, dart.dynamic)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  class _HashMapKeyIterator extends core.Object {
    new(map, keys) {
      this[_map] = map;
      this[_keys] = keys;
      this[_offset] = 0;
      this[_current] = null;
    }
    get current() {
      return this[_current];
    }
    moveNext() {
      let keys = this[_keys];
      let offset = this[_offset];
      if (keys !== this[_map][_keys]) {
        dart.throw(new core.ConcurrentModificationError(this[_map]));
      } else if (dart.notNull(offset) >= keys.length) {
        this[_current] = null;
        return false;
      } else {
        this[_current] = keys[offset];
        this[_offset] = dart.notNull(offset) + 1;
        return true;
      }
    }
  }
  dart.addTypeTests(_HashMapKeyIterator);
  _HashMapKeyIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(_HashMapKeyIterator, {
    constructors: () => ({new: dart.definiteFunctionType(collection._HashMapKeyIterator$(E), [_HashMapOfE$dynamic(), ListOfE()])}),
    fields: () => ({
      [_map]: _HashMapOfE$dynamic(),
      [_keys]: ListOfE(),
      [_offset]: core.int,
      [_current]: E
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return _HashMapKeyIterator;
});
collection._HashMapKeyIterator = _HashMapKeyIterator();
collection._LinkedIdentityHashMap$ = dart.generic((K, V) => {
  let _Es6LinkedIdentityHashMapOfK$V = () => (_Es6LinkedIdentityHashMapOfK$V = dart.constFn(collection._Es6LinkedIdentityHashMap$(K, V)))();
  let _LinkedIdentityHashMapOfK$V = () => (_LinkedIdentityHashMapOfK$V = dart.constFn(collection._LinkedIdentityHashMap$(K, V)))();
  class _LinkedIdentityHashMap extends _js_helper.JsLinkedHashMap$(K, V) {
    static get _supportsEs6Maps() {
      return true;
    }
    static es6() {
      return collection._USE_ES6_MAPS && dart.test(collection._LinkedIdentityHashMap._supportsEs6Maps) ? new (_Es6LinkedIdentityHashMapOfK$V())() : new (_LinkedIdentityHashMapOfK$V())();
    }
    new() {
      super.new();
    }
    internalComputeHashCode(key) {
      return core.identityHashCode(key) & 0x3ffffff;
    }
    internalFindBucketIndex(bucket, key) {
      if (bucket == null) return -1;
      let length = bucket.length;
      for (let i = 0; i < length; i++) {
        let cell = bucket[i];
        if (core.identical(cell.hashMapCellKey, key)) return i;
      }
      return -1;
    }
  }
  dart.setSignature(_LinkedIdentityHashMap, {
    constructors: () => ({
      es6: dart.definiteFunctionType(collection._LinkedIdentityHashMap$(K, V), []),
      new: dart.definiteFunctionType(collection._LinkedIdentityHashMap$(K, V), [])
    }),
    sgetters: () => ({_supportsEs6Maps: dart.definiteFunctionType(core.bool, [])})
  });
  return _LinkedIdentityHashMap;
});
collection._LinkedIdentityHashMap = _LinkedIdentityHashMap();
const _modifications = Symbol('_modifications');
const _modified = Symbol('_modified');
collection._Es6LinkedIdentityHashMap$ = dart.generic((K, V) => {
  let _Es6MapIterableOfK = () => (_Es6MapIterableOfK = dart.constFn(collection._Es6MapIterable$(K)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let KAndVTovoid = () => (KAndVTovoid = dart.constFn(dart.functionType(dart.void, [K, V])))();
  let InternalMapOfK$V = () => (InternalMapOfK$V = dart.constFn(_js_helper.InternalMap$(K, V)))();
  let _Es6MapIterableOfV = () => (_Es6MapIterableOfV = dart.constFn(collection._Es6MapIterable$(V)))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.functionType(V, [])))();
  let KAndVTovoid$ = () => (KAndVTovoid$ = dart.constFn(dart.definiteFunctionType(dart.void, [K, V])))();
  let VTobool = () => (VTobool = dart.constFn(dart.definiteFunctionType(core.bool, [V])))();
  class _Es6LinkedIdentityHashMap extends collection._LinkedIdentityHashMap$(K, V) {
    new() {
      this[_map] = new Map();
      this[_modifications] = 0;
      super.new();
    }
    get length() {
      return this[_map].size;
    }
    get isEmpty() {
      return this.length == 0;
    }
    get isNotEmpty() {
      return !dart.test(this.isEmpty);
    }
    get keys() {
      return new (_Es6MapIterableOfK())(this, true);
    }
    get values() {
      return new (_Es6MapIterableOfV())(this, false);
    }
    containsKey(key) {
      return this[_map].has(key);
    }
    containsValue(value) {
      return this.values[dartx.any](dart.fn(each => dart.equals(each, value), VTobool()));
    }
    addAll(other) {
      MapOfK$V()._check(other);
      other[dartx.forEach](dart.fn((key, value) => {
        this._set(key, value);
      }, KAndVTovoid$()));
    }
    _get(key) {
      return this[_map].get(key);
    }
    _set(key, value) {
      K._check(key);
      V._check(value);
      this[_map].set(key, value);
      this[_modified]();
      return value;
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      if (dart.test(this.containsKey(key))) return this._get(key);
      let value = ifAbsent();
      this._set(key, value);
      return value;
    }
    remove(key) {
      let value = this._get(key);
      this[_map].delete(key);
      this[_modified]();
      return value;
    }
    clear() {
      this[_map].clear();
      this[_modified]();
    }
    forEach(action) {
      let jsEntries = this[_map].entries();
      let modifications = this[_modifications];
      while (true) {
        let next = jsEntries.next();
        let done = next.done;
        if (done) break;
        let entry = next.value;
        let key = entry[0];
        let value = entry[1];
        action(K._check(key), V._check(value));
        if (modifications != this[_modifications]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
      }
    }
    [_modified]() {
      this[_modifications] = dart.notNull(this[_modifications]) + 1 & 67108863;
    }
    toString() {
      return collection.Maps.mapToString(this);
    }
  }
  _Es6LinkedIdentityHashMap[dart.implements] = () => [InternalMapOfK$V()];
  dart.setSignature(_Es6LinkedIdentityHashMap, {
    constructors: () => ({new: dart.definiteFunctionType(collection._Es6LinkedIdentityHashMap$(K, V), [])}),
    fields: () => ({
      [_map]: dart.dynamic,
      [_modifications]: core.int
    }),
    getters: () => ({
      keys: dart.definiteFunctionType(core.Iterable$(K), []),
      values: dart.definiteFunctionType(core.Iterable$(V), [])
    }),
    methods: () => ({
      addAll: dart.definiteFunctionType(dart.void, [MapOfK$V()]),
      _get: dart.definiteFunctionType(V, [core.Object]),
      _set: dart.definiteFunctionType(dart.void, [K, V]),
      putIfAbsent: dart.definiteFunctionType(V, [K, VoidToV()]),
      remove: dart.definiteFunctionType(V, [core.Object]),
      forEach: dart.definiteFunctionType(dart.void, [KAndVTovoid()]),
      [_modified]: dart.definiteFunctionType(dart.void, [])
    })
  });
  dart.defineExtensionMembers(_Es6LinkedIdentityHashMap, [
    'containsKey',
    'containsValue',
    'addAll',
    '_get',
    '_set',
    'putIfAbsent',
    'remove',
    'clear',
    'forEach',
    'length',
    'isEmpty',
    'isNotEmpty',
    'keys',
    'values'
  ]);
  return _Es6LinkedIdentityHashMap;
});
collection._Es6LinkedIdentityHashMap = _Es6LinkedIdentityHashMap();
const _isKeys = Symbol('_isKeys');
collection._Es6MapIterable$ = dart.generic(E => {
  let _Es6MapIteratorOfE = () => (_Es6MapIteratorOfE = dart.constFn(collection._Es6MapIterator$(E)))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  class _Es6MapIterable extends core.Iterable$(E) {
    new(map, isKeys) {
      this[_map] = map;
      this[_isKeys] = isKeys;
      super.new();
    }
    get length() {
      return core.int._check(dart.dload(this[_map], 'length'));
    }
    get isEmpty() {
      return core.bool._check(dart.dload(this[_map], 'isEmpty'));
    }
    get iterator() {
      return new (_Es6MapIteratorOfE())(this[_map], core.int._check(dart.dload(this[_map], _modifications)), this[_isKeys]);
    }
    contains(element) {
      return core.bool._check(dart.dsend(this[_map], 'containsKey', element));
    }
    forEach(f) {
      let jsIterator = null;
      if (dart.test(this[_isKeys])) {
        jsIterator = dart.dload(this[_map], _map).keys();
      } else {
        jsIterator = dart.dload(this[_map], _map).values();
      }
      let modifications = core.int._check(dart.dload(this[_map], _modifications));
      while (true) {
        let next = jsIterator.next();
        let done = next.done;
        if (done) break;
        let value = next.value;
        f(E._check(value));
        if (!dart.equals(modifications, dart.dload(this[_map], _modifications))) {
          dart.throw(new core.ConcurrentModificationError(this[_map]));
        }
      }
    }
  }
  _Es6MapIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(_Es6MapIterable, {
    constructors: () => ({new: dart.definiteFunctionType(collection._Es6MapIterable$(E), [dart.dynamic, core.bool])}),
    fields: () => ({
      [_map]: dart.dynamic,
      [_isKeys]: core.bool
    }),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(E), [])}),
    methods: () => ({forEach: dart.definiteFunctionType(dart.void, [ETovoid()])})
  });
  dart.defineExtensionMembers(_Es6MapIterable, [
    'contains',
    'forEach',
    'length',
    'isEmpty',
    'iterator'
  ]);
  return _Es6MapIterable;
});
collection._Es6MapIterable = _Es6MapIterable();
const _jsIterator = Symbol('_jsIterator');
const _next = Symbol('_next');
const _done = Symbol('_done');
collection._Es6MapIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class _Es6MapIterator extends core.Object {
    new(map, modifications, isKeys) {
      this[_map] = map;
      this[_modifications] = modifications;
      this[_isKeys] = isKeys;
      this[_jsIterator] = null;
      this[_next] = null;
      this[_current] = null;
      this[_done] = null;
      if (dart.test(this[_isKeys])) {
        this[_jsIterator] = dart.dload(this[_map], _map).keys();
      } else {
        this[_jsIterator] = dart.dload(this[_map], _map).values();
      }
      this[_done] = false;
    }
    get current() {
      return this[_current];
    }
    moveNext() {
      if (!dart.equals(this[_modifications], dart.dload(this[_map], _modifications))) {
        dart.throw(new core.ConcurrentModificationError(this[_map]));
      }
      if (dart.test(this[_done])) return false;
      this[_next] = this[_jsIterator].next();
      let done = this[_next].done;
      if (done) {
        this[_current] = null;
        this[_done] = true;
        return false;
      } else {
        this[_current] = this[_next].value;
        return true;
      }
    }
  }
  dart.addTypeTests(_Es6MapIterator);
  _Es6MapIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(_Es6MapIterator, {
    constructors: () => ({new: dart.definiteFunctionType(collection._Es6MapIterator$(E), [dart.dynamic, core.int, core.bool])}),
    fields: () => ({
      [_map]: dart.dynamic,
      [_modifications]: core.int,
      [_isKeys]: core.bool,
      [_jsIterator]: dart.dynamic,
      [_next]: dart.dynamic,
      [_current]: E,
      [_done]: core.bool
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return _Es6MapIterator;
});
collection._Es6MapIterator = _Es6MapIterator();
collection._LinkedCustomHashMap$ = dart.generic((K, V) => {
  let _EqualityOfK = () => (_EqualityOfK = dart.constFn(collection._Equality$(K)))();
  let _HasherOfK = () => (_HasherOfK = dart.constFn(collection._Hasher$(K)))();
  class _LinkedCustomHashMap extends _js_helper.JsLinkedHashMap$(K, V) {
    new(equals, hashCode, validKey) {
      this[_equals] = equals;
      this[_hashCode] = hashCode;
      this[_validKey] = validKey != null ? validKey : dart.fn(v => K.is(v), ObjectTobool());
      super.new();
    }
    _get(key) {
      if (!dart.test(this[_validKey](key))) return null;
      return super.internalGet(key);
    }
    _set(key, value) {
      K._check(key);
      V._check(value);
      super.internalSet(key, value);
      return value;
    }
    containsKey(key) {
      if (!dart.test(this[_validKey](key))) return false;
      return super.internalContainsKey(key);
    }
    remove(key) {
      if (!dart.test(this[_validKey](key))) return null;
      return super.internalRemove(key);
    }
    internalComputeHashCode(key) {
      return this[_hashCode](K._check(key)) & 0x3ffffff;
    }
    internalFindBucketIndex(bucket, key) {
      if (bucket == null) return -1;
      let length = bucket.length;
      for (let i = 0; i < length; i++) {
        let cell = bucket[i];
        if (dart.test(this[_equals](cell.hashMapCellKey, K._check(key)))) return i;
      }
      return -1;
    }
  }
  dart.setSignature(_LinkedCustomHashMap, {
    constructors: () => ({new: dart.definiteFunctionType(collection._LinkedCustomHashMap$(K, V), [_EqualityOfK(), _HasherOfK(), _PredicateOfObject()])}),
    fields: () => ({
      [_equals]: _EqualityOfK(),
      [_hashCode]: _HasherOfK(),
      [_validKey]: _PredicateOfObject()
    }),
    methods: () => ({
      _get: dart.definiteFunctionType(V, [core.Object]),
      _set: dart.definiteFunctionType(dart.void, [K, V]),
      remove: dart.definiteFunctionType(V, [core.Object])
    })
  });
  dart.defineExtensionMembers(_LinkedCustomHashMap, ['_get', '_set', 'containsKey', 'remove']);
  return _LinkedCustomHashMap;
});
collection._LinkedCustomHashMap = _LinkedCustomHashMap();
const _elements = Symbol('_elements');
const _newSet = Symbol('_newSet');
const _computeElements = Symbol('_computeElements');
const _contains = Symbol('_contains');
const _lookup = Symbol('_lookup');
const _add = Symbol('_add');
collection.SetMixin$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.functionType(E, [E, E])))();
  let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
  let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
  let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
  let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.functionType(E, [])))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  class SetMixin extends core.Object {
    [Symbol.iterator]() {
      return new dart.JsIterator(this.iterator);
    }
    get isEmpty() {
      return this.length == 0;
    }
    get isNotEmpty() {
      return this.length != 0;
    }
    clear() {
      this.removeAll(this.toList());
    }
    addAll(elements) {
      IterableOfE()._check(elements);
      for (let element of elements)
        this.add(element);
    }
    removeAll(elements) {
      for (let element of elements)
        this.remove(element);
    }
    retainAll(elements) {
      let toRemove = this.toSet();
      for (let o of elements) {
        toRemove.remove(o);
      }
      this.removeAll(toRemove);
    }
    removeWhere(test) {
      let toRemove = [];
      for (let element of this) {
        if (dart.test(test(element))) toRemove[dartx.add](element);
      }
      this.removeAll(toRemove);
    }
    retainWhere(test) {
      let toRemove = [];
      for (let element of this) {
        if (!dart.test(test(element))) toRemove[dartx.add](element);
      }
      this.removeAll(toRemove);
    }
    containsAll(other) {
      for (let o of other) {
        if (!dart.test(this.contains(o))) return false;
      }
      return true;
    }
    union(other) {
      SetOfE()._check(other);
      let _ = this.toSet();
      _.addAll(other);
      return _;
    }
    intersection(other) {
      let result = this.toSet();
      for (let element of this) {
        if (!dart.test(other.contains(element))) result.remove(element);
      }
      return result;
    }
    difference(other) {
      let result = this.toSet();
      for (let element of this) {
        if (dart.test(other.contains(element))) result.remove(element);
      }
      return result;
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let result = dart.test(growable) ? (() => {
        let _ = ListOfE().new();
        _[dartx.length] = this.length;
        return _;
      })() : ListOfE().new(this.length);
      let i = 0;
      for (let element of this)
        result[dartx._set](i++, element);
      return result;
    }
    map(T) {
      return f => {
        return new (_internal.EfficientLengthMappedIterable$(E, T))(this, f);
      };
    }
    get single() {
      if (dart.notNull(this.length) > 1) dart.throw(_internal.IterableElementError.tooMany());
      let it = this.iterator;
      if (!dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
      let result = it.current;
      return result;
    }
    toString() {
      return collection.IterableBase.iterableToFullString(this, '{', '}');
    }
    where(f) {
      return new (WhereIterableOfE())(this, f);
    }
    expand(T) {
      return f => {
        return new (_internal.ExpandIterable$(E, T))(this, f);
      };
    }
    forEach(f) {
      for (let element of this)
        f(element);
    }
    reduce(combine) {
      EAndEToE()._check(combine);
      let iterator = this.iterator;
      if (!dart.test(iterator.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let value = iterator.current;
      while (dart.test(iterator.moveNext())) {
        value = combine(value, iterator.current);
      }
      return value;
    }
    fold(T) {
      return (initialValue, combine) => {
        let value = initialValue;
        for (let element of this)
          value = combine(value, element);
        return value;
      };
    }
    every(f) {
      for (let element of this) {
        if (!dart.test(f(element))) return false;
      }
      return true;
    }
    join(separator) {
      if (separator === void 0) separator = "";
      let iterator = this.iterator;
      if (!dart.test(iterator.moveNext())) return "";
      let buffer = new core.StringBuffer();
      if (separator == null || separator == "") {
        do {
          buffer.write(dart.str`${iterator.current}`);
        } while (dart.test(iterator.moveNext()));
      } else {
        buffer.write(dart.str`${iterator.current}`);
        while (dart.test(iterator.moveNext())) {
          buffer.write(separator);
          buffer.write(dart.str`${iterator.current}`);
        }
      }
      return buffer.toString();
    }
    any(test) {
      for (let element of this) {
        if (dart.test(test(element))) return true;
      }
      return false;
    }
    take(n) {
      return TakeIterableOfE().new(this, n);
    }
    takeWhile(test) {
      return new (TakeWhileIterableOfE())(this, test);
    }
    skip(n) {
      return SkipIterableOfE().new(this, n);
    }
    skipWhile(test) {
      return new (SkipWhileIterableOfE())(this, test);
    }
    get first() {
      let it = this.iterator;
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      return it.current;
    }
    get last() {
      let it = this.iterator;
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let result = null;
      do {
        result = it.current;
      } while (dart.test(it.moveNext()));
      return result;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      for (let element of this) {
        if (dart.test(test(element))) return element;
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test) {
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          if (foundMatching) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      dart.throw(_internal.IterableElementError.noElement());
    }
    elementAt(index) {
      if (!(typeof index == 'number')) dart.throw(new core.ArgumentError.notNull("index"));
      core.RangeError.checkNotNegative(index, "index");
      let elementIndex = 0;
      for (let element of this) {
        if (index == elementIndex) return element;
        elementIndex++;
      }
      dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
    }
  }
  dart.addTypeTests(SetMixin);
  SetMixin[dart.implements] = () => [SetOfE()];
  dart.setSignature(SetMixin, {
    getters: () => ({
      isEmpty: dart.definiteFunctionType(core.bool, []),
      isNotEmpty: dart.definiteFunctionType(core.bool, []),
      single: dart.definiteFunctionType(E, []),
      first: dart.definiteFunctionType(E, []),
      last: dart.definiteFunctionType(E, [])
    }),
    methods: () => ({
      clear: dart.definiteFunctionType(dart.void, []),
      addAll: dart.definiteFunctionType(dart.void, [IterableOfE()]),
      removeAll: dart.definiteFunctionType(dart.void, [IterableOfObject()]),
      retainAll: dart.definiteFunctionType(dart.void, [IterableOfObject()]),
      removeWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      retainWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      containsAll: dart.definiteFunctionType(core.bool, [IterableOfObject()]),
      union: dart.definiteFunctionType(core.Set$(E), [SetOfE()]),
      intersection: dart.definiteFunctionType(core.Set$(E), [SetOfObject()]),
      difference: dart.definiteFunctionType(core.Set$(E), [SetOfObject()]),
      toList: dart.definiteFunctionType(core.List$(E), [], {growable: core.bool}),
      map: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(T, [E])]]),
      where: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      expand: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(core.Iterable$(T), [E])]]),
      forEach: dart.definiteFunctionType(dart.void, [ETovoid()]),
      reduce: dart.definiteFunctionType(E, [EAndEToE()]),
      fold: dart.definiteFunctionType(T => [T, [T, dart.functionType(T, [T, E])]]),
      every: dart.definiteFunctionType(core.bool, [ETobool()]),
      join: dart.definiteFunctionType(core.String, [], [core.String]),
      any: dart.definiteFunctionType(core.bool, [ETobool()]),
      take: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      takeWhile: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      skip: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      skipWhile: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      firstWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      lastWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      singleWhere: dart.definiteFunctionType(E, [ETobool()]),
      elementAt: dart.definiteFunctionType(E, [core.int])
    })
  });
  dart.defineExtensionMembers(SetMixin, [
    'toList',
    'map',
    'toString',
    'where',
    'expand',
    'forEach',
    'reduce',
    'fold',
    'every',
    'join',
    'any',
    'take',
    'takeWhile',
    'skip',
    'skipWhile',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'elementAt',
    'isEmpty',
    'isNotEmpty',
    'single',
    'first',
    'last'
  ]);
  return SetMixin;
});
collection.SetMixin = SetMixin();
collection.SetBase$ = dart.generic(E => {
  class SetBase extends collection.SetMixin$(E) {
    static setToString(set) {
      return collection.IterableBase.iterableToFullString(set, '{', '}');
    }
  }
  dart.setSignature(SetBase, {
    statics: () => ({setToString: dart.definiteFunctionType(core.String, [core.Set])}),
    names: ['setToString']
  });
  return SetBase;
});
collection.SetBase = SetBase();
collection._HashSetBase$ = dart.generic(E => {
  class _HashSetBase extends collection.SetBase$(E) {
    difference(other) {
      let result = this[_newSet]();
      for (let element of this) {
        if (!dart.test(other.contains(element))) result.add(element);
      }
      return result;
    }
    intersection(other) {
      let result = this[_newSet]();
      for (let element of this) {
        if (dart.test(other.contains(element))) result.add(element);
      }
      return result;
    }
    toSet() {
      return (() => {
        let _ = this[_newSet]();
        _.addAll(this);
        return _;
      })();
    }
  }
  dart.setSignature(_HashSetBase, {
    methods: () => ({
      difference: dart.definiteFunctionType(core.Set$(E), [SetOfObject()]),
      intersection: dart.definiteFunctionType(core.Set$(E), [SetOfObject()]),
      toSet: dart.definiteFunctionType(core.Set$(E), [])
    })
  });
  dart.defineExtensionMembers(_HashSetBase, ['toSet']);
  return _HashSetBase;
});
collection._HashSetBase = _HashSetBase();
collection._HashSet$ = dart.generic(E => {
  let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
  let _HashSetIteratorOfE = () => (_HashSetIteratorOfE = dart.constFn(collection._HashSetIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let HashSetOfE = () => (HashSetOfE = dart.constFn(collection.HashSet$(E)))();
  class _HashSet extends collection._HashSetBase$(E) {
    new() {
      this[_length] = 0;
      this[_strings] = null;
      this[_nums] = null;
      this[_rest] = null;
      this[_elements] = null;
    }
    [_newSet]() {
      return new (_HashSetOfE())();
    }
    get iterator() {
      return new (_HashSetIteratorOfE())(this, this[_computeElements]());
    }
    get length() {
      return this[_length];
    }
    get isEmpty() {
      return this[_length] == 0;
    }
    get isNotEmpty() {
      return !dart.test(this.isEmpty);
    }
    contains(object) {
      if (dart.test(collection._HashSet._isStringElement(object))) {
        let strings = this[_strings];
        return strings == null ? false : collection._HashSet._hasTableEntry(strings, object);
      } else if (dart.test(collection._HashSet._isNumericElement(object))) {
        let nums = this[_nums];
        return nums == null ? false : collection._HashSet._hasTableEntry(nums, object);
      } else {
        return this[_contains](object);
      }
    }
    [_contains](object) {
      let rest = this[_rest];
      if (rest == null) return false;
      let bucket = this[_getBucket](rest, object);
      return dart.notNull(this[_findBucketIndex](bucket, object)) >= 0;
    }
    lookup(object) {
      if (dart.test(collection._HashSet._isStringElement(object)) || dart.test(collection._HashSet._isNumericElement(object))) {
        return E._check(dart.test(this.contains(object)) ? object : null);
      }
      return this[_lookup](object);
    }
    [_lookup](object) {
      let rest = this[_rest];
      if (rest == null) return null;
      let bucket = this[_getBucket](rest, object);
      let index = this[_findBucketIndex](bucket, object);
      if (dart.notNull(index) < 0) return null;
      return bucket[dartx._get](index);
    }
    add(element) {
      E._check(element);
      if (dart.test(collection._HashSet._isStringElement(element))) {
        let strings = this[_strings];
        if (strings == null) this[_strings] = strings = collection._HashSet._newHashTable();
        return this[_addHashTableEntry](strings, element);
      } else if (dart.test(collection._HashSet._isNumericElement(element))) {
        let nums = this[_nums];
        if (nums == null) this[_nums] = nums = collection._HashSet._newHashTable();
        return this[_addHashTableEntry](nums, element);
      } else {
        return this[_add](element);
      }
    }
    [_add](element) {
      E._check(element);
      let rest = this[_rest];
      if (rest == null) this[_rest] = rest = collection._HashSet._newHashTable();
      let hash = this[_computeHashCode](element);
      let bucket = rest[hash];
      if (bucket == null) {
        collection._HashSet._setTableEntry(rest, hash, [element]);
      } else {
        let index = this[_findBucketIndex](bucket, element);
        if (dart.notNull(index) >= 0) return false;
        bucket.push(element);
      }
      this[_length] = dart.notNull(this[_length]) + 1;
      this[_elements] = null;
      return true;
    }
    addAll(objects) {
      IterableOfE()._check(objects);
      for (let each of objects) {
        this.add(each);
      }
    }
    remove(object) {
      if (dart.test(collection._HashSet._isStringElement(object))) {
        return this[_removeHashTableEntry](this[_strings], object);
      } else if (dart.test(collection._HashSet._isNumericElement(object))) {
        return this[_removeHashTableEntry](this[_nums], object);
      } else {
        return this[_remove](object);
      }
    }
    [_remove](object) {
      let rest = this[_rest];
      if (rest == null) return false;
      let bucket = this[_getBucket](rest, object);
      let index = this[_findBucketIndex](bucket, object);
      if (dart.notNull(index) < 0) return false;
      this[_length] = dart.notNull(this[_length]) - 1;
      this[_elements] = null;
      bucket.splice(index, 1);
      return true;
    }
    clear() {
      if (dart.notNull(this[_length]) > 0) {
        this[_strings] = this[_nums] = this[_rest] = this[_elements] = null;
        this[_length] = 0;
      }
    }
    [_computeElements]() {
      if (this[_elements] != null) return this[_elements];
      let result = ListOfE().new(this[_length]);
      let index = 0;
      let strings = this[_strings];
      if (strings != null) {
        let names = Object.getOwnPropertyNames(strings);
        let entries = names.length;
        for (let i = 0; i < entries; i++) {
          let element = names[i];
          result[index] = element;
          index++;
        }
      }
      let nums = this[_nums];
      if (nums != null) {
        let names = Object.getOwnPropertyNames(nums);
        let entries = names.length;
        for (let i = 0; i < entries; i++) {
          let element = +names[i];
          result[index] = element;
          index++;
        }
      }
      let rest = this[_rest];
      if (rest != null) {
        let names = Object.getOwnPropertyNames(rest);
        let entries = names.length;
        for (let i = 0; i < entries; i++) {
          let entry = names[i];
          let bucket = rest[entry];
          let length = bucket.length;
          for (let i = 0; i < length; i++) {
            result[index] = bucket[i];
            index++;
          }
        }
      }
      dart.assert(index == this[_length]);
      return this[_elements] = result;
    }
    [_addHashTableEntry](table, element) {
      E._check(element);
      if (dart.test(collection._HashSet._hasTableEntry(table, element))) return false;
      collection._HashSet._setTableEntry(table, element, 0);
      this[_length] = dart.notNull(this[_length]) + 1;
      this[_elements] = null;
      return true;
    }
    [_removeHashTableEntry](table, element) {
      if (table != null && dart.test(collection._HashSet._hasTableEntry(table, element))) {
        collection._HashSet._deleteTableEntry(table, element);
        this[_length] = dart.notNull(this[_length]) - 1;
        this[_elements] = null;
        return true;
      } else {
        return false;
      }
    }
    static _isStringElement(element) {
      return typeof element == 'string' && element != '__proto__';
    }
    static _isNumericElement(element) {
      return typeof element == 'number' && (element & 0x3ffffff) === element;
    }
    [_computeHashCode](element) {
      return dart.hashCode(element) & 0x3ffffff;
    }
    static _hasTableEntry(table, key) {
      let entry = table[key];
      return entry != null;
    }
    static _setTableEntry(table, key, value) {
      dart.assert(value != null);
      table[key] = value;
    }
    static _deleteTableEntry(table, key) {
      delete table[key];
    }
    [_getBucket](table, element) {
      let hash = this[_computeHashCode](element);
      return table[hash];
    }
    [_findBucketIndex](bucket, element) {
      if (bucket == null) return -1;
      let length = bucket.length;
      for (let i = 0; i < length; i++) {
        if (dart.equals(bucket[i], element)) return i;
      }
      return -1;
    }
    static _newHashTable() {
      let table = Object.create(null);
      let temporaryKey = '<non-identifier-key>';
      collection._HashSet._setTableEntry(table, temporaryKey, table);
      collection._HashSet._deleteTableEntry(table, temporaryKey);
      return table;
    }
  }
  _HashSet[dart.implements] = () => [HashSetOfE()];
  dart.setSignature(_HashSet, {
    constructors: () => ({new: dart.definiteFunctionType(collection._HashSet$(E), [])}),
    fields: () => ({
      [_length]: core.int,
      [_strings]: dart.dynamic,
      [_nums]: dart.dynamic,
      [_rest]: dart.dynamic,
      [_elements]: ListOfE()
    }),
    getters: () => ({
      iterator: dart.definiteFunctionType(core.Iterator$(E), []),
      length: dart.definiteFunctionType(core.int, [])
    }),
    methods: () => ({
      [_newSet]: dart.definiteFunctionType(core.Set$(E), []),
      contains: dart.definiteFunctionType(core.bool, [core.Object]),
      [_contains]: dart.definiteFunctionType(core.bool, [core.Object]),
      lookup: dart.definiteFunctionType(E, [core.Object]),
      [_lookup]: dart.definiteFunctionType(E, [core.Object]),
      add: dart.definiteFunctionType(core.bool, [E]),
      [_add]: dart.definiteFunctionType(core.bool, [E]),
      addAll: dart.definiteFunctionType(dart.void, [IterableOfE()]),
      remove: dart.definiteFunctionType(core.bool, [core.Object]),
      [_remove]: dart.definiteFunctionType(core.bool, [core.Object]),
      [_computeElements]: dart.definiteFunctionType(core.List$(E), []),
      [_addHashTableEntry]: dart.definiteFunctionType(core.bool, [dart.dynamic, E]),
      [_removeHashTableEntry]: dart.definiteFunctionType(core.bool, [dart.dynamic, core.Object]),
      [_computeHashCode]: dart.definiteFunctionType(core.int, [dart.dynamic]),
      [_getBucket]: dart.definiteFunctionType(core.List$(E), [dart.dynamic, dart.dynamic]),
      [_findBucketIndex]: dart.definiteFunctionType(core.int, [dart.dynamic, dart.dynamic])
    }),
    statics: () => ({
      _isStringElement: dart.definiteFunctionType(core.bool, [dart.dynamic]),
      _isNumericElement: dart.definiteFunctionType(core.bool, [dart.dynamic]),
      _hasTableEntry: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
      _setTableEntry: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
      _deleteTableEntry: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic]),
      _newHashTable: dart.definiteFunctionType(dart.dynamic, [])
    }),
    names: ['_isStringElement', '_isNumericElement', '_hasTableEntry', '_setTableEntry', '_deleteTableEntry', '_newHashTable']
  });
  dart.defineExtensionMembers(_HashSet, [
    'contains',
    'iterator',
    'length',
    'isEmpty',
    'isNotEmpty'
  ]);
  return _HashSet;
});
collection._HashSet = _HashSet();
collection._IdentityHashSet$ = dart.generic(E => {
  let _IdentityHashSetOfE = () => (_IdentityHashSetOfE = dart.constFn(collection._IdentityHashSet$(E)))();
  class _IdentityHashSet extends collection._HashSet$(E) {
    new() {
      super.new();
    }
    [_newSet]() {
      return new (_IdentityHashSetOfE())();
    }
    [_computeHashCode](key) {
      return core.identityHashCode(key) & 0x3ffffff;
    }
    [_findBucketIndex](bucket, element) {
      if (bucket == null) return -1;
      let length = bucket.length;
      for (let i = 0; i < length; i++) {
        if (core.identical(bucket[i], element)) return i;
      }
      return -1;
    }
  }
  dart.setSignature(_IdentityHashSet, {
    methods: () => ({[_newSet]: dart.definiteFunctionType(core.Set$(E), [])})
  });
  return _IdentityHashSet;
});
collection._IdentityHashSet = _IdentityHashSet();
const _equality = Symbol('_equality');
const _hasher = Symbol('_hasher');
collection._CustomHashSet$ = dart.generic(E => {
  let _CustomHashSetOfE = () => (_CustomHashSetOfE = dart.constFn(collection._CustomHashSet$(E)))();
  let _EqualityOfE = () => (_EqualityOfE = dart.constFn(collection._Equality$(E)))();
  let _HasherOfE = () => (_HasherOfE = dart.constFn(collection._Hasher$(E)))();
  class _CustomHashSet extends collection._HashSet$(E) {
    new(equality, hasher, validKey) {
      this[_equality] = equality;
      this[_hasher] = hasher;
      this[_validKey] = validKey != null ? validKey : dart.fn(x => E.is(x), ObjectTobool());
      super.new();
    }
    [_newSet]() {
      return new (_CustomHashSetOfE())(this[_equality], this[_hasher], this[_validKey]);
    }
    [_findBucketIndex](bucket, element) {
      if (bucket == null) return -1;
      let length = bucket.length;
      for (let i = 0; i < length; i++) {
        if (dart.test(this[_equality](bucket[i], E._check(element)))) return i;
      }
      return -1;
    }
    [_computeHashCode](element) {
      return this[_hasher](E._check(element)) & 0x3ffffff;
    }
    add(object) {
      E._check(object);
      return super[_add](object);
    }
    contains(object) {
      if (!dart.test(this[_validKey](object))) return false;
      return super[_contains](object);
    }
    lookup(object) {
      if (!dart.test(this[_validKey](object))) return null;
      return super[_lookup](object);
    }
    remove(object) {
      if (!dart.test(this[_validKey](object))) return false;
      return super[_remove](object);
    }
  }
  dart.setSignature(_CustomHashSet, {
    constructors: () => ({new: dart.definiteFunctionType(collection._CustomHashSet$(E), [_EqualityOfE(), _HasherOfE(), _PredicateOfObject()])}),
    fields: () => ({
      [_equality]: _EqualityOfE(),
      [_hasher]: _HasherOfE(),
      [_validKey]: _PredicateOfObject()
    }),
    methods: () => ({
      [_newSet]: dart.definiteFunctionType(core.Set$(E), []),
      add: dart.definiteFunctionType(core.bool, [E]),
      lookup: dart.definiteFunctionType(E, [core.Object])
    })
  });
  dart.defineExtensionMembers(_CustomHashSet, ['contains']);
  return _CustomHashSet;
});
collection._CustomHashSet = _CustomHashSet();
collection._HashSetIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  class _HashSetIterator extends core.Object {
    new(set, elements) {
      this[_set] = set;
      this[_elements] = elements;
      this[_offset] = 0;
      this[_current] = null;
    }
    get current() {
      return this[_current];
    }
    moveNext() {
      let elements = this[_elements];
      let offset = this[_offset];
      if (elements !== dart.dload(this[_set], _elements)) {
        dart.throw(new core.ConcurrentModificationError(this[_set]));
      } else if (dart.notNull(offset) >= elements.length) {
        this[_current] = null;
        return false;
      } else {
        this[_current] = elements[offset];
        this[_offset] = dart.notNull(offset) + 1;
        return true;
      }
    }
  }
  dart.addTypeTests(_HashSetIterator);
  _HashSetIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(_HashSetIterator, {
    constructors: () => ({new: dart.definiteFunctionType(collection._HashSetIterator$(E), [dart.dynamic, ListOfE()])}),
    fields: () => ({
      [_set]: dart.dynamic,
      [_elements]: ListOfE(),
      [_offset]: core.int,
      [_current]: E
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return _HashSetIterator;
});
collection._HashSetIterator = _HashSetIterator();
const _first = Symbol('_first');
const _last = Symbol('_last');
const _unsupported = Symbol('_unsupported');
const _getTableEntry = Symbol('_getTableEntry');
const _element = Symbol('_element');
const _newLinkedCell = Symbol('_newLinkedCell');
const _unlinkCell = Symbol('_unlinkCell');
const _filterWhere = Symbol('_filterWhere');
const _previous = Symbol('_previous');
collection._LinkedHashSet$ = dart.generic(E => {
  let _LinkedHashSetOfE = () => (_LinkedHashSetOfE = dart.constFn(collection._LinkedHashSet$(E)))();
  let _LinkedHashSetIteratorOfE = () => (_LinkedHashSetIteratorOfE = dart.constFn(collection._LinkedHashSetIterator$(E)))();
  let _LinkedHashSetCellOfE = () => (_LinkedHashSetCellOfE = dart.constFn(collection._LinkedHashSetCell$(E)))();
  let LinkedHashSetOfE = () => (LinkedHashSetOfE = dart.constFn(collection.LinkedHashSet$(E)))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  class _LinkedHashSet extends collection._HashSetBase$(E) {
    new() {
      this[_length] = 0;
      this[_strings] = null;
      this[_nums] = null;
      this[_rest] = null;
      this[_first] = null;
      this[_last] = null;
      this[_modifications] = 0;
    }
    [_newSet]() {
      return new (_LinkedHashSetOfE())();
    }
    [_unsupported](operation) {
      dart.throw(dart.str`LinkedHashSet: unsupported ${operation}`);
    }
    get iterator() {
      return new (_LinkedHashSetIteratorOfE())(this, this[_modifications]);
    }
    get length() {
      return this[_length];
    }
    get isEmpty() {
      return this[_length] == 0;
    }
    get isNotEmpty() {
      return !dart.test(this.isEmpty);
    }
    contains(object) {
      if (dart.test(collection._LinkedHashSet._isStringElement(object))) {
        let strings = this[_strings];
        if (strings == null) return false;
        let cell = this[_getTableEntry](strings, object);
        return cell != null;
      } else if (dart.test(collection._LinkedHashSet._isNumericElement(object))) {
        let nums = this[_nums];
        if (nums == null) return false;
        let cell = this[_getTableEntry](nums, object);
        return cell != null;
      } else {
        return this[_contains](object);
      }
    }
    [_contains](object) {
      let rest = this[_rest];
      if (rest == null) return false;
      let bucket = this[_getBucket](rest, object);
      return dart.notNull(this[_findBucketIndex](bucket, object)) >= 0;
    }
    lookup(object) {
      if (dart.test(collection._LinkedHashSet._isStringElement(object)) || dart.test(collection._LinkedHashSet._isNumericElement(object))) {
        return E._check(dart.test(this.contains(object)) ? object : null);
      } else {
        return this[_lookup](object);
      }
    }
    [_lookup](object) {
      let rest = this[_rest];
      if (rest == null) return null;
      let bucket = this[_getBucket](rest, object);
      let index = this[_findBucketIndex](bucket, object);
      if (dart.notNull(index) < 0) return null;
      return bucket[dartx._get](index)[_element];
    }
    forEach(action) {
      let cell = this[_first];
      let modifications = this[_modifications];
      while (cell != null) {
        action(cell[_element]);
        if (modifications != this[_modifications]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
        cell = cell[_next];
      }
    }
    get first() {
      if (this[_first] == null) dart.throw(new core.StateError("No elements"));
      return this[_first][_element];
    }
    get last() {
      if (this[_last] == null) dart.throw(new core.StateError("No elements"));
      return this[_last][_element];
    }
    add(element) {
      E._check(element);
      if (dart.test(collection._LinkedHashSet._isStringElement(element))) {
        let strings = this[_strings];
        if (strings == null) this[_strings] = strings = collection._LinkedHashSet._newHashTable();
        return this[_addHashTableEntry](strings, element);
      } else if (dart.test(collection._LinkedHashSet._isNumericElement(element))) {
        let nums = this[_nums];
        if (nums == null) this[_nums] = nums = collection._LinkedHashSet._newHashTable();
        return this[_addHashTableEntry](nums, element);
      } else {
        return this[_add](element);
      }
    }
    [_add](element) {
      E._check(element);
      let rest = this[_rest];
      if (rest == null) this[_rest] = rest = collection._LinkedHashSet._newHashTable();
      let hash = this[_computeHashCode](element);
      let bucket = rest[hash];
      if (bucket == null) {
        let cell = this[_newLinkedCell](element);
        collection._LinkedHashSet._setTableEntry(rest, hash, [cell]);
      } else {
        let index = this[_findBucketIndex](bucket, element);
        if (dart.notNull(index) >= 0) return false;
        let cell = this[_newLinkedCell](element);
        bucket.push(cell);
      }
      return true;
    }
    remove(object) {
      if (dart.test(collection._LinkedHashSet._isStringElement(object))) {
        return this[_removeHashTableEntry](this[_strings], object);
      } else if (dart.test(collection._LinkedHashSet._isNumericElement(object))) {
        return this[_removeHashTableEntry](this[_nums], object);
      } else {
        return this[_remove](object);
      }
    }
    [_remove](object) {
      let rest = this[_rest];
      if (rest == null) return false;
      let bucket = this[_getBucket](rest, object);
      let index = this[_findBucketIndex](bucket, object);
      if (dart.notNull(index) < 0) return false;
      let cell = bucket.splice(index, 1)[0];
      this[_unlinkCell](cell);
      return true;
    }
    removeWhere(test) {
      this[_filterWhere](test, true);
    }
    retainWhere(test) {
      this[_filterWhere](test, false);
    }
    [_filterWhere](test, removeMatching) {
      let cell = this[_first];
      while (cell != null) {
        let element = cell[_element];
        let next = cell[_next];
        let modifications = this[_modifications];
        let shouldRemove = removeMatching == test(element);
        if (modifications != this[_modifications]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
        if (shouldRemove) this.remove(element);
        cell = next;
      }
    }
    clear() {
      if (dart.notNull(this[_length]) > 0) {
        this[_strings] = this[_nums] = this[_rest] = this[_first] = this[_last] = null;
        this[_length] = 0;
        this[_modified]();
      }
    }
    [_addHashTableEntry](table, element) {
      E._check(element);
      let cell = this[_getTableEntry](table, element);
      if (cell != null) return false;
      collection._LinkedHashSet._setTableEntry(table, element, this[_newLinkedCell](element));
      return true;
    }
    [_removeHashTableEntry](table, element) {
      if (table == null) return false;
      let cell = this[_getTableEntry](table, element);
      if (cell == null) return false;
      this[_unlinkCell](cell);
      collection._LinkedHashSet._deleteTableEntry(table, element);
      return true;
    }
    [_modified]() {
      this[_modifications] = dart.notNull(this[_modifications]) + 1 & 67108863;
    }
    [_newLinkedCell](element) {
      E._check(element);
      let cell = new (_LinkedHashSetCellOfE())(element);
      if (this[_first] == null) {
        this[_first] = this[_last] = cell;
      } else {
        let last = this[_last];
        cell[_previous] = last;
        this[_last] = last[_next] = cell;
      }
      this[_length] = dart.notNull(this[_length]) + 1;
      this[_modified]();
      return cell;
    }
    [_unlinkCell](cell) {
      _LinkedHashSetCellOfE()._check(cell);
      let previous = cell[_previous];
      let next = cell[_next];
      if (previous == null) {
        dart.assert(dart.equals(cell, this[_first]));
        this[_first] = next;
      } else {
        previous[_next] = next;
      }
      if (next == null) {
        dart.assert(dart.equals(cell, this[_last]));
        this[_last] = previous;
      } else {
        next[_previous] = previous;
      }
      this[_length] = dart.notNull(this[_length]) - 1;
      this[_modified]();
    }
    static _isStringElement(element) {
      return typeof element == 'string' && element != '__proto__';
    }
    static _isNumericElement(element) {
      return typeof element == 'number' && (element & 0x3ffffff) === element;
    }
    [_computeHashCode](element) {
      return dart.hashCode(element) & 0x3ffffff;
    }
    [_getTableEntry](table, key) {
      return table[key];
    }
    static _setTableEntry(table, key, value) {
      dart.assert(value != null);
      table[key] = value;
    }
    static _deleteTableEntry(table, key) {
      delete table[key];
    }
    [_getBucket](table, element) {
      let hash = this[_computeHashCode](element);
      return table[hash];
    }
    [_findBucketIndex](bucket, element) {
      if (bucket == null) return -1;
      let length = bucket.length;
      for (let i = 0; i < length; i++) {
        let cell = bucket[i];
        if (dart.equals(cell[_element], element)) return i;
      }
      return -1;
    }
    static _newHashTable() {
      let table = Object.create(null);
      let temporaryKey = '<non-identifier-key>';
      collection._LinkedHashSet._setTableEntry(table, temporaryKey, table);
      collection._LinkedHashSet._deleteTableEntry(table, temporaryKey);
      return table;
    }
  }
  _LinkedHashSet[dart.implements] = () => [LinkedHashSetOfE()];
  dart.setSignature(_LinkedHashSet, {
    constructors: () => ({new: dart.definiteFunctionType(collection._LinkedHashSet$(E), [])}),
    fields: () => ({
      [_length]: core.int,
      [_strings]: dart.dynamic,
      [_nums]: dart.dynamic,
      [_rest]: dart.dynamic,
      [_first]: _LinkedHashSetCellOfE(),
      [_last]: _LinkedHashSetCellOfE(),
      [_modifications]: core.int
    }),
    getters: () => ({
      iterator: dart.definiteFunctionType(core.Iterator$(E), []),
      length: dart.definiteFunctionType(core.int, []),
      first: dart.definiteFunctionType(E, []),
      last: dart.definiteFunctionType(E, [])
    }),
    methods: () => ({
      [_newSet]: dart.definiteFunctionType(core.Set$(E), []),
      [_unsupported]: dart.definiteFunctionType(dart.void, [core.String]),
      contains: dart.definiteFunctionType(core.bool, [core.Object]),
      [_contains]: dart.definiteFunctionType(core.bool, [core.Object]),
      lookup: dart.definiteFunctionType(E, [core.Object]),
      [_lookup]: dart.definiteFunctionType(E, [core.Object]),
      forEach: dart.definiteFunctionType(dart.void, [ETovoid()]),
      add: dart.definiteFunctionType(core.bool, [E]),
      [_add]: dart.definiteFunctionType(core.bool, [E]),
      remove: dart.definiteFunctionType(core.bool, [core.Object]),
      [_remove]: dart.definiteFunctionType(core.bool, [core.Object]),
      removeWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      retainWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      [_filterWhere]: dart.definiteFunctionType(dart.void, [ETobool(), core.bool]),
      [_addHashTableEntry]: dart.definiteFunctionType(core.bool, [dart.dynamic, E]),
      [_removeHashTableEntry]: dart.definiteFunctionType(core.bool, [dart.dynamic, core.Object]),
      [_modified]: dart.definiteFunctionType(dart.void, []),
      [_newLinkedCell]: dart.definiteFunctionType(collection._LinkedHashSetCell$(E), [E]),
      [_unlinkCell]: dart.definiteFunctionType(dart.void, [_LinkedHashSetCellOfE()]),
      [_computeHashCode]: dart.definiteFunctionType(core.int, [dart.dynamic]),
      [_getTableEntry]: dart.definiteFunctionType(collection._LinkedHashSetCell$(E), [dart.dynamic, dart.dynamic]),
      [_getBucket]: dart.definiteFunctionType(core.List$(collection._LinkedHashSetCell$(E)), [dart.dynamic, dart.dynamic]),
      [_findBucketIndex]: dart.definiteFunctionType(core.int, [dart.dynamic, dart.dynamic])
    }),
    statics: () => ({
      _isStringElement: dart.definiteFunctionType(core.bool, [dart.dynamic]),
      _isNumericElement: dart.definiteFunctionType(core.bool, [dart.dynamic]),
      _setTableEntry: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
      _deleteTableEntry: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic]),
      _newHashTable: dart.definiteFunctionType(dart.dynamic, [])
    }),
    names: ['_isStringElement', '_isNumericElement', '_setTableEntry', '_deleteTableEntry', '_newHashTable']
  });
  dart.defineExtensionMembers(_LinkedHashSet, [
    'contains',
    'forEach',
    'iterator',
    'length',
    'isEmpty',
    'isNotEmpty',
    'first',
    'last'
  ]);
  return _LinkedHashSet;
});
collection._LinkedHashSet = _LinkedHashSet();
collection._LinkedIdentityHashSet$ = dart.generic(E => {
  let _LinkedIdentityHashSetOfE = () => (_LinkedIdentityHashSetOfE = dart.constFn(collection._LinkedIdentityHashSet$(E)))();
  class _LinkedIdentityHashSet extends collection._LinkedHashSet$(E) {
    new() {
      super.new();
    }
    [_newSet]() {
      return new (_LinkedIdentityHashSetOfE())();
    }
    [_computeHashCode](key) {
      return core.identityHashCode(key) & 0x3ffffff;
    }
    [_findBucketIndex](bucket, element) {
      if (bucket == null) return -1;
      let length = bucket.length;
      for (let i = 0; i < length; i++) {
        let cell = bucket[i];
        if (core.identical(cell[_element], element)) return i;
      }
      return -1;
    }
  }
  dart.setSignature(_LinkedIdentityHashSet, {
    methods: () => ({[_newSet]: dart.definiteFunctionType(core.Set$(E), [])})
  });
  return _LinkedIdentityHashSet;
});
collection._LinkedIdentityHashSet = _LinkedIdentityHashSet();
collection._LinkedCustomHashSet$ = dart.generic(E => {
  let _LinkedCustomHashSetOfE = () => (_LinkedCustomHashSetOfE = dart.constFn(collection._LinkedCustomHashSet$(E)))();
  let _EqualityOfE = () => (_EqualityOfE = dart.constFn(collection._Equality$(E)))();
  let _HasherOfE = () => (_HasherOfE = dart.constFn(collection._Hasher$(E)))();
  class _LinkedCustomHashSet extends collection._LinkedHashSet$(E) {
    new(equality, hasher, validKey) {
      this[_equality] = equality;
      this[_hasher] = hasher;
      this[_validKey] = validKey != null ? validKey : dart.fn(x => E.is(x), ObjectTobool());
      super.new();
    }
    [_newSet]() {
      return new (_LinkedCustomHashSetOfE())(this[_equality], this[_hasher], this[_validKey]);
    }
    [_findBucketIndex](bucket, element) {
      if (bucket == null) return -1;
      let length = bucket.length;
      for (let i = 0; i < length; i++) {
        let cell = bucket[i];
        if (dart.test(this[_equality](cell[_element], E._check(element)))) return i;
      }
      return -1;
    }
    [_computeHashCode](element) {
      return this[_hasher](E._check(element)) & 0x3ffffff;
    }
    add(element) {
      E._check(element);
      return super[_add](element);
    }
    contains(object) {
      if (!dart.test(this[_validKey](object))) return false;
      return super[_contains](object);
    }
    lookup(object) {
      if (!dart.test(this[_validKey](object))) return null;
      return super[_lookup](object);
    }
    remove(object) {
      if (!dart.test(this[_validKey](object))) return false;
      return super[_remove](object);
    }
    containsAll(elements) {
      for (let element of elements) {
        if (!dart.test(this[_validKey](element)) || !dart.test(this.contains(element))) return false;
      }
      return true;
    }
    removeAll(elements) {
      for (let element of elements) {
        if (dart.test(this[_validKey](element))) {
          super[_remove](element);
        }
      }
    }
  }
  dart.setSignature(_LinkedCustomHashSet, {
    constructors: () => ({new: dart.definiteFunctionType(collection._LinkedCustomHashSet$(E), [_EqualityOfE(), _HasherOfE(), _PredicateOfObject()])}),
    fields: () => ({
      [_equality]: _EqualityOfE(),
      [_hasher]: _HasherOfE(),
      [_validKey]: _PredicateOfObject()
    }),
    methods: () => ({
      [_newSet]: dart.definiteFunctionType(core.Set$(E), []),
      add: dart.definiteFunctionType(core.bool, [E]),
      lookup: dart.definiteFunctionType(E, [core.Object])
    })
  });
  dart.defineExtensionMembers(_LinkedCustomHashSet, ['contains']);
  return _LinkedCustomHashSet;
});
collection._LinkedCustomHashSet = _LinkedCustomHashSet();
collection._LinkedHashSetCell$ = dart.generic(E => {
  let _LinkedHashSetCellOfE = () => (_LinkedHashSetCellOfE = dart.constFn(collection._LinkedHashSetCell$(E)))();
  class _LinkedHashSetCell extends core.Object {
    new(element) {
      this[_element] = element;
      this[_next] = null;
      this[_previous] = null;
    }
  }
  dart.addTypeTests(_LinkedHashSetCell);
  dart.setSignature(_LinkedHashSetCell, {
    constructors: () => ({new: dart.definiteFunctionType(collection._LinkedHashSetCell$(E), [E])}),
    fields: () => ({
      [_element]: E,
      [_next]: _LinkedHashSetCellOfE(),
      [_previous]: _LinkedHashSetCellOfE()
    })
  });
  return _LinkedHashSetCell;
});
collection._LinkedHashSetCell = _LinkedHashSetCell();
const _cell = Symbol('_cell');
collection._LinkedHashSetIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class _LinkedHashSetIterator extends core.Object {
    new(set, modifications) {
      this[_set] = set;
      this[_modifications] = modifications;
      this[_cell] = null;
      this[_current] = null;
      this[_cell] = collection._LinkedHashSetCell._check(dart.dload(this[_set], _first));
    }
    get current() {
      return this[_current];
    }
    moveNext() {
      if (!dart.equals(this[_modifications], dart.dload(this[_set], _modifications))) {
        dart.throw(new core.ConcurrentModificationError(this[_set]));
      } else if (this[_cell] == null) {
        this[_current] = null;
        return false;
      } else {
        this[_current] = E._check(this[_cell][_element]);
        this[_cell] = this[_cell][_next];
        return true;
      }
    }
  }
  dart.addTypeTests(_LinkedHashSetIterator);
  _LinkedHashSetIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(_LinkedHashSetIterator, {
    constructors: () => ({new: dart.definiteFunctionType(collection._LinkedHashSetIterator$(E), [dart.dynamic, core.int])}),
    fields: () => ({
      [_set]: dart.dynamic,
      [_modifications]: core.int,
      [_cell]: collection._LinkedHashSetCell,
      [_current]: E
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return _LinkedHashSetIterator;
});
collection._LinkedHashSetIterator = _LinkedHashSetIterator();
const _source = Symbol('_source');
collection.UnmodifiableListView$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class UnmodifiableListView extends _internal.UnmodifiableListBase$(E) {
    new(source) {
      this[_source] = source;
    }
    get length() {
      return this[_source][dartx.length];
    }
    set length(value) {
      super.length = value;
    }
    _get(index) {
      return this[_source][dartx.elementAt](index);
    }
  }
  dart.setSignature(UnmodifiableListView, {
    constructors: () => ({new: dart.definiteFunctionType(collection.UnmodifiableListView$(E), [IterableOfE()])}),
    fields: () => ({[_source]: IterableOfE()}),
    getters: () => ({length: dart.definiteFunctionType(core.int, [])}),
    methods: () => ({_get: dart.definiteFunctionType(E, [core.int])})
  });
  dart.defineExtensionMembers(UnmodifiableListView, ['_get', 'length']);
  return UnmodifiableListView;
});
collection.UnmodifiableListView = UnmodifiableListView();
collection._defaultEquals = function(a, b) {
  return dart.equals(a, b);
};
dart.lazyFn(collection._defaultEquals, () => dynamicAnddynamicTobool());
collection._defaultHashCode = function(a) {
  return dart.hashCode(a);
};
dart.fn(collection._defaultHashCode, dynamicToint());
collection._Equality$ = dart.generic(K => {
  const _Equality = dart.typedef('_Equality', () => dart.functionType(core.bool, [K, K]));
  return _Equality;
});
collection._Equality = _Equality();
collection._Hasher$ = dart.generic(K => {
  const _Hasher = dart.typedef('_Hasher', () => dart.functionType(core.int, [K]));
  return _Hasher;
});
collection._Hasher = _Hasher();
collection.HashMap$ = dart.generic((K, V) => {
  let _HashMapOfK$V = () => (_HashMapOfK$V = dart.constFn(collection._HashMap$(K, V)))();
  let _IdentityHashMapOfK$V = () => (_IdentityHashMapOfK$V = dart.constFn(collection._IdentityHashMap$(K, V)))();
  let _CustomHashMapOfK$V = () => (_CustomHashMapOfK$V = dart.constFn(collection._CustomHashMap$(K, V)))();
  let HashMapOfK$V = () => (HashMapOfK$V = dart.constFn(collection.HashMap$(K, V)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let KAndKTobool = () => (KAndKTobool = dart.constFn(dart.functionType(core.bool, [K, K])))();
  let KToint = () => (KToint = dart.constFn(dart.functionType(core.int, [K])))();
  let dynamicToK = () => (dynamicToK = dart.constFn(dart.functionType(K, [dart.dynamic])))();
  let IterableOfK = () => (IterableOfK = dart.constFn(core.Iterable$(K)))();
  let dynamicToV = () => (dynamicToV = dart.constFn(dart.functionType(V, [dart.dynamic])))();
  let IterableOfV = () => (IterableOfV = dart.constFn(core.Iterable$(V)))();
  class HashMap extends core.Object {
    static new(opts) {
      let equals = opts && 'equals' in opts ? opts.equals : null;
      let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
      let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
      if (isValidKey == null) {
        if (hashCode == null) {
          if (equals == null) {
            return new (_HashMapOfK$V())();
          }
          hashCode = collection._defaultHashCode;
        } else {
          if (core.identical(core.identityHashCode, hashCode) && core.identical(core.identical, equals)) {
            return new (_IdentityHashMapOfK$V())();
          }
          if (equals == null) {
            equals = collection._defaultEquals;
          }
        }
      } else {
        if (hashCode == null) {
          hashCode = collection._defaultHashCode;
        }
        if (equals == null) {
          equals = collection._defaultEquals;
        }
      }
      return new (_CustomHashMapOfK$V())(equals, hashCode, isValidKey);
    }
    static identity() {
      return new (_IdentityHashMapOfK$V())();
    }
    static from(other) {
      let result = HashMapOfK$V().new();
      other[dartx.forEach](dart.fn((k, v) => {
        result._set(K.as(k), V.as(v));
      }, dynamicAnddynamicTovoid()));
      return result;
    }
    static fromIterable(iterable, opts) {
      let key = opts && 'key' in opts ? opts.key : null;
      let value = opts && 'value' in opts ? opts.value : null;
      let map = HashMapOfK$V().new();
      collection.Maps._fillMapWithMappedIterable(map, iterable, key, value);
      return map;
    }
    static fromIterables(keys, values) {
      let map = HashMapOfK$V().new();
      collection.Maps._fillMapWithIterables(map, keys, values);
      return map;
    }
  }
  dart.addTypeTests(HashMap);
  HashMap[dart.implements] = () => [MapOfK$V()];
  dart.setSignature(HashMap, {
    constructors: () => ({
      new: dart.definiteFunctionType(collection.HashMap$(K, V), [], {equals: KAndKTobool(), hashCode: KToint(), isValidKey: _PredicateOfObject()}),
      identity: dart.definiteFunctionType(collection.HashMap$(K, V), []),
      from: dart.definiteFunctionType(collection.HashMap$(K, V), [core.Map]),
      fromIterable: dart.definiteFunctionType(collection.HashMap$(K, V), [core.Iterable], {key: dynamicToK(), value: dynamicToV()}),
      fromIterables: dart.definiteFunctionType(collection.HashMap$(K, V), [IterableOfK(), IterableOfV()])
    })
  });
  return HashMap;
});
collection.HashMap = HashMap();
collection.HashSet$ = dart.generic(E => {
  let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
  let _IdentityHashSetOfE = () => (_IdentityHashSetOfE = dart.constFn(collection._IdentityHashSet$(E)))();
  let _CustomHashSetOfE = () => (_CustomHashSetOfE = dart.constFn(collection._CustomHashSet$(E)))();
  let HashSetOfE = () => (HashSetOfE = dart.constFn(collection.HashSet$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let EAndETobool = () => (EAndETobool = dart.constFn(dart.functionType(core.bool, [E, E])))();
  let EToint = () => (EToint = dart.constFn(dart.functionType(core.int, [E])))();
  class HashSet extends core.Object {
    static new(opts) {
      let equals = opts && 'equals' in opts ? opts.equals : null;
      let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
      let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
      if (isValidKey == null) {
        if (hashCode == null) {
          if (equals == null) {
            return new (_HashSetOfE())();
          }
          hashCode = collection._defaultHashCode;
        } else {
          if (core.identical(core.identityHashCode, hashCode) && core.identical(core.identical, equals)) {
            return new (_IdentityHashSetOfE())();
          }
          if (equals == null) {
            equals = collection._defaultEquals;
          }
        }
      } else {
        if (hashCode == null) {
          hashCode = collection._defaultHashCode;
        }
        if (equals == null) {
          equals = collection._defaultEquals;
        }
      }
      return new (_CustomHashSetOfE())(equals, hashCode, isValidKey);
    }
    static identity() {
      return new (_IdentityHashSetOfE())();
    }
    static from(elements) {
      let result = HashSetOfE().new();
      for (let e of elements) {
        let element = E.as(e);
        result.add(element);
      }
      return result;
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this.iterator);
    }
  }
  dart.addTypeTests(HashSet);
  HashSet[dart.implements] = () => [SetOfE()];
  dart.setSignature(HashSet, {
    constructors: () => ({
      new: dart.definiteFunctionType(collection.HashSet$(E), [], {equals: EAndETobool(), hashCode: EToint(), isValidKey: _PredicateOfObject()}),
      identity: dart.definiteFunctionType(collection.HashSet$(E), []),
      from: dart.definiteFunctionType(collection.HashSet$(E), [core.Iterable])
    })
  });
  return HashSet;
});
collection.HashSet = HashSet();
collection.IterableMixin$ = dart.generic(E => {
  let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.functionType(E, [E, E])))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
  let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
  let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
  let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.functionType(E, [])))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  class IterableMixin extends core.Object {
    map(T) {
      return f => {
        return _internal.MappedIterable$(E, T).new(this, f);
      };
    }
    where(f) {
      return new (WhereIterableOfE())(this, f);
    }
    expand(T) {
      return f => {
        return new (_internal.ExpandIterable$(E, T))(this, f);
      };
    }
    contains(element) {
      for (let e of this) {
        if (dart.equals(e, element)) return true;
      }
      return false;
    }
    forEach(f) {
      for (let element of this)
        f(element);
    }
    reduce(combine) {
      EAndEToE()._check(combine);
      let iterator = this.iterator;
      if (!dart.test(iterator.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let value = iterator.current;
      while (dart.test(iterator.moveNext())) {
        value = combine(value, iterator.current);
      }
      return value;
    }
    fold(T) {
      return (initialValue, combine) => {
        let value = initialValue;
        for (let element of this)
          value = combine(value, element);
        return value;
      };
    }
    every(f) {
      for (let element of this) {
        if (!dart.test(f(element))) return false;
      }
      return true;
    }
    join(separator) {
      if (separator === void 0) separator = "";
      let iterator = this.iterator;
      if (!dart.test(iterator.moveNext())) return "";
      let buffer = new core.StringBuffer();
      if (separator == null || separator == "") {
        do {
          buffer.write(dart.str`${iterator.current}`);
        } while (dart.test(iterator.moveNext()));
      } else {
        buffer.write(dart.str`${iterator.current}`);
        while (dart.test(iterator.moveNext())) {
          buffer.write(separator);
          buffer.write(dart.str`${iterator.current}`);
        }
      }
      return buffer.toString();
    }
    any(f) {
      for (let element of this) {
        if (dart.test(f(element))) return true;
      }
      return false;
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      return ListOfE().from(this, {growable: growable});
    }
    toSet() {
      return SetOfE().from(this);
    }
    get length() {
      dart.assert(!_internal.EfficientLength.is(this));
      let count = 0;
      let it = this[dartx.iterator];
      while (dart.test(it.moveNext())) {
        count++;
      }
      return count;
    }
    get isEmpty() {
      return !dart.test(this[dartx.iterator].moveNext());
    }
    get isNotEmpty() {
      return !dart.test(this.isEmpty);
    }
    take(count) {
      return TakeIterableOfE().new(this, count);
    }
    takeWhile(test) {
      return new (TakeWhileIterableOfE())(this, test);
    }
    skip(count) {
      return SkipIterableOfE().new(this, count);
    }
    skipWhile(test) {
      return new (SkipWhileIterableOfE())(this, test);
    }
    get first() {
      let it = this[dartx.iterator];
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      return it.current;
    }
    get last() {
      let it = this[dartx.iterator];
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let result = null;
      do {
        result = it.current;
      } while (dart.test(it.moveNext()));
      return result;
    }
    get single() {
      let it = this[dartx.iterator];
      if (!dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
      let result = it.current;
      if (dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.tooMany());
      return result;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      for (let element of this) {
        if (dart.test(test(element))) return element;
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test) {
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          if (foundMatching) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      dart.throw(_internal.IterableElementError.noElement());
    }
    elementAt(index) {
      if (!(typeof index == 'number')) dart.throw(new core.ArgumentError.notNull("index"));
      core.RangeError.checkNotNegative(index, "index");
      let elementIndex = 0;
      for (let element of this) {
        if (index == elementIndex) return element;
        elementIndex++;
      }
      dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
    }
    toString() {
      return collection.IterableBase.iterableToShortString(this, '(', ')');
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this.iterator);
    }
  }
  dart.addTypeTests(IterableMixin);
  IterableMixin[dart.implements] = () => [IterableOfE()];
  dart.setSignature(IterableMixin, {
    getters: () => ({
      length: dart.definiteFunctionType(core.int, []),
      isEmpty: dart.definiteFunctionType(core.bool, []),
      isNotEmpty: dart.definiteFunctionType(core.bool, []),
      first: dart.definiteFunctionType(E, []),
      last: dart.definiteFunctionType(E, []),
      single: dart.definiteFunctionType(E, [])
    }),
    methods: () => ({
      map: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(T, [E])]]),
      where: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      expand: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(core.Iterable$(T), [E])]]),
      contains: dart.definiteFunctionType(core.bool, [core.Object]),
      forEach: dart.definiteFunctionType(dart.void, [ETovoid()]),
      reduce: dart.definiteFunctionType(E, [EAndEToE()]),
      fold: dart.definiteFunctionType(T => [T, [T, dart.functionType(T, [T, E])]]),
      every: dart.definiteFunctionType(core.bool, [ETobool()]),
      join: dart.definiteFunctionType(core.String, [], [core.String]),
      any: dart.definiteFunctionType(core.bool, [ETobool()]),
      toList: dart.definiteFunctionType(core.List$(E), [], {growable: core.bool}),
      toSet: dart.definiteFunctionType(core.Set$(E), []),
      take: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      takeWhile: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      skip: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      skipWhile: dart.definiteFunctionType(core.Iterable$(E), [ETobool()]),
      firstWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      lastWhere: dart.definiteFunctionType(E, [ETobool()], {orElse: VoidToE()}),
      singleWhere: dart.definiteFunctionType(E, [ETobool()]),
      elementAt: dart.definiteFunctionType(E, [core.int])
    })
  });
  dart.defineExtensionMembers(IterableMixin, [
    'map',
    'where',
    'expand',
    'contains',
    'forEach',
    'reduce',
    'fold',
    'every',
    'join',
    'any',
    'toList',
    'toSet',
    'take',
    'takeWhile',
    'skip',
    'skipWhile',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'elementAt',
    'toString',
    'length',
    'isEmpty',
    'isNotEmpty',
    'first',
    'last',
    'single'
  ]);
  return IterableMixin;
});
collection.IterableMixin = IterableMixin();
dart.defineLazy(collection, {
  get _toStringVisiting() {
    return [];
  }
});
collection._isToStringVisiting = function(o) {
  for (let i = 0; i < dart.notNull(collection._toStringVisiting[dartx.length]); i++) {
    if (core.identical(o, collection._toStringVisiting[dartx._get](i))) return true;
  }
  return false;
};
dart.lazyFn(collection._isToStringVisiting, () => ObjectTobool());
collection._iterablePartsToStrings = function(iterable, parts) {
  let LENGTH_LIMIT = 80;
  let HEAD_COUNT = 3;
  let TAIL_COUNT = 2;
  let MAX_COUNT = 100;
  let OVERHEAD = 2;
  let ELLIPSIS_SIZE = 3;
  let length = 0;
  let count = 0;
  let it = iterable[dartx.iterator];
  while (dart.notNull(length) < LENGTH_LIMIT || count < HEAD_COUNT) {
    if (!dart.test(it.moveNext())) return;
    let next = dart.str`${it.current}`;
    parts[dartx.add](next);
    length = dart.notNull(length) + (dart.notNull(next[dartx.length]) + OVERHEAD);
    count++;
  }
  let penultimateString = null;
  let ultimateString = null;
  let penultimate = null;
  let ultimate = null;
  if (!dart.test(it.moveNext())) {
    if (count <= HEAD_COUNT + TAIL_COUNT) return;
    ultimateString = core.String._check(parts[dartx.removeLast]());
    penultimateString = core.String._check(parts[dartx.removeLast]());
  } else {
    penultimate = it.current;
    count++;
    if (!dart.test(it.moveNext())) {
      if (count <= HEAD_COUNT + 1) {
        parts[dartx.add](dart.str`${penultimate}`);
        return;
      }
      ultimateString = dart.str`${penultimate}`;
      penultimateString = core.String._check(parts[dartx.removeLast]());
      length = dart.notNull(length) + (dart.notNull(ultimateString[dartx.length]) + OVERHEAD);
    } else {
      ultimate = it.current;
      count++;
      dart.assert(count < MAX_COUNT);
      while (dart.test(it.moveNext())) {
        penultimate = ultimate;
        ultimate = it.current;
        count++;
        if (count > MAX_COUNT) {
          while (dart.notNull(length) > LENGTH_LIMIT - ELLIPSIS_SIZE - OVERHEAD && count > HEAD_COUNT) {
            length = dart.notNull(length) - dart.notNull(core.num._check(dart.dsend(dart.dload(parts[dartx.removeLast](), 'length'), '+', OVERHEAD)));
            count--;
          }
          parts[dartx.add]("...");
          return;
        }
      }
      penultimateString = dart.str`${penultimate}`;
      ultimateString = dart.str`${ultimate}`;
      length = dart.notNull(length) + (dart.notNull(ultimateString[dartx.length]) + dart.notNull(penultimateString[dartx.length]) + 2 * OVERHEAD);
    }
  }
  let elision = null;
  if (count > dart.notNull(parts[dartx.length]) + TAIL_COUNT) {
    elision = "...";
    length = dart.notNull(length) + (ELLIPSIS_SIZE + OVERHEAD);
  }
  while (dart.notNull(length) > LENGTH_LIMIT && dart.notNull(parts[dartx.length]) > HEAD_COUNT) {
    length = dart.notNull(length) - dart.notNull(core.num._check(dart.dsend(dart.dload(parts[dartx.removeLast](), 'length'), '+', OVERHEAD)));
    if (elision == null) {
      elision = "...";
      length = dart.notNull(length) + (ELLIPSIS_SIZE + OVERHEAD);
    }
  }
  if (elision != null) {
    parts[dartx.add](elision);
  }
  parts[dartx.add](penultimateString);
  parts[dartx.add](ultimateString);
};
dart.lazyFn(collection._iterablePartsToStrings, () => IterableAndListTovoid());
const _iterator = Symbol('_iterator');
const _state = Symbol('_state');
const _move = Symbol('_move');
collection.HasNextIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class HasNextIterator extends core.Object {
    new(iterator) {
      this[_iterator] = iterator;
      this[_state] = collection.HasNextIterator._NOT_MOVED_YET;
    }
    get hasNext() {
      if (this[_state] == collection.HasNextIterator._NOT_MOVED_YET) this[_move]();
      return this[_state] == collection.HasNextIterator._HAS_NEXT_AND_NEXT_IN_CURRENT;
    }
    next() {
      if (!dart.test(this.hasNext)) dart.throw(new core.StateError("No more elements"));
      dart.assert(this[_state] == collection.HasNextIterator._HAS_NEXT_AND_NEXT_IN_CURRENT);
      let result = this[_iterator].current;
      this[_move]();
      return result;
    }
    [_move]() {
      if (dart.test(this[_iterator].moveNext())) {
        this[_state] = collection.HasNextIterator._HAS_NEXT_AND_NEXT_IN_CURRENT;
      } else {
        this[_state] = collection.HasNextIterator._NO_NEXT;
      }
    }
  }
  dart.addTypeTests(HasNextIterator);
  dart.setSignature(HasNextIterator, {
    constructors: () => ({new: dart.definiteFunctionType(collection.HasNextIterator$(E), [IteratorOfE()])}),
    fields: () => ({
      [_iterator]: IteratorOfE(),
      [_state]: core.int
    }),
    getters: () => ({hasNext: dart.definiteFunctionType(core.bool, [])}),
    methods: () => ({
      next: dart.definiteFunctionType(E, []),
      [_move]: dart.definiteFunctionType(dart.void, [])
    }),
    sfields: () => ({
      _HAS_NEXT_AND_NEXT_IN_CURRENT: core.int,
      _NO_NEXT: core.int,
      _NOT_MOVED_YET: core.int
    })
  });
  return HasNextIterator;
});
collection.HasNextIterator = HasNextIterator();
collection.HasNextIterator._HAS_NEXT_AND_NEXT_IN_CURRENT = 0;
collection.HasNextIterator._NO_NEXT = 1;
collection.HasNextIterator._NOT_MOVED_YET = 2;
collection.LinkedHashMap$ = dart.generic((K, V) => {
  let JsLinkedHashMapOfK$V = () => (JsLinkedHashMapOfK$V = dart.constFn(_js_helper.JsLinkedHashMap$(K, V)))();
  let _LinkedIdentityHashMapOfK$V = () => (_LinkedIdentityHashMapOfK$V = dart.constFn(collection._LinkedIdentityHashMap$(K, V)))();
  let _LinkedCustomHashMapOfK$V = () => (_LinkedCustomHashMapOfK$V = dart.constFn(collection._LinkedCustomHashMap$(K, V)))();
  let LinkedHashMapOfK$V = () => (LinkedHashMapOfK$V = dart.constFn(collection.LinkedHashMap$(K, V)))();
  let HashMapOfK$V = () => (HashMapOfK$V = dart.constFn(collection.HashMap$(K, V)))();
  let KAndKTobool = () => (KAndKTobool = dart.constFn(dart.functionType(core.bool, [K, K])))();
  let KToint = () => (KToint = dart.constFn(dart.functionType(core.int, [K])))();
  let dynamicToK = () => (dynamicToK = dart.constFn(dart.functionType(K, [dart.dynamic])))();
  let IterableOfK = () => (IterableOfK = dart.constFn(core.Iterable$(K)))();
  let dynamicToV = () => (dynamicToV = dart.constFn(dart.functionType(V, [dart.dynamic])))();
  let IterableOfV = () => (IterableOfV = dart.constFn(core.Iterable$(V)))();
  class LinkedHashMap extends core.Object {
    static new(opts) {
      let equals = opts && 'equals' in opts ? opts.equals : null;
      let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
      let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
      if (isValidKey == null) {
        if (hashCode == null) {
          if (equals == null) {
            return JsLinkedHashMapOfK$V().es6();
          }
          hashCode = collection._defaultHashCode;
        } else {
          if (core.identical(core.identityHashCode, hashCode) && core.identical(core.identical, equals)) {
            return _LinkedIdentityHashMapOfK$V().es6();
          }
          if (equals == null) {
            equals = collection._defaultEquals;
          }
        }
      } else {
        if (hashCode == null) {
          hashCode = collection._defaultHashCode;
        }
        if (equals == null) {
          equals = collection._defaultEquals;
        }
      }
      return new (_LinkedCustomHashMapOfK$V())(equals, hashCode, isValidKey);
    }
    static identity() {
      return _LinkedIdentityHashMapOfK$V().es6();
    }
    static from(other) {
      let result = LinkedHashMapOfK$V().new();
      other[dartx.forEach](dart.fn((k, v) => {
        result._set(K.as(k), V.as(v));
      }, dynamicAnddynamicTovoid()));
      return result;
    }
    static fromIterable(iterable, opts) {
      let key = opts && 'key' in opts ? opts.key : null;
      let value = opts && 'value' in opts ? opts.value : null;
      let map = LinkedHashMapOfK$V().new();
      collection.Maps._fillMapWithMappedIterable(map, iterable, key, value);
      return map;
    }
    static fromIterables(keys, values) {
      let map = LinkedHashMapOfK$V().new();
      collection.Maps._fillMapWithIterables(map, keys, values);
      return map;
    }
  }
  dart.addTypeTests(LinkedHashMap);
  LinkedHashMap[dart.implements] = () => [HashMapOfK$V()];
  dart.setSignature(LinkedHashMap, {
    constructors: () => ({
      new: dart.definiteFunctionType(collection.LinkedHashMap$(K, V), [], {equals: KAndKTobool(), hashCode: KToint(), isValidKey: _PredicateOfObject()}),
      identity: dart.definiteFunctionType(collection.LinkedHashMap$(K, V), []),
      from: dart.definiteFunctionType(collection.LinkedHashMap$(K, V), [core.Map]),
      fromIterable: dart.definiteFunctionType(collection.LinkedHashMap$(K, V), [core.Iterable], {key: dynamicToK(), value: dynamicToV()}),
      fromIterables: dart.definiteFunctionType(collection.LinkedHashMap$(K, V), [IterableOfK(), IterableOfV()])
    })
  });
  return LinkedHashMap;
});
collection.LinkedHashMap = LinkedHashMap();
collection.LinkedHashSet$ = dart.generic(E => {
  let _LinkedHashSetOfE = () => (_LinkedHashSetOfE = dart.constFn(collection._LinkedHashSet$(E)))();
  let _LinkedIdentityHashSetOfE = () => (_LinkedIdentityHashSetOfE = dart.constFn(collection._LinkedIdentityHashSet$(E)))();
  let _LinkedCustomHashSetOfE = () => (_LinkedCustomHashSetOfE = dart.constFn(collection._LinkedCustomHashSet$(E)))();
  let LinkedHashSetOfE = () => (LinkedHashSetOfE = dart.constFn(collection.LinkedHashSet$(E)))();
  let HashSetOfE = () => (HashSetOfE = dart.constFn(collection.HashSet$(E)))();
  let EAndETobool = () => (EAndETobool = dart.constFn(dart.functionType(core.bool, [E, E])))();
  let EToint = () => (EToint = dart.constFn(dart.functionType(core.int, [E])))();
  class LinkedHashSet extends core.Object {
    static new(opts) {
      let equals = opts && 'equals' in opts ? opts.equals : null;
      let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
      let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
      if (isValidKey == null) {
        if (hashCode == null) {
          if (equals == null) {
            return new (_LinkedHashSetOfE())();
          }
          hashCode = collection._defaultHashCode;
        } else {
          if (core.identical(core.identityHashCode, hashCode) && core.identical(core.identical, equals)) {
            return new (_LinkedIdentityHashSetOfE())();
          }
          if (equals == null) {
            equals = collection._defaultEquals;
          }
        }
      } else {
        if (hashCode == null) {
          hashCode = collection._defaultHashCode;
        }
        if (equals == null) {
          equals = collection._defaultEquals;
        }
      }
      return new (_LinkedCustomHashSetOfE())(equals, hashCode, isValidKey);
    }
    static identity() {
      return new (_LinkedIdentityHashSetOfE())();
    }
    static from(elements) {
      let result = LinkedHashSetOfE().new();
      for (let element of elements) {
        let e = E.as(element);
        result.add(e);
      }
      return result;
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this.iterator);
    }
  }
  dart.addTypeTests(LinkedHashSet);
  LinkedHashSet[dart.implements] = () => [HashSetOfE()];
  dart.setSignature(LinkedHashSet, {
    constructors: () => ({
      new: dart.definiteFunctionType(collection.LinkedHashSet$(E), [], {equals: EAndETobool(), hashCode: EToint(), isValidKey: _PredicateOfObject()}),
      identity: dart.definiteFunctionType(collection.LinkedHashSet$(E), []),
      from: dart.definiteFunctionType(collection.LinkedHashSet$(E), [core.Iterable])
    })
  });
  return LinkedHashSet;
});
collection.LinkedHashSet = LinkedHashSet();
const _modificationCount = Symbol('_modificationCount');
const _insertBefore = Symbol('_insertBefore');
const _list = Symbol('_list');
const _unlink = Symbol('_unlink');
collection.LinkedList$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let _LinkedListIteratorOfE = () => (_LinkedListIteratorOfE = dart.constFn(collection._LinkedListIterator$(E)))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  class LinkedList extends core.Iterable$(E) {
    new() {
      this[_modificationCount] = 0;
      this[_length] = 0;
      this[_first] = null;
      super.new();
    }
    addFirst(entry) {
      E._check(entry);
      this[_insertBefore](this[_first], entry, {updateFirst: true});
      this[_first] = entry;
    }
    add(entry) {
      E._check(entry);
      this[_insertBefore](this[_first], entry, {updateFirst: false});
    }
    addAll(entries) {
      IterableOfE()._check(entries);
      entries[dartx.forEach](dart.bind(this, 'add'));
    }
    remove(entry) {
      E._check(entry);
      if (!dart.equals(entry[_list], this)) return false;
      this[_unlink](entry);
      return true;
    }
    get iterator() {
      return new (_LinkedListIteratorOfE())(this);
    }
    get length() {
      return this[_length];
    }
    clear() {
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      if (dart.test(this.isEmpty)) return;
      let next = this[_first];
      do {
        let entry = next;
        next = entry[_next];
        entry[_next] = entry[_previous] = entry[_list] = null;
      } while (!core.identical(next, this[_first]));
      this[_first] = null;
      this[_length] = 0;
    }
    get first() {
      if (dart.test(this.isEmpty)) {
        dart.throw(new core.StateError('No such element'));
      }
      return this[_first];
    }
    get last() {
      if (dart.test(this.isEmpty)) {
        dart.throw(new core.StateError('No such element'));
      }
      return this[_first][_previous];
    }
    get single() {
      if (dart.test(this.isEmpty)) {
        dart.throw(new core.StateError('No such element'));
      }
      if (dart.notNull(this[_length]) > 1) {
        dart.throw(new core.StateError('Too many elements'));
      }
      return this[_first];
    }
    forEach(action) {
      let modificationCount = this[_modificationCount];
      if (dart.test(this.isEmpty)) return;
      let current = this[_first];
      do {
        action(current);
        if (modificationCount != this[_modificationCount]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
        current = current[_next];
      } while (!core.identical(current, this[_first]));
    }
    get isEmpty() {
      return this[_length] == 0;
    }
    [_insertBefore](entry, newEntry, opts) {
      E._check(entry);
      E._check(newEntry);
      let updateFirst = opts && 'updateFirst' in opts ? opts.updateFirst : null;
      if (newEntry.list != null) {
        dart.throw(new core.StateError('LinkedListEntry is already in a LinkedList'));
      }
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      newEntry[_list] = this;
      if (dart.test(this.isEmpty)) {
        dart.assert(entry == null);
        newEntry[_previous] = newEntry[_next] = newEntry;
        this[_first] = newEntry;
        this[_length] = dart.notNull(this[_length]) + 1;
        return;
      }
      let predecessor = entry[_previous];
      let successor = entry;
      newEntry[_previous] = predecessor;
      newEntry[_next] = successor;
      predecessor[_next] = newEntry;
      successor[_previous] = newEntry;
      if (dart.test(updateFirst) && core.identical(entry, this[_first])) {
        this[_first] = newEntry;
      }
      this[_length] = dart.notNull(this[_length]) + 1;
    }
    [_unlink](entry) {
      E._check(entry);
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      entry[_next][_previous] = entry[_previous];
      let next = entry[_previous][_next] = entry[_next];
      this[_length] = dart.notNull(this[_length]) - 1;
      entry[_list] = entry[_next] = entry[_previous] = null;
      if (dart.test(this.isEmpty)) {
        this[_first] = null;
      } else if (core.identical(entry, this[_first])) {
        this[_first] = next;
      }
    }
  }
  dart.setSignature(LinkedList, {
    constructors: () => ({new: dart.definiteFunctionType(collection.LinkedList$(E), [])}),
    fields: () => ({
      [_modificationCount]: core.int,
      [_length]: core.int,
      [_first]: E
    }),
    getters: () => ({
      iterator: dart.definiteFunctionType(core.Iterator$(E), []),
      first: dart.definiteFunctionType(E, []),
      last: dart.definiteFunctionType(E, []),
      single: dart.definiteFunctionType(E, [])
    }),
    methods: () => ({
      addFirst: dart.definiteFunctionType(dart.void, [E]),
      add: dart.definiteFunctionType(dart.void, [E]),
      addAll: dart.definiteFunctionType(dart.void, [IterableOfE()]),
      remove: dart.definiteFunctionType(core.bool, [E]),
      clear: dart.definiteFunctionType(dart.void, []),
      forEach: dart.definiteFunctionType(dart.void, [ETovoid()]),
      [_insertBefore]: dart.definiteFunctionType(dart.void, [E, E], {updateFirst: core.bool}),
      [_unlink]: dart.definiteFunctionType(dart.void, [E])
    })
  });
  dart.defineExtensionMembers(LinkedList, [
    'forEach',
    'iterator',
    'length',
    'first',
    'last',
    'single',
    'isEmpty'
  ]);
  return LinkedList;
});
collection.LinkedList = LinkedList();
const _visitedFirst = Symbol('_visitedFirst');
collection._LinkedListIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let LinkedListOfE = () => (LinkedListOfE = dart.constFn(collection.LinkedList$(E)))();
  let LinkedListEntryOfE = () => (LinkedListEntryOfE = dart.constFn(collection.LinkedListEntry$(E)))();
  class _LinkedListIterator extends core.Object {
    new(list) {
      this[_list] = list;
      this[_modificationCount] = list[_modificationCount];
      this[_next] = list[_first];
      this[_visitedFirst] = false;
      this[_current] = null;
    }
    get current() {
      return this[_current];
    }
    moveNext() {
      if (this[_modificationCount] != this[_list][_modificationCount]) {
        dart.throw(new core.ConcurrentModificationError(this));
      }
      if (dart.test(this[_list].isEmpty) || dart.test(this[_visitedFirst]) && core.identical(this[_next], this[_list].first)) {
        this[_current] = null;
        return false;
      }
      this[_visitedFirst] = true;
      this[_current] = E._check(this[_next]);
      this[_next] = this[_next][_next];
      return true;
    }
  }
  dart.addTypeTests(_LinkedListIterator);
  _LinkedListIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(_LinkedListIterator, {
    constructors: () => ({new: dart.definiteFunctionType(collection._LinkedListIterator$(E), [LinkedListOfE()])}),
    fields: () => ({
      [_list]: LinkedListOfE(),
      [_modificationCount]: core.int,
      [_current]: E,
      [_next]: LinkedListEntryOfE(),
      [_visitedFirst]: core.bool
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return _LinkedListIterator;
});
collection._LinkedListIterator = _LinkedListIterator();
collection.LinkedListEntry$ = dart.generic(E => {
  let LinkedListOfE = () => (LinkedListOfE = dart.constFn(collection.LinkedList$(E)))();
  class LinkedListEntry extends core.Object {
    new() {
      this[_list] = null;
      this[_next] = null;
      this[_previous] = null;
    }
    get list() {
      return this[_list];
    }
    unlink() {
      this[_list][_unlink](E._check(this));
    }
    get next() {
      if (core.identical(this, this[_next])) return null;
      return this[_next];
    }
    get previous() {
      if (core.identical(this, this[_previous])) return null;
      return this[_previous];
    }
    insertAfter(entry) {
      E._check(entry);
      this[_list][_insertBefore](this[_next], entry, {updateFirst: false});
    }
    insertBefore(entry) {
      E._check(entry);
      this[_list][_insertBefore](E.as(this), entry, {updateFirst: true});
    }
  }
  dart.addTypeTests(LinkedListEntry);
  dart.setSignature(LinkedListEntry, {
    fields: () => ({
      [_list]: LinkedListOfE(),
      [_next]: E,
      [_previous]: E
    }),
    getters: () => ({
      list: dart.definiteFunctionType(collection.LinkedList$(E), []),
      next: dart.definiteFunctionType(E, []),
      previous: dart.definiteFunctionType(E, [])
    }),
    methods: () => ({
      unlink: dart.definiteFunctionType(dart.void, []),
      insertAfter: dart.definiteFunctionType(dart.void, [E]),
      insertBefore: dart.definiteFunctionType(dart.void, [E])
    })
  });
  return LinkedListEntry;
});
collection.LinkedListEntry = LinkedListEntry();
collection.MapMixin$ = dart.generic((K, V) => {
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let _MapBaseValueIterableOfK$V = () => (_MapBaseValueIterableOfK$V = dart.constFn(collection._MapBaseValueIterable$(K, V)))();
  let KAndVTovoid = () => (KAndVTovoid = dart.constFn(dart.functionType(dart.void, [K, V])))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.functionType(V, [])))();
  class MapMixin extends core.Object {
    forEach(action) {
      for (let key of this.keys) {
        action(key, this._get(key));
      }
    }
    addAll(other) {
      MapOfK$V()._check(other);
      for (let key of other[dartx.keys]) {
        this._set(key, other[dartx._get](key));
      }
    }
    containsValue(value) {
      for (let key of this.keys) {
        if (dart.equals(this._get(key), value)) return true;
      }
      return false;
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      if (dart.test(this.containsKey(key))) {
        return this._get(key);
      }
      return this._set(key, ifAbsent());
    }
    containsKey(key) {
      return this.keys[dartx.contains](key);
    }
    get length() {
      return this.keys[dartx.length];
    }
    get isEmpty() {
      return this.keys[dartx.isEmpty];
    }
    get isNotEmpty() {
      return this.keys[dartx.isNotEmpty];
    }
    get values() {
      return new (_MapBaseValueIterableOfK$V())(this);
    }
    toString() {
      return collection.Maps.mapToString(this);
    }
  }
  dart.addTypeTests(MapMixin);
  MapMixin[dart.implements] = () => [MapOfK$V()];
  dart.setSignature(MapMixin, {
    getters: () => ({
      length: dart.definiteFunctionType(core.int, []),
      isEmpty: dart.definiteFunctionType(core.bool, []),
      isNotEmpty: dart.definiteFunctionType(core.bool, []),
      values: dart.definiteFunctionType(core.Iterable$(V), [])
    }),
    methods: () => ({
      forEach: dart.definiteFunctionType(dart.void, [KAndVTovoid()]),
      addAll: dart.definiteFunctionType(dart.void, [MapOfK$V()]),
      containsValue: dart.definiteFunctionType(core.bool, [core.Object]),
      putIfAbsent: dart.definiteFunctionType(V, [K, VoidToV()]),
      containsKey: dart.definiteFunctionType(core.bool, [core.Object])
    })
  });
  dart.defineExtensionMembers(MapMixin, [
    'forEach',
    'addAll',
    'containsValue',
    'putIfAbsent',
    'containsKey',
    'length',
    'isEmpty',
    'isNotEmpty',
    'values'
  ]);
  return MapMixin;
});
collection.MapMixin = MapMixin();
collection.MapBase$ = dart.generic((K, V) => {
  class MapBase extends dart.mixin(core.Object, collection.MapMixin$(K, V)) {}
  return MapBase;
});
collection.MapBase = MapBase();
collection._UnmodifiableMapMixin$ = dart.generic((K, V) => {
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.functionType(V, [])))();
  class _UnmodifiableMapMixin extends core.Object {
    _set(key, value) {
      K._check(key);
      V._check(value);
      dart.throw(new core.UnsupportedError("Cannot modify unmodifiable map"));
      return value;
    }
    addAll(other) {
      MapOfK$V()._check(other);
      dart.throw(new core.UnsupportedError("Cannot modify unmodifiable map"));
    }
    clear() {
      dart.throw(new core.UnsupportedError("Cannot modify unmodifiable map"));
    }
    remove(key) {
      dart.throw(new core.UnsupportedError("Cannot modify unmodifiable map"));
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      dart.throw(new core.UnsupportedError("Cannot modify unmodifiable map"));
    }
  }
  dart.addTypeTests(_UnmodifiableMapMixin);
  _UnmodifiableMapMixin[dart.implements] = () => [MapOfK$V()];
  dart.setSignature(_UnmodifiableMapMixin, {
    methods: () => ({
      _set: dart.definiteFunctionType(dart.void, [K, V]),
      addAll: dart.definiteFunctionType(dart.void, [MapOfK$V()]),
      clear: dart.definiteFunctionType(dart.void, []),
      remove: dart.definiteFunctionType(V, [core.Object]),
      putIfAbsent: dart.definiteFunctionType(V, [K, VoidToV()])
    })
  });
  dart.defineExtensionMembers(_UnmodifiableMapMixin, [
    '_set',
    'addAll',
    'clear',
    'remove',
    'putIfAbsent'
  ]);
  return _UnmodifiableMapMixin;
});
collection._UnmodifiableMapMixin = _UnmodifiableMapMixin();
collection.UnmodifiableMapBase$ = dart.generic((K, V) => {
  class UnmodifiableMapBase extends dart.mixin(collection.MapBase$(K, V), collection._UnmodifiableMapMixin$(K, V)) {
    new() {
      super.new();
    }
  }
  return UnmodifiableMapBase;
});
collection.UnmodifiableMapBase = UnmodifiableMapBase();
collection._MapBaseValueIterable$ = dart.generic((K, V) => {
  let _MapBaseValueIteratorOfK$V = () => (_MapBaseValueIteratorOfK$V = dart.constFn(collection._MapBaseValueIterator$(K, V)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  class _MapBaseValueIterable extends core.Iterable$(V) {
    new(map) {
      this[_map] = map;
      super.new();
    }
    get length() {
      return this[_map][dartx.length];
    }
    get isEmpty() {
      return this[_map][dartx.isEmpty];
    }
    get isNotEmpty() {
      return this[_map][dartx.isNotEmpty];
    }
    get first() {
      return this[_map][dartx._get](this[_map][dartx.keys][dartx.first]);
    }
    get single() {
      return this[_map][dartx._get](this[_map][dartx.keys][dartx.single]);
    }
    get last() {
      return this[_map][dartx._get](this[_map][dartx.keys][dartx.last]);
    }
    get iterator() {
      return new (_MapBaseValueIteratorOfK$V())(this[_map]);
    }
  }
  _MapBaseValueIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(_MapBaseValueIterable, {
    constructors: () => ({new: dart.definiteFunctionType(collection._MapBaseValueIterable$(K, V), [MapOfK$V()])}),
    fields: () => ({[_map]: MapOfK$V()}),
    getters: () => ({
      first: dart.definiteFunctionType(V, []),
      single: dart.definiteFunctionType(V, []),
      last: dart.definiteFunctionType(V, []),
      iterator: dart.definiteFunctionType(core.Iterator$(V), [])
    })
  });
  dart.defineExtensionMembers(_MapBaseValueIterable, [
    'length',
    'isEmpty',
    'isNotEmpty',
    'first',
    'single',
    'last',
    'iterator'
  ]);
  return _MapBaseValueIterable;
});
collection._MapBaseValueIterable = _MapBaseValueIterable();
collection._MapBaseValueIterator$ = dart.generic((K, V) => {
  let IteratorOfK = () => (IteratorOfK = dart.constFn(core.Iterator$(K)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let IteratorOfV = () => (IteratorOfV = dart.constFn(core.Iterator$(V)))();
  class _MapBaseValueIterator extends core.Object {
    new(map) {
      this[_map] = map;
      this[_keys] = map[dartx.keys][dartx.iterator];
      this[_current] = null;
    }
    moveNext() {
      if (dart.test(this[_keys].moveNext())) {
        this[_current] = this[_map][dartx._get](this[_keys].current);
        return true;
      }
      this[_current] = null;
      return false;
    }
    get current() {
      return this[_current];
    }
  }
  dart.addTypeTests(_MapBaseValueIterator);
  _MapBaseValueIterator[dart.implements] = () => [IteratorOfV()];
  dart.setSignature(_MapBaseValueIterator, {
    constructors: () => ({new: dart.definiteFunctionType(collection._MapBaseValueIterator$(K, V), [MapOfK$V()])}),
    fields: () => ({
      [_keys]: IteratorOfK(),
      [_map]: MapOfK$V(),
      [_current]: V
    }),
    getters: () => ({current: dart.definiteFunctionType(V, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return _MapBaseValueIterator;
});
collection._MapBaseValueIterator = _MapBaseValueIterator();
collection.MapView$ = dart.generic((K, V) => {
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let KAndVTovoid = () => (KAndVTovoid = dart.constFn(dart.functionType(dart.void, [K, V])))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.functionType(V, [])))();
  class MapView extends core.Object {
    new(map) {
      this[_map] = map;
    }
    _get(key) {
      return this[_map][dartx._get](key);
    }
    _set(key, value) {
      K._check(key);
      V._check(value);
      this[_map][dartx._set](key, value);
      return value;
    }
    addAll(other) {
      MapOfK$V()._check(other);
      this[_map][dartx.addAll](other);
    }
    clear() {
      this[_map][dartx.clear]();
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      return this[_map][dartx.putIfAbsent](key, ifAbsent);
    }
    containsKey(key) {
      return this[_map][dartx.containsKey](key);
    }
    containsValue(value) {
      return this[_map][dartx.containsValue](value);
    }
    forEach(action) {
      this[_map][dartx.forEach](action);
    }
    get isEmpty() {
      return this[_map][dartx.isEmpty];
    }
    get isNotEmpty() {
      return this[_map][dartx.isNotEmpty];
    }
    get length() {
      return this[_map][dartx.length];
    }
    get keys() {
      return this[_map][dartx.keys];
    }
    remove(key) {
      return this[_map][dartx.remove](key);
    }
    toString() {
      return dart.toString(this[_map]);
    }
    get values() {
      return this[_map][dartx.values];
    }
  }
  dart.addTypeTests(MapView);
  MapView[dart.implements] = () => [MapOfK$V()];
  dart.setSignature(MapView, {
    constructors: () => ({new: dart.definiteFunctionType(collection.MapView$(K, V), [MapOfK$V()])}),
    fields: () => ({[_map]: MapOfK$V()}),
    getters: () => ({
      isEmpty: dart.definiteFunctionType(core.bool, []),
      isNotEmpty: dart.definiteFunctionType(core.bool, []),
      length: dart.definiteFunctionType(core.int, []),
      keys: dart.definiteFunctionType(core.Iterable$(K), []),
      values: dart.definiteFunctionType(core.Iterable$(V), [])
    }),
    methods: () => ({
      _get: dart.definiteFunctionType(V, [core.Object]),
      _set: dart.definiteFunctionType(dart.void, [K, V]),
      addAll: dart.definiteFunctionType(dart.void, [MapOfK$V()]),
      clear: dart.definiteFunctionType(dart.void, []),
      putIfAbsent: dart.definiteFunctionType(V, [K, VoidToV()]),
      containsKey: dart.definiteFunctionType(core.bool, [core.Object]),
      containsValue: dart.definiteFunctionType(core.bool, [core.Object]),
      forEach: dart.definiteFunctionType(dart.void, [KAndVTovoid()]),
      remove: dart.definiteFunctionType(V, [core.Object])
    })
  });
  dart.defineExtensionMembers(MapView, [
    '_get',
    '_set',
    'addAll',
    'clear',
    'putIfAbsent',
    'containsKey',
    'containsValue',
    'forEach',
    'remove',
    'isEmpty',
    'isNotEmpty',
    'length',
    'keys',
    'values'
  ]);
  return MapView;
});
collection.MapView = MapView();
collection.UnmodifiableMapView$ = dart.generic((K, V) => {
  class UnmodifiableMapView extends dart.mixin(collection.MapView$(K, V), collection._UnmodifiableMapMixin$(K, V)) {
    new(map) {
      super.new(map);
    }
  }
  return UnmodifiableMapView;
});
collection.UnmodifiableMapView = UnmodifiableMapView();
collection.Maps = class Maps extends core.Object {
  static containsValue(map, value) {
    for (let v of map[dartx.values]) {
      if (dart.equals(v, value)) {
        return true;
      }
    }
    return false;
  }
  static containsKey(map, key) {
    for (let k of map[dartx.keys]) {
      if (dart.equals(k, key)) {
        return true;
      }
    }
    return false;
  }
  static putIfAbsent(map, key, ifAbsent) {
    if (dart.test(map[dartx.containsKey](key))) {
      return map[dartx._get](key);
    }
    let v = ifAbsent();
    map[dartx._set](key, v);
    return v;
  }
  static clear(map) {
    for (let k of map[dartx.keys][dartx.toList]()) {
      map[dartx.remove](k);
    }
  }
  static forEach(map, f) {
    for (let k of map[dartx.keys]) {
      dart.dcall(f, k, map[dartx._get](k));
    }
  }
  static getValues(map) {
    return map[dartx.keys][dartx.map](dart.dynamic)(dart.fn(key => map[dartx._get](key), dynamicTodynamic()));
  }
  static length(map) {
    return map[dartx.keys][dartx.length];
  }
  static isEmpty(map) {
    return map[dartx.keys][dartx.isEmpty];
  }
  static isNotEmpty(map) {
    return map[dartx.keys][dartx.isNotEmpty];
  }
  static mapToString(m) {
    if (dart.test(collection._isToStringVisiting(m))) {
      return '{...}';
    }
    let result = new core.StringBuffer();
    try {
      collection._toStringVisiting[dartx.add](m);
      result.write('{');
      let first = true;
      m[dartx.forEach](dart.fn((k, v) => {
        if (!first) {
          result.write(', ');
        }
        first = false;
        result.write(k);
        result.write(': ');
        result.write(v);
      }, dynamicAnddynamicTovoid()));
      result.write('}');
    } finally {
      dart.assert(core.identical(collection._toStringVisiting[dartx.last], m));
      collection._toStringVisiting[dartx.removeLast]();
    }
    return result.toString();
  }
  static _id(x) {
    return x;
  }
  static _fillMapWithMappedIterable(map, iterable, key, value) {
    if (key == null) key = collection.Maps._id;
    if (value == null) value = collection.Maps._id;
    for (let element of iterable) {
      map[dartx._set](dart.dcall(key, element), dart.dcall(value, element));
    }
  }
  static _fillMapWithIterables(map, keys, values) {
    let keyIterator = keys[dartx.iterator];
    let valueIterator = values[dartx.iterator];
    let hasNextKey = keyIterator.moveNext();
    let hasNextValue = valueIterator.moveNext();
    while (dart.test(hasNextKey) && dart.test(hasNextValue)) {
      map[dartx._set](keyIterator.current, valueIterator.current);
      hasNextKey = keyIterator.moveNext();
      hasNextValue = valueIterator.moveNext();
    }
    if (dart.test(hasNextKey) || dart.test(hasNextValue)) {
      dart.throw(new core.ArgumentError("Iterables do not have same length."));
    }
  }
};
dart.setSignature(collection.Maps, {
  statics: () => ({
    containsValue: dart.definiteFunctionType(core.bool, [core.Map, core.Object]),
    containsKey: dart.definiteFunctionType(core.bool, [core.Map, core.Object]),
    putIfAbsent: dart.definiteFunctionType(dart.dynamic, [core.Map, dart.dynamic, VoidTodynamic()]),
    clear: dart.definiteFunctionType(dart.dynamic, [core.Map]),
    forEach: dart.definiteFunctionType(dart.dynamic, [core.Map, dynamicAnddynamicTovoid()]),
    getValues: dart.definiteFunctionType(core.Iterable, [core.Map]),
    length: dart.definiteFunctionType(core.int, [core.Map]),
    isEmpty: dart.definiteFunctionType(core.bool, [core.Map]),
    isNotEmpty: dart.definiteFunctionType(core.bool, [core.Map]),
    mapToString: dart.definiteFunctionType(core.String, [core.Map]),
    _id: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    _fillMapWithMappedIterable: dart.definiteFunctionType(dart.void, [core.Map, core.Iterable, dynamicTodynamic(), dynamicTodynamic()]),
    _fillMapWithIterables: dart.definiteFunctionType(dart.void, [core.Map, core.Iterable, core.Iterable])
  }),
  names: ['containsValue', 'containsKey', 'putIfAbsent', 'clear', 'forEach', 'getValues', 'length', 'isEmpty', 'isNotEmpty', 'mapToString', '_id', '_fillMapWithMappedIterable', '_fillMapWithIterables']
});
collection.Queue$ = dart.generic(E => {
  let ListQueueOfE = () => (ListQueueOfE = dart.constFn(collection.ListQueue$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class Queue extends core.Object {
    static new() {
      return new (ListQueueOfE())();
    }
    static from(elements) {
      return ListQueueOfE().from(elements);
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this.iterator);
    }
  }
  dart.addTypeTests(Queue);
  Queue[dart.implements] = () => [IterableOfE(), _internal.EfficientLength];
  dart.setSignature(Queue, {
    constructors: () => ({
      new: dart.definiteFunctionType(collection.Queue$(E), []),
      from: dart.definiteFunctionType(collection.Queue$(E), [core.Iterable])
    })
  });
  return Queue;
});
collection.Queue = Queue();
const _previousLink = Symbol('_previousLink');
const _nextLink = Symbol('_nextLink');
const _link = Symbol('_link');
collection._DoubleLink$ = dart.generic(E => {
  class _DoubleLink extends core.Object {
    new() {
      this[_previousLink] = null;
      this[_nextLink] = null;
    }
    [_link](previous, next) {
      E._check(previous);
      E._check(next);
      this[_nextLink] = next;
      this[_previousLink] = previous;
      if (previous != null) previous[_nextLink] = this;
      if (next != null) next[_previousLink] = this;
    }
    [_unlink]() {
      if (this[_previousLink] != null) this[_previousLink][_nextLink] = this[_nextLink];
      if (this[_nextLink] != null) this[_nextLink][_previousLink] = this[_previousLink];
      this[_nextLink] = null;
      this[_previousLink] = null;
    }
  }
  dart.addTypeTests(_DoubleLink);
  dart.setSignature(_DoubleLink, {
    fields: () => ({
      [_previousLink]: E,
      [_nextLink]: E
    }),
    methods: () => ({
      [_link]: dart.definiteFunctionType(dart.void, [E, E]),
      [_unlink]: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _DoubleLink;
});
collection._DoubleLink = _DoubleLink();
collection.DoubleLinkedQueueEntry$ = dart.generic(E => {
  let _UserDoubleLinkedQueueEntryOfE = () => (_UserDoubleLinkedQueueEntryOfE = dart.constFn(collection._UserDoubleLinkedQueueEntry$(E)))();
  class DoubleLinkedQueueEntry extends core.Object {
    static new(element) {
      return new (_UserDoubleLinkedQueueEntryOfE())(element);
    }
  }
  dart.addTypeTests(DoubleLinkedQueueEntry);
  dart.setSignature(DoubleLinkedQueueEntry, {
    constructors: () => ({new: dart.definiteFunctionType(collection.DoubleLinkedQueueEntry$(E), [E])})
  });
  return DoubleLinkedQueueEntry;
});
collection.DoubleLinkedQueueEntry = DoubleLinkedQueueEntry();
collection._UserDoubleLinkedQueueEntry$ = dart.generic(E => {
  let _UserDoubleLinkedQueueEntryOfE = () => (_UserDoubleLinkedQueueEntryOfE = dart.constFn(collection._UserDoubleLinkedQueueEntry$(E)))();
  let DoubleLinkedQueueEntryOfE = () => (DoubleLinkedQueueEntryOfE = dart.constFn(collection.DoubleLinkedQueueEntry$(E)))();
  class _UserDoubleLinkedQueueEntry extends collection._DoubleLink {
    new(element) {
      this.element = element;
      super.new();
    }
    append(e) {
      E._check(e);
      new (_UserDoubleLinkedQueueEntryOfE())(e)[_link](this, this[_nextLink]);
    }
    prepend(e) {
      E._check(e);
      new (_UserDoubleLinkedQueueEntryOfE())(e)[_link](this[_previousLink], this);
    }
    remove() {
      this[_unlink]();
      return this.element;
    }
    previousEntry() {
      return this[_previousLink];
    }
    nextEntry() {
      return this[_nextLink];
    }
  }
  _UserDoubleLinkedQueueEntry[dart.implements] = () => [DoubleLinkedQueueEntryOfE()];
  dart.setSignature(_UserDoubleLinkedQueueEntry, {
    constructors: () => ({new: dart.definiteFunctionType(collection._UserDoubleLinkedQueueEntry$(E), [E])}),
    fields: () => ({element: E}),
    methods: () => ({
      append: dart.definiteFunctionType(dart.void, [E]),
      prepend: dart.definiteFunctionType(dart.void, [E]),
      remove: dart.definiteFunctionType(E, []),
      previousEntry: dart.definiteFunctionType(collection.DoubleLinkedQueueEntry$(E), []),
      nextEntry: dart.definiteFunctionType(collection.DoubleLinkedQueueEntry$(E), [])
    })
  });
  return _UserDoubleLinkedQueueEntry;
}, _UserDoubleLinkedQueueEntry => {
  dart.setBaseClass(_UserDoubleLinkedQueueEntry, collection._DoubleLink$(_UserDoubleLinkedQueueEntry));
});
collection._UserDoubleLinkedQueueEntry = _UserDoubleLinkedQueueEntry();
const _queue = Symbol('_queue');
const _append = Symbol('_append');
const _prepend = Symbol('_prepend');
const _asNonSentinelEntry = Symbol('_asNonSentinelEntry');
collection._DoubleLinkedQueueEntry$ = dart.generic(E => {
  let _DoubleLinkedQueueElementOfE = () => (_DoubleLinkedQueueElementOfE = dart.constFn(collection._DoubleLinkedQueueElement$(E)))();
  let DoubleLinkedQueueOfE = () => (DoubleLinkedQueueOfE = dart.constFn(collection.DoubleLinkedQueue$(E)))();
  class _DoubleLinkedQueueEntry extends collection._DoubleLink {
    new(queue) {
      this[_queue] = queue;
      super.new();
    }
    [_append](e) {
      E._check(e);
      new (_DoubleLinkedQueueElementOfE())(e, this[_queue])[_link](this, this[_nextLink]);
    }
    [_prepend](e) {
      E._check(e);
      new (_DoubleLinkedQueueElementOfE())(e, this[_queue])[_link](this[_previousLink], this);
    }
    nextEntry() {
      return this[_nextLink][_asNonSentinelEntry]();
    }
    previousEntry() {
      return this[_previousLink][_asNonSentinelEntry]();
    }
  }
  dart.setSignature(_DoubleLinkedQueueEntry, {
    constructors: () => ({new: dart.definiteFunctionType(collection._DoubleLinkedQueueEntry$(E), [DoubleLinkedQueueOfE()])}),
    fields: () => ({[_queue]: DoubleLinkedQueueOfE()}),
    methods: () => ({
      [_append]: dart.definiteFunctionType(dart.void, [E]),
      [_prepend]: dart.definiteFunctionType(dart.void, [E]),
      nextEntry: dart.definiteFunctionType(collection.DoubleLinkedQueueEntry$(E), []),
      previousEntry: dart.definiteFunctionType(collection.DoubleLinkedQueueEntry$(E), [])
    })
  });
  return _DoubleLinkedQueueEntry;
}, _DoubleLinkedQueueEntry => {
  dart.setBaseClass(_DoubleLinkedQueueEntry, collection._DoubleLink$(_DoubleLinkedQueueEntry));
});
collection._DoubleLinkedQueueEntry = _DoubleLinkedQueueEntry();
const _elementCount = Symbol('_elementCount');
collection._DoubleLinkedQueueElement$ = dart.generic(E => {
  let DoubleLinkedQueueEntryOfE = () => (DoubleLinkedQueueEntryOfE = dart.constFn(collection.DoubleLinkedQueueEntry$(E)))();
  let DoubleLinkedQueueOfE = () => (DoubleLinkedQueueOfE = dart.constFn(collection.DoubleLinkedQueue$(E)))();
  class _DoubleLinkedQueueElement extends collection._DoubleLinkedQueueEntry$(E) {
    new(element, queue) {
      this.element = element;
      super.new(queue);
    }
    append(e) {
      E._check(e);
      this[_append](e);
      if (this[_queue] != null) {
        let o = this[_queue];
        o[_elementCount] = dart.notNull(o[_elementCount]) + 1;
      }
    }
    prepend(e) {
      E._check(e);
      this[_prepend](e);
      if (this[_queue] != null) {
        let o = this[_queue];
        o[_elementCount] = dart.notNull(o[_elementCount]) + 1;
      }
    }
    [_remove]() {
      this[_queue] = null;
      this[_unlink]();
      return this.element;
    }
    remove() {
      if (this[_queue] != null) {
        let o = this[_queue];
        o[_elementCount] = dart.notNull(o[_elementCount]) - 1;
      }
      return this[_remove]();
    }
    [_asNonSentinelEntry]() {
      return this;
    }
  }
  _DoubleLinkedQueueElement[dart.implements] = () => [DoubleLinkedQueueEntryOfE()];
  dart.setSignature(_DoubleLinkedQueueElement, {
    constructors: () => ({new: dart.definiteFunctionType(collection._DoubleLinkedQueueElement$(E), [E, DoubleLinkedQueueOfE()])}),
    fields: () => ({element: E}),
    methods: () => ({
      append: dart.definiteFunctionType(dart.void, [E]),
      prepend: dart.definiteFunctionType(dart.void, [E]),
      [_remove]: dart.definiteFunctionType(E, []),
      remove: dart.definiteFunctionType(E, []),
      [_asNonSentinelEntry]: dart.definiteFunctionType(collection._DoubleLinkedQueueElement$(E), [])
    })
  });
  return _DoubleLinkedQueueElement;
});
collection._DoubleLinkedQueueElement = _DoubleLinkedQueueElement();
collection._DoubleLinkedQueueSentinel$ = dart.generic(E => {
  let DoubleLinkedQueueOfE = () => (DoubleLinkedQueueOfE = dart.constFn(collection.DoubleLinkedQueue$(E)))();
  class _DoubleLinkedQueueSentinel extends collection._DoubleLinkedQueueEntry$(E) {
    new(queue) {
      super.new(queue);
      this[_previousLink] = this;
      this[_nextLink] = this;
    }
    [_asNonSentinelEntry]() {
      return null;
    }
    [_remove]() {
      dart.throw(_internal.IterableElementError.noElement());
    }
    get element() {
      dart.throw(_internal.IterableElementError.noElement());
    }
  }
  dart.setSignature(_DoubleLinkedQueueSentinel, {
    constructors: () => ({new: dart.definiteFunctionType(collection._DoubleLinkedQueueSentinel$(E), [DoubleLinkedQueueOfE()])}),
    getters: () => ({element: dart.definiteFunctionType(E, [])}),
    methods: () => ({
      [_asNonSentinelEntry]: dart.definiteFunctionType(collection.DoubleLinkedQueueEntry$(E), []),
      [_remove]: dart.definiteFunctionType(E, [])
    })
  });
  return _DoubleLinkedQueueSentinel;
});
collection._DoubleLinkedQueueSentinel = _DoubleLinkedQueueSentinel();
const _sentinel = Symbol('_sentinel');
collection.DoubleLinkedQueue$ = dart.generic(E => {
  let _DoubleLinkedQueueSentinelOfE = () => (_DoubleLinkedQueueSentinelOfE = dart.constFn(collection._DoubleLinkedQueueSentinel$(E)))();
  let DoubleLinkedQueueOfE = () => (DoubleLinkedQueueOfE = dart.constFn(collection.DoubleLinkedQueue$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let _DoubleLinkedQueueElementOfE = () => (_DoubleLinkedQueueElementOfE = dart.constFn(collection._DoubleLinkedQueueElement$(E)))();
  let _DoubleLinkedQueueIteratorOfE = () => (_DoubleLinkedQueueIteratorOfE = dart.constFn(collection._DoubleLinkedQueueIterator$(E)))();
  let QueueOfE = () => (QueueOfE = dart.constFn(collection.Queue$(E)))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  let DoubleLinkedQueueEntryOfE = () => (DoubleLinkedQueueEntryOfE = dart.constFn(collection.DoubleLinkedQueueEntry$(E)))();
  let DoubleLinkedQueueEntryOfETovoid = () => (DoubleLinkedQueueEntryOfETovoid = dart.constFn(dart.functionType(dart.void, [DoubleLinkedQueueEntryOfE()])))();
  class DoubleLinkedQueue extends core.Iterable$(E) {
    new() {
      this[_sentinel] = null;
      this[_elementCount] = 0;
      super.new();
      this[_sentinel] = new (_DoubleLinkedQueueSentinelOfE())(this);
    }
    static from(elements) {
      let list = new (DoubleLinkedQueueOfE())();
      for (let e of elements) {
        let element = E.as(e);
        list.addLast(element);
      }
      return DoubleLinkedQueueOfE()._check(list);
    }
    get length() {
      return this[_elementCount];
    }
    addLast(value) {
      E._check(value);
      this[_sentinel][_prepend](value);
      this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
    }
    addFirst(value) {
      E._check(value);
      this[_sentinel][_append](value);
      this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
    }
    add(value) {
      E._check(value);
      this[_sentinel][_prepend](value);
      this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
    }
    addAll(iterable) {
      IterableOfE()._check(iterable);
      for (let value of iterable) {
        this[_sentinel][_prepend](value);
        this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
      }
    }
    removeLast() {
      let lastEntry = this[_sentinel][_previousLink];
      let result = lastEntry[_remove]();
      this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
      return result;
    }
    removeFirst() {
      let firstEntry = this[_sentinel][_nextLink];
      let result = firstEntry[_remove]();
      this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
      return result;
    }
    remove(o) {
      let entry = this[_sentinel][_nextLink];
      while (!core.identical(entry, this[_sentinel])) {
        if (dart.equals(entry.element, o)) {
          entry[_remove]();
          this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
          return true;
        }
        entry = entry[_nextLink];
      }
      return false;
    }
    [_filter](test, removeMatching) {
      let entry = this[_sentinel][_nextLink];
      while (!core.identical(entry, this[_sentinel])) {
        let next = entry[_nextLink];
        if (core.identical(removeMatching, test(entry.element))) {
          entry[_remove]();
          this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
        }
        entry = next;
      }
    }
    removeWhere(test) {
      this[_filter](test, true);
    }
    retainWhere(test) {
      this[_filter](test, false);
    }
    get first() {
      let firstEntry = this[_sentinel][_nextLink];
      return firstEntry.element;
    }
    get last() {
      let lastEntry = this[_sentinel][_previousLink];
      return lastEntry.element;
    }
    get single() {
      if (core.identical(this[_sentinel][_nextLink], this[_sentinel][_previousLink])) {
        let entry = this[_sentinel][_nextLink];
        return entry.element;
      }
      dart.throw(_internal.IterableElementError.tooMany());
    }
    lastEntry() {
      return this[_sentinel].previousEntry();
    }
    firstEntry() {
      return this[_sentinel].nextEntry();
    }
    get isEmpty() {
      return core.identical(this[_sentinel][_nextLink], this[_sentinel]);
    }
    clear() {
      this[_sentinel][_nextLink] = this[_sentinel];
      this[_sentinel][_previousLink] = this[_sentinel];
      this[_elementCount] = 0;
    }
    forEachEntry(f) {
      let entry = this[_sentinel][_nextLink];
      while (!core.identical(entry, this[_sentinel])) {
        let nextEntry = entry[_nextLink];
        let element = _DoubleLinkedQueueElementOfE()._check(entry);
        f(element);
        entry = nextEntry;
      }
    }
    get iterator() {
      return new (_DoubleLinkedQueueIteratorOfE())(this[_sentinel]);
    }
    toString() {
      return collection.IterableBase.iterableToFullString(this, '{', '}');
    }
  }
  DoubleLinkedQueue[dart.implements] = () => [QueueOfE()];
  dart.setSignature(DoubleLinkedQueue, {
    constructors: () => ({
      new: dart.definiteFunctionType(collection.DoubleLinkedQueue$(E), []),
      from: dart.definiteFunctionType(collection.DoubleLinkedQueue$(E), [core.Iterable])
    }),
    fields: () => ({
      [_sentinel]: _DoubleLinkedQueueSentinelOfE(),
      [_elementCount]: core.int
    }),
    getters: () => ({
      first: dart.definiteFunctionType(E, []),
      last: dart.definiteFunctionType(E, []),
      single: dart.definiteFunctionType(E, []),
      iterator: dart.definiteFunctionType(collection._DoubleLinkedQueueIterator$(E), [])
    }),
    methods: () => ({
      addLast: dart.definiteFunctionType(dart.void, [E]),
      addFirst: dart.definiteFunctionType(dart.void, [E]),
      add: dart.definiteFunctionType(dart.void, [E]),
      addAll: dart.definiteFunctionType(dart.void, [IterableOfE()]),
      removeLast: dart.definiteFunctionType(E, []),
      removeFirst: dart.definiteFunctionType(E, []),
      remove: dart.definiteFunctionType(core.bool, [core.Object]),
      [_filter]: dart.definiteFunctionType(dart.void, [ETobool(), core.bool]),
      removeWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      retainWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      lastEntry: dart.definiteFunctionType(collection.DoubleLinkedQueueEntry$(E), []),
      firstEntry: dart.definiteFunctionType(collection.DoubleLinkedQueueEntry$(E), []),
      clear: dart.definiteFunctionType(dart.void, []),
      forEachEntry: dart.definiteFunctionType(dart.void, [DoubleLinkedQueueEntryOfETovoid()])
    })
  });
  dart.defineExtensionMembers(DoubleLinkedQueue, [
    'toString',
    'length',
    'first',
    'last',
    'single',
    'isEmpty',
    'iterator'
  ]);
  return DoubleLinkedQueue;
});
collection.DoubleLinkedQueue = DoubleLinkedQueue();
const _nextEntry = Symbol('_nextEntry');
collection._DoubleLinkedQueueIterator$ = dart.generic(E => {
  let _DoubleLinkedQueueElementOfE = () => (_DoubleLinkedQueueElementOfE = dart.constFn(collection._DoubleLinkedQueueElement$(E)))();
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let _DoubleLinkedQueueSentinelOfE = () => (_DoubleLinkedQueueSentinelOfE = dart.constFn(collection._DoubleLinkedQueueSentinel$(E)))();
  let _DoubleLinkedQueueEntryOfE = () => (_DoubleLinkedQueueEntryOfE = dart.constFn(collection._DoubleLinkedQueueEntry$(E)))();
  class _DoubleLinkedQueueIterator extends core.Object {
    new(sentinel) {
      this[_sentinel] = sentinel;
      this[_nextEntry] = sentinel[_nextLink];
      this[_current] = null;
    }
    moveNext() {
      if (core.identical(this[_nextEntry], this[_sentinel])) {
        this[_current] = null;
        this[_nextEntry] = null;
        this[_sentinel] = null;
        return false;
      }
      let elementEntry = _DoubleLinkedQueueElementOfE()._check(this[_nextEntry]);
      if (elementEntry[_queue] == null) {
        dart.throw(new core.ConcurrentModificationError(this[_sentinel][_queue]));
      }
      this[_current] = elementEntry.element;
      this[_nextEntry] = elementEntry[_nextLink];
      return true;
    }
    get current() {
      return this[_current];
    }
  }
  dart.addTypeTests(_DoubleLinkedQueueIterator);
  _DoubleLinkedQueueIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(_DoubleLinkedQueueIterator, {
    constructors: () => ({new: dart.definiteFunctionType(collection._DoubleLinkedQueueIterator$(E), [_DoubleLinkedQueueSentinelOfE()])}),
    fields: () => ({
      [_sentinel]: _DoubleLinkedQueueSentinelOfE(),
      [_nextEntry]: _DoubleLinkedQueueEntryOfE(),
      [_current]: E
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return _DoubleLinkedQueueIterator;
});
collection._DoubleLinkedQueueIterator = _DoubleLinkedQueueIterator();
const _head = Symbol('_head');
const _tail = Symbol('_tail');
const _table = Symbol('_table');
const _checkModification = Symbol('_checkModification');
const _writeToList = Symbol('_writeToList');
const _preGrow = Symbol('_preGrow');
const _grow = Symbol('_grow');
collection.ListQueue$ = dart.generic(E => {
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let ListQueueOfE = () => (ListQueueOfE = dart.constFn(collection.ListQueue$(E)))();
  let _ListQueueIteratorOfE = () => (_ListQueueIteratorOfE = dart.constFn(collection._ListQueueIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let QueueOfE = () => (QueueOfE = dart.constFn(collection.Queue$(E)))();
  let ETovoid = () => (ETovoid = dart.constFn(dart.functionType(dart.void, [E])))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  class ListQueue extends core.Iterable$(E) {
    new(initialCapacity) {
      if (initialCapacity === void 0) initialCapacity = null;
      this[_head] = 0;
      this[_tail] = 0;
      this[_table] = null;
      this[_modificationCount] = 0;
      super.new();
      if (initialCapacity == null || dart.notNull(initialCapacity) < collection.ListQueue._INITIAL_CAPACITY) {
        initialCapacity = collection.ListQueue._INITIAL_CAPACITY;
      } else if (!dart.test(collection.ListQueue._isPowerOf2(initialCapacity))) {
        initialCapacity = collection.ListQueue._nextPowerOf2(initialCapacity);
      }
      dart.assert(collection.ListQueue._isPowerOf2(initialCapacity));
      this[_table] = ListOfE().new(initialCapacity);
    }
    static from(elements) {
      if (core.List.is(elements)) {
        let length = elements[dartx.length];
        let queue = new (ListQueueOfE())(dart.notNull(length) + 1);
        dart.assert(dart.notNull(queue[_table][dartx.length]) > dart.notNull(length));
        for (let i = 0; i < dart.notNull(length); i++) {
          queue[_table][dartx._set](i, E.as(elements[dartx._get](i)));
        }
        queue[_tail] = length;
        return queue;
      } else {
        let capacity = collection.ListQueue._INITIAL_CAPACITY;
        if (_internal.EfficientLength.is(elements)) {
          capacity = elements[dartx.length];
        }
        let result = new (ListQueueOfE())(capacity);
        for (let element of elements) {
          result.addLast(E.as(element));
        }
        return result;
      }
    }
    get iterator() {
      return new (_ListQueueIteratorOfE())(this);
    }
    forEach(action) {
      let modificationCount = this[_modificationCount];
      for (let i = this[_head]; i != this[_tail]; i = (dart.notNull(i) + 1 & dart.notNull(this[_table][dartx.length]) - 1) >>> 0) {
        action(this[_table][dartx._get](i));
        this[_checkModification](modificationCount);
      }
    }
    get isEmpty() {
      return this[_head] == this[_tail];
    }
    get length() {
      return (dart.notNull(this[_tail]) - dart.notNull(this[_head]) & dart.notNull(this[_table][dartx.length]) - 1) >>> 0;
    }
    get first() {
      if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
      return this[_table][dartx._get](this[_head]);
    }
    get last() {
      if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
      return this[_table][dartx._get]((dart.notNull(this[_tail]) - 1 & dart.notNull(this[_table][dartx.length]) - 1) >>> 0);
    }
    get single() {
      if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
      if (dart.notNull(this.length) > 1) dart.throw(_internal.IterableElementError.tooMany());
      return this[_table][dartx._get](this[_head]);
    }
    elementAt(index) {
      core.RangeError.checkValidIndex(index, this);
      return this[_table][dartx._get]((dart.notNull(this[_head]) + dart.notNull(index) & dart.notNull(this[_table][dartx.length]) - 1) >>> 0);
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let list = null;
      if (dart.test(growable)) {
        list = ListOfE().new();
        list[dartx.length] = this.length;
      } else {
        list = ListOfE().new(this.length);
      }
      this[_writeToList](list);
      return list;
    }
    add(value) {
      E._check(value);
      this[_add](value);
    }
    addAll(elements) {
      IterableOfE()._check(elements);
      if (ListOfE().is(elements)) {
        let list = elements;
        let addCount = list[dartx.length];
        let length = this.length;
        if (dart.notNull(length) + dart.notNull(addCount) >= dart.notNull(this[_table][dartx.length])) {
          this[_preGrow](dart.notNull(length) + dart.notNull(addCount));
          this[_table][dartx.setRange](length, dart.notNull(length) + dart.notNull(addCount), list, 0);
          this[_tail] = dart.notNull(this[_tail]) + dart.notNull(addCount);
        } else {
          let endSpace = dart.notNull(this[_table][dartx.length]) - dart.notNull(this[_tail]);
          if (dart.notNull(addCount) < endSpace) {
            this[_table][dartx.setRange](this[_tail], dart.notNull(this[_tail]) + dart.notNull(addCount), list, 0);
            this[_tail] = dart.notNull(this[_tail]) + dart.notNull(addCount);
          } else {
            let preSpace = dart.notNull(addCount) - endSpace;
            this[_table][dartx.setRange](this[_tail], dart.notNull(this[_tail]) + endSpace, list, 0);
            this[_table][dartx.setRange](0, preSpace, list, endSpace);
            this[_tail] = preSpace;
          }
        }
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      } else {
        for (let element of elements)
          this[_add](element);
      }
    }
    remove(value) {
      for (let i = this[_head]; i != this[_tail]; i = (dart.notNull(i) + 1 & dart.notNull(this[_table][dartx.length]) - 1) >>> 0) {
        let element = this[_table][dartx._get](i);
        if (dart.equals(element, value)) {
          this[_remove](i);
          this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
          return true;
        }
      }
      return false;
    }
    [_filterWhere](test, removeMatching) {
      let modificationCount = this[_modificationCount];
      let i = this[_head];
      while (i != this[_tail]) {
        let element = this[_table][dartx._get](i);
        let remove = core.identical(removeMatching, test(element));
        this[_checkModification](modificationCount);
        if (remove) {
          i = this[_remove](i);
          modificationCount = this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
        } else {
          i = (dart.notNull(i) + 1 & dart.notNull(this[_table][dartx.length]) - 1) >>> 0;
        }
      }
    }
    removeWhere(test) {
      this[_filterWhere](test, true);
    }
    retainWhere(test) {
      this[_filterWhere](test, false);
    }
    clear() {
      if (this[_head] != this[_tail]) {
        for (let i = this[_head]; i != this[_tail]; i = (dart.notNull(i) + 1 & dart.notNull(this[_table][dartx.length]) - 1) >>> 0) {
          this[_table][dartx._set](i, null);
        }
        this[_head] = this[_tail] = 0;
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      }
    }
    toString() {
      return collection.IterableBase.iterableToFullString(this, "{", "}");
    }
    addLast(value) {
      E._check(value);
      this[_add](value);
    }
    addFirst(value) {
      E._check(value);
      this[_head] = (dart.notNull(this[_head]) - 1 & dart.notNull(this[_table][dartx.length]) - 1) >>> 0;
      this[_table][dartx._set](this[_head], value);
      if (this[_head] == this[_tail]) this[_grow]();
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
    }
    removeFirst() {
      if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      let result = this[_table][dartx._get](this[_head]);
      this[_table][dartx._set](this[_head], null);
      this[_head] = (dart.notNull(this[_head]) + 1 & dart.notNull(this[_table][dartx.length]) - 1) >>> 0;
      return result;
    }
    removeLast() {
      if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      this[_tail] = (dart.notNull(this[_tail]) - 1 & dart.notNull(this[_table][dartx.length]) - 1) >>> 0;
      let result = this[_table][dartx._get](this[_tail]);
      this[_table][dartx._set](this[_tail], null);
      return result;
    }
    static _isPowerOf2(number) {
      return (dart.notNull(number) & dart.notNull(number) - 1) == 0;
    }
    static _nextPowerOf2(number) {
      dart.assert(dart.notNull(number) > 0);
      number = (dart.notNull(number) << 1 >>> 0) - 1;
      for (;;) {
        let nextNumber = (dart.notNull(number) & dart.notNull(number) - 1) >>> 0;
        if (nextNumber == 0) return number;
        number = nextNumber;
      }
    }
    [_checkModification](expectedModificationCount) {
      if (expectedModificationCount != this[_modificationCount]) {
        dart.throw(new core.ConcurrentModificationError(this));
      }
    }
    [_add](element) {
      E._check(element);
      this[_table][dartx._set](this[_tail], element);
      this[_tail] = (dart.notNull(this[_tail]) + 1 & dart.notNull(this[_table][dartx.length]) - 1) >>> 0;
      if (this[_head] == this[_tail]) this[_grow]();
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
    }
    [_remove](offset) {
      let mask = dart.notNull(this[_table][dartx.length]) - 1;
      let startDistance = (dart.notNull(offset) - dart.notNull(this[_head]) & mask) >>> 0;
      let endDistance = (dart.notNull(this[_tail]) - dart.notNull(offset) & mask) >>> 0;
      if (startDistance < endDistance) {
        let i = offset;
        while (i != this[_head]) {
          let prevOffset = (dart.notNull(i) - 1 & mask) >>> 0;
          this[_table][dartx._set](i, this[_table][dartx._get](prevOffset));
          i = prevOffset;
        }
        this[_table][dartx._set](this[_head], null);
        this[_head] = (dart.notNull(this[_head]) + 1 & mask) >>> 0;
        return (dart.notNull(offset) + 1 & mask) >>> 0;
      } else {
        this[_tail] = (dart.notNull(this[_tail]) - 1 & mask) >>> 0;
        let i = offset;
        while (i != this[_tail]) {
          let nextOffset = (dart.notNull(i) + 1 & mask) >>> 0;
          this[_table][dartx._set](i, this[_table][dartx._get](nextOffset));
          i = nextOffset;
        }
        this[_table][dartx._set](this[_tail], null);
        return offset;
      }
    }
    [_grow]() {
      let newTable = ListOfE().new(dart.notNull(this[_table][dartx.length]) * 2);
      let split = dart.notNull(this[_table][dartx.length]) - dart.notNull(this[_head]);
      newTable[dartx.setRange](0, split, this[_table], this[_head]);
      newTable[dartx.setRange](split, split + dart.notNull(this[_head]), this[_table], 0);
      this[_head] = 0;
      this[_tail] = this[_table][dartx.length];
      this[_table] = newTable;
    }
    [_writeToList](target) {
      ListOfE()._check(target);
      dart.assert(dart.notNull(target[dartx.length]) >= dart.notNull(this.length));
      if (dart.notNull(this[_head]) <= dart.notNull(this[_tail])) {
        let length = dart.notNull(this[_tail]) - dart.notNull(this[_head]);
        target[dartx.setRange](0, length, this[_table], this[_head]);
        return length;
      } else {
        let firstPartSize = dart.notNull(this[_table][dartx.length]) - dart.notNull(this[_head]);
        target[dartx.setRange](0, firstPartSize, this[_table], this[_head]);
        target[dartx.setRange](firstPartSize, firstPartSize + dart.notNull(this[_tail]), this[_table], 0);
        return dart.notNull(this[_tail]) + firstPartSize;
      }
    }
    [_preGrow](newElementCount) {
      dart.assert(dart.notNull(newElementCount) >= dart.notNull(this.length));
      newElementCount = dart.notNull(newElementCount) + newElementCount[dartx['>>']](1);
      let newCapacity = collection.ListQueue._nextPowerOf2(newElementCount);
      let newTable = ListOfE().new(newCapacity);
      this[_tail] = this[_writeToList](newTable);
      this[_table] = newTable;
      this[_head] = 0;
    }
  }
  ListQueue[dart.implements] = () => [QueueOfE()];
  dart.setSignature(ListQueue, {
    constructors: () => ({
      new: dart.definiteFunctionType(collection.ListQueue$(E), [], [core.int]),
      from: dart.definiteFunctionType(collection.ListQueue$(E), [core.Iterable])
    }),
    fields: () => ({
      [_table]: ListOfE(),
      [_head]: core.int,
      [_tail]: core.int,
      [_modificationCount]: core.int
    }),
    getters: () => ({
      iterator: dart.definiteFunctionType(core.Iterator$(E), []),
      first: dart.definiteFunctionType(E, []),
      last: dart.definiteFunctionType(E, []),
      single: dart.definiteFunctionType(E, [])
    }),
    methods: () => ({
      forEach: dart.definiteFunctionType(dart.void, [ETovoid()]),
      elementAt: dart.definiteFunctionType(E, [core.int]),
      toList: dart.definiteFunctionType(core.List$(E), [], {growable: core.bool}),
      add: dart.definiteFunctionType(dart.void, [E]),
      addAll: dart.definiteFunctionType(dart.void, [IterableOfE()]),
      remove: dart.definiteFunctionType(core.bool, [core.Object]),
      [_filterWhere]: dart.definiteFunctionType(dart.void, [ETobool(), core.bool]),
      removeWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      retainWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      clear: dart.definiteFunctionType(dart.void, []),
      addLast: dart.definiteFunctionType(dart.void, [E]),
      addFirst: dart.definiteFunctionType(dart.void, [E]),
      removeFirst: dart.definiteFunctionType(E, []),
      removeLast: dart.definiteFunctionType(E, []),
      [_checkModification]: dart.definiteFunctionType(dart.void, [core.int]),
      [_add]: dart.definiteFunctionType(dart.void, [E]),
      [_remove]: dart.definiteFunctionType(core.int, [core.int]),
      [_grow]: dart.definiteFunctionType(dart.void, []),
      [_writeToList]: dart.definiteFunctionType(core.int, [ListOfE()]),
      [_preGrow]: dart.definiteFunctionType(dart.void, [core.int])
    }),
    sfields: () => ({_INITIAL_CAPACITY: core.int}),
    statics: () => ({
      _isPowerOf2: dart.definiteFunctionType(core.bool, [core.int]),
      _nextPowerOf2: dart.definiteFunctionType(core.int, [core.int])
    }),
    names: ['_isPowerOf2', '_nextPowerOf2']
  });
  dart.defineExtensionMembers(ListQueue, [
    'forEach',
    'elementAt',
    'toList',
    'toString',
    'iterator',
    'isEmpty',
    'length',
    'first',
    'last',
    'single'
  ]);
  return ListQueue;
});
collection.ListQueue = ListQueue();
collection.ListQueue._INITIAL_CAPACITY = 8;
const _end = Symbol('_end');
const _position = Symbol('_position');
collection._ListQueueIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let ListQueueOfE = () => (ListQueueOfE = dart.constFn(collection.ListQueue$(E)))();
  class _ListQueueIterator extends core.Object {
    new(queue) {
      this[_queue] = queue;
      this[_end] = queue[_tail];
      this[_modificationCount] = queue[_modificationCount];
      this[_position] = queue[_head];
      this[_current] = null;
    }
    get current() {
      return this[_current];
    }
    moveNext() {
      this[_queue][_checkModification](this[_modificationCount]);
      if (this[_position] == this[_end]) {
        this[_current] = null;
        return false;
      }
      this[_current] = this[_queue][_table][dartx._get](this[_position]);
      this[_position] = (dart.notNull(this[_position]) + 1 & dart.notNull(this[_queue][_table][dartx.length]) - 1) >>> 0;
      return true;
    }
  }
  dart.addTypeTests(_ListQueueIterator);
  _ListQueueIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(_ListQueueIterator, {
    constructors: () => ({new: dart.definiteFunctionType(collection._ListQueueIterator$(E), [ListQueueOfE()])}),
    fields: () => ({
      [_queue]: ListQueueOfE(),
      [_end]: core.int,
      [_modificationCount]: core.int,
      [_position]: core.int,
      [_current]: E
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return _ListQueueIterator;
});
collection._ListQueueIterator = _ListQueueIterator();
collection._Predicate$ = dart.generic(T => {
  const _Predicate = dart.typedef('_Predicate', () => dart.functionType(core.bool, [T]));
  return _Predicate;
});
collection._Predicate = _Predicate();
collection._SplayTreeNode$ = dart.generic(K => {
  let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
  class _SplayTreeNode extends core.Object {
    new(key) {
      this.key = key;
      this.left = null;
      this.right = null;
    }
  }
  dart.addTypeTests(_SplayTreeNode);
  dart.setSignature(_SplayTreeNode, {
    constructors: () => ({new: dart.definiteFunctionType(collection._SplayTreeNode$(K), [K])}),
    fields: () => ({
      key: K,
      left: _SplayTreeNodeOfK(),
      right: _SplayTreeNodeOfK()
    })
  });
  return _SplayTreeNode;
});
collection._SplayTreeNode = _SplayTreeNode();
collection._SplayTreeMapNode$ = dart.generic((K, V) => {
  class _SplayTreeMapNode extends collection._SplayTreeNode$(K) {
    new(key, value) {
      this.value = value;
      super.new(key);
    }
  }
  dart.setSignature(_SplayTreeMapNode, {
    constructors: () => ({new: dart.definiteFunctionType(collection._SplayTreeMapNode$(K, V), [K, V])}),
    fields: () => ({value: V})
  });
  return _SplayTreeMapNode;
});
collection._SplayTreeMapNode = _SplayTreeMapNode();
const _count = Symbol('_count');
const _splayCount = Symbol('_splayCount');
const _root = Symbol('_root');
const _dummy = Symbol('_dummy');
const _comparator = Symbol('_comparator');
const _compare = Symbol('_compare');
const _splay = Symbol('_splay');
const _splayMin = Symbol('_splayMin');
const _splayMax = Symbol('_splayMax');
const _addNewRoot = Symbol('_addNewRoot');
const _clear = Symbol('_clear');
collection._SplayTree$ = dart.generic((K, Node) => {
  class _SplayTree extends core.Object {
    new() {
      this[_count] = 0;
      this[_modificationCount] = 0;
      this[_splayCount] = 0;
    }
    [_splay](key) {
      K._check(key);
      if (this[_root] == null) return -1;
      let left = this[_dummy];
      let right = this[_dummy];
      let current = this[_root];
      let comp = null;
      while (true) {
        comp = this[_compare](current.key, key);
        if (dart.notNull(comp) > 0) {
          if (current.left == null) break;
          comp = this[_compare](current.left.key, key);
          if (dart.notNull(comp) > 0) {
            let tmp = current.left;
            current.left = tmp.right;
            tmp.right = current;
            current = Node._check(tmp);
            if (current.left == null) break;
          }
          right.left = current;
          right = current;
          current = Node._check(current.left);
        } else if (dart.notNull(comp) < 0) {
          if (current.right == null) break;
          comp = this[_compare](current.right.key, key);
          if (dart.notNull(comp) < 0) {
            let tmp = Node._check(current.right);
            current.right = tmp.left;
            tmp.left = current;
            current = tmp;
            if (current.right == null) break;
          }
          left.right = current;
          left = current;
          current = Node._check(current.right);
        } else {
          break;
        }
      }
      left.right = current.left;
      right.left = current.right;
      current.left = this[_dummy].right;
      current.right = this[_dummy].left;
      this[_root] = current;
      this[_dummy].right = null;
      this[_dummy].left = null;
      this[_splayCount] = dart.notNull(this[_splayCount]) + 1;
      return comp;
    }
    [_splayMin](node) {
      Node._check(node);
      let current = node;
      while (current.left != null) {
        let left = Node._check(current.left);
        current.left = left.right;
        left.right = current;
        current = left;
      }
      return current;
    }
    [_splayMax](node) {
      Node._check(node);
      let current = node;
      while (current.right != null) {
        let right = Node._check(current.right);
        current.right = right.left;
        right.left = current;
        current = right;
      }
      return current;
    }
    [_remove](key) {
      K._check(key);
      if (this[_root] == null) return null;
      let comp = this[_splay](key);
      if (comp != 0) return null;
      let result = this[_root];
      this[_count] = dart.notNull(this[_count]) - 1;
      if (this[_root].left == null) {
        this[_root] = Node._check(this[_root].right);
      } else {
        let right = Node._check(this[_root].right);
        this[_root] = this[_splayMax](Node._check(this[_root].left));
        this[_root].right = right;
      }
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      return result;
    }
    [_addNewRoot](node, comp) {
      Node._check(node);
      this[_count] = dart.notNull(this[_count]) + 1;
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      if (this[_root] == null) {
        this[_root] = node;
        return;
      }
      if (dart.notNull(comp) < 0) {
        node.left = this[_root];
        node.right = this[_root].right;
        this[_root].right = null;
      } else {
        node.right = this[_root];
        node.left = this[_root].left;
        this[_root].left = null;
      }
      this[_root] = node;
    }
    get [_first]() {
      if (this[_root] == null) return null;
      this[_root] = this[_splayMin](this[_root]);
      return this[_root];
    }
    get [_last]() {
      if (this[_root] == null) return null;
      this[_root] = this[_splayMax](this[_root]);
      return this[_root];
    }
    [_clear]() {
      this[_root] = null;
      this[_count] = 0;
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
    }
  }
  dart.addTypeTests(_SplayTree);
  dart.setSignature(_SplayTree, {
    fields: () => ({
      [_count]: core.int,
      [_modificationCount]: core.int,
      [_splayCount]: core.int
    }),
    getters: () => ({
      [_first]: dart.definiteFunctionType(Node, []),
      [_last]: dart.definiteFunctionType(Node, [])
    }),
    methods: () => ({
      [_splay]: dart.definiteFunctionType(core.int, [K]),
      [_splayMin]: dart.definiteFunctionType(Node, [Node]),
      [_splayMax]: dart.definiteFunctionType(Node, [Node]),
      [_remove]: dart.definiteFunctionType(Node, [K]),
      [_addNewRoot]: dart.definiteFunctionType(dart.void, [Node, core.int]),
      [_clear]: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _SplayTree;
});
collection._SplayTree = _SplayTree();
collection._TypeTest$ = dart.generic(T => {
  class _TypeTest extends core.Object {
    test(v) {
      return T.is(v);
    }
  }
  dart.addTypeTests(_TypeTest);
  dart.setSignature(_TypeTest, {
    methods: () => ({test: dart.definiteFunctionType(core.bool, [dart.dynamic])})
  });
  return _TypeTest;
});
collection._TypeTest = _TypeTest();
collection.SplayTreeMap$ = dart.generic((K, V) => {
  let _SplayTreeMapNodeOfK$V = () => (_SplayTreeMapNodeOfK$V = dart.constFn(collection._SplayTreeMapNode$(K, V)))();
  let ComparatorOfK = () => (ComparatorOfK = dart.constFn(core.Comparator$(K)))();
  let SplayTreeMapOfK$V = () => (SplayTreeMapOfK$V = dart.constFn(collection.SplayTreeMap$(K, V)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let KAndVTovoid = () => (KAndVTovoid = dart.constFn(dart.functionType(dart.void, [K, V])))();
  let _SplayTreeNodeIteratorOfK = () => (_SplayTreeNodeIteratorOfK = dart.constFn(collection._SplayTreeNodeIterator$(K)))();
  let _SplayTreeKeyIterableOfK = () => (_SplayTreeKeyIterableOfK = dart.constFn(collection._SplayTreeKeyIterable$(K)))();
  let _SplayTreeValueIterableOfK$V = () => (_SplayTreeValueIterableOfK$V = dart.constFn(collection._SplayTreeValueIterable$(K, V)))();
  let dynamicToK = () => (dynamicToK = dart.constFn(dart.functionType(K, [dart.dynamic])))();
  let IterableOfK = () => (IterableOfK = dart.constFn(core.Iterable$(K)))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.functionType(V, [])))();
  let dynamicToV = () => (dynamicToV = dart.constFn(dart.functionType(V, [dart.dynamic])))();
  let IterableOfV = () => (IterableOfV = dart.constFn(core.Iterable$(V)))();
  let KAndVTovoid$ = () => (KAndVTovoid$ = dart.constFn(dart.definiteFunctionType(dart.void, [K, V])))();
  class SplayTreeMap extends collection._SplayTree$(K, collection._SplayTreeMapNode$(K, V)) {
    new(compare, isValidKey) {
      if (compare === void 0) compare = null;
      if (isValidKey === void 0) isValidKey = null;
      this[_dummy] = new (_SplayTreeMapNodeOfK$V())(null, null);
      this[_comparator] = (() => {
        let l = compare;
        return l != null ? l : ComparatorOfK().as(core.Comparable.compare);
      })();
      this[_validKey] = (() => {
        let l = isValidKey;
        return l != null ? l : dart.fn(v => K.is(v), dynamicTobool());
      })();
      this[_root] = null;
      super.new();
    }
    static from(other, compare, isValidKey) {
      if (compare === void 0) compare = null;
      if (isValidKey === void 0) isValidKey = null;
      let result = new (SplayTreeMapOfK$V())(compare, isValidKey);
      other[dartx.forEach](dart.fn((k, v) => {
        result._set(K.as(k), V.as(v));
      }, dynamicAnddynamicTovoid()));
      return result;
    }
    static fromIterable(iterable, opts) {
      let key = opts && 'key' in opts ? opts.key : null;
      let value = opts && 'value' in opts ? opts.value : null;
      let compare = opts && 'compare' in opts ? opts.compare : null;
      let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
      let map = new (SplayTreeMapOfK$V())(compare, isValidKey);
      collection.Maps._fillMapWithMappedIterable(map, iterable, key, value);
      return map;
    }
    static fromIterables(keys, values, compare, isValidKey) {
      if (compare === void 0) compare = null;
      if (isValidKey === void 0) isValidKey = null;
      let map = new (SplayTreeMapOfK$V())(compare, isValidKey);
      collection.Maps._fillMapWithIterables(map, keys, values);
      return map;
    }
    [_compare](key1, key2) {
      K._check(key1);
      K._check(key2);
      return this[_comparator](key1, key2);
    }
    _internal() {
      this[_dummy] = new (_SplayTreeMapNodeOfK$V())(null, null);
      this[_root] = null;
      this[_comparator] = null;
      this[_validKey] = null;
      super.new();
    }
    _get(key) {
      if (!dart.test(dart.dcall(this[_validKey], key))) return null;
      if (this[_root] != null) {
        let comp = this[_splay](K.as(key));
        if (comp == 0) {
          return this[_root].value;
        }
      }
      return null;
    }
    remove(key) {
      if (!dart.test(dart.dcall(this[_validKey], key))) return null;
      let mapRoot = this[_remove](K.as(key));
      if (mapRoot != null) return mapRoot.value;
      return null;
    }
    _set(key, value) {
      (() => {
        K._check(key);
        V._check(value);
        if (key == null) dart.throw(new core.ArgumentError(key));
        let comp = this[_splay](key);
        if (comp == 0) {
          this[_root].value = value;
          return;
        }
        this[_addNewRoot](new (_SplayTreeMapNodeOfK$V())(key, value), comp);
      })();
      return value;
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      if (key == null) dart.throw(new core.ArgumentError(key));
      let comp = this[_splay](key);
      if (comp == 0) {
        return this[_root].value;
      }
      let modificationCount = this[_modificationCount];
      let splayCount = this[_splayCount];
      let value = ifAbsent();
      if (modificationCount != this[_modificationCount]) {
        dart.throw(new core.ConcurrentModificationError(this));
      }
      if (splayCount != this[_splayCount]) {
        comp = this[_splay](key);
        dart.assert(comp != 0);
      }
      this[_addNewRoot](new (_SplayTreeMapNodeOfK$V())(key, value), comp);
      return value;
    }
    addAll(other) {
      MapOfK$V()._check(other);
      other[dartx.forEach](dart.fn((key, value) => {
        this._set(key, value);
      }, KAndVTovoid$()));
    }
    get isEmpty() {
      return this[_root] == null;
    }
    get isNotEmpty() {
      return !dart.test(this.isEmpty);
    }
    forEach(f) {
      let nodes = new (_SplayTreeNodeIteratorOfK())(this);
      while (dart.test(nodes.moveNext())) {
        let node = _SplayTreeMapNodeOfK$V()._check(nodes.current);
        f(node.key, node.value);
      }
    }
    get length() {
      return this[_count];
    }
    clear() {
      this[_clear]();
    }
    containsKey(key) {
      return dart.test(dart.dcall(this[_validKey], key)) && this[_splay](K.as(key)) == 0;
    }
    containsValue(value) {
      let found = false;
      let initialSplayCount = this[_splayCount];
      const visit = (function(node) {
        while (node != null) {
          if (dart.equals(node.value, value)) return true;
          if (initialSplayCount != this[_splayCount]) {
            dart.throw(new core.ConcurrentModificationError(this));
          }
          if (node.right != null && dart.test(visit(collection._SplayTreeMapNode._check(node.right)))) return true;
          node = collection._SplayTreeMapNode._check(node.left);
        }
        return false;
      }).bind(this);
      dart.fn(visit, _SplayTreeMapNodeTobool());
      return visit(this[_root]);
    }
    get keys() {
      return new (_SplayTreeKeyIterableOfK())(this);
    }
    get values() {
      return new (_SplayTreeValueIterableOfK$V())(this);
    }
    toString() {
      return collection.Maps.mapToString(this);
    }
    firstKey() {
      if (this[_root] == null) return null;
      return this[_first].key;
    }
    lastKey() {
      if (this[_root] == null) return null;
      return this[_last].key;
    }
    lastKeyBefore(key) {
      K._check(key);
      if (key == null) dart.throw(new core.ArgumentError(key));
      if (this[_root] == null) return null;
      let comp = this[_splay](key);
      if (dart.notNull(comp) < 0) return this[_root].key;
      let node = this[_root].left;
      if (node == null) return null;
      while (node.right != null) {
        node = node.right;
      }
      return node.key;
    }
    firstKeyAfter(key) {
      K._check(key);
      if (key == null) dart.throw(new core.ArgumentError(key));
      if (this[_root] == null) return null;
      let comp = this[_splay](key);
      if (dart.notNull(comp) > 0) return this[_root].key;
      let node = this[_root].right;
      if (node == null) return null;
      while (node.left != null) {
        node = node.left;
      }
      return node.key;
    }
  }
  dart.defineNamedConstructor(SplayTreeMap, '_internal');
  SplayTreeMap[dart.implements] = () => [MapOfK$V()];
  dart.setSignature(SplayTreeMap, {
    constructors: () => ({
      new: dart.definiteFunctionType(collection.SplayTreeMap$(K, V), [], [ComparatorOfK(), dynamicTobool()]),
      from: dart.definiteFunctionType(collection.SplayTreeMap$(K, V), [core.Map], [ComparatorOfK(), dynamicTobool()]),
      fromIterable: dart.definiteFunctionType(collection.SplayTreeMap$(K, V), [core.Iterable], {key: dynamicToK(), value: dynamicToV(), compare: ComparatorOfK(), isValidKey: dynamicTobool()}),
      fromIterables: dart.definiteFunctionType(collection.SplayTreeMap$(K, V), [IterableOfK(), IterableOfV()], [ComparatorOfK(), dynamicTobool()]),
      _internal: dart.definiteFunctionType(collection.SplayTreeMap$(K, V), [])
    }),
    fields: () => ({
      [_root]: _SplayTreeMapNodeOfK$V(),
      [_dummy]: _SplayTreeMapNodeOfK$V(),
      [_comparator]: ComparatorOfK(),
      [_validKey]: collection._Predicate
    }),
    getters: () => ({
      isEmpty: dart.definiteFunctionType(core.bool, []),
      isNotEmpty: dart.definiteFunctionType(core.bool, []),
      length: dart.definiteFunctionType(core.int, []),
      keys: dart.definiteFunctionType(core.Iterable$(K), []),
      values: dart.definiteFunctionType(core.Iterable$(V), [])
    }),
    methods: () => ({
      [_compare]: dart.definiteFunctionType(core.int, [K, K]),
      _get: dart.definiteFunctionType(V, [core.Object]),
      remove: dart.definiteFunctionType(V, [core.Object]),
      _set: dart.definiteFunctionType(dart.void, [K, V]),
      putIfAbsent: dart.definiteFunctionType(V, [K, VoidToV()]),
      addAll: dart.definiteFunctionType(dart.void, [MapOfK$V()]),
      forEach: dart.definiteFunctionType(dart.void, [KAndVTovoid()]),
      clear: dart.definiteFunctionType(dart.void, []),
      containsKey: dart.definiteFunctionType(core.bool, [core.Object]),
      containsValue: dart.definiteFunctionType(core.bool, [core.Object]),
      firstKey: dart.definiteFunctionType(K, []),
      lastKey: dart.definiteFunctionType(K, []),
      lastKeyBefore: dart.definiteFunctionType(K, [K]),
      firstKeyAfter: dart.definiteFunctionType(K, [K])
    })
  });
  dart.defineExtensionMembers(SplayTreeMap, [
    '_get',
    'remove',
    '_set',
    'putIfAbsent',
    'addAll',
    'forEach',
    'clear',
    'containsKey',
    'containsValue',
    'isEmpty',
    'isNotEmpty',
    'length',
    'keys',
    'values'
  ]);
  return SplayTreeMap;
});
collection.SplayTreeMap = SplayTreeMap();
const _workList = Symbol('_workList');
const _tree = Symbol('_tree');
const _currentNode = Symbol('_currentNode');
const _findLeftMostDescendent = Symbol('_findLeftMostDescendent');
const _getValue = Symbol('_getValue');
const _rebuildWorkList = Symbol('_rebuildWorkList');
collection._SplayTreeIterator$ = dart.generic((K, T) => {
  let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
  let JSArrayOf_SplayTreeNodeOfK = () => (JSArrayOf_SplayTreeNodeOfK = dart.constFn(_interceptors.JSArray$(_SplayTreeNodeOfK())))();
  let _SplayTreeOfK$_SplayTreeNodeOfK = () => (_SplayTreeOfK$_SplayTreeNodeOfK = dart.constFn(collection._SplayTree$(K, _SplayTreeNodeOfK())))();
  let ListOf_SplayTreeNodeOfK = () => (ListOf_SplayTreeNodeOfK = dart.constFn(core.List$(_SplayTreeNodeOfK())))();
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  class _SplayTreeIterator extends core.Object {
    new(tree) {
      this[_workList] = JSArrayOf_SplayTreeNodeOfK().of([]);
      this[_tree] = tree;
      this[_modificationCount] = tree[_modificationCount];
      this[_splayCount] = tree[_splayCount];
      this[_currentNode] = null;
      this[_findLeftMostDescendent](tree[_root]);
    }
    startAt(tree, startKey) {
      this[_workList] = JSArrayOf_SplayTreeNodeOfK().of([]);
      this[_tree] = tree;
      this[_modificationCount] = tree[_modificationCount];
      this[_splayCount] = null;
      this[_currentNode] = null;
      if (tree[_root] == null) return;
      let compare = tree[_splay](startKey);
      this[_splayCount] = tree[_splayCount];
      if (dart.notNull(compare) < 0) {
        this[_findLeftMostDescendent](tree[_root].right);
      } else {
        this[_workList][dartx.add](tree[_root]);
      }
    }
    get current() {
      if (this[_currentNode] == null) return null;
      return this[_getValue](this[_currentNode]);
    }
    [_findLeftMostDescendent](node) {
      _SplayTreeNodeOfK()._check(node);
      while (node != null) {
        this[_workList][dartx.add](node);
        node = node.left;
      }
    }
    [_rebuildWorkList](currentNode) {
      _SplayTreeNodeOfK()._check(currentNode);
      dart.assert(!dart.test(this[_workList][dartx.isEmpty]));
      this[_workList][dartx.clear]();
      if (currentNode == null) {
        this[_findLeftMostDescendent](this[_tree][_root]);
      } else {
        this[_tree][_splay](currentNode.key);
        this[_findLeftMostDescendent](this[_tree][_root].right);
        dart.assert(!dart.test(this[_workList][dartx.isEmpty]));
      }
    }
    moveNext() {
      if (this[_modificationCount] != this[_tree][_modificationCount]) {
        dart.throw(new core.ConcurrentModificationError(this[_tree]));
      }
      if (dart.test(this[_workList][dartx.isEmpty])) {
        this[_currentNode] = null;
        return false;
      }
      if (this[_tree][_splayCount] != this[_splayCount] && this[_currentNode] != null) {
        this[_rebuildWorkList](this[_currentNode]);
      }
      this[_currentNode] = this[_workList][dartx.removeLast]();
      this[_findLeftMostDescendent](this[_currentNode].right);
      return true;
    }
  }
  dart.addTypeTests(_SplayTreeIterator);
  dart.defineNamedConstructor(_SplayTreeIterator, 'startAt');
  _SplayTreeIterator[dart.implements] = () => [IteratorOfT()];
  dart.setSignature(_SplayTreeIterator, {
    constructors: () => ({
      new: dart.definiteFunctionType(collection._SplayTreeIterator$(K, T), [_SplayTreeOfK$_SplayTreeNodeOfK()]),
      startAt: dart.definiteFunctionType(collection._SplayTreeIterator$(K, T), [_SplayTreeOfK$_SplayTreeNodeOfK(), K])
    }),
    fields: () => ({
      [_tree]: _SplayTreeOfK$_SplayTreeNodeOfK(),
      [_workList]: ListOf_SplayTreeNodeOfK(),
      [_modificationCount]: core.int,
      [_splayCount]: core.int,
      [_currentNode]: _SplayTreeNodeOfK()
    }),
    getters: () => ({current: dart.definiteFunctionType(T, [])}),
    methods: () => ({
      [_findLeftMostDescendent]: dart.definiteFunctionType(dart.void, [_SplayTreeNodeOfK()]),
      [_rebuildWorkList]: dart.definiteFunctionType(dart.void, [_SplayTreeNodeOfK()]),
      moveNext: dart.definiteFunctionType(core.bool, [])
    })
  });
  return _SplayTreeIterator;
});
collection._SplayTreeIterator = _SplayTreeIterator();
const _copyNode = Symbol('_copyNode');
collection._SplayTreeKeyIterable$ = dart.generic(K => {
  let _SplayTreeKeyIteratorOfK = () => (_SplayTreeKeyIteratorOfK = dart.constFn(collection._SplayTreeKeyIterator$(K)))();
  let SplayTreeSetOfK = () => (SplayTreeSetOfK = dart.constFn(collection.SplayTreeSet$(K)))();
  let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
  let _SplayTreeOfK$_SplayTreeNodeOfK = () => (_SplayTreeOfK$_SplayTreeNodeOfK = dart.constFn(collection._SplayTree$(K, _SplayTreeNodeOfK())))();
  class _SplayTreeKeyIterable extends core.Iterable$(K) {
    new(tree) {
      this[_tree] = tree;
      super.new();
    }
    get length() {
      return this[_tree][_count];
    }
    get isEmpty() {
      return this[_tree][_count] == 0;
    }
    get iterator() {
      return new (_SplayTreeKeyIteratorOfK())(this[_tree]);
    }
    toSet() {
      let set = new (SplayTreeSetOfK())(this[_tree][_comparator], this[_tree][_validKey]);
      set[_count] = this[_tree][_count];
      set[_root] = set[_copyNode](this[_tree][_root]);
      return set;
    }
  }
  _SplayTreeKeyIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(_SplayTreeKeyIterable, {
    constructors: () => ({new: dart.definiteFunctionType(collection._SplayTreeKeyIterable$(K), [_SplayTreeOfK$_SplayTreeNodeOfK()])}),
    fields: () => ({[_tree]: _SplayTreeOfK$_SplayTreeNodeOfK()}),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(K), [])}),
    methods: () => ({toSet: dart.definiteFunctionType(core.Set$(K), [])})
  });
  dart.defineExtensionMembers(_SplayTreeKeyIterable, ['toSet', 'length', 'isEmpty', 'iterator']);
  return _SplayTreeKeyIterable;
});
collection._SplayTreeKeyIterable = _SplayTreeKeyIterable();
collection._SplayTreeValueIterable$ = dart.generic((K, V) => {
  let _SplayTreeValueIteratorOfK$V = () => (_SplayTreeValueIteratorOfK$V = dart.constFn(collection._SplayTreeValueIterator$(K, V)))();
  let SplayTreeMapOfK$V = () => (SplayTreeMapOfK$V = dart.constFn(collection.SplayTreeMap$(K, V)))();
  class _SplayTreeValueIterable extends core.Iterable$(V) {
    new(map) {
      this[_map] = map;
      super.new();
    }
    get length() {
      return this[_map][_count];
    }
    get isEmpty() {
      return this[_map][_count] == 0;
    }
    get iterator() {
      return new (_SplayTreeValueIteratorOfK$V())(this[_map]);
    }
  }
  _SplayTreeValueIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(_SplayTreeValueIterable, {
    constructors: () => ({new: dart.definiteFunctionType(collection._SplayTreeValueIterable$(K, V), [SplayTreeMapOfK$V()])}),
    fields: () => ({[_map]: SplayTreeMapOfK$V()}),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(V), [])})
  });
  dart.defineExtensionMembers(_SplayTreeValueIterable, ['length', 'isEmpty', 'iterator']);
  return _SplayTreeValueIterable;
});
collection._SplayTreeValueIterable = _SplayTreeValueIterable();
collection._SplayTreeKeyIterator$ = dart.generic(K => {
  let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
  let _SplayTreeOfK$_SplayTreeNodeOfK = () => (_SplayTreeOfK$_SplayTreeNodeOfK = dart.constFn(collection._SplayTree$(K, _SplayTreeNodeOfK())))();
  class _SplayTreeKeyIterator extends collection._SplayTreeIterator$(K, K) {
    new(map) {
      super.new(map);
    }
    [_getValue](node) {
      _SplayTreeNodeOfK()._check(node);
      return node.key;
    }
  }
  dart.setSignature(_SplayTreeKeyIterator, {
    constructors: () => ({new: dart.definiteFunctionType(collection._SplayTreeKeyIterator$(K), [_SplayTreeOfK$_SplayTreeNodeOfK()])}),
    methods: () => ({[_getValue]: dart.definiteFunctionType(K, [_SplayTreeNodeOfK()])})
  });
  return _SplayTreeKeyIterator;
});
collection._SplayTreeKeyIterator = _SplayTreeKeyIterator();
collection._SplayTreeValueIterator$ = dart.generic((K, V) => {
  let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
  let _SplayTreeMapNodeOfK$V = () => (_SplayTreeMapNodeOfK$V = dart.constFn(collection._SplayTreeMapNode$(K, V)))();
  let SplayTreeMapOfK$V = () => (SplayTreeMapOfK$V = dart.constFn(collection.SplayTreeMap$(K, V)))();
  class _SplayTreeValueIterator extends collection._SplayTreeIterator$(K, V) {
    new(map) {
      super.new(map);
    }
    [_getValue](node) {
      _SplayTreeNodeOfK()._check(node);
      let mapNode = _SplayTreeMapNodeOfK$V().as(node);
      return mapNode.value;
    }
  }
  dart.setSignature(_SplayTreeValueIterator, {
    constructors: () => ({new: dart.definiteFunctionType(collection._SplayTreeValueIterator$(K, V), [SplayTreeMapOfK$V()])}),
    methods: () => ({[_getValue]: dart.definiteFunctionType(V, [_SplayTreeNodeOfK()])})
  });
  return _SplayTreeValueIterator;
});
collection._SplayTreeValueIterator = _SplayTreeValueIterator();
collection._SplayTreeNodeIterator$ = dart.generic(K => {
  let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
  let _SplayTreeOfK$_SplayTreeNodeOfK = () => (_SplayTreeOfK$_SplayTreeNodeOfK = dart.constFn(collection._SplayTree$(K, _SplayTreeNodeOfK())))();
  class _SplayTreeNodeIterator extends collection._SplayTreeIterator$(K, collection._SplayTreeNode$(K)) {
    new(tree) {
      super.new(tree);
    }
    startAt(tree, startKey) {
      super.startAt(tree, startKey);
    }
    [_getValue](node) {
      _SplayTreeNodeOfK()._check(node);
      return node;
    }
  }
  dart.defineNamedConstructor(_SplayTreeNodeIterator, 'startAt');
  dart.setSignature(_SplayTreeNodeIterator, {
    constructors: () => ({
      new: dart.definiteFunctionType(collection._SplayTreeNodeIterator$(K), [_SplayTreeOfK$_SplayTreeNodeOfK()]),
      startAt: dart.definiteFunctionType(collection._SplayTreeNodeIterator$(K), [_SplayTreeOfK$_SplayTreeNodeOfK(), K])
    }),
    methods: () => ({[_getValue]: dart.definiteFunctionType(collection._SplayTreeNode$(K), [_SplayTreeNodeOfK()])})
  });
  return _SplayTreeNodeIterator;
});
collection._SplayTreeNodeIterator = _SplayTreeNodeIterator();
const _clone = Symbol('_clone');
collection.SplayTreeSet$ = dart.generic(E => {
  let _SplayTreeNodeOfE = () => (_SplayTreeNodeOfE = dart.constFn(collection._SplayTreeNode$(E)))();
  let ComparatorOfE = () => (ComparatorOfE = dart.constFn(core.Comparator$(E)))();
  let SplayTreeSetOfE = () => (SplayTreeSetOfE = dart.constFn(collection.SplayTreeSet$(E)))();
  let _SplayTreeKeyIteratorOfE = () => (_SplayTreeKeyIteratorOfE = dart.constFn(collection._SplayTreeKeyIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  class SplayTreeSet extends dart.mixin(collection._SplayTree$(E, collection._SplayTreeNode$(E)), collection.IterableMixin$(E), collection.SetMixin$(E)) {
    new(compare, isValidKey) {
      if (compare === void 0) compare = null;
      if (isValidKey === void 0) isValidKey = null;
      this[_dummy] = new (_SplayTreeNodeOfE())(null);
      this[_comparator] = (() => {
        let l = compare;
        return l != null ? l : ComparatorOfE().as(core.Comparable.compare);
      })();
      this[_validKey] = (() => {
        let l = isValidKey;
        return l != null ? l : dart.fn(v => E.is(v), dynamicTobool());
      })();
      this[_root] = null;
      super.new();
    }
    static from(elements, compare, isValidKey) {
      if (compare === void 0) compare = null;
      if (isValidKey === void 0) isValidKey = null;
      let result = new (SplayTreeSetOfE())(compare, isValidKey);
      for (let element of elements) {
        let e = E.as(element);
        result.add(e);
      }
      return result;
    }
    [_compare](e1, e2) {
      E._check(e1);
      E._check(e2);
      return this[_comparator](e1, e2);
    }
    get iterator() {
      return new (_SplayTreeKeyIteratorOfE())(this);
    }
    get length() {
      return this[_count];
    }
    get isEmpty() {
      return this[_root] == null;
    }
    get isNotEmpty() {
      return this[_root] != null;
    }
    get first() {
      if (this[_count] == 0) dart.throw(_internal.IterableElementError.noElement());
      return this[_first].key;
    }
    get last() {
      if (this[_count] == 0) dart.throw(_internal.IterableElementError.noElement());
      return this[_last].key;
    }
    get single() {
      if (this[_count] == 0) dart.throw(_internal.IterableElementError.noElement());
      if (dart.notNull(this[_count]) > 1) dart.throw(_internal.IterableElementError.tooMany());
      return this[_root].key;
    }
    contains(object) {
      return dart.test(dart.dcall(this[_validKey], object)) && this[_splay](E.as(object)) == 0;
    }
    add(element) {
      E._check(element);
      let compare = this[_splay](element);
      if (compare == 0) return false;
      this[_addNewRoot](new (_SplayTreeNodeOfE())(element), compare);
      return true;
    }
    remove(object) {
      if (!dart.test(dart.dcall(this[_validKey], object))) return false;
      return this[_remove](E.as(object)) != null;
    }
    addAll(elements) {
      IterableOfE()._check(elements);
      for (let element of elements) {
        let compare = this[_splay](element);
        if (compare != 0) {
          this[_addNewRoot](new (_SplayTreeNodeOfE())(element), compare);
        }
      }
    }
    removeAll(elements) {
      for (let element of elements) {
        if (dart.test(dart.dcall(this[_validKey], element))) this[_remove](E.as(element));
      }
    }
    retainAll(elements) {
      let retainSet = new (SplayTreeSetOfE())(this[_comparator], this[_validKey]);
      let modificationCount = this[_modificationCount];
      for (let object of elements) {
        if (modificationCount != this[_modificationCount]) {
          dart.throw(new core.ConcurrentModificationError(this));
        }
        if (dart.test(dart.dcall(this[_validKey], object)) && this[_splay](E.as(object)) == 0) {
          retainSet.add(this[_root].key);
        }
      }
      if (retainSet[_count] != this[_count]) {
        this[_root] = retainSet[_root];
        this[_count] = retainSet[_count];
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      }
    }
    lookup(object) {
      if (!dart.test(dart.dcall(this[_validKey], object))) return null;
      let comp = this[_splay](E.as(object));
      if (comp != 0) return null;
      return this[_root].key;
    }
    intersection(other) {
      let result = new (SplayTreeSetOfE())(this[_comparator], this[_validKey]);
      for (let element of this) {
        if (dart.test(other.contains(element))) result.add(element);
      }
      return result;
    }
    difference(other) {
      let result = new (SplayTreeSetOfE())(this[_comparator], this[_validKey]);
      for (let element of this) {
        if (!dart.test(other.contains(element))) result.add(element);
      }
      return result;
    }
    union(other) {
      SetOfE()._check(other);
      let _ = this[_clone]();
      _.addAll(other);
      return _;
    }
    [_clone]() {
      let set = new (SplayTreeSetOfE())(this[_comparator], this[_validKey]);
      set[_count] = this[_count];
      set[_root] = this[_copyNode](this[_root]);
      return set;
    }
    [_copyNode](node) {
      _SplayTreeNodeOfE()._check(node);
      if (node == null) return null;
      let _ = new (_SplayTreeNodeOfE())(node.key);
      _.left = this[_copyNode](node.left);
      _.right = this[_copyNode](node.right);
      return _;
    }
    clear() {
      this[_clear]();
    }
    toSet() {
      return this[_clone]();
    }
    toString() {
      return collection.IterableBase.iterableToFullString(this, '{', '}');
    }
  }
  dart.setSignature(SplayTreeSet, {
    constructors: () => ({
      new: dart.definiteFunctionType(collection.SplayTreeSet$(E), [], [ComparatorOfE(), dynamicTobool()]),
      from: dart.definiteFunctionType(collection.SplayTreeSet$(E), [core.Iterable], [ComparatorOfE(), dynamicTobool()])
    }),
    fields: () => ({
      [_root]: _SplayTreeNodeOfE(),
      [_dummy]: _SplayTreeNodeOfE(),
      [_comparator]: ComparatorOfE(),
      [_validKey]: collection._Predicate
    }),
    getters: () => ({
      iterator: dart.definiteFunctionType(core.Iterator$(E), []),
      first: dart.definiteFunctionType(E, []),
      last: dart.definiteFunctionType(E, []),
      single: dart.definiteFunctionType(E, [])
    }),
    methods: () => ({
      [_compare]: dart.definiteFunctionType(core.int, [E, E]),
      add: dart.definiteFunctionType(core.bool, [E]),
      remove: dart.definiteFunctionType(core.bool, [core.Object]),
      addAll: dart.definiteFunctionType(dart.void, [IterableOfE()]),
      lookup: dart.definiteFunctionType(E, [core.Object]),
      intersection: dart.definiteFunctionType(core.Set$(E), [SetOfObject()]),
      difference: dart.definiteFunctionType(core.Set$(E), [SetOfObject()]),
      union: dart.definiteFunctionType(core.Set$(E), [SetOfE()]),
      [_clone]: dart.definiteFunctionType(collection.SplayTreeSet$(E), []),
      [_copyNode]: dart.definiteFunctionType(collection._SplayTreeNode$(E), [_SplayTreeNodeOfE()]),
      toSet: dart.definiteFunctionType(core.Set$(E), [])
    })
  });
  dart.defineExtensionMembers(SplayTreeSet, [
    'contains',
    'toSet',
    'toString',
    'iterator',
    'length',
    'isEmpty',
    'isNotEmpty',
    'first',
    'last',
    'single'
  ]);
  return SplayTreeSet;
});
collection.SplayTreeSet = SplayTreeSet();
const _processed = Symbol('_processed');
const _computeKeys = Symbol('_computeKeys');
const _original = Symbol('_original');
convert._convertJsonToDart = function(json, reviver) {
  dart.assert(reviver != null);
  function walk(e) {
    if (e == null || typeof e != "object") {
      return e;
    }
    if (Object.getPrototypeOf(e) === Array.prototype) {
      for (let i = 0; i < e.length; i++) {
        let item = e[i];
        e[i] = dart.dcall(reviver, i, walk(item));
      }
      return e;
    }
    let map = new convert._JsonMap(e);
    let processed = map[_processed];
    let keys = map[_computeKeys]();
    for (let i = 0; i < dart.notNull(keys[dartx.length]); i++) {
      let key = keys[dartx._get](i);
      let revived = dart.dcall(reviver, key, walk(e[key]));
      processed[key] = revived;
    }
    map[_original] = processed;
    return map;
  }
  dart.fn(walk, dynamicTodynamic());
  return dart.dcall(reviver, null, walk(json));
};
dart.fn(convert._convertJsonToDart, dynamicAndFnTodynamic());
convert._convertJsonToDartLazy = function(object) {
  if (object == null) return null;
  if (typeof object != "object") {
    return object;
  }
  if (Object.getPrototypeOf(object) !== Array.prototype) {
    return new convert._JsonMap(object);
  }
  for (let i = 0; i < object.length; i++) {
    let item = object[i];
    object[i] = convert._convertJsonToDartLazy(item);
  }
  return object;
};
dart.fn(convert._convertJsonToDartLazy, dynamicTodynamic());
const _data = Symbol('_data');
const _isUpgraded = Symbol('_isUpgraded');
const _upgradedMap = Symbol('_upgradedMap');
const _process = Symbol('_process');
const _upgrade = Symbol('_upgrade');
convert._JsonMap = class _JsonMap extends core.Object {
  new(original) {
    this[_processed] = convert._JsonMap._newJavaScriptObject();
    this[_original] = original;
    this[_data] = null;
  }
  _get(key) {
    if (dart.test(this[_isUpgraded])) {
      return this[_upgradedMap][dartx._get](key);
    } else if (!(typeof key == 'string')) {
      return null;
    } else {
      let result = convert._JsonMap._getProperty(this[_processed], core.String._check(key));
      if (dart.test(convert._JsonMap._isUnprocessed(result))) result = this[_process](core.String._check(key));
      return result;
    }
  }
  get length() {
    return dart.test(this[_isUpgraded]) ? this[_upgradedMap][dartx.length] : this[_computeKeys]()[dartx.length];
  }
  get isEmpty() {
    return this.length == 0;
  }
  get isNotEmpty() {
    return dart.notNull(this.length) > 0;
  }
  get keys() {
    if (dart.test(this[_isUpgraded])) return this[_upgradedMap][dartx.keys];
    return new convert._JsonMapKeyIterable(this);
  }
  get values() {
    if (dart.test(this[_isUpgraded])) return this[_upgradedMap][dartx.values];
    return MappedIterableOfString$dynamic().new(this[_computeKeys](), dart.fn(each => this._get(each), dynamicTodynamic()));
  }
  _set(key, value) {
    if (dart.test(this[_isUpgraded])) {
      this[_upgradedMap][dartx._set](key, value);
    } else if (dart.test(this.containsKey(key))) {
      let processed = this[_processed];
      convert._JsonMap._setProperty(processed, core.String._check(key), value);
      let original = this[_original];
      if (!core.identical(original, processed)) {
        convert._JsonMap._setProperty(original, core.String._check(key), null);
      }
    } else {
      this[_upgrade]()[dartx._set](key, value);
    }
    return value;
  }
  addAll(other) {
    other[dartx.forEach](dart.fn((key, value) => {
      this._set(key, value);
    }, dynamicAnddynamicTovoid()));
  }
  containsValue(value) {
    if (dart.test(this[_isUpgraded])) return this[_upgradedMap][dartx.containsValue](value);
    let keys = this[_computeKeys]();
    for (let i = 0; i < dart.notNull(keys[dartx.length]); i++) {
      let key = keys[dartx._get](i);
      if (dart.equals(this._get(key), value)) return true;
    }
    return false;
  }
  containsKey(key) {
    if (dart.test(this[_isUpgraded])) return this[_upgradedMap][dartx.containsKey](key);
    if (!(typeof key == 'string')) return false;
    return convert._JsonMap._hasProperty(this[_original], core.String._check(key));
  }
  putIfAbsent(key, ifAbsent) {
    if (dart.test(this.containsKey(key))) return this._get(key);
    let value = ifAbsent();
    this._set(key, value);
    return value;
  }
  remove(key) {
    if (!dart.test(this[_isUpgraded]) && !dart.test(this.containsKey(key))) return null;
    return this[_upgrade]()[dartx.remove](key);
  }
  clear() {
    if (dart.test(this[_isUpgraded])) {
      this[_upgradedMap][dartx.clear]();
    } else {
      if (this[_data] != null) {
        dart.dsend(this[_data], 'clear');
      }
      this[_original] = this[_processed] = null;
      this[_data] = dart.map();
    }
  }
  forEach(f) {
    if (dart.test(this[_isUpgraded])) return this[_upgradedMap][dartx.forEach](f);
    let keys = this[_computeKeys]();
    for (let i = 0; i < dart.notNull(keys[dartx.length]); i++) {
      let key = keys[dartx._get](i);
      let value = convert._JsonMap._getProperty(this[_processed], key);
      if (dart.test(convert._JsonMap._isUnprocessed(value))) {
        value = convert._convertJsonToDartLazy(convert._JsonMap._getProperty(this[_original], key));
        convert._JsonMap._setProperty(this[_processed], key, value);
      }
      dart.dcall(f, key, value);
      if (!core.identical(keys, this[_data])) {
        dart.throw(new core.ConcurrentModificationError(this));
      }
    }
  }
  toString() {
    return collection.Maps.mapToString(this);
  }
  get [_isUpgraded]() {
    return this[_processed] == null;
  }
  get [_upgradedMap]() {
    dart.assert(this[_isUpgraded]);
    return this[_data];
  }
  [_computeKeys]() {
    dart.assert(!dart.test(this[_isUpgraded]));
    let keys = core.List._check(this[_data]);
    if (keys == null) {
      keys = this[_data] = convert._JsonMap._getPropertyNames(this[_original]);
    }
    return keys;
  }
  [_upgrade]() {
    if (dart.test(this[_isUpgraded])) return this[_upgradedMap];
    let result = dart.map();
    let keys = this[_computeKeys]();
    for (let i = 0; i < dart.notNull(keys[dartx.length]); i++) {
      let key = keys[dartx._get](i);
      result[dartx._set](key, this._get(key));
    }
    if (dart.test(keys[dartx.isEmpty])) {
      keys[dartx.add](null);
    } else {
      keys[dartx.clear]();
    }
    this[_original] = this[_processed] = null;
    this[_data] = result;
    dart.assert(this[_isUpgraded]);
    return result;
  }
  [_process](key) {
    if (!dart.test(convert._JsonMap._hasProperty(this[_original], key))) return null;
    let result = convert._convertJsonToDartLazy(convert._JsonMap._getProperty(this[_original], key));
    return convert._JsonMap._setProperty(this[_processed], key, result);
  }
  static _hasProperty(object, key) {
    return Object.prototype.hasOwnProperty.call(object, key);
  }
  static _getProperty(object, key) {
    return object[key];
  }
  static _setProperty(object, key, value) {
    return object[key] = value;
  }
  static _getPropertyNames(object) {
    return Object.keys(object);
  }
  static _isUnprocessed(object) {
    return typeof object == "undefined";
  }
  static _newJavaScriptObject() {
    return Object.create(null);
  }
};
convert._JsonMap[dart.implements] = () => [collection.LinkedHashMap];
dart.setSignature(convert._JsonMap, {
  constructors: () => ({new: dart.definiteFunctionType(convert._JsonMap, [dart.dynamic])}),
  fields: () => ({
    [_original]: dart.dynamic,
    [_processed]: dart.dynamic,
    [_data]: dart.dynamic
  }),
  getters: () => ({
    length: dart.definiteFunctionType(core.int, []),
    isEmpty: dart.definiteFunctionType(core.bool, []),
    isNotEmpty: dart.definiteFunctionType(core.bool, []),
    keys: dart.definiteFunctionType(core.Iterable, []),
    values: dart.definiteFunctionType(core.Iterable, []),
    [_isUpgraded]: dart.definiteFunctionType(core.bool, []),
    [_upgradedMap]: dart.definiteFunctionType(core.Map, [])
  }),
  methods: () => ({
    _get: dart.definiteFunctionType(dart.dynamic, [core.Object]),
    _set: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic]),
    addAll: dart.definiteFunctionType(dart.void, [core.Map]),
    containsValue: dart.definiteFunctionType(core.bool, [core.Object]),
    containsKey: dart.definiteFunctionType(core.bool, [core.Object]),
    putIfAbsent: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, VoidTodynamic()]),
    remove: dart.definiteFunctionType(dart.dynamic, [core.Object]),
    clear: dart.definiteFunctionType(dart.void, []),
    forEach: dart.definiteFunctionType(dart.void, [dynamicAnddynamicTovoid()]),
    [_computeKeys]: dart.definiteFunctionType(core.List$(core.String), []),
    [_upgrade]: dart.definiteFunctionType(core.Map, []),
    [_process]: dart.definiteFunctionType(dart.dynamic, [core.String])
  }),
  statics: () => ({
    _hasProperty: dart.definiteFunctionType(core.bool, [dart.dynamic, core.String]),
    _getProperty: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.String]),
    _setProperty: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.String, dart.dynamic]),
    _getPropertyNames: dart.definiteFunctionType(core.List, [dart.dynamic]),
    _isUnprocessed: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    _newJavaScriptObject: dart.definiteFunctionType(dart.dynamic, [])
  }),
  names: ['_hasProperty', '_getProperty', '_setProperty', '_getPropertyNames', '_isUnprocessed', '_newJavaScriptObject']
});
dart.defineExtensionMembers(convert._JsonMap, [
  '_get',
  '_set',
  'addAll',
  'containsValue',
  'containsKey',
  'putIfAbsent',
  'remove',
  'clear',
  'forEach',
  'length',
  'isEmpty',
  'isNotEmpty',
  'keys',
  'values'
]);
const _parent = Symbol('_parent');
convert._JsonMapKeyIterable = class _JsonMapKeyIterable extends _internal.ListIterable {
  new(parent) {
    this[_parent] = parent;
    super.new();
  }
  get length() {
    return this[_parent].length;
  }
  elementAt(index) {
    return core.String._check(dart.test(this[_parent][_isUpgraded]) ? this[_parent].keys[dartx.elementAt](index) : this[_parent][_computeKeys]()[dartx._get](index));
  }
  get iterator() {
    return dart.test(this[_parent][_isUpgraded]) ? this[_parent].keys[dartx.iterator] : this[_parent][_computeKeys]()[dartx.iterator];
  }
  contains(key) {
    return this[_parent].containsKey(key);
  }
};
dart.addSimpleTypeTests(convert._JsonMapKeyIterable);
dart.setSignature(convert._JsonMapKeyIterable, {
  constructors: () => ({new: dart.definiteFunctionType(convert._JsonMapKeyIterable, [convert._JsonMap])}),
  fields: () => ({[_parent]: convert._JsonMap}),
  getters: () => ({iterator: dart.definiteFunctionType(core.Iterator, [])}),
  methods: () => ({elementAt: dart.definiteFunctionType(core.String, [core.int])})
});
dart.defineExtensionMembers(convert._JsonMapKeyIterable, ['elementAt', 'contains', 'length', 'iterator']);
const _reviver = Symbol('_reviver');
const _sink = Symbol('_sink');
const _stringSink = Symbol('_stringSink');
convert.StringConversionSinkMixin = class StringConversionSinkMixin extends core.Object {
  add(str) {
    this.addSlice(str, 0, str[dartx.length], false);
  }
  asUtf8Sink(allowMalformed) {
    return new convert._Utf8ConversionSink(this, allowMalformed);
  }
  asStringSink() {
    return new convert._StringConversionSinkAsStringSinkAdapter(this);
  }
};
convert.StringConversionSinkMixin[dart.implements] = () => [convert.StringConversionSink];
dart.setSignature(convert.StringConversionSinkMixin, {
  methods: () => ({
    add: dart.definiteFunctionType(dart.void, [core.String]),
    asUtf8Sink: dart.definiteFunctionType(convert.ByteConversionSink, [core.bool]),
    asStringSink: dart.definiteFunctionType(convert.ClosableStringSink, [])
  })
});
convert.StringConversionSinkBase = class StringConversionSinkBase extends convert.StringConversionSinkMixin {};
convert._StringSinkConversionSink = class _StringSinkConversionSink extends convert.StringConversionSinkBase {
  new(stringSink) {
    this[_stringSink] = stringSink;
  }
  close() {}
  addSlice(str, start, end, isLast) {
    if (start != 0 || end != str[dartx.length]) {
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        this[_stringSink].writeCharCode(str[dartx.codeUnitAt](i));
      }
    } else {
      this[_stringSink].write(str);
    }
    if (dart.test(isLast)) this.close();
  }
  add(str) {
    this[_stringSink].write(str);
  }
  asUtf8Sink(allowMalformed) {
    return new convert._Utf8StringSinkAdapter(this, this[_stringSink], allowMalformed);
  }
  asStringSink() {
    return convert.ClosableStringSink.fromStringSink(this[_stringSink], dart.bind(this, 'close'));
  }
};
dart.setSignature(convert._StringSinkConversionSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._StringSinkConversionSink, [core.StringSink])}),
  fields: () => ({[_stringSink]: core.StringSink}),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    addSlice: dart.definiteFunctionType(dart.void, [core.String, core.int, core.int, core.bool])
  })
});
convert._JsonDecoderSink = class _JsonDecoderSink extends convert._StringSinkConversionSink {
  new(reviver, sink) {
    this[_reviver] = reviver;
    this[_sink] = sink;
    super.new(new core.StringBuffer());
  }
  close() {
    super.close();
    let buffer = core.StringBuffer._check(this[_stringSink]);
    let accumulated = dart.toString(buffer);
    buffer.clear();
    let decoded = convert._parseJson(accumulated, this[_reviver]);
    this[_sink].add(decoded);
    this[_sink].close();
  }
};
dart.setSignature(convert._JsonDecoderSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._JsonDecoderSink, [convert._Reviver, SinkOfObject()])}),
  fields: () => ({
    [_reviver]: convert._Reviver,
    [_sink]: SinkOfObject()
  })
});
const _allowInvalid = Symbol('_allowInvalid');
let const;
let const;
let const;
let const;
let const;
convert.Codec$ = dart.generic((S, T) => {
  let _InvertedCodecOfT$S = () => (_InvertedCodecOfT$S = dart.constFn(convert._InvertedCodec$(T, S)))();
  class Codec extends core.Object {
    new() {
    }
    encode(input) {
      S._check(input);
      return this.encoder.convert(input);
    }
    decode(encoded) {
      T._check(encoded);
      return this.decoder.convert(encoded);
    }
    fuse(R) {
      return other => {
        convert.Codec$(T, R)._check(other);
        return new (convert._FusedCodec$(S, T, R))(this, other);
      };
    }
    get inverted() {
      return new (_InvertedCodecOfT$S())(this);
    }
  }
  dart.addTypeTests(Codec);
  dart.setSignature(Codec, {
    constructors: () => ({new: dart.definiteFunctionType(convert.Codec$(S, T), [])}),
    getters: () => ({inverted: dart.definiteFunctionType(convert.Codec$(T, S), [])}),
    methods: () => ({
      encode: dart.definiteFunctionType(T, [S]),
      decode: dart.definiteFunctionType(S, [T]),
      fuse: dart.definiteFunctionType(R => [convert.Codec$(S, R), [convert.Codec$(T, R)]])
    })
  });
  return Codec;
});
convert.Codec = Codec();
core.String = class String extends core.Object {
  static fromCharCodes(charCodes, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    if (_interceptors.JSArray.is(charCodes)) {
      return core.String._stringFromJSArray(JSArrayOfint()._check(charCodes), start, end);
    }
    if (_native_typed_data.NativeUint8List.is(charCodes)) {
      return core.String._stringFromUint8List(charCodes, start, end);
    }
    return core.String._stringFromIterable(charCodes, start, end);
  }
  static fromCharCode(charCode) {
    return _js_helper.Primitives.stringFromCharCode(charCode);
  }
  static fromEnvironment(name, opts) {
    let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
    dart.throw(new core.UnsupportedError('String.fromEnvironment can only be used as a const constructor'));
  }
  static _stringFromJSArray(list, start, endOrNull) {
    let len = list[dartx.length];
    let end = core.RangeError.checkValidRange(start, endOrNull, len);
    if (dart.notNull(start) > 0 || dart.notNull(end) < dart.notNull(len)) {
      list = JSArrayOfint()._check(list[dartx.sublist](start, end));
    }
    return _js_helper.Primitives.stringFromCharCodes(list);
  }
  static _stringFromUint8List(charCodes, start, endOrNull) {
    let len = charCodes[dartx.length];
    let end = core.RangeError.checkValidRange(start, endOrNull, len);
    return _js_helper.Primitives.stringFromNativeUint8List(charCodes, start, end);
  }
  static _stringFromIterable(charCodes, start, end) {
    if (dart.notNull(start) < 0) dart.throw(new core.RangeError.range(start, 0, charCodes[dartx.length]));
    if (end != null && dart.notNull(end) < dart.notNull(start)) {
      dart.throw(new core.RangeError.range(end, start, charCodes[dartx.length]));
    }
    let it = charCodes[dartx.iterator];
    for (let i = 0; i < dart.notNull(start); i++) {
      if (!dart.test(it.moveNext())) {
        dart.throw(new core.RangeError.range(start, 0, i));
      }
    }
    let list = JSArrayOfint().of([]);
    if (end == null) {
      while (dart.test(it.moveNext()))
        list[dartx.add](it.current);
    } else {
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        if (!dart.test(it.moveNext())) {
          dart.throw(new core.RangeError.range(end, start, i));
        }
        list[dartx.add](it.current);
      }
    }
    return _js_helper.Primitives.stringFromCharCodes(JSArrayOfint()._check(list));
  }
};
core.String.is = function is_String(o) {
  return typeof o == "string";
};
core.String.as = function as_String(o) {
  if (typeof o == "string" || o == null) return o;
  return dart.as(o, core.String);
};
core.String._check = function check_String(o) {
  if (typeof o == "string" || o == null) return o;
  return dart.check(o, core.String);
};
core.String[dart.implements] = () => [ComparableOfString(), core.Pattern];
dart.setSignature(core.String, {
  constructors: () => ({
    fromCharCodes: dart.definiteFunctionType(core.String, [IterableOfint()], [core.int, core.int]),
    fromCharCode: dart.definiteFunctionType(core.String, [core.int]),
    fromEnvironment: dart.definiteFunctionType(core.String, [core.String], {defaultValue: core.String})
  }),
  statics: () => ({
    _stringFromJSArray: dart.definiteFunctionType(core.String, [JSArrayOfint(), core.int, core.int]),
    _stringFromUint8List: dart.definiteFunctionType(core.String, [_native_typed_data.NativeUint8List, core.int, core.int]),
    _stringFromIterable: dart.definiteFunctionType(core.String, [IterableOfint(), core.int, core.int])
  }),
  names: ['_stringFromJSArray', '_stringFromUint8List', '_stringFromIterable']
});
core.List$ = dart.generic(E => {
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let intToE = () => (intToE = dart.constFn(dart.functionType(E, [core.int])))();
  class List extends core.Object {
    static new(length) {
      if (length === void 0) length = null;
      let list = null;
      if (length == null) {
        list = [];
      } else {
        if (!(typeof length == 'number') || dart.notNull(length) < 0) {
          dart.throw(new core.ArgumentError(dart.str`Length must be a non-negative integer: ${length}`));
        }
        list = _interceptors.JSArray.markFixedList(new Array(length));
      }
      return JSArrayOfE().typed(list);
    }
    static filled(length, fill) {
      let result = ListOfE().new(length);
      if (length != 0 && fill != null) {
        for (let i = 0; i < dart.notNull(result[dartx.length]); i++) {
          result[dartx._set](i, fill);
        }
      }
      return result;
    }
    static from(elements, opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let list = ListOfE().new();
      for (let e of elements) {
        list[dartx.add](E._check(e));
      }
      if (dart.test(growable)) return list;
      return _internal.makeListFixedLength(E)(list);
    }
    static generate(length, generator, opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let result = null;
      if (dart.test(growable)) {
        result = JSArrayOfE().of([]);
        result[dartx.length] = length;
      } else {
        result = ListOfE().new(length);
      }
      for (let i = 0; i < dart.notNull(length); i++) {
        result[dartx._set](i, generator(i));
      }
      return result;
    }
    static unmodifiable(elements) {
      let result = ListOfE().from(elements, {growable: false});
      return _internal.makeFixedListUnmodifiable(E)(result);
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this[dartx.iterator]);
    }
  }
  dart.addTypeTests(List);
  List[dart.implements] = () => [IterableOfE(), _internal.EfficientLength];
  dart.setSignature(List, {
    constructors: () => ({
      new: dart.definiteFunctionType(core.List$(E), [], [core.int]),
      filled: dart.definiteFunctionType(core.List$(E), [core.int, E]),
      from: dart.definiteFunctionType(core.List$(E), [core.Iterable], {growable: core.bool}),
      generate: dart.definiteFunctionType(core.List$(E), [core.int, intToE()], {growable: core.bool}),
      unmodifiable: dart.definiteFunctionType(core.List$(E), [core.Iterable])
    })
  });
  return List;
});
core.List = List();
convert.Encoding = class Encoding extends convert.Codec$(core.String, core.List$(core.int)) {
  new() {
    super.new();
  }
  decodeStream(byteStream) {
    return byteStream.transform(core.String)(this.decoder).fold(dart.dynamic)(new core.StringBuffer(), dart.fn((buffer, string) => ((() => {
      dart.dsend(buffer, 'write', string);
      return buffer;
    })()), dynamicAndStringTodynamic())).then(core.String)(dart.fn(buffer => dart.toString(buffer), dynamicToString()));
  }
  static getByName(name) {
    if (name == null) return null;
    name = name[dartx.toLowerCase]();
    return convert.Encoding._nameToEncoding[dartx._get](name);
  }
};
dart.addSimpleTypeTests(convert.Encoding);
dart.setSignature(convert.Encoding, {
  constructors: () => ({new: dart.definiteFunctionType(convert.Encoding, [])}),
  methods: () => ({decodeStream: dart.definiteFunctionType(async.Future$(core.String), [StreamOfListOfint()])}),
  sfields: () => ({_nameToEncoding: MapOfString$Encoding()}),
  statics: () => ({getByName: dart.definiteFunctionType(convert.Encoding, [core.String])}),
  names: ['getByName']
});
dart.defineLazy(convert.Encoding, {
  get _nameToEncoding() {
    return dart.map({"iso_8859-1:1987": convert.LATIN1, "iso-ir-100": convert.LATIN1, "iso_8859-1": convert.LATIN1, "iso-8859-1": convert.LATIN1, latin1: convert.LATIN1, l1: convert.LATIN1, ibm819: convert.LATIN1, cp819: convert.LATIN1, csisolatin1: convert.LATIN1, "iso-ir-6": convert.ASCII, "ansi_x3.4-1968": convert.ASCII, "ansi_x3.4-1986": convert.ASCII, "iso_646.irv:1991": convert.ASCII, "iso646-us": convert.ASCII, "us-ascii": convert.ASCII, us: convert.ASCII, ibm367: convert.ASCII, cp367: convert.ASCII, csascii: convert.ASCII, ascii: convert.ASCII, csutf8: convert.UTF8, "utf-8": convert.UTF8}, core.String, convert.Encoding);
  },
  set _nameToEncoding(_) {}
});
convert.AsciiCodec = class AsciiCodec extends convert.Encoding {
  new(opts) {
    let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false;
    this[_allowInvalid] = allowInvalid;
    super.new();
  }
  get name() {
    return "us-ascii";
  }
  decode(bytes, opts) {
    let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : null;
    if (allowInvalid == null) allowInvalid = this[_allowInvalid];
    if (dart.test(allowInvalid)) {
      return (const || (const = dart.const(new convert.AsciiDecoder({allowInvalid: true})))).convert(bytes);
    } else {
      return (const || (const = dart.const(new convert.AsciiDecoder({allowInvalid: false})))).convert(bytes);
    }
  }
  get encoder() {
    return const || (const = dart.const(new convert.AsciiEncoder()));
  }
  get decoder() {
    return dart.test(this[_allowInvalid]) ? const || (const = dart.const(new convert.AsciiDecoder({allowInvalid: true}))) : const || (const = dart.const(new convert.AsciiDecoder({allowInvalid: false})));
  }
};
dart.setSignature(convert.AsciiCodec, {
  constructors: () => ({new: dart.definiteFunctionType(convert.AsciiCodec, [], {allowInvalid: core.bool})}),
  fields: () => ({[_allowInvalid]: core.bool}),
  getters: () => ({
    name: dart.definiteFunctionType(core.String, []),
    encoder: dart.definiteFunctionType(convert.AsciiEncoder, []),
    decoder: dart.definiteFunctionType(convert.AsciiDecoder, [])
  }),
  methods: () => ({decode: dart.definiteFunctionType(core.String, [ListOfint()], {allowInvalid: core.bool})})
});
convert.ASCII = dart.const(new convert.AsciiCodec());
convert._ASCII_MASK = 127;
const _subsetMask = Symbol('_subsetMask');
convert.Converter$ = dart.generic((S, T) => {
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let _ConverterStreamEventSinkOfS$dynamic = () => (_ConverterStreamEventSinkOfS$dynamic = dart.constFn(convert._ConverterStreamEventSink$(S, dart.dynamic)))();
  let StreamTransformerOfS$T = () => (StreamTransformerOfS$T = dart.constFn(async.StreamTransformer$(S, T)))();
  let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let EventSinkTo_ConverterStreamEventSinkOfS$dynamic = () => (EventSinkTo_ConverterStreamEventSinkOfS$dynamic = dart.constFn(dart.definiteFunctionType(_ConverterStreamEventSinkOfS$dynamic(), [async.EventSink])))();
  class Converter extends core.Object {
    new() {
    }
    fuse(TT) {
      return other => {
        convert.Converter$(T, TT)._check(other);
        return new (convert._FusedConverter$(S, T, TT))(this, other);
      };
    }
    startChunkedConversion(sink) {
      SinkOfT()._check(sink);
      dart.throw(new core.UnsupportedError(dart.str`This converter does not support chunked conversions: ${this}`));
    }
    bind(stream) {
      StreamOfS()._check(stream);
      return StreamOfT().eventTransformed(stream, dart.fn(sink => new (_ConverterStreamEventSinkOfS$dynamic())(this, sink), EventSinkTo_ConverterStreamEventSinkOfS$dynamic()));
    }
  }
  dart.addTypeTests(Converter);
  Converter[dart.implements] = () => [StreamTransformerOfS$T()];
  dart.setSignature(Converter, {
    constructors: () => ({new: dart.definiteFunctionType(convert.Converter$(S, T), [])}),
    methods: () => ({
      fuse: dart.definiteFunctionType(TT => [convert.Converter$(S, TT), [convert.Converter$(T, TT)]]),
      startChunkedConversion: dart.definiteFunctionType(core.Sink$(S), [SinkOfT()]),
      bind: dart.definiteFunctionType(async.Stream$(T), [StreamOfS()])
    })
  });
  return Converter;
});
convert.Converter = Converter();
convert._UnicodeSubsetEncoder = class _UnicodeSubsetEncoder extends convert.Converter$(core.String, core.List$(core.int)) {
  new(subsetMask) {
    this[_subsetMask] = subsetMask;
    super.new();
  }
  convert(string, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    let stringLength = string[dartx.length];
    core.RangeError.checkValidRange(start, end, stringLength);
    if (end == null) end = stringLength;
    let length = dart.notNull(end) - dart.notNull(start);
    let result = typed_data.Uint8List.new(length);
    for (let i = 0; i < length; i++) {
      let codeUnit = string[dartx.codeUnitAt](dart.notNull(start) + i);
      if ((dart.notNull(codeUnit) & ~dart.notNull(this[_subsetMask])) != 0) {
        dart.throw(new core.ArgumentError("String contains invalid characters."));
      }
      result[dartx._set](i, codeUnit);
    }
    return result;
  }
  startChunkedConversion(sink) {
    if (!convert.ByteConversionSink.is(sink)) {
      sink = convert.ByteConversionSink.from(sink);
    }
    return new convert._UnicodeSubsetEncoderSink(this[_subsetMask], convert.ByteConversionSink._check(sink));
  }
  bind(stream) {
    return super.bind(stream);
  }
};
dart.addSimpleTypeTests(convert._UnicodeSubsetEncoder);
dart.setSignature(convert._UnicodeSubsetEncoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert._UnicodeSubsetEncoder, [core.int])}),
  fields: () => ({[_subsetMask]: core.int}),
  methods: () => ({
    convert: dart.definiteFunctionType(core.List$(core.int), [core.String], [core.int, core.int]),
    startChunkedConversion: dart.definiteFunctionType(convert.StringConversionSink, [SinkOfListOfint()]),
    bind: dart.definiteFunctionType(async.Stream$(core.List$(core.int)), [StreamOfString()])
  })
});
convert.AsciiEncoder = class AsciiEncoder extends convert._UnicodeSubsetEncoder {
  new() {
    super.new(convert._ASCII_MASK);
  }
};
dart.setSignature(convert.AsciiEncoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert.AsciiEncoder, [])})
});
convert._UnicodeSubsetEncoderSink = class _UnicodeSubsetEncoderSink extends convert.StringConversionSinkBase {
  new(subsetMask, sink) {
    this[_subsetMask] = subsetMask;
    this[_sink] = sink;
  }
  close() {
    this[_sink].close();
  }
  addSlice(source, start, end, isLast) {
    core.RangeError.checkValidRange(start, end, source[dartx.length]);
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let codeUnit = source[dartx.codeUnitAt](i);
      if ((dart.notNull(codeUnit) & ~dart.notNull(this[_subsetMask])) != 0) {
        dart.throw(new core.ArgumentError(dart.str`Source contains invalid character with code point: ${codeUnit}.`));
      }
    }
    this[_sink].add(source[dartx.codeUnits][dartx.sublist](start, end));
    if (dart.test(isLast)) {
      this.close();
    }
  }
};
dart.setSignature(convert._UnicodeSubsetEncoderSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._UnicodeSubsetEncoderSink, [core.int, convert.ByteConversionSink])}),
  fields: () => ({
    [_sink]: convert.ByteConversionSink,
    [_subsetMask]: core.int
  }),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    addSlice: dart.definiteFunctionType(dart.void, [core.String, core.int, core.int, core.bool])
  })
});
const _convertInvalid = Symbol('_convertInvalid');
convert._UnicodeSubsetDecoder = class _UnicodeSubsetDecoder extends convert.Converter$(core.List$(core.int), core.String) {
  new(allowInvalid, subsetMask) {
    this[_allowInvalid] = allowInvalid;
    this[_subsetMask] = subsetMask;
    super.new();
  }
  convert(bytes, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    let byteCount = bytes[dartx.length];
    core.RangeError.checkValidRange(start, end, byteCount);
    if (end == null) end = byteCount;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let byte = bytes[dartx._get](i);
      if ((dart.notNull(byte) & ~dart.notNull(this[_subsetMask])) != 0) {
        if (!dart.test(this[_allowInvalid])) {
          dart.throw(new core.FormatException(dart.str`Invalid value in input: ${byte}`));
        }
        return this[_convertInvalid](bytes, start, end);
      }
    }
    return core.String.fromCharCodes(bytes, start, end);
  }
  [_convertInvalid](bytes, start, end) {
    let buffer = new core.StringBuffer();
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let value = bytes[dartx._get](i);
      if ((dart.notNull(value) & ~dart.notNull(this[_subsetMask])) != 0) value = 65533;
      buffer.writeCharCode(value);
    }
    return buffer.toString();
  }
  bind(stream) {
    return super.bind(stream);
  }
};
dart.addSimpleTypeTests(convert._UnicodeSubsetDecoder);
dart.setSignature(convert._UnicodeSubsetDecoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert._UnicodeSubsetDecoder, [core.bool, core.int])}),
  fields: () => ({
    [_allowInvalid]: core.bool,
    [_subsetMask]: core.int
  }),
  methods: () => ({
    convert: dart.definiteFunctionType(core.String, [ListOfint()], [core.int, core.int]),
    [_convertInvalid]: dart.definiteFunctionType(core.String, [ListOfint(), core.int, core.int]),
    bind: dart.definiteFunctionType(async.Stream$(core.String), [StreamOfListOfint()])
  })
});
convert.AsciiDecoder = class AsciiDecoder extends convert._UnicodeSubsetDecoder {
  new(opts) {
    let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false;
    super.new(allowInvalid, convert._ASCII_MASK);
  }
  startChunkedConversion(sink) {
    let stringSink = null;
    if (convert.StringConversionSink.is(sink)) {
      stringSink = sink;
    } else {
      stringSink = convert.StringConversionSink.from(sink);
    }
    if (dart.test(this[_allowInvalid])) {
      return new convert._ErrorHandlingAsciiDecoderSink(stringSink.asUtf8Sink(false));
    } else {
      return new convert._SimpleAsciiDecoderSink(stringSink);
    }
  }
};
dart.setSignature(convert.AsciiDecoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert.AsciiDecoder, [], {allowInvalid: core.bool})}),
  methods: () => ({startChunkedConversion: dart.definiteFunctionType(convert.ByteConversionSink, [SinkOfString()])})
});
const _utf8Sink = Symbol('_utf8Sink');
let const;
convert.ChunkedConversionSink$ = dart.generic(T => {
  let _SimpleCallbackSinkOfT = () => (_SimpleCallbackSinkOfT = dart.constFn(convert._SimpleCallbackSink$(T)))();
  let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
  let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
  let ListOfTTovoid = () => (ListOfTTovoid = dart.constFn(dart.functionType(dart.void, [ListOfT()])))();
  class ChunkedConversionSink extends core.Object {
    new() {
    }
    static withCallback(callback) {
      return new (_SimpleCallbackSinkOfT())(callback);
    }
  }
  dart.addTypeTests(ChunkedConversionSink);
  ChunkedConversionSink[dart.implements] = () => [SinkOfT()];
  dart.setSignature(ChunkedConversionSink, {
    constructors: () => ({
      new: dart.definiteFunctionType(convert.ChunkedConversionSink$(T), []),
      withCallback: dart.definiteFunctionType(convert.ChunkedConversionSink$(T), [ListOfTTovoid()])
    })
  });
  return ChunkedConversionSink;
});
convert.ChunkedConversionSink = ChunkedConversionSink();
convert.ByteConversionSink = class ByteConversionSink extends convert.ChunkedConversionSink$(core.List$(core.int)) {
  new() {
    super.new();
  }
  static withCallback(callback) {
    return new convert._ByteCallbackSink(callback);
  }
  static from(sink) {
    return new convert._ByteAdapterSink(sink);
  }
};
dart.addSimpleTypeTests(convert.ByteConversionSink);
dart.setSignature(convert.ByteConversionSink, {
  constructors: () => ({
    new: dart.definiteFunctionType(convert.ByteConversionSink, []),
    withCallback: dart.definiteFunctionType(convert.ByteConversionSink, [ListOfintTovoid()]),
    from: dart.definiteFunctionType(convert.ByteConversionSink, [SinkOfListOfint()])
  })
});
convert.ByteConversionSinkBase = class ByteConversionSinkBase extends convert.ByteConversionSink {
  new() {
    super.new();
  }
  addSlice(chunk, start, end, isLast) {
    this.add(chunk[dartx.sublist](start, end));
    if (dart.test(isLast)) this.close();
  }
};
dart.setSignature(convert.ByteConversionSinkBase, {
  methods: () => ({addSlice: dart.definiteFunctionType(dart.void, [ListOfint(), core.int, core.int, core.bool])})
});
convert._ErrorHandlingAsciiDecoderSink = class _ErrorHandlingAsciiDecoderSink extends convert.ByteConversionSinkBase {
  new(utf8Sink) {
    this[_utf8Sink] = utf8Sink;
    super.new();
  }
  close() {
    this[_utf8Sink].close();
  }
  add(source) {
    this.addSlice(source, 0, source[dartx.length], false);
  }
  addSlice(source, start, end, isLast) {
    core.RangeError.checkValidRange(start, end, source[dartx.length]);
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      if ((dart.notNull(source[dartx._get](i)) & ~convert._ASCII_MASK) != 0) {
        if (dart.notNull(i) > dart.notNull(start)) this[_utf8Sink].addSlice(source, start, i, false);
        this[_utf8Sink].add(const || (const = dart.constList([239, 191, 189], core.int)));
        start = dart.notNull(i) + 1;
      }
    }
    if (dart.notNull(start) < dart.notNull(end)) {
      this[_utf8Sink].addSlice(source, start, end, isLast);
    } else if (dart.test(isLast)) {
      this.close();
    }
  }
};
dart.setSignature(convert._ErrorHandlingAsciiDecoderSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._ErrorHandlingAsciiDecoderSink, [convert.ByteConversionSink])}),
  fields: () => ({[_utf8Sink]: convert.ByteConversionSink}),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    add: dart.definiteFunctionType(dart.void, [ListOfint()])
  })
});
convert._SimpleAsciiDecoderSink = class _SimpleAsciiDecoderSink extends convert.ByteConversionSinkBase {
  new(sink) {
    this[_sink] = sink;
    super.new();
  }
  close() {
    this[_sink].close();
  }
  add(source) {
    for (let i = 0; i < dart.notNull(source[dartx.length]); i++) {
      if ((dart.notNull(source[dartx._get](i)) & ~convert._ASCII_MASK) != 0) {
        dart.throw(new core.FormatException("Source contains non-ASCII bytes."));
      }
    }
    this[_sink].add(core.String.fromCharCodes(source));
  }
  addSlice(source, start, end, isLast) {
    let length = source[dartx.length];
    core.RangeError.checkValidRange(start, end, length);
    if (dart.notNull(start) < dart.notNull(end)) {
      if (start != 0 || end != length) {
        source = source[dartx.sublist](start, end);
      }
      this.add(source);
    }
    if (dart.test(isLast)) this.close();
  }
};
dart.setSignature(convert._SimpleAsciiDecoderSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._SimpleAsciiDecoderSink, [core.Sink])}),
  fields: () => ({[_sink]: core.Sink}),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    add: dart.definiteFunctionType(dart.void, [ListOfint()])
  })
});
const _urlSafe = Symbol('_urlSafe');
convert.Base64Encoder = class Base64Encoder extends convert.Converter$(core.List$(core.int), core.String) {
  new() {
    this[_urlSafe] = false;
    super.new();
  }
  urlSafe() {
    this[_urlSafe] = true;
    super.new();
  }
  convert(input) {
    if (dart.test(input[dartx.isEmpty])) return "";
    let encoder = new convert._Base64Encoder(this[_urlSafe]);
    let buffer = encoder.encode(input, 0, input[dartx.length], true);
    return core.String.fromCharCodes(buffer);
  }
  startChunkedConversion(sink) {
    if (convert.StringConversionSink.is(sink)) {
      return new convert._Utf8Base64EncoderSink(sink.asUtf8Sink(false), this[_urlSafe]);
    }
    return new convert._AsciiBase64EncoderSink(sink, this[_urlSafe]);
  }
};
dart.addSimpleTypeTests(convert.Base64Encoder);
dart.defineNamedConstructor(convert.Base64Encoder, 'urlSafe');
dart.setSignature(convert.Base64Encoder, {
  constructors: () => ({
    new: dart.definiteFunctionType(convert.Base64Encoder, []),
    urlSafe: dart.definiteFunctionType(convert.Base64Encoder, [])
  }),
  fields: () => ({[_urlSafe]: core.bool}),
  methods: () => ({
    convert: dart.definiteFunctionType(core.String, [ListOfint()]),
    startChunkedConversion: dart.definiteFunctionType(convert.ByteConversionSink, [SinkOfString()])
  })
});
let const;
const _encoder = Symbol('_encoder');
let const;
let const;
convert.Base64Codec = class Base64Codec extends convert.Codec$(core.List$(core.int), core.String) {
  new() {
    this[_encoder] = const || (const = dart.const(new convert.Base64Encoder()));
    super.new();
  }
  urlSafe() {
    this[_encoder] = const || (const = dart.const(new convert.Base64Encoder.urlSafe()));
    super.new();
  }
  get encoder() {
    return this[_encoder];
  }
  get decoder() {
    return const || (const = dart.const(new convert.Base64Decoder()));
  }
};
dart.addSimpleTypeTests(convert.Base64Codec);
dart.defineNamedConstructor(convert.Base64Codec, 'urlSafe');
dart.setSignature(convert.Base64Codec, {
  constructors: () => ({
    new: dart.definiteFunctionType(convert.Base64Codec, []),
    urlSafe: dart.definiteFunctionType(convert.Base64Codec, [])
  }),
  fields: () => ({[_encoder]: convert.Base64Encoder}),
  getters: () => ({
    encoder: dart.definiteFunctionType(convert.Base64Encoder, []),
    decoder: dart.definiteFunctionType(convert.Base64Decoder, [])
  })
});
convert.BASE64 = dart.const(new convert.Base64Codec());
convert.BASE64URL = dart.const(new convert.Base64Codec.urlSafe());
convert._paddingChar = 61;
const _alphabet = Symbol('_alphabet');
const _state = Symbol('_state');
convert._Base64Encoder = class _Base64Encoder extends core.Object {
  new(urlSafe) {
    this[_alphabet] = dart.test(urlSafe) ? convert._Base64Encoder._base64urlAlphabet : convert._Base64Encoder._base64Alphabet;
    this[_state] = 0;
  }
  static _encodeState(count, bits) {
    dart.assert(dart.notNull(count) <= convert._Base64Encoder._countMask);
    return (dart.notNull(bits) << convert._Base64Encoder._valueShift | dart.notNull(count)) >>> 0;
  }
  static _stateBits(state) {
    return state[dartx['>>']](convert._Base64Encoder._valueShift);
  }
  static _stateCount(state) {
    return dart.notNull(state) & convert._Base64Encoder._countMask;
  }
  createBuffer(bufferLength) {
    return typed_data.Uint8List.new(bufferLength);
  }
  encode(bytes, start, end, isLast) {
    dart.assert(0 <= dart.notNull(start));
    dart.assert(dart.notNull(start) <= dart.notNull(end));
    dart.assert(bytes == null || dart.notNull(end) <= dart.notNull(bytes[dartx.length]));
    let length = dart.notNull(end) - dart.notNull(start);
    let count = convert._Base64Encoder._stateCount(this[_state]);
    let byteCount = dart.notNull(count) + length;
    let fullChunks = (byteCount / 3)[dartx.truncate]();
    let partialChunkLength = byteCount - fullChunks * 3;
    let bufferLength = fullChunks * 4;
    if (dart.test(isLast) && partialChunkLength > 0) {
      bufferLength = bufferLength + 4;
    }
    let output = this.createBuffer(bufferLength);
    this[_state] = convert._Base64Encoder.encodeChunk(this[_alphabet], bytes, start, end, isLast, output, 0, this[_state]);
    if (bufferLength > 0) return output;
    return null;
  }
  static encodeChunk(alphabet, bytes, start, end, isLast, output, outputIndex, state) {
    let bits = convert._Base64Encoder._stateBits(state);
    let expectedChars = 3 - dart.notNull(convert._Base64Encoder._stateCount(state));
    let byteOr = 0;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let byte = bytes[dartx._get](i);
      byteOr = (dart.notNull(byteOr) | dart.notNull(byte)) >>> 0;
      bits = (dart.notNull(bits) << 8 | dart.notNull(byte)) & 16777215;
      expectedChars--;
      if (expectedChars == 0) {
        output[dartx._set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[dartx.codeUnitAt](dart.notNull(bits) >> 18 & convert._Base64Encoder._sixBitMask));
        output[dartx._set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[dartx.codeUnitAt](dart.notNull(bits) >> 12 & convert._Base64Encoder._sixBitMask));
        output[dartx._set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[dartx.codeUnitAt](dart.notNull(bits) >> 6 & convert._Base64Encoder._sixBitMask));
        output[dartx._set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[dartx.codeUnitAt](dart.notNull(bits) & convert._Base64Encoder._sixBitMask));
        expectedChars = 3;
        bits = 0;
      }
    }
    if (dart.notNull(byteOr) >= 0 && dart.notNull(byteOr) <= 255) {
      if (dart.test(isLast) && expectedChars < 3) {
        convert._Base64Encoder.writeFinalChunk(alphabet, output, outputIndex, 3 - expectedChars, bits);
        return 0;
      }
      return convert._Base64Encoder._encodeState(3 - expectedChars, bits);
    }
    let i = start;
    while (dart.notNull(i) < dart.notNull(end)) {
      let byte = bytes[dartx._get](i);
      if (dart.notNull(byte) < 0 || dart.notNull(byte) > 255) break;
      i = dart.notNull(i) + 1;
    }
    dart.throw(new core.ArgumentError.value(bytes, dart.str`Not a byte value at index ${i}: 0x${bytes[dartx._get](i)[dartx.toRadixString](16)}`));
  }
  static writeFinalChunk(alphabet, output, outputIndex, count, bits) {
    dart.assert(dart.notNull(count) > 0);
    if (count == 1) {
      output[dartx._set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), alphabet[dartx.codeUnitAt](dart.notNull(bits) >> 2 & convert._Base64Encoder._sixBitMask));
      output[dartx._set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), alphabet[dartx.codeUnitAt](dart.notNull(bits) << 4 & convert._Base64Encoder._sixBitMask));
      output[dartx._set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), convert._paddingChar);
      output[dartx._set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), convert._paddingChar);
    } else {
      dart.assert(count == 2);
      output[dartx._set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), alphabet[dartx.codeUnitAt](dart.notNull(bits) >> 10 & convert._Base64Encoder._sixBitMask));
      output[dartx._set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), alphabet[dartx.codeUnitAt](dart.notNull(bits) >> 4 & convert._Base64Encoder._sixBitMask));
      output[dartx._set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), alphabet[dartx.codeUnitAt](dart.notNull(bits) << 2 & convert._Base64Encoder._sixBitMask));
      output[dartx._set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), convert._paddingChar);
    }
  }
};
dart.setSignature(convert._Base64Encoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert._Base64Encoder, [core.bool])}),
  fields: () => ({
    [_state]: core.int,
    [_alphabet]: core.String
  }),
  methods: () => ({
    createBuffer: dart.definiteFunctionType(typed_data.Uint8List, [core.int]),
    encode: dart.definiteFunctionType(typed_data.Uint8List, [ListOfint(), core.int, core.int, core.bool])
  }),
  sfields: () => ({
    _base64Alphabet: core.String,
    _base64urlAlphabet: core.String,
    _valueShift: core.int,
    _countMask: core.int,
    _sixBitMask: core.int
  }),
  statics: () => ({
    _encodeState: dart.definiteFunctionType(core.int, [core.int, core.int]),
    _stateBits: dart.definiteFunctionType(core.int, [core.int]),
    _stateCount: dart.definiteFunctionType(core.int, [core.int]),
    encodeChunk: dart.definiteFunctionType(core.int, [core.String, ListOfint(), core.int, core.int, core.bool, typed_data.Uint8List, core.int, core.int]),
    writeFinalChunk: dart.definiteFunctionType(dart.void, [core.String, typed_data.Uint8List, core.int, core.int, core.int])
  }),
  names: ['_encodeState', '_stateBits', '_stateCount', 'encodeChunk', 'writeFinalChunk']
});
convert._Base64Encoder._base64Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
convert._Base64Encoder._base64urlAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
convert._Base64Encoder._valueShift = 2;
convert._Base64Encoder._countMask = 3;
convert._Base64Encoder._sixBitMask = 63;
convert._BufferCachingBase64Encoder = class _BufferCachingBase64Encoder extends convert._Base64Encoder {
  new(urlSafe) {
    this.bufferCache = null;
    super.new(urlSafe);
  }
  createBuffer(bufferLength) {
    if (this.bufferCache == null || dart.notNull(this.bufferCache[dartx.length]) < dart.notNull(bufferLength)) {
      this.bufferCache = typed_data.Uint8List.new(bufferLength);
    }
    return typed_data.Uint8List.view(this.bufferCache[dartx.buffer], 0, bufferLength);
  }
};
dart.setSignature(convert._BufferCachingBase64Encoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert._BufferCachingBase64Encoder, [core.bool])}),
  fields: () => ({bufferCache: typed_data.Uint8List})
});
const _add = Symbol('_add');
convert._Base64EncoderSink = class _Base64EncoderSink extends convert.ByteConversionSinkBase {
  new() {
    super.new();
  }
  add(source) {
    this[_add](source, 0, source[dartx.length], false);
  }
  close() {
    this[_add](null, 0, 0, true);
  }
  addSlice(source, start, end, isLast) {
    if (end == null) dart.throw(new core.ArgumentError.notNull("end"));
    core.RangeError.checkValidRange(start, end, source[dartx.length]);
    this[_add](source, start, end, isLast);
  }
};
dart.setSignature(convert._Base64EncoderSink, {
  methods: () => ({
    add: dart.definiteFunctionType(dart.void, [ListOfint()]),
    close: dart.definiteFunctionType(dart.void, [])
  })
});
convert._AsciiBase64EncoderSink = class _AsciiBase64EncoderSink extends convert._Base64EncoderSink {
  new(sink, urlSafe) {
    this[_sink] = sink;
    this[_encoder] = new convert._BufferCachingBase64Encoder(urlSafe);
    super.new();
  }
  [_add](source, start, end, isLast) {
    let buffer = this[_encoder].encode(source, start, end, isLast);
    if (buffer != null) {
      let string = core.String.fromCharCodes(buffer);
      this[_sink].add(string);
    }
    if (dart.test(isLast)) {
      this[_sink].close();
    }
  }
};
dart.setSignature(convert._AsciiBase64EncoderSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._AsciiBase64EncoderSink, [SinkOfString(), core.bool])}),
  fields: () => ({
    [_sink]: SinkOfString(),
    [_encoder]: convert._Base64Encoder
  }),
  methods: () => ({[_add]: dart.definiteFunctionType(dart.void, [ListOfint(), core.int, core.int, core.bool])})
});
convert._Utf8Base64EncoderSink = class _Utf8Base64EncoderSink extends convert._Base64EncoderSink {
  new(sink, urlSafe) {
    this[_sink] = sink;
    this[_encoder] = new convert._Base64Encoder(urlSafe);
    super.new();
  }
  [_add](source, start, end, isLast) {
    let buffer = this[_encoder].encode(source, start, end, isLast);
    if (buffer != null) {
      this[_sink].addSlice(buffer, 0, buffer[dartx.length], isLast);
    }
  }
};
dart.setSignature(convert._Utf8Base64EncoderSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._Utf8Base64EncoderSink, [convert.ByteConversionSink, core.bool])}),
  fields: () => ({
    [_sink]: convert.ByteConversionSink,
    [_encoder]: convert._Base64Encoder
  }),
  methods: () => ({[_add]: dart.definiteFunctionType(dart.void, [ListOfint(), core.int, core.int, core.bool])})
});
convert.Base64Decoder = class Base64Decoder extends convert.Converter$(core.String, core.List$(core.int)) {
  new() {
    super.new();
  }
  convert(input, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    end = core.RangeError.checkValidRange(start, end, input[dartx.length]);
    if (start == end) return typed_data.Uint8List.new(0);
    let decoder = new convert._Base64Decoder();
    let buffer = decoder.decode(input, start, end);
    decoder.close(input, end);
    return buffer;
  }
  startChunkedConversion(sink) {
    return new convert._Base64DecoderSink(sink);
  }
};
dart.addSimpleTypeTests(convert.Base64Decoder);
dart.setSignature(convert.Base64Decoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert.Base64Decoder, [])}),
  methods: () => ({
    convert: dart.definiteFunctionType(core.List$(core.int), [core.String], [core.int, core.int]),
    startChunkedConversion: dart.definiteFunctionType(convert.StringConversionSink, [SinkOfListOfint()])
  })
});
convert._Base64Decoder = class _Base64Decoder extends core.Object {
  new() {
    this[_state] = 0;
  }
  static _encodeCharacterState(count, bits) {
    dart.assert(count == (dart.notNull(count) & convert._Base64Decoder._countMask));
    return (dart.notNull(bits) << convert._Base64Decoder._valueShift | dart.notNull(count)) >>> 0;
  }
  static _stateCount(state) {
    dart.assert(dart.notNull(state) >= 0);
    return dart.notNull(state) & convert._Base64Decoder._countMask;
  }
  static _stateBits(state) {
    dart.assert(dart.notNull(state) >= 0);
    return state[dartx['>>']](convert._Base64Decoder._valueShift);
  }
  static _encodePaddingState(expectedPadding) {
    dart.assert(dart.notNull(expectedPadding) >= 0);
    dart.assert(dart.notNull(expectedPadding) <= 5);
    return -dart.notNull(expectedPadding) - 1;
  }
  static _statePadding(state) {
    dart.assert(dart.notNull(state) < 0);
    return -dart.notNull(state) - 1;
  }
  static _hasSeenPadding(state) {
    return dart.notNull(state) < 0;
  }
  decode(input, start, end) {
    dart.assert(0 <= dart.notNull(start));
    dart.assert(dart.notNull(start) <= dart.notNull(end));
    dart.assert(dart.notNull(end) <= dart.notNull(input[dartx.length]));
    if (dart.test(convert._Base64Decoder._hasSeenPadding(this[_state]))) {
      this[_state] = convert._Base64Decoder._checkPadding(input, start, end, this[_state]);
      return null;
    }
    if (start == end) return typed_data.Uint8List.new(0);
    let buffer = convert._Base64Decoder._allocateBuffer(input, start, end, this[_state]);
    this[_state] = convert._Base64Decoder.decodeChunk(input, start, end, buffer, 0, this[_state]);
    return buffer;
  }
  close(input, end) {
    if (dart.notNull(this[_state]) < dart.notNull(convert._Base64Decoder._encodePaddingState(0))) {
      dart.throw(new core.FormatException("Missing padding character", input, end));
    }
    if (dart.notNull(this[_state]) > 0) {
      dart.throw(new core.FormatException("Invalid length, must be multiple of four", input, end));
    }
    this[_state] = convert._Base64Decoder._encodePaddingState(0);
  }
  static decodeChunk(input, start, end, output, outIndex, state) {
    dart.assert(!dart.test(convert._Base64Decoder._hasSeenPadding(state)));
    let asciiMask = 127;
    let asciiMax = 127;
    let eightBitMask = 255;
    let bitsPerCharacter = 6;
    let bits = convert._Base64Decoder._stateBits(state);
    let count = convert._Base64Decoder._stateCount(state);
    let charOr = 0;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = input[dartx.codeUnitAt](i);
      charOr = (dart.notNull(charOr) | dart.notNull(char)) >>> 0;
      let code = convert._Base64Decoder._inverseAlphabet[dartx._get]((dart.notNull(char) & asciiMask) >>> 0);
      if (dart.notNull(code) >= 0) {
        bits = (bits[dartx['<<']](bitsPerCharacter) | dart.notNull(code)) & 16777215;
        count = dart.notNull(count) + 1 & 3;
        if (count == 0) {
          dart.assert(dart.notNull(outIndex) + 3 <= dart.notNull(output[dartx.length]));
          output[dartx._set]((() => {
            let x = outIndex;
            outIndex = dart.notNull(x) + 1;
            return x;
          })(), (bits[dartx['>>']](16) & eightBitMask) >>> 0);
          output[dartx._set]((() => {
            let x = outIndex;
            outIndex = dart.notNull(x) + 1;
            return x;
          })(), (bits[dartx['>>']](8) & eightBitMask) >>> 0);
          output[dartx._set]((() => {
            let x = outIndex;
            outIndex = dart.notNull(x) + 1;
            return x;
          })(), (dart.notNull(bits) & eightBitMask) >>> 0);
          bits = 0;
        }
        continue;
      } else if (code == convert._Base64Decoder._padding && dart.notNull(count) > 1) {
        if (dart.notNull(charOr) < 0 || dart.notNull(charOr) > asciiMax) break;
        if (count == 3) {
          if ((dart.notNull(bits) & 3) != 0) {
            dart.throw(new core.FormatException("Invalid encoding before padding", input, i));
          }
          output[dartx._set]((() => {
            let x = outIndex;
            outIndex = dart.notNull(x) + 1;
            return x;
          })(), bits[dartx['>>']](10));
          output[dartx._set]((() => {
            let x = outIndex;
            outIndex = dart.notNull(x) + 1;
            return x;
          })(), bits[dartx['>>']](2));
        } else {
          if ((dart.notNull(bits) & 15) != 0) {
            dart.throw(new core.FormatException("Invalid encoding before padding", input, i));
          }
          output[dartx._set]((() => {
            let x = outIndex;
            outIndex = dart.notNull(x) + 1;
            return x;
          })(), bits[dartx['>>']](4));
        }
        let expectedPadding = (3 - dart.notNull(count)) * 3;
        if (char == convert._Base64Decoder._char_percent) {
          expectedPadding = expectedPadding + 2;
        }
        state = convert._Base64Decoder._encodePaddingState(expectedPadding);
        return convert._Base64Decoder._checkPadding(input, dart.notNull(i) + 1, end, state);
      }
      dart.throw(new core.FormatException("Invalid character", input, i));
    }
    if (dart.notNull(charOr) >= 0 && dart.notNull(charOr) <= asciiMax) {
      return convert._Base64Decoder._encodeCharacterState(count, bits);
    }
    let i = null;
    for (i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = input[dartx.codeUnitAt](i);
      if (dart.notNull(char) < 0 || dart.notNull(char) > asciiMax) break;
    }
    dart.throw(new core.FormatException("Invalid character", input, i));
  }
  static _allocateBuffer(input, start, end, state) {
    dart.assert(dart.notNull(state) >= 0);
    let paddingStart = convert._Base64Decoder._trimPaddingChars(input, start, end);
    let length = dart.notNull(convert._Base64Decoder._stateCount(state)) + (dart.notNull(paddingStart) - dart.notNull(start));
    let bufferLength = length[dartx['>>']](2) * 3;
    let remainderLength = length & 3;
    if (remainderLength != 0 && dart.notNull(paddingStart) < dart.notNull(end)) {
      bufferLength = bufferLength + (remainderLength - 1);
    }
    if (bufferLength > 0) return typed_data.Uint8List.new(bufferLength);
    return null;
  }
  static _trimPaddingChars(input, start, end) {
    let padding = 0;
    let index = end;
    let newEnd = end;
    while (dart.notNull(index) > dart.notNull(start) && padding < 2) {
      index = dart.notNull(index) - 1;
      let char = input[dartx.codeUnitAt](index);
      if (char == convert._paddingChar) {
        padding++;
        newEnd = index;
        continue;
      }
      if ((dart.notNull(char) | 32) == convert._Base64Decoder._char_d) {
        if (index == start) break;
        index = dart.notNull(index) - 1;
        char = input[dartx.codeUnitAt](index);
      }
      if (char == convert._Base64Decoder._char_3) {
        if (index == start) break;
        index = dart.notNull(index) - 1;
        char = input[dartx.codeUnitAt](index);
      }
      if (char == convert._Base64Decoder._char_percent) {
        padding++;
        newEnd = index;
        continue;
      }
      break;
    }
    return newEnd;
  }
  static _checkPadding(input, start, end, state) {
    dart.assert(convert._Base64Decoder._hasSeenPadding(state));
    if (start == end) return state;
    let expectedPadding = convert._Base64Decoder._statePadding(state);
    dart.assert(dart.notNull(expectedPadding) >= 0);
    dart.assert(dart.notNull(expectedPadding) < 6);
    while (dart.notNull(expectedPadding) > 0) {
      let char = input[dartx.codeUnitAt](start);
      if (expectedPadding == 3) {
        if (char == convert._paddingChar) {
          expectedPadding = dart.notNull(expectedPadding) - 3;
          start = dart.notNull(start) + 1;
          break;
        }
        if (char == convert._Base64Decoder._char_percent) {
          expectedPadding = dart.notNull(expectedPadding) - 1;
          start = dart.notNull(start) + 1;
          if (start == end) break;
          char = input[dartx.codeUnitAt](start);
        } else {
          break;
        }
      }
      let expectedPartialPadding = expectedPadding;
      if (dart.notNull(expectedPartialPadding) > 3) {
        expectedPartialPadding = dart.notNull(expectedPartialPadding) - 3;
      }
      if (expectedPartialPadding == 2) {
        if (char != convert._Base64Decoder._char_3) break;
        start = dart.notNull(start) + 1;
        expectedPadding = dart.notNull(expectedPadding) - 1;
        if (start == end) break;
        char = input[dartx.codeUnitAt](start);
      }
      if ((dart.notNull(char) | 32) != convert._Base64Decoder._char_d) break;
      start = dart.notNull(start) + 1;
      expectedPadding = dart.notNull(expectedPadding) - 1;
      if (start == end) break;
    }
    if (start != end) {
      dart.throw(new core.FormatException("Invalid padding character", input, start));
    }
    return convert._Base64Decoder._encodePaddingState(expectedPadding);
  }
};
dart.setSignature(convert._Base64Decoder, {
  fields: () => ({[_state]: core.int}),
  methods: () => ({
    decode: dart.definiteFunctionType(typed_data.Uint8List, [core.String, core.int, core.int]),
    close: dart.definiteFunctionType(dart.void, [core.String, core.int])
  }),
  sfields: () => ({
    _valueShift: core.int,
    _countMask: core.int,
    _invalid: core.int,
    _padding: core.int,
    __: core.int,
    _p: core.int,
    _inverseAlphabet: ListOfint(),
    _char_percent: core.int,
    _char_3: core.int,
    _char_d: core.int
  }),
  statics: () => ({
    _encodeCharacterState: dart.definiteFunctionType(core.int, [core.int, core.int]),
    _stateCount: dart.definiteFunctionType(core.int, [core.int]),
    _stateBits: dart.definiteFunctionType(core.int, [core.int]),
    _encodePaddingState: dart.definiteFunctionType(core.int, [core.int]),
    _statePadding: dart.definiteFunctionType(core.int, [core.int]),
    _hasSeenPadding: dart.definiteFunctionType(core.bool, [core.int]),
    decodeChunk: dart.definiteFunctionType(core.int, [core.String, core.int, core.int, typed_data.Uint8List, core.int, core.int]),
    _allocateBuffer: dart.definiteFunctionType(typed_data.Uint8List, [core.String, core.int, core.int, core.int]),
    _trimPaddingChars: dart.definiteFunctionType(core.int, [core.String, core.int, core.int]),
    _checkPadding: dart.definiteFunctionType(core.int, [core.String, core.int, core.int, core.int])
  }),
  names: ['_encodeCharacterState', '_stateCount', '_stateBits', '_encodePaddingState', '_statePadding', '_hasSeenPadding', 'decodeChunk', '_allocateBuffer', '_trimPaddingChars', '_checkPadding']
});
convert._Base64Decoder._valueShift = 2;
convert._Base64Decoder._countMask = 3;
convert._Base64Decoder._invalid = -2;
convert._Base64Decoder._padding = -1;
convert._Base64Decoder._char_percent = 37;
convert._Base64Decoder._char_3 = 51;
convert._Base64Decoder._char_d = 100;
dart.defineLazy(convert._Base64Decoder, {
  get __() {
    return convert._Base64Decoder._invalid;
  },
  get _p() {
    return convert._Base64Decoder._padding;
  },
  get _inverseAlphabet() {
    return typed_data.Int8List.fromList(JSArrayOfint().of([convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder._p, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, 62, convert._Base64Decoder.__, 62, convert._Base64Decoder.__, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder._p, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, 63, convert._Base64Decoder.__, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__, convert._Base64Decoder.__]));
  }
});
const _decoder = Symbol('_decoder');
convert._Base64DecoderSink = class _Base64DecoderSink extends convert.StringConversionSinkBase {
  new(sink) {
    this[_decoder] = new convert._Base64Decoder();
    this[_sink] = sink;
  }
  add(string) {
    if (dart.test(string[dartx.isEmpty])) return;
    let buffer = this[_decoder].decode(string, 0, string[dartx.length]);
    if (buffer != null) this[_sink].add(buffer);
  }
  close() {
    this[_decoder].close(null, null);
    this[_sink].close();
  }
  addSlice(string, start, end, isLast) {
    end = core.RangeError.checkValidRange(start, end, string[dartx.length]);
    if (start == end) return;
    let buffer = this[_decoder].decode(string, start, end);
    if (buffer != null) this[_sink].add(buffer);
    if (dart.test(isLast)) {
      this[_decoder].close(string, end);
      this[_sink].close();
    }
  }
};
dart.setSignature(convert._Base64DecoderSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._Base64DecoderSink, [SinkOfListOfint()])}),
  fields: () => ({
    [_sink]: SinkOfListOfint(),
    [_decoder]: convert._Base64Decoder
  }),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    addSlice: dart.definiteFunctionType(dart.void, [core.String, core.int, core.int, core.bool])
  })
});
convert._ByteAdapterSink = class _ByteAdapterSink extends convert.ByteConversionSinkBase {
  new(sink) {
    this[_sink] = sink;
    super.new();
  }
  add(chunk) {
    this[_sink].add(chunk);
  }
  close() {
    this[_sink].close();
  }
};
dart.setSignature(convert._ByteAdapterSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._ByteAdapterSink, [SinkOfListOfint()])}),
  fields: () => ({[_sink]: SinkOfListOfint()}),
  methods: () => ({
    add: dart.definiteFunctionType(dart.void, [ListOfint()]),
    close: dart.definiteFunctionType(dart.void, [])
  })
});
const _buffer = Symbol('_buffer');
const _callback = Symbol('_callback');
const _bufferIndex = Symbol('_bufferIndex');
convert._ByteCallbackSink = class _ByteCallbackSink extends convert.ByteConversionSinkBase {
  new(callback) {
    this[_buffer] = typed_data.Uint8List.new(convert._ByteCallbackSink._INITIAL_BUFFER_SIZE);
    this[_callback] = callback;
    this[_bufferIndex] = 0;
    super.new();
  }
  add(chunk) {
    let freeCount = dart.notNull(this[_buffer][dartx.length]) - dart.notNull(this[_bufferIndex]);
    if (dart.notNull(chunk[dartx.length]) > freeCount) {
      let oldLength = this[_buffer][dartx.length];
      let newLength = dart.notNull(convert._ByteCallbackSink._roundToPowerOf2(dart.notNull(chunk[dartx.length]) + dart.notNull(oldLength))) * 2;
      let grown = typed_data.Uint8List.new(newLength);
      grown[dartx.setRange](0, this[_buffer][dartx.length], this[_buffer]);
      this[_buffer] = grown;
    }
    this[_buffer][dartx.setRange](this[_bufferIndex], dart.notNull(this[_bufferIndex]) + dart.notNull(chunk[dartx.length]), chunk);
    this[_bufferIndex] = dart.notNull(this[_bufferIndex]) + dart.notNull(chunk[dartx.length]);
  }
  static _roundToPowerOf2(v) {
    dart.assert(dart.notNull(v) > 0);
    v = dart.notNull(v) - 1;
    v = (dart.notNull(v) | v[dartx['>>']](1)) >>> 0;
    v = (dart.notNull(v) | v[dartx['>>']](2)) >>> 0;
    v = (dart.notNull(v) | v[dartx['>>']](4)) >>> 0;
    v = (dart.notNull(v) | v[dartx['>>']](8)) >>> 0;
    v = (dart.notNull(v) | v[dartx['>>']](16)) >>> 0;
    v = dart.notNull(v) + 1;
    return v;
  }
  close() {
    this[_callback](this[_buffer][dartx.sublist](0, this[_bufferIndex]));
  }
};
dart.setSignature(convert._ByteCallbackSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._ByteCallbackSink, [ListOfintTovoid()])}),
  fields: () => ({
    [_callback]: ListOfintTovoid(),
    [_buffer]: ListOfint(),
    [_bufferIndex]: core.int
  }),
  methods: () => ({
    add: dart.definiteFunctionType(dart.void, [IterableOfint()]),
    close: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({_INITIAL_BUFFER_SIZE: core.int}),
  statics: () => ({_roundToPowerOf2: dart.definiteFunctionType(core.int, [core.int])}),
  names: ['_roundToPowerOf2']
});
convert._ByteCallbackSink._INITIAL_BUFFER_SIZE = 1024;
convert._ChunkedConversionCallback$ = dart.generic(T => {
  const _ChunkedConversionCallback = dart.typedef('_ChunkedConversionCallback', () => dart.functionType(dart.void, [T]));
  return _ChunkedConversionCallback;
});
convert._ChunkedConversionCallback = _ChunkedConversionCallback();
convert.ChunkedConverter$ = dart.generic((S, T, S2, T2) => {
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
  class ChunkedConverter extends convert.Converter$(S, T) {
    new() {
      super.new();
    }
    bind(other) {
      return super.bind(StreamOfS()._check(other));
    }
    startChunkedConversion(sink) {
      return super.startChunkedConversion(SinkOfT()._check(sink));
    }
  }
  dart.setSignature(ChunkedConverter, {
    constructors: () => ({new: dart.definiteFunctionType(convert.ChunkedConverter$(S, T, S2, T2), [])}),
    methods: () => ({
      bind: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
      startChunkedConversion: dart.definiteFunctionType(dart.dynamic, [dart.dynamic])
    })
  });
  return ChunkedConverter;
});
convert.ChunkedConverter = ChunkedConverter();
const _accumulated = Symbol('_accumulated');
convert._SimpleCallbackSink$ = dart.generic(T => {
  let JSArrayOfT = () => (JSArrayOfT = dart.constFn(_interceptors.JSArray$(T)))();
  let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
  let _ChunkedConversionCallbackOfListOfT = () => (_ChunkedConversionCallbackOfListOfT = dart.constFn(convert._ChunkedConversionCallback$(ListOfT())))();
  class _SimpleCallbackSink extends convert.ChunkedConversionSink$(T) {
    new(callback) {
      this[_accumulated] = JSArrayOfT().of([]);
      this[_callback] = callback;
      super.new();
    }
    add(chunk) {
      T._check(chunk);
      this[_accumulated][dartx.add](chunk);
    }
    close() {
      this[_callback](this[_accumulated]);
    }
  }
  dart.setSignature(_SimpleCallbackSink, {
    constructors: () => ({new: dart.definiteFunctionType(convert._SimpleCallbackSink$(T), [_ChunkedConversionCallbackOfListOfT()])}),
    fields: () => ({
      [_callback]: _ChunkedConversionCallbackOfListOfT(),
      [_accumulated]: ListOfT()
    }),
    methods: () => ({
      add: dart.definiteFunctionType(dart.void, [T]),
      close: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _SimpleCallbackSink;
});
convert._SimpleCallbackSink = _SimpleCallbackSink();
const _eventSink = Symbol('_eventSink');
const _chunkedSink = Symbol('_chunkedSink');
convert._ConverterStreamEventSink$ = dart.generic((S, T) => {
  let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
  let SinkOfS = () => (SinkOfS = dart.constFn(core.Sink$(S)))();
  let ConverterOfS$T = () => (ConverterOfS$T = dart.constFn(convert.Converter$(S, T)))();
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  class _ConverterStreamEventSink extends core.Object {
    new(converter, sink) {
      this[_eventSink] = sink;
      this[_chunkedSink] = converter.startChunkedConversion(sink);
    }
    add(o) {
      S._check(o);
      this[_chunkedSink].add(o);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_eventSink].addError(error, stackTrace);
    }
    close() {
      this[_chunkedSink].close();
    }
  }
  dart.addTypeTests(_ConverterStreamEventSink);
  _ConverterStreamEventSink[dart.implements] = () => [EventSinkOfS()];
  dart.setSignature(_ConverterStreamEventSink, {
    constructors: () => ({new: dart.definiteFunctionType(convert._ConverterStreamEventSink$(S, T), [ConverterOfS$T(), EventSinkOfT()])}),
    fields: () => ({
      [_eventSink]: EventSinkOfT(),
      [_chunkedSink]: SinkOfS()
    }),
    methods: () => ({
      add: dart.definiteFunctionType(dart.void, [S]),
      addError: dart.definiteFunctionType(dart.void, [core.Object], [core.StackTrace]),
      close: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _ConverterStreamEventSink;
});
convert._ConverterStreamEventSink = _ConverterStreamEventSink();
const _second = Symbol('_second');
const _first = Symbol('_first');
convert._FusedCodec$ = dart.generic((S, M, T) => {
  let CodecOfS$M = () => (CodecOfS$M = dart.constFn(convert.Codec$(S, M)))();
  let CodecOfM$T = () => (CodecOfM$T = dart.constFn(convert.Codec$(M, T)))();
  class _FusedCodec extends convert.Codec$(S, T) {
    get encoder() {
      return this[_first].encoder.fuse(T)(this[_second].encoder);
    }
    get decoder() {
      return this[_second].decoder.fuse(S)(this[_first].decoder);
    }
    new(first, second) {
      this[_first] = first;
      this[_second] = second;
      super.new();
    }
  }
  dart.setSignature(_FusedCodec, {
    constructors: () => ({new: dart.definiteFunctionType(convert._FusedCodec$(S, M, T), [CodecOfS$M(), CodecOfM$T()])}),
    fields: () => ({
      [_first]: CodecOfS$M(),
      [_second]: CodecOfM$T()
    }),
    getters: () => ({
      encoder: dart.definiteFunctionType(convert.Converter$(S, T), []),
      decoder: dart.definiteFunctionType(convert.Converter$(T, S), [])
    })
  });
  return _FusedCodec;
});
convert._FusedCodec = _FusedCodec();
const _codec = Symbol('_codec');
convert._InvertedCodec$ = dart.generic((T, S) => {
  let CodecOfS$T = () => (CodecOfS$T = dart.constFn(convert.Codec$(S, T)))();
  class _InvertedCodec extends convert.Codec$(T, S) {
    new(codec) {
      this[_codec] = codec;
      super.new();
    }
    get encoder() {
      return this[_codec].decoder;
    }
    get decoder() {
      return this[_codec].encoder;
    }
    get inverted() {
      return this[_codec];
    }
  }
  dart.setSignature(_InvertedCodec, {
    constructors: () => ({new: dart.definiteFunctionType(convert._InvertedCodec$(T, S), [CodecOfS$T()])}),
    fields: () => ({[_codec]: CodecOfS$T()}),
    getters: () => ({
      encoder: dart.definiteFunctionType(convert.Converter$(T, S), []),
      decoder: dart.definiteFunctionType(convert.Converter$(S, T), []),
      inverted: dart.definiteFunctionType(convert.Codec$(S, T), [])
    })
  });
  return _InvertedCodec;
});
convert._InvertedCodec = _InvertedCodec();
convert._FusedConverter$ = dart.generic((S, M, T) => {
  let ConverterOfS$M = () => (ConverterOfS$M = dart.constFn(convert.Converter$(S, M)))();
  let ConverterOfM$T = () => (ConverterOfM$T = dart.constFn(convert.Converter$(M, T)))();
  let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
  class _FusedConverter extends convert.Converter$(S, T) {
    new(first, second) {
      this[_first] = first;
      this[_second] = second;
      super.new();
    }
    convert(input) {
      S._check(input);
      return this[_second].convert(this[_first].convert(input));
    }
    startChunkedConversion(sink) {
      SinkOfT()._check(sink);
      return this[_first].startChunkedConversion(this[_second].startChunkedConversion(sink));
    }
  }
  dart.setSignature(_FusedConverter, {
    constructors: () => ({new: dart.definiteFunctionType(convert._FusedConverter$(S, M, T), [ConverterOfS$M(), ConverterOfM$T()])}),
    fields: () => ({
      [_first]: ConverterOfS$M(),
      [_second]: ConverterOfM$T()
    }),
    methods: () => ({
      convert: dart.definiteFunctionType(T, [S]),
      startChunkedConversion: dart.definiteFunctionType(core.Sink$(S), [SinkOfT()])
    })
  });
  return _FusedConverter;
});
convert._FusedConverter = _FusedConverter();
const _name = Symbol('_name');
let const;
let const;
let const;
let const;
let const;
let const;
let const;
let const;
convert.HtmlEscapeMode = class HtmlEscapeMode extends core.Object {
  _(name, escapeLtGt, escapeQuot, escapeApos, escapeSlash) {
    this[_name] = name;
    this.escapeLtGt = escapeLtGt;
    this.escapeQuot = escapeQuot;
    this.escapeApos = escapeApos;
    this.escapeSlash = escapeSlash;
  }
  new(opts) {
    let name = opts && 'name' in opts ? opts.name : "custom";
    let escapeLtGt = opts && 'escapeLtGt' in opts ? opts.escapeLtGt : false;
    let escapeQuot = opts && 'escapeQuot' in opts ? opts.escapeQuot : false;
    let escapeApos = opts && 'escapeApos' in opts ? opts.escapeApos : false;
    let escapeSlash = opts && 'escapeSlash' in opts ? opts.escapeSlash : false;
    this.escapeLtGt = escapeLtGt;
    this.escapeQuot = escapeQuot;
    this.escapeApos = escapeApos;
    this.escapeSlash = escapeSlash;
    this[_name] = name;
  }
  toString() {
    return this[_name];
  }
};
dart.defineNamedConstructor(convert.HtmlEscapeMode, '_');
dart.setSignature(convert.HtmlEscapeMode, {
  constructors: () => ({
    _: dart.definiteFunctionType(convert.HtmlEscapeMode, [core.String, core.bool, core.bool, core.bool, core.bool]),
    new: dart.definiteFunctionType(convert.HtmlEscapeMode, [], {name: core.String, escapeLtGt: core.bool, escapeQuot: core.bool, escapeApos: core.bool, escapeSlash: core.bool})
  }),
  fields: () => ({
    [_name]: core.String,
    escapeLtGt: core.bool,
    escapeQuot: core.bool,
    escapeApos: core.bool,
    escapeSlash: core.bool
  }),
  sfields: () => ({
    UNKNOWN: convert.HtmlEscapeMode,
    ATTRIBUTE: convert.HtmlEscapeMode,
    SQ_ATTRIBUTE: convert.HtmlEscapeMode,
    ELEMENT: convert.HtmlEscapeMode
  })
});
dart.defineLazy(convert.HtmlEscapeMode, {
  get UNKNOWN() {
    return const || (const = dart.const(new convert.HtmlEscapeMode._('unknown', true, true, true, true)));
  },
  get ATTRIBUTE() {
    return const || (const = dart.const(new convert.HtmlEscapeMode._('attribute', true, true, false, false)));
  },
  get SQ_ATTRIBUTE() {
    return const || (const = dart.const(new convert.HtmlEscapeMode._('attribute', true, false, true, false)));
  },
  get ELEMENT() {
    return const || (const = dart.const(new convert.HtmlEscapeMode._('element', true, false, false, false)));
  }
});
const _convert = Symbol('_convert');
convert.HtmlEscape = class HtmlEscape extends convert.Converter$(core.String, core.String) {
  new(mode) {
    if (mode === void 0) mode = convert.HtmlEscapeMode.UNKNOWN;
    this.mode = mode;
    super.new();
  }
  convert(text) {
    let val = this[_convert](text, 0, text[dartx.length]);
    return val == null ? text : val;
  }
  [_convert](text, start, end) {
    let result = null;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let ch = text[dartx._get](i);
      let replacement = null;
      switch (ch) {
        case '&':
        {
          replacement = '&amp;';
          break;
        }
        case '"':
        {
          if (dart.test(this.mode.escapeQuot)) replacement = '&quot;';
          break;
        }
        case "'":
        {
          if (dart.test(this.mode.escapeApos)) replacement = '&#39;';
          break;
        }
        case '<':
        {
          if (dart.test(this.mode.escapeLtGt)) replacement = '&lt;';
          break;
        }
        case '>':
        {
          if (dart.test(this.mode.escapeLtGt)) replacement = '&gt;';
          break;
        }
        case '/':
        {
          if (dart.test(this.mode.escapeSlash)) replacement = '&#47;';
          break;
        }
      }
      if (replacement != null) {
        if (result == null) result = new core.StringBuffer();
        if (dart.notNull(i) > dart.notNull(start)) result.write(text[dartx.substring](start, i));
        result.write(replacement);
        start = dart.notNull(i) + 1;
      }
    }
    if (result == null) return null;
    if (dart.notNull(end) > dart.notNull(start)) result.write(text[dartx.substring](start, end));
    return dart.toString(result);
  }
  startChunkedConversion(sink) {
    if (!convert.StringConversionSink.is(sink)) {
      sink = convert.StringConversionSink.from(sink);
    }
    return new convert._HtmlEscapeSink(this, convert.StringConversionSink._check(sink));
  }
};
dart.addSimpleTypeTests(convert.HtmlEscape);
dart.setSignature(convert.HtmlEscape, {
  constructors: () => ({new: dart.definiteFunctionType(convert.HtmlEscape, [], [convert.HtmlEscapeMode])}),
  fields: () => ({mode: convert.HtmlEscapeMode}),
  methods: () => ({
    convert: dart.definiteFunctionType(core.String, [core.String]),
    [_convert]: dart.definiteFunctionType(core.String, [core.String, core.int, core.int]),
    startChunkedConversion: dart.definiteFunctionType(convert.StringConversionSink, [SinkOfString()])
  })
});
convert.HTML_ESCAPE = dart.const(new convert.HtmlEscape());
const _escape = Symbol('_escape');
convert._HtmlEscapeSink = class _HtmlEscapeSink extends convert.StringConversionSinkBase {
  new(escape, sink) {
    this[_escape] = escape;
    this[_sink] = sink;
  }
  addSlice(chunk, start, end, isLast) {
    let val = this[_escape][_convert](chunk, start, end);
    if (val == null) {
      this[_sink].addSlice(chunk, start, end, isLast);
    } else {
      this[_sink].add(val);
      if (dart.test(isLast)) this[_sink].close();
    }
  }
  close() {
    this[_sink].close();
  }
};
dart.setSignature(convert._HtmlEscapeSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._HtmlEscapeSink, [convert.HtmlEscape, convert.StringConversionSink])}),
  fields: () => ({
    [_escape]: convert.HtmlEscape,
    [_sink]: convert.StringConversionSink
  }),
  methods: () => ({
    addSlice: dart.definiteFunctionType(dart.void, [core.String, core.int, core.int, core.bool]),
    close: dart.definiteFunctionType(dart.void, [])
  })
});
convert.JsonUnsupportedObjectError = class JsonUnsupportedObjectError extends core.Error {
  new(unsupportedObject, opts) {
    let cause = opts && 'cause' in opts ? opts.cause : null;
    this.unsupportedObject = unsupportedObject;
    this.cause = cause;
    super.new();
  }
  toString() {
    if (this.cause != null) {
      return "Converting object to an encodable object failed.";
    } else {
      return "Converting object did not return an encodable object.";
    }
  }
};
dart.setSignature(convert.JsonUnsupportedObjectError, {
  constructors: () => ({new: dart.definiteFunctionType(convert.JsonUnsupportedObjectError, [dart.dynamic], {cause: dart.dynamic})}),
  fields: () => ({
    unsupportedObject: dart.dynamic,
    cause: dart.dynamic
  })
});
convert.JsonCyclicError = class JsonCyclicError extends convert.JsonUnsupportedObjectError {
  new(object) {
    super.new(object);
  }
  toString() {
    return "Cyclic error in JSON stringify";
  }
};
dart.setSignature(convert.JsonCyclicError, {
  constructors: () => ({new: dart.definiteFunctionType(convert.JsonCyclicError, [core.Object])})
});
const _toEncodable = Symbol('_toEncodable');
let const;
let const;
convert.JsonCodec = class JsonCodec extends convert.Codec$(core.Object, core.String) {
  new(opts) {
    let reviver = opts && 'reviver' in opts ? opts.reviver : null;
    let toEncodable = opts && 'toEncodable' in opts ? opts.toEncodable : null;
    this[_reviver] = reviver;
    this[_toEncodable] = toEncodable;
    super.new();
  }
  withReviver(reviver) {
    JsonCodec.prototype.new.call(this, {reviver: reviver});
  }
  decode(source, opts) {
    let reviver = opts && 'reviver' in opts ? opts.reviver : null;
    if (reviver == null) reviver = this[_reviver];
    if (reviver == null) return this.decoder.convert(source);
    return new convert.JsonDecoder(reviver).convert(source);
  }
  encode(value, opts) {
    let toEncodable = opts && 'toEncodable' in opts ? opts.toEncodable : null;
    if (toEncodable == null) toEncodable = this[_toEncodable];
    if (toEncodable == null) return this.encoder.convert(value);
    return new convert.JsonEncoder(toEncodable).convert(value);
  }
  get encoder() {
    if (this[_toEncodable] == null) return const || (const = dart.const(new convert.JsonEncoder()));
    return new convert.JsonEncoder(this[_toEncodable]);
  }
  get decoder() {
    if (this[_reviver] == null) return const || (const = dart.const(new convert.JsonDecoder()));
    return new convert.JsonDecoder(this[_reviver]);
  }
};
dart.addSimpleTypeTests(convert.JsonCodec);
dart.defineNamedConstructor(convert.JsonCodec, 'withReviver');
dart.setSignature(convert.JsonCodec, {
  constructors: () => ({
    new: dart.definiteFunctionType(convert.JsonCodec, [], {reviver: dynamicAnddynamicTodynamic(), toEncodable: dynamicTodynamic()}),
    withReviver: dart.definiteFunctionType(convert.JsonCodec, [dynamicAnddynamicTodynamic()])
  }),
  fields: () => ({
    [_reviver]: convert._Reviver,
    [_toEncodable]: convert._ToEncodable
  }),
  getters: () => ({
    encoder: dart.definiteFunctionType(convert.JsonEncoder, []),
    decoder: dart.definiteFunctionType(convert.JsonDecoder, [])
  }),
  methods: () => ({
    decode: dart.definiteFunctionType(dart.dynamic, [core.String], {reviver: dynamicAnddynamicTodynamic()}),
    encode: dart.definiteFunctionType(core.String, [core.Object], {toEncodable: dynamicTodynamic()})
  })
});
convert.JSON = dart.const(new convert.JsonCodec());
convert._Reviver = dart.typedef('_Reviver', () => dart.functionType(dart.dynamic, [dart.dynamic, dart.dynamic]));
convert._ToEncodable = dart.typedef('_ToEncodable', () => dart.functionType(dart.dynamic, [dart.dynamic]));
convert.JsonEncoder = class JsonEncoder extends convert.Converter$(core.Object, core.String) {
  new(toEncodable) {
    if (toEncodable === void 0) toEncodable = null;
    this.indent = null;
    this[_toEncodable] = toEncodable;
    super.new();
  }
  withIndent(indent, toEncodable) {
    if (toEncodable === void 0) toEncodable = null;
    this.indent = indent;
    this[_toEncodable] = toEncodable;
    super.new();
  }
  convert(object) {
    return convert._JsonStringStringifier.stringify(object, this[_toEncodable], this.indent);
  }
  startChunkedConversion(sink) {
    if (!convert.StringConversionSink.is(sink)) {
      sink = convert.StringConversionSink.from(sink);
    } else if (convert._Utf8EncoderSink.is(sink)) {
      return new convert._JsonUtf8EncoderSink(sink[_sink], this[_toEncodable], convert.JsonUtf8Encoder._utf8Encode(this.indent), convert.JsonUtf8Encoder.DEFAULT_BUFFER_SIZE);
    }
    return new convert._JsonEncoderSink(convert.StringConversionSink._check(sink), this[_toEncodable], this.indent);
  }
  bind(stream) {
    return super.bind(stream);
  }
  fuse(T) {
    return other => {
      if (convert.Utf8Encoder.is(other)) {
        return convert.Converter$(core.Object, T).as(new convert.JsonUtf8Encoder(this.indent, this[_toEncodable]));
      }
      return super.fuse(T)(other);
    };
  }
};
dart.addSimpleTypeTests(convert.JsonEncoder);
dart.defineNamedConstructor(convert.JsonEncoder, 'withIndent');
dart.setSignature(convert.JsonEncoder, {
  constructors: () => ({
    new: dart.definiteFunctionType(convert.JsonEncoder, [], [dynamicTodynamic()]),
    withIndent: dart.definiteFunctionType(convert.JsonEncoder, [core.String], [dynamicTodynamic()])
  }),
  fields: () => ({
    indent: core.String,
    [_toEncodable]: convert._ToEncodable
  }),
  methods: () => ({
    convert: dart.definiteFunctionType(core.String, [core.Object]),
    startChunkedConversion: dart.definiteFunctionType(convert.ChunkedConversionSink$(core.Object), [SinkOfString()]),
    bind: dart.definiteFunctionType(async.Stream$(core.String), [StreamOfObject()]),
    fuse: dart.definiteFunctionType(T => [convert.Converter$(core.Object, T), [convert.Converter$(core.String, T)]])
  })
});
const _indent = Symbol('_indent');
const _bufferSize = Symbol('_bufferSize');
convert.JsonUtf8Encoder = class JsonUtf8Encoder extends convert.Converter$(core.Object, core.List$(core.int)) {
  new(indent, toEncodable, bufferSize) {
    if (indent === void 0) indent = null;
    if (toEncodable === void 0) toEncodable = null;
    if (bufferSize === void 0) bufferSize = convert.JsonUtf8Encoder.DEFAULT_BUFFER_SIZE;
    this[_indent] = convert.JsonUtf8Encoder._utf8Encode(indent);
    this[_toEncodable] = toEncodable;
    this[_bufferSize] = bufferSize;
    super.new();
  }
  static _utf8Encode(string) {
    if (string == null) return null;
    if (dart.test(string[dartx.isEmpty])) return typed_data.Uint8List.new(0);
    checkAscii: {
      for (let i = 0; i < dart.notNull(string[dartx.length]); i++) {
        if (dart.notNull(string[dartx.codeUnitAt](i)) >= 128) break checkAscii;
      }
      return string[dartx.codeUnits];
    }
    return convert.UTF8.encode(string);
  }
  convert(object) {
    let bytes = JSArrayOfListOfint().of([]);
    function addChunk(chunk, start, end) {
      if (dart.notNull(start) > 0 || dart.notNull(end) < dart.notNull(chunk[dartx.length])) {
        let length = dart.notNull(end) - dart.notNull(start);
        chunk = typed_data.Uint8List.view(chunk[dartx.buffer], dart.notNull(chunk[dartx.offsetInBytes]) + dart.notNull(start), length);
      }
      bytes[dartx.add](chunk);
    }
    dart.fn(addChunk, Uint8ListAndintAndintTovoid());
    convert._JsonUtf8Stringifier.stringify(object, this[_indent], this[_toEncodable], this[_bufferSize], addChunk);
    if (bytes[dartx.length] == 1) return bytes[dartx._get](0);
    let length = 0;
    for (let i = 0; i < dart.notNull(bytes[dartx.length]); i++) {
      length = dart.notNull(length) + dart.notNull(bytes[dartx._get](i)[dartx.length]);
    }
    let result = typed_data.Uint8List.new(length);
    for (let i = 0, offset = 0; i < dart.notNull(bytes[dartx.length]); i++) {
      let byteList = bytes[dartx._get](i);
      let end = offset + dart.notNull(byteList[dartx.length]);
      result[dartx.setRange](offset, end, byteList);
      offset = end;
    }
    return result;
  }
  startChunkedConversion(sink) {
    let byteSink = null;
    if (convert.ByteConversionSink.is(sink)) {
      byteSink = sink;
    } else {
      byteSink = convert.ByteConversionSink.from(sink);
    }
    return new convert._JsonUtf8EncoderSink(byteSink, this[_toEncodable], this[_indent], this[_bufferSize]);
  }
  bind(stream) {
    return super.bind(stream);
  }
};
dart.addSimpleTypeTests(convert.JsonUtf8Encoder);
dart.setSignature(convert.JsonUtf8Encoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert.JsonUtf8Encoder, [], [core.String, dynamicTodynamic(), core.int])}),
  fields: () => ({
    [_indent]: ListOfint(),
    [_toEncodable]: convert._ToEncodable,
    [_bufferSize]: core.int
  }),
  methods: () => ({
    convert: dart.definiteFunctionType(core.List$(core.int), [core.Object]),
    startChunkedConversion: dart.definiteFunctionType(convert.ChunkedConversionSink$(core.Object), [SinkOfListOfint()]),
    bind: dart.definiteFunctionType(async.Stream$(core.List$(core.int)), [StreamOfObject()])
  }),
  sfields: () => ({DEFAULT_BUFFER_SIZE: core.int}),
  statics: () => ({_utf8Encode: dart.definiteFunctionType(core.List$(core.int), [core.String])}),
  names: ['_utf8Encode']
});
convert.JsonUtf8Encoder.DEFAULT_BUFFER_SIZE = 256;
const _isDone = Symbol('_isDone');
convert._JsonEncoderSink = class _JsonEncoderSink extends convert.ChunkedConversionSink$(core.Object) {
  new(sink, toEncodable, indent) {
    this[_sink] = sink;
    this[_toEncodable] = toEncodable;
    this[_indent] = indent;
    this[_isDone] = false;
    super.new();
  }
  add(o) {
    if (dart.test(this[_isDone])) {
      dart.throw(new core.StateError("Only one call to add allowed"));
    }
    this[_isDone] = true;
    let stringSink = this[_sink].asStringSink();
    convert._JsonStringStringifier.printOn(o, stringSink, this[_toEncodable], this[_indent]);
    stringSink.close();
  }
  close() {}
};
dart.addSimpleTypeTests(convert._JsonEncoderSink);
dart.setSignature(convert._JsonEncoderSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._JsonEncoderSink, [convert.StringConversionSink, convert._ToEncodable, core.String])}),
  fields: () => ({
    [_indent]: core.String,
    [_toEncodable]: convert._ToEncodable,
    [_sink]: convert.StringConversionSink,
    [_isDone]: core.bool
  }),
  methods: () => ({
    add: dart.definiteFunctionType(dart.void, [core.Object]),
    close: dart.definiteFunctionType(dart.void, [])
  })
});
const _addChunk = Symbol('_addChunk');
convert._JsonUtf8EncoderSink = class _JsonUtf8EncoderSink extends convert.ChunkedConversionSink$(core.Object) {
  new(sink, toEncodable, indent, bufferSize) {
    this[_sink] = sink;
    this[_toEncodable] = toEncodable;
    this[_indent] = indent;
    this[_bufferSize] = bufferSize;
    this[_isDone] = false;
    super.new();
  }
  [_addChunk](chunk, start, end) {
    this[_sink].addSlice(chunk, start, end, false);
  }
  add(object) {
    if (dart.test(this[_isDone])) {
      dart.throw(new core.StateError("Only one call to add allowed"));
    }
    this[_isDone] = true;
    convert._JsonUtf8Stringifier.stringify(object, this[_indent], this[_toEncodable], this[_bufferSize], dart.bind(this, _addChunk));
    this[_sink].close();
  }
  close() {
    if (!dart.test(this[_isDone])) {
      this[_isDone] = true;
      this[_sink].close();
    }
  }
};
dart.addSimpleTypeTests(convert._JsonUtf8EncoderSink);
dart.setSignature(convert._JsonUtf8EncoderSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._JsonUtf8EncoderSink, [convert.ByteConversionSink, convert._ToEncodable, ListOfint(), core.int])}),
  fields: () => ({
    [_sink]: convert.ByteConversionSink,
    [_indent]: ListOfint(),
    [_toEncodable]: convert._ToEncodable,
    [_bufferSize]: core.int,
    [_isDone]: core.bool
  }),
  methods: () => ({
    [_addChunk]: dart.definiteFunctionType(dart.void, [typed_data.Uint8List, core.int, core.int]),
    add: dart.definiteFunctionType(dart.void, [core.Object]),
    close: dart.definiteFunctionType(dart.void, [])
  })
});
convert.JsonDecoder = class JsonDecoder extends convert.Converter$(core.String, core.Object) {
  new(reviver) {
    if (reviver === void 0) reviver = null;
    this[_reviver] = reviver;
    super.new();
  }
  convert(input) {
    return convert._parseJson(input, this[_reviver]);
  }
  startChunkedConversion(sink) {
    return new convert._JsonDecoderSink(this[_reviver], sink);
  }
  bind(stream) {
    return super.bind(stream);
  }
};
dart.addSimpleTypeTests(convert.JsonDecoder);
dart.setSignature(convert.JsonDecoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert.JsonDecoder, [], [dynamicAnddynamicTodynamic()])}),
  fields: () => ({[_reviver]: convert._Reviver}),
  methods: () => ({
    convert: dart.definiteFunctionType(dart.dynamic, [core.String]),
    startChunkedConversion: dart.definiteFunctionType(convert.StringConversionSink, [SinkOfObject()]),
    bind: dart.definiteFunctionType(async.Stream$(core.Object), [StreamOfString()])
  })
});
convert._parseJson = function(source, reviver) {
  if (!(typeof source == 'string')) dart.throw(_js_helper.argumentErrorValue(source));
  let parsed = null;
  try {
    parsed = JSON.parse(source);
  } catch (e) {
    dart.throw(new core.FormatException(String(e)));
  }

  if (reviver == null) {
    return convert._convertJsonToDartLazy(parsed);
  } else {
    return convert._convertJsonToDart(parsed, reviver);
  }
};
dart.fn(convert._parseJson, StringAndFnTodynamic());
convert._defaultToEncodable = function(object) {
  return dart.dsend(object, 'toJson');
};
dart.fn(convert._defaultToEncodable, dynamicTodynamic());
const _seen = Symbol('_seen');
const _checkCycle = Symbol('_checkCycle');
const _removeSeen = Symbol('_removeSeen');
convert._JsonStringifier = class _JsonStringifier extends core.Object {
  new(toEncodable) {
    this[_seen] = core.List.new();
    this[_toEncodable] = (() => {
      let l = toEncodable;
      return l != null ? l : convert._defaultToEncodable;
    })();
  }
  static hexDigit(x) {
    return dart.notNull(x) < 10 ? 48 + dart.notNull(x) : 87 + dart.notNull(x);
  }
  writeStringContent(s) {
    let offset = 0;
    let length = s[dartx.length];
    for (let i = 0; i < dart.notNull(length); i++) {
      let charCode = s[dartx.codeUnitAt](i);
      if (dart.notNull(charCode) > convert._JsonStringifier.BACKSLASH) continue;
      if (dart.notNull(charCode) < 32) {
        if (i > offset) this.writeStringSlice(s, offset, i);
        offset = i + 1;
        this.writeCharCode(convert._JsonStringifier.BACKSLASH);
        switch (charCode) {
          case convert._JsonStringifier.BACKSPACE:
          {
            this.writeCharCode(convert._JsonStringifier.CHAR_b);
            break;
          }
          case convert._JsonStringifier.TAB:
          {
            this.writeCharCode(convert._JsonStringifier.CHAR_t);
            break;
          }
          case convert._JsonStringifier.NEWLINE:
          {
            this.writeCharCode(convert._JsonStringifier.CHAR_n);
            break;
          }
          case convert._JsonStringifier.FORM_FEED:
          {
            this.writeCharCode(convert._JsonStringifier.CHAR_f);
            break;
          }
          case convert._JsonStringifier.CARRIAGE_RETURN:
          {
            this.writeCharCode(convert._JsonStringifier.CHAR_r);
            break;
          }
          default:
          {
            this.writeCharCode(convert._JsonStringifier.CHAR_u);
            this.writeCharCode(convert._JsonStringifier.CHAR_0);
            this.writeCharCode(convert._JsonStringifier.CHAR_0);
            this.writeCharCode(convert._JsonStringifier.hexDigit(dart.notNull(charCode) >> 4 & 15));
            this.writeCharCode(convert._JsonStringifier.hexDigit(dart.notNull(charCode) & 15));
            break;
          }
        }
      } else if (charCode == convert._JsonStringifier.QUOTE || charCode == convert._JsonStringifier.BACKSLASH) {
        if (i > offset) this.writeStringSlice(s, offset, i);
        offset = i + 1;
        this.writeCharCode(convert._JsonStringifier.BACKSLASH);
        this.writeCharCode(charCode);
      }
    }
    if (offset == 0) {
      this.writeString(s);
    } else if (offset < dart.notNull(length)) {
      this.writeStringSlice(s, offset, length);
    }
  }
  [_checkCycle](object) {
    for (let i = 0; i < dart.notNull(this[_seen][dartx.length]); i++) {
      if (core.identical(object, this[_seen][dartx._get](i))) {
        dart.throw(new convert.JsonCyclicError(object));
      }
    }
    this[_seen][dartx.add](object);
  }
  [_removeSeen](object) {
    dart.assert(!dart.test(this[_seen][dartx.isEmpty]));
    dart.assert(core.identical(this[_seen][dartx.last], object));
    this[_seen][dartx.removeLast]();
  }
  writeObject(object) {
    if (dart.test(this.writeJsonValue(object))) return;
    this[_checkCycle](object);
    try {
      let customJson = dart.dcall(this[_toEncodable], object);
      if (!dart.test(this.writeJsonValue(customJson))) {
        dart.throw(new convert.JsonUnsupportedObjectError(object));
      }
      this[_removeSeen](object);
    } catch (e) {
      dart.throw(new convert.JsonUnsupportedObjectError(object, {cause: e}));
    }

  }
  writeJsonValue(object) {
    if (typeof object == 'number') {
      if (!dart.test(object[dartx.isFinite])) return false;
      this.writeNumber(object);
      return true;
    } else if (core.identical(object, true)) {
      this.writeString('true');
      return true;
    } else if (core.identical(object, false)) {
      this.writeString('false');
      return true;
    } else if (object == null) {
      this.writeString('null');
      return true;
    } else if (typeof object == 'string') {
      this.writeString('"');
      this.writeStringContent(object);
      this.writeString('"');
      return true;
    } else if (core.List.is(object)) {
      this[_checkCycle](object);
      this.writeList(object);
      this[_removeSeen](object);
      return true;
    } else if (core.Map.is(object)) {
      this[_checkCycle](object);
      let success = this.writeMap(object);
      this[_removeSeen](object);
      return success;
    } else {
      return false;
    }
  }
  writeList(list) {
    this.writeString('[');
    if (dart.notNull(list[dartx.length]) > 0) {
      this.writeObject(list[dartx._get](0));
      for (let i = 1; i < dart.notNull(list[dartx.length]); i++) {
        this.writeString(',');
        this.writeObject(list[dartx._get](i));
      }
    }
    this.writeString(']');
  }
  writeMap(map) {
    if (dart.test(map[dartx.isEmpty])) {
      this.writeString("{}");
      return true;
    }
    let keyValueList = core.List.new(dart.notNull(map[dartx.length]) * 2);
    let i = 0;
    let allStringKeys = true;
    map[dartx.forEach](dart.fn((key, value) => {
      if (!(typeof key == 'string')) {
        allStringKeys = false;
      }
      keyValueList[dartx._set](i++, key);
      keyValueList[dartx._set](i++, value);
    }, dynamicAnddynamicTovoid()));
    if (!allStringKeys) return false;
    this.writeString('{');
    let separator = '"';
    for (let i = 0; i < dart.notNull(keyValueList[dartx.length]); i = i + 2) {
      this.writeString(separator);
      separator = ',"';
      this.writeStringContent(core.String._check(keyValueList[dartx._get](i)));
      this.writeString('":');
      this.writeObject(keyValueList[dartx._get](i + 1));
    }
    this.writeString('}');
    return true;
  }
};
dart.setSignature(convert._JsonStringifier, {
  constructors: () => ({new: dart.definiteFunctionType(convert._JsonStringifier, [dynamicTodynamic()])}),
  fields: () => ({
    [_seen]: core.List,
    [_toEncodable]: convert._ToEncodable
  }),
  methods: () => ({
    writeStringContent: dart.definiteFunctionType(dart.void, [core.String]),
    [_checkCycle]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [_removeSeen]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    writeObject: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    writeJsonValue: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    writeList: dart.definiteFunctionType(dart.void, [core.List]),
    writeMap: dart.definiteFunctionType(core.bool, [core.Map])
  }),
  sfields: () => ({
    BACKSPACE: core.int,
    TAB: core.int,
    NEWLINE: core.int,
    CARRIAGE_RETURN: core.int,
    FORM_FEED: core.int,
    QUOTE: core.int,
    CHAR_0: core.int,
    BACKSLASH: core.int,
    CHAR_b: core.int,
    CHAR_f: core.int,
    CHAR_n: core.int,
    CHAR_r: core.int,
    CHAR_t: core.int,
    CHAR_u: core.int
  }),
  statics: () => ({hexDigit: dart.definiteFunctionType(core.int, [core.int])}),
  names: ['hexDigit']
});
convert._JsonStringifier.BACKSPACE = 8;
convert._JsonStringifier.TAB = 9;
convert._JsonStringifier.NEWLINE = 10;
convert._JsonStringifier.CARRIAGE_RETURN = 13;
convert._JsonStringifier.FORM_FEED = 12;
convert._JsonStringifier.QUOTE = 34;
convert._JsonStringifier.CHAR_0 = 48;
convert._JsonStringifier.BACKSLASH = 92;
convert._JsonStringifier.CHAR_b = 98;
convert._JsonStringifier.CHAR_f = 102;
convert._JsonStringifier.CHAR_n = 110;
convert._JsonStringifier.CHAR_r = 114;
convert._JsonStringifier.CHAR_t = 116;
convert._JsonStringifier.CHAR_u = 117;
const _indentLevel = Symbol('_indentLevel');
convert._JsonPrettyPrintMixin = class _JsonPrettyPrintMixin extends core.Object {
  new() {
    this[_indentLevel] = 0;
  }
  writeList(list) {
    if (dart.test(list[dartx.isEmpty])) {
      this.writeString('[]');
    } else {
      this.writeString('[\n');
      this[_indentLevel] = dart.notNull(this[_indentLevel]) + 1;
      this.writeIndentation(this[_indentLevel]);
      this.writeObject(list[dartx._get](0));
      for (let i = 1; i < dart.notNull(list[dartx.length]); i++) {
        this.writeString(',\n');
        this.writeIndentation(this[_indentLevel]);
        this.writeObject(list[dartx._get](i));
      }
      this.writeString('\n');
      this[_indentLevel] = dart.notNull(this[_indentLevel]) - 1;
      this.writeIndentation(this[_indentLevel]);
      this.writeString(']');
    }
  }
  writeMap(map) {
    if (dart.test(map[dartx.isEmpty])) {
      this.writeString("{}");
      return true;
    }
    let keyValueList = core.List.new(dart.notNull(map[dartx.length]) * 2);
    let i = 0;
    let allStringKeys = true;
    map[dartx.forEach](dart.fn((key, value) => {
      if (!(typeof key == 'string')) {
        allStringKeys = false;
      }
      keyValueList[dartx._set](i++, key);
      keyValueList[dartx._set](i++, value);
    }, dynamicAnddynamicTovoid()));
    if (!allStringKeys) return false;
    this.writeString('{\n');
    this[_indentLevel] = dart.notNull(this[_indentLevel]) + 1;
    let separator = "";
    for (let i = 0; i < dart.notNull(keyValueList[dartx.length]); i = i + 2) {
      this.writeString(separator);
      separator = ",\n";
      this.writeIndentation(this[_indentLevel]);
      this.writeString('"');
      this.writeStringContent(core.String._check(keyValueList[dartx._get](i)));
      this.writeString('": ');
      this.writeObject(keyValueList[dartx._get](i + 1));
    }
    this.writeString('\n');
    this[_indentLevel] = dart.notNull(this[_indentLevel]) - 1;
    this.writeIndentation(this[_indentLevel]);
    this.writeString('}');
    return true;
  }
};
convert._JsonPrettyPrintMixin[dart.implements] = () => [convert._JsonStringifier];
dart.setSignature(convert._JsonPrettyPrintMixin, {
  fields: () => ({[_indentLevel]: core.int}),
  methods: () => ({
    writeList: dart.definiteFunctionType(dart.void, [core.List]),
    writeMap: dart.definiteFunctionType(core.bool, [core.Map])
  })
});
convert._JsonStringStringifier = class _JsonStringStringifier extends convert._JsonStringifier {
  new(sink, _toEncodable) {
    this[_sink] = sink;
    super.new(dynamicTodynamic()._check(_toEncodable));
  }
  static stringify(object, toEncodable, indent) {
    let output = new core.StringBuffer();
    convert._JsonStringStringifier.printOn(object, output, toEncodable, indent);
    return output.toString();
  }
  static printOn(object, output, toEncodable, indent) {
    let stringifier = null;
    if (indent == null) {
      stringifier = new convert._JsonStringStringifier(output, toEncodable);
    } else {
      stringifier = new convert._JsonStringStringifierPretty(output, toEncodable, indent);
    }
    dart.dsend(stringifier, 'writeObject', object);
  }
  writeNumber(number) {
    this[_sink].write(dart.toString(number));
  }
  writeString(string) {
    this[_sink].write(string);
  }
  writeStringSlice(string, start, end) {
    this[_sink].write(string[dartx.substring](start, end));
  }
  writeCharCode(charCode) {
    this[_sink].writeCharCode(charCode);
  }
};
dart.setSignature(convert._JsonStringStringifier, {
  constructors: () => ({new: dart.definiteFunctionType(convert._JsonStringStringifier, [core.StringSink, dart.dynamic])}),
  fields: () => ({[_sink]: core.StringSink}),
  methods: () => ({
    writeNumber: dart.definiteFunctionType(dart.void, [core.num]),
    writeString: dart.definiteFunctionType(dart.void, [core.String]),
    writeStringSlice: dart.definiteFunctionType(dart.void, [core.String, core.int, core.int]),
    writeCharCode: dart.definiteFunctionType(dart.void, [core.int])
  }),
  statics: () => ({
    stringify: dart.definiteFunctionType(core.String, [dart.dynamic, dynamicTodynamic(), core.String]),
    printOn: dart.definiteFunctionType(dart.void, [dart.dynamic, core.StringSink, dynamicTodynamic(), core.String])
  }),
  names: ['stringify', 'printOn']
});
convert._JsonStringStringifierPretty = class _JsonStringStringifierPretty extends dart.mixin(convert._JsonStringStringifier, convert._JsonPrettyPrintMixin) {
  new(sink, toEncodable, indent) {
    this[_indent] = indent;
    super.new(sink, toEncodable);
  }
  writeIndentation(count) {
    for (let i = 0; i < dart.notNull(count); i++)
      this.writeString(this[_indent]);
  }
};
dart.setSignature(convert._JsonStringStringifierPretty, {
  constructors: () => ({new: dart.definiteFunctionType(convert._JsonStringStringifierPretty, [core.StringSink, dynamicTodynamic(), core.String])}),
  fields: () => ({[_indent]: core.String}),
  methods: () => ({writeIndentation: dart.definiteFunctionType(dart.void, [core.int])})
});
convert._AddChunk = dart.typedef('_AddChunk', () => dart.functionType(dart.void, [typed_data.Uint8List, core.int, core.int]));
convert._JsonUtf8Stringifier = class _JsonUtf8Stringifier extends convert._JsonStringifier {
  new(toEncodable, bufferSize, addChunk) {
    this.addChunk = addChunk;
    this.bufferSize = bufferSize;
    this.buffer = typed_data.Uint8List.new(bufferSize);
    this.index = 0;
    super.new(toEncodable);
  }
  static stringify(object, indent, toEncodable, bufferSize, addChunk) {
    let stringifier = null;
    if (indent != null) {
      stringifier = new convert._JsonUtf8StringifierPretty(toEncodable, indent, bufferSize, addChunk);
    } else {
      stringifier = new convert._JsonUtf8Stringifier(toEncodable, bufferSize, addChunk);
    }
    stringifier.writeObject(object);
    stringifier.flush();
  }
  flush() {
    if (dart.notNull(this.index) > 0) {
      this.addChunk(this.buffer, 0, this.index);
    }
    this.buffer = null;
    this.index = 0;
  }
  writeNumber(number) {
    this.writeAsciiString(dart.toString(number));
  }
  writeAsciiString(string) {
    for (let i = 0; i < dart.notNull(string[dartx.length]); i++) {
      let char = string[dartx.codeUnitAt](i);
      dart.assert(dart.notNull(char) <= 127);
      this.writeByte(char);
    }
  }
  writeString(string) {
    this.writeStringSlice(string, 0, string[dartx.length]);
  }
  writeStringSlice(string, start, end) {
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = string[dartx.codeUnitAt](i);
      if (dart.notNull(char) <= 127) {
        this.writeByte(char);
      } else {
        if ((dart.notNull(char) & 64512) == 55296 && dart.notNull(i) + 1 < dart.notNull(end)) {
          let nextChar = string[dartx.codeUnitAt](dart.notNull(i) + 1);
          if ((dart.notNull(nextChar) & 64512) == 56320) {
            char = 65536 + ((dart.notNull(char) & 1023) << 10) + (dart.notNull(nextChar) & 1023);
            this.writeFourByteCharCode(char);
            i = dart.notNull(i) + 1;
            continue;
          }
        }
        this.writeMultiByteCharCode(char);
      }
    }
  }
  writeCharCode(charCode) {
    if (dart.notNull(charCode) <= 127) {
      this.writeByte(charCode);
      return;
    }
    this.writeMultiByteCharCode(charCode);
  }
  writeMultiByteCharCode(charCode) {
    if (dart.notNull(charCode) <= 2047) {
      this.writeByte((192 | charCode[dartx['>>']](6)) >>> 0);
      this.writeByte(128 | dart.notNull(charCode) & 63);
      return;
    }
    if (dart.notNull(charCode) <= 65535) {
      this.writeByte((224 | charCode[dartx['>>']](12)) >>> 0);
      this.writeByte(128 | dart.notNull(charCode) >> 6 & 63);
      this.writeByte(128 | dart.notNull(charCode) & 63);
      return;
    }
    this.writeFourByteCharCode(charCode);
  }
  writeFourByteCharCode(charCode) {
    dart.assert(dart.notNull(charCode) <= 1114111);
    this.writeByte((240 | charCode[dartx['>>']](18)) >>> 0);
    this.writeByte(128 | dart.notNull(charCode) >> 12 & 63);
    this.writeByte(128 | dart.notNull(charCode) >> 6 & 63);
    this.writeByte(128 | dart.notNull(charCode) & 63);
  }
  writeByte(byte) {
    dart.assert(dart.notNull(byte) <= 255);
    if (this.index == this.buffer[dartx.length]) {
      this.addChunk(this.buffer, 0, this.index);
      this.buffer = typed_data.Uint8List.new(this.bufferSize);
      this.index = 0;
    }
    this.buffer[dartx._set]((() => {
      let x = this.index;
      this.index = dart.notNull(x) + 1;
      return x;
    })(), byte);
  }
};
dart.setSignature(convert._JsonUtf8Stringifier, {
  constructors: () => ({new: dart.definiteFunctionType(convert._JsonUtf8Stringifier, [dynamicTodynamic(), core.int, convert._AddChunk])}),
  fields: () => ({
    bufferSize: core.int,
    addChunk: convert._AddChunk,
    buffer: typed_data.Uint8List,
    index: core.int
  }),
  methods: () => ({
    flush: dart.definiteFunctionType(dart.void, []),
    writeNumber: dart.definiteFunctionType(dart.void, [core.num]),
    writeAsciiString: dart.definiteFunctionType(dart.void, [core.String]),
    writeString: dart.definiteFunctionType(dart.void, [core.String]),
    writeStringSlice: dart.definiteFunctionType(dart.void, [core.String, core.int, core.int]),
    writeCharCode: dart.definiteFunctionType(dart.void, [core.int]),
    writeMultiByteCharCode: dart.definiteFunctionType(dart.void, [core.int]),
    writeFourByteCharCode: dart.definiteFunctionType(dart.void, [core.int]),
    writeByte: dart.definiteFunctionType(dart.void, [core.int])
  }),
  statics: () => ({stringify: dart.definiteFunctionType(dart.void, [core.Object, ListOfint(), dynamicTodynamic(), core.int, Uint8ListAndintAndintTovoid()])}),
  names: ['stringify']
});
convert._JsonUtf8StringifierPretty = class _JsonUtf8StringifierPretty extends dart.mixin(convert._JsonUtf8Stringifier, convert._JsonPrettyPrintMixin) {
  new(toEncodable, indent, bufferSize, addChunk) {
    this.indent = indent;
    super.new(toEncodable, core.int._check(bufferSize), addChunk);
  }
  writeIndentation(count) {
    let indent = this.indent;
    let indentLength = indent[dartx.length];
    if (indentLength == 1) {
      let char = indent[dartx._get](0);
      while (dart.notNull(count) > 0) {
        this.writeByte(char);
        count = dart.notNull(count) - 1;
      }
      return;
    }
    while (dart.notNull(count) > 0) {
      count = dart.notNull(count) - 1;
      let end = dart.notNull(this.index) + dart.notNull(indentLength);
      if (end <= dart.notNull(this.buffer[dartx.length])) {
        this.buffer[dartx.setRange](this.index, end, indent);
        this.index = end;
      } else {
        for (let i = 0; i < dart.notNull(indentLength); i++) {
          this.writeByte(indent[dartx._get](i));
        }
      }
    }
  }
};
dart.setSignature(convert._JsonUtf8StringifierPretty, {
  constructors: () => ({new: dart.definiteFunctionType(convert._JsonUtf8StringifierPretty, [dynamicTodynamic(), ListOfint(), dart.dynamic, Uint8ListAndintAndintTovoid()])}),
  fields: () => ({indent: ListOfint()}),
  methods: () => ({writeIndentation: dart.definiteFunctionType(dart.void, [core.int])})
});
let const;
let const;
let const;
let const;
let const;
convert.Latin1Codec = class Latin1Codec extends convert.Encoding {
  new(opts) {
    let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false;
    this[_allowInvalid] = allowInvalid;
    super.new();
  }
  get name() {
    return "iso-8859-1";
  }
  decode(bytes, opts) {
    let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : null;
    if (allowInvalid == null) allowInvalid = this[_allowInvalid];
    if (dart.test(allowInvalid)) {
      return (const || (const = dart.const(new convert.Latin1Decoder({allowInvalid: true})))).convert(bytes);
    } else {
      return (const || (const = dart.const(new convert.Latin1Decoder({allowInvalid: false})))).convert(bytes);
    }
  }
  get encoder() {
    return const || (const = dart.const(new convert.Latin1Encoder()));
  }
  get decoder() {
    return dart.test(this[_allowInvalid]) ? const || (const = dart.const(new convert.Latin1Decoder({allowInvalid: true}))) : const || (const = dart.const(new convert.Latin1Decoder({allowInvalid: false})));
  }
};
dart.setSignature(convert.Latin1Codec, {
  constructors: () => ({new: dart.definiteFunctionType(convert.Latin1Codec, [], {allowInvalid: core.bool})}),
  fields: () => ({[_allowInvalid]: core.bool}),
  getters: () => ({
    name: dart.definiteFunctionType(core.String, []),
    encoder: dart.definiteFunctionType(convert.Latin1Encoder, []),
    decoder: dart.definiteFunctionType(convert.Latin1Decoder, [])
  }),
  methods: () => ({decode: dart.definiteFunctionType(core.String, [ListOfint()], {allowInvalid: core.bool})})
});
convert.LATIN1 = dart.const(new convert.Latin1Codec());
convert._LATIN1_MASK = 255;
convert.Latin1Encoder = class Latin1Encoder extends convert._UnicodeSubsetEncoder {
  new() {
    super.new(convert._LATIN1_MASK);
  }
};
dart.setSignature(convert.Latin1Encoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert.Latin1Encoder, [])})
});
convert.Latin1Decoder = class Latin1Decoder extends convert._UnicodeSubsetDecoder {
  new(opts) {
    let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false;
    super.new(allowInvalid, convert._LATIN1_MASK);
  }
  startChunkedConversion(sink) {
    let stringSink = null;
    if (convert.StringConversionSink.is(sink)) {
      stringSink = sink;
    } else {
      stringSink = convert.StringConversionSink.from(sink);
    }
    if (!dart.test(this[_allowInvalid])) return new convert._Latin1DecoderSink(stringSink);
    return new convert._Latin1AllowInvalidDecoderSink(stringSink);
  }
};
dart.setSignature(convert.Latin1Decoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert.Latin1Decoder, [], {allowInvalid: core.bool})}),
  methods: () => ({startChunkedConversion: dart.definiteFunctionType(convert.ByteConversionSink, [SinkOfString()])})
});
const _addSliceToSink = Symbol('_addSliceToSink');
convert._Latin1DecoderSink = class _Latin1DecoderSink extends convert.ByteConversionSinkBase {
  new(sink) {
    this[_sink] = sink;
    super.new();
  }
  close() {
    this[_sink].close();
    this[_sink] = null;
  }
  add(source) {
    this.addSlice(source, 0, source[dartx.length], false);
  }
  [_addSliceToSink](source, start, end, isLast) {
    this[_sink].add(core.String.fromCharCodes(source, start, end));
    if (dart.test(isLast)) this.close();
  }
  addSlice(source, start, end, isLast) {
    end = core.RangeError.checkValidRange(start, end, source[dartx.length]);
    if (start == end) return;
    if (!typed_data.Uint8List.is(source)) {
      convert._Latin1DecoderSink._checkValidLatin1(source, start, end);
    }
    this[_addSliceToSink](source, start, end, isLast);
  }
  static _checkValidLatin1(source, start, end) {
    let mask = 0;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      mask = (dart.notNull(mask) | dart.notNull(source[dartx._get](i))) >>> 0;
    }
    if (dart.notNull(mask) >= 0 && dart.notNull(mask) <= convert._LATIN1_MASK) {
      return;
    }
    convert._Latin1DecoderSink._reportInvalidLatin1(source, start, end);
  }
  static _reportInvalidLatin1(source, start, end) {
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = source[dartx._get](i);
      if (dart.notNull(char) < 0 || dart.notNull(char) > convert._LATIN1_MASK) {
        dart.throw(new core.FormatException("Source contains non-Latin-1 characters.", source, i));
      }
    }
    dart.assert(false);
  }
};
dart.setSignature(convert._Latin1DecoderSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._Latin1DecoderSink, [convert.StringConversionSink])}),
  fields: () => ({[_sink]: convert.StringConversionSink}),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    add: dart.definiteFunctionType(dart.void, [ListOfint()]),
    [_addSliceToSink]: dart.definiteFunctionType(dart.void, [ListOfint(), core.int, core.int, core.bool])
  }),
  statics: () => ({
    _checkValidLatin1: dart.definiteFunctionType(dart.void, [ListOfint(), core.int, core.int]),
    _reportInvalidLatin1: dart.definiteFunctionType(dart.void, [ListOfint(), core.int, core.int])
  }),
  names: ['_checkValidLatin1', '_reportInvalidLatin1']
});
let const;
convert._Latin1AllowInvalidDecoderSink = class _Latin1AllowInvalidDecoderSink extends convert._Latin1DecoderSink {
  new(sink) {
    super.new(sink);
  }
  addSlice(source, start, end, isLast) {
    core.RangeError.checkValidRange(start, end, source[dartx.length]);
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = source[dartx._get](i);
      if (dart.notNull(char) > convert._LATIN1_MASK || dart.notNull(char) < 0) {
        if (dart.notNull(i) > dart.notNull(start)) this[_addSliceToSink](source, start, i, false);
        this[_addSliceToSink](const || (const = dart.constList([65533], core.int)), 0, 1, false);
        start = dart.notNull(i) + 1;
      }
    }
    if (dart.notNull(start) < dart.notNull(end)) {
      this[_addSliceToSink](source, start, end, isLast);
    }
    if (dart.test(isLast)) {
      this.close();
    }
  }
};
dart.setSignature(convert._Latin1AllowInvalidDecoderSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._Latin1AllowInvalidDecoderSink, [convert.StringConversionSink])})
});
convert._LF = 10;
convert._CR = 13;
convert.LineSplitter = class LineSplitter extends core.Object {
  new() {
  }
  static split(lines, start, end) {
    return dart.syncStar(function*(lines, start, end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      end = core.RangeError.checkValidRange(start, end, lines[dartx.length]);
      let sliceStart = start;
      let char = 0;
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let previousChar = char;
        char = lines[dartx.codeUnitAt](i);
        if (char != convert._CR) {
          if (char != convert._LF) continue;
          if (previousChar == convert._CR) {
            sliceStart = dart.notNull(i) + 1;
            continue;
          }
        }
        yield lines[dartx.substring](sliceStart, i);
        sliceStart = dart.notNull(i) + 1;
      }
      if (dart.notNull(sliceStart) < dart.notNull(end)) {
        yield lines[dartx.substring](sliceStart, end);
      }
    }, core.String, lines, start, end);
  }
  convert(data) {
    let lines = JSArrayOfString().of([]);
    let end = data[dartx.length];
    let sliceStart = 0;
    let char = 0;
    for (let i = 0; i < dart.notNull(end); i++) {
      let previousChar = char;
      char = data[dartx.codeUnitAt](i);
      if (char != convert._CR) {
        if (char != convert._LF) continue;
        if (previousChar == convert._CR) {
          sliceStart = i + 1;
          continue;
        }
      }
      lines[dartx.add](data[dartx.substring](sliceStart, i));
      sliceStart = i + 1;
    }
    if (sliceStart < dart.notNull(end)) {
      lines[dartx.add](data[dartx.substring](sliceStart, end));
    }
    return lines;
  }
  startChunkedConversion(sink) {
    if (!convert.StringConversionSink.is(sink)) {
      sink = convert.StringConversionSink.from(sink);
    }
    return new convert._LineSplitterSink(convert.StringConversionSink._check(sink));
  }
  bind(stream) {
    return StreamOfString().eventTransformed(stream, dart.fn(sink => new convert._LineSplitterEventSink(sink), EventSinkOfStringTo_LineSplitterEventSink()));
  }
};
convert.LineSplitter[dart.implements] = () => [StreamTransformerOfString$String()];
dart.setSignature(convert.LineSplitter, {
  constructors: () => ({new: dart.definiteFunctionType(convert.LineSplitter, [])}),
  methods: () => ({
    convert: dart.definiteFunctionType(core.List$(core.String), [core.String]),
    startChunkedConversion: dart.definiteFunctionType(convert.StringConversionSink, [SinkOfString()]),
    bind: dart.definiteFunctionType(async.Stream$(core.String), [StreamOfString()])
  }),
  statics: () => ({split: dart.definiteFunctionType(core.Iterable$(core.String), [core.String], [core.int, core.int])}),
  names: ['split']
});
const _carry = Symbol('_carry');
const _skipLeadingLF = Symbol('_skipLeadingLF');
const _addLines = Symbol('_addLines');
convert._LineSplitterSink = class _LineSplitterSink extends convert.StringConversionSinkBase {
  new(sink) {
    this[_sink] = sink;
    this[_carry] = null;
    this[_skipLeadingLF] = false;
  }
  addSlice(chunk, start, end, isLast) {
    end = core.RangeError.checkValidRange(start, end, chunk[dartx.length]);
    if (dart.notNull(start) >= dart.notNull(end)) {
      if (dart.test(isLast)) this.close();
      return;
    }
    if (this[_carry] != null) {
      dart.assert(!dart.test(this[_skipLeadingLF]));
      chunk = dart.notNull(this[_carry]) + dart.notNull(chunk[dartx.substring](start, end));
      start = 0;
      end = chunk[dartx.length];
      this[_carry] = null;
    } else if (dart.test(this[_skipLeadingLF])) {
      if (chunk[dartx.codeUnitAt](start) == convert._LF) {
        start = dart.notNull(start) + 1;
      }
      this[_skipLeadingLF] = false;
    }
    this[_addLines](chunk, start, end);
    if (dart.test(isLast)) this.close();
  }
  close() {
    if (this[_carry] != null) {
      this[_sink].add(this[_carry]);
      this[_carry] = null;
    }
    this[_sink].close();
  }
  [_addLines](lines, start, end) {
    let sliceStart = start;
    let char = 0;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let previousChar = char;
      char = lines[dartx.codeUnitAt](i);
      if (char != convert._CR) {
        if (char != convert._LF) continue;
        if (previousChar == convert._CR) {
          sliceStart = dart.notNull(i) + 1;
          continue;
        }
      }
      this[_sink].add(lines[dartx.substring](sliceStart, i));
      sliceStart = dart.notNull(i) + 1;
    }
    if (dart.notNull(sliceStart) < dart.notNull(end)) {
      this[_carry] = lines[dartx.substring](sliceStart, end);
    } else {
      this[_skipLeadingLF] = char == convert._CR;
    }
  }
};
dart.setSignature(convert._LineSplitterSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._LineSplitterSink, [convert.StringConversionSink])}),
  fields: () => ({
    [_sink]: convert.StringConversionSink,
    [_carry]: core.String,
    [_skipLeadingLF]: core.bool
  }),
  methods: () => ({
    addSlice: dart.definiteFunctionType(dart.void, [core.String, core.int, core.int, core.bool]),
    close: dart.definiteFunctionType(dart.void, []),
    [_addLines]: dart.definiteFunctionType(dart.void, [core.String, core.int, core.int])
  })
});
convert._LineSplitterEventSink = class _LineSplitterEventSink extends convert._LineSplitterSink {
  new(eventSink) {
    this[_eventSink] = eventSink;
    super.new(convert.StringConversionSink.from(eventSink));
  }
  addError(o, stackTrace) {
    if (stackTrace === void 0) stackTrace = null;
    this[_eventSink].addError(o, stackTrace);
  }
};
convert._LineSplitterEventSink[dart.implements] = () => [EventSinkOfString()];
dart.setSignature(convert._LineSplitterEventSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._LineSplitterEventSink, [EventSinkOfString()])}),
  fields: () => ({[_eventSink]: EventSinkOfString()}),
  methods: () => ({addError: dart.definiteFunctionType(dart.void, [core.Object], [core.StackTrace])})
});
convert.StringConversionSink = class StringConversionSink extends convert.ChunkedConversionSink$(core.String) {
  new() {
    super.new();
  }
  static withCallback(callback) {
    return new convert._StringCallbackSink(callback);
  }
  static from(sink) {
    return new convert._StringAdapterSink(sink);
  }
  static fromStringSink(sink) {
    return new convert._StringSinkConversionSink(sink);
  }
};
dart.addSimpleTypeTests(convert.StringConversionSink);
dart.setSignature(convert.StringConversionSink, {
  constructors: () => ({
    new: dart.definiteFunctionType(convert.StringConversionSink, []),
    withCallback: dart.definiteFunctionType(convert.StringConversionSink, [StringTovoid()]),
    from: dart.definiteFunctionType(convert.StringConversionSink, [SinkOfString()]),
    fromStringSink: dart.definiteFunctionType(convert.StringConversionSink, [core.StringSink])
  })
});
core.StringSink = class StringSink extends core.Object {};
convert.ClosableStringSink = class ClosableStringSink extends core.StringSink {
  static fromStringSink(sink, onClose) {
    return new convert._ClosableStringSink(sink, onClose);
  }
};
dart.setSignature(convert.ClosableStringSink, {
  constructors: () => ({fromStringSink: dart.definiteFunctionType(convert.ClosableStringSink, [core.StringSink, VoidTovoid()])})
});
convert._StringSinkCloseCallback = dart.typedef('_StringSinkCloseCallback', () => dart.functionType(dart.void, []));
convert._ClosableStringSink = class _ClosableStringSink extends core.Object {
  new(sink, callback) {
    this[_sink] = sink;
    this[_callback] = callback;
  }
  close() {
    this[_callback]();
  }
  writeCharCode(charCode) {
    this[_sink].writeCharCode(charCode);
  }
  write(o) {
    this[_sink].write(o);
  }
  writeln(o) {
    if (o === void 0) o = "";
    this[_sink].writeln(o);
  }
  writeAll(objects, separator) {
    if (separator === void 0) separator = "";
    this[_sink].writeAll(objects, separator);
  }
};
convert._ClosableStringSink[dart.implements] = () => [convert.ClosableStringSink];
dart.setSignature(convert._ClosableStringSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._ClosableStringSink, [core.StringSink, convert._StringSinkCloseCallback])}),
  fields: () => ({
    [_callback]: convert._StringSinkCloseCallback,
    [_sink]: core.StringSink
  }),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    writeCharCode: dart.definiteFunctionType(dart.void, [core.int]),
    write: dart.definiteFunctionType(dart.void, [core.Object]),
    writeln: dart.definiteFunctionType(dart.void, [], [core.Object]),
    writeAll: dart.definiteFunctionType(dart.void, [core.Iterable], [core.String])
  })
});
const _flush = Symbol('_flush');
convert._StringConversionSinkAsStringSinkAdapter = class _StringConversionSinkAsStringSinkAdapter extends core.Object {
  new(chunkedSink) {
    this[_chunkedSink] = chunkedSink;
    this[_buffer] = new core.StringBuffer();
  }
  close() {
    if (dart.test(this[_buffer].isNotEmpty)) this[_flush]();
    this[_chunkedSink].close();
  }
  writeCharCode(charCode) {
    this[_buffer].writeCharCode(charCode);
    if (dart.notNull(this[_buffer].length) > convert._StringConversionSinkAsStringSinkAdapter._MIN_STRING_SIZE) this[_flush]();
  }
  write(o) {
    if (dart.test(this[_buffer].isNotEmpty)) this[_flush]();
    this[_chunkedSink].add(dart.toString(o));
  }
  writeln(o) {
    if (o === void 0) o = "";
    this[_buffer].writeln(o);
    if (dart.notNull(this[_buffer].length) > convert._StringConversionSinkAsStringSinkAdapter._MIN_STRING_SIZE) this[_flush]();
  }
  writeAll(objects, separator) {
    if (separator === void 0) separator = "";
    if (dart.test(this[_buffer].isNotEmpty)) this[_flush]();
    let iterator = objects[dartx.iterator];
    if (!dart.test(iterator.moveNext())) return;
    if (dart.test(separator[dartx.isEmpty])) {
      do {
        this[_chunkedSink].add(dart.toString(iterator.current));
      } while (dart.test(iterator.moveNext()));
    } else {
      this[_chunkedSink].add(dart.toString(iterator.current));
      while (dart.test(iterator.moveNext())) {
        this.write(separator);
        this[_chunkedSink].add(dart.toString(iterator.current));
      }
    }
  }
  [_flush]() {
    let accumulated = dart.toString(this[_buffer]);
    this[_buffer].clear();
    this[_chunkedSink].add(accumulated);
  }
};
convert._StringConversionSinkAsStringSinkAdapter[dart.implements] = () => [convert.ClosableStringSink];
dart.setSignature(convert._StringConversionSinkAsStringSinkAdapter, {
  constructors: () => ({new: dart.definiteFunctionType(convert._StringConversionSinkAsStringSinkAdapter, [convert.StringConversionSink])}),
  fields: () => ({
    [_buffer]: core.StringBuffer,
    [_chunkedSink]: convert.StringConversionSink
  }),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    writeCharCode: dart.definiteFunctionType(dart.void, [core.int]),
    write: dart.definiteFunctionType(dart.void, [core.Object]),
    writeln: dart.definiteFunctionType(dart.void, [], [core.Object]),
    writeAll: dart.definiteFunctionType(dart.void, [core.Iterable], [core.String]),
    [_flush]: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({_MIN_STRING_SIZE: core.int})
});
convert._StringConversionSinkAsStringSinkAdapter._MIN_STRING_SIZE = 16;
convert._StringCallbackSink = class _StringCallbackSink extends convert._StringSinkConversionSink {
  new(callback) {
    this[_callback] = callback;
    super.new(new core.StringBuffer());
  }
  close() {
    let buffer = core.StringBuffer._check(this[_stringSink]);
    let accumulated = dart.toString(buffer);
    buffer.clear();
    this[_callback](accumulated);
  }
  asUtf8Sink(allowMalformed) {
    return new convert._Utf8StringSinkAdapter(this, this[_stringSink], allowMalformed);
  }
};
dart.setSignature(convert._StringCallbackSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._StringCallbackSink, [StringTovoid()])}),
  fields: () => ({[_callback]: StringTovoid()})
});
convert._StringAdapterSink = class _StringAdapterSink extends convert.StringConversionSinkBase {
  new(sink) {
    this[_sink] = sink;
  }
  add(str) {
    this[_sink].add(str);
  }
  addSlice(str, start, end, isLast) {
    if (start == 0 && end == str[dartx.length]) {
      this.add(str);
    } else {
      this.add(str[dartx.substring](start, end));
    }
    if (dart.test(isLast)) this.close();
  }
  close() {
    this[_sink].close();
  }
};
dart.setSignature(convert._StringAdapterSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._StringAdapterSink, [SinkOfString()])}),
  fields: () => ({[_sink]: SinkOfString()}),
  methods: () => ({
    addSlice: dart.definiteFunctionType(dart.void, [core.String, core.int, core.int, core.bool]),
    close: dart.definiteFunctionType(dart.void, [])
  })
});
convert._Utf8StringSinkAdapter = class _Utf8StringSinkAdapter extends convert.ByteConversionSink {
  new(sink, stringSink, allowMalformed) {
    this[_sink] = sink;
    this[_decoder] = new convert._Utf8Decoder(stringSink, allowMalformed);
    super.new();
  }
  close() {
    this[_decoder].close();
    if (this[_sink] != null) this[_sink].close();
  }
  add(chunk) {
    this.addSlice(chunk, 0, chunk[dartx.length], false);
  }
  addSlice(codeUnits, startIndex, endIndex, isLast) {
    this[_decoder].convert(codeUnits, startIndex, endIndex);
    if (dart.test(isLast)) this.close();
  }
};
dart.setSignature(convert._Utf8StringSinkAdapter, {
  constructors: () => ({new: dart.definiteFunctionType(convert._Utf8StringSinkAdapter, [core.Sink, core.StringSink, core.bool])}),
  fields: () => ({
    [_decoder]: convert._Utf8Decoder,
    [_sink]: core.Sink
  }),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    add: dart.definiteFunctionType(dart.void, [ListOfint()]),
    addSlice: dart.definiteFunctionType(dart.void, [ListOfint(), core.int, core.int, core.bool])
  })
});
convert._Utf8ConversionSink = class _Utf8ConversionSink extends convert.ByteConversionSink {
  new(sink, allowMalformed) {
    _Utf8ConversionSink.prototype._.call(this, sink, new core.StringBuffer(), allowMalformed);
  }
  _(chunkedSink, stringBuffer, allowMalformed) {
    this[_chunkedSink] = chunkedSink;
    this[_decoder] = new convert._Utf8Decoder(stringBuffer, allowMalformed);
    this[_buffer] = stringBuffer;
    super.new();
  }
  close() {
    this[_decoder].close();
    if (dart.test(this[_buffer].isNotEmpty)) {
      let accumulated = dart.toString(this[_buffer]);
      this[_buffer].clear();
      this[_chunkedSink].addSlice(accumulated, 0, accumulated[dartx.length], true);
    } else {
      this[_chunkedSink].close();
    }
  }
  add(chunk) {
    this.addSlice(chunk, 0, chunk[dartx.length], false);
  }
  addSlice(chunk, startIndex, endIndex, isLast) {
    this[_decoder].convert(chunk, startIndex, endIndex);
    if (dart.test(this[_buffer].isNotEmpty)) {
      let accumulated = dart.toString(this[_buffer]);
      this[_chunkedSink].addSlice(accumulated, 0, accumulated[dartx.length], isLast);
      this[_buffer].clear();
      return;
    }
    if (dart.test(isLast)) this.close();
  }
};
dart.defineNamedConstructor(convert._Utf8ConversionSink, '_');
dart.setSignature(convert._Utf8ConversionSink, {
  constructors: () => ({
    new: dart.definiteFunctionType(convert._Utf8ConversionSink, [convert.StringConversionSink, core.bool]),
    _: dart.definiteFunctionType(convert._Utf8ConversionSink, [convert.StringConversionSink, core.StringBuffer, core.bool])
  }),
  fields: () => ({
    [_decoder]: convert._Utf8Decoder,
    [_chunkedSink]: convert.StringConversionSink,
    [_buffer]: core.StringBuffer
  }),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    add: dart.definiteFunctionType(dart.void, [ListOfint()]),
    addSlice: dart.definiteFunctionType(dart.void, [ListOfint(), core.int, core.int, core.bool])
  })
});
convert.UNICODE_REPLACEMENT_CHARACTER_RUNE = 65533;
convert.UNICODE_BOM_CHARACTER_RUNE = 65279;
const _allowMalformed = Symbol('_allowMalformed');
let const;
convert.Utf8Codec = class Utf8Codec extends convert.Encoding {
  new(opts) {
    let allowMalformed = opts && 'allowMalformed' in opts ? opts.allowMalformed : false;
    this[_allowMalformed] = allowMalformed;
    super.new();
  }
  get name() {
    return "utf-8";
  }
  decode(codeUnits, opts) {
    let allowMalformed = opts && 'allowMalformed' in opts ? opts.allowMalformed : null;
    if (allowMalformed == null) allowMalformed = this[_allowMalformed];
    return new convert.Utf8Decoder({allowMalformed: allowMalformed}).convert(codeUnits);
  }
  get encoder() {
    return const || (const = dart.const(new convert.Utf8Encoder()));
  }
  get decoder() {
    return new convert.Utf8Decoder({allowMalformed: this[_allowMalformed]});
  }
};
dart.setSignature(convert.Utf8Codec, {
  constructors: () => ({new: dart.definiteFunctionType(convert.Utf8Codec, [], {allowMalformed: core.bool})}),
  fields: () => ({[_allowMalformed]: core.bool}),
  getters: () => ({
    name: dart.definiteFunctionType(core.String, []),
    encoder: dart.definiteFunctionType(convert.Utf8Encoder, []),
    decoder: dart.definiteFunctionType(convert.Utf8Decoder, [])
  }),
  methods: () => ({decode: dart.definiteFunctionType(core.String, [ListOfint()], {allowMalformed: core.bool})})
});
convert.UTF8 = dart.const(new convert.Utf8Codec());
const _fillBuffer = Symbol('_fillBuffer');
const _writeSurrogate = Symbol('_writeSurrogate');
convert.Utf8Encoder = class Utf8Encoder extends convert.Converter$(core.String, core.List$(core.int)) {
  new() {
    super.new();
  }
  convert(string, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    let stringLength = string[dartx.length];
    core.RangeError.checkValidRange(start, end, stringLength);
    if (end == null) end = stringLength;
    let length = dart.notNull(end) - dart.notNull(start);
    if (length == 0) return typed_data.Uint8List.new(0);
    let encoder = new convert._Utf8Encoder.withBufferSize(length * 3);
    let endPosition = encoder[_fillBuffer](string, start, end);
    dart.assert(dart.notNull(endPosition) >= dart.notNull(end) - 1);
    if (endPosition != end) {
      let lastCodeUnit = string[dartx.codeUnitAt](dart.notNull(end) - 1);
      dart.assert(convert._isLeadSurrogate(lastCodeUnit));
      let wasCombined = encoder[_writeSurrogate](lastCodeUnit, 0);
      dart.assert(!dart.test(wasCombined));
    }
    return encoder[_buffer][dartx.sublist](0, encoder[_bufferIndex]);
  }
  startChunkedConversion(sink) {
    if (!convert.ByteConversionSink.is(sink)) {
      sink = convert.ByteConversionSink.from(sink);
    }
    return new convert._Utf8EncoderSink(convert.ByteConversionSink._check(sink));
  }
  bind(stream) {
    return super.bind(stream);
  }
};
dart.addSimpleTypeTests(convert.Utf8Encoder);
dart.setSignature(convert.Utf8Encoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert.Utf8Encoder, [])}),
  methods: () => ({
    convert: dart.definiteFunctionType(core.List$(core.int), [core.String], [core.int, core.int]),
    startChunkedConversion: dart.definiteFunctionType(convert.StringConversionSink, [SinkOfListOfint()]),
    bind: dart.definiteFunctionType(async.Stream$(core.List$(core.int)), [StreamOfString()])
  })
});
convert._Utf8Encoder = class _Utf8Encoder extends core.Object {
  new() {
    _Utf8Encoder.prototype.withBufferSize.call(this, convert._Utf8Encoder._DEFAULT_BYTE_BUFFER_SIZE);
  }
  withBufferSize(bufferSize) {
    this[_buffer] = convert._Utf8Encoder._createBuffer(bufferSize);
    this[_carry] = 0;
    this[_bufferIndex] = 0;
  }
  static _createBuffer(size) {
    return typed_data.Uint8List.new(size);
  }
  [_writeSurrogate](leadingSurrogate, nextCodeUnit) {
    if (dart.test(convert._isTailSurrogate(nextCodeUnit))) {
      let rune = convert._combineSurrogatePair(leadingSurrogate, nextCodeUnit);
      dart.assert(dart.notNull(rune) > convert._THREE_BYTE_LIMIT);
      dart.assert(dart.notNull(rune) <= convert._FOUR_BYTE_LIMIT);
      this[_buffer][dartx._set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), (240 | rune[dartx['>>']](18)) >>> 0);
      this[_buffer][dartx._set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), 128 | dart.notNull(rune) >> 12 & 63);
      this[_buffer][dartx._set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), 128 | dart.notNull(rune) >> 6 & 63);
      this[_buffer][dartx._set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), 128 | dart.notNull(rune) & 63);
      return true;
    } else {
      this[_buffer][dartx._set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), (224 | leadingSurrogate[dartx['>>']](12)) >>> 0);
      this[_buffer][dartx._set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), 128 | dart.notNull(leadingSurrogate) >> 6 & 63);
      this[_buffer][dartx._set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), 128 | dart.notNull(leadingSurrogate) & 63);
      return false;
    }
  }
  [_fillBuffer](str, start, end) {
    if (start != end && dart.test(convert._isLeadSurrogate(str[dartx.codeUnitAt](dart.notNull(end) - 1)))) {
      end = dart.notNull(end) - 1;
    }
    let stringIndex = null;
    for (stringIndex = start; dart.notNull(stringIndex) < dart.notNull(end); stringIndex = dart.notNull(stringIndex) + 1) {
      let codeUnit = str[dartx.codeUnitAt](stringIndex);
      if (dart.notNull(codeUnit) <= convert._ONE_BYTE_LIMIT) {
        if (dart.notNull(this[_bufferIndex]) >= dart.notNull(this[_buffer][dartx.length])) break;
        this[_buffer][dartx._set]((() => {
          let x = this[_bufferIndex];
          this[_bufferIndex] = dart.notNull(x) + 1;
          return x;
        })(), codeUnit);
      } else if (dart.test(convert._isLeadSurrogate(codeUnit))) {
        if (dart.notNull(this[_bufferIndex]) + 3 >= dart.notNull(this[_buffer][dartx.length])) break;
        let nextCodeUnit = str[dartx.codeUnitAt](dart.notNull(stringIndex) + 1);
        let wasCombined = this[_writeSurrogate](codeUnit, nextCodeUnit);
        if (dart.test(wasCombined)) {
          stringIndex = dart.notNull(stringIndex) + 1;
        }
      } else {
        let rune = codeUnit;
        if (dart.notNull(rune) <= convert._TWO_BYTE_LIMIT) {
          if (dart.notNull(this[_bufferIndex]) + 1 >= dart.notNull(this[_buffer][dartx.length])) break;
          this[_buffer][dartx._set]((() => {
            let x = this[_bufferIndex];
            this[_bufferIndex] = dart.notNull(x) + 1;
            return x;
          })(), (192 | rune[dartx['>>']](6)) >>> 0);
          this[_buffer][dartx._set]((() => {
            let x = this[_bufferIndex];
            this[_bufferIndex] = dart.notNull(x) + 1;
            return x;
          })(), 128 | dart.notNull(rune) & 63);
        } else {
          dart.assert(dart.notNull(rune) <= convert._THREE_BYTE_LIMIT);
          if (dart.notNull(this[_bufferIndex]) + 2 >= dart.notNull(this[_buffer][dartx.length])) break;
          this[_buffer][dartx._set]((() => {
            let x = this[_bufferIndex];
            this[_bufferIndex] = dart.notNull(x) + 1;
            return x;
          })(), (224 | rune[dartx['>>']](12)) >>> 0);
          this[_buffer][dartx._set]((() => {
            let x = this[_bufferIndex];
            this[_bufferIndex] = dart.notNull(x) + 1;
            return x;
          })(), 128 | dart.notNull(rune) >> 6 & 63);
          this[_buffer][dartx._set]((() => {
            let x = this[_bufferIndex];
            this[_bufferIndex] = dart.notNull(x) + 1;
            return x;
          })(), 128 | dart.notNull(rune) & 63);
        }
      }
    }
    return stringIndex;
  }
};
dart.defineNamedConstructor(convert._Utf8Encoder, 'withBufferSize');
dart.setSignature(convert._Utf8Encoder, {
  constructors: () => ({
    new: dart.definiteFunctionType(convert._Utf8Encoder, []),
    withBufferSize: dart.definiteFunctionType(convert._Utf8Encoder, [core.int])
  }),
  fields: () => ({
    [_carry]: core.int,
    [_bufferIndex]: core.int,
    [_buffer]: ListOfint()
  }),
  methods: () => ({
    [_writeSurrogate]: dart.definiteFunctionType(core.bool, [core.int, core.int]),
    [_fillBuffer]: dart.definiteFunctionType(core.int, [core.String, core.int, core.int])
  }),
  sfields: () => ({_DEFAULT_BYTE_BUFFER_SIZE: core.int}),
  statics: () => ({_createBuffer: dart.definiteFunctionType(core.List$(core.int), [core.int])}),
  names: ['_createBuffer']
});
convert._Utf8Encoder._DEFAULT_BYTE_BUFFER_SIZE = 1024;
convert._Utf8EncoderSink = class _Utf8EncoderSink extends dart.mixin(convert._Utf8Encoder, convert.StringConversionSinkMixin) {
  new(sink) {
    this[_sink] = sink;
    super.new();
  }
  close() {
    if (this[_carry] != 0) {
      this.addSlice("", 0, 0, true);
      return;
    }
    this[_sink].close();
  }
  addSlice(str, start, end, isLast) {
    this[_bufferIndex] = 0;
    if (start == end && !dart.test(isLast)) {
      return;
    }
    if (this[_carry] != 0) {
      let nextCodeUnit = 0;
      if (start != end) {
        nextCodeUnit = str[dartx.codeUnitAt](start);
      } else {
        dart.assert(isLast);
      }
      let wasCombined = this[_writeSurrogate](this[_carry], nextCodeUnit);
      dart.assert(!dart.test(wasCombined) || start != end);
      if (dart.test(wasCombined)) {
        start = dart.notNull(start) + 1;
      }
      this[_carry] = 0;
    }
    do {
      start = this[_fillBuffer](str, start, end);
      let isLastSlice = dart.test(isLast) && start == end;
      if (start == dart.notNull(end) - 1 && dart.test(convert._isLeadSurrogate(str[dartx.codeUnitAt](start)))) {
        if (dart.test(isLast) && dart.notNull(this[_bufferIndex]) < dart.notNull(this[_buffer][dartx.length]) - 3) {
          let hasBeenCombined = this[_writeSurrogate](str[dartx.codeUnitAt](start), 0);
          dart.assert(!dart.test(hasBeenCombined));
        } else {
          this[_carry] = str[dartx.codeUnitAt](start);
        }
        start = dart.notNull(start) + 1;
      }
      this[_sink].addSlice(this[_buffer], 0, this[_bufferIndex], isLastSlice);
      this[_bufferIndex] = 0;
    } while (dart.notNull(start) < dart.notNull(end));
    if (dart.test(isLast)) this.close();
  }
};
dart.setSignature(convert._Utf8EncoderSink, {
  constructors: () => ({new: dart.definiteFunctionType(convert._Utf8EncoderSink, [convert.ByteConversionSink])}),
  fields: () => ({[_sink]: convert.ByteConversionSink}),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    addSlice: dart.definiteFunctionType(dart.void, [core.String, core.int, core.int, core.bool])
  })
});
convert.Utf8Decoder = class Utf8Decoder extends convert.Converter$(core.List$(core.int), core.String) {
  new(opts) {
    let allowMalformed = opts && 'allowMalformed' in opts ? opts.allowMalformed : false;
    this[_allowMalformed] = allowMalformed;
    super.new();
  }
  convert(codeUnits, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    let result = convert.Utf8Decoder._convertIntercepted(this[_allowMalformed], codeUnits, start, end);
    if (result != null) {
      return result;
    }
    let length = codeUnits[dartx.length];
    core.RangeError.checkValidRange(start, end, length);
    if (end == null) end = length;
    let buffer = new core.StringBuffer();
    let decoder = new convert._Utf8Decoder(buffer, this[_allowMalformed]);
    decoder.convert(codeUnits, start, end);
    decoder.close();
    return buffer.toString();
  }
  startChunkedConversion(sink) {
    let stringSink = null;
    if (convert.StringConversionSink.is(sink)) {
      stringSink = sink;
    } else {
      stringSink = convert.StringConversionSink.from(sink);
    }
    return stringSink.asUtf8Sink(this[_allowMalformed]);
  }
  bind(stream) {
    return super.bind(stream);
  }
  fuse(T) {
    return next => {
      return super.fuse(T)(next);
    };
  }
  static _convertIntercepted(allowMalformed, codeUnits, start, end) {
    return null;
  }
};
dart.addSimpleTypeTests(convert.Utf8Decoder);
dart.setSignature(convert.Utf8Decoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert.Utf8Decoder, [], {allowMalformed: core.bool})}),
  fields: () => ({[_allowMalformed]: core.bool}),
  methods: () => ({
    convert: dart.definiteFunctionType(core.String, [ListOfint()], [core.int, core.int]),
    startChunkedConversion: dart.definiteFunctionType(convert.ByteConversionSink, [SinkOfString()]),
    bind: dart.definiteFunctionType(async.Stream$(core.String), [StreamOfListOfint()]),
    fuse: dart.definiteFunctionType(T => [convert.Converter$(core.List$(core.int), T), [convert.Converter$(core.String, T)]])
  }),
  statics: () => ({_convertIntercepted: dart.definiteFunctionType(core.String, [core.bool, ListOfint(), core.int, core.int])}),
  names: ['_convertIntercepted']
});
convert._ONE_BYTE_LIMIT = 127;
convert._TWO_BYTE_LIMIT = 2047;
convert._THREE_BYTE_LIMIT = 65535;
convert._FOUR_BYTE_LIMIT = 1114111;
convert._SURROGATE_MASK = 63488;
convert._SURROGATE_TAG_MASK = 64512;
convert._SURROGATE_VALUE_MASK = 1023;
convert._LEAD_SURROGATE_MIN = 55296;
convert._TAIL_SURROGATE_MIN = 56320;
convert._isLeadSurrogate = function(codeUnit) {
  return (dart.notNull(codeUnit) & convert._SURROGATE_TAG_MASK) == convert._LEAD_SURROGATE_MIN;
};
dart.lazyFn(convert._isLeadSurrogate, () => intTobool());
convert._isTailSurrogate = function(codeUnit) {
  return (dart.notNull(codeUnit) & convert._SURROGATE_TAG_MASK) == convert._TAIL_SURROGATE_MIN;
};
dart.lazyFn(convert._isTailSurrogate, () => intTobool());
convert._combineSurrogatePair = function(lead, tail) {
  return (65536 + ((dart.notNull(lead) & convert._SURROGATE_VALUE_MASK) << 10) | dart.notNull(tail) & convert._SURROGATE_VALUE_MASK) >>> 0;
};
dart.fn(convert._combineSurrogatePair, intAndintToint());
const _isFirstCharacter = Symbol('_isFirstCharacter');
const _value = Symbol('_value');
const _expectedUnits = Symbol('_expectedUnits');
const _extraUnits = Symbol('_extraUnits');
convert._Utf8Decoder = class _Utf8Decoder extends core.Object {
  new(stringSink, allowMalformed) {
    this[_stringSink] = stringSink;
    this[_allowMalformed] = allowMalformed;
    this[_isFirstCharacter] = true;
    this[_value] = 0;
    this[_expectedUnits] = 0;
    this[_extraUnits] = 0;
  }
  get hasPartialInput() {
    return dart.notNull(this[_expectedUnits]) > 0;
  }
  close() {
    this.flush();
  }
  flush() {
    if (dart.test(this.hasPartialInput)) {
      if (!dart.test(this[_allowMalformed])) {
        dart.throw(new core.FormatException("Unfinished UTF-8 octet sequence"));
      }
      this[_stringSink].writeCharCode(convert.UNICODE_REPLACEMENT_CHARACTER_RUNE);
      this[_value] = 0;
      this[_expectedUnits] = 0;
      this[_extraUnits] = 0;
    }
  }
  convert(codeUnits, startIndex, endIndex) {
    let value = this[_value];
    let expectedUnits = this[_expectedUnits];
    let extraUnits = this[_extraUnits];
    this[_value] = 0;
    this[_expectedUnits] = 0;
    this[_extraUnits] = 0;
    function scanOneByteCharacters(units, from) {
      let to = endIndex;
      let mask = convert._ONE_BYTE_LIMIT;
      for (let i = from; dart.notNull(i) < dart.notNull(to); i = dart.notNull(i) + 1) {
        let unit = dart.dindex(units, i);
        if (!dart.equals(dart.dsend(unit, '&', mask), unit)) return dart.notNull(i) - dart.notNull(from);
      }
      return dart.notNull(to) - dart.notNull(from);
    }
    dart.fn(scanOneByteCharacters, dynamicAndintToint());
    const addSingleBytes = (function(from, to) {
      dart.assert(dart.notNull(from) >= dart.notNull(startIndex) && dart.notNull(from) <= dart.notNull(endIndex));
      dart.assert(dart.notNull(to) >= dart.notNull(startIndex) && dart.notNull(to) <= dart.notNull(endIndex));
      this[_stringSink].write(core.String.fromCharCodes(codeUnits, from, to));
    }).bind(this);
    dart.fn(addSingleBytes, intAndintTovoid());
    let i = startIndex;
    loop:
      while (true) {
        multibyte:
          if (dart.notNull(expectedUnits) > 0) {
            do {
              if (i == endIndex) {
                break loop;
              }
              let unit = codeUnits[dartx._get](i);
              if ((dart.notNull(unit) & 192) != 128) {
                expectedUnits = 0;
                if (!dart.test(this[_allowMalformed])) {
                  dart.throw(new core.FormatException(dart.str`Bad UTF-8 encoding 0x${unit[dartx.toRadixString](16)}`));
                }
                this[_isFirstCharacter] = false;
                this[_stringSink].writeCharCode(convert.UNICODE_REPLACEMENT_CHARACTER_RUNE);
                break multibyte;
              } else {
                value = (dart.notNull(value) << 6 | dart.notNull(unit) & 63) >>> 0;
                expectedUnits = dart.notNull(expectedUnits) - 1;
                i = dart.notNull(i) + 1;
              }
            } while (dart.notNull(expectedUnits) > 0);
            if (dart.notNull(value) <= dart.notNull(convert._Utf8Decoder._LIMITS[dartx._get](dart.notNull(extraUnits) - 1))) {
              if (!dart.test(this[_allowMalformed])) {
                dart.throw(new core.FormatException(dart.str`Overlong encoding of 0x${value[dartx.toRadixString](16)}`));
              }
              expectedUnits = extraUnits = 0;
              value = convert.UNICODE_REPLACEMENT_CHARACTER_RUNE;
            }
            if (dart.notNull(value) > convert._FOUR_BYTE_LIMIT) {
              if (!dart.test(this[_allowMalformed])) {
                dart.throw(new core.FormatException("Character outside valid Unicode range: " + dart.str`0x${value[dartx.toRadixString](16)}`));
              }
              value = convert.UNICODE_REPLACEMENT_CHARACTER_RUNE;
            }
            if (!dart.test(this[_isFirstCharacter]) || value != convert.UNICODE_BOM_CHARACTER_RUNE) {
              this[_stringSink].writeCharCode(value);
            }
            this[_isFirstCharacter] = false;
          }
        while (dart.notNull(i) < dart.notNull(endIndex)) {
          let oneBytes = scanOneByteCharacters(codeUnits, i);
          if (dart.notNull(oneBytes) > 0) {
            this[_isFirstCharacter] = false;
            addSingleBytes(i, dart.notNull(i) + dart.notNull(oneBytes));
            i = dart.notNull(i) + dart.notNull(oneBytes);
            if (i == endIndex) break;
          }
          let unit = codeUnits[dartx._get]((() => {
            let x = i;
            i = dart.notNull(x) + 1;
            return x;
          })());
          if (dart.notNull(unit) < 0) {
            if (!dart.test(this[_allowMalformed])) {
              dart.throw(new core.FormatException(dart.str`Negative UTF-8 code unit: -0x${(-dart.notNull(unit))[dartx.toRadixString](16)}`));
            }
            this[_stringSink].writeCharCode(convert.UNICODE_REPLACEMENT_CHARACTER_RUNE);
          } else {
            dart.assert(dart.notNull(unit) > convert._ONE_BYTE_LIMIT);
            if ((dart.notNull(unit) & 224) == 192) {
              value = dart.notNull(unit) & 31;
              expectedUnits = extraUnits = 1;
              continue loop;
            }
            if ((dart.notNull(unit) & 240) == 224) {
              value = dart.notNull(unit) & 15;
              expectedUnits = extraUnits = 2;
              continue loop;
            }
            if ((dart.notNull(unit) & 248) == 240 && dart.notNull(unit) < 245) {
              value = dart.notNull(unit) & 7;
              expectedUnits = extraUnits = 3;
              continue loop;
            }
            if (!dart.test(this[_allowMalformed])) {
              dart.throw(new core.FormatException(dart.str`Bad UTF-8 encoding 0x${unit[dartx.toRadixString](16)}`));
            }
            value = convert.UNICODE_REPLACEMENT_CHARACTER_RUNE;
            expectedUnits = extraUnits = 0;
            this[_isFirstCharacter] = false;
            this[_stringSink].writeCharCode(value);
          }
        }
        break loop;
      }
    if (dart.notNull(expectedUnits) > 0) {
      this[_value] = value;
      this[_expectedUnits] = expectedUnits;
      this[_extraUnits] = extraUnits;
    }
  }
};
dart.setSignature(convert._Utf8Decoder, {
  constructors: () => ({new: dart.definiteFunctionType(convert._Utf8Decoder, [core.StringSink, core.bool])}),
  fields: () => ({
    [_allowMalformed]: core.bool,
    [_stringSink]: core.StringSink,
    [_isFirstCharacter]: core.bool,
    [_value]: core.int,
    [_expectedUnits]: core.int,
    [_extraUnits]: core.int
  }),
  getters: () => ({hasPartialInput: dart.definiteFunctionType(core.bool, [])}),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    flush: dart.definiteFunctionType(dart.void, []),
    convert: dart.definiteFunctionType(dart.void, [ListOfint(), core.int, core.int])
  }),
  sfields: () => ({_LIMITS: ListOfint()})
});
convert._Utf8Decoder._LIMITS = dart.constList([convert._ONE_BYTE_LIMIT, convert._TWO_BYTE_LIMIT, convert._THREE_BYTE_LIMIT, convert._FOUR_BYTE_LIMIT], core.int);
core._symbolToString = function(symbol) {
  return _internal.Symbol.getName(_internal.Symbol._check(symbol));
};
dart.lazyFn(core._symbolToString, () => SymbolToString());
core.StrongModeError = class StrongModeError extends core.Error {
  new() {
    super.new();
  }
};
core.Deprecated = class Deprecated extends core.Object {
  new(expires) {
    this.expires = expires;
  }
  toString() {
    return dart.str`Deprecated feature. Will be removed ${this.expires}`;
  }
};
dart.setSignature(core.Deprecated, {
  constructors: () => ({new: dart.definiteFunctionType(core.Deprecated, [core.String])}),
  fields: () => ({expires: core.String})
});
core._Override = class _Override extends core.Object {
  new() {
  }
};
dart.setSignature(core._Override, {
  constructors: () => ({new: dart.definiteFunctionType(core._Override, [])})
});
core.deprecated = dart.const(new core.Deprecated("next release"));
core.override = dart.const(new core._Override());
core._Proxy = class _Proxy extends core.Object {
  new() {
  }
};
dart.setSignature(core._Proxy, {
  constructors: () => ({new: dart.definiteFunctionType(core._Proxy, [])})
});
core.proxy = dart.const(new core._Proxy());
dart.defineExtensionNames([
  'toString'
]);
core.bool = class bool extends core.Object {
  static fromEnvironment(name, opts) {
    let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : false;
    dart.throw(new core.UnsupportedError('bool.fromEnvironment can only be used as a const constructor'));
  }
  [dartx.toString]() {
    return this ? "true" : "false";
  }
};
core.bool.is = function is_bool(o) {
  return o === true || o === false;
};
core.bool.as = function as_bool(o) {
  if (o === true || o === false || o == null) return o;
  return dart.as(o, core.bool);
};
core.bool._check = function check_bool(o) {
  if (o === true || o === false || o == null) return o;
  return dart.check(o, core.bool);
};
dart.setSignature(core.bool, {
  constructors: () => ({fromEnvironment: dart.definiteFunctionType(core.bool, [core.String], {defaultValue: core.bool})})
});
core.Comparator$ = dart.generic(T => {
  const Comparator = dart.typedef('Comparator', () => dart.functionType(core.int, [T, T]));
  return Comparator;
});
core.Comparator = Comparator();
core.Comparable$ = dart.generic(T => {
  class Comparable extends core.Object {
    static compare(a, b) {
      return a[dartx.compareTo](b);
    }
  }
  dart.addTypeTests(Comparable);
  dart.setSignature(Comparable, {
    statics: () => ({compare: dart.definiteFunctionType(core.int, [core.Comparable, core.Comparable])}),
    names: ['compare']
  });
  return Comparable;
});
core.Comparable = Comparable();
const _value = Symbol('_value');
core.DateTime = class DateTime extends core.Object {
  new(year, month, day, hour, minute, second, millisecond, microsecond) {
    if (month === void 0) month = 1;
    if (day === void 0) day = 1;
    if (hour === void 0) hour = 0;
    if (minute === void 0) minute = 0;
    if (second === void 0) second = 0;
    if (millisecond === void 0) millisecond = 0;
    if (microsecond === void 0) microsecond = 0;
    DateTime.prototype._internal.call(this, year, month, day, hour, minute, second, millisecond, microsecond, false);
  }
  utc(year, month, day, hour, minute, second, millisecond, microsecond) {
    if (month === void 0) month = 1;
    if (day === void 0) day = 1;
    if (hour === void 0) hour = 0;
    if (minute === void 0) minute = 0;
    if (second === void 0) second = 0;
    if (millisecond === void 0) millisecond = 0;
    if (microsecond === void 0) microsecond = 0;
    DateTime.prototype._internal.call(this, year, month, day, hour, minute, second, millisecond, microsecond, true);
  }
  now() {
    DateTime.prototype._now.call(this);
  }
  static parse(formattedString) {
    let re = core.RegExp.new('^([+-]?\\d{4,6})-?(\\d\\d)-?(\\d\\d)' + '(?:[ T](\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d{1,6}))?)?)?' + '( ?[zZ]| ?([-+])(\\d\\d)(?::?(\\d\\d))?)?)?$');
    let match = re.firstMatch(formattedString);
    if (match != null) {
      function parseIntOrZero(matched) {
        if (matched == null) return 0;
        return core.int.parse(matched);
      }
      dart.fn(parseIntOrZero, StringToint());
      function parseMilliAndMicroseconds(matched) {
        if (matched == null) return 0;
        let length = matched[dartx.length];
        dart.assert(dart.notNull(length) >= 1);
        dart.assert(dart.notNull(length) <= 6);
        let result = 0;
        for (let i = 0; i < 6; i++) {
          result = result * 10;
          if (i < dart.notNull(matched[dartx.length])) {
            result = result + ((dart.notNull(matched[dartx.codeUnitAt](i)) ^ 48) >>> 0);
          }
        }
        return result;
      }
      dart.fn(parseMilliAndMicroseconds, StringToint());
      let years = core.int.parse(match._get(1));
      let month = core.int.parse(match._get(2));
      let day = core.int.parse(match._get(3));
      let hour = parseIntOrZero(match._get(4));
      let minute = parseIntOrZero(match._get(5));
      let second = parseIntOrZero(match._get(6));
      let addOneMillisecond = false;
      let milliAndMicroseconds = parseMilliAndMicroseconds(match._get(7));
      let millisecond = (dart.notNull(milliAndMicroseconds) / core.Duration.MICROSECONDS_PER_MILLISECOND)[dartx.truncate]();
      let microsecond = dart.asInt(milliAndMicroseconds[dartx.remainder](core.Duration.MICROSECONDS_PER_MILLISECOND));
      let isUtc = false;
      if (match._get(8) != null) {
        isUtc = true;
        if (match._get(9) != null) {
          let sign = match._get(9) == '-' ? -1 : 1;
          let hourDifference = core.int.parse(match._get(10));
          let minuteDifference = parseIntOrZero(match._get(11));
          minuteDifference = dart.notNull(minuteDifference) + 60 * dart.notNull(hourDifference);
          minute = dart.notNull(minute) - sign * dart.notNull(minuteDifference);
        }
      }
      let value = core.DateTime._brokenDownDateToValue(years, month, day, hour, minute, second, millisecond, microsecond, isUtc);
      if (value == null) {
        dart.throw(new core.FormatException("Time out of range", formattedString));
      }
      return new core.DateTime._withValue(value, {isUtc: isUtc});
    } else {
      dart.throw(new core.FormatException("Invalid date format", formattedString));
    }
  }
  fromMillisecondsSinceEpoch(millisecondsSinceEpoch, opts) {
    let isUtc = opts && 'isUtc' in opts ? opts.isUtc : false;
    DateTime.prototype._withValue.call(this, millisecondsSinceEpoch, {isUtc: isUtc});
  }
  fromMicrosecondsSinceEpoch(microsecondsSinceEpoch, opts) {
    let isUtc = opts && 'isUtc' in opts ? opts.isUtc : false;
    DateTime.prototype._withValue.call(this, core.DateTime._microsecondInRoundedMilliseconds(microsecondsSinceEpoch), {isUtc: isUtc});
  }
  _withValue(value, opts) {
    let isUtc = opts && 'isUtc' in opts ? opts.isUtc : null;
    this[_value] = value;
    this.isUtc = isUtc;
    if (dart.notNull(this.millisecondsSinceEpoch[dartx.abs]()) > core.DateTime._MAX_MILLISECONDS_SINCE_EPOCH || this.millisecondsSinceEpoch[dartx.abs]() == core.DateTime._MAX_MILLISECONDS_SINCE_EPOCH && this.microsecond != 0) {
      dart.throw(new core.ArgumentError(this.millisecondsSinceEpoch));
    }
    if (this.isUtc == null) dart.throw(new core.ArgumentError(this.isUtc));
  }
  ['=='](other) {
    if (!core.DateTime.is(other)) return false;
    return dart.equals(this[_value], dart.dload(other, _value)) && dart.equals(this.isUtc, dart.dload(other, 'isUtc'));
  }
  isBefore(other) {
    return dart.notNull(this[_value]) < dart.notNull(other[_value]);
  }
  isAfter(other) {
    return dart.notNull(this[_value]) > dart.notNull(other[_value]);
  }
  isAtSameMomentAs(other) {
    return this[_value] == other[_value];
  }
  compareTo(other) {
    return this[_value][dartx.compareTo](other[_value]);
  }
  get hashCode() {
    return (dart.notNull(this[_value]) ^ this[_value][dartx['>>']](30)) & 1073741823;
  }
  toLocal() {
    if (dart.test(this.isUtc)) {
      return new core.DateTime._withValue(this[_value], {isUtc: false});
    }
    return this;
  }
  toUtc() {
    if (dart.test(this.isUtc)) return this;
    return new core.DateTime._withValue(this[_value], {isUtc: true});
  }
  static _fourDigits(n) {
    let absN = n[dartx.abs]();
    let sign = dart.notNull(n) < 0 ? "-" : "";
    if (dart.notNull(absN) >= 1000) return dart.str`${n}`;
    if (dart.notNull(absN) >= 100) return dart.str`${sign}0${absN}`;
    if (dart.notNull(absN) >= 10) return dart.str`${sign}00${absN}`;
    return dart.str`${sign}000${absN}`;
  }
  static _sixDigits(n) {
    dart.assert(dart.notNull(n) < -9999 || dart.notNull(n) > 9999);
    let absN = n[dartx.abs]();
    let sign = dart.notNull(n) < 0 ? "-" : "+";
    if (dart.notNull(absN) >= 100000) return dart.str`${sign}${absN}`;
    return dart.str`${sign}0${absN}`;
  }
  static _threeDigits(n) {
    if (dart.notNull(n) >= 100) return dart.str`${n}`;
    if (dart.notNull(n) >= 10) return dart.str`0${n}`;
    return dart.str`00${n}`;
  }
  static _twoDigits(n) {
    if (dart.notNull(n) >= 10) return dart.str`${n}`;
    return dart.str`0${n}`;
  }
  toString() {
    let y = core.DateTime._fourDigits(this.year);
    let m = core.DateTime._twoDigits(this.month);
    let d = core.DateTime._twoDigits(this.day);
    let h = core.DateTime._twoDigits(this.hour);
    let min = core.DateTime._twoDigits(this.minute);
    let sec = core.DateTime._twoDigits(this.second);
    let ms = core.DateTime._threeDigits(this.millisecond);
    let us = this.microsecond == 0 ? "" : core.DateTime._threeDigits(this.microsecond);
    if (dart.test(this.isUtc)) {
      return dart.str`${y}-${m}-${d} ${h}:${min}:${sec}.${ms}${us}Z`;
    } else {
      return dart.str`${y}-${m}-${d} ${h}:${min}:${sec}.${ms}${us}`;
    }
  }
  toIso8601String() {
    let y = dart.notNull(this.year) >= -9999 && dart.notNull(this.year) <= 9999 ? core.DateTime._fourDigits(this.year) : core.DateTime._sixDigits(this.year);
    let m = core.DateTime._twoDigits(this.month);
    let d = core.DateTime._twoDigits(this.day);
    let h = core.DateTime._twoDigits(this.hour);
    let min = core.DateTime._twoDigits(this.minute);
    let sec = core.DateTime._twoDigits(this.second);
    let ms = core.DateTime._threeDigits(this.millisecond);
    let us = this.microsecond == 0 ? "" : core.DateTime._threeDigits(this.microsecond);
    if (dart.test(this.isUtc)) {
      return dart.str`${y}-${m}-${d}T${h}:${min}:${sec}.${ms}${us}Z`;
    } else {
      return dart.str`${y}-${m}-${d}T${h}:${min}:${sec}.${ms}${us}`;
    }
  }
  add(duration) {
    return new core.DateTime._withValue(dart.notNull(this[_value]) + dart.notNull(duration.inMilliseconds), {isUtc: this.isUtc});
  }
  subtract(duration) {
    return new core.DateTime._withValue(dart.notNull(this[_value]) - dart.notNull(duration.inMilliseconds), {isUtc: this.isUtc});
  }
  difference(other) {
    return new core.Duration({milliseconds: dart.notNull(this[_value]) - dart.notNull(other[_value])});
  }
  _internal(year, month, day, hour, minute, second, millisecond, microsecond, isUtc) {
    this.isUtc = typeof isUtc == 'boolean' ? isUtc : dart.throw(new core.ArgumentError.value(isUtc, 'isUtc'));
    this[_value] = core.int._check(_js_helper.checkInt(_js_helper.Primitives.valueFromDecomposedDate(year, month, day, hour, minute, second, dart.notNull(millisecond) + dart.notNull(core.DateTime._microsecondInRoundedMilliseconds(microsecond)), isUtc)));
  }
  _now() {
    this.isUtc = false;
    this[_value] = _js_helper.Primitives.dateNow();
  }
  static _brokenDownDateToValue(year, month, day, hour, minute, second, millisecond, microsecond, isUtc) {
    return dart.asInt(_js_helper.Primitives.valueFromDecomposedDate(year, month, day, hour, minute, second, dart.notNull(millisecond) + dart.notNull(core.DateTime._microsecondInRoundedMilliseconds(microsecond)), isUtc));
  }
  get millisecondsSinceEpoch() {
    return this[_value];
  }
  get microsecondsSinceEpoch() {
    return dart.notNull(this[_value]) * 1000;
  }
  get timeZoneName() {
    if (dart.test(this.isUtc)) return "UTC";
    return _js_helper.Primitives.getTimeZoneName(this);
  }
  get timeZoneOffset() {
    if (dart.test(this.isUtc)) return new core.Duration();
    return new core.Duration({minutes: _js_helper.Primitives.getTimeZoneOffsetInMinutes(this)});
  }
  get year() {
    return core.int._check(_js_helper.Primitives.getYear(this));
  }
  get month() {
    return core.int._check(_js_helper.Primitives.getMonth(this));
  }
  get day() {
    return core.int._check(_js_helper.Primitives.getDay(this));
  }
  get hour() {
    return core.int._check(_js_helper.Primitives.getHours(this));
  }
  get minute() {
    return core.int._check(_js_helper.Primitives.getMinutes(this));
  }
  get second() {
    return core.int._check(_js_helper.Primitives.getSeconds(this));
  }
  get millisecond() {
    return core.int._check(_js_helper.Primitives.getMilliseconds(this));
  }
  get microsecond() {
    return 0;
  }
  get weekday() {
    return core.int._check(_js_helper.Primitives.getWeekday(this));
  }
  static _microsecondInRoundedMilliseconds(microsecond) {
    return (dart.notNull(microsecond) / 1000)[dartx.round]();
  }
};
dart.defineNamedConstructor(core.DateTime, 'utc');
dart.defineNamedConstructor(core.DateTime, 'now');
dart.defineNamedConstructor(core.DateTime, 'fromMillisecondsSinceEpoch');
dart.defineNamedConstructor(core.DateTime, 'fromMicrosecondsSinceEpoch');
dart.defineNamedConstructor(core.DateTime, '_withValue');
dart.defineNamedConstructor(core.DateTime, '_internal');
dart.defineNamedConstructor(core.DateTime, '_now');
core.DateTime[dart.implements] = () => [ComparableOfDateTime()];
dart.setSignature(core.DateTime, {
  constructors: () => ({
    new: dart.definiteFunctionType(core.DateTime, [core.int], [core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    utc: dart.definiteFunctionType(core.DateTime, [core.int], [core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    now: dart.definiteFunctionType(core.DateTime, []),
    fromMillisecondsSinceEpoch: dart.definiteFunctionType(core.DateTime, [core.int], {isUtc: core.bool}),
    fromMicrosecondsSinceEpoch: dart.definiteFunctionType(core.DateTime, [core.int], {isUtc: core.bool}),
    _withValue: dart.definiteFunctionType(core.DateTime, [core.int], {isUtc: core.bool}),
    _internal: dart.definiteFunctionType(core.DateTime, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.bool]),
    _now: dart.definiteFunctionType(core.DateTime, [])
  }),
  fields: () => ({
    [_value]: core.int,
    isUtc: core.bool
  }),
  getters: () => ({
    millisecondsSinceEpoch: dart.definiteFunctionType(core.int, []),
    microsecondsSinceEpoch: dart.definiteFunctionType(core.int, []),
    timeZoneName: dart.definiteFunctionType(core.String, []),
    timeZoneOffset: dart.definiteFunctionType(core.Duration, []),
    year: dart.definiteFunctionType(core.int, []),
    month: dart.definiteFunctionType(core.int, []),
    day: dart.definiteFunctionType(core.int, []),
    hour: dart.definiteFunctionType(core.int, []),
    minute: dart.definiteFunctionType(core.int, []),
    second: dart.definiteFunctionType(core.int, []),
    millisecond: dart.definiteFunctionType(core.int, []),
    microsecond: dart.definiteFunctionType(core.int, []),
    weekday: dart.definiteFunctionType(core.int, [])
  }),
  methods: () => ({
    isBefore: dart.definiteFunctionType(core.bool, [core.DateTime]),
    isAfter: dart.definiteFunctionType(core.bool, [core.DateTime]),
    isAtSameMomentAs: dart.definiteFunctionType(core.bool, [core.DateTime]),
    compareTo: dart.definiteFunctionType(core.int, [core.DateTime]),
    toLocal: dart.definiteFunctionType(core.DateTime, []),
    toUtc: dart.definiteFunctionType(core.DateTime, []),
    toIso8601String: dart.definiteFunctionType(core.String, []),
    add: dart.definiteFunctionType(core.DateTime, [core.Duration]),
    subtract: dart.definiteFunctionType(core.DateTime, [core.Duration]),
    difference: dart.definiteFunctionType(core.Duration, [core.DateTime])
  }),
  sfields: () => ({
    MONDAY: core.int,
    TUESDAY: core.int,
    WEDNESDAY: core.int,
    THURSDAY: core.int,
    FRIDAY: core.int,
    SATURDAY: core.int,
    SUNDAY: core.int,
    DAYS_PER_WEEK: core.int,
    JANUARY: core.int,
    FEBRUARY: core.int,
    MARCH: core.int,
    APRIL: core.int,
    MAY: core.int,
    JUNE: core.int,
    JULY: core.int,
    AUGUST: core.int,
    SEPTEMBER: core.int,
    OCTOBER: core.int,
    NOVEMBER: core.int,
    DECEMBER: core.int,
    MONTHS_PER_YEAR: core.int,
    _MAX_MILLISECONDS_SINCE_EPOCH: core.int
  }),
  statics: () => ({
    parse: dart.definiteFunctionType(core.DateTime, [core.String]),
    _fourDigits: dart.definiteFunctionType(core.String, [core.int]),
    _sixDigits: dart.definiteFunctionType(core.String, [core.int]),
    _threeDigits: dart.definiteFunctionType(core.String, [core.int]),
    _twoDigits: dart.definiteFunctionType(core.String, [core.int]),
    _brokenDownDateToValue: dart.definiteFunctionType(core.int, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.bool]),
    _microsecondInRoundedMilliseconds: dart.definiteFunctionType(core.int, [core.int])
  }),
  names: ['parse', '_fourDigits', '_sixDigits', '_threeDigits', '_twoDigits', '_brokenDownDateToValue', '_microsecondInRoundedMilliseconds']
});
dart.defineExtensionMembers(core.DateTime, ['compareTo']);
core.DateTime.MONDAY = 1;
core.DateTime.TUESDAY = 2;
core.DateTime.WEDNESDAY = 3;
core.DateTime.THURSDAY = 4;
core.DateTime.FRIDAY = 5;
core.DateTime.SATURDAY = 6;
core.DateTime.SUNDAY = 7;
core.DateTime.DAYS_PER_WEEK = 7;
core.DateTime.JANUARY = 1;
core.DateTime.FEBRUARY = 2;
core.DateTime.MARCH = 3;
core.DateTime.APRIL = 4;
core.DateTime.MAY = 5;
core.DateTime.JUNE = 6;
core.DateTime.JULY = 7;
core.DateTime.AUGUST = 8;
core.DateTime.SEPTEMBER = 9;
core.DateTime.OCTOBER = 10;
core.DateTime.NOVEMBER = 11;
core.DateTime.DECEMBER = 12;
core.DateTime.MONTHS_PER_YEAR = 12;
core.DateTime._MAX_MILLISECONDS_SINCE_EPOCH = 8640000000000000;
const _duration = Symbol('_duration');
core.Duration = class Duration extends core.Object {
  new(opts) {
    let days = opts && 'days' in opts ? opts.days : 0;
    let hours = opts && 'hours' in opts ? opts.hours : 0;
    let minutes = opts && 'minutes' in opts ? opts.minutes : 0;
    let seconds = opts && 'seconds' in opts ? opts.seconds : 0;
    let milliseconds = opts && 'milliseconds' in opts ? opts.milliseconds : 0;
    let microseconds = opts && 'microseconds' in opts ? opts.microseconds : 0;
    Duration.prototype._microseconds.call(this, core.Duration.MICROSECONDS_PER_DAY * dart.notNull(days) + core.Duration.MICROSECONDS_PER_HOUR * dart.notNull(hours) + core.Duration.MICROSECONDS_PER_MINUTE * dart.notNull(minutes) + core.Duration.MICROSECONDS_PER_SECOND * dart.notNull(seconds) + core.Duration.MICROSECONDS_PER_MILLISECOND * dart.notNull(milliseconds) + dart.notNull(microseconds));
  }
  _microseconds(duration) {
    this[_duration] = duration;
  }
  ['+'](other) {
    return new core.Duration._microseconds(dart.notNull(this[_duration]) + dart.notNull(other[_duration]));
  }
  ['-'](other) {
    return new core.Duration._microseconds(dart.notNull(this[_duration]) - dart.notNull(other[_duration]));
  }
  ['*'](factor) {
    return new core.Duration._microseconds((dart.notNull(this[_duration]) * dart.notNull(factor))[dartx.round]());
  }
  ['~/'](quotient) {
    if (quotient == 0) dart.throw(new core.IntegerDivisionByZeroException());
    return new core.Duration._microseconds((dart.notNull(this[_duration]) / dart.notNull(quotient))[dartx.truncate]());
  }
  ['<'](other) {
    return dart.notNull(this[_duration]) < dart.notNull(other[_duration]);
  }
  ['>'](other) {
    return dart.notNull(this[_duration]) > dart.notNull(other[_duration]);
  }
  ['<='](other) {
    return dart.notNull(this[_duration]) <= dart.notNull(other[_duration]);
  }
  ['>='](other) {
    return dart.notNull(this[_duration]) >= dart.notNull(other[_duration]);
  }
  get inDays() {
    return (dart.notNull(this[_duration]) / core.Duration.MICROSECONDS_PER_DAY)[dartx.truncate]();
  }
  get inHours() {
    return (dart.notNull(this[_duration]) / core.Duration.MICROSECONDS_PER_HOUR)[dartx.truncate]();
  }
  get inMinutes() {
    return (dart.notNull(this[_duration]) / core.Duration.MICROSECONDS_PER_MINUTE)[dartx.truncate]();
  }
  get inSeconds() {
    return (dart.notNull(this[_duration]) / core.Duration.MICROSECONDS_PER_SECOND)[dartx.truncate]();
  }
  get inMilliseconds() {
    return (dart.notNull(this[_duration]) / core.Duration.MICROSECONDS_PER_MILLISECOND)[dartx.truncate]();
  }
  get inMicroseconds() {
    return this[_duration];
  }
  ['=='](other) {
    if (!core.Duration.is(other)) return false;
    return dart.equals(this[_duration], dart.dload(other, _duration));
  }
  get hashCode() {
    return dart.hashCode(this[_duration]);
  }
  compareTo(other) {
    return this[_duration][dartx.compareTo](other[_duration]);
  }
  toString() {
    function sixDigits(n) {
      if (dart.notNull(n) >= 100000) return dart.str`${n}`;
      if (dart.notNull(n) >= 10000) return dart.str`0${n}`;
      if (dart.notNull(n) >= 1000) return dart.str`00${n}`;
      if (dart.notNull(n) >= 100) return dart.str`000${n}`;
      if (dart.notNull(n) >= 10) return dart.str`0000${n}`;
      return dart.str`00000${n}`;
    }
    dart.fn(sixDigits, intToString());
    function twoDigits(n) {
      if (dart.notNull(n) >= 10) return dart.str`${n}`;
      return dart.str`0${n}`;
    }
    dart.fn(twoDigits, intToString());
    if (dart.notNull(this.inMicroseconds) < 0) {
      return dart.str`-${this._negate()}`;
    }
    let twoDigitMinutes = twoDigits(dart.asInt(this.inMinutes[dartx.remainder](core.Duration.MINUTES_PER_HOUR)));
    let twoDigitSeconds = twoDigits(dart.asInt(this.inSeconds[dartx.remainder](core.Duration.SECONDS_PER_MINUTE)));
    let sixDigitUs = sixDigits(dart.asInt(this.inMicroseconds[dartx.remainder](core.Duration.MICROSECONDS_PER_SECOND)));
    return dart.str`${this.inHours}:${twoDigitMinutes}:${twoDigitSeconds}.${sixDigitUs}`;
  }
  get isNegative() {
    return dart.notNull(this[_duration]) < 0;
  }
  abs() {
    return new core.Duration._microseconds(this[_duration][dartx.abs]());
  }
  _negate() {
    return new core.Duration._microseconds(-dart.notNull(this[_duration]));
  }
};
dart.defineNamedConstructor(core.Duration, '_microseconds');
core.Duration[dart.implements] = () => [ComparableOfDuration()];
dart.setSignature(core.Duration, {
  constructors: () => ({
    new: dart.definiteFunctionType(core.Duration, [], {days: core.int, hours: core.int, minutes: core.int, seconds: core.int, milliseconds: core.int, microseconds: core.int}),
    _microseconds: dart.definiteFunctionType(core.Duration, [core.int])
  }),
  fields: () => ({[_duration]: core.int}),
  getters: () => ({
    inDays: dart.definiteFunctionType(core.int, []),
    inHours: dart.definiteFunctionType(core.int, []),
    inMinutes: dart.definiteFunctionType(core.int, []),
    inSeconds: dart.definiteFunctionType(core.int, []),
    inMilliseconds: dart.definiteFunctionType(core.int, []),
    inMicroseconds: dart.definiteFunctionType(core.int, []),
    isNegative: dart.definiteFunctionType(core.bool, [])
  }),
  methods: () => ({
    '+': dart.definiteFunctionType(core.Duration, [core.Duration]),
    '-': dart.definiteFunctionType(core.Duration, [core.Duration]),
    '*': dart.definiteFunctionType(core.Duration, [core.num]),
    '~/': dart.definiteFunctionType(core.Duration, [core.int]),
    '<': dart.definiteFunctionType(core.bool, [core.Duration]),
    '>': dart.definiteFunctionType(core.bool, [core.Duration]),
    '<=': dart.definiteFunctionType(core.bool, [core.Duration]),
    '>=': dart.definiteFunctionType(core.bool, [core.Duration]),
    compareTo: dart.definiteFunctionType(core.int, [core.Duration]),
    abs: dart.definiteFunctionType(core.Duration, []),
    _negate: dart.definiteFunctionType(core.Duration, [])
  }),
  sfields: () => ({
    MICROSECONDS_PER_MILLISECOND: core.int,
    MILLISECONDS_PER_SECOND: core.int,
    SECONDS_PER_MINUTE: core.int,
    MINUTES_PER_HOUR: core.int,
    HOURS_PER_DAY: core.int,
    MICROSECONDS_PER_SECOND: core.int,
    MICROSECONDS_PER_MINUTE: core.int,
    MICROSECONDS_PER_HOUR: core.int,
    MICROSECONDS_PER_DAY: core.int,
    MILLISECONDS_PER_MINUTE: core.int,
    MILLISECONDS_PER_HOUR: core.int,
    MILLISECONDS_PER_DAY: core.int,
    SECONDS_PER_HOUR: core.int,
    SECONDS_PER_DAY: core.int,
    MINUTES_PER_DAY: core.int,
    ZERO: core.Duration
  })
});
dart.defineExtensionMembers(core.Duration, ['compareTo']);
core.Duration.MICROSECONDS_PER_MILLISECOND = 1000;
core.Duration.MILLISECONDS_PER_SECOND = 1000;
core.Duration.SECONDS_PER_MINUTE = 60;
core.Duration.MINUTES_PER_HOUR = 60;
core.Duration.HOURS_PER_DAY = 24;
dart.defineLazy(core.Duration, {
  get MICROSECONDS_PER_SECOND() {
    return core.Duration.MICROSECONDS_PER_MILLISECOND * core.Duration.MILLISECONDS_PER_SECOND;
  },
  get MICROSECONDS_PER_MINUTE() {
    return core.Duration.MICROSECONDS_PER_SECOND * core.Duration.SECONDS_PER_MINUTE;
  },
  get MICROSECONDS_PER_HOUR() {
    return core.Duration.MICROSECONDS_PER_MINUTE * core.Duration.MINUTES_PER_HOUR;
  },
  get MICROSECONDS_PER_DAY() {
    return core.Duration.MICROSECONDS_PER_HOUR * core.Duration.HOURS_PER_DAY;
  },
  get MILLISECONDS_PER_MINUTE() {
    return core.Duration.MILLISECONDS_PER_SECOND * core.Duration.SECONDS_PER_MINUTE;
  },
  get MILLISECONDS_PER_HOUR() {
    return core.Duration.MILLISECONDS_PER_MINUTE * core.Duration.MINUTES_PER_HOUR;
  },
  get MILLISECONDS_PER_DAY() {
    return core.Duration.MILLISECONDS_PER_HOUR * core.Duration.HOURS_PER_DAY;
  },
  get SECONDS_PER_HOUR() {
    return core.Duration.SECONDS_PER_MINUTE * core.Duration.MINUTES_PER_HOUR;
  },
  get SECONDS_PER_DAY() {
    return core.Duration.SECONDS_PER_HOUR * core.Duration.HOURS_PER_DAY;
  },
  get MINUTES_PER_DAY() {
    return core.Duration.MINUTES_PER_HOUR * core.Duration.HOURS_PER_DAY;
  },
  get ZERO() {
    return dart.const(new core.Duration({seconds: 0}));
  }
});
core.TypeError = class TypeError extends core.AssertionError {
  new() {
    super.new();
  }
};
core.CastError = class CastError extends core.Error {
  new() {
    super.new();
  }
};
core.NullThrownError = class NullThrownError extends core.Error {
  new() {
    super.new();
  }
  toString() {
    return "Throw of null.";
  }
};
const _hasValue = Symbol('_hasValue');
const _errorName = Symbol('_errorName');
const _errorExplanation = Symbol('_errorExplanation');
core.ArgumentError = class ArgumentError extends core.Error {
  new(message) {
    if (message === void 0) message = null;
    this.message = message;
    this.invalidValue = null;
    this[_hasValue] = false;
    this.name = null;
    super.new();
  }
  value(value, name, message) {
    if (name === void 0) name = null;
    if (message === void 0) message = null;
    this.name = name;
    this.message = message;
    this.invalidValue = value;
    this[_hasValue] = true;
    super.new();
  }
  notNull(name) {
    if (name === void 0) name = null;
    this.name = name;
    this[_hasValue] = false;
    this.message = "Must not be null";
    this.invalidValue = null;
    super.new();
  }
  get [_errorName]() {
    return dart.str`Invalid argument${!dart.test(this[_hasValue]) ? "(s)" : ""}`;
  }
  get [_errorExplanation]() {
    return "";
  }
  toString() {
    let nameString = "";
    if (this.name != null) {
      nameString = dart.str` (${this.name})`;
    }
    let message = this.message == null ? "" : dart.str`: ${this.message}`;
    let prefix = dart.str`${this[_errorName]}${nameString}${message}`;
    if (!dart.test(this[_hasValue])) return prefix;
    let explanation = this[_errorExplanation];
    let errorValue = core.Error.safeToString(this.invalidValue);
    return dart.str`${prefix}${explanation}: ${errorValue}`;
  }
};
dart.defineNamedConstructor(core.ArgumentError, 'value');
dart.defineNamedConstructor(core.ArgumentError, 'notNull');
dart.setSignature(core.ArgumentError, {
  constructors: () => ({
    new: dart.definiteFunctionType(core.ArgumentError, [], [dart.dynamic]),
    value: dart.definiteFunctionType(core.ArgumentError, [dart.dynamic], [core.String, core.String]),
    notNull: dart.definiteFunctionType(core.ArgumentError, [], [core.String])
  }),
  fields: () => ({
    [_hasValue]: core.bool,
    invalidValue: dart.dynamic,
    name: core.String,
    message: dart.dynamic
  }),
  getters: () => ({
    [_errorName]: dart.definiteFunctionType(core.String, []),
    [_errorExplanation]: dart.definiteFunctionType(core.String, [])
  })
});
core.RangeError = class RangeError extends core.ArgumentError {
  new(message) {
    this.start = null;
    this.end = null;
    super.new(message);
  }
  value(value, name, message) {
    if (name === void 0) name = null;
    if (message === void 0) message = null;
    this.start = null;
    this.end = null;
    super.value(value, name, message != null ? message : "Value not in range");
  }
  range(invalidValue, minValue, maxValue, name, message) {
    if (name === void 0) name = null;
    if (message === void 0) message = null;
    this.start = minValue;
    this.end = maxValue;
    super.value(invalidValue, name, message != null ? message : "Invalid value");
  }
  static index(index, indexable, name, message, length) {
    return new core.IndexError(index, indexable, name, message, length);
  }
  static checkValueInInterval(value, minValue, maxValue, name, message) {
    if (name === void 0) name = null;
    if (message === void 0) message = null;
    if (dart.notNull(value) < dart.notNull(minValue) || dart.notNull(value) > dart.notNull(maxValue)) {
      dart.throw(new core.RangeError.range(value, minValue, maxValue, name, message));
    }
  }
  static checkValidIndex(index, indexable, name, length, message) {
    if (name === void 0) name = null;
    if (length === void 0) length = null;
    if (message === void 0) message = null;
    if (length == null) length = core.int._check(dart.dload(indexable, 'length'));
    if (0 > dart.notNull(index) || dart.notNull(index) >= dart.notNull(length)) {
      if (name == null) name = "index";
      dart.throw(core.RangeError.index(index, indexable, name, message, length));
    }
  }
  static checkValidRange(start, end, length, startName, endName, message) {
    if (startName === void 0) startName = null;
    if (endName === void 0) endName = null;
    if (message === void 0) message = null;
    if (0 > dart.notNull(start) || dart.notNull(start) > dart.notNull(length)) {
      if (startName == null) startName = "start";
      dart.throw(new core.RangeError.range(start, 0, length, startName, message));
    }
    if (end != null) {
      if (dart.notNull(start) > dart.notNull(end) || dart.notNull(end) > dart.notNull(length)) {
        if (endName == null) endName = "end";
        dart.throw(new core.RangeError.range(end, start, length, endName, message));
      }
      return end;
    }
    return length;
  }
  static checkNotNegative(value, name, message) {
    if (name === void 0) name = null;
    if (message === void 0) message = null;
    if (dart.notNull(value) < 0) dart.throw(new core.RangeError.range(value, 0, null, name, message));
  }
  get [_errorName]() {
    return "RangeError";
  }
  get [_errorExplanation]() {
    dart.assert(this[_hasValue]);
    let explanation = "";
    if (this.start == null) {
      if (this.end != null) {
        explanation = dart.str`: Not less than or equal to ${this.end}`;
      }
    } else if (this.end == null) {
      explanation = dart.str`: Not greater than or equal to ${this.start}`;
    } else if (dart.notNull(this.end) > dart.notNull(this.start)) {
      explanation = dart.str`: Not in range ${this.start}..${this.end}, inclusive`;
    } else if (dart.notNull(this.end) < dart.notNull(this.start)) {
      explanation = ": Valid value range is empty";
    } else {
      explanation = dart.str`: Only valid value is ${this.start}`;
    }
    return explanation;
  }
};
dart.defineNamedConstructor(core.RangeError, 'value');
dart.defineNamedConstructor(core.RangeError, 'range');
dart.setSignature(core.RangeError, {
  constructors: () => ({
    new: dart.definiteFunctionType(core.RangeError, [dart.dynamic]),
    value: dart.definiteFunctionType(core.RangeError, [core.num], [core.String, core.String]),
    range: dart.definiteFunctionType(core.RangeError, [core.num, core.int, core.int], [core.String, core.String]),
    index: dart.definiteFunctionType(core.RangeError, [core.int, dart.dynamic], [core.String, core.String, core.int])
  }),
  fields: () => ({
    start: core.num,
    end: core.num
  }),
  statics: () => ({
    checkValueInInterval: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int], [core.String, core.String]),
    checkValidIndex: dart.definiteFunctionType(dart.void, [core.int, dart.dynamic], [core.String, core.int, core.String]),
    checkValidRange: dart.definiteFunctionType(core.int, [core.int, core.int, core.int], [core.String, core.String, core.String]),
    checkNotNegative: dart.definiteFunctionType(dart.void, [core.int], [core.String, core.String])
  }),
  names: ['checkValueInInterval', 'checkValidIndex', 'checkValidRange', 'checkNotNegative']
});
core.IndexError = class IndexError extends core.ArgumentError {
  new(invalidValue, indexable, name, message, length) {
    if (name === void 0) name = null;
    if (message === void 0) message = null;
    if (length === void 0) length = null;
    this.indexable = indexable;
    this.length = core.int._check(length != null ? length : dart.dload(indexable, 'length'));
    super.value(invalidValue, name, message != null ? message : "Index out of range");
  }
  get start() {
    return 0;
  }
  get end() {
    return dart.notNull(this.length) - 1;
  }
  get [_errorName]() {
    return "RangeError";
  }
  get [_errorExplanation]() {
    dart.assert(this[_hasValue]);
    if (dart.test(dart.dsend(this.invalidValue, '<', 0))) {
      return ": index must not be negative";
    }
    if (this.length == 0) {
      return ": no indices are valid";
    }
    return dart.str`: index should be less than ${this.length}`;
  }
};
core.IndexError[dart.implements] = () => [core.RangeError];
dart.setSignature(core.IndexError, {
  constructors: () => ({new: dart.definiteFunctionType(core.IndexError, [core.int, dart.dynamic], [core.String, core.String, core.int])}),
  fields: () => ({
    indexable: dart.dynamic,
    length: core.int
  }),
  getters: () => ({
    start: dart.definiteFunctionType(core.int, []),
    end: dart.definiteFunctionType(core.int, [])
  })
});
const _className = Symbol('_className');
core.AbstractClassInstantiationError = class AbstractClassInstantiationError extends core.Error {
  new(className) {
    this[_className] = className;
    super.new();
  }
  toString() {
    return dart.str`Cannot instantiate abstract class: '${this[_className]}'`;
  }
};
dart.setSignature(core.AbstractClassInstantiationError, {
  constructors: () => ({new: dart.definiteFunctionType(core.AbstractClassInstantiationError, [core.String])}),
  fields: () => ({[_className]: core.String})
});
const _receiver = Symbol('_receiver');
const _memberName = Symbol('_memberName');
const _arguments = Symbol('_arguments');
const _namedArguments = Symbol('_namedArguments');
const _existingArgumentNames = Symbol('_existingArgumentNames');
core.NoSuchMethodError = class NoSuchMethodError extends core.Error {
  new(receiver, memberName, positionalArguments, namedArguments, existingArgumentNames) {
    if (existingArgumentNames === void 0) existingArgumentNames = null;
    this[_receiver] = receiver;
    this[_memberName] = memberName;
    this[_arguments] = positionalArguments;
    this[_namedArguments] = namedArguments;
    this[_existingArgumentNames] = existingArgumentNames;
    super.new();
  }
  toString() {
    let sb = new core.StringBuffer();
    let i = 0;
    if (this[_arguments] != null) {
      for (; i < dart.notNull(this[_arguments][dartx.length]); i++) {
        if (i > 0) {
          sb.write(", ");
        }
        sb.write(core.Error.safeToString(this[_arguments][dartx._get](i)));
      }
    }
    if (this[_namedArguments] != null) {
      this[_namedArguments][dartx.forEach](dart.fn((key, value) => {
        if (i > 0) {
          sb.write(", ");
        }
        sb.write(core._symbolToString(key));
        sb.write(": ");
        sb.write(core.Error.safeToString(value));
        i++;
      }, SymbolAnddynamicTovoid()));
    }
    if (this[_existingArgumentNames] == null) {
      return dart.str`NoSuchMethodError : method not found: '${this[_memberName]}'\n` + dart.str`Receiver: ${core.Error.safeToString(this[_receiver])}\n` + dart.str`Arguments: [${sb}]`;
    } else {
      let actualParameters = sb.toString();
      sb = new core.StringBuffer();
      for (let i = 0; i < dart.notNull(this[_existingArgumentNames][dartx.length]); i++) {
        if (i > 0) {
          sb.write(", ");
        }
        sb.write(this[_existingArgumentNames][dartx._get](i));
      }
      let formalParameters = sb.toString();
      return "NoSuchMethodError: incorrect number of arguments passed to " + dart.str`method named '${this[_memberName]}'\n` + dart.str`Receiver: ${core.Error.safeToString(this[_receiver])}\n` + dart.str`Tried calling: ${this[_memberName]}(${actualParameters})\n` + dart.str`Found: ${this[_memberName]}(${formalParameters})`;
    }
  }
};
dart.setSignature(core.NoSuchMethodError, {
  constructors: () => ({new: dart.definiteFunctionType(core.NoSuchMethodError, [core.Object, core.Symbol, core.List, MapOfSymbol$dynamic()], [core.List])}),
  fields: () => ({
    [_receiver]: core.Object,
    [_memberName]: core.Symbol,
    [_arguments]: core.List,
    [_namedArguments]: MapOfSymbol$dynamic(),
    [_existingArgumentNames]: core.List
  })
});
core.UnsupportedError = class UnsupportedError extends core.Error {
  new(message) {
    this.message = message;
    super.new();
  }
  toString() {
    return dart.str`Unsupported operation: ${this.message}`;
  }
};
dart.setSignature(core.UnsupportedError, {
  constructors: () => ({new: dart.definiteFunctionType(core.UnsupportedError, [core.String])}),
  fields: () => ({message: core.String})
});
core.UnimplementedError = class UnimplementedError extends core.Error {
  new(message) {
    if (message === void 0) message = null;
    this.message = message;
    super.new();
  }
  toString() {
    return this.message != null ? dart.str`UnimplementedError: ${this.message}` : "UnimplementedError";
  }
};
core.UnimplementedError[dart.implements] = () => [core.UnsupportedError];
dart.setSignature(core.UnimplementedError, {
  constructors: () => ({new: dart.definiteFunctionType(core.UnimplementedError, [], [core.String])}),
  fields: () => ({message: core.String})
});
core.StateError = class StateError extends core.Error {
  new(message) {
    this.message = message;
    super.new();
  }
  toString() {
    return dart.str`Bad state: ${this.message}`;
  }
};
dart.setSignature(core.StateError, {
  constructors: () => ({new: dart.definiteFunctionType(core.StateError, [core.String])}),
  fields: () => ({message: core.String})
});
core.ConcurrentModificationError = class ConcurrentModificationError extends core.Error {
  new(modifiedObject) {
    if (modifiedObject === void 0) modifiedObject = null;
    this.modifiedObject = modifiedObject;
    super.new();
  }
  toString() {
    if (this.modifiedObject == null) {
      return "Concurrent modification during iteration.";
    }
    return "Concurrent modification during iteration: " + dart.str`${core.Error.safeToString(this.modifiedObject)}.`;
  }
};
dart.setSignature(core.ConcurrentModificationError, {
  constructors: () => ({new: dart.definiteFunctionType(core.ConcurrentModificationError, [], [core.Object])}),
  fields: () => ({modifiedObject: core.Object})
});
core.OutOfMemoryError = class OutOfMemoryError extends core.Object {
  new() {
  }
  toString() {
    return "Out of Memory";
  }
  get stackTrace() {
    return null;
  }
};
core.OutOfMemoryError[dart.implements] = () => [core.Error];
dart.setSignature(core.OutOfMemoryError, {
  constructors: () => ({new: dart.definiteFunctionType(core.OutOfMemoryError, [])}),
  getters: () => ({stackTrace: dart.definiteFunctionType(core.StackTrace, [])})
});
core.StackOverflowError = class StackOverflowError extends core.Object {
  new() {
  }
  toString() {
    return "Stack Overflow";
  }
  get stackTrace() {
    return null;
  }
};
core.StackOverflowError[dart.implements] = () => [core.Error];
dart.setSignature(core.StackOverflowError, {
  constructors: () => ({new: dart.definiteFunctionType(core.StackOverflowError, [])}),
  getters: () => ({stackTrace: dart.definiteFunctionType(core.StackTrace, [])})
});
core.CyclicInitializationError = class CyclicInitializationError extends core.Error {
  new(variableName) {
    if (variableName === void 0) variableName = null;
    this.variableName = variableName;
    super.new();
  }
  toString() {
    return this.variableName == null ? "Reading static variable during its initialization" : dart.str`Reading static variable '${this.variableName}' during its initialization`;
  }
};
dart.setSignature(core.CyclicInitializationError, {
  constructors: () => ({new: dart.definiteFunctionType(core.CyclicInitializationError, [], [core.String])}),
  fields: () => ({variableName: core.String})
});
core.Exception = class Exception extends core.Object {
  static new(message) {
    if (message === void 0) message = null;
    return new core._Exception(message);
  }
};
dart.setSignature(core.Exception, {
  constructors: () => ({new: dart.definiteFunctionType(core.Exception, [], [dart.dynamic])})
});
core._Exception = class _Exception extends core.Object {
  new(message) {
    if (message === void 0) message = null;
    this.message = message;
  }
  toString() {
    if (this.message == null) return "Exception";
    return dart.str`Exception: ${this.message}`;
  }
};
core._Exception[dart.implements] = () => [core.Exception];
dart.setSignature(core._Exception, {
  constructors: () => ({new: dart.definiteFunctionType(core._Exception, [], [dart.dynamic])}),
  fields: () => ({message: dart.dynamic})
});
core.FormatException = class FormatException extends core.Object {
  new(message, source, offset) {
    if (message === void 0) message = "";
    if (source === void 0) source = null;
    if (offset === void 0) offset = null;
    this.message = message;
    this.source = source;
    this.offset = offset;
  }
  toString() {
    let report = "FormatException";
    if (this.message != null && "" != this.message) {
      report = dart.str`${report}: ${this.message}`;
    }
    let offset = this.offset;
    if (!(typeof this.source == 'string')) {
      if (offset != null) {
        report = report + dart.str` (at offset ${offset})`;
      }
      return report;
    }
    if (offset != null && (dart.notNull(offset) < 0 || dart.notNull(offset) > dart.notNull(core.num._check(dart.dload(this.source, 'length'))))) {
      offset = null;
    }
    if (offset == null) {
      let source = core.String._check(this.source);
      if (dart.notNull(source[dartx.length]) > 78) {
        source = dart.notNull(source[dartx.substring](0, 75)) + "...";
      }
      return dart.str`${report}\n${source}`;
    }
    let lineNum = 1;
    let lineStart = 0;
    let lastWasCR = null;
    for (let i = 0; i < dart.notNull(offset); i++) {
      let char = core.int._check(dart.dsend(this.source, 'codeUnitAt', i));
      if (char == 10) {
        if (lineStart != i || !dart.test(lastWasCR)) {
          lineNum++;
        }
        lineStart = i + 1;
        lastWasCR = false;
      } else if (char == 13) {
        lineNum++;
        lineStart = i + 1;
        lastWasCR = true;
      }
    }
    if (lineNum > 1) {
      report = report + dart.str` (at line ${lineNum}, character ${dart.notNull(offset) - lineStart + 1})\n`;
    } else {
      report = report + dart.str` (at character ${dart.notNull(offset) + 1})\n`;
    }
    let lineEnd = core.int._check(dart.dload(this.source, 'length'));
    for (let i = offset; dart.notNull(i) < dart.notNull(core.num._check(dart.dload(this.source, 'length'))); i = dart.notNull(i) + 1) {
      let char = core.int._check(dart.dsend(this.source, 'codeUnitAt', i));
      if (char == 10 || char == 13) {
        lineEnd = i;
        break;
      }
    }
    let length = dart.notNull(lineEnd) - lineStart;
    let start = lineStart;
    let end = lineEnd;
    let prefix = "";
    let postfix = "";
    if (length > 78) {
      let index = dart.notNull(offset) - lineStart;
      if (index < 75) {
        end = start + 75;
        postfix = "...";
      } else if (dart.notNull(end) - dart.notNull(offset) < 75) {
        start = dart.notNull(end) - 75;
        prefix = "...";
      } else {
        start = dart.notNull(offset) - 36;
        end = dart.notNull(offset) + 36;
        prefix = postfix = "...";
      }
    }
    let slice = core.String._check(dart.dsend(this.source, 'substring', start, end));
    let markOffset = dart.notNull(offset) - start + dart.notNull(prefix[dartx.length]);
    return dart.str`${report}${prefix}${slice}${postfix}\n${" "[dartx['*']](markOffset)}^\n`;
  }
};
core.FormatException[dart.implements] = () => [core.Exception];
dart.setSignature(core.FormatException, {
  constructors: () => ({new: dart.definiteFunctionType(core.FormatException, [], [core.String, dart.dynamic, core.int])}),
  fields: () => ({
    message: core.String,
    source: dart.dynamic,
    offset: core.int
  })
});
core.IntegerDivisionByZeroException = class IntegerDivisionByZeroException extends core.Object {
  new() {
  }
  toString() {
    return "IntegerDivisionByZeroException";
  }
};
core.IntegerDivisionByZeroException[dart.implements] = () => [core.Exception];
dart.setSignature(core.IntegerDivisionByZeroException, {
  constructors: () => ({new: dart.definiteFunctionType(core.IntegerDivisionByZeroException, [])})
});
const _getKey = Symbol('_getKey');
core.Expando$ = dart.generic(T => {
  class Expando extends core.Object {
    new(name) {
      if (name === void 0) name = null;
      this.name = name;
    }
    toString() {
      return dart.str`Expando:${this.name}`;
    }
    _get(object) {
      let values = _js_helper.Primitives.getProperty(object, core.Expando._EXPANDO_PROPERTY_NAME);
      return T._check(values == null ? null : _js_helper.Primitives.getProperty(values, this[_getKey]()));
    }
    _set(object, value) {
      T._check(value);
      let values = _js_helper.Primitives.getProperty(object, core.Expando._EXPANDO_PROPERTY_NAME);
      if (values == null) {
        values = new core.Object();
        _js_helper.Primitives.setProperty(object, core.Expando._EXPANDO_PROPERTY_NAME, values);
      }
      _js_helper.Primitives.setProperty(values, this[_getKey](), value);
      return value;
    }
    [_getKey]() {
      let key = core.String._check(_js_helper.Primitives.getProperty(this, core.Expando._KEY_PROPERTY_NAME));
      if (key == null) {
        key = dart.str`expando\$key\$${(() => {
          let x = core.Expando._keyCount;
          core.Expando._keyCount = dart.notNull(x) + 1;
          return x;
        })()}`;
        _js_helper.Primitives.setProperty(this, core.Expando._KEY_PROPERTY_NAME, key);
      }
      return key;
    }
  }
  dart.addTypeTests(Expando);
  dart.setSignature(Expando, {
    constructors: () => ({new: dart.definiteFunctionType(core.Expando$(T), [], [core.String])}),
    fields: () => ({name: core.String}),
    methods: () => ({
      _get: dart.definiteFunctionType(T, [core.Object]),
      _set: dart.definiteFunctionType(dart.void, [core.Object, T]),
      [_getKey]: dart.definiteFunctionType(core.String, [])
    }),
    sfields: () => ({
      _KEY_PROPERTY_NAME: core.String,
      _EXPANDO_PROPERTY_NAME: core.String,
      _keyCount: core.int
    })
  });
  return Expando;
});
core.Expando = Expando();
core.Expando._KEY_PROPERTY_NAME = 'expando$key';
core.Expando._EXPANDO_PROPERTY_NAME = 'expando$values';
core.Expando._keyCount = 0;
core.Function = class Function extends core.Object {
  static apply(f, positionalArguments, namedArguments) {
    if (namedArguments === void 0) namedArguments = null;
    return dart.dcall.apply(null, [f].concat(positionalArguments));
  }
  static _toMangledNames(namedArguments) {
    let result = dart.map({}, core.String, dart.dynamic);
    namedArguments[dartx.forEach](dart.fn((symbol, value) => {
      result[dartx._set](core._symbolToString(symbol), value);
    }, SymbolAnddynamicTovoid()));
    return result;
  }
};
dart.setSignature(core.Function, {
  statics: () => ({
    apply: dart.definiteFunctionType(dart.dynamic, [core.Function, core.List], [MapOfSymbol$dynamic()]),
    _toMangledNames: dart.definiteFunctionType(core.Map$(core.String, dart.dynamic), [MapOfSymbol$dynamic()])
  }),
  names: ['apply', '_toMangledNames']
});
core.identical = function(a, b) {
  return a == null ? b == null : a === b;
};
dart.fn(core.identical, ObjectAndObjectTobool());
core.identityHashCode = function(object) {
  return _js_helper.objectHashCode(object);
};
dart.fn(core.identityHashCode, ObjectToint());
core._Generator$ = dart.generic(E => {
  const _Generator = dart.typedef('_Generator', () => dart.functionType(E, [core.int]));
  return _Generator;
});
core._Generator = _Generator();
const _end = Symbol('_end');
const _start = Symbol('_start');
const _generator = Symbol('_generator');
core._GeneratorIterable$ = dart.generic(E => {
  let _GeneratorOfE = () => (_GeneratorOfE = dart.constFn(core._Generator$(E)))();
  let _GeneratorIteratorOfE = () => (_GeneratorIteratorOfE = dart.constFn(core._GeneratorIterator$(E)))();
  let EmptyIterableOfE = () => (EmptyIterableOfE = dart.constFn(_internal.EmptyIterable$(E)))();
  let _GeneratorIterableOfE = () => (_GeneratorIterableOfE = dart.constFn(core._GeneratorIterable$(E)))();
  class _GeneratorIterable extends core.Iterable$(E) {
    new(end, generator) {
      this[_end] = end;
      this[_start] = 0;
      this[_generator] = generator != null ? generator : _GeneratorOfE().as(core._GeneratorIterable._id);
      super.new();
    }
    slice(start, end, generator) {
      this[_start] = start;
      this[_end] = end;
      this[_generator] = generator;
      super.new();
    }
    get iterator() {
      return new (_GeneratorIteratorOfE())(this[_start], this[_end], this[_generator]);
    }
    get length() {
      return dart.notNull(this[_end]) - dart.notNull(this[_start]);
    }
    skip(count) {
      core.RangeError.checkNotNegative(count, "count");
      if (count == 0) return this;
      let newStart = dart.notNull(this[_start]) + dart.notNull(count);
      if (newStart >= dart.notNull(this[_end])) return new (EmptyIterableOfE())();
      return new (_GeneratorIterableOfE()).slice(newStart, this[_end], this[_generator]);
    }
    take(count) {
      core.RangeError.checkNotNegative(count, "count");
      if (count == 0) return new (EmptyIterableOfE())();
      let newEnd = dart.notNull(this[_start]) + dart.notNull(count);
      if (newEnd >= dart.notNull(this[_end])) return this;
      return new (_GeneratorIterableOfE()).slice(this[_start], newEnd, this[_generator]);
    }
    static _id(n) {
      return n;
    }
  }
  dart.defineNamedConstructor(_GeneratorIterable, 'slice');
  _GeneratorIterable[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(_GeneratorIterable, {
    constructors: () => ({
      new: dart.definiteFunctionType(core._GeneratorIterable$(E), [core.int, _GeneratorOfE()]),
      slice: dart.definiteFunctionType(core._GeneratorIterable$(E), [core.int, core.int, _GeneratorOfE()])
    }),
    fields: () => ({
      [_start]: core.int,
      [_end]: core.int,
      [_generator]: _GeneratorOfE()
    }),
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(E), [])}),
    methods: () => ({
      skip: dart.definiteFunctionType(core.Iterable$(E), [core.int]),
      take: dart.definiteFunctionType(core.Iterable$(E), [core.int])
    }),
    statics: () => ({_id: dart.definiteFunctionType(core.int, [core.int])}),
    names: ['_id']
  });
  dart.defineExtensionMembers(_GeneratorIterable, ['skip', 'take', 'iterator', 'length']);
  return _GeneratorIterable;
});
core._GeneratorIterable = _GeneratorIterable();
const _index = Symbol('_index');
const _current = Symbol('_current');
core._GeneratorIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let _GeneratorOfE = () => (_GeneratorOfE = dart.constFn(core._Generator$(E)))();
  class _GeneratorIterator extends core.Object {
    new(index, end, generator) {
      this[_index] = index;
      this[_end] = end;
      this[_generator] = generator;
      this[_current] = null;
    }
    moveNext() {
      if (dart.notNull(this[_index]) < dart.notNull(this[_end])) {
        this[_current] = this[_generator](this[_index]);
        this[_index] = dart.notNull(this[_index]) + 1;
        return true;
      } else {
        this[_current] = null;
        return false;
      }
    }
    get current() {
      return this[_current];
    }
  }
  dart.addTypeTests(_GeneratorIterator);
  _GeneratorIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(_GeneratorIterator, {
    constructors: () => ({new: dart.definiteFunctionType(core._GeneratorIterator$(E), [core.int, core.int, _GeneratorOfE()])}),
    fields: () => ({
      [_end]: core.int,
      [_generator]: _GeneratorOfE(),
      [_index]: core.int,
      [_current]: E
    }),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return _GeneratorIterator;
});
core._GeneratorIterator = _GeneratorIterator();
core.BidirectionalIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class BidirectionalIterator extends core.Object {}
  dart.addTypeTests(BidirectionalIterator);
  BidirectionalIterator[dart.implements] = () => [IteratorOfE()];
  return BidirectionalIterator;
});
core.BidirectionalIterator = BidirectionalIterator();
core.Map$ = dart.generic((K, V) => {
  let JsLinkedHashMapOfK$V = () => (JsLinkedHashMapOfK$V = dart.constFn(_js_helper.JsLinkedHashMap$(K, V)))();
  let LinkedHashMapOfK$V = () => (LinkedHashMapOfK$V = dart.constFn(collection.LinkedHashMap$(K, V)))();
  let UnmodifiableMapViewOfK$V = () => (UnmodifiableMapViewOfK$V = dart.constFn(collection.UnmodifiableMapView$(K, V)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let dynamicToK = () => (dynamicToK = dart.constFn(dart.functionType(K, [dart.dynamic])))();
  let IterableOfK = () => (IterableOfK = dart.constFn(core.Iterable$(K)))();
  let dynamicToV = () => (dynamicToV = dart.constFn(dart.functionType(V, [dart.dynamic])))();
  let IterableOfV = () => (IterableOfV = dart.constFn(core.Iterable$(V)))();
  class Map extends core.Object {
    static new() {
      return JsLinkedHashMapOfK$V().es6();
    }
    static from(other) {
      return LinkedHashMapOfK$V().from(other);
    }
    static unmodifiable(other) {
      return new (UnmodifiableMapViewOfK$V())(MapOfK$V().from(other));
    }
    static identity() {
      return LinkedHashMapOfK$V().identity();
    }
    static fromIterable(iterable, opts) {
      return LinkedHashMapOfK$V().fromIterable(iterable, opts);
    }
    static fromIterables(keys, values) {
      return LinkedHashMapOfK$V().fromIterables(keys, values);
    }
  }
  dart.addTypeTests(Map);
  dart.setSignature(Map, {
    constructors: () => ({
      new: dart.definiteFunctionType(core.Map$(K, V), []),
      from: dart.definiteFunctionType(core.Map$(K, V), [core.Map]),
      unmodifiable: dart.definiteFunctionType(core.Map$(K, V), [core.Map]),
      identity: dart.definiteFunctionType(core.Map$(K, V), []),
      fromIterable: dart.definiteFunctionType(core.Map$(K, V), [core.Iterable], {key: dynamicToK(), value: dynamicToV()}),
      fromIterables: dart.definiteFunctionType(core.Map$(K, V), [IterableOfK(), IterableOfV()])
    })
  });
  return Map;
});
core.Map = Map();
core.Null = class Null extends core.Object {
  static _uninstantiable() {
    dart.throw(new core.UnsupportedError('class Null cannot be instantiated'));
  }
  toString() {
    return "null";
  }
};
core.Null.is = function is_Null(o) {
  return o == null;
};
core.Null.as = function as_Null(o) {
  if (o == null) return o;
  return dart.as(o, core.Null);
};
core.Null._check = function check_Null(o) {
  if (o == null) return o;
  return dart.check(o, core.Null);
};
dart.setSignature(core.Null, {
  constructors: () => ({_uninstantiable: dart.definiteFunctionType(core.Null, [])})
});
core.Pattern = class Pattern extends core.Object {};
core.print = function(object) {
  let line = dart.str`${object}`;
  if (_internal.printToZone == null) {
    _internal.printToConsole(line);
  } else {
    dart.dcall(_internal.printToZone, line);
  }
};
dart.fn(core.print, ObjectTovoid());
core.RegExp = class RegExp extends core.Object {
  static new(source, opts) {
    let multiLine = opts && 'multiLine' in opts ? opts.multiLine : false;
    let caseSensitive = opts && 'caseSensitive' in opts ? opts.caseSensitive : true;
    return new _js_helper.JSSyntaxRegExp(source, {multiLine: multiLine, caseSensitive: caseSensitive});
  }
};
core.RegExp[dart.implements] = () => [core.Pattern];
dart.setSignature(core.RegExp, {
  constructors: () => ({new: dart.definiteFunctionType(core.RegExp, [core.String], {multiLine: core.bool, caseSensitive: core.bool})})
});
core.Set$ = dart.generic(E => {
  let LinkedHashSetOfE = () => (LinkedHashSetOfE = dart.constFn(collection.LinkedHashSet$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class Set extends core.Iterable$(E) {
    static new() {
      return LinkedHashSetOfE().new();
    }
    static identity() {
      return LinkedHashSetOfE().identity();
    }
    static from(elements) {
      return LinkedHashSetOfE().from(elements);
    }
  }
  Set[dart.implements] = () => [_internal.EfficientLength];
  dart.setSignature(Set, {
    constructors: () => ({
      new: dart.definiteFunctionType(core.Set$(E), []),
      identity: dart.definiteFunctionType(core.Set$(E), []),
      from: dart.definiteFunctionType(core.Set$(E), [IterableOfE()])
    })
  });
  return Set;
});
core.Set = Set();
core.Sink$ = dart.generic(T => {
  class Sink extends core.Object {}
  dart.addTypeTests(Sink);
  return Sink;
});
core.Sink = Sink();
core.StackTrace = class StackTrace extends core.Object {
  new() {
  }
  static fromString(stackTraceString) {
    return new core._StringStackTrace(stackTraceString);
  }
  static get current() {
    if (Error.captureStackTrace != null) {
      let error = new Error();
      Error.captureStackTrace(error);
      return _js_helper.getTraceFromException(error);
    }
    try {
      dart.throw('');
    } catch (_) {
      let stackTrace = dart.stackTrace(_);
      return stackTrace;
    }

  }
};
dart.setSignature(core.StackTrace, {
  constructors: () => ({
    new: dart.definiteFunctionType(core.StackTrace, []),
    fromString: dart.definiteFunctionType(core.StackTrace, [core.String])
  }),
  sgetters: () => ({current: dart.definiteFunctionType(core.StackTrace, [])})
});
const _stackTrace = Symbol('_stackTrace');
core._StringStackTrace = class _StringStackTrace extends core.Object {
  new(stackTrace) {
    this[_stackTrace] = stackTrace;
  }
  toString() {
    return this[_stackTrace];
  }
};
core._StringStackTrace[dart.implements] = () => [core.StackTrace];
dart.setSignature(core._StringStackTrace, {
  constructors: () => ({new: dart.definiteFunctionType(core._StringStackTrace, [core.String])}),
  fields: () => ({[_stackTrace]: core.String})
});
const _stop = Symbol('_stop');
core.Stopwatch = class Stopwatch extends core.Object {
  get frequency() {
    return core.Stopwatch._frequency;
  }
  new() {
    this[_start] = null;
    this[_stop] = null;
    core.Stopwatch._initTicker();
  }
  start() {
    if (dart.test(this.isRunning)) return;
    if (this[_start] == null) {
      this[_start] = core.Stopwatch._now();
    } else {
      this[_start] = dart.notNull(core.Stopwatch._now()) - (dart.notNull(this[_stop]) - dart.notNull(this[_start]));
      this[_stop] = null;
    }
  }
  stop() {
    if (!dart.test(this.isRunning)) return;
    this[_stop] = core.Stopwatch._now();
  }
  reset() {
    if (this[_start] == null) return;
    this[_start] = core.Stopwatch._now();
    if (this[_stop] != null) {
      this[_stop] = this[_start];
    }
  }
  get elapsedTicks() {
    if (this[_start] == null) {
      return 0;
    }
    return this[_stop] == null ? dart.notNull(core.Stopwatch._now()) - dart.notNull(this[_start]) : dart.notNull(this[_stop]) - dart.notNull(this[_start]);
  }
  get elapsed() {
    return new core.Duration({microseconds: this.elapsedMicroseconds});
  }
  get elapsedMicroseconds() {
    return (dart.notNull(this.elapsedTicks) * 1000000 / dart.notNull(this.frequency))[dartx.truncate]();
  }
  get elapsedMilliseconds() {
    return (dart.notNull(this.elapsedTicks) * 1000 / dart.notNull(this.frequency))[dartx.truncate]();
  }
  get isRunning() {
    return this[_start] != null && this[_stop] == null;
  }
  static _initTicker() {
    _js_helper.Primitives.initTicker();
    core.Stopwatch._frequency = _js_helper.Primitives.timerFrequency;
  }
  static _now() {
    return core.int._check(dart.dsend(_js_helper.Primitives, 'timerTicks'));
  }
};
dart.setSignature(core.Stopwatch, {
  constructors: () => ({new: dart.definiteFunctionType(core.Stopwatch, [])}),
  fields: () => ({
    [_start]: core.int,
    [_stop]: core.int
  }),
  getters: () => ({
    frequency: dart.definiteFunctionType(core.int, []),
    elapsedTicks: dart.definiteFunctionType(core.int, []),
    elapsed: dart.definiteFunctionType(core.Duration, []),
    elapsedMicroseconds: dart.definiteFunctionType(core.int, []),
    elapsedMilliseconds: dart.definiteFunctionType(core.int, []),
    isRunning: dart.definiteFunctionType(core.bool, [])
  }),
  methods: () => ({
    start: dart.definiteFunctionType(dart.void, []),
    stop: dart.definiteFunctionType(dart.void, []),
    reset: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({_frequency: core.int}),
  statics: () => ({
    _initTicker: dart.definiteFunctionType(dart.void, []),
    _now: dart.definiteFunctionType(core.int, [])
  }),
  names: ['_initTicker', '_now']
});
core.Stopwatch._frequency = null;
core.Runes = class Runes extends core.Iterable$(core.int) {
  new(string) {
    this.string = string;
    super.new();
  }
  get iterator() {
    return new core.RuneIterator(this.string);
  }
  get last() {
    if (this.string[dartx.length] == 0) {
      dart.throw(new core.StateError('No elements.'));
    }
    let length = this.string[dartx.length];
    let code = this.string[dartx.codeUnitAt](dart.notNull(length) - 1);
    if (dart.test(core._isTrailSurrogate(code)) && dart.notNull(this.string[dartx.length]) > 1) {
      let previousCode = this.string[dartx.codeUnitAt](dart.notNull(length) - 2);
      if (dart.test(core._isLeadSurrogate(previousCode))) {
        return core._combineSurrogatePair(previousCode, code);
      }
    }
    return code;
  }
};
dart.addSimpleTypeTests(core.Runes);
dart.setSignature(core.Runes, {
  constructors: () => ({new: dart.definiteFunctionType(core.Runes, [core.String])}),
  fields: () => ({string: core.String}),
  getters: () => ({
    iterator: dart.definiteFunctionType(core.RuneIterator, []),
    last: dart.definiteFunctionType(core.int, [])
  })
});
dart.defineExtensionMembers(core.Runes, ['iterator', 'last']);
core._isLeadSurrogate = function(code) {
  return (dart.notNull(code) & 64512) == 55296;
};
dart.fn(core._isLeadSurrogate, intTobool());
core._isTrailSurrogate = function(code) {
  return (dart.notNull(code) & 64512) == 56320;
};
dart.fn(core._isTrailSurrogate, intTobool());
core._combineSurrogatePair = function(start, end) {
  return 65536 + ((dart.notNull(start) & 1023) << 10) + (dart.notNull(end) & 1023);
};
dart.fn(core._combineSurrogatePair, intAndintToint());
const _position = Symbol('_position');
const _nextPosition = Symbol('_nextPosition');
const _currentCodePoint = Symbol('_currentCodePoint');
const _checkSplitSurrogate = Symbol('_checkSplitSurrogate');
core.RuneIterator = class RuneIterator extends core.Object {
  new(string) {
    this.string = string;
    this[_position] = 0;
    this[_nextPosition] = 0;
    this[_currentCodePoint] = null;
  }
  at(string, index) {
    this.string = string;
    this[_position] = index;
    this[_nextPosition] = index;
    this[_currentCodePoint] = null;
    core.RangeError.checkValueInInterval(index, 0, string[dartx.length]);
    this[_checkSplitSurrogate](index);
  }
  [_checkSplitSurrogate](index) {
    if (dart.notNull(index) > 0 && dart.notNull(index) < dart.notNull(this.string[dartx.length]) && dart.test(core._isLeadSurrogate(this.string[dartx.codeUnitAt](dart.notNull(index) - 1))) && dart.test(core._isTrailSurrogate(this.string[dartx.codeUnitAt](index)))) {
      dart.throw(new core.ArgumentError(dart.str`Index inside surrogate pair: ${index}`));
    }
  }
  get rawIndex() {
    return this[_position] != this[_nextPosition] ? this[_position] : null;
  }
  set rawIndex(rawIndex) {
    core.RangeError.checkValidIndex(rawIndex, this.string, "rawIndex");
    this.reset(rawIndex);
    this.moveNext();
  }
  reset(rawIndex) {
    if (rawIndex === void 0) rawIndex = 0;
    core.RangeError.checkValueInInterval(rawIndex, 0, this.string[dartx.length], "rawIndex");
    this[_checkSplitSurrogate](rawIndex);
    this[_position] = this[_nextPosition] = rawIndex;
    this[_currentCodePoint] = null;
  }
  get current() {
    return this[_currentCodePoint];
  }
  get currentSize() {
    return dart.notNull(this[_nextPosition]) - dart.notNull(this[_position]);
  }
  get currentAsString() {
    if (this[_position] == this[_nextPosition]) return null;
    if (dart.notNull(this[_position]) + 1 == this[_nextPosition]) return this.string[dartx._get](this[_position]);
    return this.string[dartx.substring](this[_position], this[_nextPosition]);
  }
  moveNext() {
    this[_position] = this[_nextPosition];
    if (this[_position] == this.string[dartx.length]) {
      this[_currentCodePoint] = null;
      return false;
    }
    let codeUnit = this.string[dartx.codeUnitAt](this[_position]);
    let nextPosition = dart.notNull(this[_position]) + 1;
    if (dart.test(core._isLeadSurrogate(codeUnit)) && nextPosition < dart.notNull(this.string[dartx.length])) {
      let nextCodeUnit = this.string[dartx.codeUnitAt](nextPosition);
      if (dart.test(core._isTrailSurrogate(nextCodeUnit))) {
        this[_nextPosition] = nextPosition + 1;
        this[_currentCodePoint] = core._combineSurrogatePair(codeUnit, nextCodeUnit);
        return true;
      }
    }
    this[_nextPosition] = nextPosition;
    this[_currentCodePoint] = codeUnit;
    return true;
  }
  movePrevious() {
    this[_nextPosition] = this[_position];
    if (this[_position] == 0) {
      this[_currentCodePoint] = null;
      return false;
    }
    let position = dart.notNull(this[_position]) - 1;
    let codeUnit = this.string[dartx.codeUnitAt](position);
    if (dart.test(core._isTrailSurrogate(codeUnit)) && position > 0) {
      let prevCodeUnit = this.string[dartx.codeUnitAt](position - 1);
      if (dart.test(core._isLeadSurrogate(prevCodeUnit))) {
        this[_position] = position - 1;
        this[_currentCodePoint] = core._combineSurrogatePair(prevCodeUnit, codeUnit);
        return true;
      }
    }
    this[_position] = position;
    this[_currentCodePoint] = codeUnit;
    return true;
  }
};
dart.defineNamedConstructor(core.RuneIterator, 'at');
core.RuneIterator[dart.implements] = () => [BidirectionalIteratorOfint()];
dart.setSignature(core.RuneIterator, {
  constructors: () => ({
    new: dart.definiteFunctionType(core.RuneIterator, [core.String]),
    at: dart.definiteFunctionType(core.RuneIterator, [core.String, core.int])
  }),
  fields: () => ({
    string: core.String,
    [_position]: core.int,
    [_nextPosition]: core.int,
    [_currentCodePoint]: core.int
  }),
  getters: () => ({
    rawIndex: dart.definiteFunctionType(core.int, []),
    current: dart.definiteFunctionType(core.int, []),
    currentSize: dart.definiteFunctionType(core.int, []),
    currentAsString: dart.definiteFunctionType(core.String, [])
  }),
  setters: () => ({rawIndex: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [_checkSplitSurrogate]: dart.definiteFunctionType(dart.void, [core.int]),
    reset: dart.definiteFunctionType(dart.void, [], [core.int]),
    moveNext: dart.definiteFunctionType(core.bool, []),
    movePrevious: dart.definiteFunctionType(core.bool, [])
  })
});
const _contents = Symbol('_contents');
const _writeString = Symbol('_writeString');
core.StringBuffer = class StringBuffer extends core.Object {
  new(content) {
    if (content === void 0) content = "";
    this[_contents] = dart.str`${content}`;
  }
  get length() {
    return this[_contents][dartx.length];
  }
  get isEmpty() {
    return this.length == 0;
  }
  get isNotEmpty() {
    return !dart.test(this.isEmpty);
  }
  write(obj) {
    this[_writeString](dart.str`${obj}`);
  }
  writeCharCode(charCode) {
    this[_writeString](core.String.fromCharCode(charCode));
  }
  writeAll(objects, separator) {
    if (separator === void 0) separator = "";
    this[_contents] = core.StringBuffer._writeAll(this[_contents], objects, separator);
  }
  writeln(obj) {
    if (obj === void 0) obj = "";
    this[_writeString](dart.str`${obj}\n`);
  }
  clear() {
    this[_contents] = "";
  }
  toString() {
    return _js_helper.Primitives.flattenString(this[_contents]);
  }
  [_writeString](str) {
    this[_contents] = _js_helper.Primitives.stringConcatUnchecked(this[_contents], core.String._check(str));
  }
  static _writeAll(string, objects, separator) {
    let iterator = objects[dartx.iterator];
    if (!dart.test(iterator.moveNext())) return string;
    if (dart.test(separator[dartx.isEmpty])) {
      do {
        string = core.StringBuffer._writeOne(string, iterator.current);
      } while (dart.test(iterator.moveNext()));
    } else {
      string = core.StringBuffer._writeOne(string, iterator.current);
      while (dart.test(iterator.moveNext())) {
        string = core.StringBuffer._writeOne(string, separator);
        string = core.StringBuffer._writeOne(string, iterator.current);
      }
    }
    return string;
  }
  static _writeOne(string, obj) {
    return _js_helper.Primitives.stringConcatUnchecked(string, dart.str`${obj}`);
  }
};
core.StringBuffer[dart.implements] = () => [core.StringSink];
dart.setSignature(core.StringBuffer, {
  constructors: () => ({new: dart.definiteFunctionType(core.StringBuffer, [], [core.Object])}),
  fields: () => ({[_contents]: core.String}),
  getters: () => ({
    length: dart.definiteFunctionType(core.int, []),
    isEmpty: dart.definiteFunctionType(core.bool, []),
    isNotEmpty: dart.definiteFunctionType(core.bool, [])
  }),
  methods: () => ({
    write: dart.definiteFunctionType(dart.void, [core.Object]),
    writeCharCode: dart.definiteFunctionType(dart.void, [core.int]),
    writeAll: dart.definiteFunctionType(dart.void, [core.Iterable], [core.String]),
    writeln: dart.definiteFunctionType(dart.void, [], [core.Object]),
    clear: dart.definiteFunctionType(dart.void, []),
    [_writeString]: dart.definiteFunctionType(dart.void, [dart.dynamic])
  }),
  statics: () => ({
    _writeAll: dart.definiteFunctionType(core.String, [core.String, core.Iterable, core.String]),
    _writeOne: dart.definiteFunctionType(core.String, [core.String, core.Object])
  }),
  names: ['_writeAll', '_writeOne']
});
core.Symbol = class Symbol extends core.Object {
  static new(name) {
    return new _internal.Symbol(name);
  }
};
dart.setSignature(core.Symbol, {
  constructors: () => ({new: dart.definiteFunctionType(core.Symbol, [core.String])})
});
const _userInfo = Symbol('_userInfo');
const _host = Symbol('_host');
const _port = Symbol('_port');
const _path = Symbol('_path');
const _query = Symbol('_query');
const _fragment = Symbol('_fragment');
const _pathSegments = Symbol('_pathSegments');
const _queryParameters = Symbol('_queryParameters');
const _queryParameterLists = Symbol('_queryParameterLists');
const _writeAuthority = Symbol('_writeAuthority');
let const;
const _mergePaths = Symbol('_mergePaths');
const _toWindowsFilePath = Symbol('_toWindowsFilePath');
const _toFilePath = Symbol('_toFilePath');
const _isPathAbsolute = Symbol('_isPathAbsolute');
core.Uri = class Uri extends core.Object {
  _internal(scheme, userInfo, host, port, path, query, fragment) {
    this.scheme = scheme;
    this[_userInfo] = userInfo;
    this[_host] = host;
    this[_port] = port;
    this[_path] = path;
    this[_query] = query;
    this[_fragment] = fragment;
    this[_pathSegments] = null;
    this[_queryParameters] = null;
    this[_queryParameterLists] = null;
  }
  static new(opts) {
    let scheme = opts && 'scheme' in opts ? opts.scheme : "";
    let userInfo = opts && 'userInfo' in opts ? opts.userInfo : "";
    let host = opts && 'host' in opts ? opts.host : null;
    let port = opts && 'port' in opts ? opts.port : null;
    let path = opts && 'path' in opts ? opts.path : null;
    let pathSegments = opts && 'pathSegments' in opts ? opts.pathSegments : null;
    let query = opts && 'query' in opts ? opts.query : null;
    let queryParameters = opts && 'queryParameters' in opts ? opts.queryParameters : null;
    let fragment = opts && 'fragment' in opts ? opts.fragment : null;
    scheme = core.Uri._makeScheme(scheme, 0, core.Uri._stringOrNullLength(scheme));
    userInfo = core.Uri._makeUserInfo(userInfo, 0, core.Uri._stringOrNullLength(userInfo));
    host = core.Uri._makeHost(host, 0, core.Uri._stringOrNullLength(host), false);
    if (query == "") query = null;
    query = core.Uri._makeQuery(query, 0, core.Uri._stringOrNullLength(query), queryParameters);
    fragment = core.Uri._makeFragment(fragment, 0, core.Uri._stringOrNullLength(fragment));
    port = core.Uri._makePort(port, scheme);
    let isFile = scheme == "file";
    if (host == null && (dart.test(userInfo[dartx.isNotEmpty]) || port != null || isFile)) {
      host = "";
    }
    let hasAuthority = host != null;
    path = core.Uri._makePath(path, 0, core.Uri._stringOrNullLength(path), pathSegments, scheme, hasAuthority);
    if (dart.test(scheme[dartx.isEmpty]) && host == null && !dart.test(path[dartx.startsWith]('/'))) {
      path = core.Uri._normalizeRelativePath(path);
    } else {
      path = core.Uri._removeDotSegments(path);
    }
    return new core.Uri._internal(scheme, userInfo, host, port, path, query, fragment);
  }
  static http(authority, unencodedPath, queryParameters) {
    if (queryParameters === void 0) queryParameters = null;
    return core.Uri._makeHttpUri("http", authority, unencodedPath, queryParameters);
  }
  static https(authority, unencodedPath, queryParameters) {
    if (queryParameters === void 0) queryParameters = null;
    return core.Uri._makeHttpUri("https", authority, unencodedPath, queryParameters);
  }
  get authority() {
    if (!dart.test(this.hasAuthority)) return "";
    let sb = new core.StringBuffer();
    this[_writeAuthority](sb);
    return sb.toString();
  }
  get userInfo() {
    return this[_userInfo];
  }
  get host() {
    if (this[_host] == null) return "";
    if (dart.test(this[_host][dartx.startsWith]('['))) {
      return this[_host][dartx.substring](1, dart.notNull(this[_host][dartx.length]) - 1);
    }
    return this[_host];
  }
  get port() {
    if (this[_port] == null) return core.Uri._defaultPort(this.scheme);
    return this[_port];
  }
  static _defaultPort(scheme) {
    if (scheme == "http") return 80;
    if (scheme == "https") return 443;
    return 0;
  }
  get path() {
    return this[_path];
  }
  get query() {
    return this[_query] == null ? "" : this[_query];
  }
  get fragment() {
    return this[_fragment] == null ? "" : this[_fragment];
  }
  static parse(uri, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    let EOI = -1;
    let scheme = "";
    let userinfo = "";
    let host = null;
    let port = null;
    let path = null;
    let query = null;
    let fragment = null;
    if (end == null) end = uri[dartx.length];
    let index = start;
    let pathStart = start;
    let char = EOI;
    function parseAuth() {
      if (index == end) {
        char = EOI;
        return;
      }
      let authStart = index;
      let lastColon = -1;
      let lastAt = -1;
      char = uri[dartx.codeUnitAt](index);
      while (dart.notNull(index) < dart.notNull(end)) {
        char = uri[dartx.codeUnitAt](index);
        if (char == core.Uri._SLASH || char == core.Uri._QUESTION || char == core.Uri._NUMBER_SIGN) {
          break;
        }
        if (char == core.Uri._AT_SIGN) {
          lastAt = index;
          lastColon = -1;
        } else if (char == core.Uri._COLON) {
          lastColon = index;
        } else if (char == core.Uri._LEFT_BRACKET) {
          lastColon = -1;
          let endBracket = uri[dartx.indexOf](']', dart.notNull(index) + 1);
          if (endBracket == -1) {
            index = end;
            char = EOI;
            break;
          } else {
            index = endBracket;
          }
        }
        index = dart.notNull(index) + 1;
        char = EOI;
      }
      let hostStart = authStart;
      let hostEnd = index;
      if (dart.notNull(lastAt) >= 0) {
        userinfo = core.Uri._makeUserInfo(uri, authStart, lastAt);
        hostStart = dart.notNull(lastAt) + 1;
      }
      if (dart.notNull(lastColon) >= 0) {
        let portNumber = null;
        if (dart.notNull(lastColon) + 1 < dart.notNull(index)) {
          portNumber = 0;
          for (let i = dart.notNull(lastColon) + 1; i < dart.notNull(index); i++) {
            let digit = uri[dartx.codeUnitAt](i);
            if (core.Uri._ZERO > dart.notNull(digit) || core.Uri._NINE < dart.notNull(digit)) {
              core.Uri._fail(uri, i, "Invalid port number");
            }
            portNumber = dart.notNull(portNumber) * 10 + (dart.notNull(digit) - core.Uri._ZERO);
          }
        }
        port = core.Uri._makePort(portNumber, scheme);
        hostEnd = lastColon;
      }
      host = core.Uri._makeHost(uri, hostStart, hostEnd, true);
      if (dart.notNull(index) < dart.notNull(end)) {
        char = uri[dartx.codeUnitAt](index);
      }
    }
    dart.fn(parseAuth, VoidTovoid());
    let NOT_IN_PATH = 0;
    let IN_PATH = 1;
    let ALLOW_AUTH = 2;
    let state = NOT_IN_PATH;
    let i = index;
    while (dart.notNull(i) < dart.notNull(end)) {
      char = uri[dartx.codeUnitAt](i);
      if (char == core.Uri._QUESTION || char == core.Uri._NUMBER_SIGN) {
        state = NOT_IN_PATH;
        break;
      }
      if (char == core.Uri._SLASH) {
        state = i == start ? ALLOW_AUTH : IN_PATH;
        break;
      }
      if (char == core.Uri._COLON) {
        if (i == start) core.Uri._fail(uri, start, "Invalid empty scheme");
        scheme = core.Uri._makeScheme(uri, start, i);
        i = dart.notNull(i) + 1;
        pathStart = i;
        if (i == end) {
          char = EOI;
          state = NOT_IN_PATH;
        } else {
          char = uri[dartx.codeUnitAt](i);
          if (char == core.Uri._QUESTION || char == core.Uri._NUMBER_SIGN) {
            state = NOT_IN_PATH;
          } else if (char == core.Uri._SLASH) {
            state = ALLOW_AUTH;
          } else {
            state = IN_PATH;
          }
        }
        break;
      }
      i = dart.notNull(i) + 1;
      char = EOI;
    }
    index = i;
    if (state == ALLOW_AUTH) {
      dart.assert(char == core.Uri._SLASH);
      index = dart.notNull(index) + 1;
      if (index == end) {
        char = EOI;
        state = NOT_IN_PATH;
      } else {
        char = uri[dartx.codeUnitAt](index);
        if (char == core.Uri._SLASH) {
          index = dart.notNull(index) + 1;
          parseAuth();
          pathStart = index;
        }
        if (char == core.Uri._QUESTION || char == core.Uri._NUMBER_SIGN || char == EOI) {
          state = NOT_IN_PATH;
        } else {
          state = IN_PATH;
        }
      }
    }
    dart.assert(state == IN_PATH || state == NOT_IN_PATH);
    if (state == IN_PATH) {
      while ((index = dart.notNull(index) + 1) < dart.notNull(end)) {
        char = uri[dartx.codeUnitAt](index);
        if (char == core.Uri._QUESTION || char == core.Uri._NUMBER_SIGN) {
          break;
        }
        char = EOI;
      }
      state = NOT_IN_PATH;
    }
    dart.assert(state == NOT_IN_PATH);
    let hasAuthority = host != null;
    path = core.Uri._makePath(uri, pathStart, index, null, scheme, hasAuthority);
    if (char == core.Uri._QUESTION) {
      let numberSignIndex = -1;
      for (let i = dart.notNull(index) + 1; i < dart.notNull(end); i++) {
        if (uri[dartx.codeUnitAt](i) == core.Uri._NUMBER_SIGN) {
          numberSignIndex = i;
          break;
        }
      }
      if (numberSignIndex < 0) {
        query = core.Uri._makeQuery(uri, dart.notNull(index) + 1, end, null);
      } else {
        query = core.Uri._makeQuery(uri, dart.notNull(index) + 1, numberSignIndex, null);
        fragment = core.Uri._makeFragment(uri, numberSignIndex + 1, end);
      }
    } else if (char == core.Uri._NUMBER_SIGN) {
      fragment = core.Uri._makeFragment(uri, dart.notNull(index) + 1, end);
    }
    return new core.Uri._internal(scheme, userinfo, host, port, path, query, fragment);
  }
  static _fail(uri, index, message) {
    dart.throw(new core.FormatException(message, uri, index));
  }
  static _makeHttpUri(scheme, authority, unencodedPath, queryParameters) {
    let userInfo = "";
    let host = null;
    let port = null;
    if (authority != null && dart.test(authority[dartx.isNotEmpty])) {
      let hostStart = 0;
      let hasUserInfo = false;
      for (let i = 0; i < dart.notNull(authority[dartx.length]); i++) {
        if (authority[dartx.codeUnitAt](i) == core.Uri._AT_SIGN) {
          hasUserInfo = true;
          userInfo = authority[dartx.substring](0, i);
          hostStart = i + 1;
          break;
        }
      }
      let hostEnd = hostStart;
      if (hostStart < dart.notNull(authority[dartx.length]) && authority[dartx.codeUnitAt](hostStart) == core.Uri._LEFT_BRACKET) {
        for (; hostEnd < dart.notNull(authority[dartx.length]); hostEnd++) {
          if (authority[dartx.codeUnitAt](hostEnd) == core.Uri._RIGHT_BRACKET) break;
        }
        if (hostEnd == authority[dartx.length]) {
          dart.throw(new core.FormatException("Invalid IPv6 host entry.", authority, hostStart));
        }
        core.Uri.parseIPv6Address(authority, hostStart + 1, hostEnd);
        hostEnd++;
        if (hostEnd != authority[dartx.length] && authority[dartx.codeUnitAt](hostEnd) != core.Uri._COLON) {
          dart.throw(new core.FormatException("Invalid end of authority", authority, hostEnd));
        }
      }
      let hasPort = false;
      for (; hostEnd < dart.notNull(authority[dartx.length]); hostEnd++) {
        if (authority[dartx.codeUnitAt](hostEnd) == core.Uri._COLON) {
          let portString = authority[dartx.substring](hostEnd + 1);
          if (dart.test(portString[dartx.isNotEmpty])) port = core.int.parse(portString);
          break;
        }
      }
      host = authority[dartx.substring](hostStart, hostEnd);
    }
    return core.Uri.new({scheme: scheme, userInfo: userInfo, host: core.String._check(host), port: core.int._check(port), pathSegments: unencodedPath[dartx.split]("/"), queryParameters: queryParameters});
  }
  static file(path, opts) {
    let windows = opts && 'windows' in opts ? opts.windows : null;
    windows = windows == null ? core.Uri._isWindows : windows;
    return core.Uri._check(dart.test(windows) ? core.Uri._makeWindowsFileUrl(path, false) : core.Uri._makeFileUri(path, false));
  }
  static directory(path, opts) {
    let windows = opts && 'windows' in opts ? opts.windows : null;
    windows = windows == null ? core.Uri._isWindows : windows;
    return core.Uri._check(dart.test(windows) ? core.Uri._makeWindowsFileUrl(path, true) : core.Uri._makeFileUri(path, true));
  }
  static dataFromString(content, opts) {
    let mimeType = opts && 'mimeType' in opts ? opts.mimeType : null;
    let encoding = opts && 'encoding' in opts ? opts.encoding : null;
    let parameters = opts && 'parameters' in opts ? opts.parameters : null;
    let base64 = opts && 'base64' in opts ? opts.base64 : false;
    let data = core.UriData.fromString(content, {mimeType: mimeType, encoding: encoding, parameters: parameters, base64: base64});
    return data.uri;
  }
  static dataFromBytes(bytes, opts) {
    let mimeType = opts && 'mimeType' in opts ? opts.mimeType : "application/octet-stream";
    let parameters = opts && 'parameters' in opts ? opts.parameters : null;
    let percentEncoded = opts && 'percentEncoded' in opts ? opts.percentEncoded : false;
    let data = core.UriData.fromBytes(bytes, {mimeType: mimeType, parameters: parameters, percentEncoded: percentEncoded});
    return data.uri;
  }
  static get base() {
    let uri = _js_helper.Primitives.currentUri();
    if (uri != null) return core.Uri.parse(uri);
    dart.throw(new core.UnsupportedError("'Uri.base' is not supported"));
  }
  static get _isWindows() {
    return false;
  }
  static _checkNonWindowsPathReservedCharacters(segments, argumentError) {
    segments[dartx.forEach](dart.fn(segment => {
      if (dart.test(segment[dartx.contains]("/"))) {
        if (dart.test(argumentError)) {
          dart.throw(new core.ArgumentError(dart.str`Illegal path character ${segment}`));
        } else {
          dart.throw(new core.UnsupportedError(dart.str`Illegal path character ${segment}`));
        }
      }
    }, StringTovoid()));
  }
  static _checkWindowsPathReservedCharacters(segments, argumentError, firstSegment) {
    if (firstSegment === void 0) firstSegment = 0;
    for (let segment of segments[dartx.skip](firstSegment)) {
      if (dart.test(segment[dartx.contains](core.RegExp.new('["*/:<>?\\\\|]')))) {
        if (dart.test(argumentError)) {
          dart.throw(new core.ArgumentError("Illegal character in path"));
        } else {
          dart.throw(new core.UnsupportedError("Illegal character in path"));
        }
      }
    }
  }
  static _checkWindowsDriveLetter(charCode, argumentError) {
    if (core.Uri._UPPER_CASE_A <= dart.notNull(charCode) && dart.notNull(charCode) <= core.Uri._UPPER_CASE_Z || core.Uri._LOWER_CASE_A <= dart.notNull(charCode) && dart.notNull(charCode) <= core.Uri._LOWER_CASE_Z) {
      return;
    }
    if (dart.test(argumentError)) {
      dart.throw(new core.ArgumentError("Illegal drive letter " + core.String.fromCharCode(charCode)));
    } else {
      dart.throw(new core.UnsupportedError("Illegal drive letter " + core.String.fromCharCode(charCode)));
    }
  }
  static _makeFileUri(path, slashTerminated) {
    let sep = "/";
    let segments = path[dartx.split](sep);
    if (dart.test(slashTerminated) && dart.test(segments[dartx.isNotEmpty]) && dart.test(segments[dartx.last][dartx.isNotEmpty])) {
      segments[dartx.add]("");
    }
    if (dart.test(path[dartx.startsWith](sep))) {
      return core.Uri.new({scheme: "file", pathSegments: segments});
    } else {
      return core.Uri.new({pathSegments: segments});
    }
  }
  static _makeWindowsFileUrl(path, slashTerminated) {
    if (dart.test(path[dartx.startsWith]("\\\\?\\"))) {
      if (dart.test(path[dartx.startsWith]("UNC\\", 4))) {
        path = path[dartx.replaceRange](0, 7, '\\');
      } else {
        path = path[dartx.substring](4);
        if (dart.notNull(path[dartx.length]) < 3 || path[dartx.codeUnitAt](1) != core.Uri._COLON || path[dartx.codeUnitAt](2) != core.Uri._BACKSLASH) {
          dart.throw(new core.ArgumentError("Windows paths with \\\\?\\ prefix must be absolute"));
        }
      }
    } else {
      path = path[dartx.replaceAll]("/", '\\');
    }
    let sep = '\\';
    if (dart.notNull(path[dartx.length]) > 1 && path[dartx.codeUnitAt](1) == core.Uri._COLON) {
      core.Uri._checkWindowsDriveLetter(path[dartx.codeUnitAt](0), true);
      if (path[dartx.length] == 2 || path[dartx.codeUnitAt](2) != core.Uri._BACKSLASH) {
        dart.throw(new core.ArgumentError("Windows paths with drive letter must be absolute"));
      }
      let pathSegments = path[dartx.split](sep);
      if (dart.test(slashTerminated) && dart.test(pathSegments[dartx.last][dartx.isNotEmpty])) {
        pathSegments[dartx.add]("");
      }
      core.Uri._checkWindowsPathReservedCharacters(pathSegments, true, 1);
      return core.Uri.new({scheme: "file", pathSegments: pathSegments});
    }
    if (dart.test(path[dartx.startsWith](sep))) {
      if (dart.test(path[dartx.startsWith](sep, 1))) {
        let pathStart = path[dartx.indexOf]('\\', 2);
        let hostPart = dart.notNull(pathStart) < 0 ? path[dartx.substring](2) : path[dartx.substring](2, pathStart);
        let pathPart = dart.notNull(pathStart) < 0 ? "" : path[dartx.substring](dart.notNull(pathStart) + 1);
        let pathSegments = pathPart[dartx.split](sep);
        core.Uri._checkWindowsPathReservedCharacters(pathSegments, true);
        if (dart.test(slashTerminated) && dart.test(pathSegments[dartx.last][dartx.isNotEmpty])) {
          pathSegments[dartx.add]("");
        }
        return core.Uri.new({scheme: "file", host: hostPart, pathSegments: pathSegments});
      } else {
        let pathSegments = path[dartx.split](sep);
        if (dart.test(slashTerminated) && dart.test(pathSegments[dartx.last][dartx.isNotEmpty])) {
          pathSegments[dartx.add]("");
        }
        core.Uri._checkWindowsPathReservedCharacters(pathSegments, true);
        return core.Uri.new({scheme: "file", pathSegments: pathSegments});
      }
    } else {
      let pathSegments = path[dartx.split](sep);
      core.Uri._checkWindowsPathReservedCharacters(pathSegments, true);
      if (dart.test(slashTerminated) && dart.test(pathSegments[dartx.isNotEmpty]) && dart.test(pathSegments[dartx.last][dartx.isNotEmpty])) {
        pathSegments[dartx.add]("");
      }
      return core.Uri.new({pathSegments: pathSegments});
    }
  }
  replace(opts) {
    let scheme = opts && 'scheme' in opts ? opts.scheme : null;
    let userInfo = opts && 'userInfo' in opts ? opts.userInfo : null;
    let host = opts && 'host' in opts ? opts.host : null;
    let port = opts && 'port' in opts ? opts.port : null;
    let path = opts && 'path' in opts ? opts.path : null;
    let pathSegments = opts && 'pathSegments' in opts ? opts.pathSegments : null;
    let query = opts && 'query' in opts ? opts.query : null;
    let queryParameters = opts && 'queryParameters' in opts ? opts.queryParameters : null;
    let fragment = opts && 'fragment' in opts ? opts.fragment : null;
    let schemeChanged = false;
    if (scheme != null) {
      scheme = core.Uri._makeScheme(scheme, 0, scheme[dartx.length]);
      schemeChanged = true;
    } else {
      scheme = this.scheme;
    }
    let isFile = scheme == "file";
    if (userInfo != null) {
      userInfo = core.Uri._makeUserInfo(userInfo, 0, userInfo[dartx.length]);
    } else {
      userInfo = this[_userInfo];
    }
    if (port != null) {
      port = core.Uri._makePort(port, scheme);
    } else {
      port = this[_port];
      if (schemeChanged) {
        port = core.Uri._makePort(port, scheme);
      }
    }
    if (host != null) {
      host = core.Uri._makeHost(host, 0, host[dartx.length], false);
    } else if (dart.test(this.hasAuthority)) {
      host = this[_host];
    } else if (dart.test(userInfo[dartx.isNotEmpty]) || port != null || isFile) {
      host = "";
    }
    let hasAuthority = host != null;
    if (path != null || pathSegments != null) {
      path = core.Uri._makePath(path, 0, core.Uri._stringOrNullLength(path), pathSegments, scheme, hasAuthority);
    } else {
      path = this[_path];
      if ((isFile || hasAuthority && !dart.test(path[dartx.isEmpty])) && !dart.test(path[dartx.startsWith]('/'))) {
        path = "/" + dart.notNull(path);
      }
    }
    if (query != null || queryParameters != null) {
      query = core.Uri._makeQuery(query, 0, core.Uri._stringOrNullLength(query), queryParameters);
    } else {
      query = this[_query];
    }
    if (fragment != null) {
      fragment = core.Uri._makeFragment(fragment, 0, fragment[dartx.length]);
    } else {
      fragment = this[_fragment];
    }
    return new core.Uri._internal(scheme, userInfo, host, port, path, query, fragment);
  }
  removeFragment() {
    if (!dart.test(this.hasFragment)) return this;
    return new core.Uri._internal(this.scheme, this[_userInfo], this[_host], this[_port], this[_path], this[_query], null);
  }
  get pathSegments() {
    let result = this[_pathSegments];
    if (result != null) return result;
    let pathToSplit = this.path;
    if (dart.test(pathToSplit[dartx.isNotEmpty]) && pathToSplit[dartx.codeUnitAt](0) == core.Uri._SLASH) {
      pathToSplit = pathToSplit[dartx.substring](1);
    }
    result = pathToSplit == "" ? const || (const = dart.constList([], core.String)) : ListOfString().unmodifiable(pathToSplit[dartx.split]("/")[dartx.map](core.String)(core.Uri.decodeComponent));
    this[_pathSegments] = result;
    return result;
  }
  get queryParameters() {
    if (this[_queryParameters] == null) {
      this[_queryParameters] = new (UnmodifiableMapViewOfString$String())(core.Uri.splitQueryString(this.query));
    }
    return this[_queryParameters];
  }
  get queryParametersAll() {
    if (this[_queryParameterLists] == null) {
      let queryParameterLists = core.Uri._splitQueryStringAll(this.query);
      for (let key of queryParameterLists[dartx.keys]) {
        queryParameterLists[dartx._set](key, ListOfString().unmodifiable(core.Iterable._check(queryParameterLists[dartx._get](key))));
      }
      this[_queryParameterLists] = MapOfString$ListOfString().unmodifiable(queryParameterLists);
    }
    return this[_queryParameterLists];
  }
  normalizePath() {
    let path = core.Uri._normalizePath(this[_path], this.scheme, this.hasAuthority);
    if (core.identical(path, this[_path])) return this;
    return this.replace({path: path});
  }
  static _makePort(port, scheme) {
    if (port != null && port == core.Uri._defaultPort(scheme)) return null;
    return port;
  }
  static _makeHost(host, start, end, strictIPv6) {
    if (host == null) return null;
    if (start == end) return "";
    if (host[dartx.codeUnitAt](start) == core.Uri._LEFT_BRACKET) {
      if (host[dartx.codeUnitAt](dart.notNull(end) - 1) != core.Uri._RIGHT_BRACKET) {
        core.Uri._fail(host, start, 'Missing end `]` to match `[` in host');
      }
      core.Uri.parseIPv6Address(host, dart.notNull(start) + 1, dart.notNull(end) - 1);
      return host[dartx.substring](start, end)[dartx.toLowerCase]();
    }
    if (!dart.test(strictIPv6)) {
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        if (host[dartx.codeUnitAt](i) == core.Uri._COLON) {
          core.Uri.parseIPv6Address(host, start, end);
          return dart.str`[${host}]`;
        }
      }
    }
    return core.Uri._normalizeRegName(host, start, end);
  }
  static _isRegNameChar(char) {
    return dart.notNull(char) < 127 && (dart.notNull(core.Uri._regNameTable[dartx._get](char[dartx['>>']](4))) & 1 << (dart.notNull(char) & 15)) != 0;
  }
  static _normalizeRegName(host, start, end) {
    let buffer = null;
    let sectionStart = start;
    let index = start;
    let isNormalized = true;
    while (dart.notNull(index) < dart.notNull(end)) {
      let char = host[dartx.codeUnitAt](index);
      if (char == core.Uri._PERCENT) {
        let replacement = core.Uri._normalizeEscape(host, index, true);
        if (replacement == null && isNormalized) {
          index = dart.notNull(index) + 3;
          continue;
        }
        if (buffer == null) buffer = new core.StringBuffer();
        let slice = host[dartx.substring](sectionStart, index);
        if (!isNormalized) slice = slice[dartx.toLowerCase]();
        buffer.write(slice);
        let sourceLength = 3;
        if (replacement == null) {
          replacement = host[dartx.substring](index, dart.notNull(index) + 3);
        } else if (replacement == "%") {
          replacement = "%25";
          sourceLength = 1;
        }
        buffer.write(replacement);
        index = dart.notNull(index) + sourceLength;
        sectionStart = index;
        isNormalized = true;
      } else if (dart.test(core.Uri._isRegNameChar(char))) {
        if (isNormalized && core.Uri._UPPER_CASE_A <= dart.notNull(char) && core.Uri._UPPER_CASE_Z >= dart.notNull(char)) {
          if (buffer == null) buffer = new core.StringBuffer();
          if (dart.notNull(sectionStart) < dart.notNull(index)) {
            buffer.write(host[dartx.substring](sectionStart, index));
            sectionStart = index;
          }
          isNormalized = false;
        }
        index = dart.notNull(index) + 1;
      } else if (dart.test(core.Uri._isGeneralDelimiter(char))) {
        core.Uri._fail(host, index, "Invalid character");
      } else {
        let sourceLength = 1;
        if ((dart.notNull(char) & 64512) == 55296 && dart.notNull(index) + 1 < dart.notNull(end)) {
          let tail = host[dartx.codeUnitAt](dart.notNull(index) + 1);
          if ((dart.notNull(tail) & 64512) == 56320) {
            char = 65536 | (dart.notNull(char) & 1023) << 10 | dart.notNull(tail) & 1023;
            sourceLength = 2;
          }
        }
        if (buffer == null) buffer = new core.StringBuffer();
        let slice = host[dartx.substring](sectionStart, index);
        if (!isNormalized) slice = slice[dartx.toLowerCase]();
        buffer.write(slice);
        buffer.write(core.Uri._escapeChar(char));
        index = dart.notNull(index) + sourceLength;
        sectionStart = index;
      }
    }
    if (buffer == null) return host[dartx.substring](start, end);
    if (dart.notNull(sectionStart) < dart.notNull(end)) {
      let slice = host[dartx.substring](sectionStart, end);
      if (!isNormalized) slice = slice[dartx.toLowerCase]();
      buffer.write(slice);
    }
    return dart.toString(buffer);
  }
  static _makeScheme(scheme, start, end) {
    if (start == end) return "";
    let firstCodeUnit = scheme[dartx.codeUnitAt](start);
    if (!dart.test(core.Uri._isAlphabeticCharacter(firstCodeUnit))) {
      core.Uri._fail(scheme, start, "Scheme not starting with alphabetic character");
    }
    let containsUpperCase = false;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let codeUnit = scheme[dartx.codeUnitAt](i);
      if (!dart.test(core.Uri._isSchemeCharacter(codeUnit))) {
        core.Uri._fail(scheme, i, "Illegal scheme character");
      }
      if (core.Uri._UPPER_CASE_A <= dart.notNull(codeUnit) && dart.notNull(codeUnit) <= core.Uri._UPPER_CASE_Z) {
        containsUpperCase = true;
      }
    }
    scheme = scheme[dartx.substring](start, end);
    if (containsUpperCase) scheme = scheme[dartx.toLowerCase]();
    return scheme;
  }
  static _makeUserInfo(userInfo, start, end) {
    if (userInfo == null) return "";
    return core.Uri._normalize(userInfo, start, end, core.Uri._userinfoTable);
  }
  static _makePath(path, start, end, pathSegments, scheme, hasAuthority) {
    let isFile = scheme == "file";
    let ensureLeadingSlash = isFile || dart.test(hasAuthority);
    if (path == null && pathSegments == null) return isFile ? "/" : "";
    if (path != null && pathSegments != null) {
      dart.throw(new core.ArgumentError('Both path and pathSegments specified'));
    }
    let result = null;
    if (path != null) {
      result = core.Uri._normalize(path, start, end, core.Uri._pathCharOrSlashTable);
    } else {
      result = pathSegments[dartx.map](core.String)(dart.fn(s => core.Uri._uriEncode(core.Uri._pathCharTable, s, convert.UTF8, false), StringToString()))[dartx.join]("/");
    }
    if (dart.test(dart.dload(result, 'isEmpty'))) {
      if (isFile) return "/";
    } else if (ensureLeadingSlash && !dart.test(dart.dsend(result, 'startsWith', '/'))) {
      result = "/" + dart.notNull(core.String._check(result));
    }
    result = core.Uri._normalizePath(core.String._check(result), scheme, hasAuthority);
    return core.String._check(result);
  }
  static _normalizePath(path, scheme, hasAuthority) {
    if (dart.test(scheme[dartx.isEmpty]) && !dart.test(hasAuthority) && !dart.test(path[dartx.startsWith]('/'))) {
      return core.Uri._normalizeRelativePath(path);
    }
    return core.Uri._removeDotSegments(path);
  }
  static _makeQuery(query, start, end, queryParameters) {
    if (query == null && queryParameters == null) return null;
    if (query != null && queryParameters != null) {
      dart.throw(new core.ArgumentError('Both query and queryParameters specified'));
    }
    if (query != null) return core.Uri._normalize(query, start, end, core.Uri._queryCharTable);
    let result = new core.StringBuffer();
    let separator = "";
    function writeParameter(key, value) {
      result.write(separator);
      separator = "&";
      result.write(core.Uri.encodeQueryComponent(key));
      if (value != null && dart.test(value[dartx.isNotEmpty])) {
        result.write("=");
        result.write(core.Uri.encodeQueryComponent(value));
      }
    }
    dart.fn(writeParameter, StringAndStringTovoid());
    queryParameters[dartx.forEach](dart.fn((key, value) => {
      if (value == null || typeof value == 'string') {
        writeParameter(key, core.String._check(value));
      } else {
        let values = core.Iterable._check(value);
        for (let value of values) {
          core.String._check(value);
          writeParameter(key, value);
        }
      }
    }, StringAnddynamicTovoid()));
    return result.toString();
  }
  static _makeFragment(fragment, start, end) {
    if (fragment == null) return null;
    return core.Uri._normalize(fragment, start, end, core.Uri._queryCharTable);
  }
  static _stringOrNullLength(s) {
    return s == null ? 0 : s[dartx.length];
  }
  static _normalizeEscape(source, index, lowerCase) {
    dart.assert(source[dartx.codeUnitAt](index) == core.Uri._PERCENT);
    if (dart.notNull(index) + 2 >= dart.notNull(source[dartx.length])) {
      return "%";
    }
    let firstDigit = source[dartx.codeUnitAt](dart.notNull(index) + 1);
    let secondDigit = source[dartx.codeUnitAt](dart.notNull(index) + 2);
    let firstDigitValue = core.Uri._parseHexDigit(firstDigit);
    let secondDigitValue = core.Uri._parseHexDigit(secondDigit);
    if (dart.notNull(firstDigitValue) < 0 || dart.notNull(secondDigitValue) < 0) {
      return "%";
    }
    let value = dart.notNull(firstDigitValue) * 16 + dart.notNull(secondDigitValue);
    if (dart.test(core.Uri._isUnreservedChar(value))) {
      if (dart.test(lowerCase) && core.Uri._UPPER_CASE_A <= value && core.Uri._UPPER_CASE_Z >= value) {
        value = (value | 32) >>> 0;
      }
      return core.String.fromCharCode(value);
    }
    if (dart.notNull(firstDigit) >= core.Uri._LOWER_CASE_A || dart.notNull(secondDigit) >= core.Uri._LOWER_CASE_A) {
      return source[dartx.substring](index, dart.notNull(index) + 3)[dartx.toUpperCase]();
    }
    return null;
  }
  static _parseHexDigit(char) {
    let digit = (dart.notNull(char) ^ core.Uri._ZERO) >>> 0;
    if (digit <= 9) return digit;
    let lowerCase = (dart.notNull(char) | 32) >>> 0;
    if (core.Uri._LOWER_CASE_A <= lowerCase && lowerCase <= core.Uri._LOWER_CASE_F) {
      return lowerCase - (core.Uri._LOWER_CASE_A - 10);
    }
    return -1;
  }
  static _escapeChar(char) {
    dart.assert(dart.notNull(char) <= 1114111);
    let codeUnits = null;
    if (dart.notNull(char) < 128) {
      codeUnits = ListOfint().new(3);
      codeUnits[dartx._set](0, core.Uri._PERCENT);
      codeUnits[dartx._set](1, core.Uri._hexDigits[dartx.codeUnitAt](char[dartx['>>']](4)));
      codeUnits[dartx._set](2, core.Uri._hexDigits[dartx.codeUnitAt](dart.notNull(char) & 15));
    } else {
      let flag = 192;
      let encodedBytes = 2;
      if (dart.notNull(char) > 2047) {
        flag = 224;
        encodedBytes = 3;
        if (dart.notNull(char) > 65535) {
          encodedBytes = 4;
          flag = 240;
        }
      }
      codeUnits = ListOfint().new(3 * encodedBytes);
      let index = 0;
      while (--encodedBytes >= 0) {
        let byte = (char[dartx['>>']](6 * encodedBytes) & 63 | flag) >>> 0;
        codeUnits[dartx._set](index, core.Uri._PERCENT);
        codeUnits[dartx._set](index + 1, core.Uri._hexDigits[dartx.codeUnitAt](byte[dartx['>>']](4)));
        codeUnits[dartx._set](index + 2, core.Uri._hexDigits[dartx.codeUnitAt](byte & 15));
        index = index + 3;
        flag = 128;
      }
    }
    return core.String.fromCharCodes(codeUnits);
  }
  static _normalize(component, start, end, charTable) {
    let buffer = null;
    let sectionStart = start;
    let index = start;
    while (dart.notNull(index) < dart.notNull(end)) {
      let char = component[dartx.codeUnitAt](index);
      if (dart.notNull(char) < 127 && (dart.notNull(charTable[dartx._get](char[dartx['>>']](4))) & 1 << (dart.notNull(char) & 15)) != 0) {
        index = dart.notNull(index) + 1;
      } else {
        let replacement = null;
        let sourceLength = null;
        if (char == core.Uri._PERCENT) {
          replacement = core.Uri._normalizeEscape(component, index, false);
          if (replacement == null) {
            index = dart.notNull(index) + 3;
            continue;
          }
          if ("%" == replacement) {
            replacement = "%25";
            sourceLength = 1;
          } else {
            sourceLength = 3;
          }
        } else if (dart.test(core.Uri._isGeneralDelimiter(char))) {
          core.Uri._fail(component, index, "Invalid character");
        } else {
          sourceLength = 1;
          if ((dart.notNull(char) & 64512) == 55296) {
            if (dart.notNull(index) + 1 < dart.notNull(end)) {
              let tail = component[dartx.codeUnitAt](dart.notNull(index) + 1);
              if ((dart.notNull(tail) & 64512) == 56320) {
                sourceLength = 2;
                char = 65536 | (dart.notNull(char) & 1023) << 10 | dart.notNull(tail) & 1023;
              }
            }
          }
          replacement = core.Uri._escapeChar(char);
        }
        if (buffer == null) buffer = new core.StringBuffer();
        buffer.write(component[dartx.substring](sectionStart, index));
        buffer.write(replacement);
        index = dart.notNull(index) + dart.notNull(sourceLength);
        sectionStart = index;
      }
    }
    if (buffer == null) {
      return component[dartx.substring](start, end);
    }
    if (dart.notNull(sectionStart) < dart.notNull(end)) {
      buffer.write(component[dartx.substring](sectionStart, end));
    }
    return dart.toString(buffer);
  }
  static _isSchemeCharacter(ch) {
    return dart.notNull(ch) < 128 && (dart.notNull(core.Uri._schemeTable[dartx._get](ch[dartx['>>']](4))) & 1 << (dart.notNull(ch) & 15)) != 0;
  }
  static _isGeneralDelimiter(ch) {
    return dart.notNull(ch) <= core.Uri._RIGHT_BRACKET && (dart.notNull(core.Uri._genDelimitersTable[dartx._get](ch[dartx['>>']](4))) & 1 << (dart.notNull(ch) & 15)) != 0;
  }
  get isAbsolute() {
    return this.scheme != "" && this.fragment == "";
  }
  [_mergePaths](base, reference) {
    let backCount = 0;
    let refStart = 0;
    while (dart.test(reference[dartx.startsWith]("../", refStart))) {
      refStart = refStart + 3;
      backCount++;
    }
    let baseEnd = base[dartx.lastIndexOf]('/');
    while (dart.notNull(baseEnd) > 0 && backCount > 0) {
      let newEnd = base[dartx.lastIndexOf]('/', dart.notNull(baseEnd) - 1);
      if (dart.notNull(newEnd) < 0) {
        break;
      }
      let delta = dart.notNull(baseEnd) - dart.notNull(newEnd);
      if ((delta == 2 || delta == 3) && base[dartx.codeUnitAt](dart.notNull(newEnd) + 1) == core.Uri._DOT && (delta == 2 || base[dartx.codeUnitAt](dart.notNull(newEnd) + 2) == core.Uri._DOT)) {
        break;
      }
      baseEnd = newEnd;
      backCount--;
    }
    return base[dartx.replaceRange](dart.notNull(baseEnd) + 1, null, reference[dartx.substring](refStart - 3 * backCount));
  }
  static _mayContainDotSegments(path) {
    if (dart.test(path[dartx.startsWith]('.'))) return true;
    let index = path[dartx.indexOf]("/.");
    return index != -1;
  }
  static _removeDotSegments(path) {
    if (!dart.test(core.Uri._mayContainDotSegments(path))) return path;
    dart.assert(path[dartx.isNotEmpty]);
    let output = JSArrayOfString().of([]);
    let appendSlash = false;
    for (let segment of path[dartx.split]("/")) {
      appendSlash = false;
      if (segment == "..") {
        if (dart.test(output[dartx.isNotEmpty])) {
          output[dartx.removeLast]();
          if (dart.test(output[dartx.isEmpty])) {
            output[dartx.add]("");
          }
        }
        appendSlash = true;
      } else if ("." == segment) {
        appendSlash = true;
      } else {
        output[dartx.add](segment);
      }
    }
    if (appendSlash) output[dartx.add]("");
    return output[dartx.join]("/");
  }
  static _normalizeRelativePath(path) {
    dart.assert(!dart.test(path[dartx.startsWith]('/')));
    if (!dart.test(core.Uri._mayContainDotSegments(path))) return path;
    dart.assert(path[dartx.isNotEmpty]);
    let output = JSArrayOfString().of([]);
    let appendSlash = false;
    for (let segment of path[dartx.split]("/")) {
      appendSlash = false;
      if (".." == segment) {
        if (!dart.test(output[dartx.isEmpty]) && output[dartx.last] != "..") {
          output[dartx.removeLast]();
          appendSlash = true;
        } else {
          output[dartx.add]("..");
        }
      } else if ("." == segment) {
        appendSlash = true;
      } else {
        output[dartx.add](segment);
      }
    }
    if (dart.test(output[dartx.isEmpty]) || output[dartx.length] == 1 && dart.test(output[dartx._get](0)[dartx.isEmpty])) {
      return "./";
    }
    if (appendSlash || output[dartx.last] == '..') output[dartx.add]("");
    return output[dartx.join]("/");
  }
  resolve(reference) {
    return this.resolveUri(core.Uri.parse(reference));
  }
  resolveUri(reference) {
    let targetScheme = null;
    let targetUserInfo = "";
    let targetHost = null;
    let targetPort = null;
    let targetPath = null;
    let targetQuery = null;
    if (dart.test(reference.scheme[dartx.isNotEmpty])) {
      targetScheme = reference.scheme;
      if (dart.test(reference.hasAuthority)) {
        targetUserInfo = reference.userInfo;
        targetHost = reference.host;
        targetPort = dart.test(reference.hasPort) ? reference.port : null;
      }
      targetPath = core.Uri._removeDotSegments(reference.path);
      if (dart.test(reference.hasQuery)) {
        targetQuery = reference.query;
      }
    } else {
      targetScheme = this.scheme;
      if (dart.test(reference.hasAuthority)) {
        targetUserInfo = reference.userInfo;
        targetHost = reference.host;
        targetPort = core.Uri._makePort(dart.test(reference.hasPort) ? reference.port : null, targetScheme);
        targetPath = core.Uri._removeDotSegments(reference.path);
        if (dart.test(reference.hasQuery)) targetQuery = reference.query;
      } else {
        targetUserInfo = this[_userInfo];
        targetHost = this[_host];
        targetPort = this[_port];
        if (reference.path == "") {
          targetPath = this[_path];
          if (dart.test(reference.hasQuery)) {
            targetQuery = reference.query;
          } else {
            targetQuery = this[_query];
          }
        } else {
          if (dart.test(reference.hasAbsolutePath)) {
            targetPath = core.Uri._removeDotSegments(reference.path);
          } else {
            if (dart.test(this.hasEmptyPath)) {
              if (!dart.test(this.hasScheme) && !dart.test(this.hasAuthority)) {
                targetPath = reference.path;
              } else {
                targetPath = core.Uri._removeDotSegments("/" + dart.notNull(reference.path));
              }
            } else {
              let mergedPath = this[_mergePaths](this[_path], reference.path);
              if (dart.test(this.hasScheme) || dart.test(this.hasAuthority) || dart.test(this.hasAbsolutePath)) {
                targetPath = core.Uri._removeDotSegments(mergedPath);
              } else {
                targetPath = core.Uri._normalizeRelativePath(mergedPath);
              }
            }
          }
          if (dart.test(reference.hasQuery)) targetQuery = reference.query;
        }
      }
    }
    let fragment = dart.test(reference.hasFragment) ? reference.fragment : null;
    return new core.Uri._internal(targetScheme, targetUserInfo, targetHost, targetPort, targetPath, targetQuery, fragment);
  }
  get hasScheme() {
    return this.scheme[dartx.isNotEmpty];
  }
  get hasAuthority() {
    return this[_host] != null;
  }
  get hasPort() {
    return this[_port] != null;
  }
  get hasQuery() {
    return this[_query] != null;
  }
  get hasFragment() {
    return this[_fragment] != null;
  }
  get hasEmptyPath() {
    return this[_path][dartx.isEmpty];
  }
  get hasAbsolutePath() {
    return this[_path][dartx.startsWith]('/');
  }
  get origin() {
    if (this.scheme == "" || this[_host] == null || this[_host] == "") {
      dart.throw(new core.StateError(dart.str`Cannot use origin without a scheme: ${this}`));
    }
    if (this.scheme != "http" && this.scheme != "https") {
      dart.throw(new core.StateError(dart.str`Origin is only applicable schemes http and https: ${this}`));
    }
    if (this[_port] == null) return dart.str`${this.scheme}://${this[_host]}`;
    return dart.str`${this.scheme}://${this[_host]}:${this[_port]}`;
  }
  toFilePath(opts) {
    let windows = opts && 'windows' in opts ? opts.windows : null;
    if (this.scheme != "" && this.scheme != "file") {
      dart.throw(new core.UnsupportedError(dart.str`Cannot extract a file path from a ${this.scheme} URI`));
    }
    if (this.query != "") {
      dart.throw(new core.UnsupportedError("Cannot extract a file path from a URI with a query component"));
    }
    if (this.fragment != "") {
      dart.throw(new core.UnsupportedError("Cannot extract a file path from a URI with a fragment component"));
    }
    if (windows == null) windows = core.Uri._isWindows;
    return dart.test(windows) ? this[_toWindowsFilePath]() : this[_toFilePath]();
  }
  [_toFilePath]() {
    if (this.host != "") {
      dart.throw(new core.UnsupportedError("Cannot extract a non-Windows file path from a file URI " + "with an authority"));
    }
    core.Uri._checkNonWindowsPathReservedCharacters(this.pathSegments, false);
    let result = new core.StringBuffer();
    if (dart.test(this[_isPathAbsolute])) result.write("/");
    result.writeAll(this.pathSegments, "/");
    return result.toString();
  }
  [_toWindowsFilePath]() {
    let hasDriveLetter = false;
    let segments = this.pathSegments;
    if (dart.notNull(segments[dartx.length]) > 0 && segments[dartx._get](0)[dartx.length] == 2 && segments[dartx._get](0)[dartx.codeUnitAt](1) == core.Uri._COLON) {
      core.Uri._checkWindowsDriveLetter(segments[dartx._get](0)[dartx.codeUnitAt](0), false);
      core.Uri._checkWindowsPathReservedCharacters(segments, false, 1);
      hasDriveLetter = true;
    } else {
      core.Uri._checkWindowsPathReservedCharacters(segments, false);
    }
    let result = new core.StringBuffer();
    if (dart.test(this[_isPathAbsolute]) && !hasDriveLetter) result.write("\\");
    if (this.host != "") {
      result.write("\\");
      result.write(this.host);
      result.write("\\");
    }
    result.writeAll(segments, "\\");
    if (hasDriveLetter && segments[dartx.length] == 1) result.write("\\");
    return result.toString();
  }
  get [_isPathAbsolute]() {
    if (this.path == null || dart.test(this.path[dartx.isEmpty])) return false;
    return this.path[dartx.startsWith]('/');
  }
  [_writeAuthority](ss) {
    if (dart.test(this[_userInfo][dartx.isNotEmpty])) {
      ss.write(this[_userInfo]);
      ss.write("@");
    }
    if (this[_host] != null) ss.write(this[_host]);
    if (this[_port] != null) {
      ss.write(":");
      ss.write(this[_port]);
    }
  }
  get data() {
    return this.scheme == "data" ? core.UriData.fromUri(this) : null;
  }
  toString() {
    let sb = new core.StringBuffer();
    core.Uri._addIfNonEmpty(sb, this.scheme, this.scheme, ':');
    if (dart.test(this.hasAuthority) || dart.test(this.path[dartx.startsWith]("//")) || this.scheme == "file") {
      sb.write("//");
      this[_writeAuthority](sb);
    }
    sb.write(this.path);
    if (this[_query] != null) {
      sb.write("?");
      sb.write(this[_query]);
    }
    if (this[_fragment] != null) {
      sb.write("#");
      sb.write(this[_fragment]);
    }
    return sb.toString();
  }
  ['=='](other) {
    if (!core.Uri.is(other)) return false;
    let uri = core.Uri._check(other);
    return this.scheme == uri.scheme && this.hasAuthority == uri.hasAuthority && this.userInfo == uri.userInfo && this.host == uri.host && this.port == uri.port && this.path == uri.path && this.hasQuery == uri.hasQuery && this.query == uri.query && this.hasFragment == uri.hasFragment && this.fragment == uri.fragment;
  }
  get hashCode() {
    function combine(part, current) {
      return core.int._check(dart.dsend(dart.dsend(dart.dsend(current, '*', 31), '+', dart.hashCode(part)), '&', 1073741823));
    }
    dart.fn(combine, dynamicAnddynamicToint());
    return combine(this.scheme, combine(this.userInfo, combine(this.host, combine(this.port, combine(this.path, combine(this.query, combine(this.fragment, 1)))))));
  }
  static _addIfNonEmpty(sb, test, first, second) {
    if ("" != test) {
      sb.write(first);
      sb.write(second);
    }
  }
  static encodeComponent(component) {
    return core.Uri._uriEncode(core.Uri._unreserved2396Table, component, convert.UTF8, false);
  }
  static encodeQueryComponent(component, opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.UTF8;
    return core.Uri._uriEncode(core.Uri._unreservedTable, component, encoding, true);
  }
  static decodeComponent(encodedComponent) {
    return core.Uri._uriDecode(encodedComponent, 0, encodedComponent[dartx.length], convert.UTF8, false);
  }
  static decodeQueryComponent(encodedComponent, opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.UTF8;
    return core.Uri._uriDecode(encodedComponent, 0, encodedComponent[dartx.length], encoding, true);
  }
  static encodeFull(uri) {
    return core.Uri._uriEncode(core.Uri._encodeFullTable, uri, convert.UTF8, false);
  }
  static decodeFull(uri) {
    return core.Uri._uriDecode(uri, 0, uri[dartx.length], convert.UTF8, false);
  }
  static splitQueryString(query, opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.UTF8;
    return query[dartx.split]("&")[dartx.fold](MapOfString$String())(dart.map({}, core.String, core.String), dart.fn((map, element) => {
      let index = element[dartx.indexOf]("=");
      if (index == -1) {
        if (element != "") {
          map[dartx._set](core.Uri.decodeQueryComponent(element, {encoding: encoding}), "");
        }
      } else if (index != 0) {
        let key = element[dartx.substring](0, index);
        let value = element[dartx.substring](dart.notNull(index) + 1);
        map[dartx._set](core.Uri.decodeQueryComponent(key, {encoding: encoding}), core.Uri.decodeQueryComponent(value, {encoding: encoding}));
      }
      return map;
    }, MapOfString$StringAndStringToMapOfString$String()));
  }
  static _createList() {
    return [];
  }
  static _splitQueryStringAll(query, opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.UTF8;
    let result = dart.map();
    let i = 0;
    let start = 0;
    let equalsIndex = -1;
    function parsePair(start, equalsIndex, end) {
      let key = null;
      let value = null;
      if (start == end) return;
      if (dart.notNull(equalsIndex) < 0) {
        key = core.Uri._uriDecode(query, start, end, encoding, true);
        value = "";
      } else {
        key = core.Uri._uriDecode(query, start, equalsIndex, encoding, true);
        value = core.Uri._uriDecode(query, dart.notNull(equalsIndex) + 1, end, encoding, true);
      }
      dart.dsend(result[dartx.putIfAbsent](key, core.Uri._createList), 'add', value);
    }
    dart.fn(parsePair, intAndintAndintTovoid());
    let _equals = 61;
    let _ampersand = 38;
    while (i < dart.notNull(query[dartx.length])) {
      let char = query[dartx.codeUnitAt](i);
      if (char == _equals) {
        if (equalsIndex < 0) equalsIndex = i;
      } else if (char == _ampersand) {
        parsePair(start, equalsIndex, i);
        start = i + 1;
        equalsIndex = -1;
      }
      i++;
    }
    parsePair(start, equalsIndex, i);
    return result;
  }
  static parseIPv4Address(host) {
    function error(msg) {
      dart.throw(new core.FormatException(dart.str`Illegal IPv4 address, ${msg}`));
    }
    dart.fn(error, StringTovoid());
    let bytes = host[dartx.split]('.');
    if (bytes[dartx.length] != 4) {
      error('IPv4 address should contain exactly 4 parts');
    }
    return bytes[dartx.map](core.int)(dart.fn(byteString => {
      let byte = core.int.parse(byteString);
      if (dart.notNull(byte) < 0 || dart.notNull(byte) > 255) {
        error('each part must be in the range of `0..255`');
      }
      return byte;
    }, StringToint()))[dartx.toList]();
  }
  static parseIPv6Address(host, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    if (end == null) end = host[dartx.length];
    function error(msg, position) {
      if (position === void 0) position = null;
      dart.throw(new core.FormatException(dart.str`Illegal IPv6 address, ${msg}`, host, core.int._check(position)));
    }
    dart.fn(error, String__Tovoid());
    function parseHex(start, end) {
      if (dart.notNull(end) - dart.notNull(start) > 4) {
        error('an IPv6 part can only contain a maximum of 4 hex digits', start);
      }
      let value = core.int.parse(host[dartx.substring](start, end), {radix: 16});
      if (dart.notNull(value) < 0 || dart.notNull(value) > (1 << 16) - 1) {
        error('each part must be in the range of `0x0..0xFFFF`', start);
      }
      return value;
    }
    dart.fn(parseHex, intAndintToint());
    if (dart.notNull(host[dartx.length]) < 2) error('address is too short');
    let parts = JSArrayOfint().of([]);
    let wildcardSeen = false;
    let partStart = start;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      if (host[dartx.codeUnitAt](i) == core.Uri._COLON) {
        if (i == start) {
          i = dart.notNull(i) + 1;
          if (host[dartx.codeUnitAt](i) != core.Uri._COLON) {
            error('invalid start colon.', i);
          }
          partStart = i;
        }
        if (i == partStart) {
          if (wildcardSeen) {
            error('only one wildcard `::` is allowed', i);
          }
          wildcardSeen = true;
          parts[dartx.add](-1);
        } else {
          parts[dartx.add](parseHex(partStart, i));
        }
        partStart = dart.notNull(i) + 1;
      }
    }
    if (parts[dartx.length] == 0) error('too few parts');
    let atEnd = partStart == end;
    let isLastWildcard = parts[dartx.last] == -1;
    if (atEnd && !isLastWildcard) {
      error('expected a part after last `:`', end);
    }
    if (!atEnd) {
      try {
        parts[dartx.add](parseHex(partStart, end));
      } catch (e) {
        try {
          let last = core.Uri.parseIPv4Address(host[dartx.substring](partStart, end));
          parts[dartx.add]((dart.notNull(last[dartx._get](0)) << 8 | dart.notNull(last[dartx._get](1))) >>> 0);
          parts[dartx.add]((dart.notNull(last[dartx._get](2)) << 8 | dart.notNull(last[dartx._get](3))) >>> 0);
        } catch (e) {
          error('invalid end of IPv6 address.', partStart);
        }

      }

    }
    if (wildcardSeen) {
      if (dart.notNull(parts[dartx.length]) > 7) {
        error('an address with a wildcard must have less than 7 parts');
      }
    } else if (parts[dartx.length] != 8) {
      error('an address without a wildcard must contain exactly 8 parts');
    }
    let bytes = typed_data.Uint8List.new(16);
    for (let i = 0, index = 0; i < dart.notNull(parts[dartx.length]); i++) {
      let value = parts[dartx._get](i);
      if (value == -1) {
        let wildCardLength = 9 - dart.notNull(parts[dartx.length]);
        for (let j = 0; j < wildCardLength; j++) {
          bytes[dartx._set](index, 0);
          bytes[dartx._set](index + 1, 0);
          index = index + 2;
        }
      } else {
        bytes[dartx._set](index, value[dartx['>>']](8));
        bytes[dartx._set](index + 1, dart.notNull(value) & 255);
        index = index + 2;
      }
    }
    return bytes;
  }
  static _uriEncode(canonicalTable, text, encoding, spaceToPlus) {
    if (core.identical(encoding, convert.UTF8) && dart.test(core.Uri._needsNoEncoding.hasMatch(text))) {
      return text;
    }
    let result = new core.StringBuffer();
    let bytes = encoding.encode(text);
    for (let i = 0; i < dart.notNull(bytes[dartx.length]); i++) {
      let byte = bytes[dartx._get](i);
      if (dart.notNull(byte) < 128 && (dart.notNull(canonicalTable[dartx._get](byte[dartx['>>']](4))) & 1 << (dart.notNull(byte) & 15)) != 0) {
        result.writeCharCode(byte);
      } else if (dart.test(spaceToPlus) && byte == core.Uri._SPACE) {
        result.write('+');
      } else {
        let hexDigits = '0123456789ABCDEF';
        result.write('%');
        result.write(hexDigits[dartx._get](dart.notNull(byte) >> 4 & 15));
        result.write(hexDigits[dartx._get](dart.notNull(byte) & 15));
      }
    }
    return result.toString();
  }
  static _hexCharPairToByte(s, pos) {
    let byte = 0;
    for (let i = 0; i < 2; i++) {
      let charCode = s[dartx.codeUnitAt](dart.notNull(pos) + i);
      if (48 <= dart.notNull(charCode) && dart.notNull(charCode) <= 57) {
        byte = byte * 16 + dart.notNull(charCode) - 48;
      } else {
        charCode = (dart.notNull(charCode) | 32) >>> 0;
        if (97 <= dart.notNull(charCode) && dart.notNull(charCode) <= 102) {
          byte = byte * 16 + dart.notNull(charCode) - 87;
        } else {
          dart.throw(new core.ArgumentError("Invalid URL encoding"));
        }
      }
    }
    return byte;
  }
  static _uriDecode(text, start, end, encoding, plusToSpace) {
    dart.assert(0 <= dart.notNull(start));
    dart.assert(dart.notNull(start) <= dart.notNull(end));
    dart.assert(dart.notNull(end) <= dart.notNull(text[dartx.length]));
    dart.assert(encoding != null);
    let simple = true;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let codeUnit = text[dartx.codeUnitAt](i);
      if (dart.notNull(codeUnit) > 127 || codeUnit == core.Uri._PERCENT || dart.test(plusToSpace) && codeUnit == core.Uri._PLUS) {
        simple = false;
        break;
      }
    }
    let bytes = null;
    if (simple) {
      if (dart.equals(convert.UTF8, encoding) || dart.equals(convert.LATIN1, encoding) || dart.equals(convert.ASCII, encoding)) {
        return text[dartx.substring](start, end);
      } else {
        bytes = text[dartx.substring](start, end)[dartx.codeUnits];
      }
    } else {
      bytes = ListOfint().new();
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let codeUnit = text[dartx.codeUnitAt](i);
        if (dart.notNull(codeUnit) > 127) {
          dart.throw(new core.ArgumentError("Illegal percent encoding in URI"));
        }
        if (codeUnit == core.Uri._PERCENT) {
          if (dart.notNull(i) + 3 > dart.notNull(text[dartx.length])) {
            dart.throw(new core.ArgumentError('Truncated URI'));
          }
          bytes[dartx.add](core.Uri._hexCharPairToByte(text, dart.notNull(i) + 1));
          i = dart.notNull(i) + 2;
        } else if (dart.test(plusToSpace) && codeUnit == core.Uri._PLUS) {
          bytes[dartx.add](core.Uri._SPACE);
        } else {
          bytes[dartx.add](codeUnit);
        }
      }
    }
    return encoding.decode(bytes);
  }
  static _isAlphabeticCharacter(codeUnit) {
    let lowerCase = (dart.notNull(codeUnit) | 32) >>> 0;
    return core.Uri._LOWER_CASE_A <= lowerCase && lowerCase <= core.Uri._LOWER_CASE_Z;
  }
  static _isUnreservedChar(char) {
    return dart.notNull(char) < 127 && (dart.notNull(core.Uri._unreservedTable[dartx._get](char[dartx['>>']](4))) & 1 << (dart.notNull(char) & 15)) != 0;
  }
};
dart.defineNamedConstructor(core.Uri, '_internal');
dart.setSignature(core.Uri, {
  constructors: () => ({
    _internal: dart.definiteFunctionType(core.Uri, [core.String, core.String, core.String, core.int, core.String, core.String, core.String]),
    new: dart.definiteFunctionType(core.Uri, [], {scheme: core.String, userInfo: core.String, host: core.String, port: core.int, path: core.String, pathSegments: IterableOfString(), query: core.String, queryParameters: MapOfString$dynamic(), fragment: core.String}),
    http: dart.definiteFunctionType(core.Uri, [core.String, core.String], [MapOfString$String()]),
    https: dart.definiteFunctionType(core.Uri, [core.String, core.String], [MapOfString$String()]),
    file: dart.definiteFunctionType(core.Uri, [core.String], {windows: core.bool}),
    directory: dart.definiteFunctionType(core.Uri, [core.String], {windows: core.bool}),
    dataFromString: dart.definiteFunctionType(core.Uri, [core.String], {mimeType: core.String, encoding: convert.Encoding, parameters: MapOfString$String(), base64: core.bool}),
    dataFromBytes: dart.definiteFunctionType(core.Uri, [ListOfint()], {mimeType: dart.dynamic, parameters: MapOfString$String(), percentEncoded: dart.dynamic})
  }),
  fields: () => ({
    scheme: core.String,
    [_userInfo]: core.String,
    [_host]: core.String,
    [_port]: core.int,
    [_path]: core.String,
    [_query]: core.String,
    [_fragment]: core.String,
    [_pathSegments]: ListOfString(),
    [_queryParameters]: MapOfString$String(),
    [_queryParameterLists]: MapOfString$ListOfString()
  }),
  getters: () => ({
    authority: dart.definiteFunctionType(core.String, []),
    userInfo: dart.definiteFunctionType(core.String, []),
    host: dart.definiteFunctionType(core.String, []),
    port: dart.definiteFunctionType(core.int, []),
    path: dart.definiteFunctionType(core.String, []),
    query: dart.definiteFunctionType(core.String, []),
    fragment: dart.definiteFunctionType(core.String, []),
    pathSegments: dart.definiteFunctionType(core.List$(core.String), []),
    queryParameters: dart.definiteFunctionType(core.Map$(core.String, core.String), []),
    queryParametersAll: dart.definiteFunctionType(core.Map$(core.String, core.List$(core.String)), []),
    isAbsolute: dart.definiteFunctionType(core.bool, []),
    hasScheme: dart.definiteFunctionType(core.bool, []),
    hasAuthority: dart.definiteFunctionType(core.bool, []),
    hasPort: dart.definiteFunctionType(core.bool, []),
    hasQuery: dart.definiteFunctionType(core.bool, []),
    hasFragment: dart.definiteFunctionType(core.bool, []),
    hasEmptyPath: dart.definiteFunctionType(core.bool, []),
    hasAbsolutePath: dart.definiteFunctionType(core.bool, []),
    origin: dart.definiteFunctionType(core.String, []),
    [_isPathAbsolute]: dart.definiteFunctionType(core.bool, []),
    data: dart.definiteFunctionType(core.UriData, [])
  }),
  methods: () => ({
    replace: dart.definiteFunctionType(core.Uri, [], {scheme: core.String, userInfo: core.String, host: core.String, port: core.int, path: core.String, pathSegments: IterableOfString(), query: core.String, queryParameters: MapOfString$dynamic(), fragment: core.String}),
    removeFragment: dart.definiteFunctionType(core.Uri, []),
    normalizePath: dart.definiteFunctionType(core.Uri, []),
    [_mergePaths]: dart.definiteFunctionType(core.String, [core.String, core.String]),
    resolve: dart.definiteFunctionType(core.Uri, [core.String]),
    resolveUri: dart.definiteFunctionType(core.Uri, [core.Uri]),
    toFilePath: dart.definiteFunctionType(core.String, [], {windows: core.bool}),
    [_toFilePath]: dart.definiteFunctionType(core.String, []),
    [_toWindowsFilePath]: dart.definiteFunctionType(core.String, []),
    [_writeAuthority]: dart.definiteFunctionType(dart.void, [core.StringSink])
  }),
  sfields: () => ({
    _SPACE: core.int,
    _DOUBLE_QUOTE: core.int,
    _NUMBER_SIGN: core.int,
    _PERCENT: core.int,
    _ASTERISK: core.int,
    _PLUS: core.int,
    _DOT: core.int,
    _SLASH: core.int,
    _ZERO: core.int,
    _NINE: core.int,
    _COLON: core.int,
    _LESS: core.int,
    _GREATER: core.int,
    _QUESTION: core.int,
    _AT_SIGN: core.int,
    _UPPER_CASE_A: core.int,
    _UPPER_CASE_F: core.int,
    _UPPER_CASE_Z: core.int,
    _LEFT_BRACKET: core.int,
    _BACKSLASH: core.int,
    _RIGHT_BRACKET: core.int,
    _LOWER_CASE_A: core.int,
    _LOWER_CASE_F: core.int,
    _LOWER_CASE_Z: core.int,
    _BAR: core.int,
    _hexDigits: core.String,
    _unreservedTable: ListOfint(),
    _unreserved2396Table: ListOfint(),
    _encodeFullTable: ListOfint(),
    _schemeTable: ListOfint(),
    _schemeLowerTable: ListOfint(),
    _subDelimitersTable: ListOfint(),
    _genDelimitersTable: ListOfint(),
    _userinfoTable: ListOfint(),
    _regNameTable: ListOfint(),
    _pathCharTable: ListOfint(),
    _pathCharOrSlashTable: ListOfint(),
    _queryCharTable: ListOfint(),
    _needsNoEncoding: core.RegExp
  }),
  sgetters: () => ({
    base: dart.definiteFunctionType(core.Uri, []),
    _isWindows: dart.definiteFunctionType(core.bool, [])
  }),
  statics: () => ({
    _defaultPort: dart.definiteFunctionType(core.int, [core.String]),
    parse: dart.definiteFunctionType(core.Uri, [core.String], [core.int, core.int]),
    _fail: dart.definiteFunctionType(dart.void, [core.String, core.int, core.String]),
    _makeHttpUri: dart.definiteFunctionType(core.Uri, [core.String, core.String, core.String, MapOfString$String()]),
    _checkNonWindowsPathReservedCharacters: dart.definiteFunctionType(dart.dynamic, [ListOfString(), core.bool]),
    _checkWindowsPathReservedCharacters: dart.definiteFunctionType(dart.dynamic, [ListOfString(), core.bool], [core.int]),
    _checkWindowsDriveLetter: dart.definiteFunctionType(dart.dynamic, [core.int, core.bool]),
    _makeFileUri: dart.definiteFunctionType(dart.dynamic, [core.String, core.bool]),
    _makeWindowsFileUrl: dart.definiteFunctionType(dart.dynamic, [core.String, core.bool]),
    _makePort: dart.definiteFunctionType(core.int, [core.int, core.String]),
    _makeHost: dart.definiteFunctionType(core.String, [core.String, core.int, core.int, core.bool]),
    _isRegNameChar: dart.definiteFunctionType(core.bool, [core.int]),
    _normalizeRegName: dart.definiteFunctionType(core.String, [core.String, core.int, core.int]),
    _makeScheme: dart.definiteFunctionType(core.String, [core.String, core.int, core.int]),
    _makeUserInfo: dart.definiteFunctionType(core.String, [core.String, core.int, core.int]),
    _makePath: dart.definiteFunctionType(core.String, [core.String, core.int, core.int, IterableOfString(), core.String, core.bool]),
    _normalizePath: dart.definiteFunctionType(core.String, [core.String, core.String, core.bool]),
    _makeQuery: dart.definiteFunctionType(core.String, [core.String, core.int, core.int, MapOfString$dynamic()]),
    _makeFragment: dart.definiteFunctionType(core.String, [core.String, core.int, core.int]),
    _stringOrNullLength: dart.definiteFunctionType(core.int, [core.String]),
    _normalizeEscape: dart.definiteFunctionType(core.String, [core.String, core.int, core.bool]),
    _parseHexDigit: dart.definiteFunctionType(core.int, [core.int]),
    _escapeChar: dart.definiteFunctionType(core.String, [core.int]),
    _normalize: dart.definiteFunctionType(core.String, [core.String, core.int, core.int, ListOfint()]),
    _isSchemeCharacter: dart.definiteFunctionType(core.bool, [core.int]),
    _isGeneralDelimiter: dart.definiteFunctionType(core.bool, [core.int]),
    _mayContainDotSegments: dart.definiteFunctionType(core.bool, [core.String]),
    _removeDotSegments: dart.definiteFunctionType(core.String, [core.String]),
    _normalizeRelativePath: dart.definiteFunctionType(core.String, [core.String]),
    _addIfNonEmpty: dart.definiteFunctionType(dart.void, [core.StringBuffer, core.String, core.String, core.String]),
    encodeComponent: dart.definiteFunctionType(core.String, [core.String]),
    encodeQueryComponent: dart.definiteFunctionType(core.String, [core.String], {encoding: convert.Encoding}),
    decodeComponent: dart.definiteFunctionType(core.String, [core.String]),
    decodeQueryComponent: dart.definiteFunctionType(core.String, [core.String], {encoding: convert.Encoding}),
    encodeFull: dart.definiteFunctionType(core.String, [core.String]),
    decodeFull: dart.definiteFunctionType(core.String, [core.String]),
    splitQueryString: dart.definiteFunctionType(core.Map$(core.String, core.String), [core.String], {encoding: convert.Encoding}),
    _createList: dart.definiteFunctionType(core.List, []),
    _splitQueryStringAll: dart.definiteFunctionType(core.Map, [core.String], {encoding: convert.Encoding}),
    parseIPv4Address: dart.definiteFunctionType(core.List$(core.int), [core.String]),
    parseIPv6Address: dart.definiteFunctionType(core.List$(core.int), [core.String], [core.int, core.int]),
    _uriEncode: dart.definiteFunctionType(core.String, [ListOfint(), core.String, convert.Encoding, core.bool]),
    _hexCharPairToByte: dart.definiteFunctionType(core.int, [core.String, core.int]),
    _uriDecode: dart.definiteFunctionType(core.String, [core.String, core.int, core.int, convert.Encoding, core.bool]),
    _isAlphabeticCharacter: dart.definiteFunctionType(core.bool, [core.int]),
    _isUnreservedChar: dart.definiteFunctionType(core.bool, [core.int])
  }),
  names: ['_defaultPort', 'parse', '_fail', '_makeHttpUri', '_checkNonWindowsPathReservedCharacters', '_checkWindowsPathReservedCharacters', '_checkWindowsDriveLetter', '_makeFileUri', '_makeWindowsFileUrl', '_makePort', '_makeHost', '_isRegNameChar', '_normalizeRegName', '_makeScheme', '_makeUserInfo', '_makePath', '_normalizePath', '_makeQuery', '_makeFragment', '_stringOrNullLength', '_normalizeEscape', '_parseHexDigit', '_escapeChar', '_normalize', '_isSchemeCharacter', '_isGeneralDelimiter', '_mayContainDotSegments', '_removeDotSegments', '_normalizeRelativePath', '_addIfNonEmpty', 'encodeComponent', 'encodeQueryComponent', 'decodeComponent', 'decodeQueryComponent', 'encodeFull', 'decodeFull', 'splitQueryString', '_createList', '_splitQueryStringAll', 'parseIPv4Address', 'parseIPv6Address', '_uriEncode', '_hexCharPairToByte', '_uriDecode', '_isAlphabeticCharacter', '_isUnreservedChar']
});
core.Uri._SPACE = 32;
core.Uri._DOUBLE_QUOTE = 34;
core.Uri._NUMBER_SIGN = 35;
core.Uri._PERCENT = 37;
core.Uri._ASTERISK = 42;
core.Uri._PLUS = 43;
core.Uri._DOT = 46;
core.Uri._SLASH = 47;
core.Uri._ZERO = 48;
core.Uri._NINE = 57;
core.Uri._COLON = 58;
core.Uri._LESS = 60;
core.Uri._GREATER = 62;
core.Uri._QUESTION = 63;
core.Uri._AT_SIGN = 64;
core.Uri._UPPER_CASE_A = 65;
core.Uri._UPPER_CASE_F = 70;
core.Uri._UPPER_CASE_Z = 90;
core.Uri._LEFT_BRACKET = 91;
core.Uri._BACKSLASH = 92;
core.Uri._RIGHT_BRACKET = 93;
core.Uri._LOWER_CASE_A = 97;
core.Uri._LOWER_CASE_F = 102;
core.Uri._LOWER_CASE_Z = 122;
core.Uri._BAR = 124;
core.Uri._hexDigits = "0123456789ABCDEF";
core.Uri._unreservedTable = dart.constList([0, 0, 24576, 1023, 65534, 34815, 65534, 18431], core.int);
core.Uri._unreserved2396Table = dart.constList([0, 0, 26498, 1023, 65534, 34815, 65534, 18431], core.int);
core.Uri._encodeFullTable = dart.constList([0, 0, 65498, 45055, 65535, 34815, 65534, 18431], core.int);
core.Uri._schemeTable = dart.constList([0, 0, 26624, 1023, 65534, 2047, 65534, 2047], core.int);
core.Uri._schemeLowerTable = dart.constList([0, 0, 26624, 1023, 0, 0, 65534, 2047], core.int);
core.Uri._subDelimitersTable = dart.constList([0, 0, 32722, 11263, 65534, 34815, 65534, 18431], core.int);
core.Uri._genDelimitersTable = dart.constList([0, 0, 32776, 33792, 1, 10240, 0, 0], core.int);
core.Uri._userinfoTable = dart.constList([0, 0, 32722, 12287, 65534, 34815, 65534, 18431], core.int);
core.Uri._regNameTable = dart.constList([0, 0, 32754, 11263, 65534, 34815, 65534, 18431], core.int);
core.Uri._pathCharTable = dart.constList([0, 0, 32722, 12287, 65535, 34815, 65534, 18431], core.int);
core.Uri._pathCharOrSlashTable = dart.constList([0, 0, 65490, 12287, 65535, 34815, 65534, 18431], core.int);
core.Uri._queryCharTable = dart.constList([0, 0, 65490, 45055, 65535, 34815, 65534, 18431], core.int);
dart.defineLazy(core.Uri, {
  get _needsNoEncoding() {
    return core.RegExp.new('^[\\-\\.0-9A-Z_a-z~]*$');
  }
});
const _text = Symbol('_text');
const _separatorIndices = Symbol('_separatorIndices');
const _uriCache = Symbol('_uriCache');
core.UriData = class UriData extends core.Object {
  _(text, separatorIndices, uriCache) {
    this[_text] = text;
    this[_separatorIndices] = separatorIndices;
    this[_uriCache] = uriCache;
  }
  static fromString(content, opts) {
    let mimeType = opts && 'mimeType' in opts ? opts.mimeType : null;
    let encoding = opts && 'encoding' in opts ? opts.encoding : null;
    let parameters = opts && 'parameters' in opts ? opts.parameters : null;
    let base64 = opts && 'base64' in opts ? opts.base64 : false;
    let buffer = new core.StringBuffer();
    let indices = JSArrayOfint().of([core.UriData._noScheme]);
    let charsetName = null;
    let encodingName = null;
    if (parameters != null) charsetName = parameters[dartx._get]("charset");
    if (encoding == null) {
      if (charsetName != null) {
        encoding = convert.Encoding.getByName(charsetName);
      }
    } else if (charsetName == null) {
      encodingName = encoding.name;
    }
    let t = encoding;
    t == null ? encoding = convert.ASCII : t;
    core.UriData._writeUri(mimeType, encodingName, parameters, buffer, indices);
    indices[dartx.add](buffer.length);
    if (dart.test(base64)) {
      buffer.write(';base64,');
      indices[dartx.add](dart.notNull(buffer.length) - 1);
      buffer.write(encoding.fuse(core.String)(convert.BASE64).encode(content));
    } else {
      buffer.write(',');
      core.UriData._uriEncodeBytes(core.UriData._uricTable, encoding.encode(content), buffer);
    }
    return new core.UriData._(buffer.toString(), indices, null);
  }
  static fromBytes(bytes, opts) {
    let mimeType = opts && 'mimeType' in opts ? opts.mimeType : "application/octet-stream";
    let parameters = opts && 'parameters' in opts ? opts.parameters : null;
    let percentEncoded = opts && 'percentEncoded' in opts ? opts.percentEncoded : false;
    let buffer = new core.StringBuffer();
    let indices = JSArrayOfint().of([core.UriData._noScheme]);
    core.UriData._writeUri(core.String._check(mimeType), null, parameters, buffer, indices);
    indices[dartx.add](buffer.length);
    if (dart.test(percentEncoded)) {
      buffer.write(',');
      core.UriData._uriEncodeBytes(core.UriData._uricTable, bytes, buffer);
    } else {
      buffer.write(';base64,');
      indices[dartx.add](dart.notNull(buffer.length) - 1);
      convert.BASE64.encoder.startChunkedConversion(convert.StringConversionSink.fromStringSink(buffer)).addSlice(bytes, 0, bytes[dartx.length], true);
    }
    return new core.UriData._(buffer.toString(), indices, null);
  }
  static fromUri(uri) {
    if (uri.scheme != "data") {
      dart.throw(new core.ArgumentError.value(uri, "uri", "Scheme must be 'data'"));
    }
    if (dart.test(uri.hasAuthority)) {
      dart.throw(new core.ArgumentError.value(uri, "uri", "Data uri must not have authority"));
    }
    if (dart.test(uri.hasFragment)) {
      dart.throw(new core.ArgumentError.value(uri, "uri", "Data uri must not have a fragment part"));
    }
    if (!dart.test(uri.hasQuery)) {
      return core.UriData._parse(uri.path, 0, uri);
    }
    return core.UriData._parse(dart.str`${uri}`, 5, uri);
  }
  static _writeUri(mimeType, charsetName, parameters, buffer, indices) {
    if (mimeType == null || mimeType == "text/plain") {
      mimeType = "";
    }
    if (dart.test(mimeType[dartx.isEmpty]) || core.identical(mimeType, "application/octet-stream")) {
      buffer.write(mimeType);
    } else {
      let slashIndex = core.UriData._validateMimeType(mimeType);
      if (dart.notNull(slashIndex) < 0) {
        dart.throw(new core.ArgumentError.value(mimeType, "mimeType", "Invalid MIME type"));
      }
      buffer.write(core.Uri._uriEncode(core.UriData._tokenCharTable, mimeType[dartx.substring](0, slashIndex), convert.UTF8, false));
      buffer.write("/");
      buffer.write(core.Uri._uriEncode(core.UriData._tokenCharTable, mimeType[dartx.substring](dart.notNull(slashIndex) + 1), convert.UTF8, false));
    }
    if (charsetName != null) {
      if (indices != null) {
        indices[dartx.add](buffer.length);
        indices[dartx.add](dart.notNull(buffer.length) + 8);
      }
      buffer.write(";charset=");
      buffer.write(core.Uri._uriEncode(core.UriData._tokenCharTable, charsetName, convert.UTF8, false));
    }
    dart.nullSafe(parameters, _ => _[dartx.forEach](dart.fn((key, value) => {
      if (dart.test(key[dartx.isEmpty])) {
        dart.throw(new core.ArgumentError.value("", "Parameter names must not be empty"));
      }
      if (dart.test(value[dartx.isEmpty])) {
        dart.throw(new core.ArgumentError.value("", "Parameter values must not be empty", dart.str`parameters["${key}"]`));
      }
      if (indices != null) indices[dartx.add](buffer.length);
      buffer.write(';');
      buffer.write(core.Uri._uriEncode(core.UriData._tokenCharTable, key, convert.UTF8, false));
      if (indices != null) indices[dartx.add](buffer.length);
      buffer.write('=');
      buffer.write(core.Uri._uriEncode(core.UriData._tokenCharTable, value, convert.UTF8, false));
    }, StringAndStringTovoid())));
  }
  static _validateMimeType(mimeType) {
    let slashIndex = -1;
    for (let i = 0; i < dart.notNull(mimeType[dartx.length]); i++) {
      let char = mimeType[dartx.codeUnitAt](i);
      if (char != core.Uri._SLASH) continue;
      if (slashIndex < 0) {
        slashIndex = i;
        continue;
      }
      return -1;
    }
    return slashIndex;
  }
  static parse(uri) {
    if (!dart.test(uri[dartx.startsWith]("data:"))) {
      dart.throw(new core.FormatException("Does not start with 'data:'", uri, 0));
    }
    return core.UriData._parse(uri, 5, null);
  }
  get uri() {
    if (this[_uriCache] != null) return this[_uriCache];
    let path = this[_text];
    let query = null;
    let colonIndex = this[_separatorIndices][dartx._get](0);
    let queryIndex = this[_text][dartx.indexOf]('?', dart.notNull(colonIndex) + 1);
    let end = null;
    if (dart.notNull(queryIndex) >= 0) {
      query = this[_text][dartx.substring](dart.notNull(queryIndex) + 1);
      end = queryIndex;
    }
    path = this[_text][dartx.substring](dart.notNull(colonIndex) + 1, end);
    this[_uriCache] = new core.Uri._internal("data", "", null, null, path, query, null);
    return this[_uriCache];
  }
  get mimeType() {
    let start = dart.notNull(this[_separatorIndices][dartx._get](0)) + 1;
    let end = this[_separatorIndices][dartx._get](1);
    if (start == end) return "text/plain";
    return core.Uri._uriDecode(this[_text], start, end, convert.UTF8, false);
  }
  get charset() {
    let parameterStart = 1;
    let parameterEnd = dart.notNull(this[_separatorIndices][dartx.length]) - 1;
    if (dart.test(this.isBase64)) {
      parameterEnd = parameterEnd - 1;
    }
    for (let i = parameterStart; i < parameterEnd; i = i + 2) {
      let keyStart = dart.notNull(this[_separatorIndices][dartx._get](i)) + 1;
      let keyEnd = this[_separatorIndices][dartx._get](i + 1);
      if (keyEnd == keyStart + 7 && dart.test(this[_text][dartx.startsWith]("charset", keyStart))) {
        return core.Uri._uriDecode(this[_text], dart.notNull(keyEnd) + 1, this[_separatorIndices][dartx._get](i + 2), convert.UTF8, false);
      }
    }
    return "US-ASCII";
  }
  get isBase64() {
    return this[_separatorIndices][dartx.length][dartx.isOdd];
  }
  get contentText() {
    return this[_text][dartx.substring](dart.notNull(this[_separatorIndices][dartx.last]) + 1);
  }
  contentAsBytes() {
    let text = this[_text];
    let start = dart.notNull(this[_separatorIndices][dartx.last]) + 1;
    if (dart.test(this.isBase64)) {
      return convert.BASE64.decoder.convert(text, start);
    }
    let percent = 37;
    let length = dart.notNull(text[dartx.length]) - start;
    for (let i = start; i < dart.notNull(text[dartx.length]); i++) {
      let codeUnit = text[dartx.codeUnitAt](i);
      if (codeUnit == percent) {
        i = i + 2;
        length = length - 2;
      }
    }
    let result = typed_data.Uint8List.new(length);
    if (length == text[dartx.length]) {
      result[dartx.setRange](0, length, text[dartx.codeUnits], start);
      return result;
    }
    let index = 0;
    for (let i = start; i < dart.notNull(text[dartx.length]); i++) {
      let codeUnit = text[dartx.codeUnitAt](i);
      if (codeUnit != percent) {
        result[dartx._set](index++, codeUnit);
      } else {
        if (i + 2 < dart.notNull(text[dartx.length])) {
          let digit1 = core.Uri._parseHexDigit(text[dartx.codeUnitAt](i + 1));
          let digit2 = core.Uri._parseHexDigit(text[dartx.codeUnitAt](i + 2));
          if (dart.notNull(digit1) >= 0 && dart.notNull(digit2) >= 0) {
            let byte = dart.notNull(digit1) * 16 + dart.notNull(digit2);
            result[dartx._set](index++, byte);
            i = i + 2;
            continue;
          }
        }
        dart.throw(new core.FormatException("Invalid percent escape", text, i));
      }
    }
    dart.assert(index == result[dartx.length]);
    return result;
  }
  contentAsString(opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : null;
    if (encoding == null) {
      let charset = this.charset;
      encoding = convert.Encoding.getByName(charset);
      if (encoding == null) {
        dart.throw(new core.UnsupportedError(dart.str`Unknown charset: ${charset}`));
      }
    }
    let text = this[_text];
    let start = dart.notNull(this[_separatorIndices][dartx.last]) + 1;
    if (dart.test(this.isBase64)) {
      let converter = convert.BASE64.decoder.fuse(core.String)(encoding.decoder);
      return converter.convert(text[dartx.substring](start));
    }
    return core.Uri._uriDecode(text, start, text[dartx.length], encoding, false);
  }
  get parameters() {
    let result = dart.map({}, core.String, core.String);
    for (let i = 3; i < dart.notNull(this[_separatorIndices][dartx.length]); i = i + 2) {
      let start = dart.notNull(this[_separatorIndices][dartx._get](i - 2)) + 1;
      let equals = this[_separatorIndices][dartx._get](i - 1);
      let end = this[_separatorIndices][dartx._get](i);
      let key = core.Uri._uriDecode(this[_text], start, equals, convert.UTF8, false);
      let value = core.Uri._uriDecode(this[_text], dart.notNull(equals) + 1, end, convert.UTF8, false);
      result[dartx._set](key, value);
    }
    return result;
  }
  static _parse(text, start, sourceUri) {
    dart.assert(start == 0 || start == 5);
    dart.assert(start == 5 == text[dartx.startsWith]("data:"));
    let comma = 44;
    let slash = 47;
    let semicolon = 59;
    let equals = 61;
    let indices = JSArrayOfint().of([dart.notNull(start) - 1]);
    let slashIndex = -1;
    let char = null;
    let i = start;
    for (; dart.notNull(i) < dart.notNull(text[dartx.length]); i = dart.notNull(i) + 1) {
      char = text[dartx.codeUnitAt](i);
      if (dart.equals(char, comma) || dart.equals(char, semicolon)) break;
      if (dart.equals(char, slash)) {
        if (dart.notNull(slashIndex) < 0) {
          slashIndex = i;
          continue;
        }
        dart.throw(new core.FormatException("Invalid MIME type", text, i));
      }
    }
    if (dart.notNull(slashIndex) < 0 && dart.notNull(i) > dart.notNull(start)) {
      dart.throw(new core.FormatException("Invalid MIME type", text, i));
    }
    while (!dart.equals(char, comma)) {
      indices[dartx.add](i);
      i = dart.notNull(i) + 1;
      let equalsIndex = -1;
      for (; dart.notNull(i) < dart.notNull(text[dartx.length]); i = dart.notNull(i) + 1) {
        char = text[dartx.codeUnitAt](i);
        if (dart.equals(char, equals)) {
          if (dart.notNull(equalsIndex) < 0) equalsIndex = i;
        } else if (dart.equals(char, semicolon) || dart.equals(char, comma)) {
          break;
        }
      }
      if (dart.notNull(equalsIndex) >= 0) {
        indices[dartx.add](equalsIndex);
      } else {
        let lastSeparator = indices[dartx.last];
        if (!dart.equals(char, comma) || i != dart.notNull(lastSeparator) + 7 || !dart.test(text[dartx.startsWith]("base64", dart.notNull(lastSeparator) + 1))) {
          dart.throw(new core.FormatException("Expecting '='", text, i));
        }
        break;
      }
    }
    indices[dartx.add](i);
    return new core.UriData._(text, indices, sourceUri);
  }
  static _uriEncodeBytes(canonicalTable, bytes, buffer) {
    let byteOr = 0;
    for (let i = 0; i < dart.notNull(bytes[dartx.length]); i++) {
      let byte = bytes[dartx._get](i);
      byteOr = (dart.notNull(byteOr) | dart.notNull(byte)) >>> 0;
      if (dart.notNull(byte) < 128 && (dart.notNull(canonicalTable[dartx._get](byte[dartx['>>']](4))) & 1 << (dart.notNull(byte) & 15)) != 0) {
        buffer.writeCharCode(byte);
      } else {
        buffer.writeCharCode(core.Uri._PERCENT);
        buffer.writeCharCode(core.Uri._hexDigits[dartx.codeUnitAt](byte[dartx['>>']](4)));
        buffer.writeCharCode(core.Uri._hexDigits[dartx.codeUnitAt](dart.notNull(byte) & 15));
      }
    }
    if ((dart.notNull(byteOr) & ~255) != 0) {
      for (let i = 0; i < dart.notNull(bytes[dartx.length]); i++) {
        let byte = bytes[dartx._get](i);
        if (dart.notNull(byte) < 0 || dart.notNull(byte) > 255) {
          dart.throw(new core.ArgumentError.value(byte, "non-byte value"));
        }
      }
    }
  }
  toString() {
    return this[_separatorIndices][dartx._get](0) == core.UriData._noScheme ? dart.str`data:${this[_text]}` : this[_text];
  }
};
dart.defineNamedConstructor(core.UriData, '_');
dart.setSignature(core.UriData, {
  constructors: () => ({
    _: dart.definiteFunctionType(core.UriData, [core.String, ListOfint(), core.Uri]),
    fromString: dart.definiteFunctionType(core.UriData, [core.String], {mimeType: core.String, encoding: convert.Encoding, parameters: MapOfString$String(), base64: core.bool}),
    fromBytes: dart.definiteFunctionType(core.UriData, [ListOfint()], {mimeType: dart.dynamic, parameters: MapOfString$String(), percentEncoded: dart.dynamic}),
    fromUri: dart.definiteFunctionType(core.UriData, [core.Uri])
  }),
  fields: () => ({
    [_text]: core.String,
    [_separatorIndices]: ListOfint(),
    [_uriCache]: core.Uri
  }),
  getters: () => ({
    uri: dart.definiteFunctionType(core.Uri, []),
    mimeType: dart.definiteFunctionType(core.String, []),
    charset: dart.definiteFunctionType(core.String, []),
    isBase64: dart.definiteFunctionType(core.bool, []),
    contentText: dart.definiteFunctionType(core.String, []),
    parameters: dart.definiteFunctionType(core.Map$(core.String, core.String), [])
  }),
  methods: () => ({
    contentAsBytes: dart.definiteFunctionType(core.List$(core.int), []),
    contentAsString: dart.definiteFunctionType(core.String, [], {encoding: convert.Encoding})
  }),
  sfields: () => ({
    _noScheme: core.int,
    _tokenCharTable: ListOfint(),
    _uricTable: ListOfint()
  }),
  statics: () => ({
    _writeUri: dart.definiteFunctionType(dart.void, [core.String, core.String, MapOfString$String(), core.StringBuffer, core.List]),
    _validateMimeType: dart.definiteFunctionType(core.int, [core.String]),
    parse: dart.definiteFunctionType(core.UriData, [core.String]),
    _parse: dart.definiteFunctionType(core.UriData, [core.String, core.int, core.Uri]),
    _uriEncodeBytes: dart.definiteFunctionType(dart.void, [ListOfint(), ListOfint(), core.StringSink])
  }),
  names: ['_writeUri', '_validateMimeType', 'parse', '_parse', '_uriEncodeBytes']
});
core.UriData._noScheme = -1;
core.UriData._tokenCharTable = dart.constList([0, 0, 27858, 1023, 65534, 51199, 65535, 32767], core.int);
core.UriData._uricTable = core.Uri._queryCharTable;
developer.debugger = function(opts) {
  let when = opts && 'when' in opts ? opts.when : true;
  let message = opts && 'message' in opts ? opts.message : null;
  if (dart.test(when)) {
    debugger;
  }
  return when;
};
dart.fn(developer.debugger, __Tobool());
developer.inspect = function(object) {
  return object;
};
dart.fn(developer.inspect, ObjectToObject());
developer.log = function(message, opts) {
  let time = opts && 'time' in opts ? opts.time : null;
  let sequenceNumber = opts && 'sequenceNumber' in opts ? opts.sequenceNumber : null;
  let level = opts && 'level' in opts ? opts.level : 0;
  let name = opts && 'name' in opts ? opts.name : '';
  let zone = opts && 'zone' in opts ? opts.zone : null;
  let error = opts && 'error' in opts ? opts.error : null;
  let stackTrace = opts && 'stackTrace' in opts ? opts.stackTrace : null;
};
dart.fn(developer.log, String__Tovoid());
dart.defineLazy(developer, {
  get _extensions() {
    return MapOfString$ServiceExtensionHandler().new();
  }
});
developer._clockValue = 0;
const _result = Symbol('_result');
const _errorCode = Symbol('_errorCode');
const _errorDetail = Symbol('_errorDetail');
const _isError = Symbol('_isError');
const _toString = Symbol('_toString');
developer.ServiceExtensionResponse = class ServiceExtensionResponse extends core.Object {
  result(result) {
    this[_result] = result;
    this[_errorCode] = null;
    this[_errorDetail] = null;
    if (!(typeof this[_result] == 'string')) {
      dart.throw(new core.ArgumentError.value(this[_result], "result", "Must be a String"));
    }
  }
  error(errorCode, errorDetail) {
    this[_result] = null;
    this[_errorCode] = errorCode;
    this[_errorDetail] = errorDetail;
    developer.ServiceExtensionResponse._validateErrorCode(this[_errorCode]);
    if (!(typeof this[_errorDetail] == 'string')) {
      dart.throw(new core.ArgumentError.value(this[_errorDetail], "errorDetail", "Must be a String"));
    }
  }
  static _errorCodeMessage(errorCode) {
    developer.ServiceExtensionResponse._validateErrorCode(errorCode);
    if (errorCode == developer.ServiceExtensionResponse.kInvalidParams) {
      return "Invalid params";
    }
    return "Server error";
  }
  static _validateErrorCode(errorCode) {
    if (!(typeof errorCode == 'number')) {
      dart.throw(new core.ArgumentError.value(errorCode, "errorCode", "Must be an int"));
    }
    if (errorCode == developer.ServiceExtensionResponse.invalidParams) {
      return;
    }
    if (dart.notNull(errorCode) >= developer.ServiceExtensionResponse.extensionErrorMin && dart.notNull(errorCode) <= developer.ServiceExtensionResponse.extensionErrorMax) {
      return;
    }
    dart.throw(new core.ArgumentError.value(errorCode, "errorCode", "Out of range"));
  }
  [_isError]() {
    return this[_errorCode] != null && this[_errorDetail] != null;
  }
  [_toString]() {
    if (this[_result] != null) {
      return this[_result];
    } else {
      dart.assert(this[_errorCode] != null);
      dart.assert(this[_errorDetail] != null);
      return convert.JSON.encode(dart.map({code: this[_errorCode], message: developer.ServiceExtensionResponse._errorCodeMessage(this[_errorCode]), data: dart.map({details: this[_errorDetail]}, core.String, core.String)}, core.String, core.Object));
    }
  }
};
dart.defineNamedConstructor(developer.ServiceExtensionResponse, 'result');
dart.defineNamedConstructor(developer.ServiceExtensionResponse, 'error');
dart.setSignature(developer.ServiceExtensionResponse, {
  constructors: () => ({
    result: dart.definiteFunctionType(developer.ServiceExtensionResponse, [core.String]),
    error: dart.definiteFunctionType(developer.ServiceExtensionResponse, [core.int, core.String])
  }),
  fields: () => ({
    [_result]: core.String,
    [_errorCode]: core.int,
    [_errorDetail]: core.String
  }),
  methods: () => ({
    [_isError]: dart.definiteFunctionType(core.bool, []),
    [_toString]: dart.definiteFunctionType(core.String, [])
  }),
  sfields: () => ({
    kInvalidParams: core.int,
    kExtensionError: core.int,
    kExtensionErrorMax: core.int,
    kExtensionErrorMin: core.int,
    invalidParams: core.int,
    extensionError: core.int,
    extensionErrorMax: core.int,
    extensionErrorMin: core.int
  }),
  statics: () => ({
    _errorCodeMessage: dart.definiteFunctionType(core.String, [core.int]),
    _validateErrorCode: dart.definiteFunctionType(dart.dynamic, [core.int])
  }),
  names: ['_errorCodeMessage', '_validateErrorCode']
});
developer.ServiceExtensionResponse.invalidParams = -32602;
developer.ServiceExtensionResponse.extensionError = -32000;
developer.ServiceExtensionResponse.extensionErrorMax = -32000;
developer.ServiceExtensionResponse.extensionErrorMin = -32016;
dart.defineLazy(developer.ServiceExtensionResponse, {
  get kInvalidParams() {
    return developer.ServiceExtensionResponse.invalidParams;
  },
  get kExtensionError() {
    return developer.ServiceExtensionResponse.extensionError;
  },
  get kExtensionErrorMax() {
    return developer.ServiceExtensionResponse.extensionErrorMax;
  },
  get kExtensionErrorMin() {
    return developer.ServiceExtensionResponse.extensionErrorMin;
  }
});
developer.ServiceExtensionHandler = dart.typedef('ServiceExtensionHandler', () => dart.functionType(async.Future$(developer.ServiceExtensionResponse), [core.String, MapOfString$String()]));
developer.registerExtension = function(method, handler) {
  if (!(typeof method == 'string')) {
    dart.throw(new core.ArgumentError.value(method, 'method', 'Must be a String'));
  }
  if (!dart.test(method[dartx.startsWith]('ext.'))) {
    dart.throw(new core.ArgumentError.value(method, 'method', 'Must begin with ext.'));
  }
  if (developer._lookupExtension(method) != null) {
    dart.throw(new core.ArgumentError(dart.str`Extension already registered: ${method}`));
  }
  if (!developer.ServiceExtensionHandler.is(handler)) {
    dart.throw(new core.ArgumentError.value(handler, 'handler', 'Must be a ServiceExtensionHandler'));
  }
  developer._registerExtension(method, handler);
};
dart.fn(developer.registerExtension, StringAndServiceExtensionHandlerTovoid());
developer.postEvent = function(eventKind, eventData) {
  if (!(typeof eventKind == 'string')) {
    dart.throw(new core.ArgumentError.value(eventKind, 'eventKind', 'Must be a String'));
  }
  if (!core.Map.is(eventData)) {
    dart.throw(new core.ArgumentError.value(eventData, 'eventData', 'Must be a Map'));
  }
  let eventDataAsString = convert.JSON.encode(eventData);
  developer._postEvent(eventKind, eventDataAsString);
};
dart.fn(developer.postEvent, StringAndMapTovoid());
developer._postEvent = function(eventKind, eventData) {
};
dart.fn(developer._postEvent, StringAndStringTodynamic());
developer._lookupExtension = function(method) {
  return developer._extensions[dartx._get](method);
};
dart.fn(developer._lookupExtension, StringToServiceExtensionHandler());
developer._registerExtension = function(method, handler) {
  developer._extensions[dartx._set](method, handler);
};
dart.fn(developer._registerExtension, StringAndServiceExtensionHandlerTodynamic());
developer.UserTag = class UserTag extends core.Object {
  static new(label) {
    return developer._FakeUserTag.new(label);
  }
  static get defaultTag() {
    return developer._FakeUserTag._defaultTag;
  }
};
dart.setSignature(developer.UserTag, {
  constructors: () => ({new: dart.definiteFunctionType(developer.UserTag, [core.String])}),
  sfields: () => ({MAX_USER_TAGS: core.int}),
  sgetters: () => ({defaultTag: dart.definiteFunctionType(developer.UserTag, [])})
});
developer.UserTag.MAX_USER_TAGS = 64;
developer._FakeUserTag = class _FakeUserTag extends core.Object {
  real(label) {
    this.label = label;
  }
  static new(label) {
    let existingTag = developer._FakeUserTag._instances[dartx._get](label);
    if (existingTag != null) {
      return developer._FakeUserTag._check(existingTag);
    }
    if (developer._FakeUserTag._instances[dartx.length] == developer.UserTag.MAX_USER_TAGS) {
      dart.throw(new core.UnsupportedError(dart.str`UserTag instance limit (${developer.UserTag.MAX_USER_TAGS}) reached.`));
    }
    let instance = new developer._FakeUserTag.real(label);
    developer._FakeUserTag._instances[dartx._set](label, instance);
    return instance;
  }
  makeCurrent() {
    let old = developer._currentTag;
    developer._currentTag = this;
    return old;
  }
};
dart.defineNamedConstructor(developer._FakeUserTag, 'real');
developer._FakeUserTag[dart.implements] = () => [developer.UserTag];
dart.setSignature(developer._FakeUserTag, {
  constructors: () => ({
    real: dart.definiteFunctionType(developer._FakeUserTag, [core.String]),
    new: dart.definiteFunctionType(developer._FakeUserTag, [core.String])
  }),
  fields: () => ({label: core.String}),
  methods: () => ({makeCurrent: dart.definiteFunctionType(developer.UserTag, [])}),
  sfields: () => ({
    _instances: core.Map,
    _defaultTag: developer.UserTag
  })
});
dart.defineLazy(developer._FakeUserTag, {
  get _instances() {
    return dart.map();
  },
  set _instances(_) {},
  get _defaultTag() {
    return developer._FakeUserTag.new('Default');
  }
});
dart.defineLazy(developer, {
  get _currentTag() {
    return developer._FakeUserTag._defaultTag;
  },
  set _currentTag(_) {}
});
developer.getCurrentTag = function() {
  return developer._currentTag;
};
dart.fn(developer.getCurrentTag, VoidToUserTag());
developer.Metric = class Metric extends core.Object {
  new(name, description) {
    this.name = name;
    this.description = description;
    if (this.name == 'vm' || dart.test(this.name[dartx.contains]('/'))) {
      dart.throw(new core.ArgumentError('Invalid Metric name.'));
    }
  }
};
dart.setSignature(developer.Metric, {
  constructors: () => ({new: dart.definiteFunctionType(developer.Metric, [core.String, core.String])}),
  fields: () => ({
    name: core.String,
    description: core.String
  })
});
const _value = Symbol('_value');
const _toJSON = Symbol('_toJSON');
developer.Gauge = class Gauge extends developer.Metric {
  get value() {
    return this[_value];
  }
  set value(v) {
    if (dart.notNull(v) < dart.notNull(this.min)) {
      v = this.min;
    } else if (dart.notNull(v) > dart.notNull(this.max)) {
      v = this.max;
    }
    this[_value] = v;
  }
  new(name, description, min, max) {
    this.min = min;
    this.max = max;
    this[_value] = null;
    super.new(name, description);
    if (!(typeof this.min == 'number')) {
      dart.throw(new core.ArgumentError('min must be a double'));
    }
    if (!(typeof this.max == 'number')) {
      dart.throw(new core.ArgumentError('max must be a double'));
    }
    if (!(dart.notNull(this.min) < dart.notNull(this.max))) {
      dart.throw(new core.ArgumentError('min must be less than max'));
    }
    this[_value] = this.min;
  }
  [_toJSON]() {
    let map = dart.map({type: 'Gauge', id: dart.str`metrics/${this.name}`, name: this.name, description: this.description, value: this.value, min: this.min, max: this.max}, core.String, core.Object);
    return map;
  }
};
dart.setSignature(developer.Gauge, {
  constructors: () => ({new: dart.definiteFunctionType(developer.Gauge, [core.String, core.String, core.double, core.double])}),
  fields: () => ({
    min: core.double,
    max: core.double,
    [_value]: core.double
  }),
  getters: () => ({value: dart.definiteFunctionType(core.double, [])}),
  setters: () => ({value: dart.definiteFunctionType(dart.void, [core.double])}),
  methods: () => ({[_toJSON]: dart.definiteFunctionType(core.Map, [])})
});
developer.Counter = class Counter extends developer.Metric {
  new(name, description) {
    this[_value] = 0.0;
    super.new(name, description);
  }
  get value() {
    return this[_value];
  }
  set value(v) {
    this[_value] = v;
  }
  [_toJSON]() {
    let map = dart.map({type: 'Counter', id: dart.str`metrics/${this.name}`, name: this.name, description: this.description, value: this.value}, core.String, core.Object);
    return map;
  }
};
dart.setSignature(developer.Counter, {
  constructors: () => ({new: dart.definiteFunctionType(developer.Counter, [core.String, core.String])}),
  fields: () => ({[_value]: core.double}),
  getters: () => ({value: dart.definiteFunctionType(core.double, [])}),
  setters: () => ({value: dart.definiteFunctionType(dart.void, [core.double])}),
  methods: () => ({[_toJSON]: dart.definiteFunctionType(core.Map, [])})
});
developer.Metrics = class Metrics extends core.Object {
  static register(metric) {
    if (!developer.Metric.is(metric)) {
      dart.throw(new core.ArgumentError('metric must be a Metric'));
    }
    if (developer.Metrics._metrics[dartx._get](metric.name) != null) {
      dart.throw(new core.ArgumentError('Registered metrics have unique names'));
    }
    developer.Metrics._metrics[dartx._set](metric.name, metric);
  }
  static deregister(metric) {
    if (!developer.Metric.is(metric)) {
      dart.throw(new core.ArgumentError('metric must be a Metric'));
    }
    developer.Metrics._metrics[dartx.remove](metric.name);
  }
  static _printMetric(id) {
    let metric = developer.Metrics._metrics[dartx._get](id);
    if (metric == null) {
      return null;
    }
    return convert.JSON.encode(metric[_toJSON]());
  }
  static _printMetrics() {
    let metrics = [];
    for (let metric of developer.Metrics._metrics[dartx.values]) {
      metrics[dartx.add](metric[_toJSON]());
    }
    let map = dart.map({type: 'MetricList', metrics: metrics}, core.String, core.Object);
    return convert.JSON.encode(map);
  }
};
dart.setSignature(developer.Metrics, {
  sfields: () => ({_metrics: MapOfString$Metric()}),
  statics: () => ({
    register: dart.definiteFunctionType(dart.void, [developer.Metric]),
    deregister: dart.definiteFunctionType(dart.void, [developer.Metric]),
    _printMetric: dart.definiteFunctionType(core.String, [core.String]),
    _printMetrics: dart.definiteFunctionType(core.String, [])
  }),
  names: ['register', 'deregister', '_printMetric', '_printMetrics']
});
dart.defineLazy(developer.Metrics, {
  get _metrics() {
    return MapOfString$Metric().new();
  }
});
developer._isProduct = false;
developer.TimelineSyncFunction = dart.typedef('TimelineSyncFunction', () => dart.functionType(dart.dynamic, []));
developer.TimelineAsyncFunction = dart.typedef('TimelineAsyncFunction', () => dart.functionType(async.Future, []));
const _appendArguments = Symbol('_appendArguments');
developer.Timeline = class Timeline extends core.Object {
  static startSync(name, opts) {
    let arguments$ = opts && 'arguments' in opts ? opts.arguments : null;
    if (developer._isProduct) {
      return;
    }
    if (!(typeof name == 'string')) {
      dart.throw(new core.ArgumentError.value(name, 'name', 'Must be a String'));
    }
    if (!dart.test(developer._isDartStreamEnabled())) {
      developer.Timeline._stack[dartx.add](null);
      return;
    }
    let block = new developer._SyncBlock._(name, developer._getTraceClock(), developer._getThreadCpuClock());
    if (core.Map.is(arguments$)) {
      block[_appendArguments](arguments$);
    }
    developer.Timeline._stack[dartx.add](block);
  }
  static finishSync() {
    if (developer._isProduct) {
      return;
    }
    if (developer.Timeline._stack[dartx.length] == 0) {
      dart.throw(new core.StateError('Uneven calls to startSync and finishSync'));
    }
    let block = developer.Timeline._stack[dartx.removeLast]();
    if (block == null) {
      return;
    }
    block.finish();
  }
  static instantSync(name, opts) {
    let arguments$ = opts && 'arguments' in opts ? opts.arguments : null;
    if (developer._isProduct) {
      return;
    }
    if (!(typeof name == 'string')) {
      dart.throw(new core.ArgumentError.value(name, 'name', 'Must be a String'));
    }
    if (!dart.test(developer._isDartStreamEnabled())) {
      return;
    }
    let instantArguments = null;
    if (core.Map.is(arguments$)) {
      instantArguments = core.Map.from(arguments$);
    }
    developer._reportInstantEvent(developer._getTraceClock(), 'Dart', name, developer._argumentsAsJson(instantArguments));
  }
  static timeSync(name, func, opts) {
    let arguments$ = opts && 'arguments' in opts ? opts.arguments : null;
    developer.Timeline.startSync(name, {arguments: arguments$});
    try {
      return func();
    } finally {
      developer.Timeline.finishSync();
    }
  }
  static get now() {
    return developer._getTraceClock();
  }
};
dart.setSignature(developer.Timeline, {
  sfields: () => ({
    _stack: ListOf_SyncBlock(),
    _isolateId: core.int,
    _isolateIdString: core.String
  }),
  sgetters: () => ({now: dart.definiteFunctionType(core.int, [])}),
  statics: () => ({
    startSync: dart.definiteFunctionType(dart.void, [core.String], {arguments: core.Map}),
    finishSync: dart.definiteFunctionType(dart.void, []),
    instantSync: dart.definiteFunctionType(dart.void, [core.String], {arguments: core.Map}),
    timeSync: dart.definiteFunctionType(dart.dynamic, [core.String, developer.TimelineSyncFunction], {arguments: core.Map})
  }),
  names: ['startSync', 'finishSync', 'instantSync', 'timeSync']
});
dart.defineLazy(developer.Timeline, {
  get _stack() {
    return ListOf_SyncBlock().new();
  },
  get _isolateId() {
    return developer._getIsolateNum();
  },
  get _isolateIdString() {
    return dart.toString(developer.Timeline._isolateId);
  }
});
const _stack = Symbol('_stack');
const _taskId = Symbol('_taskId');
const _start = Symbol('_start');
const _finish = Symbol('_finish');
developer.TimelineTask = class TimelineTask extends core.Object {
  new() {
    this[_stack] = JSArrayOf_AsyncBlock().of([]);
    this[_taskId] = developer._getNextAsyncId();
  }
  withTaskId(taskId) {
    this[_stack] = JSArrayOf_AsyncBlock().of([]);
    this[_taskId] = taskId;
    if (!(typeof taskId == 'number')) {
      dart.throw(new core.ArgumentError.value(taskId, 'taskId', 'Must be an int'));
    }
  }
  start(name, opts) {
    let arguments$ = opts && 'arguments' in opts ? opts.arguments : null;
    if (developer._isProduct) {
      return;
    }
    if (!(typeof name == 'string')) {
      dart.throw(new core.ArgumentError.value(name, 'name', 'Must be a String'));
    }
    let block = new developer._AsyncBlock._(name, this[_taskId]);
    if (core.Map.is(arguments$)) {
      block[_appendArguments](arguments$);
    }
    this[_stack][dartx.add](block);
    block[_start]();
  }
  instant(name, opts) {
    let arguments$ = opts && 'arguments' in opts ? opts.arguments : null;
    if (developer._isProduct) {
      return;
    }
    if (!(typeof name == 'string')) {
      dart.throw(new core.ArgumentError.value(name, 'name', 'Must be a String'));
    }
    let instantArguments = null;
    if (core.Map.is(arguments$)) {
      instantArguments = core.Map.from(arguments$);
    }
    developer._reportTaskEvent(developer._getTraceClock(), this[_taskId], 'n', 'Dart', name, developer._argumentsAsJson(instantArguments));
  }
  finish() {
    if (developer._isProduct) {
      return;
    }
    if (this[_stack][dartx.length] == 0) {
      dart.throw(new core.StateError('Uneven calls to start and finish'));
    }
    let block = this[_stack][dartx.removeLast]();
    block[_finish]();
  }
  pass() {
    if (dart.notNull(this[_stack][dartx.length]) > 0) {
      dart.throw(new core.StateError('You cannot pass a TimelineTask without finishing all started ' + 'operations'));
    }
    let r = this[_taskId];
    return r;
  }
};
dart.defineNamedConstructor(developer.TimelineTask, 'withTaskId');
dart.setSignature(developer.TimelineTask, {
  constructors: () => ({
    new: dart.definiteFunctionType(developer.TimelineTask, []),
    withTaskId: dart.definiteFunctionType(developer.TimelineTask, [core.int])
  }),
  fields: () => ({
    [_taskId]: core.int,
    [_stack]: ListOf_AsyncBlock()
  }),
  methods: () => ({
    start: dart.definiteFunctionType(dart.void, [core.String], {arguments: core.Map}),
    instant: dart.definiteFunctionType(dart.void, [core.String], {arguments: core.Map}),
    finish: dart.definiteFunctionType(dart.void, []),
    pass: dart.definiteFunctionType(core.int, [])
  })
});
const _arguments = Symbol('_arguments');
developer._AsyncBlock = class _AsyncBlock extends core.Object {
  _(name, taskId) {
    this.name = name;
    this[_taskId] = taskId;
    this.category = 'Dart';
    this[_arguments] = null;
  }
  [_start]() {
    developer._reportTaskEvent(developer._getTraceClock(), this[_taskId], 'b', this.category, this.name, developer._argumentsAsJson(this[_arguments]));
  }
  [_finish]() {
    developer._reportTaskEvent(developer._getTraceClock(), this[_taskId], 'e', this.category, this.name, developer._argumentsAsJson(null));
  }
  [_appendArguments](arguments$) {
    if (this[_arguments] == null) {
      this[_arguments] = dart.map();
    }
    this[_arguments][dartx.addAll](arguments$);
  }
};
dart.defineNamedConstructor(developer._AsyncBlock, '_');
dart.setSignature(developer._AsyncBlock, {
  constructors: () => ({_: dart.definiteFunctionType(developer._AsyncBlock, [core.String, core.int])}),
  fields: () => ({
    category: core.String,
    name: core.String,
    [_taskId]: core.int,
    [_arguments]: core.Map
  }),
  methods: () => ({
    [_start]: dart.definiteFunctionType(dart.void, []),
    [_finish]: dart.definiteFunctionType(dart.void, []),
    [_appendArguments]: dart.definiteFunctionType(dart.void, [core.Map])
  })
});
const _startCpu = Symbol('_startCpu');
developer._SyncBlock = class _SyncBlock extends core.Object {
  _(name, start, startCpu) {
    this.name = name;
    this[_start] = start;
    this[_startCpu] = startCpu;
    this.category = 'Dart';
    this[_arguments] = null;
  }
  finish() {
    developer._reportCompleteEvent(this[_start], this[_startCpu], this.category, this.name, developer._argumentsAsJson(this[_arguments]));
  }
  [_appendArguments](arguments$) {
    if (arguments$ == null) {
      return;
    }
    if (this[_arguments] == null) {
      this[_arguments] = dart.map();
    }
    this[_arguments][dartx.addAll](arguments$);
  }
};
dart.defineNamedConstructor(developer._SyncBlock, '_');
dart.setSignature(developer._SyncBlock, {
  constructors: () => ({_: dart.definiteFunctionType(developer._SyncBlock, [core.String, core.int, core.int])}),
  fields: () => ({
    category: core.String,
    name: core.String,
    [_arguments]: core.Map,
    [_start]: core.int,
    [_startCpu]: core.int
  }),
  methods: () => ({
    finish: dart.definiteFunctionType(dart.void, []),
    [_appendArguments]: dart.definiteFunctionType(dart.void, [core.Map])
  })
});
developer._fastPathArguments = null;
developer._argumentsAsJson = function(arguments$) {
  if (arguments$ == null || arguments$[dartx.length] == 0) {
    if (developer._fastPathArguments == null) {
      developer._fastPathArguments = dart.str`{"isolateNumber":"${developer.Timeline._isolateId}"}`;
    }
    return developer._fastPathArguments;
  }
  arguments$[dartx._set]('isolateNumber', developer.Timeline._isolateIdString);
  return convert.JSON.encode(arguments$);
};
dart.fn(developer._argumentsAsJson, MapToString());
developer._isDartStreamEnabled = function() {
  return false;
};
dart.fn(developer._isDartStreamEnabled, VoidTobool());
developer._getNextAsyncId = function() {
  return 0;
};
dart.fn(developer._getNextAsyncId, VoidToint());
developer._getTraceClock = function() {
  let x = developer._clockValue;
  developer._clockValue = dart.notNull(x) + 1;
  return x;
};
dart.fn(developer._getTraceClock, VoidToint());
developer._getThreadCpuClock = function() {
  return -1;
};
dart.fn(developer._getThreadCpuClock, VoidToint());
developer._getIsolateNum = function() {
  return 0;
};
dart.fn(developer._getIsolateNum, VoidToint());
developer._reportTaskEvent = function(start, taskId, phase, category, name, argumentsAsJson) {
};
dart.fn(developer._reportTaskEvent, intAndintAndString__Tovoid());
developer._reportCompleteEvent = function(start, startCpu, category, name, argumentsAsJson) {
};
dart.fn(developer._reportCompleteEvent, intAndintAndString__Tovoid());
developer._reportInstantEvent = function(start, category, name, argumentsAsJson) {
};
dart.fn(developer._reportInstantEvent, intAndStringAndString__Tovoid());
developer.ServiceProtocolInfo = class ServiceProtocolInfo extends core.Object {
  new(serverUri) {
    this.majorVersion = developer._getServiceMajorVersion();
    this.minorVersion = developer._getServiceMinorVersion();
    this.serverUri = serverUri;
  }
  toString() {
    if (this.serverUri != null) {
      return dart.str`Dart VM Service Protocol v${this.majorVersion}.${this.minorVersion} ` + dart.str`listening on ${this.serverUri}`;
    } else {
      return dart.str`Dart VM Service Protocol v${this.majorVersion}.${this.minorVersion}`;
    }
  }
};
dart.setSignature(developer.ServiceProtocolInfo, {
  constructors: () => ({new: dart.definiteFunctionType(developer.ServiceProtocolInfo, [core.Uri])}),
  fields: () => ({
    majorVersion: core.int,
    minorVersion: core.int,
    serverUri: core.Uri
  })
});
developer.Service = class Service extends core.Object {
  static getInfo() {
    return dart.async(function*() {
      let receivePort = isolate.RawReceivePort.new();
      let uriCompleter = CompleterOfUri().new();
      receivePort.handler = dart.fn(uri => uriCompleter.complete(uri), UriTovoid());
      developer._getServerInfo(receivePort.sendPort);
      let uri = (yield uriCompleter.future);
      receivePort.close();
      return new developer.ServiceProtocolInfo(uri);
    }, developer.ServiceProtocolInfo);
  }
  static controlWebServer(opts) {
    return dart.async(function*(opts) {
      let enable = opts && 'enable' in opts ? opts.enable : false;
      if (!(typeof enable == 'boolean')) {
        dart.throw(new core.ArgumentError.value(enable, 'enable', 'Must be a bool'));
      }
      let receivePort = isolate.RawReceivePort.new();
      let uriCompleter = CompleterOfUri().new();
      receivePort.handler = dart.fn(uri => uriCompleter.complete(uri), UriTovoid());
      developer._webServerControl(receivePort.sendPort, enable);
      let uri = (yield uriCompleter.future);
      receivePort.close();
      return new developer.ServiceProtocolInfo(uri);
    }, developer.ServiceProtocolInfo, opts);
  }
};
dart.setSignature(developer.Service, {
  statics: () => ({
    getInfo: dart.definiteFunctionType(async.Future$(developer.ServiceProtocolInfo), []),
    controlWebServer: dart.definiteFunctionType(async.Future$(developer.ServiceProtocolInfo), [], {enable: core.bool})
  }),
  names: ['getInfo', 'controlWebServer']
});
developer._getServerInfo = function(sp) {
  sp.send(null);
};
dart.lazyFn(developer._getServerInfo, () => SendPortTovoid());
developer._webServerControl = function(sp, enable) {
  sp.send(null);
};
dart.lazyFn(developer._webServerControl, () => SendPortAndboolTovoid());
developer._getServiceMajorVersion = function() {
  return 0;
};
dart.fn(developer._getServiceMajorVersion, VoidToint());
developer._getServiceMinorVersion = function() {
  return 0;
};
dart.fn(developer._getServiceMinorVersion, VoidToint());
isolate.IsolateSpawnException = class IsolateSpawnException extends core.Object {
  new(message) {
    this.message = message;
  }
  toString() {
    return dart.str`IsolateSpawnException: ${this.message}`;
  }
};
isolate.IsolateSpawnException[dart.implements] = () => [core.Exception];
dart.setSignature(isolate.IsolateSpawnException, {
  constructors: () => ({new: dart.definiteFunctionType(isolate.IsolateSpawnException, [core.String])}),
  fields: () => ({message: core.String})
});
const _pause = Symbol('_pause');
isolate.Isolate = class Isolate extends core.Object {
  new(controlPort, opts) {
    let pauseCapability = opts && 'pauseCapability' in opts ? opts.pauseCapability : null;
    let terminateCapability = opts && 'terminateCapability' in opts ? opts.terminateCapability : null;
    this.controlPort = controlPort;
    this.pauseCapability = pauseCapability;
    this.terminateCapability = terminateCapability;
  }
  static get current() {
    return isolate.Isolate._currentIsolateCache;
  }
  static spawn(entryPoint, message, opts) {
    let paused = opts && 'paused' in opts ? opts.paused : false;
    try {
      return _isolate_helper.IsolateNatives.spawnFunction(entryPoint, message, paused).then(isolate.Isolate)(dart.fn(msg => new isolate.Isolate(isolate.SendPort._check(msg[dartx._get](1)), {pauseCapability: isolate.Capability._check(msg[dartx._get](2)), terminateCapability: isolate.Capability._check(msg[dartx._get](3))}), ListToIsolate()));
    } catch (e) {
      let st = dart.stackTrace(e);
      return FutureOfIsolate().error(e, st);
    }

  }
  static spawnUri(uri, args, message, opts) {
    let paused = opts && 'paused' in opts ? opts.paused : false;
    let packageRoot = opts && 'packageRoot' in opts ? opts.packageRoot : null;
    if (packageRoot != null) dart.throw(new core.UnimplementedError("packageRoot"));
    try {
      if (core.List.is(args)) {
        for (let i = 0; i < dart.notNull(args[dartx.length]); i++) {
          if (!(typeof args[dartx._get](i) == 'string')) {
            dart.throw(new core.ArgumentError(dart.str`Args must be a list of Strings ${args}`));
          }
        }
      } else if (args != null) {
        dart.throw(new core.ArgumentError(dart.str`Args must be a list of Strings ${args}`));
      }
      return _isolate_helper.IsolateNatives.spawnUri(uri, args, message, paused).then(isolate.Isolate)(dart.fn(msg => new isolate.Isolate(isolate.SendPort._check(msg[dartx._get](1)), {pauseCapability: isolate.Capability._check(msg[dartx._get](2)), terminateCapability: isolate.Capability._check(msg[dartx._get](3))}), ListToIsolate()));
    } catch (e) {
      let st = dart.stackTrace(e);
      return FutureOfIsolate().error(e, st);
    }

  }
  pause(resumeCapability) {
    if (resumeCapability === void 0) resumeCapability = null;
    if (resumeCapability == null) resumeCapability = isolate.Capability.new();
    this[_pause](resumeCapability);
    return resumeCapability;
  }
  [_pause](resumeCapability) {
    let message = core.List.new(3);
    message[dartx._set](0, "pause");
    message[dartx._set](1, this.pauseCapability);
    message[dartx._set](2, resumeCapability);
    this.controlPort.send(message);
  }
  resume(resumeCapability) {
    let message = core.List.new(2);
    message[dartx._set](0, "resume");
    message[dartx._set](1, resumeCapability);
    this.controlPort.send(message);
  }
  addOnExitListener(responsePort) {
    let message = core.List.new(2);
    message[dartx._set](0, "add-ondone");
    message[dartx._set](1, responsePort);
    this.controlPort.send(message);
  }
  removeOnExitListener(responsePort) {
    let message = core.List.new(2);
    message[dartx._set](0, "remove-ondone");
    message[dartx._set](1, responsePort);
    this.controlPort.send(message);
  }
  setErrorsFatal(errorsAreFatal) {
    let message = core.List.new(3);
    message[dartx._set](0, "set-errors-fatal");
    message[dartx._set](1, this.terminateCapability);
    message[dartx._set](2, errorsAreFatal);
    this.controlPort.send(message);
  }
  kill(priority) {
    if (priority === void 0) priority = isolate.Isolate.BEFORE_NEXT_EVENT;
    this.controlPort.send(JSArrayOfObject().of(["kill", this.terminateCapability, priority]));
  }
  ping(responsePort, pingType) {
    if (pingType === void 0) pingType = isolate.Isolate.IMMEDIATE;
    let message = core.List.new(3);
    message[dartx._set](0, "ping");
    message[dartx._set](1, responsePort);
    message[dartx._set](2, pingType);
    this.controlPort.send(message);
  }
  addErrorListener(port) {
    let message = core.List.new(2);
    message[dartx._set](0, "getErrors");
    message[dartx._set](1, port);
    this.controlPort.send(message);
  }
  removeErrorListener(port) {
    let message = core.List.new(2);
    message[dartx._set](0, "stopErrors");
    message[dartx._set](1, port);
    this.controlPort.send(message);
  }
  get errors() {
    let controller = null;
    let port = null;
    function handleError(message) {
      let errorDescription = core.String._check(dart.dindex(message, 0));
      let stackDescription = core.String._check(dart.dindex(message, 1));
      let error = new isolate.RemoteError(errorDescription, stackDescription);
      controller.addError(error, error.stackTrace);
    }
    dart.fn(handleError, dynamicTovoid());
    controller = async.StreamController.broadcast({sync: true, onListen: dart.fn(() => {
        port = isolate.RawReceivePort.new(handleError);
        this.addErrorListener(port.sendPort);
      }, VoidTovoid()), onCancel: dart.fn(() => {
        this.removeErrorListener(port.sendPort);
        port.close();
        port = null;
      }, VoidTovoid())});
    return controller.stream;
  }
};
dart.setSignature(isolate.Isolate, {
  constructors: () => ({new: dart.definiteFunctionType(isolate.Isolate, [isolate.SendPort], {pauseCapability: isolate.Capability, terminateCapability: isolate.Capability})}),
  fields: () => ({
    controlPort: isolate.SendPort,
    pauseCapability: isolate.Capability,
    terminateCapability: isolate.Capability
  }),
  getters: () => ({errors: dart.definiteFunctionType(async.Stream, [])}),
  methods: () => ({
    pause: dart.definiteFunctionType(isolate.Capability, [], [isolate.Capability]),
    [_pause]: dart.definiteFunctionType(dart.void, [isolate.Capability]),
    resume: dart.definiteFunctionType(dart.void, [isolate.Capability]),
    addOnExitListener: dart.definiteFunctionType(dart.void, [isolate.SendPort]),
    removeOnExitListener: dart.definiteFunctionType(dart.void, [isolate.SendPort]),
    setErrorsFatal: dart.definiteFunctionType(dart.void, [core.bool]),
    kill: dart.definiteFunctionType(dart.void, [], [core.int]),
    ping: dart.definiteFunctionType(dart.void, [isolate.SendPort], [core.int]),
    addErrorListener: dart.definiteFunctionType(dart.void, [isolate.SendPort]),
    removeErrorListener: dart.definiteFunctionType(dart.void, [isolate.SendPort])
  }),
  sfields: () => ({
    IMMEDIATE: core.int,
    BEFORE_NEXT_EVENT: core.int,
    AS_EVENT: core.int,
    _currentIsolateCache: isolate.Isolate
  }),
  sgetters: () => ({current: dart.definiteFunctionType(isolate.Isolate, [])}),
  statics: () => ({
    spawn: dart.definiteFunctionType(async.Future$(isolate.Isolate), [dynamicTovoid(), dart.dynamic], {paused: core.bool}),
    spawnUri: dart.definiteFunctionType(async.Future$(isolate.Isolate), [core.Uri, ListOfString(), dart.dynamic], {paused: core.bool, packageRoot: core.Uri})
  }),
  names: ['spawn', 'spawnUri']
});
isolate.Isolate.IMMEDIATE = 0;
isolate.Isolate.BEFORE_NEXT_EVENT = 1;
isolate.Isolate.AS_EVENT = 2;
dart.defineLazy(isolate.Isolate, {
  get _currentIsolateCache() {
    return _isolate_helper.IsolateNatives.currentIsolate;
  }
});
isolate.SendPort = class SendPort extends core.Object {};
isolate.SendPort[dart.implements] = () => [isolate.Capability];
isolate.ReceivePort = class ReceivePort extends core.Object {
  static new() {
    return new _isolate_helper.ReceivePortImpl();
  }
  static fromRawReceivePort(rawPort) {
    return new _isolate_helper.ReceivePortImpl.fromRawReceivePort(rawPort);
  }
};
isolate.ReceivePort[dart.implements] = () => [async.Stream];
dart.setSignature(isolate.ReceivePort, {
  constructors: () => ({
    new: dart.definiteFunctionType(isolate.ReceivePort, []),
    fromRawReceivePort: dart.definiteFunctionType(isolate.ReceivePort, [isolate.RawReceivePort])
  })
});
isolate.RawReceivePort = class RawReceivePort extends core.Object {
  static new(handler) {
    if (handler === void 0) handler = null;
    return new _isolate_helper.RawReceivePortImpl(handler);
  }
};
dart.setSignature(isolate.RawReceivePort, {
  constructors: () => ({new: dart.definiteFunctionType(isolate.RawReceivePort, [], [dynamicTovoid()])})
});
isolate._IsolateUnhandledException = class _IsolateUnhandledException extends core.Object {
  new(message, source, stackTrace) {
    this.message = message;
    this.source = source;
    this.stackTrace = stackTrace;
  }
  toString() {
    return 'IsolateUnhandledException: exception while handling message: ' + dart.str`${this.message} \n  ` + dart.str`${dart.toString(this.source)[dartx.replaceAll]("\n", "\n  ")}\n` + 'original stack trace:\n  ' + dart.str`${dart.toString(this.stackTrace)[dartx.replaceAll]("\n", "\n  ")}`;
  }
};
isolate._IsolateUnhandledException[dart.implements] = () => [core.Exception];
dart.setSignature(isolate._IsolateUnhandledException, {
  constructors: () => ({new: dart.definiteFunctionType(isolate._IsolateUnhandledException, [dart.dynamic, dart.dynamic, core.StackTrace])}),
  fields: () => ({
    message: dart.dynamic,
    source: dart.dynamic,
    stackTrace: core.StackTrace
  })
});
const _description = Symbol('_description');
isolate.RemoteError = class RemoteError extends core.Object {
  new(description, stackDescription) {
    this[_description] = description;
    this.stackTrace = new isolate._RemoteStackTrace(stackDescription);
  }
  toString() {
    return this[_description];
  }
};
isolate.RemoteError[dart.implements] = () => [core.Error];
dart.setSignature(isolate.RemoteError, {
  constructors: () => ({new: dart.definiteFunctionType(isolate.RemoteError, [core.String, core.String])}),
  fields: () => ({
    [_description]: core.String,
    stackTrace: core.StackTrace
  })
});
const _trace = Symbol('_trace');
isolate._RemoteStackTrace = class _RemoteStackTrace extends core.Object {
  new(trace) {
    this[_trace] = trace;
  }
  toString() {
    return this[_trace];
  }
};
isolate._RemoteStackTrace[dart.implements] = () => [core.StackTrace];
dart.setSignature(isolate._RemoteStackTrace, {
  constructors: () => ({new: dart.definiteFunctionType(isolate._RemoteStackTrace, [core.String])}),
  fields: () => ({[_trace]: core.String})
});
isolate.Capability = class Capability extends core.Object {
  static new() {
    return new _isolate_helper.CapabilityImpl();
  }
};
dart.setSignature(isolate.Capability, {
  constructors: () => ({new: dart.definiteFunctionType(isolate.Capability, [])})
});
dart.defineLazy(js, {
  get _global() {
    return dart.global;
  }
});
dart.defineLazy(js, {
  get context() {
    return js._wrapToDart(js._global);
  }
});
const _jsObject = Symbol('_jsObject');
js.JsObject = class JsObject extends core.Object {
  _fromJs(jsObject) {
    this[_jsObject] = jsObject;
    dart.assert(this[_jsObject] != null);
  }
  static new(constructor, arguments$) {
    if (arguments$ === void 0) arguments$ = null;
    let ctor = constructor[_jsObject];
    if (arguments$ == null) {
      return js._wrapToDart(new ctor());
    }
    let unwrapped = core.List.from(arguments$[dartx.map](dart.dynamic)(js._convertToJS));
    return js._wrapToDart(new ctor(...unwrapped));
  }
  static fromBrowserObject(object) {
    if (typeof object == 'number' || typeof object == 'string' || typeof object == 'boolean' || object == null) {
      dart.throw(new core.ArgumentError("object cannot be a num, string, bool, or null"));
    }
    return js._wrapToDart(js._convertToJS(object));
  }
  static jsify(object) {
    if (!core.Map.is(object) && !core.Iterable.is(object)) {
      dart.throw(new core.ArgumentError("object must be a Map or Iterable"));
    }
    return js._wrapToDart(js.JsObject._convertDataTree(object));
  }
  static _convertDataTree(data) {
    let _convertedObjects = collection.HashMap.identity();
    function _convert(o) {
      if (dart.test(_convertedObjects.containsKey(o))) {
        return _convertedObjects._get(o);
      }
      if (core.Map.is(o)) {
        let convertedMap = {};
        _convertedObjects._set(o, convertedMap);
        for (let key of o[dartx.keys]) {
          convertedMap[key] = _convert(o[dartx._get](key));
        }
        return convertedMap;
      } else if (core.Iterable.is(o)) {
        let convertedList = [];
        _convertedObjects._set(o, convertedList);
        convertedList[dartx.addAll](o[dartx.map](dart.dynamic)(_convert));
        return convertedList;
      } else {
        return js._convertToJS(o);
      }
    }
    dart.fn(_convert, dynamicTodynamic());
    return _convert(data);
  }
  _get(property) {
    if (!(typeof property == 'string') && !(typeof property == 'number')) {
      dart.throw(new core.ArgumentError("property is not a String or num"));
    }
    return js._convertToDart(this[_jsObject][property]);
  }
  _set(property, value) {
    if (!(typeof property == 'string') && !(typeof property == 'number')) {
      dart.throw(new core.ArgumentError("property is not a String or num"));
    }
    this[_jsObject][property] = js._convertToJS(value);
    return value;
  }
  get hashCode() {
    return 0;
  }
  ['=='](other) {
    return js.JsObject.is(other) && this[_jsObject] === other[_jsObject];
  }
  hasProperty(property) {
    if (!(typeof property == 'string') && !(typeof property == 'number')) {
      dart.throw(new core.ArgumentError("property is not a String or num"));
    }
    return property in this[_jsObject];
  }
  deleteProperty(property) {
    if (!(typeof property == 'string') && !(typeof property == 'number')) {
      dart.throw(new core.ArgumentError("property is not a String or num"));
    }
    delete this[_jsObject][property];
  }
  instanceof(type) {
    return this[_jsObject] instanceof js._convertToJS(type);
  }
  toString() {
    try {
      return String(this[_jsObject]);
    } catch (e) {
      return super.toString();
    }

  }
  callMethod(method, args) {
    if (args === void 0) args = null;
    if (!(typeof method == 'string') && !(typeof method == 'number')) {
      dart.throw(new core.ArgumentError("method is not a String or num"));
    }
    if (args != null) args = core.List.from(args[dartx.map](dart.dynamic)(js._convertToJS));
    let fn = this[_jsObject][method];
    if (!(fn instanceof Function)) {
      dart.throw(new core.NoSuchMethodError(this[_jsObject], core.Symbol.new(core.String._check(method)), args, dart.map({}, core.Symbol, dart.dynamic)));
    }
    return js._convertToDart(fn.apply(this[_jsObject], args));
  }
};
dart.defineNamedConstructor(js.JsObject, '_fromJs');
dart.setSignature(js.JsObject, {
  constructors: () => ({
    _fromJs: dart.definiteFunctionType(js.JsObject, [dart.dynamic]),
    new: dart.definiteFunctionType(js.JsObject, [js.JsFunction], [core.List]),
    fromBrowserObject: dart.definiteFunctionType(js.JsObject, [dart.dynamic]),
    jsify: dart.definiteFunctionType(js.JsObject, [dart.dynamic])
  }),
  fields: () => ({[_jsObject]: dart.dynamic}),
  methods: () => ({
    _get: dart.definiteFunctionType(dart.dynamic, [core.Object]),
    _set: dart.definiteFunctionType(dart.dynamic, [core.Object, dart.dynamic]),
    hasProperty: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    deleteProperty: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    instanceof: dart.definiteFunctionType(core.bool, [js.JsFunction]),
    callMethod: dart.definiteFunctionType(dart.dynamic, [dart.dynamic], [core.List])
  }),
  statics: () => ({_convertDataTree: dart.definiteFunctionType(dart.dynamic, [dart.dynamic])}),
  names: ['_convertDataTree']
});
js.JsFunction = class JsFunction extends js.JsObject {
  static withThis(f) {
    return new js.JsFunction._fromJs(function() {
      let args = [js._convertToDart(this)];
      for (let arg of arguments) {
        args.push(js._convertToDart(arg));
      }
      return js._convertToJS(f(...args));
    });
  }
  _fromJs(jsObject) {
    super._fromJs(jsObject);
  }
  apply(args, opts) {
    let thisArg = opts && 'thisArg' in opts ? opts.thisArg : null;
    return js._convertToDart(this[_jsObject].apply(js._convertToJS(thisArg), args == null ? null : core.List.from(args[dartx.map](dart.dynamic)(js._convertToJS))));
  }
};
dart.defineNamedConstructor(js.JsFunction, '_fromJs');
dart.setSignature(js.JsFunction, {
  constructors: () => ({
    withThis: dart.definiteFunctionType(js.JsFunction, [core.Function]),
    _fromJs: dart.definiteFunctionType(js.JsFunction, [dart.dynamic])
  }),
  methods: () => ({apply: dart.definiteFunctionType(dart.dynamic, [core.List], {thisArg: dart.dynamic})})
});
const _checkIndex = Symbol('_checkIndex');
const _checkInsertIndex = Symbol('_checkInsertIndex');
js.JsArray$ = dart.generic(E => {
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let EAndEToint = () => (EAndEToint = dart.constFn(dart.functionType(core.int, [E, E])))();
  let JSArrayOfEAndEToint = () => (JSArrayOfEAndEToint = dart.constFn(_interceptors.JSArray$(EAndEToint())))();
  class JsArray extends dart.mixin(js.JsObject, collection.ListMixin$(E)) {
    new() {
      super._fromJs([]);
    }
    from(other) {
      super._fromJs((() => {
        let _ = [];
        _[dartx.addAll](other[dartx.map](dart.dynamic)(js._convertToJS));
        return _;
      })());
    }
    _fromJs(jsObject) {
      super._fromJs(jsObject);
    }
    [_checkIndex](index) {
      if (typeof index == 'number' && (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(this.length))) {
        dart.throw(new core.RangeError.range(index, 0, this.length));
      }
    }
    [_checkInsertIndex](index) {
      if (typeof index == 'number' && (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(this.length) + 1)) {
        dart.throw(new core.RangeError.range(index, 0, this.length));
      }
    }
    static _checkRange(start, end, length) {
      if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(length)) {
        dart.throw(new core.RangeError.range(start, 0, length));
      }
      if (dart.notNull(end) < dart.notNull(start) || dart.notNull(end) > dart.notNull(length)) {
        dart.throw(new core.RangeError.range(end, start, length));
      }
    }
    _get(index) {
      if (typeof index == 'number' && index == index[dartx.toInt]()) {
        this[_checkIndex](dart.asInt(index));
      }
      return E.as(super._get(index));
    }
    _set(index, value) {
      E._check(value);
      if (typeof index == 'number' && index == index[dartx.toInt]()) {
        this[_checkIndex](dart.asInt(index));
      }
      super._set(index, value);
      return value;
    }
    get length() {
      let len = this[_jsObject].length;
      if (typeof len === "number" && len >>> 0 === len) {
        return len;
      }
      dart.throw(new core.StateError('Bad JsArray length'));
    }
    set length(length) {
      super._set('length', length);
    }
    add(value) {
      E._check(value);
      this.callMethod('push', JSArrayOfE().of([value]));
    }
    addAll(iterable) {
      IterableOfE()._check(iterable);
      let list = iterable instanceof Array ? iterable : core.List.from(iterable);
      this.callMethod('push', core.List._check(list));
    }
    insert(index, element) {
      E._check(element);
      this[_checkInsertIndex](index);
      this.callMethod('splice', JSArrayOfObject().of([index, 0, element]));
    }
    removeAt(index) {
      this[_checkIndex](index);
      return E.as(dart.dindex(this.callMethod('splice', JSArrayOfint().of([index, 1])), 0));
    }
    removeLast() {
      if (this.length == 0) dart.throw(new core.RangeError(-1));
      return E.as(this.callMethod('pop'));
    }
    removeRange(start, end) {
      js.JsArray._checkRange(start, end, this.length);
      this.callMethod('splice', JSArrayOfint().of([start, dart.notNull(end) - dart.notNull(start)]));
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfE()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      js.JsArray._checkRange(start, end, this.length);
      let length = dart.notNull(end) - dart.notNull(start);
      if (length == 0) return;
      if (dart.notNull(skipCount) < 0) dart.throw(new core.ArgumentError(skipCount));
      let args = JSArrayOfObject().of([start, length]);
      args[dartx.addAll](iterable[dartx.skip](skipCount)[dartx.take](length));
      this.callMethod('splice', args);
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      this.callMethod('sort', compare == null ? [] : JSArrayOfEAndEToint().of([compare]));
    }
  }
  dart.addTypeTests(JsArray);
  dart.defineNamedConstructor(JsArray, 'from');
  dart.defineNamedConstructor(JsArray, '_fromJs');
  dart.setSignature(JsArray, {
    constructors: () => ({
      new: dart.definiteFunctionType(js.JsArray$(E), []),
      from: dart.definiteFunctionType(js.JsArray$(E), [IterableOfE()]),
      _fromJs: dart.definiteFunctionType(js.JsArray$(E), [dart.dynamic])
    }),
    getters: () => ({length: dart.definiteFunctionType(core.int, [])}),
    setters: () => ({length: dart.definiteFunctionType(dart.void, [core.int])}),
    methods: () => ({
      [_checkIndex]: dart.definiteFunctionType(dart.dynamic, [core.int]),
      [_checkInsertIndex]: dart.definiteFunctionType(dart.dynamic, [core.int]),
      _get: dart.definiteFunctionType(E, [core.Object]),
      _set: dart.definiteFunctionType(dart.void, [core.Object, E]),
      add: dart.definiteFunctionType(dart.void, [E]),
      addAll: dart.definiteFunctionType(dart.void, [IterableOfE()]),
      insert: dart.definiteFunctionType(dart.void, [core.int, E]),
      removeAt: dart.definiteFunctionType(E, [core.int]),
      removeLast: dart.definiteFunctionType(E, []),
      setRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfE()], [core.int]),
      sort: dart.definiteFunctionType(dart.void, [], [EAndEToint()])
    }),
    statics: () => ({_checkRange: dart.definiteFunctionType(dart.dynamic, [core.int, core.int, core.int])}),
    names: ['_checkRange']
  });
  dart.defineExtensionMembers(JsArray, [
    '_get',
    '_set',
    'add',
    'addAll',
    'insert',
    'removeAt',
    'removeLast',
    'removeRange',
    'setRange',
    'sort',
    'length',
    'length'
  ]);
  return JsArray;
});
js.JsArray = JsArray();
js._isBrowserType = function(o) {
  return o instanceof Blob || o instanceof Event || window.KeyRange && o instanceof KeyRange || o instanceof ImageData || o instanceof Node || window.TypedData && o instanceof TypedData || o instanceof Window;
};
dart.fn(js._isBrowserType, dynamicTobool());
const _dartObj = Symbol('_dartObj');
js._DartObject = class _DartObject extends core.Object {
  new(dartObj) {
    this[_dartObj] = dartObj;
  }
};
dart.setSignature(js._DartObject, {
  constructors: () => ({new: dart.definiteFunctionType(js._DartObject, [dart.dynamic])}),
  fields: () => ({[_dartObj]: dart.dynamic})
});
js._convertToJS = function(o) {
  if (o == null || typeof o == 'string' || typeof o == 'number' || typeof o == 'boolean' || dart.test(js._isBrowserType(o))) {
    return o;
  } else if (core.DateTime.is(o)) {
    return _js_helper.Primitives.lazyAsJsDate(o);
  } else if (js.JsObject.is(o)) {
    return o[_jsObject];
  } else if (core.Function.is(o)) {
    return js._putIfAbsent(js._jsProxies, o, js._wrapDartFunction);
  } else {
    return js._putIfAbsent(js._jsProxies, o, dart.fn(o => new js._DartObject(o), dynamicTo_DartObject()));
  }
};
dart.fn(js._convertToJS, dynamicTodynamic());
js._wrapDartFunction = function(f) {
  let wrapper = function() {
    let args = Array.prototype.map.call(arguments, js._convertToDart);
    return js._convertToJS(f(...args));
  };
  js._dartProxies.set(wrapper, f);
  return wrapper;
};
dart.fn(js._wrapDartFunction, dynamicTodynamic());
js._convertToDart = function(o) {
  if (o == null || typeof o == "string" || typeof o == "number" || typeof o == "boolean" || dart.test(js._isBrowserType(o))) {
    return o;
  } else if (o instanceof Date) {
    let ms = o.getTime();
    return new core.DateTime.fromMillisecondsSinceEpoch(dart.asInt(ms));
  } else if (js._DartObject.is(o) && dart.jsobject != dart.getReifiedType(o)) {
    return o[_dartObj];
  } else {
    return js._putIfAbsent(js._dartProxies, o, js._wrapToDart);
  }
};
dart.fn(js._convertToDart, dynamicToObject());
js._wrapToDart = function(o) {
  if (typeof o == "function") {
    return new js.JsFunction._fromJs(o);
  }
  if (o instanceof Array) {
    return new js.JsArray._fromJs(o);
  }
  return new js.JsObject._fromJs(o);
};
dart.fn(js._wrapToDart, dynamicToJsObject());
dart.defineLazy(js, {
  get _dartProxies() {
    return new WeakMap();
  }
});
dart.defineLazy(js, {
  get _jsProxies() {
    return new WeakMap();
  }
});
js._putIfAbsent = function(weakMap, o, getValue) {
  let value = weakMap.get(o);
  if (value == null) {
    value = dart.dcall(getValue, o);
    weakMap.set(o, value);
  }
  return value;
};
dart.fn(js._putIfAbsent, dynamicAnddynamicAndFnToObject());
js.allowInterop = function(F) {
  return f => {
    return f;
  };
};
dart.fn(js.allowInterop, FToF());
dart.defineLazy(js, {
  get _interopCaptureThisExpando() {
    return new (ExpandoOfFunction())();
  },
  set _interopCaptureThisExpando(_) {}
});
js.allowInteropCaptureThis = function(f) {
  let ret = js._interopCaptureThisExpando._get(f);
  if (ret == null) {
    ret = function() {
      let args = [this];
      for (let arg of arguments) {
        args.push(arg);
      }
      return f(...args);
    };
    js._interopCaptureThisExpando._set(f, ret);
  }
  return ret;
};
dart.fn(js.allowInteropCaptureThis, FunctionToFunction());
js_util.jsify = function(object) {
  if (!core.Map.is(object) && !core.Iterable.is(object)) {
    dart.throw(new core.ArgumentError("object must be a Map or Iterable"));
  }
  return js_util._convertDataTree(object);
};
dart.fn(js_util.jsify, dynamicTodynamic());
js_util._convertDataTree = function(data) {
  let _convertedObjects = collection.HashMap.identity();
  function _convert(o) {
    if (dart.test(_convertedObjects.containsKey(o))) {
      return _convertedObjects._get(o);
    }
    if (core.Map.is(o)) {
      let convertedMap = {};
      _convertedObjects._set(o, convertedMap);
      for (let key of o[dartx.keys]) {
        convertedMap[key] = _convert(o[dartx._get](key));
      }
      return convertedMap;
    } else if (core.Iterable.is(o)) {
      let convertedList = [];
      _convertedObjects._set(o, convertedList);
      convertedList[dartx.addAll](o[dartx.map](dart.dynamic)(_convert));
      return convertedList;
    } else {
      return o;
    }
  }
  dart.fn(_convert, dynamicTodynamic());
  return _convert(data);
};
dart.fn(js_util._convertDataTree, dynamicTodynamic());
js_util.newObject = function() {
  return {};
};
dart.fn(js_util.newObject, VoidTodynamic());
js_util.hasProperty = function(o, name) {
  return name in o;
};
dart.fn(js_util.hasProperty, dynamicAnddynamicTodynamic());
js_util.getProperty = function(o, name) {
  return o[name];
};
dart.fn(js_util.getProperty, dynamicAnddynamicTodynamic());
js_util.setProperty = function(o, name, value) {
  return o[name] = value;
};
dart.fn(js_util.setProperty, dynamicAnddynamicAnddynamicTodynamic());
js_util.callMethod = function(o, method, args) {
  return o[method].apply(o, args);
};
dart.fn(js_util.callMethod, dynamicAndStringAndListTodynamic());
js_util.instanceof = function(o, type) {
  return o instanceof type;
};
dart.fn(js_util.instanceof, dynamicAndFunctionTodynamic());
js_util.callConstructor = function(constr, arguments$) {
  if (arguments$ == null) {
    return new constr();
  }
  if (arguments$ instanceof Array) {
    let argumentCount = arguments$.length;
    switch (argumentCount) {
      case 0:
      {
        return new constr();
      }
      case 1:
      {
        let arg0 = arguments$[0];
        return new constr(arg0);
      }
      case 2:
      {
        let arg0 = arguments$[0];
        let arg1 = arguments$[1];
        return new constr(arg0, arg1);
      }
      case 3:
      {
        let arg0 = arguments$[0];
        let arg1 = arguments$[1];
        let arg2 = arguments$[2];
        return new constr(arg0, arg1, arg2);
      }
      case 4:
      {
        let arg0 = arguments$[0];
        let arg1 = arguments$[1];
        let arg2 = arguments$[2];
        let arg3 = arguments$[3];
        return new constr(arg0, arg1, arg2, arg3);
      }
    }
  }
  let args = [null];
  args[dartx.addAll](arguments$);
  let factoryFunction = constr.bind.apply(constr, args);
  String(factoryFunction);
  return new factoryFunction();
};
dart.fn(js_util.callConstructor, FunctionAndListTodynamic());
math.E = 2.718281828459045;
math.LN10 = 2.302585092994046;
math.LN2 = 0.6931471805599453;
math.LOG2E = 1.4426950408889634;
math.LOG10E = 0.4342944819032518;
math.PI = 3.141592653589793;
math.SQRT1_2 = 0.7071067811865476;
math.SQRT2 = 1.4142135623730951;
math.min = function(T) {
  return (a, b) => {
    return Math.min(_js_helper.checkNum(a), _js_helper.checkNum(b));
  };
};
dart.fn(math.min, TAndTToT());
math.max = function(T) {
  return (a, b) => {
    return Math.max(_js_helper.checkNum(a), _js_helper.checkNum(b));
  };
};
dart.fn(math.max, TAndTToT());
math.atan2 = function(a, b) {
  return Math.atan2(_js_helper.checkNum(a), _js_helper.checkNum(b));
};
dart.fn(math.atan2, numAndnumTodouble());
math.pow = function(x, exponent) {
  _js_helper.checkNum(x);
  _js_helper.checkNum(exponent);
  return Math.pow(x, exponent);
};
dart.fn(math.pow, numAndnumTonum());
math.sin = function(x) {
  return Math.sin(_js_helper.checkNum(x));
};
dart.fn(math.sin, numTodouble());
math.cos = function(x) {
  return Math.cos(_js_helper.checkNum(x));
};
dart.fn(math.cos, numTodouble());
math.tan = function(x) {
  return Math.tan(_js_helper.checkNum(x));
};
dart.fn(math.tan, numTodouble());
math.acos = function(x) {
  return Math.acos(_js_helper.checkNum(x));
};
dart.fn(math.acos, numTodouble());
math.asin = function(x) {
  return Math.asin(_js_helper.checkNum(x));
};
dart.fn(math.asin, numTodouble());
math.atan = function(x) {
  return Math.atan(_js_helper.checkNum(x));
};
dart.fn(math.atan, numTodouble());
math.sqrt = function(x) {
  return Math.sqrt(_js_helper.checkNum(x));
};
dart.fn(math.sqrt, numTodouble());
math.exp = function(x) {
  return Math.exp(_js_helper.checkNum(x));
};
dart.fn(math.exp, numTodouble());
math.log = function(x) {
  return Math.log(_js_helper.checkNum(x));
};
dart.fn(math.log, numTodouble());
math._POW2_32 = 4294967296;
math._JSRandom = class _JSRandom extends core.Object {
  new() {
  }
  nextInt(max) {
    if (dart.notNull(max) <= 0 || dart.notNull(max) > math._POW2_32) {
      dart.throw(new core.RangeError(dart.str`max must be in range 0 < max ≤ 2^32, was ${max}`));
    }
    return Math.random() * max >>> 0;
  }
  nextDouble() {
    return Math.random();
  }
  nextBool() {
    return Math.random() < 0.5;
  }
};
math._JSRandom[dart.implements] = () => [math.Random];
dart.setSignature(math._JSRandom, {
  constructors: () => ({new: dart.definiteFunctionType(math._JSRandom, [])}),
  methods: () => ({
    nextInt: dart.definiteFunctionType(core.int, [core.int]),
    nextDouble: dart.definiteFunctionType(core.double, []),
    nextBool: dart.definiteFunctionType(core.bool, [])
  })
});
const _lo = Symbol('_lo');
const _hi = Symbol('_hi');
const _nextState = Symbol('_nextState');
math._Random = class _Random extends core.Object {
  new(seed) {
    this[_lo] = 0;
    this[_hi] = 0;
    let empty_seed = 0;
    if (dart.notNull(seed) < 0) {
      empty_seed = -1;
    }
    do {
      let low = (dart.notNull(seed) & math._Random._MASK32) >>> 0;
      seed = ((dart.notNull(seed) - low) / math._POW2_32)[dartx.truncate]();
      let high = (dart.notNull(seed) & math._Random._MASK32) >>> 0;
      seed = ((dart.notNull(seed) - high) / math._POW2_32)[dartx.truncate]();
      let tmplow = low << 21 >>> 0;
      let tmphigh = (high << 21 | low[dartx['>>']](11)) >>> 0;
      tmplow = ((~low & math._Random._MASK32) >>> 0) + tmplow;
      low = (tmplow & math._Random._MASK32) >>> 0;
      high = ((~high >>> 0) + tmphigh + ((tmplow - low) / 4294967296)[dartx.truncate]() & math._Random._MASK32) >>> 0;
      tmphigh = high[dartx['>>']](24);
      tmplow = (low[dartx['>>']](24) | high << 8) >>> 0;
      low = (low ^ tmplow) >>> 0;
      high = (high ^ tmphigh) >>> 0;
      tmplow = low * 265;
      low = (tmplow & math._Random._MASK32) >>> 0;
      high = (high * 265 + ((tmplow - low) / 4294967296)[dartx.truncate]() & math._Random._MASK32) >>> 0;
      tmphigh = high[dartx['>>']](14);
      tmplow = (low[dartx['>>']](14) | high << 18) >>> 0;
      low = (low ^ tmplow) >>> 0;
      high = (high ^ tmphigh) >>> 0;
      tmplow = low * 21;
      low = (tmplow & math._Random._MASK32) >>> 0;
      high = (high * 21 + ((tmplow - low) / 4294967296)[dartx.truncate]() & math._Random._MASK32) >>> 0;
      tmphigh = high[dartx['>>']](28);
      tmplow = (low[dartx['>>']](28) | high << 4) >>> 0;
      low = (low ^ tmplow) >>> 0;
      high = (high ^ tmphigh) >>> 0;
      tmplow = low << 31 >>> 0;
      tmphigh = (high << 31 | low[dartx['>>']](1)) >>> 0;
      tmplow = tmplow + low;
      low = (tmplow & math._Random._MASK32) >>> 0;
      high = (high + tmphigh + ((tmplow - low) / 4294967296)[dartx.truncate]() & math._Random._MASK32) >>> 0;
      tmplow = dart.notNull(this[_lo]) * 1037;
      this[_lo] = (tmplow & math._Random._MASK32) >>> 0;
      this[_hi] = (dart.notNull(this[_hi]) * 1037 + ((tmplow - dart.notNull(this[_lo])) / 4294967296)[dartx.truncate]() & math._Random._MASK32) >>> 0;
      this[_lo] = (dart.notNull(this[_lo]) ^ low) >>> 0;
      this[_hi] = (dart.notNull(this[_hi]) ^ high) >>> 0;
    } while (seed != empty_seed);
    if (this[_hi] == 0 && this[_lo] == 0) {
      this[_lo] = 23063;
    }
    this[_nextState]();
    this[_nextState]();
    this[_nextState]();
    this[_nextState]();
  }
  [_nextState]() {
    let tmpHi = 4294901760 * dart.notNull(this[_lo]);
    let tmpHiLo = (tmpHi & math._Random._MASK32) >>> 0;
    let tmpHiHi = tmpHi - tmpHiLo;
    let tmpLo = 55905 * dart.notNull(this[_lo]);
    let tmpLoLo = (tmpLo & math._Random._MASK32) >>> 0;
    let tmpLoHi = tmpLo - tmpLoLo;
    let newLo = tmpLoLo + tmpHiLo + dart.notNull(this[_hi]);
    this[_lo] = (newLo & math._Random._MASK32) >>> 0;
    let newLoHi = newLo - dart.notNull(this[_lo]);
    this[_hi] = (((tmpLoHi + tmpHiHi + newLoHi) / math._POW2_32)[dartx.truncate]() & math._Random._MASK32) >>> 0;
    dart.assert(dart.notNull(this[_lo]) < math._POW2_32);
    dart.assert(dart.notNull(this[_hi]) < math._POW2_32);
  }
  nextInt(max) {
    if (dart.notNull(max) <= 0 || dart.notNull(max) > math._POW2_32) {
      dart.throw(new core.RangeError(dart.str`max must be in range 0 < max ≤ 2^32, was ${max}`));
    }
    if ((dart.notNull(max) & dart.notNull(max) - 1) == 0) {
      this[_nextState]();
      return (dart.notNull(this[_lo]) & dart.notNull(max) - 1) >>> 0;
    }
    let rnd32 = null;
    let result = null;
    do {
      this[_nextState]();
      rnd32 = this[_lo];
      result = dart.asInt(rnd32[dartx.remainder](max));
    } while (dart.notNull(rnd32) - dart.notNull(result) + dart.notNull(max) >= math._POW2_32);
    return result;
  }
  nextDouble() {
    this[_nextState]();
    let bits26 = (dart.notNull(this[_lo]) & (1 << 26) - 1) >>> 0;
    this[_nextState]();
    let bits27 = (dart.notNull(this[_lo]) & (1 << 27) - 1) >>> 0;
    return (bits26 * math._Random._POW2_27_D + bits27) / math._Random._POW2_53_D;
  }
  nextBool() {
    this[_nextState]();
    return (dart.notNull(this[_lo]) & 1) == 0;
  }
};
math._Random[dart.implements] = () => [math.Random];
dart.setSignature(math._Random, {
  constructors: () => ({new: dart.definiteFunctionType(math._Random, [core.int])}),
  fields: () => ({
    [_lo]: core.int,
    [_hi]: core.int
  }),
  methods: () => ({
    [_nextState]: dart.definiteFunctionType(dart.void, []),
    nextInt: dart.definiteFunctionType(core.int, [core.int]),
    nextDouble: dart.definiteFunctionType(core.double, []),
    nextBool: dart.definiteFunctionType(core.bool, [])
  }),
  sfields: () => ({
    _POW2_53_D: core.double,
    _POW2_27_D: core.double,
    _MASK32: core.int
  })
});
math._Random._POW2_53_D = 1.0 * 9007199254740992;
math._Random._POW2_27_D = 1.0 * (1 << 27);
math._Random._MASK32 = 4294967295;
const _buffer = Symbol('_buffer');
const _getRandomBytes = Symbol('_getRandomBytes');
math._JSSecureRandom = class _JSSecureRandom extends core.Object {
  new() {
    this[_buffer] = typed_data.ByteData.new(8);
    let crypto = self.crypto;
    if (crypto != null) {
      let getRandomValues = crypto.getRandomValues;
      if (getRandomValues != null) {
        return;
      }
    }
    dart.throw(new core.UnsupportedError("No source of cryptographically secure random numbers available."));
  }
  [_getRandomBytes](start, length) {
    crypto.getRandomValues(this[_buffer][dartx.buffer][dartx.asUint8List](start, length));
  }
  nextBool() {
    this[_getRandomBytes](0, 1);
    return this[_buffer][dartx.getUint8](0)[dartx.isOdd];
  }
  nextDouble() {
    this[_getRandomBytes](1, 7);
    this[_buffer][dartx.setUint8](0, 63);
    let highByte = this[_buffer][dartx.getUint8](1);
    this[_buffer][dartx.setUint8](1, (dart.notNull(highByte) | 240) >>> 0);
    let result = dart.notNull(this[_buffer][dartx.getFloat64](0)) - 1.0;
    if ((dart.notNull(highByte) & 16) != 0) {
      result = result + 1.1102230246251565e-16;
    }
    return result;
  }
  nextInt(max) {
    if (dart.notNull(max) <= 0 || dart.notNull(max) > math._POW2_32) {
      dart.throw(new core.RangeError(dart.str`max must be in range 0 < max ≤ 2^32, was ${max}`));
    }
    let byteCount = 1;
    if (dart.notNull(max) > 255) {
      byteCount++;
      if (dart.notNull(max) > 65535) {
        byteCount++;
        if (dart.notNull(max) > 16777215) {
          byteCount++;
        }
      }
    }
    this[_buffer][dartx.setUint32](0, 0);
    let start = 4 - byteCount;
    let randomLimit = dart.asInt(math.pow(256, byteCount));
    while (true) {
      this[_getRandomBytes](start, byteCount);
      let random = this[_buffer][dartx.getUint32](0);
      if ((dart.notNull(max) & dart.notNull(max) - 1) == 0) {
        return (dart.notNull(random) & dart.notNull(max) - 1) >>> 0;
      }
      let result = dart.asInt(random[dartx.remainder](max));
      if (dart.notNull(random) - dart.notNull(result) + dart.notNull(max) < dart.notNull(randomLimit)) {
        return result;
      }
    }
  }
};
math._JSSecureRandom[dart.implements] = () => [math.Random];
dart.setSignature(math._JSSecureRandom, {
  constructors: () => ({new: dart.definiteFunctionType(math._JSSecureRandom, [])}),
  fields: () => ({[_buffer]: typed_data.ByteData}),
  methods: () => ({
    [_getRandomBytes]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    nextBool: dart.definiteFunctionType(core.bool, []),
    nextDouble: dart.definiteFunctionType(core.double, []),
    nextInt: dart.definiteFunctionType(core.int, [core.int])
  })
});
math._JenkinsSmiHash = class _JenkinsSmiHash extends core.Object {
  static combine(hash, value) {
    hash = 536870911 & dart.notNull(hash) + dart.notNull(value);
    hash = 536870911 & dart.notNull(hash) + ((524287 & dart.notNull(hash)) << 10);
    return (dart.notNull(hash) ^ hash[dartx['>>']](6)) >>> 0;
  }
  static finish(hash) {
    hash = 536870911 & dart.notNull(hash) + ((67108863 & dart.notNull(hash)) << 3);
    hash = (dart.notNull(hash) ^ hash[dartx['>>']](11)) >>> 0;
    return 536870911 & dart.notNull(hash) + ((16383 & dart.notNull(hash)) << 15);
  }
  static hash2(a, b) {
    return math._JenkinsSmiHash.finish(math._JenkinsSmiHash.combine(math._JenkinsSmiHash.combine(0, core.int._check(a)), core.int._check(b)));
  }
  static hash4(a, b, c, d) {
    return math._JenkinsSmiHash.finish(math._JenkinsSmiHash.combine(math._JenkinsSmiHash.combine(math._JenkinsSmiHash.combine(math._JenkinsSmiHash.combine(0, core.int._check(a)), core.int._check(b)), core.int._check(c)), core.int._check(d)));
  }
};
dart.setSignature(math._JenkinsSmiHash, {
  statics: () => ({
    combine: dart.definiteFunctionType(core.int, [core.int, core.int]),
    finish: dart.definiteFunctionType(core.int, [core.int]),
    hash2: dart.definiteFunctionType(core.int, [dart.dynamic, dart.dynamic]),
    hash4: dart.definiteFunctionType(core.int, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['combine', 'finish', 'hash2', 'hash4']
});
math.Point$ = dart.generic(T => {
  let PointOfT = () => (PointOfT = dart.constFn(math.Point$(T)))();
  class Point extends core.Object {
    new(x, y) {
      this.x = x;
      this.y = y;
    }
    toString() {
      return dart.str`Point(${this.x}, ${this.y})`;
    }
    ['=='](other) {
      if (!PointOfnum().is(other)) return false;
      return dart.equals(this.x, dart.dload(other, 'x')) && dart.equals(this.y, dart.dload(other, 'y'));
    }
    get hashCode() {
      return math._JenkinsSmiHash.hash2(dart.hashCode(this.x), dart.hashCode(this.y));
    }
    ['+'](other) {
      PointOfT()._check(other);
      return new (PointOfT())(dart.notNull(this.x) + dart.notNull(other.x), dart.notNull(this.y) + dart.notNull(other.y));
    }
    ['-'](other) {
      PointOfT()._check(other);
      return new (PointOfT())(dart.notNull(this.x) - dart.notNull(other.x), dart.notNull(this.y) - dart.notNull(other.y));
    }
    ['*'](factor) {
      return new (PointOfT())(dart.notNull(this.x) * dart.notNull(factor), dart.notNull(this.y) * dart.notNull(factor));
    }
    get magnitude() {
      return math.sqrt(dart.notNull(this.x) * dart.notNull(this.x) + dart.notNull(this.y) * dart.notNull(this.y));
    }
    distanceTo(other) {
      PointOfT()._check(other);
      let dx = dart.notNull(this.x) - dart.notNull(other.x);
      let dy = dart.notNull(this.y) - dart.notNull(other.y);
      return math.sqrt(dx * dx + dy * dy);
    }
    squaredDistanceTo(other) {
      PointOfT()._check(other);
      let dx = dart.notNull(this.x) - dart.notNull(other.x);
      let dy = dart.notNull(this.y) - dart.notNull(other.y);
      return dx * dx + dy * dy;
    }
  }
  dart.addTypeTests(Point);
  dart.setSignature(Point, {
    constructors: () => ({new: dart.definiteFunctionType(math.Point$(T), [T, T])}),
    fields: () => ({
      x: T,
      y: T
    }),
    getters: () => ({magnitude: dart.definiteFunctionType(core.double, [])}),
    methods: () => ({
      '+': dart.definiteFunctionType(math.Point$(T), [PointOfT()]),
      '-': dart.definiteFunctionType(math.Point$(T), [PointOfT()]),
      '*': dart.definiteFunctionType(math.Point$(T), [core.num]),
      distanceTo: dart.definiteFunctionType(core.double, [PointOfT()]),
      squaredDistanceTo: dart.definiteFunctionType(T, [PointOfT()])
    })
  });
  return Point;
});
math.Point = Point();
let const;
math.Random = class Random extends core.Object {
  static new(seed) {
    if (seed === void 0) seed = null;
    return seed == null ? const || (const = dart.const(new math._JSRandom())) : new math._Random(seed);
  }
  static secure() {
    return math.Random._secureRandom;
  }
};
dart.setSignature(math.Random, {
  constructors: () => ({
    new: dart.definiteFunctionType(math.Random, [], [core.int]),
    secure: dart.definiteFunctionType(math.Random, [])
  }),
  sfields: () => ({_secureRandom: math._JSSecureRandom})
});
dart.defineLazy(math.Random, {
  get _secureRandom() {
    return new math._JSSecureRandom();
  }
});
math._RectangleBase$ = dart.generic(T => {
  let RectangleOfT = () => (RectangleOfT = dart.constFn(math.Rectangle$(T)))();
  let PointOfT = () => (PointOfT = dart.constFn(math.Point$(T)))();
  dart.defineExtensionNames([
    'right',
    'bottom',
    'toString',
    '==',
    'hashCode',
    'intersection',
    'intersects',
    'boundingBox',
    'containsRectangle',
    'containsPoint',
    'topLeft',
    'topRight',
    'bottomRight',
    'bottomLeft'
  ]);
  class _RectangleBase extends core.Object {
    new() {
    }
    get right() {
      return dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]);
    }
    get bottom() {
      return dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]);
    }
    toString() {
      return dart.str`Rectangle (${this[dartx.left]}, ${this[dartx.top]}) ${this[dartx.width]} x ${this[dartx.height]}`;
    }
    ['=='](other) {
      if (!RectangleOfnum().is(other)) return false;
      let otherRect = RectangleOfnum().as(other);
      return this[dartx.left] == otherRect[dartx.left] && this[dartx.top] == otherRect[dartx.top] && this[dartx.right] == otherRect[dartx.right] && this[dartx.bottom] == otherRect[dartx.bottom];
    }
    get hashCode() {
      return math._JenkinsSmiHash.hash4(dart.hashCode(this[dartx.left]), dart.hashCode(this[dartx.top]), dart.hashCode(this[dartx.right]), dart.hashCode(this[dartx.bottom]));
    }
    intersection(other) {
      RectangleOfT()._check(other);
      let x0 = math.max(T)(this[dartx.left], other[dartx.left]);
      let x1 = math.min(T)(dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]), dart.notNull(other[dartx.left]) + dart.notNull(other[dartx.width]));
      if (dart.notNull(x0) <= dart.notNull(x1)) {
        let y0 = math.max(T)(this[dartx.top], other[dartx.top]);
        let y1 = math.min(T)(dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]), dart.notNull(other[dartx.top]) + dart.notNull(other[dartx.height]));
        if (dart.notNull(y0) <= dart.notNull(y1)) {
          return new (RectangleOfT())(x0, y0, dart.notNull(x1) - dart.notNull(x0), dart.notNull(y1) - dart.notNull(y0));
        }
      }
      return null;
    }
    intersects(other) {
      return dart.notNull(this[dartx.left]) <= dart.notNull(other[dartx.left]) + dart.notNull(other[dartx.width]) && dart.notNull(other[dartx.left]) <= dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]) && dart.notNull(this[dartx.top]) <= dart.notNull(other[dartx.top]) + dart.notNull(other[dartx.height]) && dart.notNull(other[dartx.top]) <= dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]);
    }
    boundingBox(other) {
      RectangleOfT()._check(other);
      let right = math.max(T)(dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]), dart.notNull(other[dartx.left]) + dart.notNull(other[dartx.width]));
      let bottom = math.max(T)(dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]), dart.notNull(other[dartx.top]) + dart.notNull(other[dartx.height]));
      let left = math.min(T)(this[dartx.left], other[dartx.left]);
      let top = math.min(T)(this[dartx.top], other[dartx.top]);
      return new (RectangleOfT())(left, top, dart.notNull(right) - dart.notNull(left), dart.notNull(bottom) - dart.notNull(top));
    }
    containsRectangle(another) {
      return dart.notNull(this[dartx.left]) <= dart.notNull(another[dartx.left]) && dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]) >= dart.notNull(another[dartx.left]) + dart.notNull(another[dartx.width]) && dart.notNull(this[dartx.top]) <= dart.notNull(another[dartx.top]) && dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]) >= dart.notNull(another[dartx.top]) + dart.notNull(another[dartx.height]);
    }
    containsPoint(another) {
      return dart.notNull(another.x) >= dart.notNull(this[dartx.left]) && dart.notNull(another.x) <= dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]) && dart.notNull(another.y) >= dart.notNull(this[dartx.top]) && dart.notNull(another.y) <= dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]);
    }
    get topLeft() {
      return new (PointOfT())(this[dartx.left], this[dartx.top]);
    }
    get topRight() {
      return new (PointOfT())(dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]), this[dartx.top]);
    }
    get bottomRight() {
      return new (PointOfT())(dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]), dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]));
    }
    get bottomLeft() {
      return new (PointOfT())(this[dartx.left], dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]));
    }
  }
  dart.addTypeTests(_RectangleBase);
  dart.setSignature(_RectangleBase, {
    constructors: () => ({new: dart.definiteFunctionType(math._RectangleBase$(T), [])}),
    getters: () => ({
      right: dart.definiteFunctionType(T, []),
      bottom: dart.definiteFunctionType(T, []),
      topLeft: dart.definiteFunctionType(math.Point$(T), []),
      topRight: dart.definiteFunctionType(math.Point$(T), []),
      bottomRight: dart.definiteFunctionType(math.Point$(T), []),
      bottomLeft: dart.definiteFunctionType(math.Point$(T), [])
    }),
    methods: () => ({
      intersection: dart.definiteFunctionType(math.Rectangle$(T), [RectangleOfT()]),
      intersects: dart.definiteFunctionType(core.bool, [RectangleOfnum()]),
      boundingBox: dart.definiteFunctionType(math.Rectangle$(T), [RectangleOfT()]),
      containsRectangle: dart.definiteFunctionType(core.bool, [RectangleOfnum()]),
      containsPoint: dart.definiteFunctionType(core.bool, [PointOfnum()])
    })
  });
  dart.defineExtensionMembers(_RectangleBase, [
    'toString',
    '==',
    'intersection',
    'intersects',
    'boundingBox',
    'containsRectangle',
    'containsPoint',
    'right',
    'bottom',
    'hashCode',
    'topLeft',
    'topRight',
    'bottomRight',
    'bottomLeft'
  ]);
  return _RectangleBase;
});
math._RectangleBase = _RectangleBase();
math.Rectangle$ = dart.generic(T => {
  let RectangleOfT = () => (RectangleOfT = dart.constFn(math.Rectangle$(T)))();
  let PointOfT = () => (PointOfT = dart.constFn(math.Point$(T)))();
  dart.defineExtensionNames([
    'left',
    'top',
    'width',
    'height'
  ]);
  class Rectangle extends math._RectangleBase$(T) {
    get left() {
      return this[left$];
    }
    set left(value) {
      super.left = value;
    }
    get top() {
      return this[top$];
    }
    set top(value) {
      super.top = value;
    }
    get width() {
      return this[width$];
    }
    set width(value) {
      super.width = value;
    }
    get height() {
      return this[height$];
    }
    set height(value) {
      super.height = value;
    }
    new(left, top, width, height) {
      this[left$] = left;
      this[top$] = top;
      this[width$] = dart.notNull(width) < 0 ? -dart.notNull(width) * 0 : width;
      this[height$] = dart.notNull(height) < 0 ? -dart.notNull(height) * 0 : height;
      super.new();
    }
    static fromPoints(a, b) {
      let left = math.min(T)(a.x, b.x);
      let width = dart.notNull(math.max(T)(a.x, b.x)) - dart.notNull(left);
      let top = math.min(T)(a.y, b.y);
      let height = dart.notNull(math.max(T)(a.y, b.y)) - dart.notNull(top);
      return new (RectangleOfT())(left, top, width, height);
    }
  }
  const left$ = Symbol(Rectangle.name + "." + 'left'.toString());
  const top$ = Symbol(Rectangle.name + "." + 'top'.toString());
  const width$ = Symbol(Rectangle.name + "." + 'width'.toString());
  const height$ = Symbol(Rectangle.name + "." + 'height'.toString());
  dart.setSignature(Rectangle, {
    constructors: () => ({
      new: dart.definiteFunctionType(math.Rectangle$(T), [T, T, T, T]),
      fromPoints: dart.definiteFunctionType(math.Rectangle$(T), [PointOfT(), PointOfT()])
    }),
    fields: () => ({
      left: T,
      top: T,
      width: T,
      height: T
    })
  });
  dart.defineExtensionMembers(Rectangle, ['left', 'top', 'width', 'height']);
  return Rectangle;
});
math.Rectangle = Rectangle();
const _width = Symbol('_width');
const _height = Symbol('_height');
math.MutableRectangle$ = dart.generic(T => {
  let MutableRectangleOfT = () => (MutableRectangleOfT = dart.constFn(math.MutableRectangle$(T)))();
  let RectangleOfT = () => (RectangleOfT = dart.constFn(math.Rectangle$(T)))();
  let PointOfT = () => (PointOfT = dart.constFn(math.Point$(T)))();
  class MutableRectangle extends math._RectangleBase$(T) {
    get left() {
      return this[left$];
    }
    set left(value) {
      this[left$] = value;
    }
    get top() {
      return this[top$];
    }
    set top(value) {
      this[top$] = value;
    }
    new(left, top, width, height) {
      this[left$] = left;
      this[top$] = top;
      this[_width] = dart.notNull(width) < 0 ? math._clampToZero(T)(width) : width;
      this[_height] = dart.notNull(height) < 0 ? math._clampToZero(T)(height) : height;
      super.new();
    }
    static fromPoints(a, b) {
      let left = math.min(T)(a.x, b.x);
      let width = dart.notNull(math.max(T)(a.x, b.x)) - dart.notNull(left);
      let top = math.min(T)(a.y, b.y);
      let height = dart.notNull(math.max(T)(a.y, b.y)) - dart.notNull(top);
      return new (MutableRectangleOfT())(left, top, width, height);
    }
    get width() {
      return this[_width];
    }
    set width(width) {
      T._check(width);
      if (dart.notNull(width) < 0) width = math._clampToZero(T)(width);
      this[_width] = width;
    }
    get height() {
      return this[_height];
    }
    set height(height) {
      T._check(height);
      if (dart.notNull(height) < 0) height = math._clampToZero(T)(height);
      this[_height] = height;
    }
  }
  const left$ = Symbol(MutableRectangle.name + "." + 'left'.toString());
  const top$ = Symbol(MutableRectangle.name + "." + 'top'.toString());
  MutableRectangle[dart.implements] = () => [RectangleOfT()];
  dart.setSignature(MutableRectangle, {
    constructors: () => ({
      new: dart.definiteFunctionType(math.MutableRectangle$(T), [T, T, T, T]),
      fromPoints: dart.definiteFunctionType(math.MutableRectangle$(T), [PointOfT(), PointOfT()])
    }),
    fields: () => ({
      left: T,
      top: T,
      [_width]: T,
      [_height]: T
    }),
    getters: () => ({
      width: dart.definiteFunctionType(T, []),
      height: dart.definiteFunctionType(T, [])
    }),
    setters: () => ({
      width: dart.definiteFunctionType(dart.void, [T]),
      height: dart.definiteFunctionType(dart.void, [T])
    })
  });
  dart.defineExtensionMembers(MutableRectangle, ['left', 'top', 'width', 'height']);
  return MutableRectangle;
});
math.MutableRectangle = MutableRectangle();
math._clampToZero = function(T) {
  return value => {
    dart.assert(dart.notNull(value) < 0);
    return -dart.notNull(value) * 0;
  };
};
dart.fn(math._clampToZero, TToT());
mirrors.MirrorSystem = class MirrorSystem extends core.Object {
  findLibrary(libraryName) {
    return this.libraries[dartx.values][dartx.singleWhere](dart.fn(library => dart.equals(library.simpleName, libraryName), LibraryMirrorTobool()));
  }
  static getName(symbol) {
    return _js_mirrors.getName(symbol);
  }
  static getSymbol(name, library) {
    if (library === void 0) library = null;
    return _js_mirrors.getSymbol(name, library);
  }
};
dart.setSignature(mirrors.MirrorSystem, {
  methods: () => ({findLibrary: dart.definiteFunctionType(mirrors.LibraryMirror, [core.Symbol])}),
  statics: () => ({
    getName: dart.definiteFunctionType(core.String, [core.Symbol]),
    getSymbol: dart.definiteFunctionType(core.Symbol, [core.String], [mirrors.LibraryMirror])
  }),
  names: ['getName', 'getSymbol']
});
mirrors.currentMirrorSystem = function() {
  return mirrors.MirrorSystem._check(_js_mirrors.currentJsMirrorSystem);
};
dart.fn(mirrors.currentMirrorSystem, VoidToMirrorSystem());
mirrors.reflect = function(reflectee) {
  return _js_mirrors.reflect(reflectee);
};
dart.lazyFn(mirrors.reflect, () => ObjectToInstanceMirror());
mirrors.reflectClass = function(key) {
  if (!core.Type.is(key) || dart.equals(key, dart.wrapType(dart.dynamic))) {
    dart.throw(new core.ArgumentError(dart.str`${key} does not denote a class`));
  }
  let tm = mirrors.reflectType(key);
  if (!mirrors.ClassMirror.is(tm)) {
    dart.throw(new core.ArgumentError(dart.str`${key} does not denote a class`));
  }
  return mirrors.ClassMirror._check(mirrors.ClassMirror.as(tm).originalDeclaration);
};
dart.lazyFn(mirrors.reflectClass, () => TypeToClassMirror());
mirrors.reflectType = function(key) {
  if (dart.equals(key, dart.wrapType(dart.dynamic))) {
    return mirrors.currentMirrorSystem().dynamicType;
  }
  return _js_mirrors.reflectType(key);
};
dart.lazyFn(mirrors.reflectType, () => TypeToTypeMirror());
mirrors.Mirror = class Mirror extends core.Object {};
mirrors.IsolateMirror = class IsolateMirror extends core.Object {};
mirrors.IsolateMirror[dart.implements] = () => [mirrors.Mirror];
mirrors.DeclarationMirror = class DeclarationMirror extends core.Object {};
mirrors.DeclarationMirror[dart.implements] = () => [mirrors.Mirror];
mirrors.ObjectMirror = class ObjectMirror extends core.Object {};
mirrors.ObjectMirror[dart.implements] = () => [mirrors.Mirror];
mirrors.InstanceMirror = class InstanceMirror extends core.Object {};
mirrors.InstanceMirror[dart.implements] = () => [mirrors.ObjectMirror];
mirrors.ClosureMirror = class ClosureMirror extends core.Object {};
mirrors.ClosureMirror[dart.implements] = () => [mirrors.InstanceMirror];
mirrors.LibraryMirror = class LibraryMirror extends core.Object {};
mirrors.LibraryMirror[dart.implements] = () => [mirrors.DeclarationMirror, mirrors.ObjectMirror];
mirrors.LibraryDependencyMirror = class LibraryDependencyMirror extends core.Object {};
mirrors.LibraryDependencyMirror[dart.implements] = () => [mirrors.Mirror];
mirrors.CombinatorMirror = class CombinatorMirror extends core.Object {};
mirrors.CombinatorMirror[dart.implements] = () => [mirrors.Mirror];
mirrors.TypeMirror = class TypeMirror extends core.Object {};
mirrors.TypeMirror[dart.implements] = () => [mirrors.DeclarationMirror];
mirrors.ClassMirror = class ClassMirror extends core.Object {};
mirrors.ClassMirror[dart.implements] = () => [mirrors.TypeMirror, mirrors.ObjectMirror];
mirrors.FunctionTypeMirror = class FunctionTypeMirror extends core.Object {};
mirrors.FunctionTypeMirror[dart.implements] = () => [mirrors.ClassMirror];
mirrors.TypeVariableMirror = class TypeVariableMirror extends mirrors.TypeMirror {};
mirrors.TypedefMirror = class TypedefMirror extends core.Object {};
mirrors.TypedefMirror[dart.implements] = () => [mirrors.TypeMirror];
mirrors.MethodMirror = class MethodMirror extends core.Object {};
mirrors.MethodMirror[dart.implements] = () => [mirrors.DeclarationMirror];
mirrors.VariableMirror = class VariableMirror extends core.Object {};
mirrors.VariableMirror[dart.implements] = () => [mirrors.DeclarationMirror];
mirrors.ParameterMirror = class ParameterMirror extends core.Object {};
mirrors.ParameterMirror[dart.implements] = () => [mirrors.VariableMirror];
mirrors.SourceLocation = class SourceLocation extends core.Object {};
mirrors.Comment = class Comment extends core.Object {
  new(text, trimmedText, isDocComment) {
    this.text = text;
    this.trimmedText = trimmedText;
    this.isDocComment = isDocComment;
  }
};
dart.setSignature(mirrors.Comment, {
  constructors: () => ({new: dart.definiteFunctionType(mirrors.Comment, [core.String, core.String, core.bool])}),
  fields: () => ({
    text: core.String,
    trimmedText: core.String,
    isDocComment: core.bool
  })
});
mirrors.MirrorsUsed = class MirrorsUsed extends core.Object {
  new(opts) {
    let symbols = opts && 'symbols' in opts ? opts.symbols : null;
    let targets = opts && 'targets' in opts ? opts.targets : null;
    let metaTargets = opts && 'metaTargets' in opts ? opts.metaTargets : null;
    let override = opts && 'override' in opts ? opts.override : null;
    this.symbols = symbols;
    this.targets = targets;
    this.metaTargets = metaTargets;
    this.override = override;
  }
};
dart.setSignature(mirrors.MirrorsUsed, {
  constructors: () => ({new: dart.definiteFunctionType(mirrors.MirrorsUsed, [], {symbols: dart.dynamic, targets: dart.dynamic, metaTargets: dart.dynamic, override: dart.dynamic})}),
  fields: () => ({
    symbols: dart.dynamic,
    targets: dart.dynamic,
    metaTargets: dart.dynamic,
    override: dart.dynamic
  })
});
typed_data.ByteBuffer = class ByteBuffer extends core.Object {};
typed_data.TypedData = class TypedData extends core.Object {};
const _littleEndian = Symbol('_littleEndian');
typed_data.Endianness = class Endianness extends core.Object {
  _(littleEndian) {
    this[_littleEndian] = littleEndian;
  }
};
dart.defineNamedConstructor(typed_data.Endianness, '_');
dart.setSignature(typed_data.Endianness, {
  constructors: () => ({_: dart.definiteFunctionType(typed_data.Endianness, [core.bool])}),
  fields: () => ({[_littleEndian]: core.bool}),
  sfields: () => ({
    BIG_ENDIAN: typed_data.Endianness,
    LITTLE_ENDIAN: typed_data.Endianness,
    HOST_ENDIAN: typed_data.Endianness
  })
});
dart.defineLazy(typed_data.Endianness, {
  get BIG_ENDIAN() {
    return dart.const(new typed_data.Endianness._(false));
  },
  get LITTLE_ENDIAN() {
    return dart.const(new typed_data.Endianness._(true));
  },
  get HOST_ENDIAN() {
    return typed_data.ByteData.view(typed_data.Uint16List.fromList(JSArrayOfint().of([1]))[dartx.buffer])[dartx.getInt8](0) == 1 ? typed_data.Endianness.LITTLE_ENDIAN : typed_data.Endianness.BIG_ENDIAN;
  }
});
typed_data.ByteData = class ByteData extends core.Object {
  static new(length) {
    return _native_typed_data.NativeByteData.new(length);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asByteData](offsetInBytes, length);
  }
};
typed_data.ByteData[dart.implements] = () => [typed_data.TypedData];
dart.setSignature(typed_data.ByteData, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.ByteData, [core.int]),
    view: dart.definiteFunctionType(typed_data.ByteData, [typed_data.ByteBuffer], [core.int, core.int])
  })
});
typed_data.Int8List = class Int8List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeInt8List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt8List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asInt8List](offsetInBytes, length);
  }
};
typed_data.Int8List[dart.implements] = () => [ListOfint(), typed_data.TypedData];
dart.setSignature(typed_data.Int8List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Int8List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Int8List, [ListOfint()]),
    view: dart.definiteFunctionType(typed_data.Int8List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Int8List.BYTES_PER_ELEMENT = 1;
typed_data.Uint8List = class Uint8List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeUint8List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint8List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asUint8List](offsetInBytes, length);
  }
};
typed_data.Uint8List[dart.implements] = () => [ListOfint(), typed_data.TypedData];
dart.setSignature(typed_data.Uint8List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Uint8List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Uint8List, [ListOfint()]),
    view: dart.definiteFunctionType(typed_data.Uint8List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Uint8List.BYTES_PER_ELEMENT = 1;
typed_data.Uint8ClampedList = class Uint8ClampedList extends core.Object {
  static new(length) {
    return _native_typed_data.NativeUint8ClampedList.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint8ClampedList.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asUint8ClampedList](offsetInBytes, length);
  }
};
typed_data.Uint8ClampedList[dart.implements] = () => [ListOfint(), typed_data.TypedData];
dart.setSignature(typed_data.Uint8ClampedList, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Uint8ClampedList, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Uint8ClampedList, [ListOfint()]),
    view: dart.definiteFunctionType(typed_data.Uint8ClampedList, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Uint8ClampedList.BYTES_PER_ELEMENT = 1;
typed_data.Int16List = class Int16List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeInt16List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt16List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asInt16List](offsetInBytes, length);
  }
};
typed_data.Int16List[dart.implements] = () => [ListOfint(), typed_data.TypedData];
dart.setSignature(typed_data.Int16List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Int16List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Int16List, [ListOfint()]),
    view: dart.definiteFunctionType(typed_data.Int16List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Int16List.BYTES_PER_ELEMENT = 2;
typed_data.Uint16List = class Uint16List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeUint16List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint16List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asUint16List](offsetInBytes, length);
  }
};
typed_data.Uint16List[dart.implements] = () => [ListOfint(), typed_data.TypedData];
dart.setSignature(typed_data.Uint16List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Uint16List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Uint16List, [ListOfint()]),
    view: dart.definiteFunctionType(typed_data.Uint16List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Uint16List.BYTES_PER_ELEMENT = 2;
typed_data.Int32List = class Int32List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeInt32List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt32List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asInt32List](offsetInBytes, length);
  }
};
typed_data.Int32List[dart.implements] = () => [ListOfint(), typed_data.TypedData];
dart.setSignature(typed_data.Int32List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Int32List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Int32List, [ListOfint()]),
    view: dart.definiteFunctionType(typed_data.Int32List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Int32List.BYTES_PER_ELEMENT = 4;
typed_data.Uint32List = class Uint32List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeUint32List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint32List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asUint32List](offsetInBytes, length);
  }
};
typed_data.Uint32List[dart.implements] = () => [ListOfint(), typed_data.TypedData];
dart.setSignature(typed_data.Uint32List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Uint32List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Uint32List, [ListOfint()]),
    view: dart.definiteFunctionType(typed_data.Uint32List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Uint32List.BYTES_PER_ELEMENT = 4;
typed_data.Int64List = class Int64List extends core.Object {
  static new(length) {
    dart.throw(new core.UnsupportedError("Int64List not supported by dart2js."));
  }
  static fromList(elements) {
    dart.throw(new core.UnsupportedError("Int64List not supported by dart2js."));
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asInt64List](offsetInBytes, length);
  }
};
typed_data.Int64List[dart.implements] = () => [ListOfint(), typed_data.TypedData];
dart.setSignature(typed_data.Int64List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Int64List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Int64List, [ListOfint()]),
    view: dart.definiteFunctionType(typed_data.Int64List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Int64List.BYTES_PER_ELEMENT = 8;
typed_data.Uint64List = class Uint64List extends core.Object {
  static new(length) {
    dart.throw(new core.UnsupportedError("Uint64List not supported by dart2js."));
  }
  static fromList(elements) {
    dart.throw(new core.UnsupportedError("Uint64List not supported by dart2js."));
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asUint64List](offsetInBytes, length);
  }
};
typed_data.Uint64List[dart.implements] = () => [ListOfint(), typed_data.TypedData];
dart.setSignature(typed_data.Uint64List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Uint64List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Uint64List, [ListOfint()]),
    view: dart.definiteFunctionType(typed_data.Uint64List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Uint64List.BYTES_PER_ELEMENT = 8;
typed_data.Float32List = class Float32List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeFloat32List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeFloat32List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asFloat32List](offsetInBytes, length);
  }
};
typed_data.Float32List[dart.implements] = () => [ListOfdouble(), typed_data.TypedData];
dart.setSignature(typed_data.Float32List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Float32List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Float32List, [ListOfdouble()]),
    view: dart.definiteFunctionType(typed_data.Float32List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Float32List.BYTES_PER_ELEMENT = 4;
typed_data.Float64List = class Float64List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeFloat64List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeFloat64List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asFloat64List](offsetInBytes, length);
  }
};
typed_data.Float64List[dart.implements] = () => [ListOfdouble(), typed_data.TypedData];
dart.setSignature(typed_data.Float64List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Float64List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Float64List, [ListOfdouble()]),
    view: dart.definiteFunctionType(typed_data.Float64List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Float64List.BYTES_PER_ELEMENT = 8;
typed_data.Float32x4List = class Float32x4List extends core.Object {
  static new(length) {
    return new _native_typed_data.NativeFloat32x4List(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeFloat32x4List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asFloat32x4List](offsetInBytes, length);
  }
};
typed_data.Float32x4List[dart.implements] = () => [ListOfFloat32x4(), typed_data.TypedData];
dart.setSignature(typed_data.Float32x4List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Float32x4List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Float32x4List, [ListOfFloat32x4()]),
    view: dart.definiteFunctionType(typed_data.Float32x4List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Float32x4List.BYTES_PER_ELEMENT = 16;
typed_data.Int32x4List = class Int32x4List extends core.Object {
  static new(length) {
    return new _native_typed_data.NativeInt32x4List(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt32x4List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asInt32x4List](offsetInBytes, length);
  }
};
typed_data.Int32x4List[dart.implements] = () => [ListOfInt32x4(), typed_data.TypedData];
dart.setSignature(typed_data.Int32x4List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Int32x4List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Int32x4List, [ListOfInt32x4()]),
    view: dart.definiteFunctionType(typed_data.Int32x4List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Int32x4List.BYTES_PER_ELEMENT = 16;
typed_data.Float64x2List = class Float64x2List extends core.Object {
  static new(length) {
    return new _native_typed_data.NativeFloat64x2List(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeFloat64x2List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[dartx.asFloat64x2List](offsetInBytes, length);
  }
};
typed_data.Float64x2List[dart.implements] = () => [ListOfFloat64x2(), typed_data.TypedData];
dart.setSignature(typed_data.Float64x2List, {
  constructors: () => ({
    new: dart.definiteFunctionType(typed_data.Float64x2List, [core.int]),
    fromList: dart.definiteFunctionType(typed_data.Float64x2List, [ListOfFloat64x2()]),
    view: dart.definiteFunctionType(typed_data.Float64x2List, [typed_data.ByteBuffer], [core.int, core.int])
  }),
  sfields: () => ({BYTES_PER_ELEMENT: core.int})
});
typed_data.Float64x2List.BYTES_PER_ELEMENT = 16;
indexed_db._KeyRangeFactoryProvider = class _KeyRangeFactoryProvider extends core.Object {
  static createKeyRange_only(value) {
    return indexed_db._KeyRangeFactoryProvider._only(indexed_db._KeyRangeFactoryProvider._class(), indexed_db._KeyRangeFactoryProvider._translateKey(value));
  }
  static createKeyRange_lowerBound(bound, open) {
    if (open === void 0) open = false;
    return indexed_db._KeyRangeFactoryProvider._lowerBound(indexed_db._KeyRangeFactoryProvider._class(), indexed_db._KeyRangeFactoryProvider._translateKey(bound), open);
  }
  static createKeyRange_upperBound(bound, open) {
    if (open === void 0) open = false;
    return indexed_db._KeyRangeFactoryProvider._upperBound(indexed_db._KeyRangeFactoryProvider._class(), indexed_db._KeyRangeFactoryProvider._translateKey(bound), open);
  }
  static createKeyRange_bound(lower, upper, lowerOpen, upperOpen) {
    if (lowerOpen === void 0) lowerOpen = false;
    if (upperOpen === void 0) upperOpen = false;
    return indexed_db._KeyRangeFactoryProvider._bound(indexed_db._KeyRangeFactoryProvider._class(), indexed_db._KeyRangeFactoryProvider._translateKey(lower), indexed_db._KeyRangeFactoryProvider._translateKey(upper), lowerOpen, upperOpen);
  }
  static _class() {
    if (indexed_db._KeyRangeFactoryProvider._cachedClass != null) return indexed_db._KeyRangeFactoryProvider._cachedClass;
    return indexed_db._KeyRangeFactoryProvider._cachedClass = indexed_db._KeyRangeFactoryProvider._uncachedClass();
  }
  static _uncachedClass() {
    return window.webkitIDBKeyRange || window.mozIDBKeyRange || window.msIDBKeyRange || window.IDBKeyRange;
  }
  static _translateKey(idbkey) {
    return idbkey;
  }
  static _only(cls, value) {
    return cls.only(value);
  }
  static _lowerBound(cls, bound, open) {
    return cls.lowerBound(bound, open);
  }
  static _upperBound(cls, bound, open) {
    return cls.upperBound(bound, open);
  }
  static _bound(cls, lower, upper, lowerOpen, upperOpen) {
    return cls.bound(lower, upper, lowerOpen, upperOpen);
  }
};
dart.setSignature(indexed_db._KeyRangeFactoryProvider, {
  sfields: () => ({_cachedClass: dart.dynamic}),
  statics: () => ({
    createKeyRange_only: dart.definiteFunctionType(indexed_db.KeyRange, [dart.dynamic]),
    createKeyRange_lowerBound: dart.definiteFunctionType(indexed_db.KeyRange, [dart.dynamic], [core.bool]),
    createKeyRange_upperBound: dart.definiteFunctionType(indexed_db.KeyRange, [dart.dynamic], [core.bool]),
    createKeyRange_bound: dart.definiteFunctionType(indexed_db.KeyRange, [dart.dynamic, dart.dynamic], [core.bool, core.bool]),
    _class: dart.definiteFunctionType(dart.dynamic, []),
    _uncachedClass: dart.definiteFunctionType(dart.dynamic, []),
    _translateKey: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    _only: dart.definiteFunctionType(indexed_db.KeyRange, [dart.dynamic, dart.dynamic]),
    _lowerBound: dart.definiteFunctionType(indexed_db.KeyRange, [dart.dynamic, dart.dynamic, dart.dynamic]),
    _upperBound: dart.definiteFunctionType(indexed_db.KeyRange, [dart.dynamic, dart.dynamic, dart.dynamic]),
    _bound: dart.definiteFunctionType(indexed_db.KeyRange, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['createKeyRange_only', 'createKeyRange_lowerBound', 'createKeyRange_upperBound', 'createKeyRange_bound', '_class', '_uncachedClass', '_translateKey', '_only', '_lowerBound', '_upperBound', '_bound']
});
indexed_db._KeyRangeFactoryProvider._cachedClass = null;
indexed_db._convertNativeToDart_IDBKey = function(nativeKey) {
  function containsDate(object) {
    if (dart.test(html_common.isJavaScriptDate(object))) return true;
    if (core.List.is(object)) {
      for (let i = 0; i < dart.notNull(object[dartx.length]); i++) {
        if (dart.test(containsDate(object[dartx._get](i)))) return true;
      }
    }
    return false;
  }
  dart.fn(containsDate, dynamicTobool());
  if (dart.test(containsDate(nativeKey))) {
    dart.throw(new core.UnimplementedError('Key containing DateTime'));
  }
  return nativeKey;
};
dart.fn(indexed_db._convertNativeToDart_IDBKey, dynamicTodynamic());
indexed_db._convertDartToNative_IDBKey = function(dartKey) {
  return dartKey;
};
dart.fn(indexed_db._convertDartToNative_IDBKey, dynamicTodynamic());
indexed_db._convertNativeToDart_IDBAny = function(object) {
  return html_common.convertNativeToDart_AcceptStructuredClone(object, {mustCopy: false});
};
dart.fn(indexed_db._convertNativeToDart_IDBAny, dynamicTodynamic());
indexed_db._idbKey = 'JSExtendableArray|=Object|num|String';
indexed_db._annotation_Creates_IDBKey = dart.const(new _js_helper.Creates(indexed_db._idbKey));
indexed_db._annotation_Returns_IDBKey = dart.const(new _js_helper.Returns(indexed_db._idbKey));
const _delete = Symbol('_delete');
const _update = Symbol('_update');
const _update_1 = Symbol('_update_1');
dart.defineExtensionNames([
  'delete',
  'update',
  'next',
  'advance',
  'continuePrimaryKey',
  'direction',
  'key',
  'primaryKey',
  'source'
]);
indexed_db.Cursor = class Cursor extends _interceptors.Interceptor {
  [dartx.delete]() {
    try {
      return indexed_db._completeRequest(dart.dynamic)(this[_delete]());
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return async.Future.error(e, stacktrace);
    }

  }
  [dartx.update](value) {
    try {
      return indexed_db._completeRequest(dart.dynamic)(this[_update](value));
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return async.Future.error(e, stacktrace);
    }

  }
  [dartx.next](key) {
    if (key === void 0) key = null;
    if (key == null) {
      this.continue();
    } else {
      this.continue(key);
    }
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.direction]() {
    return this.direction;
  }
  get [dartx.key]() {
    return this.key;
  }
  get [dartx.primaryKey]() {
    return this.primaryKey;
  }
  get [dartx.source]() {
    return this.source;
  }
  [dartx.advance](...args) {
    return this.advance.apply(this, args);
  }
  [dartx.continuePrimaryKey](...args) {
    return this.continuePrimaryKey.apply(this, args);
  }
  [_delete](...args) {
    return this.delete.apply(this, args);
  }
  [_update](value) {
    let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
    return this[_update_1](value_1);
  }
  [_update_1](...args) {
    return this.update.apply(this, args);
  }
};
dart.setSignature(indexed_db.Cursor, {
  constructors: () => ({_: dart.definiteFunctionType(indexed_db.Cursor, [])}),
  fields: () => ({
    [dartx.direction]: core.String,
    [dartx.key]: core.Object,
    [dartx.primaryKey]: core.Object,
    [dartx.source]: core.Object
  }),
  methods: () => ({
    [dartx.delete]: dart.definiteFunctionType(async.Future, []),
    [dartx.update]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [dartx.next]: dart.definiteFunctionType(dart.void, [], [core.Object]),
    [dartx.advance]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.continuePrimaryKey]: dart.definiteFunctionType(dart.void, [core.Object, core.Object]),
    [_delete]: dart.definiteFunctionType(indexed_db.Request, []),
    [_update]: dart.definiteFunctionType(indexed_db.Request, [dart.dynamic]),
    [_update_1]: dart.definiteFunctionType(indexed_db.Request, [dart.dynamic])
  })
});
dart.registerExtension(dart.global.IDBCursor, indexed_db.Cursor);
const _get_value = Symbol('_get_value');
dart.defineExtensionNames([
  'value'
]);
indexed_db.CursorWithValue = class CursorWithValue extends indexed_db.Cursor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.value]() {
    return indexed_db._convertNativeToDart_IDBAny(this[_get_value]);
  }
  get [_get_value]() {
    return this.value;
  }
};
dart.setSignature(indexed_db.CursorWithValue, {
  constructors: () => ({_: dart.definiteFunctionType(indexed_db.CursorWithValue, [])}),
  fields: () => ({[_get_value]: dart.dynamic}),
  getters: () => ({[dartx.value]: dart.definiteFunctionType(dart.dynamic, [])})
});
dart.registerExtension(dart.global.IDBCursorWithValue, indexed_db.CursorWithValue);
const _createObjectStore = Symbol('_createObjectStore');
const _transaction = Symbol('_transaction');
const _createObjectStore_1 = Symbol('_createObjectStore_1');
const _createObjectStore_2 = Symbol('_createObjectStore_2');
const _addEventListener = Symbol('_addEventListener');
const _removeEventListener = Symbol('_removeEventListener');
dart.defineExtensionNames([
  'on',
  'addEventListener',
  'removeEventListener',
  'dispatchEvent'
]);
html.EventTarget = class EventTarget extends _interceptors.Interceptor {
  _created() {
    super.new();
  }
  get [dartx.on]() {
    return new html.Events(this);
  }
  [dartx.addEventListener](type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    if (listener != null) {
      this[_addEventListener](type, listener, useCapture);
    }
  }
  [dartx.removeEventListener](type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    if (listener != null) {
      this[_removeEventListener](type, listener, useCapture);
    }
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [_addEventListener](...args) {
    return this.addEventListener.apply(this, args);
  }
  [dartx.dispatchEvent](...args) {
    return this.dispatchEvent.apply(this, args);
  }
  [_removeEventListener](...args) {
    return this.removeEventListener.apply(this, args);
  }
};
dart.defineNamedConstructor(html.EventTarget, '_created');
dart.setSignature(html.EventTarget, {
  constructors: () => ({
    _created: dart.definiteFunctionType(html.EventTarget, []),
    _: dart.definiteFunctionType(html.EventTarget, [])
  }),
  getters: () => ({[dartx.on]: dart.definiteFunctionType(html.Events, [])}),
  methods: () => ({
    [dartx.addEventListener]: dart.definiteFunctionType(dart.void, [core.String, html.EventListener], [core.bool]),
    [dartx.removeEventListener]: dart.definiteFunctionType(dart.void, [core.String, html.EventListener], [core.bool]),
    [_addEventListener]: dart.definiteFunctionType(dart.void, [core.String, html.EventListener], [core.bool]),
    [dartx.dispatchEvent]: dart.definiteFunctionType(core.bool, [html.Event]),
    [_removeEventListener]: dart.definiteFunctionType(dart.void, [core.String, html.EventListener], [core.bool])
  })
});
dart.registerExtension(dart.global.EventTarget, html.EventTarget);
dart.defineExtensionNames([
  'createObjectStore',
  'transaction',
  'transactionStore',
  'transactionList',
  'transactionStores',
  'close',
  'deleteObjectStore',
  'onAbort',
  'onClose',
  'onError',
  'onVersionChange',
  'name',
  'objectStoreNames',
  'version'
]);
indexed_db.Database = class Database extends html.EventTarget {
  [dartx.createObjectStore](name, opts) {
    let keyPath = opts && 'keyPath' in opts ? opts.keyPath : null;
    let autoIncrement = opts && 'autoIncrement' in opts ? opts.autoIncrement : null;
    let options = dart.map();
    if (keyPath != null) {
      options[dartx._set]('keyPath', keyPath);
    }
    if (autoIncrement != null) {
      options[dartx._set]('autoIncrement', autoIncrement);
    }
    return this[_createObjectStore](name, options);
  }
  [dartx.transaction](storeName_OR_storeNames, mode) {
    if (mode != 'readonly' && mode != 'readwrite') {
      dart.throw(new core.ArgumentError(mode));
    }
    return this[_transaction](storeName_OR_storeNames, mode);
  }
  [dartx.transactionStore](storeName, mode) {
    if (mode != 'readonly' && mode != 'readwrite') {
      dart.throw(new core.ArgumentError(mode));
    }
    return this[_transaction](storeName, mode);
  }
  [dartx.transactionList](storeNames, mode) {
    if (mode != 'readonly' && mode != 'readwrite') {
      dart.throw(new core.ArgumentError(mode));
    }
    let storeNames_1 = html_common.convertDartToNative_StringArray(storeNames);
    return this[_transaction](storeNames_1, mode);
  }
  [dartx.transactionStores](storeNames, mode) {
    if (mode != 'readonly' && mode != 'readwrite') {
      dart.throw(new core.ArgumentError(mode));
    }
    return this[_transaction](storeNames, mode);
  }
  [_transaction](...args) {
    return this.transaction.apply(this, args);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.objectStoreNames]() {
    return this.objectStoreNames;
  }
  get [dartx.version]() {
    return this.version;
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [_createObjectStore](name, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_createObjectStore_1](name, options_1);
    }
    return this[_createObjectStore_2](name);
  }
  [_createObjectStore_1](...args) {
    return this.createObjectStore.apply(this, args);
  }
  [_createObjectStore_2](...args) {
    return this.createObjectStore.apply(this, args);
  }
  [dartx.deleteObjectStore](...args) {
    return this.deleteObjectStore.apply(this, args);
  }
  get [dartx.onAbort]() {
    return indexed_db.Database.abortEvent.forTarget(this);
  }
  get [dartx.onClose]() {
    return indexed_db.Database.closeEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return indexed_db.Database.errorEvent.forTarget(this);
  }
  get [dartx.onVersionChange]() {
    return indexed_db.Database.versionChangeEvent.forTarget(this);
  }
};
dart.setSignature(indexed_db.Database, {
  constructors: () => ({_: dart.definiteFunctionType(indexed_db.Database, [])}),
  fields: () => ({
    [dartx.name]: core.String,
    [dartx.objectStoreNames]: ListOfString(),
    [dartx.version]: core.Object
  }),
  getters: () => ({
    [dartx.onAbort]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onClose]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onVersionChange]: dart.definiteFunctionType(async.Stream$(indexed_db.VersionChangeEvent), [])
  }),
  methods: () => ({
    [dartx.createObjectStore]: dart.definiteFunctionType(indexed_db.ObjectStore, [core.String], {keyPath: core.String, autoIncrement: core.bool}),
    [dartx.transaction]: dart.definiteFunctionType(indexed_db.Transaction, [dart.dynamic, core.String]),
    [dartx.transactionStore]: dart.definiteFunctionType(indexed_db.Transaction, [core.String, core.String]),
    [dartx.transactionList]: dart.definiteFunctionType(indexed_db.Transaction, [ListOfString(), core.String]),
    [dartx.transactionStores]: dart.definiteFunctionType(indexed_db.Transaction, [html.DomStringList, core.String]),
    [_transaction]: dart.definiteFunctionType(indexed_db.Transaction, [dart.dynamic, dart.dynamic]),
    [dartx.close]: dart.definiteFunctionType(dart.void, []),
    [_createObjectStore]: dart.definiteFunctionType(indexed_db.ObjectStore, [core.String], [core.Map]),
    [_createObjectStore_1]: dart.definiteFunctionType(indexed_db.ObjectStore, [dart.dynamic, dart.dynamic]),
    [_createObjectStore_2]: dart.definiteFunctionType(indexed_db.ObjectStore, [dart.dynamic]),
    [dartx.deleteObjectStore]: dart.definiteFunctionType(dart.void, [core.String])
  }),
  sfields: () => ({
    abortEvent: EventStreamProviderOfEvent(),
    closeEvent: EventStreamProviderOfEvent(),
    errorEvent: EventStreamProviderOfEvent(),
    versionChangeEvent: EventStreamProviderOfVersionChangeEvent()
  })
});
dart.defineLazy(indexed_db.Database, {
  get abortEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('abort'));
  },
  get closeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('close'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get versionChangeEvent() {
    return dart.const(new (EventStreamProviderOfVersionChangeEvent())('versionchange'));
  }
});
dart.registerExtension(dart.global.IDBDatabase, indexed_db.Database);
const _open = Symbol('_open');
const _deleteDatabase = Symbol('_deleteDatabase');
const _webkitGetDatabaseNames = Symbol('_webkitGetDatabaseNames');
dart.defineExtensionNames([
  'open',
  'deleteDatabase',
  'getDatabaseNames',
  'supportsDatabaseNames',
  'cmp'
]);
indexed_db.IdbFactory = class IdbFactory extends _interceptors.Interceptor {
  static get supported() {
    return !!(window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB);
  }
  [dartx.open](name, opts) {
    let version = opts && 'version' in opts ? opts.version : null;
    let onUpgradeNeeded = opts && 'onUpgradeNeeded' in opts ? opts.onUpgradeNeeded : null;
    let onBlocked = opts && 'onBlocked' in opts ? opts.onBlocked : null;
    if (version == null != (onUpgradeNeeded == null)) {
      return FutureOfDatabase().error(new core.ArgumentError('version and onUpgradeNeeded must be specified together'));
    }
    try {
      let request = null;
      if (version != null) {
        request = this[_open](name, version);
      } else {
        request = this[_open](name);
      }
      if (onUpgradeNeeded != null) {
        dart.dsend(dart.dload(request, 'onUpgradeNeeded'), 'listen', onUpgradeNeeded);
      }
      if (onBlocked != null) {
        dart.dsend(dart.dload(request, 'onBlocked'), 'listen', onBlocked);
      }
      return indexed_db._completeRequest(indexed_db.Database)(indexed_db.Request._check(request));
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return FutureOfDatabase().error(e, stacktrace);
    }

  }
  [dartx.deleteDatabase](name, opts) {
    let onBlocked = opts && 'onBlocked' in opts ? opts.onBlocked : null;
    try {
      let request = this[_deleteDatabase](name);
      if (onBlocked != null) {
        request[dartx.onBlocked].listen(onBlocked);
      }
      let completer = CompleterOfIdbFactory().sync();
      request[dartx.onSuccess].listen(dart.fn(e => {
        completer.complete(this);
      }, EventTovoid()));
      request[dartx.onError].listen(dart.bind(completer, 'completeError'));
      return completer.future;
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return FutureOfIdbFactory().error(e, stacktrace);
    }

  }
  [dartx.getDatabaseNames]() {
    try {
      let request = this[_webkitGetDatabaseNames]();
      return indexed_db._completeRequest(ListOfString())(request);
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return FutureOfListOfString().error(e, stacktrace);
    }

  }
  get [dartx.supportsDatabaseNames]() {
    return dart.test(indexed_db.IdbFactory.supported) && !!(this.getDatabaseNames || this.webkitGetDatabaseNames);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.cmp](...args) {
    return this.cmp.apply(this, args);
  }
  [_deleteDatabase](...args) {
    return this.deleteDatabase.apply(this, args);
  }
  [_open](...args) {
    return this.open.apply(this, args);
  }
  [_webkitGetDatabaseNames](...args) {
    return this.webkitGetDatabaseNames.apply(this, args);
  }
};
dart.setSignature(indexed_db.IdbFactory, {
  constructors: () => ({_: dart.definiteFunctionType(indexed_db.IdbFactory, [])}),
  getters: () => ({[dartx.supportsDatabaseNames]: dart.definiteFunctionType(core.bool, [])}),
  methods: () => ({
    [dartx.open]: dart.definiteFunctionType(async.Future$(indexed_db.Database), [core.String], {version: core.int, onUpgradeNeeded: dynamicTovoid(), onBlocked: dynamicTovoid()}),
    [dartx.deleteDatabase]: dart.definiteFunctionType(async.Future$(indexed_db.IdbFactory), [core.String], {onBlocked: EventTovoid()}),
    [dartx.getDatabaseNames]: dart.definiteFunctionType(async.Future$(core.List$(core.String)), []),
    [dartx.cmp]: dart.definiteFunctionType(core.int, [core.Object, core.Object]),
    [_deleteDatabase]: dart.definiteFunctionType(indexed_db.OpenDBRequest, [core.String]),
    [_open]: dart.definiteFunctionType(indexed_db.OpenDBRequest, [core.String], [core.int]),
    [_webkitGetDatabaseNames]: dart.definiteFunctionType(indexed_db.Request, [])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.IDBFactory, indexed_db.IdbFactory);
indexed_db._completeRequest = function(T) {
  return request => {
    let completer = async.Completer$(T).sync();
    request[dartx.onSuccess].listen(dart.fn(e => {
      let result = indexed_db._cast(T)(request[dartx.result]);
      completer.complete(result);
    }, EventTovoid()));
    request[dartx.onError].listen(dart.bind(completer, 'completeError'));
    return completer.future;
  };
};
dart.lazyFn(indexed_db._completeRequest, () => RequestToFutureOfT());
const _count = Symbol('_count');
const _get = Symbol('_get');
const _getKey = Symbol('_getKey');
const _openCursor = Symbol('_openCursor');
const _openKeyCursor = Symbol('_openKeyCursor');
dart.defineExtensionNames([
  'count',
  'get',
  'getKey',
  'openCursor',
  'openKeyCursor',
  'getAll',
  'getAllKeys',
  'keyPath',
  'multiEntry',
  'name',
  'objectStore',
  'unique'
]);
indexed_db.Index = class Index extends _interceptors.Interceptor {
  [dartx.count](key_OR_range) {
    if (key_OR_range === void 0) key_OR_range = null;
    try {
      let request = this[_count](key_OR_range);
      return indexed_db._completeRequest(core.int)(request);
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return FutureOfint().error(e, stacktrace);
    }

  }
  [dartx.get](key) {
    try {
      let request = this[_get](key);
      return indexed_db._completeRequest(dart.dynamic)(request);
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return async.Future.error(e, stacktrace);
    }

  }
  [dartx.getKey](key) {
    try {
      let request = this[_getKey](key);
      return indexed_db._completeRequest(dart.dynamic)(request);
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return async.Future.error(e, stacktrace);
    }

  }
  [dartx.openCursor](opts) {
    let key = opts && 'key' in opts ? opts.key : null;
    let range = opts && 'range' in opts ? opts.range : null;
    let direction = opts && 'direction' in opts ? opts.direction : null;
    let autoAdvance = opts && 'autoAdvance' in opts ? opts.autoAdvance : null;
    let key_OR_range = null;
    if (key != null) {
      if (range != null) {
        dart.throw(new core.ArgumentError('Cannot specify both key and range.'));
      }
      key_OR_range = key;
    } else {
      key_OR_range = range;
    }
    let request = null;
    if (direction == null) {
      request = this[_openCursor](key_OR_range, "next");
    } else {
      request = this[_openCursor](key_OR_range, direction);
    }
    return indexed_db.ObjectStore._cursorStreamFromResult(indexed_db.CursorWithValue)(indexed_db.Request._check(request), autoAdvance);
  }
  [dartx.openKeyCursor](opts) {
    let key = opts && 'key' in opts ? opts.key : null;
    let range = opts && 'range' in opts ? opts.range : null;
    let direction = opts && 'direction' in opts ? opts.direction : null;
    let autoAdvance = opts && 'autoAdvance' in opts ? opts.autoAdvance : null;
    let key_OR_range = null;
    if (key != null) {
      if (range != null) {
        dart.throw(new core.ArgumentError('Cannot specify both key and range.'));
      }
      key_OR_range = key;
    } else {
      key_OR_range = range;
    }
    let request = null;
    if (direction == null) {
      request = this[_openKeyCursor](key_OR_range, "next");
    } else {
      request = this[_openKeyCursor](key_OR_range, direction);
    }
    return indexed_db.ObjectStore._cursorStreamFromResult(indexed_db.Cursor)(indexed_db.Request._check(request), autoAdvance);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.keyPath]() {
    return this.keyPath;
  }
  get [dartx.multiEntry]() {
    return this.multiEntry;
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.objectStore]() {
    return this.objectStore;
  }
  get [dartx.unique]() {
    return this.unique;
  }
  [_count](...args) {
    return this.count.apply(this, args);
  }
  [_get](...args) {
    return this.get.apply(this, args);
  }
  [dartx.getAll](...args) {
    return this.getAll.apply(this, args);
  }
  [dartx.getAllKeys](...args) {
    return this.getAllKeys.apply(this, args);
  }
  [_getKey](...args) {
    return this.getKey.apply(this, args);
  }
  [_openCursor](...args) {
    return this.openCursor.apply(this, args);
  }
  [_openKeyCursor](...args) {
    return this.openKeyCursor.apply(this, args);
  }
};
dart.setSignature(indexed_db.Index, {
  constructors: () => ({_: dart.definiteFunctionType(indexed_db.Index, [])}),
  fields: () => ({
    [dartx.keyPath]: core.Object,
    [dartx.multiEntry]: core.bool,
    [dartx.name]: core.String,
    [dartx.objectStore]: indexed_db.ObjectStore,
    [dartx.unique]: core.bool
  }),
  methods: () => ({
    [dartx.count]: dart.definiteFunctionType(async.Future$(core.int), [], [dart.dynamic]),
    [dartx.get]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [dartx.getKey]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [dartx.openCursor]: dart.definiteFunctionType(async.Stream$(indexed_db.CursorWithValue), [], {key: dart.dynamic, range: indexed_db.KeyRange, direction: core.String, autoAdvance: core.bool}),
    [dartx.openKeyCursor]: dart.definiteFunctionType(async.Stream$(indexed_db.Cursor), [], {key: dart.dynamic, range: indexed_db.KeyRange, direction: core.String, autoAdvance: core.bool}),
    [_count]: dart.definiteFunctionType(indexed_db.Request, [core.Object]),
    [_get]: dart.definiteFunctionType(indexed_db.Request, [core.Object]),
    [dartx.getAll]: dart.definiteFunctionType(indexed_db.Request, [core.Object], [core.int]),
    [dartx.getAllKeys]: dart.definiteFunctionType(indexed_db.Request, [core.Object], [core.int]),
    [_getKey]: dart.definiteFunctionType(indexed_db.Request, [core.Object]),
    [_openCursor]: dart.definiteFunctionType(indexed_db.Request, [core.Object], [core.String]),
    [_openKeyCursor]: dart.definiteFunctionType(indexed_db.Request, [core.Object], [core.String])
  })
});
dart.registerExtension(dart.global.IDBIndex, indexed_db.Index);
dart.defineExtensionNames([
  'lower',
  'lowerOpen',
  'upper',
  'upperOpen'
]);
indexed_db.KeyRange = class KeyRange extends _interceptors.Interceptor {
  static only(value) {
    return indexed_db._KeyRangeFactoryProvider.createKeyRange_only(value);
  }
  static lowerBound(bound, open) {
    if (open === void 0) open = false;
    return indexed_db._KeyRangeFactoryProvider.createKeyRange_lowerBound(bound, open);
  }
  static upperBound(bound, open) {
    if (open === void 0) open = false;
    return indexed_db._KeyRangeFactoryProvider.createKeyRange_upperBound(bound, open);
  }
  static bound(lower, upper, lowerOpen, upperOpen) {
    if (lowerOpen === void 0) lowerOpen = false;
    if (upperOpen === void 0) upperOpen = false;
    return indexed_db._KeyRangeFactoryProvider.createKeyRange_bound(lower, upper, lowerOpen, upperOpen);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.lower]() {
    return this.lower;
  }
  get [dartx.lowerOpen]() {
    return this.lowerOpen;
  }
  get [dartx.upper]() {
    return this.upper;
  }
  get [dartx.upperOpen]() {
    return this.upperOpen;
  }
};
dart.setSignature(indexed_db.KeyRange, {
  constructors: () => ({
    only: dart.definiteFunctionType(indexed_db.KeyRange, [dart.dynamic]),
    lowerBound: dart.definiteFunctionType(indexed_db.KeyRange, [dart.dynamic], [core.bool]),
    upperBound: dart.definiteFunctionType(indexed_db.KeyRange, [dart.dynamic], [core.bool]),
    bound: dart.definiteFunctionType(indexed_db.KeyRange, [dart.dynamic, dart.dynamic], [core.bool, core.bool]),
    _: dart.definiteFunctionType(indexed_db.KeyRange, [])
  }),
  fields: () => ({
    [dartx.lower]: core.Object,
    [dartx.lowerOpen]: core.bool,
    [dartx.upper]: core.Object,
    [dartx.upperOpen]: core.bool
  }),
  statics: () => ({
    bound_: dart.definiteFunctionType(indexed_db.KeyRange, [core.Object, core.Object], [core.bool, core.bool]),
    lowerBound_: dart.definiteFunctionType(indexed_db.KeyRange, [core.Object], [core.bool]),
    only_: dart.definiteFunctionType(indexed_db.KeyRange, [core.Object]),
    upperBound_: dart.definiteFunctionType(indexed_db.KeyRange, [core.Object], [core.bool])
  }),
  names: ['bound_', 'lowerBound_', 'only_', 'upperBound_']
});
dart.registerExtension(dart.global.IDBKeyRange, indexed_db.KeyRange);
const _add = Symbol('_add');
const _clear = Symbol('_clear');
const _put = Symbol('_put');
const _createIndex = Symbol('_createIndex');
const _add_1 = Symbol('_add_1');
const _add_2 = Symbol('_add_2');
const _createIndex_1 = Symbol('_createIndex_1');
const _createIndex_2 = Symbol('_createIndex_2');
const _put_1 = Symbol('_put_1');
const _put_2 = Symbol('_put_2');
dart.defineExtensionNames([
  'add',
  'clear',
  'delete',
  'count',
  'put',
  'getObject',
  'openCursor',
  'createIndex',
  'deleteIndex',
  'getAll',
  'getAllKeys',
  'index',
  'openKeyCursor',
  'autoIncrement',
  'indexNames',
  'keyPath',
  'name',
  'transaction'
]);
indexed_db.ObjectStore = class ObjectStore extends _interceptors.Interceptor {
  [dartx.add](value, key) {
    if (key === void 0) key = null;
    try {
      let request = null;
      if (key != null) {
        request = this[_add](value, key);
      } else {
        request = this[_add](value);
      }
      return indexed_db._completeRequest(dart.dynamic)(indexed_db.Request._check(request));
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return async.Future.error(e, stacktrace);
    }

  }
  [dartx.clear]() {
    try {
      return indexed_db._completeRequest(dart.dynamic)(this[_clear]());
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return async.Future.error(e, stacktrace);
    }

  }
  [dartx.delete](key_OR_keyRange) {
    try {
      return indexed_db._completeRequest(dart.dynamic)(this[_delete](key_OR_keyRange));
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return async.Future.error(e, stacktrace);
    }

  }
  [dartx.count](key_OR_range) {
    if (key_OR_range === void 0) key_OR_range = null;
    try {
      let request = this[_count](key_OR_range);
      return indexed_db._completeRequest(core.int)(request);
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return FutureOfint().error(e, stacktrace);
    }

  }
  [dartx.put](value, key) {
    if (key === void 0) key = null;
    try {
      let request = null;
      if (key != null) {
        request = this[_put](value, key);
      } else {
        request = this[_put](value);
      }
      return indexed_db._completeRequest(dart.dynamic)(indexed_db.Request._check(request));
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return async.Future.error(e, stacktrace);
    }

  }
  [dartx.getObject](key) {
    try {
      let request = this[_get](key);
      return indexed_db._completeRequest(dart.dynamic)(request);
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      return async.Future.error(e, stacktrace);
    }

  }
  [dartx.openCursor](opts) {
    let key = opts && 'key' in opts ? opts.key : null;
    let range = opts && 'range' in opts ? opts.range : null;
    let direction = opts && 'direction' in opts ? opts.direction : null;
    let autoAdvance = opts && 'autoAdvance' in opts ? opts.autoAdvance : null;
    let key_OR_range = null;
    if (key != null) {
      if (range != null) {
        dart.throw(new core.ArgumentError('Cannot specify both key and range.'));
      }
      key_OR_range = key;
    } else {
      key_OR_range = range;
    }
    let request = null;
    if (direction == null) {
      request = this[_openCursor](key_OR_range);
    } else {
      request = this[_openCursor](key_OR_range, direction);
    }
    return indexed_db.ObjectStore._cursorStreamFromResult(indexed_db.CursorWithValue)(indexed_db.Request._check(request), autoAdvance);
  }
  [dartx.createIndex](name, keyPath, opts) {
    let unique = opts && 'unique' in opts ? opts.unique : null;
    let multiEntry = opts && 'multiEntry' in opts ? opts.multiEntry : null;
    let options = dart.map();
    if (unique != null) {
      options[dartx._set]('unique', unique);
    }
    if (multiEntry != null) {
      options[dartx._set]('multiEntry', multiEntry);
    }
    return this[_createIndex](name, keyPath, options);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.autoIncrement]() {
    return this.autoIncrement;
  }
  get [dartx.indexNames]() {
    return this.indexNames;
  }
  get [dartx.keyPath]() {
    return this.keyPath;
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.transaction]() {
    return this.transaction;
  }
  [_add](value, key) {
    if (key === void 0) key = null;
    if (key != null) {
      let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
      let key_2 = html_common.convertDartToNative_SerializedScriptValue(key);
      return this[_add_1](value_1, key_2);
    }
    let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
    return this[_add_2](value_1);
  }
  [_add_1](...args) {
    return this.add.apply(this, args);
  }
  [_add_2](...args) {
    return this.add.apply(this, args);
  }
  [_clear](...args) {
    return this.clear.apply(this, args);
  }
  [_count](...args) {
    return this.count.apply(this, args);
  }
  [_createIndex](name, keyPath, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_createIndex_1](name, keyPath, options_1);
    }
    return this[_createIndex_2](name, keyPath);
  }
  [_createIndex_1](...args) {
    return this.createIndex.apply(this, args);
  }
  [_createIndex_2](...args) {
    return this.createIndex.apply(this, args);
  }
  [_delete](...args) {
    return this.delete.apply(this, args);
  }
  [dartx.deleteIndex](...args) {
    return this.deleteIndex.apply(this, args);
  }
  [_get](...args) {
    return this.get.apply(this, args);
  }
  [dartx.getAll](...args) {
    return this.getAll.apply(this, args);
  }
  [dartx.getAllKeys](...args) {
    return this.getAllKeys.apply(this, args);
  }
  [dartx.index](...args) {
    return this.index.apply(this, args);
  }
  [_openCursor](...args) {
    return this.openCursor.apply(this, args);
  }
  [dartx.openKeyCursor](...args) {
    return this.openKeyCursor.apply(this, args);
  }
  [_put](value, key) {
    if (key === void 0) key = null;
    if (key != null) {
      let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
      let key_2 = html_common.convertDartToNative_SerializedScriptValue(key);
      return this[_put_1](value_1, key_2);
    }
    let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
    return this[_put_2](value_1);
  }
  [_put_1](...args) {
    return this.put.apply(this, args);
  }
  [_put_2](...args) {
    return this.put.apply(this, args);
  }
  static _cursorStreamFromResult(T) {
    return (request, autoAdvance) => {
      let controller = async.StreamController$(T).new({sync: true});
      request[dartx.onError].listen(dart.bind(controller, 'addError'));
      request[dartx.onSuccess].listen(dart.fn(e => {
        let cursor = indexed_db._cast(T)(request[dartx.result]);
        if (cursor == null) {
          controller.close();
        } else {
          controller.add(cursor);
          if (autoAdvance == true && dart.test(controller.hasListener)) {
            cursor[dartx.next]();
          }
        }
      }, EventTovoid()));
      return controller.stream;
    };
  }
};
dart.setSignature(indexed_db.ObjectStore, {
  constructors: () => ({_: dart.definiteFunctionType(indexed_db.ObjectStore, [])}),
  fields: () => ({
    [dartx.autoIncrement]: core.bool,
    [dartx.indexNames]: ListOfString(),
    [dartx.keyPath]: core.Object,
    [dartx.name]: core.String,
    [dartx.transaction]: indexed_db.Transaction
  }),
  methods: () => ({
    [dartx.add]: dart.definiteFunctionType(async.Future, [dart.dynamic], [dart.dynamic]),
    [dartx.clear]: dart.definiteFunctionType(async.Future, []),
    [dartx.delete]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [dartx.count]: dart.definiteFunctionType(async.Future$(core.int), [], [dart.dynamic]),
    [dartx.put]: dart.definiteFunctionType(async.Future, [dart.dynamic], [dart.dynamic]),
    [dartx.getObject]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [dartx.openCursor]: dart.definiteFunctionType(async.Stream$(indexed_db.CursorWithValue), [], {key: dart.dynamic, range: indexed_db.KeyRange, direction: core.String, autoAdvance: core.bool}),
    [dartx.createIndex]: dart.definiteFunctionType(indexed_db.Index, [core.String, dart.dynamic], {unique: core.bool, multiEntry: core.bool}),
    [_add]: dart.definiteFunctionType(indexed_db.Request, [dart.dynamic], [dart.dynamic]),
    [_add_1]: dart.definiteFunctionType(indexed_db.Request, [dart.dynamic, dart.dynamic]),
    [_add_2]: dart.definiteFunctionType(indexed_db.Request, [dart.dynamic]),
    [_clear]: dart.definiteFunctionType(indexed_db.Request, []),
    [_count]: dart.definiteFunctionType(indexed_db.Request, [core.Object]),
    [_createIndex]: dart.definiteFunctionType(indexed_db.Index, [core.String, core.Object], [core.Map]),
    [_createIndex_1]: dart.definiteFunctionType(indexed_db.Index, [dart.dynamic, dart.dynamic, dart.dynamic]),
    [_createIndex_2]: dart.definiteFunctionType(indexed_db.Index, [dart.dynamic, dart.dynamic]),
    [_delete]: dart.definiteFunctionType(indexed_db.Request, [core.Object]),
    [dartx.deleteIndex]: dart.definiteFunctionType(dart.void, [core.String]),
    [_get]: dart.definiteFunctionType(indexed_db.Request, [core.Object]),
    [dartx.getAll]: dart.definiteFunctionType(indexed_db.Request, [core.Object], [core.int]),
    [dartx.getAllKeys]: dart.definiteFunctionType(indexed_db.Request, [core.Object], [core.int]),
    [dartx.index]: dart.definiteFunctionType(indexed_db.Index, [core.String]),
    [_openCursor]: dart.definiteFunctionType(indexed_db.Request, [core.Object], [core.String]),
    [dartx.openKeyCursor]: dart.definiteFunctionType(indexed_db.Request, [core.Object], [core.String]),
    [_put]: dart.definiteFunctionType(indexed_db.Request, [dart.dynamic], [dart.dynamic]),
    [_put_1]: dart.definiteFunctionType(indexed_db.Request, [dart.dynamic, dart.dynamic]),
    [_put_2]: dart.definiteFunctionType(indexed_db.Request, [dart.dynamic])
  }),
  statics: () => ({_cursorStreamFromResult: dart.definiteFunctionType(T => [async.Stream$(T), [indexed_db.Request, core.bool]])}),
  names: ['_cursorStreamFromResult']
});
dart.registerExtension(dart.global.IDBObjectStore, indexed_db.ObjectStore);
indexed_db._cast = function(To) {
  return x => {
    return To._check(x);
  };
};
dart.fn(indexed_db._cast, dynamicToTo());
const _get_result = Symbol('_get_result');
dart.defineExtensionNames([
  'result',
  'onError',
  'onSuccess',
  'error',
  'readyState',
  'source',
  'transaction'
]);
indexed_db.Request = class Request extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.error]() {
    return this.error;
  }
  get [dartx.readyState]() {
    return this.readyState;
  }
  get [dartx.result]() {
    return indexed_db._convertNativeToDart_IDBAny(this[_get_result]);
  }
  get [_get_result]() {
    return this.result;
  }
  get [dartx.source]() {
    return this.source;
  }
  get [dartx.transaction]() {
    return this.transaction;
  }
  get [dartx.onError]() {
    return indexed_db.Request.errorEvent.forTarget(this);
  }
  get [dartx.onSuccess]() {
    return indexed_db.Request.successEvent.forTarget(this);
  }
};
dart.setSignature(indexed_db.Request, {
  constructors: () => ({_: dart.definiteFunctionType(indexed_db.Request, [])}),
  fields: () => ({
    [dartx.error]: html.DomError,
    [dartx.readyState]: core.String,
    [_get_result]: dart.dynamic,
    [dartx.source]: core.Object,
    [dartx.transaction]: indexed_db.Transaction
  }),
  getters: () => ({
    [dartx.result]: dart.definiteFunctionType(dart.dynamic, []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSuccess]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  sfields: () => ({
    errorEvent: EventStreamProviderOfEvent(),
    successEvent: EventStreamProviderOfEvent()
  })
});
dart.defineLazy(indexed_db.Request, {
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get successEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('success'));
  }
});
dart.registerExtension(dart.global.IDBRequest, indexed_db.Request);
dart.defineExtensionNames([
  'onBlocked',
  'onUpgradeNeeded'
]);
indexed_db.OpenDBRequest = class OpenDBRequest extends indexed_db.Request {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.onBlocked]() {
    return indexed_db.OpenDBRequest.blockedEvent.forTarget(this);
  }
  get [dartx.onUpgradeNeeded]() {
    return indexed_db.OpenDBRequest.upgradeNeededEvent.forTarget(this);
  }
};
dart.setSignature(indexed_db.OpenDBRequest, {
  constructors: () => ({_: dart.definiteFunctionType(indexed_db.OpenDBRequest, [])}),
  getters: () => ({
    [dartx.onBlocked]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onUpgradeNeeded]: dart.definiteFunctionType(async.Stream$(indexed_db.VersionChangeEvent), [])
  }),
  sfields: () => ({
    blockedEvent: EventStreamProviderOfEvent(),
    upgradeNeededEvent: EventStreamProviderOfVersionChangeEvent()
  })
});
dart.defineLazy(indexed_db.OpenDBRequest, {
  get blockedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('blocked'));
  },
  get upgradeNeededEvent() {
    return dart.const(new (EventStreamProviderOfVersionChangeEvent())('upgradeneeded'));
  }
});
dart.registerExtension(dart.global.IDBOpenDBRequest, indexed_db.OpenDBRequest);
dart.registerExtension(dart.global.IDBVersionChangeRequest, indexed_db.OpenDBRequest);
dart.defineExtensionNames([
  'completed',
  'abort',
  'objectStore',
  'onAbort',
  'onComplete',
  'onError',
  'db',
  'error',
  'mode',
  'objectStoreNames'
]);
indexed_db.Transaction = class Transaction extends html.EventTarget {
  get [dartx.completed]() {
    let completer = CompleterOfDatabase().new();
    this[dartx.onComplete].first.then(dart.dynamic)(dart.fn(_ => {
      completer.complete(this[dartx.db]);
    }, EventTodynamic()));
    this[dartx.onError].first.then(dart.dynamic)(dart.fn(e => {
      completer.completeError(e);
    }, EventTodynamic()));
    this[dartx.onAbort].first.then(dart.dynamic)(dart.fn(e => {
      if (!dart.test(completer.isCompleted)) {
        completer.completeError(e);
      }
    }, EventTodynamic()));
    return completer.future;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.db]() {
    return this.db;
  }
  get [dartx.error]() {
    return this.error;
  }
  get [dartx.mode]() {
    return this.mode;
  }
  get [dartx.objectStoreNames]() {
    return this.objectStoreNames;
  }
  [dartx.abort](...args) {
    return this.abort.apply(this, args);
  }
  [dartx.objectStore](...args) {
    return this.objectStore.apply(this, args);
  }
  get [dartx.onAbort]() {
    return indexed_db.Transaction.abortEvent.forTarget(this);
  }
  get [dartx.onComplete]() {
    return indexed_db.Transaction.completeEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return indexed_db.Transaction.errorEvent.forTarget(this);
  }
};
dart.setSignature(indexed_db.Transaction, {
  constructors: () => ({_: dart.definiteFunctionType(indexed_db.Transaction, [])}),
  fields: () => ({
    [dartx.db]: indexed_db.Database,
    [dartx.error]: html.DomError,
    [dartx.mode]: core.String,
    [dartx.objectStoreNames]: ListOfString()
  }),
  getters: () => ({
    [dartx.completed]: dart.definiteFunctionType(async.Future$(indexed_db.Database), []),
    [dartx.onAbort]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onComplete]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  methods: () => ({
    [dartx.abort]: dart.definiteFunctionType(dart.void, []),
    [dartx.objectStore]: dart.definiteFunctionType(indexed_db.ObjectStore, [core.String])
  }),
  sfields: () => ({
    abortEvent: EventStreamProviderOfEvent(),
    completeEvent: EventStreamProviderOfEvent(),
    errorEvent: EventStreamProviderOfEvent()
  })
});
dart.defineLazy(indexed_db.Transaction, {
  get abortEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('abort'));
  },
  get completeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('complete'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  }
});
dart.registerExtension(dart.global.IDBTransaction, indexed_db.Transaction);
const _createEvent = Symbol('_createEvent');
const _initEvent = Symbol('_initEvent');
const _selector = Symbol('_selector');
const _get_currentTarget = Symbol('_get_currentTarget');
const _get_target = Symbol('_get_target');
dart.defineExtensionNames([
  'matchingTarget',
  'currentTarget',
  'target',
  'preventDefault',
  'stopImmediatePropagation',
  'stopPropagation',
  'bubbles',
  'cancelable',
  'defaultPrevented',
  'eventPhase',
  'path',
  'timeStamp',
  'type'
]);
html.Event = class Event extends _interceptors.Interceptor {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    return html.Event.eventType('Event', type, {canBubble: canBubble, cancelable: cancelable});
  }
  static eventType(type, name, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let e = html.document[_createEvent](type);
    e[_initEvent](name, canBubble, cancelable);
    return e;
  }
  get [_selector]() {
    return this._selector;
  }
  set [_selector](value) {
    this._selector = value;
  }
  get [dartx.matchingTarget]() {
    if (this[_selector] == null) {
      dart.throw(new core.UnsupportedError('Cannot call matchingTarget if this Event did' + ' not arise as a result of event delegation.'));
    }
    let currentTarget = html.Element._check(this[dartx.currentTarget]);
    let target = html.Element._check(this[dartx.target]);
    let matchedTarget = null;
    do {
      if (dart.test(target[dartx.matches](this[_selector]))) return target;
      target = target[dartx.parent];
    } while (target != null && !dart.equals(target, currentTarget[dartx.parent]));
    dart.throw(new core.StateError('No selector matched for populating matchedTarget.'));
  }
  static _(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.Event._create_1(type, eventInitDict_1);
    }
    return html.Event._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new Event(type, eventInitDict);
  }
  static _create_2(type) {
    return new Event(type);
  }
  get [dartx.bubbles]() {
    return this.bubbles;
  }
  get [dartx.cancelable]() {
    return this.cancelable;
  }
  get [dartx.currentTarget]() {
    return html._convertNativeToDart_EventTarget(this[_get_currentTarget]);
  }
  get [_get_currentTarget]() {
    return this.currentTarget;
  }
  get [dartx.defaultPrevented]() {
    return this.defaultPrevented;
  }
  get [dartx.eventPhase]() {
    return this.eventPhase;
  }
  get [dartx.path]() {
    return this.path;
  }
  get [dartx.target]() {
    return html._convertNativeToDart_EventTarget(this[_get_target]);
  }
  get [_get_target]() {
    return this.target;
  }
  get [dartx.timeStamp]() {
    return this.timeStamp;
  }
  get [dartx.type]() {
    return this.type;
  }
  [_initEvent](...args) {
    return this.initEvent.apply(this, args);
  }
  [dartx.preventDefault](...args) {
    return this.preventDefault.apply(this, args);
  }
  [dartx.stopImmediatePropagation](...args) {
    return this.stopImmediatePropagation.apply(this, args);
  }
  [dartx.stopPropagation](...args) {
    return this.stopPropagation.apply(this, args);
  }
};
dart.setSignature(html.Event, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.Event, [core.String], {canBubble: core.bool, cancelable: core.bool}),
    eventType: dart.definiteFunctionType(html.Event, [core.String, core.String], {canBubble: core.bool, cancelable: core.bool}),
    _: dart.definiteFunctionType(html.Event, [core.String], [core.Map])
  }),
  fields: () => ({
    [_selector]: core.String,
    [dartx.bubbles]: core.bool,
    [dartx.cancelable]: core.bool,
    [_get_currentTarget]: dart.dynamic,
    [dartx.defaultPrevented]: core.bool,
    [dartx.eventPhase]: core.int,
    [dartx.path]: ListOfEventTarget(),
    [_get_target]: dart.dynamic,
    [dartx.timeStamp]: core.int,
    [dartx.type]: core.String
  }),
  getters: () => ({
    [dartx.matchingTarget]: dart.definiteFunctionType(html.Element, []),
    [dartx.currentTarget]: dart.definiteFunctionType(html.EventTarget, []),
    [dartx.target]: dart.definiteFunctionType(html.EventTarget, [])
  }),
  methods: () => ({
    [_initEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool]),
    [dartx.preventDefault]: dart.definiteFunctionType(dart.void, []),
    [dartx.stopImmediatePropagation]: dart.definiteFunctionType(dart.void, []),
    [dartx.stopPropagation]: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({
    AT_TARGET: core.int,
    BUBBLING_PHASE: core.int,
    CAPTURING_PHASE: core.int
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.Event, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.Event, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
html.Event.AT_TARGET = 2;
html.Event.BUBBLING_PHASE = 3;
html.Event.CAPTURING_PHASE = 1;
dart.registerExtension(dart.global.Event, html.Event);
dart.registerExtension(dart.global.InputEvent, html.Event);
dart.defineExtensionNames([
  'dataLoss',
  'dataLossMessage',
  'newVersion',
  'oldVersion'
]);
indexed_db.VersionChangeEvent = class VersionChangeEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return indexed_db.VersionChangeEvent._create_1(type, eventInitDict_1);
    }
    return indexed_db.VersionChangeEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new IDBVersionChangeEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new IDBVersionChangeEvent(type);
  }
  get [dartx.dataLoss]() {
    return this.dataLoss;
  }
  get [dartx.dataLossMessage]() {
    return this.dataLossMessage;
  }
  get [dartx.newVersion]() {
    return this.newVersion;
  }
  get [dartx.oldVersion]() {
    return this.oldVersion;
  }
};
dart.setSignature(indexed_db.VersionChangeEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(indexed_db.VersionChangeEvent, []),
    new: dart.definiteFunctionType(indexed_db.VersionChangeEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.dataLoss]: core.String,
    [dartx.dataLossMessage]: core.String,
    [dartx.newVersion]: core.int,
    [dartx.oldVersion]: core.int
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(indexed_db.VersionChangeEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(indexed_db.VersionChangeEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.IDBVersionChangeEvent, indexed_db.VersionChangeEvent);
dart.copyProperties(html, {
  get window() {
    return window;
  }
});
dart.copyProperties(html, {
  get document() {
    return document;
  }
});
const _xtag = Symbol('_xtag');
const _attributes = Symbol('_attributes');
const _innerHtml = Symbol('_innerHtml');
const _scrollHeight = Symbol('_scrollHeight');
const _scrollLeft = Symbol('_scrollLeft');
const _scrollTop = Symbol('_scrollTop');
const _scrollWidth = Symbol('_scrollWidth');
const _childElementCount = Symbol('_childElementCount');
const _children = Symbol('_children');
const _firstElementChild = Symbol('_firstElementChild');
const _lastElementChild = Symbol('_lastElementChild');
const _querySelectorAll = Symbol('_querySelectorAll');
const _getComputedStyle = Symbol('_getComputedStyle');
const _animate = Symbol('_animate');
const _localName = Symbol('_localName');
const _namespaceUri = Symbol('_namespaceUri');
const _scrollIntoView = Symbol('_scrollIntoView');
const _scrollIntoViewIfNeeded = Symbol('_scrollIntoViewIfNeeded');
const _insertAdjacentText = Symbol('_insertAdjacentText');
const _insertAdjacentNode = Symbol('_insertAdjacentNode');
const _insertAdjacentHtml = Symbol('_insertAdjacentHtml');
const _insertAdjacentElement = Symbol('_insertAdjacentElement');
const _canBeUsedToCreateContextualFragment = Symbol('_canBeUsedToCreateContextualFragment');
const _cannotBeUsedToCreateContextualFragment = Symbol('_cannotBeUsedToCreateContextualFragment');
const _getElementsByTagName = Symbol('_getElementsByTagName');
const _hasAttribute = Symbol('_hasAttribute');
const _hasAttributeNS = Symbol('_hasAttributeNS');
const _removeAttribute = Symbol('_removeAttribute');
const _removeAttributeNS = Symbol('_removeAttributeNS');
const _scroll_1 = Symbol('_scroll_1');
const _scroll_2 = Symbol('_scroll_2');
const _scroll_3 = Symbol('_scroll_3');
const _scrollBy_1 = Symbol('_scrollBy_1');
const _scrollBy_2 = Symbol('_scrollBy_2');
const _scrollBy_3 = Symbol('_scrollBy_3');
const _scrollTo_1 = Symbol('_scrollTo_1');
const _scrollTo_2 = Symbol('_scrollTo_2');
const _scrollTo_3 = Symbol('_scrollTo_3');
const _removeChild = Symbol('_removeChild');
const _replaceChild = Symbol('_replaceChild');
const _this = Symbol('_this');
const _clearChildren = Symbol('_clearChildren');
dart.defineExtensionNames([
  'nodes',
  'nodes',
  'remove',
  'replaceWith',
  'insertAllBefore',
  'toString',
  'append',
  'clone',
  'contains',
  'hasChildNodes',
  'insertBefore',
  'childNodes',
  'baseUri',
  'firstChild',
  'lastChild',
  'nextNode',
  'nodeName',
  'nodeType',
  'nodeValue',
  'ownerDocument',
  'parent',
  'parentNode',
  'previousNode',
  'text'
]);
html.Node = class Node extends html.EventTarget {
  _created() {
    this[dartx.childNodes] = null;
    this[dartx.baseUri] = null;
    this[dartx.firstChild] = null;
    this[dartx.lastChild] = null;
    this[_localName] = null;
    this[_namespaceUri] = null;
    this[dartx.nextNode] = null;
    this[dartx.nodeName] = null;
    this[dartx.nodeType] = null;
    this[dartx.nodeValue] = null;
    this[dartx.ownerDocument] = null;
    this[dartx.parent] = null;
    this[dartx.parentNode] = null;
    this[dartx.previousNode] = null;
    this[dartx.text] = null;
    super._created();
  }
  get [dartx.nodes]() {
    return new html._ChildNodeListLazy(this);
  }
  set [dartx.nodes](value) {
    let copy = value[dartx.toList]();
    this[dartx.text] = '';
    for (let node of copy) {
      this[dartx.append](node);
    }
  }
  [dartx.remove]() {
    if (this[dartx.parentNode] != null) {
      let parent = this[dartx.parentNode];
      this[dartx.parentNode][_removeChild](this);
    }
  }
  [dartx.replaceWith](otherNode) {
    try {
      let parent = this[dartx.parentNode];
      parent[_replaceChild](otherNode, this);
    } catch (e) {
    }

    ;
    return this;
  }
  [dartx.insertAllBefore](newNodes, refChild) {
    if (html._ChildNodeListLazy.is(newNodes)) {
      let otherList = newNodes;
      if (core.identical(otherList[_this], this)) {
        dart.throw(new core.ArgumentError(newNodes));
      }
      for (let i = 0, len = otherList.length; i < dart.notNull(len); ++i) {
        this[dartx.insertBefore](otherList[_this][dartx.firstChild], refChild);
      }
    } else {
      for (let node of newNodes) {
        this[dartx.insertBefore](node, refChild);
      }
    }
  }
  [_clearChildren]() {
    while (this[dartx.firstChild] != null) {
      this[_removeChild](this[dartx.firstChild]);
    }
  }
  [dartx.toString]() {
    let value = this[dartx.nodeValue];
    return value == null ? super.toString() : value;
  }
  get [dartx.childNodes]() {
    return this.childNodes;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.baseUri]() {
    return this.baseURI;
  }
  get [dartx.firstChild]() {
    return this.firstChild;
  }
  get [dartx.lastChild]() {
    return this.lastChild;
  }
  get [_localName]() {
    return this.localName;
  }
  get [_namespaceUri]() {
    return this.namespaceURI;
  }
  get [dartx.nextNode]() {
    return this.nextSibling;
  }
  get [dartx.nodeName]() {
    return this.nodeName;
  }
  get [dartx.nodeType]() {
    return this.nodeType;
  }
  get [dartx.nodeValue]() {
    return this.nodeValue;
  }
  get [dartx.ownerDocument]() {
    return this.ownerDocument;
  }
  get [dartx.parent]() {
    return this.parentElement;
  }
  get [dartx.parentNode]() {
    return this.parentNode;
  }
  get [dartx.previousNode]() {
    return this.previousSibling;
  }
  get [dartx.text]() {
    return this.textContent;
  }
  set [dartx.text](value) {
    this.textContent = value;
  }
  [dartx.append](...args) {
    return this.appendChild.apply(this, args);
  }
  [dartx.clone](...args) {
    return this.cloneNode.apply(this, args);
  }
  [dartx.contains](...args) {
    return this.contains.apply(this, args);
  }
  [dartx.hasChildNodes](...args) {
    return this.hasChildNodes.apply(this, args);
  }
  [dartx.insertBefore](...args) {
    return this.insertBefore.apply(this, args);
  }
  [_removeChild](...args) {
    return this.removeChild.apply(this, args);
  }
  [_replaceChild](...args) {
    return this.replaceChild.apply(this, args);
  }
};
dart.defineNamedConstructor(html.Node, '_created');
dart.setSignature(html.Node, {
  constructors: () => ({
    _created: dart.definiteFunctionType(html.Node, []),
    _: dart.definiteFunctionType(html.Node, [])
  }),
  fields: () => ({
    [dartx.childNodes]: ListOfNode(),
    [dartx.baseUri]: core.String,
    [dartx.firstChild]: html.Node,
    [dartx.lastChild]: html.Node,
    [_localName]: core.String,
    [_namespaceUri]: core.String,
    [dartx.nextNode]: html.Node,
    [dartx.nodeName]: core.String,
    [dartx.nodeType]: core.int,
    [dartx.nodeValue]: core.String,
    [dartx.ownerDocument]: html.Document,
    [dartx.parent]: html.Element,
    [dartx.parentNode]: html.Node,
    [dartx.previousNode]: html.Node,
    [dartx.text]: core.String
  }),
  getters: () => ({[dartx.nodes]: dart.definiteFunctionType(core.List$(html.Node), [])}),
  setters: () => ({[dartx.nodes]: dart.definiteFunctionType(dart.void, [IterableOfNode()])}),
  methods: () => ({
    [dartx.remove]: dart.definiteFunctionType(dart.void, []),
    [dartx.replaceWith]: dart.definiteFunctionType(html.Node, [html.Node]),
    [dartx.insertAllBefore]: dart.definiteFunctionType(html.Node, [IterableOfNode(), html.Node]),
    [_clearChildren]: dart.definiteFunctionType(dart.void, []),
    [dartx.append]: dart.definiteFunctionType(html.Node, [html.Node]),
    [dartx.clone]: dart.definiteFunctionType(html.Node, [core.bool]),
    [dartx.contains]: dart.definiteFunctionType(core.bool, [html.Node]),
    [dartx.hasChildNodes]: dart.definiteFunctionType(core.bool, []),
    [dartx.insertBefore]: dart.definiteFunctionType(html.Node, [html.Node, html.Node]),
    [_removeChild]: dart.definiteFunctionType(html.Node, [html.Node]),
    [_replaceChild]: dart.definiteFunctionType(html.Node, [html.Node, html.Node])
  }),
  sfields: () => ({
    ATTRIBUTE_NODE: core.int,
    CDATA_SECTION_NODE: core.int,
    COMMENT_NODE: core.int,
    DOCUMENT_FRAGMENT_NODE: core.int,
    DOCUMENT_NODE: core.int,
    DOCUMENT_TYPE_NODE: core.int,
    ELEMENT_NODE: core.int,
    ENTITY_NODE: core.int,
    ENTITY_REFERENCE_NODE: core.int,
    NOTATION_NODE: core.int,
    PROCESSING_INSTRUCTION_NODE: core.int,
    TEXT_NODE: core.int
  })
});
html.Node.ATTRIBUTE_NODE = 2;
html.Node.CDATA_SECTION_NODE = 4;
html.Node.COMMENT_NODE = 8;
html.Node.DOCUMENT_FRAGMENT_NODE = 11;
html.Node.DOCUMENT_NODE = 9;
html.Node.DOCUMENT_TYPE_NODE = 10;
html.Node.ELEMENT_NODE = 1;
html.Node.ENTITY_NODE = 6;
html.Node.ENTITY_REFERENCE_NODE = 5;
html.Node.NOTATION_NODE = 12;
html.Node.PROCESSING_INSTRUCTION_NODE = 7;
html.Node.TEXT_NODE = 3;
dart.registerExtension(dart.global.Node, html.Node);
dart.defineExtensionNames([
  'attributes',
  'attributes',
  'children',
  'children',
  'querySelectorAll',
  'query',
  'queryAll',
  'classes',
  'classes',
  'dataset',
  'dataset',
  'getNamespacedAttributes',
  'getComputedStyle',
  'client',
  'offset',
  'appendText',
  'appendHtml',
  'attached',
  'detached',
  'enteredView',
  'leftView',
  'animate',
  'attributeChanged',
  'xtag',
  'xtag',
  'localName',
  'namespaceUri',
  'toString',
  'scrollIntoView',
  'insertAdjacentText',
  'insertAdjacentHtml',
  'insertAdjacentElement',
  'matches',
  'matchesWithAncestors',
  'createShadowRoot',
  'shadowRoot',
  'contentEdge',
  'paddingEdge',
  'borderEdge',
  'marginEdge',
  'documentOffset',
  'offsetTo',
  'createFragment',
  'innerHtml',
  'setInnerHtml',
  'innerHtml',
  'on',
  'offsetHeight',
  'offsetLeft',
  'offsetTop',
  'offsetWidth',
  'scrollHeight',
  'scrollLeft',
  'scrollLeft',
  'scrollTop',
  'scrollTop',
  'scrollWidth',
  'isContentEditable',
  'blur',
  'click',
  'focus',
  'outerHtml',
  'closest',
  'getAnimations',
  'getAttribute',
  'getAttributeNS',
  'getBoundingClientRect',
  'getClientRects',
  'getDestinationInsertionPoints',
  'getElementsByClassName',
  'requestFullscreen',
  'requestPointerLock',
  'scroll',
  'scrollBy',
  'scrollTo',
  'setAttribute',
  'setAttributeNS',
  'after',
  'before',
  'querySelector',
  'onAbort',
  'onBeforeCopy',
  'onBeforeCut',
  'onBeforePaste',
  'onBlur',
  'onCanPlay',
  'onCanPlayThrough',
  'onChange',
  'onClick',
  'onContextMenu',
  'onCopy',
  'onCut',
  'onDoubleClick',
  'onDrag',
  'onDragEnd',
  'onDragEnter',
  'onDragLeave',
  'onDragOver',
  'onDragStart',
  'onDrop',
  'onDurationChange',
  'onEmptied',
  'onEnded',
  'onError',
  'onFocus',
  'onInput',
  'onInvalid',
  'onKeyDown',
  'onKeyPress',
  'onKeyUp',
  'onLoad',
  'onLoadedData',
  'onLoadedMetadata',
  'onMouseDown',
  'onMouseEnter',
  'onMouseLeave',
  'onMouseMove',
  'onMouseOut',
  'onMouseOver',
  'onMouseUp',
  'onMouseWheel',
  'onPaste',
  'onPause',
  'onPlay',
  'onPlaying',
  'onRateChange',
  'onReset',
  'onResize',
  'onScroll',
  'onSearch',
  'onSeeked',
  'onSeeking',
  'onSelect',
  'onSelectStart',
  'onStalled',
  'onSubmit',
  'onSuspend',
  'onTimeUpdate',
  'onTouchCancel',
  'onTouchEnd',
  'onTouchEnter',
  'onTouchLeave',
  'onTouchMove',
  'onTouchStart',
  'onTransitionEnd',
  'onVolumeChange',
  'onWaiting',
  'onFullscreenChange',
  'onFullscreenError',
  'offsetParent',
  'contentEditable',
  'contextMenu',
  'dir',
  'draggable',
  'hidden',
  'lang',
  'spellcheck',
  'style',
  'tabIndex',
  'title',
  'translate',
  'dropzone',
  'className',
  'clientHeight',
  'clientLeft',
  'clientTop',
  'clientWidth',
  'computedName',
  'computedRole',
  'id',
  'tagName',
  'nextElementSibling',
  'previousElementSibling'
]);
html.Element = class Element extends html.Node {
  static html(html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    let fragment = html.document[dartx.body][dartx.createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
    return html.Element._check(fragment[dartx.nodes][dartx.where](dart.fn(e => html.Element.is(e), NodeTobool()))[dartx.single]);
  }
  created() {
    this[_xtag] = null;
    this[dartx.offsetParent] = null;
    this[dartx.contentEditable] = null;
    this[dartx.contextMenu] = null;
    this[dartx.dir] = null;
    this[dartx.draggable] = null;
    this[dartx.hidden] = null;
    this[dartx.lang] = null;
    this[dartx.spellcheck] = null;
    this[dartx.style] = null;
    this[dartx.tabIndex] = null;
    this[dartx.title] = null;
    this[dartx.translate] = null;
    this[dartx.dropzone] = null;
    this[_attributes] = null;
    this[dartx.className] = null;
    this[dartx.clientHeight] = null;
    this[dartx.clientLeft] = null;
    this[dartx.clientTop] = null;
    this[dartx.clientWidth] = null;
    this[dartx.computedName] = null;
    this[dartx.computedRole] = null;
    this[dartx.id] = null;
    this[_innerHtml] = null;
    this[_scrollHeight] = null;
    this[_scrollLeft] = null;
    this[_scrollTop] = null;
    this[_scrollWidth] = null;
    this[dartx.tagName] = null;
    this[dartx.nextElementSibling] = null;
    this[dartx.previousElementSibling] = null;
    this[_childElementCount] = null;
    this[_children] = null;
    this[_firstElementChild] = null;
    this[_lastElementChild] = null;
    super._created();
  }
  static tag(tag, typeExtention) {
    if (typeExtention === void 0) typeExtention = null;
    return html.Element._check(html._ElementFactoryProvider.createElement_tag(tag, typeExtention));
  }
  static a() {
    return html.Element.tag('a');
  }
  static article() {
    return html.Element.tag('article');
  }
  static aside() {
    return html.Element.tag('aside');
  }
  static audio() {
    return html.Element.tag('audio');
  }
  static br() {
    return html.Element.tag('br');
  }
  static canvas() {
    return html.Element.tag('canvas');
  }
  static div() {
    return html.Element.tag('div');
  }
  static footer() {
    return html.Element.tag('footer');
  }
  static header() {
    return html.Element.tag('header');
  }
  static hr() {
    return html.Element.tag('hr');
  }
  static iframe() {
    return html.Element.tag('iframe');
  }
  static img() {
    return html.Element.tag('img');
  }
  static li() {
    return html.Element.tag('li');
  }
  static nav() {
    return html.Element.tag('nav');
  }
  static ol() {
    return html.Element.tag('ol');
  }
  static option() {
    return html.Element.tag('option');
  }
  static p() {
    return html.Element.tag('p');
  }
  static pre() {
    return html.Element.tag('pre');
  }
  static section() {
    return html.Element.tag('section');
  }
  static select() {
    return html.Element.tag('select');
  }
  static span() {
    return html.Element.tag('span');
  }
  static svg() {
    return html.Element.tag('svg');
  }
  static table() {
    return html.Element.tag('table');
  }
  static td() {
    return html.Element.tag('td');
  }
  static textarea() {
    return html.Element.tag('textarea');
  }
  static th() {
    return html.Element.tag('th');
  }
  static tr() {
    return html.Element.tag('tr');
  }
  static ul() {
    return html.Element.tag('ul');
  }
  static video() {
    return html.Element.tag('video');
  }
  get [dartx.attributes]() {
    return new html._ElementAttributeMap(this);
  }
  set [dartx.attributes](value) {
    let attributes = this[dartx.attributes];
    attributes[dartx.clear]();
    for (let key of value[dartx.keys]) {
      attributes[dartx._set](key, value[dartx._get](key));
    }
  }
  get [dartx.children]() {
    return new html._ChildrenElementList._wrap(this);
  }
  set [dartx.children](value) {
    let copy = value[dartx.toList]();
    let children = this[dartx.children];
    children[dartx.clear]();
    children[dartx.addAll](copy);
  }
  [dartx.querySelectorAll](T) {
    return selectors => {
      return new (html._FrozenElementList$(T))._wrap(this[_querySelectorAll](selectors));
    };
  }
  [dartx.query](relativeSelectors) {
    return this[dartx.querySelector](relativeSelectors);
  }
  [dartx.queryAll](T) {
    return relativeSelectors => {
      return this[dartx.querySelectorAll](T)(relativeSelectors);
    };
  }
  get [dartx.classes]() {
    return new html._ElementCssClassSet(this);
  }
  set [dartx.classes](value) {
    let classSet = this[dartx.classes];
    classSet.clear();
    classSet.addAll(value);
  }
  get [dartx.dataset]() {
    return new html._DataAttributeMap(this[dartx.attributes]);
  }
  set [dartx.dataset](value) {
    let data = this[dartx.dataset];
    data[dartx.clear]();
    for (let key of value[dartx.keys]) {
      data[dartx._set](key, value[dartx._get](key));
    }
  }
  [dartx.getNamespacedAttributes](namespace) {
    return new html._NamespacedAttributeMap(this, namespace);
  }
  [dartx.getComputedStyle](pseudoElement) {
    if (pseudoElement === void 0) pseudoElement = null;
    if (pseudoElement == null) {
      pseudoElement = '';
    }
    return html.window[_getComputedStyle](this, pseudoElement);
  }
  get [dartx.client]() {
    return new (RectangleOfint())(this[dartx.clientLeft], this[dartx.clientTop], this[dartx.clientWidth], this[dartx.clientHeight]);
  }
  get [dartx.offset]() {
    return new (RectangleOfint())(this[dartx.offsetLeft], this[dartx.offsetTop], this[dartx.offsetWidth], this[dartx.offsetHeight]);
  }
  [dartx.appendText](text) {
    this[dartx.append](html.Text.new(text));
  }
  [dartx.appendHtml](text, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    this[dartx.insertAdjacentHtml]('beforeend', text, {validator: validator, treeSanitizer: treeSanitizer});
  }
  static isTagSupported(tag) {
    let e = html._ElementFactoryProvider.createElement_tag(tag, null);
    return html.Element.is(e) && !html.UnknownElement.is(e);
  }
  [dartx.attached]() {
    this[dartx.enteredView]();
  }
  [dartx.detached]() {
    this[dartx.leftView]();
  }
  [dartx.enteredView]() {}
  [dartx.leftView]() {}
  [dartx.animate](frames, timing) {
    if (timing === void 0) timing = null;
    if (!core.Iterable.is(frames) || !dart.test(frames[dartx.every](dart.fn(x => core.Map.is(x), MapOfString$dynamicTobool())))) {
      dart.throw(new core.ArgumentError("The frames parameter should be a List of Maps " + "with frame information"));
    }
    let convertedFrames = null;
    if (core.Iterable.is(frames)) {
      convertedFrames = frames[dartx.map](dart.dynamic)(html_common.convertDartToNative_Dictionary)[dartx.toList]();
    } else {
      convertedFrames = frames;
    }
    let convertedTiming = core.Map.is(timing) ? html_common.convertDartToNative_Dictionary(timing) : timing;
    return convertedTiming == null ? this[_animate](convertedFrames) : this[_animate](convertedFrames, convertedTiming);
  }
  [_animate](...args) {
    return this.animate.apply(this, args);
  }
  [dartx.attributeChanged](name, oldValue, newValue) {}
  get [_xtag]() {
    return this._xtag;
  }
  set [_xtag](value) {
    this._xtag = value;
  }
  get [dartx.xtag]() {
    return this[_xtag] != null ? this[_xtag] : this;
  }
  set [dartx.xtag](value) {
    this[_xtag] = value;
  }
  get [dartx.localName]() {
    return this[_localName];
  }
  get [dartx.namespaceUri]() {
    return this[_namespaceUri];
  }
  [dartx.toString]() {
    return this[dartx.localName];
  }
  [dartx.scrollIntoView](alignment) {
    if (alignment === void 0) alignment = null;
    let hasScrollIntoViewIfNeeded = true;
    hasScrollIntoViewIfNeeded = !!this.scrollIntoViewIfNeeded;
    if (dart.equals(alignment, html.ScrollAlignment.TOP)) {
      this[_scrollIntoView](true);
    } else if (dart.equals(alignment, html.ScrollAlignment.BOTTOM)) {
      this[_scrollIntoView](false);
    } else if (hasScrollIntoViewIfNeeded) {
      if (dart.equals(alignment, html.ScrollAlignment.CENTER)) {
        this[_scrollIntoViewIfNeeded](true);
      } else {
        this[_scrollIntoViewIfNeeded]();
      }
    } else {
      this[_scrollIntoView]();
    }
  }
  static _determineMouseWheelEventType(e) {
    return 'wheel';
  }
  static _determineTransitionEventType(e) {
    if (dart.test(html_common.Device.isWebKit)) {
      return 'webkitTransitionEnd';
    } else if (dart.test(html_common.Device.isOpera)) {
      return 'oTransitionEnd';
    }
    return 'transitionend';
  }
  [dartx.insertAdjacentText](where, text) {
    if (!!this.insertAdjacentText) {
      this[_insertAdjacentText](where, text);
    } else {
      this[_insertAdjacentNode](where, html.Text.new(text));
    }
  }
  [_insertAdjacentText](...args) {
    return this.insertAdjacentText.apply(this, args);
  }
  [dartx.insertAdjacentHtml](where, html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (html._TrustedHtmlTreeSanitizer.is(treeSanitizer)) {
      this[_insertAdjacentHtml](where, html);
    } else {
      this[_insertAdjacentNode](where, this[dartx.createFragment](html, {validator: validator, treeSanitizer: treeSanitizer}));
    }
  }
  [_insertAdjacentHtml](...args) {
    return this.insertAdjacentHTML.apply(this, args);
  }
  [dartx.insertAdjacentElement](where, element) {
    if (!!this.insertAdjacentElement) {
      this[_insertAdjacentElement](where, element);
    } else {
      this[_insertAdjacentNode](where, element);
    }
    return element;
  }
  [_insertAdjacentElement](...args) {
    return this.insertAdjacentElement.apply(this, args);
  }
  [_insertAdjacentNode](where, node) {
    switch (where[dartx.toLowerCase]()) {
      case 'beforebegin':
      {
        this[dartx.parentNode][dartx.insertBefore](node, this);
        break;
      }
      case 'afterbegin':
      {
        let first = dart.notNull(this[dartx.nodes][dartx.length]) > 0 ? this[dartx.nodes][dartx._get](0) : null;
        this[dartx.insertBefore](node, first);
        break;
      }
      case 'beforeend':
      {
        this[dartx.append](node);
        break;
      }
      case 'afterend':
      {
        this[dartx.parentNode][dartx.insertBefore](node, this[dartx.nextNode]);
        break;
      }
      default:
      {
        dart.throw(new core.ArgumentError(dart.str`Invalid position ${where}`));
      }
    }
  }
  [dartx.matches](selectors) {
    if (!!this.matches) {
      return this.matches(selectors);
    } else if (!!this.webkitMatchesSelector) {
      return this.webkitMatchesSelector(selectors);
    } else if (!!this.mozMatchesSelector) {
      return this.mozMatchesSelector(selectors);
    } else if (!!this.msMatchesSelector) {
      return this.msMatchesSelector(selectors);
    } else if (!!this.oMatchesSelector) {
      return this.oMatchesSelector(selectors);
    } else {
      dart.throw(new core.UnsupportedError("Not supported on this platform"));
    }
  }
  [dartx.matchesWithAncestors](selectors) {
    let elem = this;
    do {
      if (dart.test(elem[dartx.matches](selectors))) return true;
      elem = elem[dartx.parent];
    } while (elem != null);
    return false;
  }
  [dartx.createShadowRoot]() {
    return (this.createShadowRoot || this.webkitCreateShadowRoot).call(this);
  }
  get [dartx.shadowRoot]() {
    return this.shadowRoot || this.webkitShadowRoot;
  }
  get [dartx.contentEdge]() {
    return new html._ContentCssRect(this);
  }
  get [dartx.paddingEdge]() {
    return new html._PaddingCssRect(this);
  }
  get [dartx.borderEdge]() {
    return new html._BorderCssRect(this);
  }
  get [dartx.marginEdge]() {
    return new html._MarginCssRect(this);
  }
  get [dartx.documentOffset]() {
    return this[dartx.offsetTo](html.document[dartx.documentElement]);
  }
  [dartx.offsetTo](parent) {
    return html.Element._offsetToHelper(this, parent);
  }
  static _offsetToHelper(current, parent) {
    let sameAsParent = core.identical(current, parent);
    let foundAsParent = sameAsParent || parent[dartx.tagName] == 'HTML';
    if (current == null || sameAsParent) {
      if (foundAsParent) return new (PointOfnum())(0, 0);
      dart.throw(new core.ArgumentError("Specified element is not a transitive offset " + "parent of this element."));
    }
    let parentOffset = current[dartx.offsetParent];
    let p = html.Element._offsetToHelper(parentOffset, parent);
    return new (PointOfnum())(dart.notNull(p.x) + dart.notNull(current[dartx.offsetLeft]), dart.notNull(p.y) + dart.notNull(current[dartx.offsetTop]));
  }
  [dartx.createFragment](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (treeSanitizer == null) {
      if (validator == null) {
        if (html.Element._defaultValidator == null) {
          html.Element._defaultValidator = new html.NodeValidatorBuilder.common();
        }
        validator = html.Element._defaultValidator;
      }
      if (html.Element._defaultSanitizer == null) {
        html.Element._defaultSanitizer = new html._ValidatingTreeSanitizer(validator);
      } else {
        html.Element._defaultSanitizer.validator = validator;
      }
      treeSanitizer = html.Element._defaultSanitizer;
    } else if (validator != null) {
      dart.throw(new core.ArgumentError('validator can only be passed if treeSanitizer is null'));
    }
    if (html.Element._parseDocument == null) {
      html.Element._parseDocument = html.document[dartx.implementation][dartx.createHtmlDocument]('');
      html.Element._parseRange = html.Element._parseDocument[dartx.createRange]();
      let base = html.BaseElement._check(html.Element._parseDocument[dartx.createElement]('base'));
      base[dartx.href] = html.document[dartx.baseUri];
      html.Element._parseDocument[dartx.head][dartx.append](base);
    }
    let contextElement = null;
    if (html.BodyElement.is(this)) {
      contextElement = html.Element._parseDocument[dartx.body];
    } else {
      contextElement = html.Element._parseDocument[dartx.createElement](this[dartx.tagName]);
      html.Element._parseDocument[dartx.body][dartx.append](html.Node._check(contextElement));
    }
    let fragment = null;
    if (dart.test(html.Range.supportsCreateContextualFragment) && dart.test(this[_canBeUsedToCreateContextualFragment])) {
      html.Element._parseRange[dartx.selectNodeContents](html.Node._check(contextElement));
      fragment = html.Element._parseRange[dartx.createContextualFragment](html);
    } else {
      dart.dput(contextElement, _innerHtml, html);
      fragment = html.Element._parseDocument[dartx.createDocumentFragment]();
      while (dart.dload(contextElement, 'firstChild') != null) {
        dart.dsend(fragment, 'append', dart.dload(contextElement, 'firstChild'));
      }
    }
    if (!dart.equals(contextElement, html.Element._parseDocument[dartx.body])) {
      dart.dsend(contextElement, 'remove');
    }
    treeSanitizer.sanitizeTree(html.Node._check(fragment));
    html.document[dartx.adoptNode](html.Node._check(fragment));
    return html.DocumentFragment._check(fragment);
  }
  get [_canBeUsedToCreateContextualFragment]() {
    return !dart.test(this[_cannotBeUsedToCreateContextualFragment]);
  }
  get [_cannotBeUsedToCreateContextualFragment]() {
    return html.Element._tagsForWhichCreateContextualFragmentIsNotSupported[dartx.contains](this[dartx.tagName]);
  }
  set [dartx.innerHtml](html) {
    this[dartx.setInnerHtml](html);
  }
  [dartx.setInnerHtml](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    this[dartx.text] = null;
    if (html._TrustedHtmlTreeSanitizer.is(treeSanitizer)) {
      this[_innerHtml] = html;
    } else {
      this[dartx.append](this[dartx.createFragment](html, {validator: validator, treeSanitizer: treeSanitizer}));
    }
  }
  get [dartx.innerHtml]() {
    return this[_innerHtml];
  }
  get [dartx.on]() {
    return new html.ElementEvents(this);
  }
  static _hasCorruptedAttributes(element) {
    return (function(element) {
      if (!(element.attributes instanceof NamedNodeMap)) {
        return true;
      }
      var childNodes = element.childNodes;
      if (element.lastChild && element.lastChild !== childNodes[childNodes.length - 1]) {
        return true;
      }
      if (element.children) {
        if (!(element.children instanceof HTMLCollection || element.children instanceof NodeList)) {
          return true;
        }
      }
      var length = 0;
      if (element.children) {
        length = element.children.length;
      }
      for (var i = 0; i < length; i++) {
        var child = element.children[i];
        if (child.id == 'attributes' || child.name == 'attributes' || child.id == 'lastChild' || child.name == 'lastChild' || child.id == 'children' || child.name == 'children') {
          return true;
        }
      }
      return false;
    })(element);
  }
  static _hasCorruptedAttributesAdditionalCheck(element) {
    return !(element.attributes instanceof NamedNodeMap);
  }
  static _safeTagName(element) {
    let result = 'element tag unavailable';
    try {
      if (typeof dart.dload(element, 'tagName') == 'string') {
        result = core.String._check(dart.dload(element, 'tagName'));
      }
    } catch (e) {
    }

    return result;
  }
  get [dartx.offsetParent]() {
    return this.offsetParent;
  }
  get [dartx.offsetHeight]() {
    return this.offsetHeight[dartx.round]();
  }
  get [dartx.offsetLeft]() {
    return this.offsetLeft[dartx.round]();
  }
  get [dartx.offsetTop]() {
    return this.offsetTop[dartx.round]();
  }
  get [dartx.offsetWidth]() {
    return this.offsetWidth[dartx.round]();
  }
  get [dartx.scrollHeight]() {
    return this.scrollHeight[dartx.round]();
  }
  get [dartx.scrollLeft]() {
    return this.scrollLeft[dartx.round]();
  }
  set [dartx.scrollLeft](value) {
    this.scrollLeft = value[dartx.round]();
  }
  get [dartx.scrollTop]() {
    return this.scrollTop[dartx.round]();
  }
  set [dartx.scrollTop](value) {
    this.scrollTop = value[dartx.round]();
  }
  get [dartx.scrollWidth]() {
    return this.scrollWidth[dartx.round]();
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.contentEditable]() {
    return this.contentEditable;
  }
  set [dartx.contentEditable](value) {
    this.contentEditable = value;
  }
  get [dartx.contextMenu]() {
    return this.contextMenu;
  }
  set [dartx.contextMenu](value) {
    this.contextMenu = value;
  }
  get [dartx.dir]() {
    return this.dir;
  }
  set [dartx.dir](value) {
    this.dir = value;
  }
  get [dartx.draggable]() {
    return this.draggable;
  }
  set [dartx.draggable](value) {
    this.draggable = value;
  }
  get [dartx.hidden]() {
    return this.hidden;
  }
  set [dartx.hidden](value) {
    this.hidden = value;
  }
  get [dartx.isContentEditable]() {
    return this.isContentEditable;
  }
  get [dartx.lang]() {
    return this.lang;
  }
  set [dartx.lang](value) {
    this.lang = value;
  }
  get [dartx.spellcheck]() {
    return this.spellcheck;
  }
  set [dartx.spellcheck](value) {
    this.spellcheck = value;
  }
  get [dartx.style]() {
    return this.style;
  }
  get [dartx.tabIndex]() {
    return this.tabIndex;
  }
  set [dartx.tabIndex](value) {
    this.tabIndex = value;
  }
  get [dartx.title]() {
    return this.title;
  }
  set [dartx.title](value) {
    this.title = value;
  }
  get [dartx.translate]() {
    return this.translate;
  }
  set [dartx.translate](value) {
    this.translate = value;
  }
  get [dartx.dropzone]() {
    return this.webkitdropzone;
  }
  set [dartx.dropzone](value) {
    this.webkitdropzone = value;
  }
  [dartx.blur](...args) {
    return this.blur.apply(this, args);
  }
  [dartx.click](...args) {
    return this.click.apply(this, args);
  }
  [dartx.focus](...args) {
    return this.focus.apply(this, args);
  }
  get [_attributes]() {
    return this.attributes;
  }
  get [dartx.className]() {
    return this.className;
  }
  set [dartx.className](value) {
    this.className = value;
  }
  get [dartx.clientHeight]() {
    return this.clientHeight;
  }
  get [dartx.clientLeft]() {
    return this.clientLeft;
  }
  get [dartx.clientTop]() {
    return this.clientTop;
  }
  get [dartx.clientWidth]() {
    return this.clientWidth;
  }
  get [dartx.computedName]() {
    return this.computedName;
  }
  get [dartx.computedRole]() {
    return this.computedRole;
  }
  get [dartx.id]() {
    return this.id;
  }
  set [dartx.id](value) {
    this.id = value;
  }
  get [_innerHtml]() {
    return this.innerHTML;
  }
  set [_innerHtml](value) {
    this.innerHTML = value;
  }
  get [dartx.outerHtml]() {
    return this.outerHTML;
  }
  get [_scrollHeight]() {
    return this.scrollHeight;
  }
  get [_scrollLeft]() {
    return this.scrollLeft;
  }
  set [_scrollLeft](value) {
    this.scrollLeft = value;
  }
  get [_scrollTop]() {
    return this.scrollTop;
  }
  set [_scrollTop](value) {
    this.scrollTop = value;
  }
  get [_scrollWidth]() {
    return this.scrollWidth;
  }
  get [dartx.tagName]() {
    return this.tagName;
  }
  [dartx.closest](...args) {
    return this.closest.apply(this, args);
  }
  [dartx.getAnimations](...args) {
    return this.getAnimations.apply(this, args);
  }
  [dartx.getAttribute](...args) {
    return this.getAttribute.apply(this, args);
  }
  [dartx.getAttributeNS](...args) {
    return this.getAttributeNS.apply(this, args);
  }
  [dartx.getBoundingClientRect](...args) {
    return this.getBoundingClientRect.apply(this, args);
  }
  [dartx.getClientRects](...args) {
    return this.getClientRects.apply(this, args);
  }
  [dartx.getDestinationInsertionPoints](...args) {
    return this.getDestinationInsertionPoints.apply(this, args);
  }
  [dartx.getElementsByClassName](...args) {
    return this.getElementsByClassName.apply(this, args);
  }
  [_getElementsByTagName](...args) {
    return this.getElementsByTagName.apply(this, args);
  }
  [_hasAttribute](...args) {
    return this.hasAttribute.apply(this, args);
  }
  [_hasAttributeNS](...args) {
    return this.hasAttributeNS.apply(this, args);
  }
  [_removeAttribute](...args) {
    return this.removeAttribute.apply(this, args);
  }
  [_removeAttributeNS](...args) {
    return this.removeAttributeNS.apply(this, args);
  }
  [dartx.requestFullscreen](...args) {
    return this.requestFullscreen.apply(this, args);
  }
  [dartx.requestPointerLock](...args) {
    return this.requestPointerLock.apply(this, args);
  }
  [dartx.scroll](options_OR_x, y) {
    if (options_OR_x === void 0) options_OR_x = null;
    if (y === void 0) y = null;
    if (options_OR_x == null && y == null) {
      this[_scroll_1]();
      return;
    }
    if (core.Map.is(options_OR_x) && y == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
      this[_scroll_2](options_1);
      return;
    }
    if (y != null && typeof options_OR_x == 'number') {
      this[_scroll_3](options_OR_x, y);
      return;
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  [_scroll_1](...args) {
    return this.scroll.apply(this, args);
  }
  [_scroll_2](...args) {
    return this.scroll.apply(this, args);
  }
  [_scroll_3](...args) {
    return this.scroll.apply(this, args);
  }
  [dartx.scrollBy](options_OR_x, y) {
    if (options_OR_x === void 0) options_OR_x = null;
    if (y === void 0) y = null;
    if (options_OR_x == null && y == null) {
      this[_scrollBy_1]();
      return;
    }
    if (core.Map.is(options_OR_x) && y == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
      this[_scrollBy_2](options_1);
      return;
    }
    if (y != null && typeof options_OR_x == 'number') {
      this[_scrollBy_3](options_OR_x, y);
      return;
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  [_scrollBy_1](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollBy_2](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollBy_3](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollIntoView](...args) {
    return this.scrollIntoView.apply(this, args);
  }
  [_scrollIntoViewIfNeeded](...args) {
    return this.scrollIntoViewIfNeeded.apply(this, args);
  }
  [dartx.scrollTo](options_OR_x, y) {
    if (options_OR_x === void 0) options_OR_x = null;
    if (y === void 0) y = null;
    if (options_OR_x == null && y == null) {
      this[_scrollTo_1]();
      return;
    }
    if (core.Map.is(options_OR_x) && y == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
      this[_scrollTo_2](options_1);
      return;
    }
    if (y != null && typeof options_OR_x == 'number') {
      this[_scrollTo_3](options_OR_x, y);
      return;
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  [_scrollTo_1](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_scrollTo_2](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_scrollTo_3](...args) {
    return this.scrollTo.apply(this, args);
  }
  [dartx.setAttribute](...args) {
    return this.setAttribute.apply(this, args);
  }
  [dartx.setAttributeNS](...args) {
    return this.setAttributeNS.apply(this, args);
  }
  [dartx.after](...args) {
    return this.after.apply(this, args);
  }
  [dartx.before](...args) {
    return this.before.apply(this, args);
  }
  get [dartx.nextElementSibling]() {
    return this.nextElementSibling;
  }
  get [dartx.previousElementSibling]() {
    return this.previousElementSibling;
  }
  get [_childElementCount]() {
    return this.childElementCount;
  }
  get [_children]() {
    return this.children;
  }
  get [_firstElementChild]() {
    return this.firstElementChild;
  }
  get [_lastElementChild]() {
    return this.lastElementChild;
  }
  [dartx.querySelector](...args) {
    return this.querySelector.apply(this, args);
  }
  [_querySelectorAll](...args) {
    return this.querySelectorAll.apply(this, args);
  }
  get [dartx.onAbort]() {
    return html.Element.abortEvent.forElement(this);
  }
  get [dartx.onBeforeCopy]() {
    return html.Element.beforeCopyEvent.forElement(this);
  }
  get [dartx.onBeforeCut]() {
    return html.Element.beforeCutEvent.forElement(this);
  }
  get [dartx.onBeforePaste]() {
    return html.Element.beforePasteEvent.forElement(this);
  }
  get [dartx.onBlur]() {
    return html.Element.blurEvent.forElement(this);
  }
  get [dartx.onCanPlay]() {
    return html.Element.canPlayEvent.forElement(this);
  }
  get [dartx.onCanPlayThrough]() {
    return html.Element.canPlayThroughEvent.forElement(this);
  }
  get [dartx.onChange]() {
    return html.Element.changeEvent.forElement(this);
  }
  get [dartx.onClick]() {
    return html.Element.clickEvent.forElement(this);
  }
  get [dartx.onContextMenu]() {
    return html.Element.contextMenuEvent.forElement(this);
  }
  get [dartx.onCopy]() {
    return html.Element.copyEvent.forElement(this);
  }
  get [dartx.onCut]() {
    return html.Element.cutEvent.forElement(this);
  }
  get [dartx.onDoubleClick]() {
    return html.Element.doubleClickEvent.forElement(this);
  }
  get [dartx.onDrag]() {
    return html.Element.dragEvent.forElement(this);
  }
  get [dartx.onDragEnd]() {
    return html.Element.dragEndEvent.forElement(this);
  }
  get [dartx.onDragEnter]() {
    return html.Element.dragEnterEvent.forElement(this);
  }
  get [dartx.onDragLeave]() {
    return html.Element.dragLeaveEvent.forElement(this);
  }
  get [dartx.onDragOver]() {
    return html.Element.dragOverEvent.forElement(this);
  }
  get [dartx.onDragStart]() {
    return html.Element.dragStartEvent.forElement(this);
  }
  get [dartx.onDrop]() {
    return html.Element.dropEvent.forElement(this);
  }
  get [dartx.onDurationChange]() {
    return html.Element.durationChangeEvent.forElement(this);
  }
  get [dartx.onEmptied]() {
    return html.Element.emptiedEvent.forElement(this);
  }
  get [dartx.onEnded]() {
    return html.Element.endedEvent.forElement(this);
  }
  get [dartx.onError]() {
    return html.Element.errorEvent.forElement(this);
  }
  get [dartx.onFocus]() {
    return html.Element.focusEvent.forElement(this);
  }
  get [dartx.onInput]() {
    return html.Element.inputEvent.forElement(this);
  }
  get [dartx.onInvalid]() {
    return html.Element.invalidEvent.forElement(this);
  }
  get [dartx.onKeyDown]() {
    return html.Element.keyDownEvent.forElement(this);
  }
  get [dartx.onKeyPress]() {
    return html.Element.keyPressEvent.forElement(this);
  }
  get [dartx.onKeyUp]() {
    return html.Element.keyUpEvent.forElement(this);
  }
  get [dartx.onLoad]() {
    return html.Element.loadEvent.forElement(this);
  }
  get [dartx.onLoadedData]() {
    return html.Element.loadedDataEvent.forElement(this);
  }
  get [dartx.onLoadedMetadata]() {
    return html.Element.loadedMetadataEvent.forElement(this);
  }
  get [dartx.onMouseDown]() {
    return html.Element.mouseDownEvent.forElement(this);
  }
  get [dartx.onMouseEnter]() {
    return html.Element.mouseEnterEvent.forElement(this);
  }
  get [dartx.onMouseLeave]() {
    return html.Element.mouseLeaveEvent.forElement(this);
  }
  get [dartx.onMouseMove]() {
    return html.Element.mouseMoveEvent.forElement(this);
  }
  get [dartx.onMouseOut]() {
    return html.Element.mouseOutEvent.forElement(this);
  }
  get [dartx.onMouseOver]() {
    return html.Element.mouseOverEvent.forElement(this);
  }
  get [dartx.onMouseUp]() {
    return html.Element.mouseUpEvent.forElement(this);
  }
  get [dartx.onMouseWheel]() {
    return html.Element.mouseWheelEvent.forElement(this);
  }
  get [dartx.onPaste]() {
    return html.Element.pasteEvent.forElement(this);
  }
  get [dartx.onPause]() {
    return html.Element.pauseEvent.forElement(this);
  }
  get [dartx.onPlay]() {
    return html.Element.playEvent.forElement(this);
  }
  get [dartx.onPlaying]() {
    return html.Element.playingEvent.forElement(this);
  }
  get [dartx.onRateChange]() {
    return html.Element.rateChangeEvent.forElement(this);
  }
  get [dartx.onReset]() {
    return html.Element.resetEvent.forElement(this);
  }
  get [dartx.onResize]() {
    return html.Element.resizeEvent.forElement(this);
  }
  get [dartx.onScroll]() {
    return html.Element.scrollEvent.forElement(this);
  }
  get [dartx.onSearch]() {
    return html.Element.searchEvent.forElement(this);
  }
  get [dartx.onSeeked]() {
    return html.Element.seekedEvent.forElement(this);
  }
  get [dartx.onSeeking]() {
    return html.Element.seekingEvent.forElement(this);
  }
  get [dartx.onSelect]() {
    return html.Element.selectEvent.forElement(this);
  }
  get [dartx.onSelectStart]() {
    return html.Element.selectStartEvent.forElement(this);
  }
  get [dartx.onStalled]() {
    return html.Element.stalledEvent.forElement(this);
  }
  get [dartx.onSubmit]() {
    return html.Element.submitEvent.forElement(this);
  }
  get [dartx.onSuspend]() {
    return html.Element.suspendEvent.forElement(this);
  }
  get [dartx.onTimeUpdate]() {
    return html.Element.timeUpdateEvent.forElement(this);
  }
  get [dartx.onTouchCancel]() {
    return html.Element.touchCancelEvent.forElement(this);
  }
  get [dartx.onTouchEnd]() {
    return html.Element.touchEndEvent.forElement(this);
  }
  get [dartx.onTouchEnter]() {
    return html.Element.touchEnterEvent.forElement(this);
  }
  get [dartx.onTouchLeave]() {
    return html.Element.touchLeaveEvent.forElement(this);
  }
  get [dartx.onTouchMove]() {
    return html.Element.touchMoveEvent.forElement(this);
  }
  get [dartx.onTouchStart]() {
    return html.Element.touchStartEvent.forElement(this);
  }
  get [dartx.onTransitionEnd]() {
    return html.Element.transitionEndEvent.forElement(this);
  }
  get [dartx.onVolumeChange]() {
    return html.Element.volumeChangeEvent.forElement(this);
  }
  get [dartx.onWaiting]() {
    return html.Element.waitingEvent.forElement(this);
  }
  get [dartx.onFullscreenChange]() {
    return html.Element.fullscreenChangeEvent.forElement(this);
  }
  get [dartx.onFullscreenError]() {
    return html.Element.fullscreenErrorEvent.forElement(this);
  }
};
dart.defineNamedConstructor(html.Element, 'created');
html.Element[dart.implements] = () => [html.NonDocumentTypeChildNode, html.GlobalEventHandlers, html.ParentNode, html.ChildNode];
dart.setSignature(html.Element, {
  constructors: () => ({
    html: dart.definiteFunctionType(html.Element, [core.String], {validator: html.NodeValidator, treeSanitizer: html.NodeTreeSanitizer}),
    created: dart.definiteFunctionType(html.Element, []),
    tag: dart.definiteFunctionType(html.Element, [core.String], [core.String]),
    a: dart.definiteFunctionType(html.Element, []),
    article: dart.definiteFunctionType(html.Element, []),
    aside: dart.definiteFunctionType(html.Element, []),
    audio: dart.definiteFunctionType(html.Element, []),
    br: dart.definiteFunctionType(html.Element, []),
    canvas: dart.definiteFunctionType(html.Element, []),
    div: dart.definiteFunctionType(html.Element, []),
    footer: dart.definiteFunctionType(html.Element, []),
    header: dart.definiteFunctionType(html.Element, []),
    hr: dart.definiteFunctionType(html.Element, []),
    iframe: dart.definiteFunctionType(html.Element, []),
    img: dart.definiteFunctionType(html.Element, []),
    li: dart.definiteFunctionType(html.Element, []),
    nav: dart.definiteFunctionType(html.Element, []),
    ol: dart.definiteFunctionType(html.Element, []),
    option: dart.definiteFunctionType(html.Element, []),
    p: dart.definiteFunctionType(html.Element, []),
    pre: dart.definiteFunctionType(html.Element, []),
    section: dart.definiteFunctionType(html.Element, []),
    select: dart.definiteFunctionType(html.Element, []),
    span: dart.definiteFunctionType(html.Element, []),
    svg: dart.definiteFunctionType(html.Element, []),
    table: dart.definiteFunctionType(html.Element, []),
    td: dart.definiteFunctionType(html.Element, []),
    textarea: dart.definiteFunctionType(html.Element, []),
    th: dart.definiteFunctionType(html.Element, []),
    tr: dart.definiteFunctionType(html.Element, []),
    ul: dart.definiteFunctionType(html.Element, []),
    video: dart.definiteFunctionType(html.Element, []),
    _: dart.definiteFunctionType(html.Element, [])
  }),
  fields: () => ({
    [_xtag]: html.Element,
    [dartx.offsetParent]: html.Element,
    [dartx.contentEditable]: core.String,
    [dartx.contextMenu]: html.MenuElement,
    [dartx.dir]: core.String,
    [dartx.draggable]: core.bool,
    [dartx.hidden]: core.bool,
    [dartx.lang]: core.String,
    [dartx.spellcheck]: core.bool,
    [dartx.style]: html.CssStyleDeclaration,
    [dartx.tabIndex]: core.int,
    [dartx.title]: core.String,
    [dartx.translate]: core.bool,
    [dartx.dropzone]: core.String,
    [_attributes]: html._NamedNodeMap,
    [dartx.className]: core.String,
    [dartx.clientHeight]: core.int,
    [dartx.clientLeft]: core.int,
    [dartx.clientTop]: core.int,
    [dartx.clientWidth]: core.int,
    [dartx.computedName]: core.String,
    [dartx.computedRole]: core.String,
    [dartx.id]: core.String,
    [_innerHtml]: core.String,
    [_scrollHeight]: core.int,
    [_scrollLeft]: core.num,
    [_scrollTop]: core.num,
    [_scrollWidth]: core.int,
    [dartx.tagName]: core.String,
    [dartx.nextElementSibling]: html.Element,
    [dartx.previousElementSibling]: html.Element,
    [_childElementCount]: core.int,
    [_children]: ListOfNode(),
    [_firstElementChild]: html.Element,
    [_lastElementChild]: html.Element
  }),
  getters: () => ({
    [dartx.attributes]: dart.definiteFunctionType(core.Map$(core.String, core.String), []),
    [dartx.children]: dart.definiteFunctionType(core.List$(html.Element), []),
    [dartx.classes]: dart.definiteFunctionType(html.CssClassSet, []),
    [dartx.dataset]: dart.definiteFunctionType(core.Map$(core.String, core.String), []),
    [dartx.client]: dart.definiteFunctionType(math.Rectangle$(core.num), []),
    [dartx.offset]: dart.definiteFunctionType(math.Rectangle$(core.num), []),
    [dartx.xtag]: dart.definiteFunctionType(dart.dynamic, []),
    [dartx.localName]: dart.definiteFunctionType(core.String, []),
    [dartx.namespaceUri]: dart.definiteFunctionType(core.String, []),
    [dartx.shadowRoot]: dart.definiteFunctionType(html.ShadowRoot, []),
    [dartx.contentEdge]: dart.definiteFunctionType(html.CssRect, []),
    [dartx.paddingEdge]: dart.definiteFunctionType(html.CssRect, []),
    [dartx.borderEdge]: dart.definiteFunctionType(html.CssRect, []),
    [dartx.marginEdge]: dart.definiteFunctionType(html.CssRect, []),
    [dartx.documentOffset]: dart.definiteFunctionType(math.Point$(core.num), []),
    [_canBeUsedToCreateContextualFragment]: dart.definiteFunctionType(core.bool, []),
    [_cannotBeUsedToCreateContextualFragment]: dart.definiteFunctionType(core.bool, []),
    [dartx.innerHtml]: dart.definiteFunctionType(core.String, []),
    [dartx.on]: dart.definiteFunctionType(html.ElementEvents, []),
    [dartx.offsetHeight]: dart.definiteFunctionType(core.int, []),
    [dartx.offsetLeft]: dart.definiteFunctionType(core.int, []),
    [dartx.offsetTop]: dart.definiteFunctionType(core.int, []),
    [dartx.offsetWidth]: dart.definiteFunctionType(core.int, []),
    [dartx.scrollHeight]: dart.definiteFunctionType(core.int, []),
    [dartx.scrollLeft]: dart.definiteFunctionType(core.int, []),
    [dartx.scrollTop]: dart.definiteFunctionType(core.int, []),
    [dartx.scrollWidth]: dart.definiteFunctionType(core.int, []),
    [dartx.isContentEditable]: dart.definiteFunctionType(core.bool, []),
    [dartx.outerHtml]: dart.definiteFunctionType(core.String, []),
    [dartx.onAbort]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onBeforeCopy]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onBeforeCut]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onBeforePaste]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onBlur]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onCanPlay]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onCanPlayThrough]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onChange]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onClick]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onContextMenu]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onCopy]: dart.definiteFunctionType(html.ElementStream$(html.ClipboardEvent), []),
    [dartx.onCut]: dart.definiteFunctionType(html.ElementStream$(html.ClipboardEvent), []),
    [dartx.onDoubleClick]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onDrag]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onDragEnd]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onDragEnter]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onDragLeave]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onDragOver]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onDragStart]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onDrop]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onDurationChange]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onEmptied]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onEnded]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onError]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onFocus]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onInput]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onInvalid]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onKeyDown]: dart.definiteFunctionType(html.ElementStream$(html.KeyboardEvent), []),
    [dartx.onKeyPress]: dart.definiteFunctionType(html.ElementStream$(html.KeyboardEvent), []),
    [dartx.onKeyUp]: dart.definiteFunctionType(html.ElementStream$(html.KeyboardEvent), []),
    [dartx.onLoad]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onLoadedData]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onLoadedMetadata]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onMouseDown]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onMouseEnter]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onMouseLeave]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onMouseMove]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onMouseOut]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onMouseOver]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onMouseUp]: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
    [dartx.onMouseWheel]: dart.definiteFunctionType(html.ElementStream$(html.WheelEvent), []),
    [dartx.onPaste]: dart.definiteFunctionType(html.ElementStream$(html.ClipboardEvent), []),
    [dartx.onPause]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onPlay]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onPlaying]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onRateChange]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onReset]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onResize]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onScroll]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onSearch]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onSeeked]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onSeeking]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onSelect]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onSelectStart]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onStalled]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onSubmit]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onSuspend]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onTimeUpdate]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onTouchCancel]: dart.definiteFunctionType(html.ElementStream$(html.TouchEvent), []),
    [dartx.onTouchEnd]: dart.definiteFunctionType(html.ElementStream$(html.TouchEvent), []),
    [dartx.onTouchEnter]: dart.definiteFunctionType(html.ElementStream$(html.TouchEvent), []),
    [dartx.onTouchLeave]: dart.definiteFunctionType(html.ElementStream$(html.TouchEvent), []),
    [dartx.onTouchMove]: dart.definiteFunctionType(html.ElementStream$(html.TouchEvent), []),
    [dartx.onTouchStart]: dart.definiteFunctionType(html.ElementStream$(html.TouchEvent), []),
    [dartx.onTransitionEnd]: dart.definiteFunctionType(html.ElementStream$(html.TransitionEvent), []),
    [dartx.onVolumeChange]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onWaiting]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onFullscreenChange]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onFullscreenError]: dart.definiteFunctionType(html.ElementStream$(html.Event), [])
  }),
  setters: () => ({
    [dartx.attributes]: dart.definiteFunctionType(dart.void, [MapOfString$String()]),
    [dartx.children]: dart.definiteFunctionType(dart.void, [ListOfElement()]),
    [dartx.classes]: dart.definiteFunctionType(dart.void, [IterableOfString()]),
    [dartx.dataset]: dart.definiteFunctionType(dart.void, [MapOfString$String()]),
    [dartx.xtag]: dart.definiteFunctionType(dart.void, [html.Element]),
    [dartx.innerHtml]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.scrollLeft]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.scrollTop]: dart.definiteFunctionType(dart.void, [core.int])
  }),
  methods: () => ({
    [dartx.querySelectorAll]: dart.definiteFunctionType(T => [html.ElementList$(T), [core.String]]),
    [dartx.query]: dart.definiteFunctionType(html.Element, [core.String]),
    [dartx.queryAll]: dart.definiteFunctionType(T => [html.ElementList$(T), [core.String]]),
    [dartx.getNamespacedAttributes]: dart.definiteFunctionType(core.Map$(core.String, core.String), [core.String]),
    [dartx.getComputedStyle]: dart.definiteFunctionType(html.CssStyleDeclaration, [], [core.String]),
    [dartx.appendText]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.appendHtml]: dart.definiteFunctionType(dart.void, [core.String], {validator: html.NodeValidator, treeSanitizer: html.NodeTreeSanitizer}),
    [dartx.attached]: dart.definiteFunctionType(dart.void, []),
    [dartx.detached]: dart.definiteFunctionType(dart.void, []),
    [dartx.enteredView]: dart.definiteFunctionType(dart.void, []),
    [dartx.leftView]: dart.definiteFunctionType(dart.void, []),
    [dartx.animate]: dart.definiteFunctionType(html.Animation, [IterableOfMapOfString$dynamic()], [dart.dynamic]),
    [_animate]: dart.definiteFunctionType(html.Animation, [core.Object], [dart.dynamic]),
    [dartx.attributeChanged]: dart.definiteFunctionType(dart.void, [core.String, core.String, core.String]),
    [dartx.scrollIntoView]: dart.definiteFunctionType(dart.void, [], [html.ScrollAlignment]),
    [dartx.insertAdjacentText]: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    [_insertAdjacentText]: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    [dartx.insertAdjacentHtml]: dart.definiteFunctionType(dart.void, [core.String, core.String], {validator: html.NodeValidator, treeSanitizer: html.NodeTreeSanitizer}),
    [_insertAdjacentHtml]: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    [dartx.insertAdjacentElement]: dart.definiteFunctionType(html.Element, [core.String, html.Element]),
    [_insertAdjacentElement]: dart.definiteFunctionType(dart.void, [core.String, html.Element]),
    [_insertAdjacentNode]: dart.definiteFunctionType(dart.void, [core.String, html.Node]),
    [dartx.matches]: dart.definiteFunctionType(core.bool, [core.String]),
    [dartx.matchesWithAncestors]: dart.definiteFunctionType(core.bool, [core.String]),
    [dartx.createShadowRoot]: dart.definiteFunctionType(html.ShadowRoot, []),
    [dartx.offsetTo]: dart.definiteFunctionType(math.Point$(core.num), [html.Element]),
    [dartx.createFragment]: dart.definiteFunctionType(html.DocumentFragment, [core.String], {validator: html.NodeValidator, treeSanitizer: html.NodeTreeSanitizer}),
    [dartx.setInnerHtml]: dart.definiteFunctionType(dart.void, [core.String], {validator: html.NodeValidator, treeSanitizer: html.NodeTreeSanitizer}),
    [dartx.blur]: dart.definiteFunctionType(dart.void, []),
    [dartx.click]: dart.definiteFunctionType(dart.void, []),
    [dartx.focus]: dart.definiteFunctionType(dart.void, []),
    [dartx.closest]: dart.definiteFunctionType(html.Element, [core.String]),
    [dartx.getAnimations]: dart.definiteFunctionType(core.List$(html.Animation), []),
    [dartx.getAttribute]: dart.definiteFunctionType(core.String, [core.String]),
    [dartx.getAttributeNS]: dart.definiteFunctionType(core.String, [core.String, core.String]),
    [dartx.getBoundingClientRect]: dart.definiteFunctionType(math.Rectangle$(core.num), []),
    [dartx.getClientRects]: dart.definiteFunctionType(core.List$(math.Rectangle$(core.num)), []),
    [dartx.getDestinationInsertionPoints]: dart.definiteFunctionType(core.List$(html.Node), []),
    [dartx.getElementsByClassName]: dart.definiteFunctionType(core.List$(html.Node), [core.String]),
    [_getElementsByTagName]: dart.definiteFunctionType(core.List$(html.Node), [core.String]),
    [_hasAttribute]: dart.definiteFunctionType(core.bool, [core.String]),
    [_hasAttributeNS]: dart.definiteFunctionType(core.bool, [core.String, core.String]),
    [_removeAttribute]: dart.definiteFunctionType(dart.void, [core.String]),
    [_removeAttributeNS]: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    [dartx.requestFullscreen]: dart.definiteFunctionType(dart.void, []),
    [dartx.requestPointerLock]: dart.definiteFunctionType(dart.void, []),
    [dartx.scroll]: dart.definiteFunctionType(dart.void, [], [dart.dynamic, core.num]),
    [_scroll_1]: dart.definiteFunctionType(dart.void, []),
    [_scroll_2]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [_scroll_3]: dart.definiteFunctionType(dart.void, [core.num, dart.dynamic]),
    [dartx.scrollBy]: dart.definiteFunctionType(dart.void, [], [dart.dynamic, core.num]),
    [_scrollBy_1]: dart.definiteFunctionType(dart.void, []),
    [_scrollBy_2]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [_scrollBy_3]: dart.definiteFunctionType(dart.void, [core.num, dart.dynamic]),
    [_scrollIntoView]: dart.definiteFunctionType(dart.void, [], [core.bool]),
    [_scrollIntoViewIfNeeded]: dart.definiteFunctionType(dart.void, [], [core.bool]),
    [dartx.scrollTo]: dart.definiteFunctionType(dart.void, [], [dart.dynamic, core.num]),
    [_scrollTo_1]: dart.definiteFunctionType(dart.void, []),
    [_scrollTo_2]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [_scrollTo_3]: dart.definiteFunctionType(dart.void, [core.num, dart.dynamic]),
    [dartx.setAttribute]: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    [dartx.setAttributeNS]: dart.definiteFunctionType(dart.void, [core.String, core.String, core.String]),
    [dartx.after]: dart.definiteFunctionType(dart.void, [core.Object]),
    [dartx.before]: dart.definiteFunctionType(dart.void, [core.Object]),
    [dartx.querySelector]: dart.definiteFunctionType(html.Element, [core.String]),
    [_querySelectorAll]: dart.definiteFunctionType(core.List$(html.Node), [core.String])
  }),
  sfields: () => ({
    mouseWheelEvent: EventStreamProviderOfWheelEvent(),
    transitionEndEvent: EventStreamProviderOfTransitionEvent(),
    _parseDocument: html.HtmlDocument,
    _parseRange: html.Range,
    _defaultValidator: html.NodeValidatorBuilder,
    _defaultSanitizer: html._ValidatingTreeSanitizer,
    _tagsForWhichCreateContextualFragmentIsNotSupported: ListOfString(),
    abortEvent: EventStreamProviderOfEvent(),
    beforeCopyEvent: EventStreamProviderOfEvent(),
    beforeCutEvent: EventStreamProviderOfEvent(),
    beforePasteEvent: EventStreamProviderOfEvent(),
    blurEvent: EventStreamProviderOfEvent(),
    canPlayEvent: EventStreamProviderOfEvent(),
    canPlayThroughEvent: EventStreamProviderOfEvent(),
    changeEvent: EventStreamProviderOfEvent(),
    clickEvent: EventStreamProviderOfMouseEvent(),
    contextMenuEvent: EventStreamProviderOfMouseEvent(),
    copyEvent: EventStreamProviderOfClipboardEvent(),
    cutEvent: EventStreamProviderOfClipboardEvent(),
    doubleClickEvent: EventStreamProviderOfEvent(),
    dragEvent: EventStreamProviderOfMouseEvent(),
    dragEndEvent: EventStreamProviderOfMouseEvent(),
    dragEnterEvent: EventStreamProviderOfMouseEvent(),
    dragLeaveEvent: EventStreamProviderOfMouseEvent(),
    dragOverEvent: EventStreamProviderOfMouseEvent(),
    dragStartEvent: EventStreamProviderOfMouseEvent(),
    dropEvent: EventStreamProviderOfMouseEvent(),
    durationChangeEvent: EventStreamProviderOfEvent(),
    emptiedEvent: EventStreamProviderOfEvent(),
    endedEvent: EventStreamProviderOfEvent(),
    errorEvent: EventStreamProviderOfEvent(),
    focusEvent: EventStreamProviderOfEvent(),
    inputEvent: EventStreamProviderOfEvent(),
    invalidEvent: EventStreamProviderOfEvent(),
    keyDownEvent: EventStreamProviderOfKeyboardEvent(),
    keyPressEvent: EventStreamProviderOfKeyboardEvent(),
    keyUpEvent: EventStreamProviderOfKeyboardEvent(),
    loadEvent: EventStreamProviderOfEvent(),
    loadedDataEvent: EventStreamProviderOfEvent(),
    loadedMetadataEvent: EventStreamProviderOfEvent(),
    mouseDownEvent: EventStreamProviderOfMouseEvent(),
    mouseEnterEvent: EventStreamProviderOfMouseEvent(),
    mouseLeaveEvent: EventStreamProviderOfMouseEvent(),
    mouseMoveEvent: EventStreamProviderOfMouseEvent(),
    mouseOutEvent: EventStreamProviderOfMouseEvent(),
    mouseOverEvent: EventStreamProviderOfMouseEvent(),
    mouseUpEvent: EventStreamProviderOfMouseEvent(),
    pasteEvent: EventStreamProviderOfClipboardEvent(),
    pauseEvent: EventStreamProviderOfEvent(),
    playEvent: EventStreamProviderOfEvent(),
    playingEvent: EventStreamProviderOfEvent(),
    rateChangeEvent: EventStreamProviderOfEvent(),
    resetEvent: EventStreamProviderOfEvent(),
    resizeEvent: EventStreamProviderOfEvent(),
    scrollEvent: EventStreamProviderOfEvent(),
    searchEvent: EventStreamProviderOfEvent(),
    seekedEvent: EventStreamProviderOfEvent(),
    seekingEvent: EventStreamProviderOfEvent(),
    selectEvent: EventStreamProviderOfEvent(),
    selectStartEvent: EventStreamProviderOfEvent(),
    stalledEvent: EventStreamProviderOfEvent(),
    submitEvent: EventStreamProviderOfEvent(),
    suspendEvent: EventStreamProviderOfEvent(),
    timeUpdateEvent: EventStreamProviderOfEvent(),
    touchCancelEvent: EventStreamProviderOfTouchEvent(),
    touchEndEvent: EventStreamProviderOfTouchEvent(),
    touchEnterEvent: EventStreamProviderOfTouchEvent(),
    touchLeaveEvent: EventStreamProviderOfTouchEvent(),
    touchMoveEvent: EventStreamProviderOfTouchEvent(),
    touchStartEvent: EventStreamProviderOfTouchEvent(),
    volumeChangeEvent: EventStreamProviderOfEvent(),
    waitingEvent: EventStreamProviderOfEvent(),
    fullscreenChangeEvent: EventStreamProviderOfEvent(),
    fullscreenErrorEvent: EventStreamProviderOfEvent()
  }),
  statics: () => ({
    isTagSupported: dart.definiteFunctionType(core.bool, [core.String]),
    _determineMouseWheelEventType: dart.definiteFunctionType(core.String, [html.EventTarget]),
    _determineTransitionEventType: dart.definiteFunctionType(core.String, [html.EventTarget]),
    _offsetToHelper: dart.definiteFunctionType(math.Point$(core.num), [html.Element, html.Element]),
    _hasCorruptedAttributes: dart.definiteFunctionType(core.bool, [html.Element]),
    _hasCorruptedAttributesAdditionalCheck: dart.definiteFunctionType(core.bool, [html.Element]),
    _safeTagName: dart.definiteFunctionType(core.String, [dart.dynamic])
  }),
  names: ['isTagSupported', '_determineMouseWheelEventType', '_determineTransitionEventType', '_offsetToHelper', '_hasCorruptedAttributes', '_hasCorruptedAttributesAdditionalCheck', '_safeTagName']
});
html.Element._parseDocument = null;
html.Element._parseRange = null;
html.Element._defaultValidator = null;
html.Element._defaultSanitizer = null;
html.Element._tagsForWhichCreateContextualFragmentIsNotSupported = dart.constList(['HEAD', 'AREA', 'BASE', 'BASEFONT', 'BR', 'COL', 'COLGROUP', 'EMBED', 'FRAME', 'FRAMESET', 'HR', 'IMAGE', 'IMG', 'INPUT', 'ISINDEX', 'LINK', 'META', 'PARAM', 'SOURCE', 'STYLE', 'TITLE', 'WBR'], core.String);
dart.defineLazy(html.Element, {
  get mouseWheelEvent() {
    return dart.const(new (_CustomEventStreamProviderOfWheelEvent())(html.Element._determineMouseWheelEventType));
  },
  get transitionEndEvent() {
    return dart.const(new (_CustomEventStreamProviderOfTransitionEvent())(html.Element._determineTransitionEventType));
  },
  get abortEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('abort'));
  },
  get beforeCopyEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('beforecopy'));
  },
  get beforeCutEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('beforecut'));
  },
  get beforePasteEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('beforepaste'));
  },
  get blurEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('blur'));
  },
  get canPlayEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('canplay'));
  },
  get canPlayThroughEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('canplaythrough'));
  },
  get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('change'));
  },
  get clickEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('click'));
  },
  get contextMenuEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('contextmenu'));
  },
  get copyEvent() {
    return dart.const(new (EventStreamProviderOfClipboardEvent())('copy'));
  },
  get cutEvent() {
    return dart.const(new (EventStreamProviderOfClipboardEvent())('cut'));
  },
  get doubleClickEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('dblclick'));
  },
  get dragEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('drag'));
  },
  get dragEndEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragend'));
  },
  get dragEnterEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragenter'));
  },
  get dragLeaveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragleave'));
  },
  get dragOverEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragover'));
  },
  get dragStartEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragstart'));
  },
  get dropEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('drop'));
  },
  get durationChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('durationchange'));
  },
  get emptiedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('emptied'));
  },
  get endedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('ended'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get focusEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('focus'));
  },
  get inputEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('input'));
  },
  get invalidEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('invalid'));
  },
  get keyDownEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent())('keydown'));
  },
  get keyPressEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent())('keypress'));
  },
  get keyUpEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent())('keyup'));
  },
  get loadEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('load'));
  },
  get loadedDataEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('loadeddata'));
  },
  get loadedMetadataEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('loadedmetadata'));
  },
  get mouseDownEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mousedown'));
  },
  get mouseEnterEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseenter'));
  },
  get mouseLeaveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseleave'));
  },
  get mouseMoveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mousemove'));
  },
  get mouseOutEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseout'));
  },
  get mouseOverEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseover'));
  },
  get mouseUpEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseup'));
  },
  get pasteEvent() {
    return dart.const(new (EventStreamProviderOfClipboardEvent())('paste'));
  },
  get pauseEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('pause'));
  },
  get playEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('play'));
  },
  get playingEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('playing'));
  },
  get rateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('ratechange'));
  },
  get resetEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('reset'));
  },
  get resizeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('resize'));
  },
  get scrollEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('scroll'));
  },
  get searchEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('search'));
  },
  get seekedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('seeked'));
  },
  get seekingEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('seeking'));
  },
  get selectEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('select'));
  },
  get selectStartEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('selectstart'));
  },
  get stalledEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('stalled'));
  },
  get submitEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('submit'));
  },
  get suspendEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('suspend'));
  },
  get timeUpdateEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('timeupdate'));
  },
  get touchCancelEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent())('touchcancel'));
  },
  get touchEndEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent())('touchend'));
  },
  get touchEnterEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent())('touchenter'));
  },
  get touchLeaveEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent())('touchleave'));
  },
  get touchMoveEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent())('touchmove'));
  },
  get touchStartEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent())('touchstart'));
  },
  get volumeChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('volumechange'));
  },
  get waitingEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('waiting'));
  },
  get fullscreenChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('webkitfullscreenchange'));
  },
  get fullscreenErrorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('webkitfullscreenerror'));
  }
});
dart.registerExtension(dart.global.Element, html.Element);
html.HtmlElement = class HtmlElement extends html.Element {
  static new() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.HtmlElement, 'created');
dart.setSignature(html.HtmlElement, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.HtmlElement, []),
    created: dart.definiteFunctionType(html.HtmlElement, [])
  })
});
dart.registerExtension(dart.global.HTMLElement, html.HtmlElement);
html._EntryArray = class _EntryArray extends core.Object {};
html._EntryArray[dart.implements] = () => [ListOfEntry()];
dart.registerExtension(dart.global.EntryArray, html._EntryArray);
html.spawnDomUri = function(uri, args, message) {
  dart.throw(new core.UnimplementedError());
};
dart.fn(html.spawnDomUri, UriAndListOfStringAnddynamicToFutureOfIsolate());
html.createCustomUpgrader = function(customElementClass, $this) {
  return $this;
};
dart.fn(html.createCustomUpgrader, TypeAnddynamicTodynamic());
dart.defineExtensionNames([
  'onError'
]);
html.AbstractWorker = class AbstractWorker extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get onError() {
    return html.AbstractWorker.errorEvent.forTarget(this);
  }
};
html.AbstractWorker[dart.implements] = () => [html.EventTarget];
dart.setSignature(html.AbstractWorker, {
  constructors: () => ({_: dart.definiteFunctionType(html.AbstractWorker, [])}),
  getters: () => ({onError: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  sfields: () => ({errorEvent: EventStreamProviderOfEvent()})
});
dart.defineExtensionMembers(html.AbstractWorker, ['onError']);
dart.defineLazy(html.AbstractWorker, {
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  }
});
dart.defineExtensionNames([
  'toString',
  'download',
  'hreflang',
  'rel',
  'target',
  'type',
  'hash',
  'host',
  'hostname',
  'href',
  'origin',
  'password',
  'pathname',
  'port',
  'protocol',
  'search',
  'username'
]);
html.AnchorElement = class AnchorElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(opts) {
    let href = opts && 'href' in opts ? opts.href : null;
    let e = html.AnchorElement._check(html.document[dartx.createElement]("a"));
    if (href != null) e[dartx.href] = href;
    return e;
  }
  created() {
    this[dartx.download] = null;
    this[dartx.hreflang] = null;
    this[dartx.rel] = null;
    this[dartx.target] = null;
    this[dartx.type] = null;
    this[dartx.hash] = null;
    this[dartx.host] = null;
    this[dartx.hostname] = null;
    this[dartx.href] = null;
    this[dartx.origin] = null;
    this[dartx.password] = null;
    this[dartx.pathname] = null;
    this[dartx.port] = null;
    this[dartx.protocol] = null;
    this[dartx.search] = null;
    this[dartx.username] = null;
    super.created();
  }
  get [dartx.download]() {
    return this.download;
  }
  set [dartx.download](value) {
    this.download = value;
  }
  get [dartx.hreflang]() {
    return this.hreflang;
  }
  set [dartx.hreflang](value) {
    this.hreflang = value;
  }
  get [dartx.rel]() {
    return this.rel;
  }
  set [dartx.rel](value) {
    this.rel = value;
  }
  get [dartx.target]() {
    return this.target;
  }
  set [dartx.target](value) {
    this.target = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
  get [dartx.hash]() {
    return this.hash;
  }
  set [dartx.hash](value) {
    this.hash = value;
  }
  get [dartx.host]() {
    return this.host;
  }
  set [dartx.host](value) {
    this.host = value;
  }
  get [dartx.hostname]() {
    return this.hostname;
  }
  set [dartx.hostname](value) {
    this.hostname = value;
  }
  get [dartx.href]() {
    return this.href;
  }
  set [dartx.href](value) {
    this.href = value;
  }
  get [dartx.origin]() {
    return this.origin;
  }
  get [dartx.password]() {
    return this.password;
  }
  set [dartx.password](value) {
    this.password = value;
  }
  get [dartx.pathname]() {
    return this.pathname;
  }
  set [dartx.pathname](value) {
    this.pathname = value;
  }
  get [dartx.port]() {
    return this.port;
  }
  set [dartx.port](value) {
    this.port = value;
  }
  get [dartx.protocol]() {
    return this.protocol;
  }
  set [dartx.protocol](value) {
    this.protocol = value;
  }
  get [dartx.search]() {
    return this.search;
  }
  set [dartx.search](value) {
    this.search = value;
  }
  get [dartx.username]() {
    return this.username;
  }
  set [dartx.username](value) {
    this.username = value;
  }
  [dartx.toString]() {
    return String(this);
  }
};
dart.defineNamedConstructor(html.AnchorElement, 'created');
html.AnchorElement[dart.implements] = () => [html.UrlUtils];
dart.setSignature(html.AnchorElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.AnchorElement, []),
    new: dart.definiteFunctionType(html.AnchorElement, [], {href: core.String}),
    created: dart.definiteFunctionType(html.AnchorElement, [])
  }),
  fields: () => ({
    [dartx.download]: core.String,
    [dartx.hreflang]: core.String,
    [dartx.rel]: core.String,
    [dartx.target]: core.String,
    [dartx.type]: core.String,
    [dartx.hash]: core.String,
    [dartx.host]: core.String,
    [dartx.hostname]: core.String,
    [dartx.href]: core.String,
    [dartx.origin]: core.String,
    [dartx.password]: core.String,
    [dartx.pathname]: core.String,
    [dartx.port]: core.String,
    [dartx.protocol]: core.String,
    [dartx.search]: core.String,
    [dartx.username]: core.String
  })
});
dart.registerExtension(dart.global.HTMLAnchorElement, html.AnchorElement);
dart.defineExtensionNames([
  'cancel',
  'finish',
  'pause',
  'play',
  'reverse',
  'currentTime',
  'effect',
  'endClip',
  'finished',
  'playState',
  'playbackRate',
  'ready',
  'startClip',
  'startTime'
]);
html.Animation = class Animation extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static get supported() {
    return !!document.body.animate;
  }
  get [dartx.currentTime]() {
    return this.currentTime;
  }
  set [dartx.currentTime](value) {
    this.currentTime = value;
  }
  get [dartx.effect]() {
    return this.effect;
  }
  set [dartx.effect](value) {
    this.effect = value;
  }
  get [dartx.endClip]() {
    return this.endClip;
  }
  set [dartx.endClip](value) {
    this.endClip = value;
  }
  get [dartx.finished]() {
    return this.finished;
  }
  get [dartx.playState]() {
    return this.playState;
  }
  get [dartx.playbackRate]() {
    return this.playbackRate;
  }
  set [dartx.playbackRate](value) {
    this.playbackRate = value;
  }
  get [dartx.ready]() {
    return this.ready;
  }
  get [dartx.startClip]() {
    return this.startClip;
  }
  set [dartx.startClip](value) {
    this.startClip = value;
  }
  get [dartx.startTime]() {
    return this.startTime;
  }
  set [dartx.startTime](value) {
    this.startTime = value;
  }
  [dartx.cancel](...args) {
    return this.cancel.apply(this, args);
  }
  [dartx.finish](...args) {
    return this.finish.apply(this, args);
  }
  [dartx.pause](...args) {
    return this.pause.apply(this, args);
  }
  [dartx.play](...args) {
    return this.play.apply(this, args);
  }
  [dartx.reverse](...args) {
    return this.reverse.apply(this, args);
  }
};
dart.setSignature(html.Animation, {
  constructors: () => ({_: dart.definiteFunctionType(html.Animation, [])}),
  fields: () => ({
    [dartx.currentTime]: core.num,
    [dartx.effect]: html.AnimationEffectReadOnly,
    [dartx.endClip]: core.num,
    [dartx.finished]: async.Future,
    [dartx.playState]: core.String,
    [dartx.playbackRate]: core.num,
    [dartx.ready]: async.Future,
    [dartx.startClip]: core.num,
    [dartx.startTime]: core.num
  }),
  methods: () => ({
    [dartx.cancel]: dart.definiteFunctionType(dart.void, []),
    [dartx.finish]: dart.definiteFunctionType(dart.void, []),
    [dartx.pause]: dart.definiteFunctionType(dart.void, []),
    [dartx.play]: dart.definiteFunctionType(dart.void, []),
    [dartx.reverse]: dart.definiteFunctionType(dart.void, [])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.Animation, html.Animation);
const _get_computedTiming = Symbol('_get_computedTiming');
dart.defineExtensionNames([
  'computedTiming',
  'timing'
]);
html.AnimationEffectReadOnly = class AnimationEffectReadOnly extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.computedTiming]() {
    return html_common.convertNativeToDart_Dictionary(this[_get_computedTiming]);
  }
  get [_get_computedTiming]() {
    return this.computedTiming;
  }
  get [dartx.timing]() {
    return this.timing;
  }
};
dart.setSignature(html.AnimationEffectReadOnly, {
  constructors: () => ({_: dart.definiteFunctionType(html.AnimationEffectReadOnly, [])}),
  fields: () => ({
    [_get_computedTiming]: dart.dynamic,
    [dartx.timing]: html.AnimationEffectTiming
  }),
  getters: () => ({[dartx.computedTiming]: dart.definiteFunctionType(core.Map, [])})
});
dart.registerExtension(dart.global.AnimationEffectReadOnly, html.AnimationEffectReadOnly);
dart.defineExtensionNames([
  'delay',
  'direction',
  'duration',
  'easing',
  'endDelay',
  'fill',
  'iterationStart',
  'iterations',
  'playbackRate'
]);
html.AnimationEffectTiming = class AnimationEffectTiming extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.delay]() {
    return this.delay;
  }
  set [dartx.delay](value) {
    this.delay = value;
  }
  get [dartx.direction]() {
    return this.direction;
  }
  set [dartx.direction](value) {
    this.direction = value;
  }
  get [dartx.duration]() {
    return this.duration;
  }
  set [dartx.duration](value) {
    this.duration = value;
  }
  get [dartx.easing]() {
    return this.easing;
  }
  set [dartx.easing](value) {
    this.easing = value;
  }
  get [dartx.endDelay]() {
    return this.endDelay;
  }
  set [dartx.endDelay](value) {
    this.endDelay = value;
  }
  get [dartx.fill]() {
    return this.fill;
  }
  set [dartx.fill](value) {
    this.fill = value;
  }
  get [dartx.iterationStart]() {
    return this.iterationStart;
  }
  set [dartx.iterationStart](value) {
    this.iterationStart = value;
  }
  get [dartx.iterations]() {
    return this.iterations;
  }
  set [dartx.iterations](value) {
    this.iterations = value;
  }
  get [dartx.playbackRate]() {
    return this.playbackRate;
  }
  set [dartx.playbackRate](value) {
    this.playbackRate = value;
  }
};
dart.setSignature(html.AnimationEffectTiming, {
  constructors: () => ({_: dart.definiteFunctionType(html.AnimationEffectTiming, [])}),
  fields: () => ({
    [dartx.delay]: core.num,
    [dartx.direction]: core.String,
    [dartx.duration]: core.Object,
    [dartx.easing]: core.String,
    [dartx.endDelay]: core.num,
    [dartx.fill]: core.String,
    [dartx.iterationStart]: core.num,
    [dartx.iterations]: core.num,
    [dartx.playbackRate]: core.num
  })
});
dart.registerExtension(dart.global.AnimationEffectTiming, html.AnimationEffectTiming);
dart.defineExtensionNames([
  'animationName',
  'elapsedTime'
]);
html.AnimationEvent = class AnimationEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.AnimationEvent._create_1(type, eventInitDict_1);
    }
    return html.AnimationEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new AnimationEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new AnimationEvent(type);
  }
  get [dartx.animationName]() {
    return this.animationName;
  }
  get [dartx.elapsedTime]() {
    return this.elapsedTime;
  }
};
dart.setSignature(html.AnimationEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.AnimationEvent, []),
    new: dart.definiteFunctionType(html.AnimationEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.animationName]: core.String,
    [dartx.elapsedTime]: core.double
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.AnimationEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.AnimationEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.AnimationEvent, html.AnimationEvent);
dart.defineExtensionNames([
  'currentTime',
  'timelineTime'
]);
html.AnimationPlayerEvent = class AnimationPlayerEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.AnimationPlayerEvent._create_1(type, eventInitDict_1);
    }
    return html.AnimationPlayerEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new AnimationPlayerEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new AnimationPlayerEvent(type);
  }
  get [dartx.currentTime]() {
    return this.currentTime;
  }
  get [dartx.timelineTime]() {
    return this.timelineTime;
  }
};
dart.setSignature(html.AnimationPlayerEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.AnimationPlayerEvent, []),
    new: dart.definiteFunctionType(html.AnimationPlayerEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.currentTime]: core.double,
    [dartx.timelineTime]: core.double
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.AnimationPlayerEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.AnimationPlayerEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.AnimationPlayerEvent, html.AnimationPlayerEvent);
dart.defineExtensionNames([
  'getAnimations',
  'play',
  'currentTime',
  'playbackRate'
]);
html.AnimationTimeline = class AnimationTimeline extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.currentTime]() {
    return this.currentTime;
  }
  set [dartx.currentTime](value) {
    this.currentTime = value;
  }
  get [dartx.playbackRate]() {
    return this.playbackRate;
  }
  set [dartx.playbackRate](value) {
    this.playbackRate = value;
  }
  [dartx.getAnimations](...args) {
    return this.getAnimations.apply(this, args);
  }
  [dartx.play](...args) {
    return this.play.apply(this, args);
  }
};
dart.setSignature(html.AnimationTimeline, {
  constructors: () => ({_: dart.definiteFunctionType(html.AnimationTimeline, [])}),
  fields: () => ({
    [dartx.currentTime]: core.num,
    [dartx.playbackRate]: core.num
  }),
  methods: () => ({
    [dartx.getAnimations]: dart.definiteFunctionType(core.List$(html.Animation), []),
    [dartx.play]: dart.definiteFunctionType(html.Animation, [html.AnimationEffectReadOnly])
  })
});
dart.registerExtension(dart.global.AnimationTimeline, html.AnimationTimeline);
dart.defineExtensionNames([
  'outcome',
  'platform'
]);
html.AppBannerPromptResult = class AppBannerPromptResult extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.outcome]() {
    return this.outcome;
  }
  get [dartx.platform]() {
    return this.platform;
  }
};
dart.setSignature(html.AppBannerPromptResult, {
  constructors: () => ({_: dart.definiteFunctionType(html.AppBannerPromptResult, [])}),
  fields: () => ({
    [dartx.outcome]: core.String,
    [dartx.platform]: core.String
  })
});
dart.registerExtension(dart.global.AppBannerPromptResult, html.AppBannerPromptResult);
dart.defineExtensionNames([
  'abort',
  'swapCache',
  'update',
  'onCached',
  'onChecking',
  'onDownloading',
  'onError',
  'onNoUpdate',
  'onObsolete',
  'onProgress',
  'onUpdateReady',
  'status'
]);
html.ApplicationCache = class ApplicationCache extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static get supported() {
    return !!window.applicationCache;
  }
  get [dartx.status]() {
    return this.status;
  }
  [dartx.abort](...args) {
    return this.abort.apply(this, args);
  }
  [dartx.swapCache](...args) {
    return this.swapCache.apply(this, args);
  }
  [dartx.update](...args) {
    return this.update.apply(this, args);
  }
  get [dartx.onCached]() {
    return html.ApplicationCache.cachedEvent.forTarget(this);
  }
  get [dartx.onChecking]() {
    return html.ApplicationCache.checkingEvent.forTarget(this);
  }
  get [dartx.onDownloading]() {
    return html.ApplicationCache.downloadingEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return html.ApplicationCache.errorEvent.forTarget(this);
  }
  get [dartx.onNoUpdate]() {
    return html.ApplicationCache.noUpdateEvent.forTarget(this);
  }
  get [dartx.onObsolete]() {
    return html.ApplicationCache.obsoleteEvent.forTarget(this);
  }
  get [dartx.onProgress]() {
    return html.ApplicationCache.progressEvent.forTarget(this);
  }
  get [dartx.onUpdateReady]() {
    return html.ApplicationCache.updateReadyEvent.forTarget(this);
  }
};
dart.setSignature(html.ApplicationCache, {
  constructors: () => ({_: dart.definiteFunctionType(html.ApplicationCache, [])}),
  fields: () => ({[dartx.status]: core.int}),
  getters: () => ({
    [dartx.onCached]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onChecking]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onDownloading]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onNoUpdate]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onObsolete]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onProgress]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onUpdateReady]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  methods: () => ({
    [dartx.abort]: dart.definiteFunctionType(dart.void, []),
    [dartx.swapCache]: dart.definiteFunctionType(dart.void, []),
    [dartx.update]: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({
    cachedEvent: EventStreamProviderOfEvent(),
    checkingEvent: EventStreamProviderOfEvent(),
    downloadingEvent: EventStreamProviderOfEvent(),
    errorEvent: EventStreamProviderOfEvent(),
    noUpdateEvent: EventStreamProviderOfEvent(),
    obsoleteEvent: EventStreamProviderOfEvent(),
    progressEvent: EventStreamProviderOfProgressEvent(),
    updateReadyEvent: EventStreamProviderOfEvent(),
    CHECKING: core.int,
    DOWNLOADING: core.int,
    IDLE: core.int,
    OBSOLETE: core.int,
    UNCACHED: core.int,
    UPDATEREADY: core.int
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
html.ApplicationCache.CHECKING = 2;
html.ApplicationCache.DOWNLOADING = 3;
html.ApplicationCache.IDLE = 1;
html.ApplicationCache.OBSOLETE = 5;
html.ApplicationCache.UNCACHED = 0;
html.ApplicationCache.UPDATEREADY = 4;
dart.defineLazy(html.ApplicationCache, {
  get cachedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('cached'));
  },
  get checkingEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('checking'));
  },
  get downloadingEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('downloading'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get noUpdateEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('noupdate'));
  },
  get obsoleteEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('obsolete'));
  },
  get progressEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('progress'));
  },
  get updateReadyEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('updateready'));
  }
});
dart.registerExtension(dart.global.ApplicationCache, html.ApplicationCache);
dart.registerExtension(dart.global.DOMApplicationCache, html.ApplicationCache);
dart.registerExtension(dart.global.OfflineResourceList, html.ApplicationCache);
dart.defineExtensionNames([
  'message',
  'reason',
  'status',
  'url'
]);
html.ApplicationCacheErrorEvent = class ApplicationCacheErrorEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.ApplicationCacheErrorEvent._create_1(type, eventInitDict_1);
    }
    return html.ApplicationCacheErrorEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new ApplicationCacheErrorEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new ApplicationCacheErrorEvent(type);
  }
  get [dartx.message]() {
    return this.message;
  }
  get [dartx.reason]() {
    return this.reason;
  }
  get [dartx.status]() {
    return this.status;
  }
  get [dartx.url]() {
    return this.url;
  }
};
dart.setSignature(html.ApplicationCacheErrorEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ApplicationCacheErrorEvent, []),
    new: dart.definiteFunctionType(html.ApplicationCacheErrorEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.message]: core.String,
    [dartx.reason]: core.String,
    [dartx.status]: core.int,
    [dartx.url]: core.String
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.ApplicationCacheErrorEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.ApplicationCacheErrorEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.ApplicationCacheErrorEvent, html.ApplicationCacheErrorEvent);
dart.defineExtensionNames([
  'toString',
  'alt',
  'coords',
  'shape',
  'target',
  'hash',
  'host',
  'hostname',
  'href',
  'origin',
  'password',
  'pathname',
  'port',
  'protocol',
  'search',
  'username'
]);
html.AreaElement = class AreaElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.AreaElement._check(html.document[dartx.createElement]("area"));
  }
  created() {
    this[dartx.alt] = null;
    this[dartx.coords] = null;
    this[dartx.shape] = null;
    this[dartx.target] = null;
    this[dartx.hash] = null;
    this[dartx.host] = null;
    this[dartx.hostname] = null;
    this[dartx.href] = null;
    this[dartx.origin] = null;
    this[dartx.password] = null;
    this[dartx.pathname] = null;
    this[dartx.port] = null;
    this[dartx.protocol] = null;
    this[dartx.search] = null;
    this[dartx.username] = null;
    super.created();
  }
  get [dartx.alt]() {
    return this.alt;
  }
  set [dartx.alt](value) {
    this.alt = value;
  }
  get [dartx.coords]() {
    return this.coords;
  }
  set [dartx.coords](value) {
    this.coords = value;
  }
  get [dartx.shape]() {
    return this.shape;
  }
  set [dartx.shape](value) {
    this.shape = value;
  }
  get [dartx.target]() {
    return this.target;
  }
  set [dartx.target](value) {
    this.target = value;
  }
  get [dartx.hash]() {
    return this.hash;
  }
  set [dartx.hash](value) {
    this.hash = value;
  }
  get [dartx.host]() {
    return this.host;
  }
  set [dartx.host](value) {
    this.host = value;
  }
  get [dartx.hostname]() {
    return this.hostname;
  }
  set [dartx.hostname](value) {
    this.hostname = value;
  }
  get [dartx.href]() {
    return this.href;
  }
  set [dartx.href](value) {
    this.href = value;
  }
  get [dartx.origin]() {
    return this.origin;
  }
  get [dartx.password]() {
    return this.password;
  }
  set [dartx.password](value) {
    this.password = value;
  }
  get [dartx.pathname]() {
    return this.pathname;
  }
  set [dartx.pathname](value) {
    this.pathname = value;
  }
  get [dartx.port]() {
    return this.port;
  }
  set [dartx.port](value) {
    this.port = value;
  }
  get [dartx.protocol]() {
    return this.protocol;
  }
  set [dartx.protocol](value) {
    this.protocol = value;
  }
  get [dartx.search]() {
    return this.search;
  }
  set [dartx.search](value) {
    this.search = value;
  }
  get [dartx.username]() {
    return this.username;
  }
  set [dartx.username](value) {
    this.username = value;
  }
  [dartx.toString]() {
    return String(this);
  }
};
dart.defineNamedConstructor(html.AreaElement, 'created');
html.AreaElement[dart.implements] = () => [html.UrlUtils];
dart.setSignature(html.AreaElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.AreaElement, []),
    new: dart.definiteFunctionType(html.AreaElement, []),
    created: dart.definiteFunctionType(html.AreaElement, [])
  }),
  fields: () => ({
    [dartx.alt]: core.String,
    [dartx.coords]: core.String,
    [dartx.shape]: core.String,
    [dartx.target]: core.String,
    [dartx.hash]: core.String,
    [dartx.host]: core.String,
    [dartx.hostname]: core.String,
    [dartx.href]: core.String,
    [dartx.origin]: core.String,
    [dartx.password]: core.String,
    [dartx.pathname]: core.String,
    [dartx.port]: core.String,
    [dartx.protocol]: core.String,
    [dartx.search]: core.String,
    [dartx.username]: core.String
  })
});
dart.registerExtension(dart.global.HTMLAreaElement, html.AreaElement);
dart.defineExtensionNames([
  'addTextTrack',
  'canPlayType',
  'load',
  'pause',
  'play',
  'setMediaKeys',
  'setSinkId',
  'addKey',
  'cancelKeyRequest',
  'generateKeyRequest',
  'onKeyAdded',
  'onKeyError',
  'onKeyMessage',
  'onNeedKey',
  'audioTracks',
  'autoplay',
  'buffered',
  'controller',
  'controls',
  'crossOrigin',
  'currentSrc',
  'currentTime',
  'defaultMuted',
  'defaultPlaybackRate',
  'duration',
  'ended',
  'error',
  'loop',
  'mediaGroup',
  'mediaKeys',
  'muted',
  'networkState',
  'paused',
  'playbackRate',
  'played',
  'preload',
  'readyState',
  'seekable',
  'seeking',
  'session',
  'sinkId',
  'src',
  'textTracks',
  'videoTracks',
  'volume',
  'audioDecodedByteCount',
  'videoDecodedByteCount'
]);
html.MediaElement = class MediaElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.audioTracks] = null;
    this[dartx.autoplay] = null;
    this[dartx.buffered] = null;
    this[dartx.controller] = null;
    this[dartx.controls] = null;
    this[dartx.crossOrigin] = null;
    this[dartx.currentSrc] = null;
    this[dartx.currentTime] = null;
    this[dartx.defaultMuted] = null;
    this[dartx.defaultPlaybackRate] = null;
    this[dartx.duration] = null;
    this[dartx.ended] = null;
    this[dartx.error] = null;
    this[dartx.loop] = null;
    this[dartx.mediaGroup] = null;
    this[dartx.mediaKeys] = null;
    this[dartx.muted] = null;
    this[dartx.networkState] = null;
    this[dartx.paused] = null;
    this[dartx.playbackRate] = null;
    this[dartx.played] = null;
    this[dartx.preload] = null;
    this[dartx.readyState] = null;
    this[dartx.seekable] = null;
    this[dartx.seeking] = null;
    this[dartx.session] = null;
    this[dartx.sinkId] = null;
    this[dartx.src] = null;
    this[dartx.textTracks] = null;
    this[dartx.videoTracks] = null;
    this[dartx.volume] = null;
    this[dartx.audioDecodedByteCount] = null;
    this[dartx.videoDecodedByteCount] = null;
    super.created();
  }
  get [dartx.audioTracks]() {
    return this.audioTracks;
  }
  get [dartx.autoplay]() {
    return this.autoplay;
  }
  set [dartx.autoplay](value) {
    this.autoplay = value;
  }
  get [dartx.buffered]() {
    return this.buffered;
  }
  get [dartx.controller]() {
    return this.controller;
  }
  set [dartx.controller](value) {
    this.controller = value;
  }
  get [dartx.controls]() {
    return this.controls;
  }
  set [dartx.controls](value) {
    this.controls = value;
  }
  get [dartx.crossOrigin]() {
    return this.crossOrigin;
  }
  set [dartx.crossOrigin](value) {
    this.crossOrigin = value;
  }
  get [dartx.currentSrc]() {
    return this.currentSrc;
  }
  get [dartx.currentTime]() {
    return this.currentTime;
  }
  set [dartx.currentTime](value) {
    this.currentTime = value;
  }
  get [dartx.defaultMuted]() {
    return this.defaultMuted;
  }
  set [dartx.defaultMuted](value) {
    this.defaultMuted = value;
  }
  get [dartx.defaultPlaybackRate]() {
    return this.defaultPlaybackRate;
  }
  set [dartx.defaultPlaybackRate](value) {
    this.defaultPlaybackRate = value;
  }
  get [dartx.duration]() {
    return this.duration;
  }
  get [dartx.ended]() {
    return this.ended;
  }
  get [dartx.error]() {
    return this.error;
  }
  get [dartx.loop]() {
    return this.loop;
  }
  set [dartx.loop](value) {
    this.loop = value;
  }
  get [dartx.mediaGroup]() {
    return this.mediaGroup;
  }
  set [dartx.mediaGroup](value) {
    this.mediaGroup = value;
  }
  get [dartx.mediaKeys]() {
    return this.mediaKeys;
  }
  get [dartx.muted]() {
    return this.muted;
  }
  set [dartx.muted](value) {
    this.muted = value;
  }
  get [dartx.networkState]() {
    return this.networkState;
  }
  get [dartx.paused]() {
    return this.paused;
  }
  get [dartx.playbackRate]() {
    return this.playbackRate;
  }
  set [dartx.playbackRate](value) {
    this.playbackRate = value;
  }
  get [dartx.played]() {
    return this.played;
  }
  get [dartx.preload]() {
    return this.preload;
  }
  set [dartx.preload](value) {
    this.preload = value;
  }
  get [dartx.readyState]() {
    return this.readyState;
  }
  get [dartx.seekable]() {
    return this.seekable;
  }
  get [dartx.seeking]() {
    return this.seeking;
  }
  get [dartx.session]() {
    return this.session;
  }
  set [dartx.session](value) {
    this.session = value;
  }
  get [dartx.sinkId]() {
    return this.sinkId;
  }
  get [dartx.src]() {
    return this.src;
  }
  set [dartx.src](value) {
    this.src = value;
  }
  get [dartx.textTracks]() {
    return this.textTracks;
  }
  get [dartx.videoTracks]() {
    return this.videoTracks;
  }
  get [dartx.volume]() {
    return this.volume;
  }
  set [dartx.volume](value) {
    this.volume = value;
  }
  get [dartx.audioDecodedByteCount]() {
    return this.webkitAudioDecodedByteCount;
  }
  get [dartx.videoDecodedByteCount]() {
    return this.webkitVideoDecodedByteCount;
  }
  [dartx.addTextTrack](...args) {
    return this.addTextTrack.apply(this, args);
  }
  [dartx.canPlayType](...args) {
    return this.canPlayType.apply(this, args);
  }
  [dartx.load](...args) {
    return this.load.apply(this, args);
  }
  [dartx.pause](...args) {
    return this.pause.apply(this, args);
  }
  [dartx.play](...args) {
    return this.play.apply(this, args);
  }
  [dartx.setMediaKeys](...args) {
    return this.setMediaKeys.apply(this, args);
  }
  [dartx.setSinkId](...args) {
    return this.setSinkId.apply(this, args);
  }
  [dartx.addKey](...args) {
    return this.webkitAddKey.apply(this, args);
  }
  [dartx.cancelKeyRequest](...args) {
    return this.webkitCancelKeyRequest.apply(this, args);
  }
  [dartx.generateKeyRequest](...args) {
    return this.webkitGenerateKeyRequest.apply(this, args);
  }
  get [dartx.onKeyAdded]() {
    return html.MediaElement.keyAddedEvent.forElement(this);
  }
  get [dartx.onKeyError]() {
    return html.MediaElement.keyErrorEvent.forElement(this);
  }
  get [dartx.onKeyMessage]() {
    return html.MediaElement.keyMessageEvent.forElement(this);
  }
  get [dartx.onNeedKey]() {
    return html.MediaElement.needKeyEvent.forElement(this);
  }
};
dart.defineNamedConstructor(html.MediaElement, 'created');
dart.setSignature(html.MediaElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MediaElement, []),
    created: dart.definiteFunctionType(html.MediaElement, [])
  }),
  fields: () => ({
    [dartx.audioTracks]: html.AudioTrackList,
    [dartx.autoplay]: core.bool,
    [dartx.buffered]: html.TimeRanges,
    [dartx.controller]: html.MediaController,
    [dartx.controls]: core.bool,
    [dartx.crossOrigin]: core.String,
    [dartx.currentSrc]: core.String,
    [dartx.currentTime]: core.num,
    [dartx.defaultMuted]: core.bool,
    [dartx.defaultPlaybackRate]: core.num,
    [dartx.duration]: core.double,
    [dartx.ended]: core.bool,
    [dartx.error]: html.MediaError,
    [dartx.loop]: core.bool,
    [dartx.mediaGroup]: core.String,
    [dartx.mediaKeys]: html.MediaKeys,
    [dartx.muted]: core.bool,
    [dartx.networkState]: core.int,
    [dartx.paused]: core.bool,
    [dartx.playbackRate]: core.num,
    [dartx.played]: html.TimeRanges,
    [dartx.preload]: core.String,
    [dartx.readyState]: core.int,
    [dartx.seekable]: html.TimeRanges,
    [dartx.seeking]: core.bool,
    [dartx.session]: html.MediaSession,
    [dartx.sinkId]: core.String,
    [dartx.src]: core.String,
    [dartx.textTracks]: html.TextTrackList,
    [dartx.videoTracks]: html.VideoTrackList,
    [dartx.volume]: core.num,
    [dartx.audioDecodedByteCount]: core.int,
    [dartx.videoDecodedByteCount]: core.int
  }),
  getters: () => ({
    [dartx.onKeyAdded]: dart.definiteFunctionType(html.ElementStream$(html.MediaKeyEvent), []),
    [dartx.onKeyError]: dart.definiteFunctionType(html.ElementStream$(html.MediaKeyEvent), []),
    [dartx.onKeyMessage]: dart.definiteFunctionType(html.ElementStream$(html.MediaKeyEvent), []),
    [dartx.onNeedKey]: dart.definiteFunctionType(html.ElementStream$(html.MediaKeyEvent), [])
  }),
  methods: () => ({
    [dartx.addTextTrack]: dart.definiteFunctionType(html.TextTrack, [core.String], [core.String, core.String]),
    [dartx.canPlayType]: dart.definiteFunctionType(core.String, [core.String], [core.String]),
    [dartx.load]: dart.definiteFunctionType(dart.void, []),
    [dartx.pause]: dart.definiteFunctionType(dart.void, []),
    [dartx.play]: dart.definiteFunctionType(dart.void, []),
    [dartx.setMediaKeys]: dart.definiteFunctionType(async.Future, [html.MediaKeys]),
    [dartx.setSinkId]: dart.definiteFunctionType(async.Future, [core.String]),
    [dartx.addKey]: dart.definiteFunctionType(dart.void, [core.String, typed_data.Uint8List], [typed_data.Uint8List, core.String]),
    [dartx.cancelKeyRequest]: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    [dartx.generateKeyRequest]: dart.definiteFunctionType(dart.void, [core.String], [typed_data.Uint8List])
  }),
  sfields: () => ({
    keyAddedEvent: EventStreamProviderOfMediaKeyEvent(),
    keyErrorEvent: EventStreamProviderOfMediaKeyEvent(),
    keyMessageEvent: EventStreamProviderOfMediaKeyEvent(),
    needKeyEvent: EventStreamProviderOfMediaKeyEvent(),
    HAVE_CURRENT_DATA: core.int,
    HAVE_ENOUGH_DATA: core.int,
    HAVE_FUTURE_DATA: core.int,
    HAVE_METADATA: core.int,
    HAVE_NOTHING: core.int,
    NETWORK_EMPTY: core.int,
    NETWORK_IDLE: core.int,
    NETWORK_LOADING: core.int,
    NETWORK_NO_SOURCE: core.int
  })
});
html.MediaElement.HAVE_CURRENT_DATA = 2;
html.MediaElement.HAVE_ENOUGH_DATA = 4;
html.MediaElement.HAVE_FUTURE_DATA = 3;
html.MediaElement.HAVE_METADATA = 1;
html.MediaElement.HAVE_NOTHING = 0;
html.MediaElement.NETWORK_EMPTY = 0;
html.MediaElement.NETWORK_IDLE = 1;
html.MediaElement.NETWORK_LOADING = 2;
html.MediaElement.NETWORK_NO_SOURCE = 3;
dart.defineLazy(html.MediaElement, {
  get keyAddedEvent() {
    return dart.const(new (EventStreamProviderOfMediaKeyEvent())('webkitkeyadded'));
  },
  get keyErrorEvent() {
    return dart.const(new (EventStreamProviderOfMediaKeyEvent())('webkitkeyerror'));
  },
  get keyMessageEvent() {
    return dart.const(new (EventStreamProviderOfMediaKeyEvent())('webkitkeymessage'));
  },
  get needKeyEvent() {
    return dart.const(new (EventStreamProviderOfMediaKeyEvent())('webkitneedkey'));
  }
});
dart.registerExtension(dart.global.HTMLMediaElement, html.MediaElement);
html.AudioElement = class AudioElement extends html.MediaElement {
  static _(src) {
    if (src === void 0) src = null;
    if (src != null) {
      return html.AudioElement._create_1(src);
    }
    return html.AudioElement._create_2();
  }
  static _create_1(src) {
    return new Audio(src);
  }
  static _create_2() {
    return new Audio();
  }
  created() {
    super.created();
  }
  static new(src) {
    if (src === void 0) src = null;
    return html.AudioElement._(src);
  }
};
dart.defineNamedConstructor(html.AudioElement, 'created');
dart.setSignature(html.AudioElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.AudioElement, [], [core.String]),
    created: dart.definiteFunctionType(html.AudioElement, []),
    new: dart.definiteFunctionType(html.AudioElement, [], [core.String])
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.AudioElement, [dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.AudioElement, [])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.HTMLAudioElement, html.AudioElement);
dart.defineExtensionNames([
  'enabled',
  'id',
  'kind',
  'label',
  'language'
]);
html.AudioTrack = class AudioTrack extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.enabled]() {
    return this.enabled;
  }
  set [dartx.enabled](value) {
    this.enabled = value;
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.kind]() {
    return this.kind;
  }
  get [dartx.label]() {
    return this.label;
  }
  get [dartx.language]() {
    return this.language;
  }
};
dart.setSignature(html.AudioTrack, {
  constructors: () => ({_: dart.definiteFunctionType(html.AudioTrack, [])}),
  fields: () => ({
    [dartx.enabled]: core.bool,
    [dartx.id]: core.String,
    [dartx.kind]: core.String,
    [dartx.label]: core.String,
    [dartx.language]: core.String
  })
});
dart.registerExtension(dart.global.AudioTrack, html.AudioTrack);
const __getter__ = Symbol('__getter__');
dart.defineExtensionNames([
  'getTrackById',
  'onChange',
  'length'
]);
html.AudioTrackList = class AudioTrackList extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [dartx.getTrackById](...args) {
    return this.getTrackById.apply(this, args);
  }
  get [dartx.onChange]() {
    return html.AudioTrackList.changeEvent.forTarget(this);
  }
};
dart.setSignature(html.AudioTrackList, {
  constructors: () => ({_: dart.definiteFunctionType(html.AudioTrackList, [])}),
  fields: () => ({[dartx.length]: core.int}),
  getters: () => ({[dartx.onChange]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  methods: () => ({
    [__getter__]: dart.definiteFunctionType(html.AudioTrack, [core.int]),
    [dartx.getTrackById]: dart.definiteFunctionType(html.AudioTrack, [core.String])
  }),
  sfields: () => ({changeEvent: EventStreamProviderOfEvent()})
});
dart.defineLazy(html.AudioTrackList, {
  get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('change'));
  }
});
dart.registerExtension(dart.global.AudioTrackList, html.AudioTrackList);
dart.defineExtensionNames([
  'reason'
]);
html.AutocompleteErrorEvent = class AutocompleteErrorEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.AutocompleteErrorEvent._create_1(type, eventInitDict_1);
    }
    return html.AutocompleteErrorEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new AutocompleteErrorEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new AutocompleteErrorEvent(type);
  }
  get [dartx.reason]() {
    return this.reason;
  }
};
dart.setSignature(html.AutocompleteErrorEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.AutocompleteErrorEvent, []),
    new: dart.definiteFunctionType(html.AutocompleteErrorEvent, [core.String], [core.Map])
  }),
  fields: () => ({[dartx.reason]: core.String}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.AutocompleteErrorEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.AutocompleteErrorEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.AutocompleteErrorEvent, html.AutocompleteErrorEvent);
html.BRElement = class BRElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.BRElement._check(html.document[dartx.createElement]("br"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.BRElement, 'created');
dart.setSignature(html.BRElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.BRElement, []),
    new: dart.definiteFunctionType(html.BRElement, []),
    created: dart.definiteFunctionType(html.BRElement, [])
  })
});
dart.registerExtension(dart.global.HTMLBRElement, html.BRElement);
dart.defineExtensionNames([
  'visible'
]);
html.BarProp = class BarProp extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.visible]() {
    return this.visible;
  }
};
dart.setSignature(html.BarProp, {
  constructors: () => ({_: dart.definiteFunctionType(html.BarProp, [])}),
  fields: () => ({[dartx.visible]: core.bool})
});
dart.registerExtension(dart.global.BarProp, html.BarProp);
dart.defineExtensionNames([
  'href',
  'target'
]);
html.BaseElement = class BaseElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.BaseElement._check(html.document[dartx.createElement]("base"));
  }
  created() {
    this[dartx.href] = null;
    this[dartx.target] = null;
    super.created();
  }
  get [dartx.href]() {
    return this.href;
  }
  set [dartx.href](value) {
    this.href = value;
  }
  get [dartx.target]() {
    return this.target;
  }
  set [dartx.target](value) {
    this.target = value;
  }
};
dart.defineNamedConstructor(html.BaseElement, 'created');
dart.setSignature(html.BaseElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.BaseElement, []),
    new: dart.definiteFunctionType(html.BaseElement, []),
    created: dart.definiteFunctionType(html.BaseElement, [])
  }),
  fields: () => ({
    [dartx.href]: core.String,
    [dartx.target]: core.String
  })
});
dart.registerExtension(dart.global.HTMLBaseElement, html.BaseElement);
dart.defineExtensionNames([
  'charging',
  'chargingTime',
  'dischargingTime',
  'level'
]);
html.BatteryManager = class BatteryManager extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.charging]() {
    return this.charging;
  }
  get [dartx.chargingTime]() {
    return this.chargingTime;
  }
  get [dartx.dischargingTime]() {
    return this.dischargingTime;
  }
  get [dartx.level]() {
    return this.level;
  }
};
dart.setSignature(html.BatteryManager, {
  constructors: () => ({_: dart.definiteFunctionType(html.BatteryManager, [])}),
  fields: () => ({
    [dartx.charging]: core.bool,
    [dartx.chargingTime]: core.double,
    [dartx.dischargingTime]: core.double,
    [dartx.level]: core.double
  })
});
dart.registerExtension(dart.global.BatteryManager, html.BatteryManager);
dart.defineExtensionNames([
  'platforms',
  'prompt',
  'userChoice'
]);
html.BeforeInstallPromptEvent = class BeforeInstallPromptEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.BeforeInstallPromptEvent._create_1(type, eventInitDict_1);
    }
    return html.BeforeInstallPromptEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new BeforeInstallPromptEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new BeforeInstallPromptEvent(type);
  }
  get [dartx.platforms]() {
    return this.platforms;
  }
  get [dartx.userChoice]() {
    return this.userChoice;
  }
  [dartx.prompt](...args) {
    return this.prompt.apply(this, args);
  }
};
dart.setSignature(html.BeforeInstallPromptEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.BeforeInstallPromptEvent, []),
    new: dart.definiteFunctionType(html.BeforeInstallPromptEvent, [core.String], [core.Map])
  }),
  fields: () => ({[dartx.userChoice]: async.Future}),
  getters: () => ({[dartx.platforms]: dart.definiteFunctionType(core.List$(core.String), [])}),
  methods: () => ({[dartx.prompt]: dart.definiteFunctionType(async.Future, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.BeforeInstallPromptEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.BeforeInstallPromptEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.BeforeInstallPromptEvent, html.BeforeInstallPromptEvent);
dart.defineExtensionNames([
  'returnValue',
  'returnValue'
]);
html.BeforeUnloadEvent = class BeforeUnloadEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.returnValue]() {
    return this.returnValue;
  }
  set [dartx.returnValue](value) {
    this.returnValue = value;
  }
};
dart.setSignature(html.BeforeUnloadEvent, {
  constructors: () => ({_: dart.definiteFunctionType(html.BeforeUnloadEvent, [])}),
  getters: () => ({[dartx.returnValue]: dart.definiteFunctionType(core.String, [])}),
  setters: () => ({[dartx.returnValue]: dart.definiteFunctionType(dart.void, [core.String])})
});
dart.registerExtension(dart.global.BeforeUnloadEvent, html.BeforeUnloadEvent);
dart.defineExtensionNames([
  'close',
  'slice',
  'size',
  'type'
]);
html.Blob = class Blob extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.size]() {
    return this.size;
  }
  get [dartx.type]() {
    return this.type;
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [dartx.slice](...args) {
    return this.slice.apply(this, args);
  }
  static new(blobParts, type, endings) {
    if (type === void 0) type = null;
    if (endings === void 0) endings = null;
    if (type == null && endings == null) {
      return html.Blob._check(html.Blob._create_1(blobParts));
    }
    let bag = html.Blob._create_bag();
    if (type != null) html.Blob._bag_set(bag, 'type', type);
    if (endings != null) html.Blob._bag_set(bag, 'endings', endings);
    return html.Blob._check(html.Blob._create_2(blobParts, bag));
  }
  static _create_1(parts) {
    return new Blob(parts);
  }
  static _create_2(parts, bag) {
    return new Blob(parts, bag);
  }
  static _create_bag() {
    return {};
  }
  static _bag_set(bag, key, value) {
    bag[key] = value;
  }
};
dart.setSignature(html.Blob, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.Blob, []),
    new: dart.definiteFunctionType(html.Blob, [core.List], [core.String, core.String])
  }),
  fields: () => ({
    [dartx.size]: core.int,
    [dartx.type]: core.String
  }),
  methods: () => ({
    [dartx.close]: dart.definiteFunctionType(dart.void, []),
    [dartx.slice]: dart.definiteFunctionType(html.Blob, [], [core.int, core.int, core.String])
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    _create_2: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic]),
    _create_bag: dart.definiteFunctionType(dart.dynamic, []),
    _bag_set: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create_1', '_create_2', '_create_bag', '_bag_set']
});
dart.registerExtension(dart.global.Blob, html.Blob);
const _requestDevice_1 = Symbol('_requestDevice_1');
dart.defineExtensionNames([
  'requestDevice'
]);
html.Bluetooth = class Bluetooth extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.requestDevice](options) {
    let options_1 = html_common.convertDartToNative_Dictionary(options);
    return this[_requestDevice_1](options_1);
  }
  [_requestDevice_1](...args) {
    return this.requestDevice.apply(this, args);
  }
};
dart.setSignature(html.Bluetooth, {
  constructors: () => ({_: dart.definiteFunctionType(html.Bluetooth, [])}),
  methods: () => ({
    [dartx.requestDevice]: dart.definiteFunctionType(async.Future, [core.Map]),
    [_requestDevice_1]: dart.definiteFunctionType(async.Future, [dart.dynamic])
  })
});
dart.registerExtension(dart.global.Bluetooth, html.Bluetooth);
dart.defineExtensionNames([
  'connectGatt',
  'deviceClass',
  'instanceID',
  'name',
  'paired',
  'productID',
  'productVersion',
  'vendorID',
  'vendorIDSource'
]);
html.BluetoothDevice = class BluetoothDevice extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.deviceClass]() {
    return this.deviceClass;
  }
  get [dartx.instanceID]() {
    return this.instanceID;
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.paired]() {
    return this.paired;
  }
  get [dartx.productID]() {
    return this.productID;
  }
  get [dartx.productVersion]() {
    return this.productVersion;
  }
  get [dartx.vendorID]() {
    return this.vendorID;
  }
  get [dartx.vendorIDSource]() {
    return this.vendorIDSource;
  }
  [dartx.connectGatt](...args) {
    return this.connectGATT.apply(this, args);
  }
};
dart.setSignature(html.BluetoothDevice, {
  constructors: () => ({_: dart.definiteFunctionType(html.BluetoothDevice, [])}),
  fields: () => ({
    [dartx.deviceClass]: core.int,
    [dartx.instanceID]: core.String,
    [dartx.name]: core.String,
    [dartx.paired]: core.bool,
    [dartx.productID]: core.int,
    [dartx.productVersion]: core.int,
    [dartx.vendorID]: core.int,
    [dartx.vendorIDSource]: core.String
  }),
  methods: () => ({[dartx.connectGatt]: dart.definiteFunctionType(async.Future, [])})
});
dart.registerExtension(dart.global.BluetoothDevice, html.BluetoothDevice);
dart.defineExtensionNames([
  'readValue',
  'writeValue',
  'uuid'
]);
html.BluetoothGattCharacteristic = class BluetoothGattCharacteristic extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.uuid]() {
    return this.uuid;
  }
  [dartx.readValue](...args) {
    return this.readValue.apply(this, args);
  }
  [dartx.writeValue](...args) {
    return this.writeValue.apply(this, args);
  }
};
dart.setSignature(html.BluetoothGattCharacteristic, {
  constructors: () => ({_: dart.definiteFunctionType(html.BluetoothGattCharacteristic, [])}),
  fields: () => ({[dartx.uuid]: core.String}),
  methods: () => ({
    [dartx.readValue]: dart.definiteFunctionType(async.Future, []),
    [dartx.writeValue]: dart.definiteFunctionType(async.Future, [dart.dynamic])
  })
});
dart.registerExtension(dart.global.BluetoothGATTCharacteristic, html.BluetoothGattCharacteristic);
dart.defineExtensionNames([
  'getPrimaryService',
  'connected'
]);
html.BluetoothGattRemoteServer = class BluetoothGattRemoteServer extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.connected]() {
    return this.connected;
  }
  [dartx.getPrimaryService](...args) {
    return this.getPrimaryService.apply(this, args);
  }
};
dart.setSignature(html.BluetoothGattRemoteServer, {
  constructors: () => ({_: dart.definiteFunctionType(html.BluetoothGattRemoteServer, [])}),
  fields: () => ({[dartx.connected]: core.bool}),
  methods: () => ({[dartx.getPrimaryService]: dart.definiteFunctionType(async.Future, [dart.dynamic])})
});
dart.registerExtension(dart.global.BluetoothGATTRemoteServer, html.BluetoothGattRemoteServer);
dart.defineExtensionNames([
  'getCharacteristic',
  'isPrimary',
  'uuid'
]);
html.BluetoothGattService = class BluetoothGattService extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.isPrimary]() {
    return this.isPrimary;
  }
  get [dartx.uuid]() {
    return this.uuid;
  }
  [dartx.getCharacteristic](...args) {
    return this.getCharacteristic.apply(this, args);
  }
};
dart.setSignature(html.BluetoothGattService, {
  constructors: () => ({_: dart.definiteFunctionType(html.BluetoothGattService, [])}),
  fields: () => ({
    [dartx.isPrimary]: core.bool,
    [dartx.uuid]: core.String
  }),
  methods: () => ({[dartx.getCharacteristic]: dart.definiteFunctionType(async.Future, [dart.dynamic])})
});
dart.registerExtension(dart.global.BluetoothGATTService, html.BluetoothGattService);
html.BluetoothUuid = class BluetoothUuid extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.BluetoothUuid, {
  constructors: () => ({_: dart.definiteFunctionType(html.BluetoothUuid, [])}),
  statics: () => ({
    canonicalUuid: dart.definiteFunctionType(core.String, [core.int]),
    getCharacteristic: dart.definiteFunctionType(core.String, [core.Object]),
    getDescriptor: dart.definiteFunctionType(core.String, [core.Object]),
    getService: dart.definiteFunctionType(core.String, [core.Object])
  }),
  names: ['canonicalUuid', 'getCharacteristic', 'getDescriptor', 'getService']
});
dart.registerExtension(dart.global.BluetoothUUID, html.BluetoothUuid);
dart.defineExtensionNames([
  'arrayBuffer',
  'blob',
  'json',
  'text',
  'bodyUsed'
]);
html.Body = class Body extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.bodyUsed]() {
    return this.bodyUsed;
  }
  [dartx.arrayBuffer](...args) {
    return this.arrayBuffer.apply(this, args);
  }
  [dartx.blob](...args) {
    return this.blob.apply(this, args);
  }
  [dartx.json](...args) {
    return this.json.apply(this, args);
  }
  [dartx.text](...args) {
    return this.text.apply(this, args);
  }
};
dart.setSignature(html.Body, {
  constructors: () => ({_: dart.definiteFunctionType(html.Body, [])}),
  fields: () => ({[dartx.bodyUsed]: core.bool}),
  methods: () => ({
    [dartx.arrayBuffer]: dart.definiteFunctionType(async.Future, []),
    [dartx.blob]: dart.definiteFunctionType(async.Future, []),
    [dartx.json]: dart.definiteFunctionType(async.Future, []),
    [dartx.text]: dart.definiteFunctionType(async.Future, [])
  })
});
dart.registerExtension(dart.global.Body, html.Body);
dart.defineExtensionNames([
  'onBlur',
  'onError',
  'onFocus',
  'onHashChange',
  'onLoad',
  'onMessage',
  'onOffline',
  'onOnline',
  'onPopState',
  'onResize',
  'onScroll',
  'onStorage',
  'onUnload'
]);
html.BodyElement = class BodyElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.BodyElement._check(html.document[dartx.createElement]("body"));
  }
  created() {
    super.created();
  }
  get [dartx.onBlur]() {
    return html.BodyElement.blurEvent.forElement(this);
  }
  get [dartx.onError]() {
    return html.BodyElement.errorEvent.forElement(this);
  }
  get [dartx.onFocus]() {
    return html.BodyElement.focusEvent.forElement(this);
  }
  get [dartx.onHashChange]() {
    return html.BodyElement.hashChangeEvent.forElement(this);
  }
  get [dartx.onLoad]() {
    return html.BodyElement.loadEvent.forElement(this);
  }
  get [dartx.onMessage]() {
    return html.BodyElement.messageEvent.forElement(this);
  }
  get [dartx.onOffline]() {
    return html.BodyElement.offlineEvent.forElement(this);
  }
  get [dartx.onOnline]() {
    return html.BodyElement.onlineEvent.forElement(this);
  }
  get [dartx.onPopState]() {
    return html.BodyElement.popStateEvent.forElement(this);
  }
  get [dartx.onResize]() {
    return html.BodyElement.resizeEvent.forElement(this);
  }
  get [dartx.onScroll]() {
    return html.BodyElement.scrollEvent.forElement(this);
  }
  get [dartx.onStorage]() {
    return html.BodyElement.storageEvent.forElement(this);
  }
  get [dartx.onUnload]() {
    return html.BodyElement.unloadEvent.forElement(this);
  }
};
dart.defineNamedConstructor(html.BodyElement, 'created');
html.BodyElement[dart.implements] = () => [html.WindowEventHandlers];
dart.setSignature(html.BodyElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.BodyElement, []),
    new: dart.definiteFunctionType(html.BodyElement, []),
    created: dart.definiteFunctionType(html.BodyElement, [])
  }),
  getters: () => ({
    [dartx.onHashChange]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onMessage]: dart.definiteFunctionType(html.ElementStream$(html.MessageEvent), []),
    [dartx.onOffline]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onOnline]: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
    [dartx.onPopState]: dart.definiteFunctionType(html.ElementStream$(html.PopStateEvent), []),
    [dartx.onStorage]: dart.definiteFunctionType(html.ElementStream$(html.StorageEvent), []),
    [dartx.onUnload]: dart.definiteFunctionType(html.ElementStream$(html.Event), [])
  }),
  sfields: () => ({
    blurEvent: EventStreamProviderOfEvent(),
    errorEvent: EventStreamProviderOfEvent(),
    focusEvent: EventStreamProviderOfEvent(),
    hashChangeEvent: EventStreamProviderOfEvent(),
    loadEvent: EventStreamProviderOfEvent(),
    messageEvent: EventStreamProviderOfMessageEvent(),
    offlineEvent: EventStreamProviderOfEvent(),
    onlineEvent: EventStreamProviderOfEvent(),
    popStateEvent: EventStreamProviderOfPopStateEvent(),
    resizeEvent: EventStreamProviderOfEvent(),
    scrollEvent: EventStreamProviderOfEvent(),
    storageEvent: EventStreamProviderOfStorageEvent(),
    unloadEvent: EventStreamProviderOfEvent()
  })
});
dart.defineLazy(html.BodyElement, {
  get blurEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('blur'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get focusEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('focus'));
  },
  get hashChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('hashchange'));
  },
  get loadEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('load'));
  },
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  },
  get offlineEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('offline'));
  },
  get onlineEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('online'));
  },
  get popStateEvent() {
    return dart.const(new (EventStreamProviderOfPopStateEvent())('popstate'));
  },
  get resizeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('resize'));
  },
  get scrollEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('scroll'));
  },
  get storageEvent() {
    return dart.const(new (EventStreamProviderOfStorageEvent())('storage'));
  },
  get unloadEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('unload'));
  }
});
dart.registerExtension(dart.global.HTMLBodyElement, html.BodyElement);
dart.defineExtensionNames([
  'checkValidity',
  'reportValidity',
  'setCustomValidity',
  'autofocus',
  'disabled',
  'form',
  'formAction',
  'formEnctype',
  'formMethod',
  'formNoValidate',
  'formTarget',
  'labels',
  'name',
  'type',
  'validationMessage',
  'validity',
  'value',
  'willValidate'
]);
html.ButtonElement = class ButtonElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.ButtonElement._check(html.document[dartx.createElement]("button"));
  }
  created() {
    this[dartx.autofocus] = null;
    this[dartx.disabled] = null;
    this[dartx.form] = null;
    this[dartx.formAction] = null;
    this[dartx.formEnctype] = null;
    this[dartx.formMethod] = null;
    this[dartx.formNoValidate] = null;
    this[dartx.formTarget] = null;
    this[dartx.labels] = null;
    this[dartx.name] = null;
    this[dartx.type] = null;
    this[dartx.validationMessage] = null;
    this[dartx.validity] = null;
    this[dartx.value] = null;
    this[dartx.willValidate] = null;
    super.created();
  }
  get [dartx.autofocus]() {
    return this.autofocus;
  }
  set [dartx.autofocus](value) {
    this.autofocus = value;
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.form]() {
    return this.form;
  }
  get [dartx.formAction]() {
    return this.formAction;
  }
  set [dartx.formAction](value) {
    this.formAction = value;
  }
  get [dartx.formEnctype]() {
    return this.formEnctype;
  }
  set [dartx.formEnctype](value) {
    this.formEnctype = value;
  }
  get [dartx.formMethod]() {
    return this.formMethod;
  }
  set [dartx.formMethod](value) {
    this.formMethod = value;
  }
  get [dartx.formNoValidate]() {
    return this.formNoValidate;
  }
  set [dartx.formNoValidate](value) {
    this.formNoValidate = value;
  }
  get [dartx.formTarget]() {
    return this.formTarget;
  }
  set [dartx.formTarget](value) {
    this.formTarget = value;
  }
  get [dartx.labels]() {
    return this.labels;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
  get [dartx.validationMessage]() {
    return this.validationMessage;
  }
  get [dartx.validity]() {
    return this.validity;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
  get [dartx.willValidate]() {
    return this.willValidate;
  }
  [dartx.checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [dartx.reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [dartx.setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
};
dart.defineNamedConstructor(html.ButtonElement, 'created');
dart.setSignature(html.ButtonElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ButtonElement, []),
    new: dart.definiteFunctionType(html.ButtonElement, []),
    created: dart.definiteFunctionType(html.ButtonElement, [])
  }),
  fields: () => ({
    [dartx.autofocus]: core.bool,
    [dartx.disabled]: core.bool,
    [dartx.form]: html.FormElement,
    [dartx.formAction]: core.String,
    [dartx.formEnctype]: core.String,
    [dartx.formMethod]: core.String,
    [dartx.formNoValidate]: core.bool,
    [dartx.formTarget]: core.String,
    [dartx.labels]: ListOfNode(),
    [dartx.name]: core.String,
    [dartx.type]: core.String,
    [dartx.validationMessage]: core.String,
    [dartx.validity]: html.ValidityState,
    [dartx.value]: core.String,
    [dartx.willValidate]: core.bool
  }),
  methods: () => ({
    [dartx.checkValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.reportValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.setCustomValidity]: dart.definiteFunctionType(dart.void, [core.String])
  })
});
dart.registerExtension(dart.global.HTMLButtonElement, html.ButtonElement);
const _createTextNode = Symbol('_createTextNode');
dart.defineExtensionNames([
  'appendData',
  'deleteData',
  'insertData',
  'replaceData',
  'substringData',
  'after',
  'before',
  'data',
  'length',
  'nextElementSibling',
  'previousElementSibling'
]);
html.CharacterData = class CharacterData extends html.Node {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.data]() {
    return this.data;
  }
  set [dartx.data](value) {
    this.data = value;
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx.appendData](...args) {
    return this.appendData.apply(this, args);
  }
  [dartx.deleteData](...args) {
    return this.deleteData.apply(this, args);
  }
  [dartx.insertData](...args) {
    return this.insertData.apply(this, args);
  }
  [dartx.replaceData](...args) {
    return this.replaceData.apply(this, args);
  }
  [dartx.substringData](...args) {
    return this.substringData.apply(this, args);
  }
  [dartx.after](...args) {
    return this.after.apply(this, args);
  }
  [dartx.before](...args) {
    return this.before.apply(this, args);
  }
  get [dartx.nextElementSibling]() {
    return this.nextElementSibling;
  }
  get [dartx.previousElementSibling]() {
    return this.previousElementSibling;
  }
};
html.CharacterData[dart.implements] = () => [html.NonDocumentTypeChildNode, html.ChildNode];
dart.setSignature(html.CharacterData, {
  constructors: () => ({_: dart.definiteFunctionType(html.CharacterData, [])}),
  fields: () => ({
    [dartx.data]: core.String,
    [dartx.length]: core.int,
    [dartx.nextElementSibling]: html.Element,
    [dartx.previousElementSibling]: html.Element
  }),
  methods: () => ({
    [dartx.appendData]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.deleteData]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [dartx.insertData]: dart.definiteFunctionType(dart.void, [core.int, core.String]),
    [dartx.replaceData]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.String]),
    [dartx.substringData]: dart.definiteFunctionType(core.String, [core.int, core.int]),
    [dartx.after]: dart.definiteFunctionType(dart.void, [core.Object]),
    [dartx.before]: dart.definiteFunctionType(dart.void, [core.Object])
  })
});
dart.registerExtension(dart.global.CharacterData, html.CharacterData);
dart.defineExtensionNames([
  'getDestinationInsertionPoints',
  'splitText',
  'wholeText'
]);
html.Text = class Text extends html.CharacterData {
  static new(data) {
    return html.document[_createTextNode](data);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.wholeText]() {
    return this.wholeText;
  }
  [dartx.getDestinationInsertionPoints](...args) {
    return this.getDestinationInsertionPoints.apply(this, args);
  }
  [dartx.splitText](...args) {
    return this.splitText.apply(this, args);
  }
};
dart.setSignature(html.Text, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.Text, [core.String]),
    _: dart.definiteFunctionType(html.Text, [])
  }),
  fields: () => ({[dartx.wholeText]: core.String}),
  methods: () => ({
    [dartx.getDestinationInsertionPoints]: dart.definiteFunctionType(core.List$(html.Node), []),
    [dartx.splitText]: dart.definiteFunctionType(html.Text, [core.int])
  })
});
dart.registerExtension(dart.global.Text, html.Text);
html.CDataSection = class CDataSection extends html.Text {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.CDataSection, {
  constructors: () => ({_: dart.definiteFunctionType(html.CDataSection, [])})
});
dart.registerExtension(dart.global.CDATASection, html.CDataSection);
const _match_1 = Symbol('_match_1');
const _match_2 = Symbol('_match_2');
dart.defineExtensionNames([
  'delete',
  'has',
  'keys',
  'match',
  'open'
]);
html.CacheStorage = class CacheStorage extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.delete](...args) {
    return this.delete.apply(this, args);
  }
  [dartx.has](...args) {
    return this.has.apply(this, args);
  }
  [dartx.keys](...args) {
    return this.keys.apply(this, args);
  }
  [dartx.match](request, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_match_1](request, options_1);
    }
    return this[_match_2](request);
  }
  [_match_1](...args) {
    return this.match.apply(this, args);
  }
  [_match_2](...args) {
    return this.match.apply(this, args);
  }
  [dartx.open](...args) {
    return this.open.apply(this, args);
  }
};
dart.setSignature(html.CacheStorage, {
  constructors: () => ({_: dart.definiteFunctionType(html.CacheStorage, [])}),
  methods: () => ({
    [dartx.delete]: dart.definiteFunctionType(async.Future, [core.String]),
    [dartx.has]: dart.definiteFunctionType(async.Future, [core.String]),
    [dartx.keys]: dart.definiteFunctionType(async.Future, []),
    [dartx.match]: dart.definiteFunctionType(async.Future, [dart.dynamic], [core.Map]),
    [_match_1]: dart.definiteFunctionType(async.Future, [dart.dynamic, dart.dynamic]),
    [_match_2]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [dartx.open]: dart.definiteFunctionType(async.Future, [core.String])
  })
});
dart.registerExtension(dart.global.CacheStorage, html.CacheStorage);
const _getContext_1 = Symbol('_getContext_1');
const _getContext_2 = Symbol('_getContext_2');
const _toDataUrl = Symbol('_toDataUrl');
dart.defineExtensionNames([
  'getContext',
  'onWebGlContextLost',
  'onWebGlContextRestored',
  'context2D',
  'getContext3d',
  'toDataUrl',
  'height',
  'width'
]);
html.CanvasElement = class CanvasElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(opts) {
    let width = opts && 'width' in opts ? opts.width : null;
    let height = opts && 'height' in opts ? opts.height : null;
    let e = html.CanvasElement._check(html.document[dartx.createElement]("canvas"));
    if (width != null) e[dartx.width] = width;
    if (height != null) e[dartx.height] = height;
    return e;
  }
  created() {
    this[dartx.height] = null;
    this[dartx.width] = null;
    super.created();
  }
  get [dartx.height]() {
    return this.height;
  }
  set [dartx.height](value) {
    this.height = value;
  }
  get [dartx.width]() {
    return this.width;
  }
  set [dartx.width](value) {
    this.width = value;
  }
  [dartx.getContext](contextId, attributes) {
    if (attributes === void 0) attributes = null;
    if (attributes != null) {
      let attributes_1 = html_common.convertDartToNative_Dictionary(attributes);
      return this[_getContext_1](contextId, attributes_1);
    }
    return this[_getContext_2](contextId);
  }
  [_getContext_1](...args) {
    return this.getContext.apply(this, args);
  }
  [_getContext_2](...args) {
    return this.getContext.apply(this, args);
  }
  [_toDataUrl](...args) {
    return this.toDataURL.apply(this, args);
  }
  get [dartx.onWebGlContextLost]() {
    return html.CanvasElement.webGlContextLostEvent.forElement(this);
  }
  get [dartx.onWebGlContextRestored]() {
    return html.CanvasElement.webGlContextRestoredEvent.forElement(this);
  }
  get [dartx.context2D]() {
    return this.getContext('2d');
  }
  [dartx.getContext3d](opts) {
    let alpha = opts && 'alpha' in opts ? opts.alpha : true;
    let depth = opts && 'depth' in opts ? opts.depth : true;
    let stencil = opts && 'stencil' in opts ? opts.stencil : false;
    let antialias = opts && 'antialias' in opts ? opts.antialias : true;
    let premultipliedAlpha = opts && 'premultipliedAlpha' in opts ? opts.premultipliedAlpha : true;
    let preserveDrawingBuffer = opts && 'preserveDrawingBuffer' in opts ? opts.preserveDrawingBuffer : false;
    let options = dart.map({alpha: alpha, depth: depth, stencil: stencil, antialias: antialias, premultipliedAlpha: premultipliedAlpha, preserveDrawingBuffer: preserveDrawingBuffer}, core.String, dart.dynamic);
    let context = this[dartx.getContext]('webgl', options);
    if (context == null) {
      context = this[dartx.getContext]('experimental-webgl', options);
    }
    return web_gl.RenderingContext._check(context);
  }
  [dartx.toDataUrl](type, quality) {
    if (type === void 0) type = 'image/png';
    if (quality === void 0) quality = null;
    return this[_toDataUrl](type, quality);
  }
};
dart.defineNamedConstructor(html.CanvasElement, 'created');
html.CanvasElement[dart.implements] = () => [html.CanvasImageSource];
dart.setSignature(html.CanvasElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.CanvasElement, []),
    new: dart.definiteFunctionType(html.CanvasElement, [], {width: core.int, height: core.int}),
    created: dart.definiteFunctionType(html.CanvasElement, [])
  }),
  fields: () => ({
    [dartx.height]: core.int,
    [dartx.width]: core.int
  }),
  getters: () => ({
    [dartx.onWebGlContextLost]: dart.definiteFunctionType(html.ElementStream$(web_gl.ContextEvent), []),
    [dartx.onWebGlContextRestored]: dart.definiteFunctionType(html.ElementStream$(web_gl.ContextEvent), []),
    [dartx.context2D]: dart.definiteFunctionType(html.CanvasRenderingContext2D, [])
  }),
  methods: () => ({
    [dartx.getContext]: dart.definiteFunctionType(core.Object, [core.String], [core.Map]),
    [_getContext_1]: dart.definiteFunctionType(core.Object, [dart.dynamic, dart.dynamic]),
    [_getContext_2]: dart.definiteFunctionType(core.Object, [dart.dynamic]),
    [_toDataUrl]: dart.definiteFunctionType(core.String, [core.String], [dart.dynamic]),
    [dartx.getContext3d]: dart.definiteFunctionType(web_gl.RenderingContext, [], {alpha: dart.dynamic, depth: dart.dynamic, stencil: dart.dynamic, antialias: dart.dynamic, premultipliedAlpha: dart.dynamic, preserveDrawingBuffer: dart.dynamic}),
    [dartx.toDataUrl]: dart.definiteFunctionType(core.String, [], [core.String, core.num])
  }),
  sfields: () => ({
    webGlContextLostEvent: EventStreamProviderOfContextEvent(),
    webGlContextRestoredEvent: EventStreamProviderOfContextEvent()
  })
});
dart.defineLazy(html.CanvasElement, {
  get webGlContextLostEvent() {
    return dart.const(new (EventStreamProviderOfContextEvent())('webglcontextlost'));
  },
  get webGlContextRestoredEvent() {
    return dart.const(new (EventStreamProviderOfContextEvent())('webglcontextrestored'));
  }
});
dart.registerExtension(dart.global.HTMLCanvasElement, html.CanvasElement);
dart.defineExtensionNames([
  'addColorStop'
]);
html.CanvasGradient = class CanvasGradient extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.addColorStop](...args) {
    return this.addColorStop.apply(this, args);
  }
};
dart.setSignature(html.CanvasGradient, {
  constructors: () => ({_: dart.definiteFunctionType(html.CanvasGradient, [])}),
  methods: () => ({[dartx.addColorStop]: dart.definiteFunctionType(dart.void, [core.num, core.String])})
});
dart.registerExtension(dart.global.CanvasGradient, html.CanvasGradient);
dart.defineExtensionNames([
  'setTransform'
]);
html.CanvasPattern = class CanvasPattern extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.setTransform](...args) {
    return this.setTransform.apply(this, args);
  }
};
dart.setSignature(html.CanvasPattern, {
  constructors: () => ({_: dart.definiteFunctionType(html.CanvasPattern, [])}),
  methods: () => ({[dartx.setTransform]: dart.definiteFunctionType(dart.void, [svg.Matrix])})
});
dart.registerExtension(dart.global.CanvasPattern, html.CanvasPattern);
html.CanvasRenderingContext = class CanvasRenderingContext extends core.Object {};
const _addHitRegion_1 = Symbol('_addHitRegion_1');
const _addHitRegion_2 = Symbol('_addHitRegion_2');
const _createImageData_1 = Symbol('_createImageData_1');
const _createImageData_2 = Symbol('_createImageData_2');
const _getContextAttributes_1 = Symbol('_getContextAttributes_1');
const _getImageData_1 = Symbol('_getImageData_1');
const _getLineDash = Symbol('_getLineDash');
const _putImageData_1 = Symbol('_putImageData_1');
const _putImageData_2 = Symbol('_putImageData_2');
const _arc = Symbol('_arc');
dart.defineExtensionNames([
  'addHitRegion',
  'beginPath',
  'clearHitRegions',
  'clearRect',
  'clip',
  'createImageData',
  'createLinearGradient',
  'createPattern',
  'createRadialGradient',
  'drawFocusIfNeeded',
  'fillRect',
  'getContextAttributes',
  'getImageData',
  'isContextLost',
  'isPointInPath',
  'isPointInStroke',
  'measureText',
  'putImageData',
  'removeHitRegion',
  'resetTransform',
  'restore',
  'rotate',
  'save',
  'scale',
  'scrollPathIntoView',
  'setTransform',
  'stroke',
  'strokeRect',
  'strokeText',
  'transform',
  'translate',
  'arcTo',
  'bezierCurveTo',
  'closePath',
  'ellipse',
  'lineTo',
  'moveTo',
  'quadraticCurveTo',
  'rect',
  'createImageDataFromImageData',
  'setFillColorRgb',
  'setFillColorHsl',
  'setStrokeColorRgb',
  'setStrokeColorHsl',
  'arc',
  'createPatternFromImage',
  'drawImageToRect',
  'drawImage',
  'drawImageScaled',
  'drawImageScaledFromSource',
  'lineDashOffset',
  'lineDashOffset',
  'getLineDash',
  'setLineDash',
  'fillText',
  'fill',
  'backingStorePixelRatio',
  'canvas',
  'currentTransform',
  'direction',
  'fillStyle',
  'filter',
  'font',
  'globalAlpha',
  'globalCompositeOperation',
  'imageSmoothingEnabled',
  'lineCap',
  'lineJoin',
  'lineWidth',
  'miterLimit',
  'shadowBlur',
  'shadowColor',
  'shadowOffsetX',
  'shadowOffsetY',
  'strokeStyle',
  'textAlign',
  'textBaseline'
]);
html.CanvasRenderingContext2D = class CanvasRenderingContext2D extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.canvas]() {
    return this.canvas;
  }
  get [dartx.currentTransform]() {
    return this.currentTransform;
  }
  set [dartx.currentTransform](value) {
    this.currentTransform = value;
  }
  get [dartx.direction]() {
    return this.direction;
  }
  set [dartx.direction](value) {
    this.direction = value;
  }
  get [dartx.fillStyle]() {
    return this.fillStyle;
  }
  set [dartx.fillStyle](value) {
    this.fillStyle = value;
  }
  get [dartx.filter]() {
    return this.filter;
  }
  set [dartx.filter](value) {
    this.filter = value;
  }
  get [dartx.font]() {
    return this.font;
  }
  set [dartx.font](value) {
    this.font = value;
  }
  get [dartx.globalAlpha]() {
    return this.globalAlpha;
  }
  set [dartx.globalAlpha](value) {
    this.globalAlpha = value;
  }
  get [dartx.globalCompositeOperation]() {
    return this.globalCompositeOperation;
  }
  set [dartx.globalCompositeOperation](value) {
    this.globalCompositeOperation = value;
  }
  get [dartx.imageSmoothingEnabled]() {
    return this.imageSmoothingEnabled;
  }
  set [dartx.imageSmoothingEnabled](value) {
    this.imageSmoothingEnabled = value;
  }
  get [dartx.lineCap]() {
    return this.lineCap;
  }
  set [dartx.lineCap](value) {
    this.lineCap = value;
  }
  get [dartx.lineJoin]() {
    return this.lineJoin;
  }
  set [dartx.lineJoin](value) {
    this.lineJoin = value;
  }
  get [dartx.lineWidth]() {
    return this.lineWidth;
  }
  set [dartx.lineWidth](value) {
    this.lineWidth = value;
  }
  get [dartx.miterLimit]() {
    return this.miterLimit;
  }
  set [dartx.miterLimit](value) {
    this.miterLimit = value;
  }
  get [dartx.shadowBlur]() {
    return this.shadowBlur;
  }
  set [dartx.shadowBlur](value) {
    this.shadowBlur = value;
  }
  get [dartx.shadowColor]() {
    return this.shadowColor;
  }
  set [dartx.shadowColor](value) {
    this.shadowColor = value;
  }
  get [dartx.shadowOffsetX]() {
    return this.shadowOffsetX;
  }
  set [dartx.shadowOffsetX](value) {
    this.shadowOffsetX = value;
  }
  get [dartx.shadowOffsetY]() {
    return this.shadowOffsetY;
  }
  set [dartx.shadowOffsetY](value) {
    this.shadowOffsetY = value;
  }
  get [dartx.strokeStyle]() {
    return this.strokeStyle;
  }
  set [dartx.strokeStyle](value) {
    this.strokeStyle = value;
  }
  get [dartx.textAlign]() {
    return this.textAlign;
  }
  set [dartx.textAlign](value) {
    this.textAlign = value;
  }
  get [dartx.textBaseline]() {
    return this.textBaseline;
  }
  set [dartx.textBaseline](value) {
    this.textBaseline = value;
  }
  [dartx.addHitRegion](options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[_addHitRegion_1](options_1);
      return;
    }
    this[_addHitRegion_2]();
    return;
  }
  [_addHitRegion_1](...args) {
    return this.addHitRegion.apply(this, args);
  }
  [_addHitRegion_2](...args) {
    return this.addHitRegion.apply(this, args);
  }
  [dartx.beginPath](...args) {
    return this.beginPath.apply(this, args);
  }
  [dartx.clearHitRegions](...args) {
    return this.clearHitRegions.apply(this, args);
  }
  [dartx.clearRect](...args) {
    return this.clearRect.apply(this, args);
  }
  [dartx.clip](...args) {
    return this.clip.apply(this, args);
  }
  [dartx.createImageData](imagedata_OR_sw, sh) {
    if (sh === void 0) sh = null;
    if (html.ImageData.is(imagedata_OR_sw) && sh == null) {
      let imagedata_1 = html_common.convertDartToNative_ImageData(imagedata_OR_sw);
      return html_common.convertNativeToDart_ImageData(this[_createImageData_1](imagedata_1));
    }
    if (sh != null && typeof imagedata_OR_sw == 'number') {
      return html_common.convertNativeToDart_ImageData(this[_createImageData_2](imagedata_OR_sw, sh));
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  [_createImageData_1](...args) {
    return this.createImageData.apply(this, args);
  }
  [_createImageData_2](...args) {
    return this.createImageData.apply(this, args);
  }
  [dartx.createLinearGradient](...args) {
    return this.createLinearGradient.apply(this, args);
  }
  [dartx.createPattern](...args) {
    return this.createPattern.apply(this, args);
  }
  [dartx.createRadialGradient](...args) {
    return this.createRadialGradient.apply(this, args);
  }
  [dartx.drawFocusIfNeeded](...args) {
    return this.drawFocusIfNeeded.apply(this, args);
  }
  [dartx.fillRect](...args) {
    return this.fillRect.apply(this, args);
  }
  [dartx.getContextAttributes]() {
    return html_common.convertNativeToDart_Dictionary(this[_getContextAttributes_1]());
  }
  [_getContextAttributes_1](...args) {
    return this.getContextAttributes.apply(this, args);
  }
  [dartx.getImageData](sx, sy, sw, sh) {
    return html_common.convertNativeToDart_ImageData(this[_getImageData_1](sx, sy, sw, sh));
  }
  [_getImageData_1](...args) {
    return this.getImageData.apply(this, args);
  }
  [_getLineDash](...args) {
    return this.getLineDash.apply(this, args);
  }
  [dartx.isContextLost](...args) {
    return this.isContextLost.apply(this, args);
  }
  [dartx.isPointInPath](...args) {
    return this.isPointInPath.apply(this, args);
  }
  [dartx.isPointInStroke](...args) {
    return this.isPointInStroke.apply(this, args);
  }
  [dartx.measureText](...args) {
    return this.measureText.apply(this, args);
  }
  [dartx.putImageData](imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) {
    if (dirtyX === void 0) dirtyX = null;
    if (dirtyY === void 0) dirtyY = null;
    if (dirtyWidth === void 0) dirtyWidth = null;
    if (dirtyHeight === void 0) dirtyHeight = null;
    if (dirtyX == null && dirtyY == null && dirtyWidth == null && dirtyHeight == null) {
      let imagedata_1 = html_common.convertDartToNative_ImageData(imagedata);
      this[_putImageData_1](imagedata_1, dx, dy);
      return;
    }
    if (dirtyHeight != null && dirtyWidth != null && dirtyY != null && dirtyX != null) {
      let imagedata_1 = html_common.convertDartToNative_ImageData(imagedata);
      this[_putImageData_2](imagedata_1, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
      return;
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  [_putImageData_1](...args) {
    return this.putImageData.apply(this, args);
  }
  [_putImageData_2](...args) {
    return this.putImageData.apply(this, args);
  }
  [dartx.removeHitRegion](...args) {
    return this.removeHitRegion.apply(this, args);
  }
  [dartx.resetTransform](...args) {
    return this.resetTransform.apply(this, args);
  }
  [dartx.restore](...args) {
    return this.restore.apply(this, args);
  }
  [dartx.rotate](...args) {
    return this.rotate.apply(this, args);
  }
  [dartx.save](...args) {
    return this.save.apply(this, args);
  }
  [dartx.scale](...args) {
    return this.scale.apply(this, args);
  }
  [dartx.scrollPathIntoView](...args) {
    return this.scrollPathIntoView.apply(this, args);
  }
  [dartx.setTransform](...args) {
    return this.setTransform.apply(this, args);
  }
  [dartx.stroke](...args) {
    return this.stroke.apply(this, args);
  }
  [dartx.strokeRect](...args) {
    return this.strokeRect.apply(this, args);
  }
  [dartx.strokeText](...args) {
    return this.strokeText.apply(this, args);
  }
  [dartx.transform](...args) {
    return this.transform.apply(this, args);
  }
  [dartx.translate](...args) {
    return this.translate.apply(this, args);
  }
  [_arc](...args) {
    return this.arc.apply(this, args);
  }
  [dartx.arcTo](...args) {
    return this.arcTo.apply(this, args);
  }
  [dartx.bezierCurveTo](...args) {
    return this.bezierCurveTo.apply(this, args);
  }
  [dartx.closePath](...args) {
    return this.closePath.apply(this, args);
  }
  [dartx.ellipse](...args) {
    return this.ellipse.apply(this, args);
  }
  [dartx.lineTo](...args) {
    return this.lineTo.apply(this, args);
  }
  [dartx.moveTo](...args) {
    return this.moveTo.apply(this, args);
  }
  [dartx.quadraticCurveTo](...args) {
    return this.quadraticCurveTo.apply(this, args);
  }
  [dartx.rect](...args) {
    return this.rect.apply(this, args);
  }
  [dartx.createImageDataFromImageData](imagedata) {
    return this.createImageData(imagedata);
  }
  [dartx.setFillColorRgb](r, g, b, a) {
    if (a === void 0) a = 1;
    this[dartx.fillStyle] = dart.str`rgba(${r}, ${g}, ${b}, ${a})`;
  }
  [dartx.setFillColorHsl](h, s, l, a) {
    if (a === void 0) a = 1;
    this[dartx.fillStyle] = dart.str`hsla(${h}, ${s}%, ${l}%, ${a})`;
  }
  [dartx.setStrokeColorRgb](r, g, b, a) {
    if (a === void 0) a = 1;
    this[dartx.strokeStyle] = dart.str`rgba(${r}, ${g}, ${b}, ${a})`;
  }
  [dartx.setStrokeColorHsl](h, s, l, a) {
    if (a === void 0) a = 1;
    this[dartx.strokeStyle] = dart.str`hsla(${h}, ${s}%, ${l}%, ${a})`;
  }
  [dartx.arc](x, y, radius, startAngle, endAngle, anticlockwise) {
    if (anticlockwise === void 0) anticlockwise = false;
    this.arc(x, y, radius, startAngle, endAngle, anticlockwise);
  }
  [dartx.createPatternFromImage](image, repetitionType) {
    return this.createPattern(image, repetitionType);
  }
  [dartx.drawImageToRect](source, destRect, opts) {
    let sourceRect = opts && 'sourceRect' in opts ? opts.sourceRect : null;
    if (sourceRect == null) {
      this[dartx.drawImageScaled](source, destRect[dartx.left], destRect[dartx.top], destRect[dartx.width], destRect[dartx.height]);
    } else {
      this[dartx.drawImageScaledFromSource](source, sourceRect[dartx.left], sourceRect[dartx.top], sourceRect[dartx.width], sourceRect[dartx.height], destRect[dartx.left], destRect[dartx.top], destRect[dartx.width], destRect[dartx.height]);
    }
  }
  [dartx.drawImage](...args) {
    return this.drawImage.apply(this, args);
  }
  [dartx.drawImageScaled](...args) {
    return this.drawImage.apply(this, args);
  }
  [dartx.drawImageScaledFromSource](...args) {
    return this.drawImage.apply(this, args);
  }
  get [dartx.lineDashOffset]() {
    return this.lineDashOffset || this.webkitLineDashOffset;
  }
  set [dartx.lineDashOffset](value) {
    typeof this.lineDashOffset != "undefined" ? this.lineDashOffset = value : this.webkitLineDashOffset = value;
  }
  [dartx.getLineDash]() {
    if (!!this.getLineDash) {
      return this.getLineDash();
    } else if (!!this.webkitLineDash) {
      return this.webkitLineDash;
    }
  }
  [dartx.setLineDash](dash) {
    if (!!this.setLineDash) {
      this.setLineDash(dash);
    } else if (!!this.webkitLineDash) {
      this.webkitLineDash = dash;
    }
  }
  [dartx.fillText](text, x, y, maxWidth) {
    if (maxWidth === void 0) maxWidth = null;
    if (maxWidth != null) {
      this.fillText(text, x, y, maxWidth);
    } else {
      this.fillText(text, x, y);
    }
  }
  [dartx.fill](winding) {
    if (winding === void 0) winding = 'nonzero';
    this.fill(winding);
  }
  get [dartx.backingStorePixelRatio]() {
    return 1.0;
  }
};
html.CanvasRenderingContext2D[dart.implements] = () => [html.CanvasRenderingContext];
dart.setSignature(html.CanvasRenderingContext2D, {
  constructors: () => ({_: dart.definiteFunctionType(html.CanvasRenderingContext2D, [])}),
  fields: () => ({
    [dartx.canvas]: html.CanvasElement,
    [dartx.currentTransform]: svg.Matrix,
    [dartx.direction]: core.String,
    [dartx.fillStyle]: core.Object,
    [dartx.filter]: core.String,
    [dartx.font]: core.String,
    [dartx.globalAlpha]: core.num,
    [dartx.globalCompositeOperation]: core.String,
    [dartx.imageSmoothingEnabled]: core.bool,
    [dartx.lineCap]: core.String,
    [dartx.lineJoin]: core.String,
    [dartx.lineWidth]: core.num,
    [dartx.miterLimit]: core.num,
    [dartx.shadowBlur]: core.num,
    [dartx.shadowColor]: core.String,
    [dartx.shadowOffsetX]: core.num,
    [dartx.shadowOffsetY]: core.num,
    [dartx.strokeStyle]: core.Object,
    [dartx.textAlign]: core.String,
    [dartx.textBaseline]: core.String
  }),
  getters: () => ({
    [dartx.lineDashOffset]: dart.definiteFunctionType(core.num, []),
    [dartx.backingStorePixelRatio]: dart.definiteFunctionType(core.double, [])
  }),
  setters: () => ({[dartx.lineDashOffset]: dart.definiteFunctionType(dart.void, [core.num])}),
  methods: () => ({
    [dartx.addHitRegion]: dart.definiteFunctionType(dart.void, [], [core.Map]),
    [_addHitRegion_1]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [_addHitRegion_2]: dart.definiteFunctionType(dart.void, []),
    [dartx.beginPath]: dart.definiteFunctionType(dart.void, []),
    [dartx.clearHitRegions]: dart.definiteFunctionType(dart.void, []),
    [dartx.clearRect]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num]),
    [dartx.clip]: dart.definiteFunctionType(dart.void, [], [dart.dynamic, core.String]),
    [dartx.createImageData]: dart.definiteFunctionType(html.ImageData, [dart.dynamic], [core.num]),
    [_createImageData_1]: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    [_createImageData_2]: dart.definiteFunctionType(dart.dynamic, [core.num, dart.dynamic]),
    [dartx.createLinearGradient]: dart.definiteFunctionType(html.CanvasGradient, [core.num, core.num, core.num, core.num]),
    [dartx.createPattern]: dart.definiteFunctionType(html.CanvasPattern, [core.Object, core.String]),
    [dartx.createRadialGradient]: dart.definiteFunctionType(html.CanvasGradient, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [dartx.drawFocusIfNeeded]: dart.definiteFunctionType(dart.void, [dart.dynamic], [html.Element]),
    [dartx.fillRect]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num]),
    [dartx.getContextAttributes]: dart.definiteFunctionType(core.Map, []),
    [_getContextAttributes_1]: dart.definiteFunctionType(dart.dynamic, []),
    [dartx.getImageData]: dart.definiteFunctionType(html.ImageData, [core.num, core.num, core.num, core.num]),
    [_getImageData_1]: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_getLineDash]: dart.definiteFunctionType(core.List$(core.num), []),
    [dartx.isContextLost]: dart.definiteFunctionType(core.bool, []),
    [dartx.isPointInPath]: dart.definiteFunctionType(core.bool, [dart.dynamic, core.num], [dart.dynamic, core.String]),
    [dartx.isPointInStroke]: dart.definiteFunctionType(core.bool, [dart.dynamic, core.num], [core.num]),
    [dartx.measureText]: dart.definiteFunctionType(html.TextMetrics, [core.String]),
    [dartx.putImageData]: dart.definiteFunctionType(dart.void, [html.ImageData, core.num, core.num], [core.num, core.num, core.num, core.num]),
    [_putImageData_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
    [_putImageData_2]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [dartx.removeHitRegion]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.resetTransform]: dart.definiteFunctionType(dart.void, []),
    [dartx.restore]: dart.definiteFunctionType(dart.void, []),
    [dartx.rotate]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.save]: dart.definiteFunctionType(dart.void, []),
    [dartx.scale]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [dartx.scrollPathIntoView]: dart.definiteFunctionType(dart.void, [], [html.Path2D]),
    [dartx.setTransform]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [dartx.stroke]: dart.definiteFunctionType(dart.void, [], [html.Path2D]),
    [dartx.strokeRect]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num]),
    [dartx.strokeText]: dart.definiteFunctionType(dart.void, [core.String, core.num, core.num], [core.num]),
    [dartx.transform]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [dartx.translate]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [_arc]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.bool]),
    [dartx.arcTo]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num, core.num]),
    [dartx.bezierCurveTo]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [dartx.closePath]: dart.definiteFunctionType(dart.void, []),
    [dartx.ellipse]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.bool]),
    [dartx.lineTo]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [dartx.moveTo]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [dartx.quadraticCurveTo]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num]),
    [dartx.rect]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num]),
    [dartx.createImageDataFromImageData]: dart.definiteFunctionType(html.ImageData, [html.ImageData]),
    [dartx.setFillColorRgb]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int], [core.num]),
    [dartx.setFillColorHsl]: dart.definiteFunctionType(dart.void, [core.int, core.num, core.num], [core.num]),
    [dartx.setStrokeColorRgb]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int], [core.num]),
    [dartx.setStrokeColorHsl]: dart.definiteFunctionType(dart.void, [core.int, core.num, core.num], [core.num]),
    [dartx.arc]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num, core.num], [core.bool]),
    [dartx.createPatternFromImage]: dart.definiteFunctionType(html.CanvasPattern, [html.ImageElement, core.String]),
    [dartx.drawImageToRect]: dart.definiteFunctionType(dart.void, [html.CanvasImageSource, RectangleOfnum()], {sourceRect: RectangleOfnum()}),
    [dartx.drawImage]: dart.definiteFunctionType(dart.void, [html.CanvasImageSource, core.num, core.num]),
    [dartx.drawImageScaled]: dart.definiteFunctionType(dart.void, [html.CanvasImageSource, core.num, core.num, core.num, core.num]),
    [dartx.drawImageScaledFromSource]: dart.definiteFunctionType(dart.void, [html.CanvasImageSource, core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.num]),
    [dartx.getLineDash]: dart.definiteFunctionType(core.List$(core.num), []),
    [dartx.setLineDash]: dart.definiteFunctionType(dart.void, [ListOfnum()]),
    [dartx.fillText]: dart.definiteFunctionType(dart.void, [core.String, core.num, core.num], [core.num]),
    [dartx.fill]: dart.definiteFunctionType(dart.void, [], [core.String])
  })
});
dart.registerExtension(dart.global.CanvasRenderingContext2D, html.CanvasRenderingContext2D);
html.ChildNode = class ChildNode extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.ChildNode, {
  constructors: () => ({_: dart.definiteFunctionType(html.ChildNode, [])})
});
html.ChromiumValuebuffer = class ChromiumValuebuffer extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.ChromiumValuebuffer, {
  constructors: () => ({_: dart.definiteFunctionType(html.ChromiumValuebuffer, [])})
});
dart.registerExtension(dart.global.CHROMIUMValuebuffer, html.ChromiumValuebuffer);
dart.defineExtensionNames([
  'id'
]);
html.GeofencingRegion = class GeofencingRegion extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.id]() {
    return this.id;
  }
};
dart.setSignature(html.GeofencingRegion, {
  constructors: () => ({_: dart.definiteFunctionType(html.GeofencingRegion, [])}),
  fields: () => ({[dartx.id]: core.String})
});
dart.registerExtension(dart.global.GeofencingRegion, html.GeofencingRegion);
dart.defineExtensionNames([
  'latitude',
  'longitude',
  'radius'
]);
html.CircularGeofencingRegion = class CircularGeofencingRegion extends html.GeofencingRegion {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(init) {
    let init_1 = html_common.convertDartToNative_Dictionary(init);
    return html.CircularGeofencingRegion._create_1(init_1);
  }
  static _create_1(init) {
    return new CircularGeofencingRegion(init);
  }
  get [dartx.latitude]() {
    return this.latitude;
  }
  get [dartx.longitude]() {
    return this.longitude;
  }
  get [dartx.radius]() {
    return this.radius;
  }
};
dart.setSignature(html.CircularGeofencingRegion, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.CircularGeofencingRegion, []),
    new: dart.definiteFunctionType(html.CircularGeofencingRegion, [core.Map])
  }),
  fields: () => ({
    [dartx.latitude]: core.double,
    [dartx.longitude]: core.double,
    [dartx.radius]: core.double
  }),
  sfields: () => ({
    MAX_RADIUS: core.num,
    MIN_RADIUS: core.num
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.CircularGeofencingRegion, [dart.dynamic])}),
  names: ['_create_1']
});
html.CircularGeofencingRegion.MAX_RADIUS = 100.0;
html.CircularGeofencingRegion.MIN_RADIUS = 1.0;
dart.registerExtension(dart.global.CircularGeofencingRegion, html.CircularGeofencingRegion);
const _postMessage_1 = Symbol('_postMessage_1');
const _postMessage_2 = Symbol('_postMessage_2');
dart.defineExtensionNames([
  'postMessage',
  'frameType',
  'id',
  'url'
]);
html.Client = class Client extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.frameType]() {
    return this.frameType;
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.url]() {
    return this.url;
  }
  [dartx.postMessage](message, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
};
dart.setSignature(html.Client, {
  constructors: () => ({_: dart.definiteFunctionType(html.Client, [])}),
  fields: () => ({
    [dartx.frameType]: core.String,
    [dartx.id]: core.String,
    [dartx.url]: core.String
  }),
  methods: () => ({
    [dartx.postMessage]: dart.definiteFunctionType(dart.void, [dart.dynamic], [ListOfMessagePort()]),
    [_postMessage_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, ListOfMessagePort()]),
    [_postMessage_2]: dart.definiteFunctionType(dart.void, [dart.dynamic])
  })
});
dart.registerExtension(dart.global.Client, html.Client);
const _matchAll_1 = Symbol('_matchAll_1');
const _matchAll_2 = Symbol('_matchAll_2');
dart.defineExtensionNames([
  'claim',
  'matchAll',
  'openWindow'
]);
html.Clients = class Clients extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.claim](...args) {
    return this.claim.apply(this, args);
  }
  [dartx.matchAll](options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_matchAll_1](options_1);
    }
    return this[_matchAll_2]();
  }
  [_matchAll_1](...args) {
    return this.matchAll.apply(this, args);
  }
  [_matchAll_2](...args) {
    return this.matchAll.apply(this, args);
  }
  [dartx.openWindow](...args) {
    return this.openWindow.apply(this, args);
  }
};
dart.setSignature(html.Clients, {
  constructors: () => ({_: dart.definiteFunctionType(html.Clients, [])}),
  methods: () => ({
    [dartx.claim]: dart.definiteFunctionType(async.Future, []),
    [dartx.matchAll]: dart.definiteFunctionType(async.Future, [], [core.Map]),
    [_matchAll_1]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [_matchAll_2]: dart.definiteFunctionType(async.Future, []),
    [dartx.openWindow]: dart.definiteFunctionType(async.Future, [core.String])
  })
});
dart.registerExtension(dart.global.Clients, html.Clients);
dart.defineExtensionNames([
  'clipboardData'
]);
html.ClipboardEvent = class ClipboardEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.clipboardData]() {
    return this.clipboardData;
  }
};
dart.setSignature(html.ClipboardEvent, {
  constructors: () => ({_: dart.definiteFunctionType(html.ClipboardEvent, [])}),
  fields: () => ({[dartx.clipboardData]: html.DataTransfer})
});
dart.registerExtension(dart.global.ClipboardEvent, html.ClipboardEvent);
dart.defineExtensionNames([
  'code',
  'reason',
  'wasClean'
]);
html.CloseEvent = class CloseEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.CloseEvent._create_1(type, eventInitDict_1);
    }
    return html.CloseEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new CloseEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new CloseEvent(type);
  }
  get [dartx.code]() {
    return this.code;
  }
  get [dartx.reason]() {
    return this.reason;
  }
  get [dartx.wasClean]() {
    return this.wasClean;
  }
};
dart.setSignature(html.CloseEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.CloseEvent, []),
    new: dart.definiteFunctionType(html.CloseEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.code]: core.int,
    [dartx.reason]: core.String,
    [dartx.wasClean]: core.bool
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.CloseEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.CloseEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.CloseEvent, html.CloseEvent);
html.Comment = class Comment extends html.CharacterData {
  static new(data) {
    if (data === void 0) data = null;
    if (data != null) {
      return html.document.createComment(data);
    }
    return html.document.createComment("");
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.Comment, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.Comment, [], [core.String]),
    _: dart.definiteFunctionType(html.Comment, [])
  })
});
dart.registerExtension(dart.global.Comment, html.Comment);
const _initCompositionEvent = Symbol('_initCompositionEvent');
const _initUIEvent = Symbol('_initUIEvent');
const _charCode = Symbol('_charCode');
const _keyCode = Symbol('_keyCode');
const _get_view = Symbol('_get_view');
const _which = Symbol('_which');
dart.defineExtensionNames([
  'view',
  'detail',
  'sourceDevice'
]);
html.UIEvent = class UIEvent extends html.Event {
  static new(type, opts) {
    let view = opts && 'view' in opts ? opts.view : null;
    let detail = opts && 'detail' in opts ? opts.detail : 0;
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    if (view == null) {
      view = html.window;
    }
    let e = html.UIEvent._check(html.document[_createEvent]("UIEvent"));
    e[_initUIEvent](type, canBubble, cancelable, view, detail);
    return e;
  }
  static _(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.UIEvent._create_1(type, eventInitDict_1);
    }
    return html.UIEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new UIEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new UIEvent(type);
  }
  get [_charCode]() {
    return this.charCode;
  }
  get [dartx.detail]() {
    return this.detail;
  }
  get [_keyCode]() {
    return this.keyCode;
  }
  get [dartx.sourceDevice]() {
    return this.sourceDevice;
  }
  get [dartx.view]() {
    return html._convertNativeToDart_Window(this[_get_view]);
  }
  get [_get_view]() {
    return this.view;
  }
  get [_which]() {
    return this.which;
  }
  [_initUIEvent](...args) {
    return this.initUIEvent.apply(this, args);
  }
};
dart.setSignature(html.UIEvent, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.UIEvent, [core.String], {view: html.Window, detail: core.int, canBubble: core.bool, cancelable: core.bool}),
    _: dart.definiteFunctionType(html.UIEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [_charCode]: core.int,
    [dartx.detail]: core.int,
    [_keyCode]: core.int,
    [dartx.sourceDevice]: html.InputDevice,
    [_get_view]: dart.dynamic,
    [_which]: core.int
  }),
  getters: () => ({[dartx.view]: dart.definiteFunctionType(html.WindowBase, [])}),
  methods: () => ({[_initUIEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, html.Window, core.int])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.UIEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.UIEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.UIEvent, html.UIEvent);
dart.defineExtensionNames([
  'data'
]);
html.CompositionEvent = class CompositionEvent extends html.UIEvent {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : false;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : false;
    let view = opts && 'view' in opts ? opts.view : null;
    let data = opts && 'data' in opts ? opts.data : null;
    let locale = opts && 'locale' in opts ? opts.locale : null;
    if (view == null) {
      view = html.window;
    }
    let e = html.CompositionEvent._check(html.document[_createEvent]("CompositionEvent"));
    if (dart.test(html_common.Device.isFirefox)) {
      e.initCompositionEvent(type, canBubble, cancelable, view, data, locale);
    } else {
      e[_initCompositionEvent](type, canBubble, cancelable, view, data);
    }
    return e;
  }
  static _(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.CompositionEvent._create_1(type, eventInitDict_1);
    }
    return html.CompositionEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new CompositionEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new CompositionEvent(type);
  }
  get [dartx.data]() {
    return this.data;
  }
  [_initCompositionEvent](...args) {
    return this.initCompositionEvent.apply(this, args);
  }
};
dart.setSignature(html.CompositionEvent, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.CompositionEvent, [core.String], {canBubble: core.bool, cancelable: core.bool, view: html.Window, data: core.String, locale: core.String}),
    _: dart.definiteFunctionType(html.CompositionEvent, [core.String], [core.Map])
  }),
  fields: () => ({[dartx.data]: core.String}),
  methods: () => ({[_initCompositionEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, html.Window, core.String])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.CompositionEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.CompositionEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.CompositionEvent, html.CompositionEvent);
dart.defineExtensionNames([
  'disconnect',
  'supports',
  'opacity',
  'scrollLeft',
  'scrollTop',
  'transform'
]);
html.CompositorProxy = class CompositorProxy extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(element, attributeArray) {
    return html.CompositorProxy._create_1(element, attributeArray);
  }
  static _create_1(element, attributeArray) {
    return new CompositorProxy(element, attributeArray);
  }
  get [dartx.opacity]() {
    return this.opacity;
  }
  set [dartx.opacity](value) {
    this.opacity = value;
  }
  get [dartx.scrollLeft]() {
    return this.scrollLeft;
  }
  set [dartx.scrollLeft](value) {
    this.scrollLeft = value;
  }
  get [dartx.scrollTop]() {
    return this.scrollTop;
  }
  set [dartx.scrollTop](value) {
    this.scrollTop = value;
  }
  get [dartx.transform]() {
    return this.transform;
  }
  set [dartx.transform](value) {
    this.transform = value;
  }
  [dartx.disconnect](...args) {
    return this.disconnect.apply(this, args);
  }
  [dartx.supports](...args) {
    return this.supports.apply(this, args);
  }
};
dart.setSignature(html.CompositorProxy, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.CompositorProxy, []),
    new: dart.definiteFunctionType(html.CompositorProxy, [html.Element, ListOfString()])
  }),
  fields: () => ({
    [dartx.opacity]: core.num,
    [dartx.scrollLeft]: core.num,
    [dartx.scrollTop]: core.num,
    [dartx.transform]: html.DomMatrix
  }),
  methods: () => ({
    [dartx.disconnect]: dart.definiteFunctionType(dart.void, []),
    [dartx.supports]: dart.definiteFunctionType(core.bool, [core.String])
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.CompositorProxy, [dart.dynamic, dart.dynamic])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.CompositorProxy, html.CompositorProxy);
dart.defineExtensionNames([
  'postMessage',
  'terminate',
  'onError',
  'onMessage'
]);
html.CompositorWorker = class CompositorWorker extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(scriptUrl) {
    return html.CompositorWorker._create_1(scriptUrl);
  }
  static _create_1(scriptUrl) {
    return new CompositorWorker(scriptUrl);
  }
  [dartx.postMessage](message, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
  [dartx.terminate](...args) {
    return this.terminate.apply(this, args);
  }
  get [dartx.onError]() {
    return html.CompositorWorker.errorEvent.forTarget(this);
  }
  get [dartx.onMessage]() {
    return html.CompositorWorker.messageEvent.forTarget(this);
  }
};
html.CompositorWorker[dart.implements] = () => [html.AbstractWorker];
dart.setSignature(html.CompositorWorker, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.CompositorWorker, []),
    new: dart.definiteFunctionType(html.CompositorWorker, [core.String])
  }),
  getters: () => ({
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), [])
  }),
  methods: () => ({
    [dartx.postMessage]: dart.definiteFunctionType(dart.void, [dart.dynamic], [ListOfMessagePort()]),
    [_postMessage_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, ListOfMessagePort()]),
    [_postMessage_2]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [dartx.terminate]: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({
    errorEvent: EventStreamProviderOfEvent(),
    messageEvent: EventStreamProviderOfMessageEvent()
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.CompositorWorker, [dart.dynamic])}),
  names: ['_create_1']
});
dart.defineLazy(html.CompositorWorker, {
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  }
});
dart.registerExtension(dart.global.CompositorWorker, html.CompositorWorker);
const _fetch_1 = Symbol('_fetch_1');
const _fetch_2 = Symbol('_fetch_2');
const _webkitRequestFileSystem = Symbol('_webkitRequestFileSystem');
const _webkitResolveLocalFileSystemUrl = Symbol('_webkitResolveLocalFileSystemUrl');
const _setInterval_String = Symbol('_setInterval_String');
const _setTimeout_String = Symbol('_setTimeout_String');
const _clearInterval = Symbol('_clearInterval');
const _clearTimeout = Symbol('_clearTimeout');
const _setInterval = Symbol('_setInterval');
const _setTimeout = Symbol('_setTimeout');
dart.defineExtensionNames([
  'close',
  'fetch',
  'importScripts',
  'webkitRequestFileSystem',
  'requestFileSystemSync',
  'resolveLocalFileSystemSyncUrl',
  'webkitResolveLocalFileSystemUrl',
  'atob',
  'btoa',
  'onError',
  'caches',
  'console',
  'crypto',
  'indexedDB',
  'location',
  'navigator',
  'performance',
  'self'
]);
html.WorkerGlobalScope = class WorkerGlobalScope extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.caches]() {
    return this.caches;
  }
  get [dartx.console]() {
    return this.console;
  }
  get [dartx.crypto]() {
    return this.crypto;
  }
  get [dartx.indexedDB]() {
    return this.indexedDB;
  }
  get [dartx.location]() {
    return this.location;
  }
  get [dartx.navigator]() {
    return this.navigator;
  }
  get [dartx.performance]() {
    return this.performance;
  }
  get [dartx.self]() {
    return this.self;
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [dartx.fetch](input, init) {
    if (init === void 0) init = null;
    if (init != null) {
      let init_1 = html_common.convertDartToNative_Dictionary(init);
      return this[_fetch_1](input, init_1);
    }
    return this[_fetch_2](input);
  }
  [_fetch_1](...args) {
    return this.fetch.apply(this, args);
  }
  [_fetch_2](...args) {
    return this.fetch.apply(this, args);
  }
  [dartx.importScripts](...args) {
    return this.importScripts.apply(this, args);
  }
  [_webkitRequestFileSystem](...args) {
    return this.webkitRequestFileSystem.apply(this, args);
  }
  [dartx.webkitRequestFileSystem](type, size) {
    let completer = CompleterOfFileSystem().new();
    this[_webkitRequestFileSystem](type, size, dart.fn(value => {
      completer.complete(value);
    }, FileSystemTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, FileErrorTovoid()));
    return completer.future;
  }
  [dartx.requestFileSystemSync](...args) {
    return this.webkitRequestFileSystemSync.apply(this, args);
  }
  [dartx.resolveLocalFileSystemSyncUrl](...args) {
    return this.webkitResolveLocalFileSystemSyncURL.apply(this, args);
  }
  [_webkitResolveLocalFileSystemUrl](...args) {
    return this.webkitResolveLocalFileSystemURL.apply(this, args);
  }
  [dartx.webkitResolveLocalFileSystemUrl](url) {
    let completer = CompleterOfEntry().new();
    this[_webkitResolveLocalFileSystemUrl](url, dart.fn(value => {
      completer.complete(value);
    }, EntryTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, FileErrorTovoid()));
    return completer.future;
  }
  [dartx.atob](...args) {
    return this.atob.apply(this, args);
  }
  [dartx.btoa](...args) {
    return this.btoa.apply(this, args);
  }
  [_setInterval_String](...args) {
    return this.setInterval.apply(this, args);
  }
  [_setTimeout_String](...args) {
    return this.setTimeout.apply(this, args);
  }
  [_clearInterval](...args) {
    return this.clearInterval.apply(this, args);
  }
  [_clearTimeout](...args) {
    return this.clearTimeout.apply(this, args);
  }
  [_setInterval](...args) {
    return this.setInterval.apply(this, args);
  }
  [_setTimeout](...args) {
    return this.setTimeout.apply(this, args);
  }
  get [dartx.onError]() {
    return html.WorkerGlobalScope.errorEvent.forTarget(this);
  }
};
html.WorkerGlobalScope[dart.implements] = () => [html._WindowTimers, html.WindowBase64];
dart.setSignature(html.WorkerGlobalScope, {
  constructors: () => ({_: dart.definiteFunctionType(html.WorkerGlobalScope, [])}),
  fields: () => ({
    [dartx.caches]: html.CacheStorage,
    [dartx.console]: html.WorkerConsole,
    [dartx.crypto]: html.Crypto,
    [dartx.indexedDB]: indexed_db.IdbFactory,
    [dartx.location]: html._WorkerLocation,
    [dartx.navigator]: html._WorkerNavigator,
    [dartx.performance]: html.WorkerPerformance,
    [dartx.self]: html.WorkerGlobalScope
  }),
  getters: () => ({[dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  methods: () => ({
    [dartx.close]: dart.definiteFunctionType(dart.void, []),
    [dartx.fetch]: dart.definiteFunctionType(async.Future, [dart.dynamic], [core.Map]),
    [_fetch_1]: dart.definiteFunctionType(async.Future, [dart.dynamic, dart.dynamic]),
    [_fetch_2]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [dartx.importScripts]: dart.definiteFunctionType(dart.void, [core.String]),
    [_webkitRequestFileSystem]: dart.definiteFunctionType(dart.void, [core.int, core.int], [html._FileSystemCallback, html._ErrorCallback]),
    [dartx.webkitRequestFileSystem]: dart.definiteFunctionType(async.Future$(html.FileSystem), [core.int, core.int]),
    [dartx.requestFileSystemSync]: dart.definiteFunctionType(html._DOMFileSystemSync, [core.int, core.int]),
    [dartx.resolveLocalFileSystemSyncUrl]: dart.definiteFunctionType(html._EntrySync, [core.String]),
    [_webkitResolveLocalFileSystemUrl]: dart.definiteFunctionType(dart.void, [core.String, html._EntryCallback], [html._ErrorCallback]),
    [dartx.webkitResolveLocalFileSystemUrl]: dart.definiteFunctionType(async.Future$(html.Entry), [core.String]),
    [dartx.atob]: dart.definiteFunctionType(core.String, [core.String]),
    [dartx.btoa]: dart.definiteFunctionType(core.String, [core.String]),
    [_setInterval_String]: dart.definiteFunctionType(core.int, [core.String], [core.int, core.Object]),
    [_setTimeout_String]: dart.definiteFunctionType(core.int, [core.String], [core.int, core.Object]),
    [_clearInterval]: dart.definiteFunctionType(dart.void, [], [core.int]),
    [_clearTimeout]: dart.definiteFunctionType(dart.void, [], [core.int]),
    [_setInterval]: dart.definiteFunctionType(core.int, [core.Object], [core.int]),
    [_setTimeout]: dart.definiteFunctionType(core.int, [core.Object], [core.int])
  }),
  sfields: () => ({
    errorEvent: EventStreamProviderOfEvent(),
    PERSISTENT: core.int,
    TEMPORARY: core.int
  })
});
html.WorkerGlobalScope.PERSISTENT = 1;
html.WorkerGlobalScope.TEMPORARY = 0;
dart.defineLazy(html.WorkerGlobalScope, {
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  }
});
dart.registerExtension(dart.global.WorkerGlobalScope, html.WorkerGlobalScope);
dart.defineExtensionNames([
  'cancelAnimationFrame',
  'postMessage',
  'requestAnimationFrame',
  'onMessage'
]);
html.CompositorWorkerGlobalScope = class CompositorWorkerGlobalScope extends html.WorkerGlobalScope {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.cancelAnimationFrame](...args) {
    return this.cancelAnimationFrame.apply(this, args);
  }
  [dartx.postMessage](message, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
  [dartx.requestAnimationFrame](...args) {
    return this.requestAnimationFrame.apply(this, args);
  }
  get [dartx.onMessage]() {
    return html.CompositorWorkerGlobalScope.messageEvent.forTarget(this);
  }
};
dart.setSignature(html.CompositorWorkerGlobalScope, {
  constructors: () => ({_: dart.definiteFunctionType(html.CompositorWorkerGlobalScope, [])}),
  getters: () => ({[dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), [])}),
  methods: () => ({
    [dartx.cancelAnimationFrame]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.postMessage]: dart.definiteFunctionType(dart.void, [dart.dynamic], [ListOfMessagePort()]),
    [_postMessage_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, ListOfMessagePort()]),
    [_postMessage_2]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [dartx.requestAnimationFrame]: dart.definiteFunctionType(core.int, [html.FrameRequestCallback])
  }),
  sfields: () => ({messageEvent: EventStreamProviderOfMessageEvent()})
});
dart.defineLazy(html.CompositorWorkerGlobalScope, {
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  }
});
dart.registerExtension(dart.global.CompositorWorkerGlobalScope, html.CompositorWorkerGlobalScope);
const _isConsoleDefined = Symbol('_isConsoleDefined');
html.Console = class Console extends core.Object {
  _safe() {
  }
  get [_isConsoleDefined]() {
    return typeof console != "undefined";
  }
  get memory() {
    return html.MemoryInfo._check(dart.test(this[_isConsoleDefined]) ? console.memory : null);
  }
  assertCondition(condition, arg) {
    return dart.test(this[_isConsoleDefined]) ? console.assertCondition(condition, arg) : null;
  }
  clear(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.clear(arg) : null;
  }
  count(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.count(arg) : null;
  }
  debug(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.debug(arg) : null;
  }
  dir(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.dir(arg) : null;
  }
  dirxml(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.dirxml(arg) : null;
  }
  error(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.error(arg) : null;
  }
  group(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.group(arg) : null;
  }
  groupCollapsed(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.groupCollapsed(arg) : null;
  }
  groupEnd() {
    return dart.test(this[_isConsoleDefined]) ? console.groupEnd() : null;
  }
  info(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.info(arg) : null;
  }
  log(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.log(arg) : null;
  }
  markTimeline(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.markTimeline(arg) : null;
  }
  profile(title) {
    return dart.test(this[_isConsoleDefined]) ? console.profile(title) : null;
  }
  profileEnd(title) {
    return dart.test(this[_isConsoleDefined]) ? console.profileEnd(title) : null;
  }
  table(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.table(arg) : null;
  }
  time(title) {
    return dart.test(this[_isConsoleDefined]) ? console.time(title) : null;
  }
  timeEnd(title) {
    return dart.test(this[_isConsoleDefined]) ? console.timeEnd(title) : null;
  }
  timeStamp(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.timeStamp(arg) : null;
  }
  trace(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.trace(arg) : null;
  }
  warn(arg) {
    return dart.test(this[_isConsoleDefined]) ? console.warn(arg) : null;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.defineNamedConstructor(html.Console, '_safe');
dart.setSignature(html.Console, {
  constructors: () => ({
    _safe: dart.definiteFunctionType(html.Console, []),
    _: dart.definiteFunctionType(html.Console, [])
  }),
  getters: () => ({
    [_isConsoleDefined]: dart.definiteFunctionType(core.bool, []),
    memory: dart.definiteFunctionType(html.MemoryInfo, [])
  }),
  methods: () => ({
    assertCondition: dart.definiteFunctionType(dart.void, [core.bool, core.Object]),
    clear: dart.definiteFunctionType(dart.void, [core.Object]),
    count: dart.definiteFunctionType(dart.void, [core.Object]),
    debug: dart.definiteFunctionType(dart.void, [core.Object]),
    dir: dart.definiteFunctionType(dart.void, [core.Object]),
    dirxml: dart.definiteFunctionType(dart.void, [core.Object]),
    error: dart.definiteFunctionType(dart.void, [core.Object]),
    group: dart.definiteFunctionType(dart.void, [core.Object]),
    groupCollapsed: dart.definiteFunctionType(dart.void, [core.Object]),
    groupEnd: dart.definiteFunctionType(dart.void, []),
    info: dart.definiteFunctionType(dart.void, [core.Object]),
    log: dart.definiteFunctionType(dart.void, [core.Object]),
    markTimeline: dart.definiteFunctionType(dart.void, [core.Object]),
    profile: dart.definiteFunctionType(dart.void, [core.String]),
    profileEnd: dart.definiteFunctionType(dart.void, [core.String]),
    table: dart.definiteFunctionType(dart.void, [core.Object]),
    time: dart.definiteFunctionType(dart.void, [core.String]),
    timeEnd: dart.definiteFunctionType(dart.void, [core.String]),
    timeStamp: dart.definiteFunctionType(dart.void, [core.Object]),
    trace: dart.definiteFunctionType(dart.void, [core.Object]),
    warn: dart.definiteFunctionType(dart.void, [core.Object])
  }),
  sfields: () => ({_safeConsole: html.Console})
});
dart.defineLazy(html.Console, {
  get _safeConsole() {
    return dart.const(new html.Console._safe());
  }
});
dart.defineExtensionNames([
  'assertCondition',
  'timeline',
  'timelineEnd'
]);
html.ConsoleBase = class ConsoleBase extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.assertCondition](...args) {
    return this.assert.apply(this, args);
  }
  [dartx.timeline](...args) {
    return this.timeline.apply(this, args);
  }
  [dartx.timelineEnd](...args) {
    return this.timelineEnd.apply(this, args);
  }
};
dart.setSignature(html.ConsoleBase, {
  constructors: () => ({_: dart.definiteFunctionType(html.ConsoleBase, [])}),
  methods: () => ({
    [dartx.assertCondition]: dart.definiteFunctionType(dart.void, [core.bool, core.Object]),
    [dartx.timeline]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.timelineEnd]: dart.definiteFunctionType(dart.void, [core.String])
  })
});
dart.registerExtension(dart.global.ConsoleBase, html.ConsoleBase);
dart.defineExtensionNames([
  'getDistributedNodes',
  'select'
]);
html.ContentElement = class ContentElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.ContentElement._check(html.document[dartx.createElement]("content"));
  }
  created() {
    this[dartx.select] = null;
    super.created();
  }
  static get supported() {
    return html.Element.isTagSupported('content');
  }
  get [dartx.select]() {
    return this.select;
  }
  set [dartx.select](value) {
    this.select = value;
  }
  [dartx.getDistributedNodes](...args) {
    return this.getDistributedNodes.apply(this, args);
  }
};
dart.defineNamedConstructor(html.ContentElement, 'created');
dart.setSignature(html.ContentElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ContentElement, []),
    new: dart.definiteFunctionType(html.ContentElement, []),
    created: dart.definiteFunctionType(html.ContentElement, [])
  }),
  fields: () => ({[dartx.select]: core.String}),
  methods: () => ({[dartx.getDistributedNodes]: dart.definiteFunctionType(core.List$(html.Node), [])}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.HTMLContentElement, html.ContentElement);
dart.defineExtensionNames([
  'accuracy',
  'altitude',
  'altitudeAccuracy',
  'heading',
  'latitude',
  'longitude',
  'speed'
]);
html.Coordinates = class Coordinates extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.accuracy]() {
    return this.accuracy;
  }
  get [dartx.altitude]() {
    return this.altitude;
  }
  get [dartx.altitudeAccuracy]() {
    return this.altitudeAccuracy;
  }
  get [dartx.heading]() {
    return this.heading;
  }
  get [dartx.latitude]() {
    return this.latitude;
  }
  get [dartx.longitude]() {
    return this.longitude;
  }
  get [dartx.speed]() {
    return this.speed;
  }
};
dart.setSignature(html.Coordinates, {
  constructors: () => ({_: dart.definiteFunctionType(html.Coordinates, [])}),
  fields: () => ({
    [dartx.accuracy]: core.double,
    [dartx.altitude]: core.double,
    [dartx.altitudeAccuracy]: core.double,
    [dartx.heading]: core.double,
    [dartx.latitude]: core.double,
    [dartx.longitude]: core.double,
    [dartx.speed]: core.double
  })
});
dart.registerExtension(dart.global.Coordinates, html.Coordinates);
dart.defineExtensionNames([
  'iconUrl',
  'id',
  'name',
  'type'
]);
html.Credential = class Credential extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.iconUrl]() {
    return this.iconURL;
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.type]() {
    return this.type;
  }
};
dart.setSignature(html.Credential, {
  constructors: () => ({_: dart.definiteFunctionType(html.Credential, [])}),
  fields: () => ({
    [dartx.iconUrl]: core.String,
    [dartx.id]: core.String,
    [dartx.name]: core.String,
    [dartx.type]: core.String
  })
});
dart.registerExtension(dart.global.Credential, html.Credential);
const _request_1 = Symbol('_request_1');
const _request_2 = Symbol('_request_2');
dart.defineExtensionNames([
  'notifySignedIn',
  'request',
  'requireUserMediation'
]);
html.CredentialsContainer = class CredentialsContainer extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.notifySignedIn](...args) {
    return this.notifySignedIn.apply(this, args);
  }
  [dartx.request](options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_request_1](options_1);
    }
    return this[_request_2]();
  }
  [_request_1](...args) {
    return this.request.apply(this, args);
  }
  [_request_2](...args) {
    return this.request.apply(this, args);
  }
  [dartx.requireUserMediation](...args) {
    return this.requireUserMediation.apply(this, args);
  }
};
dart.setSignature(html.CredentialsContainer, {
  constructors: () => ({_: dart.definiteFunctionType(html.CredentialsContainer, [])}),
  methods: () => ({
    [dartx.notifySignedIn]: dart.definiteFunctionType(async.Future, [html.Credential]),
    [dartx.request]: dart.definiteFunctionType(async.Future, [], [core.Map]),
    [_request_1]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [_request_2]: dart.definiteFunctionType(async.Future, []),
    [dartx.requireUserMediation]: dart.definiteFunctionType(async.Future, [])
  })
});
dart.registerExtension(dart.global.CredentialsContainer, html.CredentialsContainer);
dart.defineExtensionNames([
  'acceptConnection',
  'client'
]);
html.CrossOriginConnectEvent = class CrossOriginConnectEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.client]() {
    return this.client;
  }
  [dartx.acceptConnection](...args) {
    return this.acceptConnection.apply(this, args);
  }
};
dart.setSignature(html.CrossOriginConnectEvent, {
  constructors: () => ({_: dart.definiteFunctionType(html.CrossOriginConnectEvent, [])}),
  fields: () => ({[dartx.client]: html.CrossOriginServiceWorkerClient}),
  methods: () => ({[dartx.acceptConnection]: dart.definiteFunctionType(dart.void, [async.Future])})
});
dart.registerExtension(dart.global.CrossOriginConnectEvent, html.CrossOriginConnectEvent);
dart.defineExtensionNames([
  'postMessage',
  'origin',
  'targetUrl'
]);
html.CrossOriginServiceWorkerClient = class CrossOriginServiceWorkerClient extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.origin]() {
    return this.origin;
  }
  get [dartx.targetUrl]() {
    return this.targetUrl;
  }
  [dartx.postMessage](message, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
};
dart.setSignature(html.CrossOriginServiceWorkerClient, {
  constructors: () => ({_: dart.definiteFunctionType(html.CrossOriginServiceWorkerClient, [])}),
  fields: () => ({
    [dartx.origin]: core.String,
    [dartx.targetUrl]: core.String
  }),
  methods: () => ({
    [dartx.postMessage]: dart.definiteFunctionType(dart.void, [dart.dynamic], [ListOfMessagePort()]),
    [_postMessage_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, ListOfMessagePort()]),
    [_postMessage_2]: dart.definiteFunctionType(dart.void, [dart.dynamic])
  })
});
dart.registerExtension(dart.global.CrossOriginServiceWorkerClient, html.CrossOriginServiceWorkerClient);
const _getRandomValues = Symbol('_getRandomValues');
dart.defineExtensionNames([
  'getRandomValues',
  'subtle'
]);
html.Crypto = class Crypto extends _interceptors.Interceptor {
  [dartx.getRandomValues](array) {
    return this[_getRandomValues](array);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static get supported() {
    return !!(window.crypto && window.crypto.getRandomValues);
  }
  get [dartx.subtle]() {
    return this.subtle;
  }
  [_getRandomValues](...args) {
    return this.getRandomValues.apply(this, args);
  }
};
dart.setSignature(html.Crypto, {
  constructors: () => ({_: dart.definiteFunctionType(html.Crypto, [])}),
  fields: () => ({[dartx.subtle]: html._SubtleCrypto}),
  methods: () => ({
    [dartx.getRandomValues]: dart.definiteFunctionType(typed_data.TypedData, [typed_data.TypedData]),
    [_getRandomValues]: dart.definiteFunctionType(typed_data.TypedData, [typed_data.TypedData])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.Crypto, html.Crypto);
dart.defineExtensionNames([
  'algorithm',
  'extractable',
  'type',
  'usages'
]);
html.CryptoKey = class CryptoKey extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.algorithm]() {
    return this.algorithm;
  }
  get [dartx.extractable]() {
    return this.extractable;
  }
  get [dartx.type]() {
    return this.type;
  }
  get [dartx.usages]() {
    return this.usages;
  }
};
dart.setSignature(html.CryptoKey, {
  constructors: () => ({_: dart.definiteFunctionType(html.CryptoKey, [])}),
  fields: () => ({
    [dartx.algorithm]: core.Object,
    [dartx.extractable]: core.bool,
    [dartx.type]: core.String,
    [dartx.usages]: ListOfString()
  })
});
dart.registerExtension(dart.global.CryptoKey, html.CryptoKey);
html.Css = class Css extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.Css, {
  constructors: () => ({_: dart.definiteFunctionType(html.Css, [])}),
  statics: () => ({
    supports: dart.definiteFunctionType(core.bool, [core.String, core.String]),
    supportsCondition: dart.definiteFunctionType(core.bool, [core.String])
  }),
  names: ['supports', 'supportsCondition']
});
dart.registerExtension(dart.global.CSS, html.Css);
dart.defineExtensionNames([
  'cssText',
  'parentRule',
  'parentStyleSheet',
  'type'
]);
html.CssRule = class CssRule extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.cssText]() {
    return this.cssText;
  }
  set [dartx.cssText](value) {
    this.cssText = value;
  }
  get [dartx.parentRule]() {
    return this.parentRule;
  }
  get [dartx.parentStyleSheet]() {
    return this.parentStyleSheet;
  }
  get [dartx.type]() {
    return this.type;
  }
};
dart.setSignature(html.CssRule, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssRule, [])}),
  fields: () => ({
    [dartx.cssText]: core.String,
    [dartx.parentRule]: html.CssRule,
    [dartx.parentStyleSheet]: html.CssStyleSheet,
    [dartx.type]: core.int
  }),
  sfields: () => ({
    CHARSET_RULE: core.int,
    FONT_FACE_RULE: core.int,
    IMPORT_RULE: core.int,
    KEYFRAMES_RULE: core.int,
    KEYFRAME_RULE: core.int,
    MEDIA_RULE: core.int,
    PAGE_RULE: core.int,
    STYLE_RULE: core.int,
    SUPPORTS_RULE: core.int,
    VIEWPORT_RULE: core.int,
    WEBKIT_KEYFRAMES_RULE: core.int,
    WEBKIT_KEYFRAME_RULE: core.int
  })
});
html.CssRule.CHARSET_RULE = 2;
html.CssRule.FONT_FACE_RULE = 5;
html.CssRule.IMPORT_RULE = 3;
html.CssRule.KEYFRAMES_RULE = 7;
html.CssRule.KEYFRAME_RULE = 8;
html.CssRule.MEDIA_RULE = 4;
html.CssRule.PAGE_RULE = 6;
html.CssRule.STYLE_RULE = 1;
html.CssRule.SUPPORTS_RULE = 12;
html.CssRule.VIEWPORT_RULE = 15;
html.CssRule.WEBKIT_KEYFRAMES_RULE = 7;
html.CssRule.WEBKIT_KEYFRAME_RULE = 8;
dart.registerExtension(dart.global.CSSRule, html.CssRule);
dart.defineExtensionNames([
  'encoding'
]);
html.CssCharsetRule = class CssCharsetRule extends html.CssRule {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.encoding]() {
    return this.encoding;
  }
  set [dartx.encoding](value) {
    this.encoding = value;
  }
};
dart.setSignature(html.CssCharsetRule, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssCharsetRule, [])}),
  fields: () => ({[dartx.encoding]: core.String})
});
dart.registerExtension(dart.global.CSSCharsetRule, html.CssCharsetRule);
dart.defineExtensionNames([
  'style'
]);
html.CssFontFaceRule = class CssFontFaceRule extends html.CssRule {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.style]() {
    return this.style;
  }
};
dart.setSignature(html.CssFontFaceRule, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssFontFaceRule, [])}),
  fields: () => ({[dartx.style]: html.CssStyleDeclaration})
});
dart.registerExtension(dart.global.CSSFontFaceRule, html.CssFontFaceRule);
dart.defineExtensionNames([
  'deleteRule',
  'insertRule',
  'cssRules'
]);
html.CssGroupingRule = class CssGroupingRule extends html.CssRule {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.cssRules]() {
    return this.cssRules;
  }
  [dartx.deleteRule](...args) {
    return this.deleteRule.apply(this, args);
  }
  [dartx.insertRule](...args) {
    return this.insertRule.apply(this, args);
  }
};
dart.setSignature(html.CssGroupingRule, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssGroupingRule, [])}),
  fields: () => ({[dartx.cssRules]: ListOfCssRule()}),
  methods: () => ({
    [dartx.deleteRule]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.insertRule]: dart.definiteFunctionType(core.int, [core.String, core.int])
  })
});
dart.registerExtension(dart.global.CSSGroupingRule, html.CssGroupingRule);
dart.defineExtensionNames([
  'href',
  'media',
  'styleSheet'
]);
html.CssImportRule = class CssImportRule extends html.CssRule {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.href]() {
    return this.href;
  }
  get [dartx.media]() {
    return this.media;
  }
  get [dartx.styleSheet]() {
    return this.styleSheet;
  }
};
dart.setSignature(html.CssImportRule, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssImportRule, [])}),
  fields: () => ({
    [dartx.href]: core.String,
    [dartx.media]: html.MediaList,
    [dartx.styleSheet]: html.CssStyleSheet
  })
});
dart.registerExtension(dart.global.CSSImportRule, html.CssImportRule);
dart.defineExtensionNames([
  'keyText',
  'style'
]);
html.CssKeyframeRule = class CssKeyframeRule extends html.CssRule {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.keyText]() {
    return this.keyText;
  }
  set [dartx.keyText](value) {
    this.keyText = value;
  }
  get [dartx.style]() {
    return this.style;
  }
};
dart.setSignature(html.CssKeyframeRule, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssKeyframeRule, [])}),
  fields: () => ({
    [dartx.keyText]: core.String,
    [dartx.style]: html.CssStyleDeclaration
  })
});
dart.registerExtension(dart.global.CSSKeyframeRule, html.CssKeyframeRule);
dart.registerExtension(dart.global.MozCSSKeyframeRule, html.CssKeyframeRule);
dart.registerExtension(dart.global.WebKitCSSKeyframeRule, html.CssKeyframeRule);
dart.defineExtensionNames([
  'appendRule',
  'deleteRule',
  'findRule',
  'cssRules',
  'name'
]);
html.CssKeyframesRule = class CssKeyframesRule extends html.CssRule {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.cssRules]() {
    return this.cssRules;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [dartx.appendRule](...args) {
    return this.appendRule.apply(this, args);
  }
  [dartx.deleteRule](...args) {
    return this.deleteRule.apply(this, args);
  }
  [dartx.findRule](...args) {
    return this.findRule.apply(this, args);
  }
};
dart.setSignature(html.CssKeyframesRule, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssKeyframesRule, [])}),
  fields: () => ({
    [dartx.cssRules]: ListOfCssRule(),
    [dartx.name]: core.String
  }),
  methods: () => ({
    [__getter__]: dart.definiteFunctionType(html.CssKeyframeRule, [core.int]),
    [dartx.appendRule]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.deleteRule]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.findRule]: dart.definiteFunctionType(html.CssKeyframeRule, [core.String])
  })
});
dart.registerExtension(dart.global.CSSKeyframesRule, html.CssKeyframesRule);
dart.registerExtension(dart.global.MozCSSKeyframesRule, html.CssKeyframesRule);
dart.registerExtension(dart.global.WebKitCSSKeyframesRule, html.CssKeyframesRule);
dart.defineExtensionNames([
  'media'
]);
html.CssMediaRule = class CssMediaRule extends html.CssGroupingRule {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.media]() {
    return this.media;
  }
};
dart.setSignature(html.CssMediaRule, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssMediaRule, [])}),
  fields: () => ({[dartx.media]: html.MediaList})
});
dart.registerExtension(dart.global.CSSMediaRule, html.CssMediaRule);
dart.defineExtensionNames([
  'selectorText',
  'style'
]);
html.CssPageRule = class CssPageRule extends html.CssRule {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.selectorText]() {
    return this.selectorText;
  }
  set [dartx.selectorText](value) {
    this.selectorText = value;
  }
  get [dartx.style]() {
    return this.style;
  }
};
dart.setSignature(html.CssPageRule, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssPageRule, [])}),
  fields: () => ({
    [dartx.selectorText]: core.String,
    [dartx.style]: html.CssStyleDeclaration
  })
});
dart.registerExtension(dart.global.CSSPageRule, html.CssPageRule);
const _getPropertyValueHelper = Symbol('_getPropertyValueHelper');
const _supportsProperty = Symbol('_supportsProperty');
const _getPropertyValue = Symbol('_getPropertyValue');
const _setPropertyHelper = Symbol('_setPropertyHelper');
const _browserPropertyName = Symbol('_browserPropertyName');
const _background = Symbol('_background');
const _backgroundAttachment = Symbol('_backgroundAttachment');
const _backgroundColor = Symbol('_backgroundColor');
const _backgroundImage = Symbol('_backgroundImage');
const _backgroundPosition = Symbol('_backgroundPosition');
const _backgroundRepeat = Symbol('_backgroundRepeat');
const _border = Symbol('_border');
const _borderBottom = Symbol('_borderBottom');
const _borderBottomColor = Symbol('_borderBottomColor');
const _borderBottomStyle = Symbol('_borderBottomStyle');
const _borderBottomWidth = Symbol('_borderBottomWidth');
const _borderCollapse = Symbol('_borderCollapse');
const _borderColor = Symbol('_borderColor');
const _borderLeft = Symbol('_borderLeft');
const _borderLeftColor = Symbol('_borderLeftColor');
const _borderLeftStyle = Symbol('_borderLeftStyle');
const _borderLeftWidth = Symbol('_borderLeftWidth');
const _borderRight = Symbol('_borderRight');
const _borderRightColor = Symbol('_borderRightColor');
const _borderRightStyle = Symbol('_borderRightStyle');
const _borderRightWidth = Symbol('_borderRightWidth');
const _borderSpacing = Symbol('_borderSpacing');
const _borderStyle = Symbol('_borderStyle');
const _borderTop = Symbol('_borderTop');
const _borderTopColor = Symbol('_borderTopColor');
const _borderTopStyle = Symbol('_borderTopStyle');
const _borderTopWidth = Symbol('_borderTopWidth');
const _borderWidth = Symbol('_borderWidth');
const _bottom = Symbol('_bottom');
const _captionSide = Symbol('_captionSide');
const _clear = Symbol('_clear');
const _clip = Symbol('_clip');
const _color = Symbol('_color');
const _content = Symbol('_content');
const _cursor = Symbol('_cursor');
const _direction = Symbol('_direction');
const _display = Symbol('_display');
const _emptyCells = Symbol('_emptyCells');
const _font = Symbol('_font');
const _fontFamily = Symbol('_fontFamily');
const _fontSize = Symbol('_fontSize');
const _fontStyle = Symbol('_fontStyle');
const _fontVariant = Symbol('_fontVariant');
const _fontWeight = Symbol('_fontWeight');
const _height = Symbol('_height');
const _left = Symbol('_left');
const _letterSpacing = Symbol('_letterSpacing');
const _lineHeight = Symbol('_lineHeight');
const _listStyle = Symbol('_listStyle');
const _listStyleImage = Symbol('_listStyleImage');
const _listStylePosition = Symbol('_listStylePosition');
const _listStyleType = Symbol('_listStyleType');
const _margin = Symbol('_margin');
const _marginBottom = Symbol('_marginBottom');
const _marginLeft = Symbol('_marginLeft');
const _marginRight = Symbol('_marginRight');
const _marginTop = Symbol('_marginTop');
const _maxHeight = Symbol('_maxHeight');
const _maxWidth = Symbol('_maxWidth');
const _minHeight = Symbol('_minHeight');
const _minWidth = Symbol('_minWidth');
const _outline = Symbol('_outline');
const _outlineColor = Symbol('_outlineColor');
const _outlineStyle = Symbol('_outlineStyle');
const _outlineWidth = Symbol('_outlineWidth');
const _overflow = Symbol('_overflow');
const _padding = Symbol('_padding');
const _paddingBottom = Symbol('_paddingBottom');
const _paddingLeft = Symbol('_paddingLeft');
const _paddingRight = Symbol('_paddingRight');
const _paddingTop = Symbol('_paddingTop');
const _pageBreakAfter = Symbol('_pageBreakAfter');
const _pageBreakBefore = Symbol('_pageBreakBefore');
const _pageBreakInside = Symbol('_pageBreakInside');
const _position = Symbol('_position');
const _quotes = Symbol('_quotes');
const _right = Symbol('_right');
const _tableLayout = Symbol('_tableLayout');
const _textAlign = Symbol('_textAlign');
const _textDecoration = Symbol('_textDecoration');
const _textIndent = Symbol('_textIndent');
const _textTransform = Symbol('_textTransform');
const _top = Symbol('_top');
const _unicodeBidi = Symbol('_unicodeBidi');
const _verticalAlign = Symbol('_verticalAlign');
const _visibility = Symbol('_visibility');
const _whiteSpace = Symbol('_whiteSpace');
const _width = Symbol('_width');
const _wordSpacing = Symbol('_wordSpacing');
const _zIndex = Symbol('_zIndex');
dart.defineExtensionNames([
  'alignContent',
  'alignContent',
  'alignItems',
  'alignItems',
  'alignSelf',
  'alignSelf',
  'animation',
  'animation',
  'animationDelay',
  'animationDelay',
  'animationDirection',
  'animationDirection',
  'animationDuration',
  'animationDuration',
  'animationFillMode',
  'animationFillMode',
  'animationIterationCount',
  'animationIterationCount',
  'animationName',
  'animationName',
  'animationPlayState',
  'animationPlayState',
  'animationTimingFunction',
  'animationTimingFunction',
  'appRegion',
  'appRegion',
  'appearance',
  'appearance',
  'aspectRatio',
  'aspectRatio',
  'backfaceVisibility',
  'backfaceVisibility',
  'background',
  'background',
  'backgroundAttachment',
  'backgroundAttachment',
  'backgroundBlendMode',
  'backgroundBlendMode',
  'backgroundClip',
  'backgroundClip',
  'backgroundColor',
  'backgroundColor',
  'backgroundComposite',
  'backgroundComposite',
  'backgroundImage',
  'backgroundImage',
  'backgroundOrigin',
  'backgroundOrigin',
  'backgroundPosition',
  'backgroundPosition',
  'backgroundPositionX',
  'backgroundPositionX',
  'backgroundPositionY',
  'backgroundPositionY',
  'backgroundRepeat',
  'backgroundRepeat',
  'backgroundRepeatX',
  'backgroundRepeatX',
  'backgroundRepeatY',
  'backgroundRepeatY',
  'backgroundSize',
  'backgroundSize',
  'border',
  'border',
  'borderAfter',
  'borderAfter',
  'borderAfterColor',
  'borderAfterColor',
  'borderAfterStyle',
  'borderAfterStyle',
  'borderAfterWidth',
  'borderAfterWidth',
  'borderBefore',
  'borderBefore',
  'borderBeforeColor',
  'borderBeforeColor',
  'borderBeforeStyle',
  'borderBeforeStyle',
  'borderBeforeWidth',
  'borderBeforeWidth',
  'borderBottom',
  'borderBottom',
  'borderBottomColor',
  'borderBottomColor',
  'borderBottomLeftRadius',
  'borderBottomLeftRadius',
  'borderBottomRightRadius',
  'borderBottomRightRadius',
  'borderBottomStyle',
  'borderBottomStyle',
  'borderBottomWidth',
  'borderBottomWidth',
  'borderCollapse',
  'borderCollapse',
  'borderColor',
  'borderColor',
  'borderEnd',
  'borderEnd',
  'borderEndColor',
  'borderEndColor',
  'borderEndStyle',
  'borderEndStyle',
  'borderEndWidth',
  'borderEndWidth',
  'borderFit',
  'borderFit',
  'borderHorizontalSpacing',
  'borderHorizontalSpacing',
  'borderImage',
  'borderImage',
  'borderImageOutset',
  'borderImageOutset',
  'borderImageRepeat',
  'borderImageRepeat',
  'borderImageSlice',
  'borderImageSlice',
  'borderImageSource',
  'borderImageSource',
  'borderImageWidth',
  'borderImageWidth',
  'borderLeft',
  'borderLeft',
  'borderLeftColor',
  'borderLeftColor',
  'borderLeftStyle',
  'borderLeftStyle',
  'borderLeftWidth',
  'borderLeftWidth',
  'borderRadius',
  'borderRadius',
  'borderRight',
  'borderRight',
  'borderRightColor',
  'borderRightColor',
  'borderRightStyle',
  'borderRightStyle',
  'borderRightWidth',
  'borderRightWidth',
  'borderSpacing',
  'borderSpacing',
  'borderStart',
  'borderStart',
  'borderStartColor',
  'borderStartColor',
  'borderStartStyle',
  'borderStartStyle',
  'borderStartWidth',
  'borderStartWidth',
  'borderStyle',
  'borderStyle',
  'borderTop',
  'borderTop',
  'borderTopColor',
  'borderTopColor',
  'borderTopLeftRadius',
  'borderTopLeftRadius',
  'borderTopRightRadius',
  'borderTopRightRadius',
  'borderTopStyle',
  'borderTopStyle',
  'borderTopWidth',
  'borderTopWidth',
  'borderVerticalSpacing',
  'borderVerticalSpacing',
  'borderWidth',
  'borderWidth',
  'bottom',
  'bottom',
  'boxAlign',
  'boxAlign',
  'boxDecorationBreak',
  'boxDecorationBreak',
  'boxDirection',
  'boxDirection',
  'boxFlex',
  'boxFlex',
  'boxFlexGroup',
  'boxFlexGroup',
  'boxLines',
  'boxLines',
  'boxOrdinalGroup',
  'boxOrdinalGroup',
  'boxOrient',
  'boxOrient',
  'boxPack',
  'boxPack',
  'boxReflect',
  'boxReflect',
  'boxShadow',
  'boxShadow',
  'boxSizing',
  'boxSizing',
  'captionSide',
  'captionSide',
  'clear',
  'clear',
  'clip',
  'clip',
  'clipPath',
  'clipPath',
  'color',
  'color',
  'columnBreakAfter',
  'columnBreakAfter',
  'columnBreakBefore',
  'columnBreakBefore',
  'columnBreakInside',
  'columnBreakInside',
  'columnCount',
  'columnCount',
  'columnFill',
  'columnFill',
  'columnGap',
  'columnGap',
  'columnRule',
  'columnRule',
  'columnRuleColor',
  'columnRuleColor',
  'columnRuleStyle',
  'columnRuleStyle',
  'columnRuleWidth',
  'columnRuleWidth',
  'columnSpan',
  'columnSpan',
  'columnWidth',
  'columnWidth',
  'columns',
  'columns',
  'content',
  'content',
  'counterIncrement',
  'counterIncrement',
  'counterReset',
  'counterReset',
  'cursor',
  'cursor',
  'direction',
  'direction',
  'display',
  'display',
  'emptyCells',
  'emptyCells',
  'filter',
  'filter',
  'flex',
  'flex',
  'flexBasis',
  'flexBasis',
  'flexDirection',
  'flexDirection',
  'flexFlow',
  'flexFlow',
  'flexGrow',
  'flexGrow',
  'flexShrink',
  'flexShrink',
  'flexWrap',
  'flexWrap',
  'float',
  'float',
  'font',
  'font',
  'fontFamily',
  'fontFamily',
  'fontFeatureSettings',
  'fontFeatureSettings',
  'fontKerning',
  'fontKerning',
  'fontSize',
  'fontSize',
  'fontSizeDelta',
  'fontSizeDelta',
  'fontSmoothing',
  'fontSmoothing',
  'fontStretch',
  'fontStretch',
  'fontStyle',
  'fontStyle',
  'fontVariant',
  'fontVariant',
  'fontVariantLigatures',
  'fontVariantLigatures',
  'fontWeight',
  'fontWeight',
  'grid',
  'grid',
  'gridArea',
  'gridArea',
  'gridAutoColumns',
  'gridAutoColumns',
  'gridAutoFlow',
  'gridAutoFlow',
  'gridAutoRows',
  'gridAutoRows',
  'gridColumn',
  'gridColumn',
  'gridColumnEnd',
  'gridColumnEnd',
  'gridColumnStart',
  'gridColumnStart',
  'gridRow',
  'gridRow',
  'gridRowEnd',
  'gridRowEnd',
  'gridRowStart',
  'gridRowStart',
  'gridTemplate',
  'gridTemplate',
  'gridTemplateAreas',
  'gridTemplateAreas',
  'gridTemplateColumns',
  'gridTemplateColumns',
  'gridTemplateRows',
  'gridTemplateRows',
  'height',
  'height',
  'highlight',
  'highlight',
  'hyphenateCharacter',
  'hyphenateCharacter',
  'imageRendering',
  'imageRendering',
  'isolation',
  'isolation',
  'justifyContent',
  'justifyContent',
  'justifySelf',
  'justifySelf',
  'left',
  'left',
  'letterSpacing',
  'letterSpacing',
  'lineBoxContain',
  'lineBoxContain',
  'lineBreak',
  'lineBreak',
  'lineClamp',
  'lineClamp',
  'lineHeight',
  'lineHeight',
  'listStyle',
  'listStyle',
  'listStyleImage',
  'listStyleImage',
  'listStylePosition',
  'listStylePosition',
  'listStyleType',
  'listStyleType',
  'locale',
  'locale',
  'logicalHeight',
  'logicalHeight',
  'logicalWidth',
  'logicalWidth',
  'margin',
  'margin',
  'marginAfter',
  'marginAfter',
  'marginAfterCollapse',
  'marginAfterCollapse',
  'marginBefore',
  'marginBefore',
  'marginBeforeCollapse',
  'marginBeforeCollapse',
  'marginBottom',
  'marginBottom',
  'marginBottomCollapse',
  'marginBottomCollapse',
  'marginCollapse',
  'marginCollapse',
  'marginEnd',
  'marginEnd',
  'marginLeft',
  'marginLeft',
  'marginRight',
  'marginRight',
  'marginStart',
  'marginStart',
  'marginTop',
  'marginTop',
  'marginTopCollapse',
  'marginTopCollapse',
  'mask',
  'mask',
  'maskBoxImage',
  'maskBoxImage',
  'maskBoxImageOutset',
  'maskBoxImageOutset',
  'maskBoxImageRepeat',
  'maskBoxImageRepeat',
  'maskBoxImageSlice',
  'maskBoxImageSlice',
  'maskBoxImageSource',
  'maskBoxImageSource',
  'maskBoxImageWidth',
  'maskBoxImageWidth',
  'maskClip',
  'maskClip',
  'maskComposite',
  'maskComposite',
  'maskImage',
  'maskImage',
  'maskOrigin',
  'maskOrigin',
  'maskPosition',
  'maskPosition',
  'maskPositionX',
  'maskPositionX',
  'maskPositionY',
  'maskPositionY',
  'maskRepeat',
  'maskRepeat',
  'maskRepeatX',
  'maskRepeatX',
  'maskRepeatY',
  'maskRepeatY',
  'maskSize',
  'maskSize',
  'maskSourceType',
  'maskSourceType',
  'maxHeight',
  'maxHeight',
  'maxLogicalHeight',
  'maxLogicalHeight',
  'maxLogicalWidth',
  'maxLogicalWidth',
  'maxWidth',
  'maxWidth',
  'maxZoom',
  'maxZoom',
  'minHeight',
  'minHeight',
  'minLogicalHeight',
  'minLogicalHeight',
  'minLogicalWidth',
  'minLogicalWidth',
  'minWidth',
  'minWidth',
  'minZoom',
  'minZoom',
  'mixBlendMode',
  'mixBlendMode',
  'objectFit',
  'objectFit',
  'objectPosition',
  'objectPosition',
  'opacity',
  'opacity',
  'order',
  'order',
  'orientation',
  'orientation',
  'orphans',
  'orphans',
  'outline',
  'outline',
  'outlineColor',
  'outlineColor',
  'outlineOffset',
  'outlineOffset',
  'outlineStyle',
  'outlineStyle',
  'outlineWidth',
  'outlineWidth',
  'overflow',
  'overflow',
  'overflowWrap',
  'overflowWrap',
  'overflowX',
  'overflowX',
  'overflowY',
  'overflowY',
  'padding',
  'padding',
  'paddingAfter',
  'paddingAfter',
  'paddingBefore',
  'paddingBefore',
  'paddingBottom',
  'paddingBottom',
  'paddingEnd',
  'paddingEnd',
  'paddingLeft',
  'paddingLeft',
  'paddingRight',
  'paddingRight',
  'paddingStart',
  'paddingStart',
  'paddingTop',
  'paddingTop',
  'page',
  'page',
  'pageBreakAfter',
  'pageBreakAfter',
  'pageBreakBefore',
  'pageBreakBefore',
  'pageBreakInside',
  'pageBreakInside',
  'perspective',
  'perspective',
  'perspectiveOrigin',
  'perspectiveOrigin',
  'perspectiveOriginX',
  'perspectiveOriginX',
  'perspectiveOriginY',
  'perspectiveOriginY',
  'pointerEvents',
  'pointerEvents',
  'position',
  'position',
  'printColorAdjust',
  'printColorAdjust',
  'quotes',
  'quotes',
  'resize',
  'resize',
  'right',
  'right',
  'rtlOrdering',
  'rtlOrdering',
  'rubyPosition',
  'rubyPosition',
  'scrollBehavior',
  'scrollBehavior',
  'shapeImageThreshold',
  'shapeImageThreshold',
  'shapeMargin',
  'shapeMargin',
  'shapeOutside',
  'shapeOutside',
  'size',
  'size',
  'speak',
  'speak',
  'src',
  'src',
  'tabSize',
  'tabSize',
  'tableLayout',
  'tableLayout',
  'tapHighlightColor',
  'tapHighlightColor',
  'textAlign',
  'textAlign',
  'textAlignLast',
  'textAlignLast',
  'textCombine',
  'textCombine',
  'textDecoration',
  'textDecoration',
  'textDecorationColor',
  'textDecorationColor',
  'textDecorationLine',
  'textDecorationLine',
  'textDecorationStyle',
  'textDecorationStyle',
  'textDecorationsInEffect',
  'textDecorationsInEffect',
  'textEmphasis',
  'textEmphasis',
  'textEmphasisColor',
  'textEmphasisColor',
  'textEmphasisPosition',
  'textEmphasisPosition',
  'textEmphasisStyle',
  'textEmphasisStyle',
  'textFillColor',
  'textFillColor',
  'textIndent',
  'textIndent',
  'textJustify',
  'textJustify',
  'textLineThroughColor',
  'textLineThroughColor',
  'textLineThroughMode',
  'textLineThroughMode',
  'textLineThroughStyle',
  'textLineThroughStyle',
  'textLineThroughWidth',
  'textLineThroughWidth',
  'textOrientation',
  'textOrientation',
  'textOverflow',
  'textOverflow',
  'textOverlineColor',
  'textOverlineColor',
  'textOverlineMode',
  'textOverlineMode',
  'textOverlineStyle',
  'textOverlineStyle',
  'textOverlineWidth',
  'textOverlineWidth',
  'textRendering',
  'textRendering',
  'textSecurity',
  'textSecurity',
  'textShadow',
  'textShadow',
  'textStroke',
  'textStroke',
  'textStrokeColor',
  'textStrokeColor',
  'textStrokeWidth',
  'textStrokeWidth',
  'textTransform',
  'textTransform',
  'textUnderlineColor',
  'textUnderlineColor',
  'textUnderlineMode',
  'textUnderlineMode',
  'textUnderlinePosition',
  'textUnderlinePosition',
  'textUnderlineStyle',
  'textUnderlineStyle',
  'textUnderlineWidth',
  'textUnderlineWidth',
  'top',
  'top',
  'touchAction',
  'touchAction',
  'touchActionDelay',
  'touchActionDelay',
  'transform',
  'transform',
  'transformOrigin',
  'transformOrigin',
  'transformOriginX',
  'transformOriginX',
  'transformOriginY',
  'transformOriginY',
  'transformOriginZ',
  'transformOriginZ',
  'transformStyle',
  'transformStyle',
  'transition',
  'transition',
  'transitionDelay',
  'transitionDelay',
  'transitionDuration',
  'transitionDuration',
  'transitionProperty',
  'transitionProperty',
  'transitionTimingFunction',
  'transitionTimingFunction',
  'unicodeBidi',
  'unicodeBidi',
  'unicodeRange',
  'unicodeRange',
  'userDrag',
  'userDrag',
  'userModify',
  'userModify',
  'userSelect',
  'userSelect',
  'userZoom',
  'userZoom',
  'verticalAlign',
  'verticalAlign',
  'visibility',
  'visibility',
  'whiteSpace',
  'whiteSpace',
  'widows',
  'widows',
  'width',
  'width',
  'willChange',
  'willChange',
  'wordBreak',
  'wordBreak',
  'wordSpacing',
  'wordSpacing',
  'wordWrap',
  'wordWrap',
  'wrapFlow',
  'wrapFlow',
  'wrapThrough',
  'wrapThrough',
  'writingMode',
  'writingMode',
  'zIndex',
  'zIndex',
  'zoom',
  'zoom'
]);
html.CssStyleDeclarationBase = class CssStyleDeclarationBase extends core.Object {
  get alignContent() {
    return this[dartx.getPropertyValue]('align-content');
  }
  set alignContent(value) {
    this[dartx.setProperty]('align-content', value, '');
  }
  get alignItems() {
    return this[dartx.getPropertyValue]('align-items');
  }
  set alignItems(value) {
    this[dartx.setProperty]('align-items', value, '');
  }
  get alignSelf() {
    return this[dartx.getPropertyValue]('align-self');
  }
  set alignSelf(value) {
    this[dartx.setProperty]('align-self', value, '');
  }
  get animation() {
    return this[dartx.getPropertyValue]('animation');
  }
  set animation(value) {
    this[dartx.setProperty]('animation', value, '');
  }
  get animationDelay() {
    return this[dartx.getPropertyValue]('animation-delay');
  }
  set animationDelay(value) {
    this[dartx.setProperty]('animation-delay', value, '');
  }
  get animationDirection() {
    return this[dartx.getPropertyValue]('animation-direction');
  }
  set animationDirection(value) {
    this[dartx.setProperty]('animation-direction', value, '');
  }
  get animationDuration() {
    return this[dartx.getPropertyValue]('animation-duration');
  }
  set animationDuration(value) {
    this[dartx.setProperty]('animation-duration', value, '');
  }
  get animationFillMode() {
    return this[dartx.getPropertyValue]('animation-fill-mode');
  }
  set animationFillMode(value) {
    this[dartx.setProperty]('animation-fill-mode', value, '');
  }
  get animationIterationCount() {
    return this[dartx.getPropertyValue]('animation-iteration-count');
  }
  set animationIterationCount(value) {
    this[dartx.setProperty]('animation-iteration-count', value, '');
  }
  get animationName() {
    return this[dartx.getPropertyValue]('animation-name');
  }
  set animationName(value) {
    this[dartx.setProperty]('animation-name', value, '');
  }
  get animationPlayState() {
    return this[dartx.getPropertyValue]('animation-play-state');
  }
  set animationPlayState(value) {
    this[dartx.setProperty]('animation-play-state', value, '');
  }
  get animationTimingFunction() {
    return this[dartx.getPropertyValue]('animation-timing-function');
  }
  set animationTimingFunction(value) {
    this[dartx.setProperty]('animation-timing-function', value, '');
  }
  get appRegion() {
    return this[dartx.getPropertyValue]('app-region');
  }
  set appRegion(value) {
    this[dartx.setProperty]('app-region', value, '');
  }
  get appearance() {
    return this[dartx.getPropertyValue]('appearance');
  }
  set appearance(value) {
    this[dartx.setProperty]('appearance', value, '');
  }
  get aspectRatio() {
    return this[dartx.getPropertyValue]('aspect-ratio');
  }
  set aspectRatio(value) {
    this[dartx.setProperty]('aspect-ratio', value, '');
  }
  get backfaceVisibility() {
    return this[dartx.getPropertyValue]('backface-visibility');
  }
  set backfaceVisibility(value) {
    this[dartx.setProperty]('backface-visibility', value, '');
  }
  get background() {
    return this[dartx.getPropertyValue]('background');
  }
  set background(value) {
    this[dartx.setProperty]('background', value, '');
  }
  get backgroundAttachment() {
    return this[dartx.getPropertyValue]('background-attachment');
  }
  set backgroundAttachment(value) {
    this[dartx.setProperty]('background-attachment', value, '');
  }
  get backgroundBlendMode() {
    return this[dartx.getPropertyValue]('background-blend-mode');
  }
  set backgroundBlendMode(value) {
    this[dartx.setProperty]('background-blend-mode', value, '');
  }
  get backgroundClip() {
    return this[dartx.getPropertyValue]('background-clip');
  }
  set backgroundClip(value) {
    this[dartx.setProperty]('background-clip', value, '');
  }
  get backgroundColor() {
    return this[dartx.getPropertyValue]('background-color');
  }
  set backgroundColor(value) {
    this[dartx.setProperty]('background-color', value, '');
  }
  get backgroundComposite() {
    return this[dartx.getPropertyValue]('background-composite');
  }
  set backgroundComposite(value) {
    this[dartx.setProperty]('background-composite', value, '');
  }
  get backgroundImage() {
    return this[dartx.getPropertyValue]('background-image');
  }
  set backgroundImage(value) {
    this[dartx.setProperty]('background-image', value, '');
  }
  get backgroundOrigin() {
    return this[dartx.getPropertyValue]('background-origin');
  }
  set backgroundOrigin(value) {
    this[dartx.setProperty]('background-origin', value, '');
  }
  get backgroundPosition() {
    return this[dartx.getPropertyValue]('background-position');
  }
  set backgroundPosition(value) {
    this[dartx.setProperty]('background-position', value, '');
  }
  get backgroundPositionX() {
    return this[dartx.getPropertyValue]('background-position-x');
  }
  set backgroundPositionX(value) {
    this[dartx.setProperty]('background-position-x', value, '');
  }
  get backgroundPositionY() {
    return this[dartx.getPropertyValue]('background-position-y');
  }
  set backgroundPositionY(value) {
    this[dartx.setProperty]('background-position-y', value, '');
  }
  get backgroundRepeat() {
    return this[dartx.getPropertyValue]('background-repeat');
  }
  set backgroundRepeat(value) {
    this[dartx.setProperty]('background-repeat', value, '');
  }
  get backgroundRepeatX() {
    return this[dartx.getPropertyValue]('background-repeat-x');
  }
  set backgroundRepeatX(value) {
    this[dartx.setProperty]('background-repeat-x', value, '');
  }
  get backgroundRepeatY() {
    return this[dartx.getPropertyValue]('background-repeat-y');
  }
  set backgroundRepeatY(value) {
    this[dartx.setProperty]('background-repeat-y', value, '');
  }
  get backgroundSize() {
    return this[dartx.getPropertyValue]('background-size');
  }
  set backgroundSize(value) {
    this[dartx.setProperty]('background-size', value, '');
  }
  get border() {
    return this[dartx.getPropertyValue]('border');
  }
  set border(value) {
    this[dartx.setProperty]('border', value, '');
  }
  get borderAfter() {
    return this[dartx.getPropertyValue]('border-after');
  }
  set borderAfter(value) {
    this[dartx.setProperty]('border-after', value, '');
  }
  get borderAfterColor() {
    return this[dartx.getPropertyValue]('border-after-color');
  }
  set borderAfterColor(value) {
    this[dartx.setProperty]('border-after-color', value, '');
  }
  get borderAfterStyle() {
    return this[dartx.getPropertyValue]('border-after-style');
  }
  set borderAfterStyle(value) {
    this[dartx.setProperty]('border-after-style', value, '');
  }
  get borderAfterWidth() {
    return this[dartx.getPropertyValue]('border-after-width');
  }
  set borderAfterWidth(value) {
    this[dartx.setProperty]('border-after-width', value, '');
  }
  get borderBefore() {
    return this[dartx.getPropertyValue]('border-before');
  }
  set borderBefore(value) {
    this[dartx.setProperty]('border-before', value, '');
  }
  get borderBeforeColor() {
    return this[dartx.getPropertyValue]('border-before-color');
  }
  set borderBeforeColor(value) {
    this[dartx.setProperty]('border-before-color', value, '');
  }
  get borderBeforeStyle() {
    return this[dartx.getPropertyValue]('border-before-style');
  }
  set borderBeforeStyle(value) {
    this[dartx.setProperty]('border-before-style', value, '');
  }
  get borderBeforeWidth() {
    return this[dartx.getPropertyValue]('border-before-width');
  }
  set borderBeforeWidth(value) {
    this[dartx.setProperty]('border-before-width', value, '');
  }
  get borderBottom() {
    return this[dartx.getPropertyValue]('border-bottom');
  }
  set borderBottom(value) {
    this[dartx.setProperty]('border-bottom', value, '');
  }
  get borderBottomColor() {
    return this[dartx.getPropertyValue]('border-bottom-color');
  }
  set borderBottomColor(value) {
    this[dartx.setProperty]('border-bottom-color', value, '');
  }
  get borderBottomLeftRadius() {
    return this[dartx.getPropertyValue]('border-bottom-left-radius');
  }
  set borderBottomLeftRadius(value) {
    this[dartx.setProperty]('border-bottom-left-radius', value, '');
  }
  get borderBottomRightRadius() {
    return this[dartx.getPropertyValue]('border-bottom-right-radius');
  }
  set borderBottomRightRadius(value) {
    this[dartx.setProperty]('border-bottom-right-radius', value, '');
  }
  get borderBottomStyle() {
    return this[dartx.getPropertyValue]('border-bottom-style');
  }
  set borderBottomStyle(value) {
    this[dartx.setProperty]('border-bottom-style', value, '');
  }
  get borderBottomWidth() {
    return this[dartx.getPropertyValue]('border-bottom-width');
  }
  set borderBottomWidth(value) {
    this[dartx.setProperty]('border-bottom-width', value, '');
  }
  get borderCollapse() {
    return this[dartx.getPropertyValue]('border-collapse');
  }
  set borderCollapse(value) {
    this[dartx.setProperty]('border-collapse', value, '');
  }
  get borderColor() {
    return this[dartx.getPropertyValue]('border-color');
  }
  set borderColor(value) {
    this[dartx.setProperty]('border-color', value, '');
  }
  get borderEnd() {
    return this[dartx.getPropertyValue]('border-end');
  }
  set borderEnd(value) {
    this[dartx.setProperty]('border-end', value, '');
  }
  get borderEndColor() {
    return this[dartx.getPropertyValue]('border-end-color');
  }
  set borderEndColor(value) {
    this[dartx.setProperty]('border-end-color', value, '');
  }
  get borderEndStyle() {
    return this[dartx.getPropertyValue]('border-end-style');
  }
  set borderEndStyle(value) {
    this[dartx.setProperty]('border-end-style', value, '');
  }
  get borderEndWidth() {
    return this[dartx.getPropertyValue]('border-end-width');
  }
  set borderEndWidth(value) {
    this[dartx.setProperty]('border-end-width', value, '');
  }
  get borderFit() {
    return this[dartx.getPropertyValue]('border-fit');
  }
  set borderFit(value) {
    this[dartx.setProperty]('border-fit', value, '');
  }
  get borderHorizontalSpacing() {
    return this[dartx.getPropertyValue]('border-horizontal-spacing');
  }
  set borderHorizontalSpacing(value) {
    this[dartx.setProperty]('border-horizontal-spacing', value, '');
  }
  get borderImage() {
    return this[dartx.getPropertyValue]('border-image');
  }
  set borderImage(value) {
    this[dartx.setProperty]('border-image', value, '');
  }
  get borderImageOutset() {
    return this[dartx.getPropertyValue]('border-image-outset');
  }
  set borderImageOutset(value) {
    this[dartx.setProperty]('border-image-outset', value, '');
  }
  get borderImageRepeat() {
    return this[dartx.getPropertyValue]('border-image-repeat');
  }
  set borderImageRepeat(value) {
    this[dartx.setProperty]('border-image-repeat', value, '');
  }
  get borderImageSlice() {
    return this[dartx.getPropertyValue]('border-image-slice');
  }
  set borderImageSlice(value) {
    this[dartx.setProperty]('border-image-slice', value, '');
  }
  get borderImageSource() {
    return this[dartx.getPropertyValue]('border-image-source');
  }
  set borderImageSource(value) {
    this[dartx.setProperty]('border-image-source', value, '');
  }
  get borderImageWidth() {
    return this[dartx.getPropertyValue]('border-image-width');
  }
  set borderImageWidth(value) {
    this[dartx.setProperty]('border-image-width', value, '');
  }
  get borderLeft() {
    return this[dartx.getPropertyValue]('border-left');
  }
  set borderLeft(value) {
    this[dartx.setProperty]('border-left', value, '');
  }
  get borderLeftColor() {
    return this[dartx.getPropertyValue]('border-left-color');
  }
  set borderLeftColor(value) {
    this[dartx.setProperty]('border-left-color', value, '');
  }
  get borderLeftStyle() {
    return this[dartx.getPropertyValue]('border-left-style');
  }
  set borderLeftStyle(value) {
    this[dartx.setProperty]('border-left-style', value, '');
  }
  get borderLeftWidth() {
    return this[dartx.getPropertyValue]('border-left-width');
  }
  set borderLeftWidth(value) {
    this[dartx.setProperty]('border-left-width', value, '');
  }
  get borderRadius() {
    return this[dartx.getPropertyValue]('border-radius');
  }
  set borderRadius(value) {
    this[dartx.setProperty]('border-radius', value, '');
  }
  get borderRight() {
    return this[dartx.getPropertyValue]('border-right');
  }
  set borderRight(value) {
    this[dartx.setProperty]('border-right', value, '');
  }
  get borderRightColor() {
    return this[dartx.getPropertyValue]('border-right-color');
  }
  set borderRightColor(value) {
    this[dartx.setProperty]('border-right-color', value, '');
  }
  get borderRightStyle() {
    return this[dartx.getPropertyValue]('border-right-style');
  }
  set borderRightStyle(value) {
    this[dartx.setProperty]('border-right-style', value, '');
  }
  get borderRightWidth() {
    return this[dartx.getPropertyValue]('border-right-width');
  }
  set borderRightWidth(value) {
    this[dartx.setProperty]('border-right-width', value, '');
  }
  get borderSpacing() {
    return this[dartx.getPropertyValue]('border-spacing');
  }
  set borderSpacing(value) {
    this[dartx.setProperty]('border-spacing', value, '');
  }
  get borderStart() {
    return this[dartx.getPropertyValue]('border-start');
  }
  set borderStart(value) {
    this[dartx.setProperty]('border-start', value, '');
  }
  get borderStartColor() {
    return this[dartx.getPropertyValue]('border-start-color');
  }
  set borderStartColor(value) {
    this[dartx.setProperty]('border-start-color', value, '');
  }
  get borderStartStyle() {
    return this[dartx.getPropertyValue]('border-start-style');
  }
  set borderStartStyle(value) {
    this[dartx.setProperty]('border-start-style', value, '');
  }
  get borderStartWidth() {
    return this[dartx.getPropertyValue]('border-start-width');
  }
  set borderStartWidth(value) {
    this[dartx.setProperty]('border-start-width', value, '');
  }
  get borderStyle() {
    return this[dartx.getPropertyValue]('border-style');
  }
  set borderStyle(value) {
    this[dartx.setProperty]('border-style', value, '');
  }
  get borderTop() {
    return this[dartx.getPropertyValue]('border-top');
  }
  set borderTop(value) {
    this[dartx.setProperty]('border-top', value, '');
  }
  get borderTopColor() {
    return this[dartx.getPropertyValue]('border-top-color');
  }
  set borderTopColor(value) {
    this[dartx.setProperty]('border-top-color', value, '');
  }
  get borderTopLeftRadius() {
    return this[dartx.getPropertyValue]('border-top-left-radius');
  }
  set borderTopLeftRadius(value) {
    this[dartx.setProperty]('border-top-left-radius', value, '');
  }
  get borderTopRightRadius() {
    return this[dartx.getPropertyValue]('border-top-right-radius');
  }
  set borderTopRightRadius(value) {
    this[dartx.setProperty]('border-top-right-radius', value, '');
  }
  get borderTopStyle() {
    return this[dartx.getPropertyValue]('border-top-style');
  }
  set borderTopStyle(value) {
    this[dartx.setProperty]('border-top-style', value, '');
  }
  get borderTopWidth() {
    return this[dartx.getPropertyValue]('border-top-width');
  }
  set borderTopWidth(value) {
    this[dartx.setProperty]('border-top-width', value, '');
  }
  get borderVerticalSpacing() {
    return this[dartx.getPropertyValue]('border-vertical-spacing');
  }
  set borderVerticalSpacing(value) {
    this[dartx.setProperty]('border-vertical-spacing', value, '');
  }
  get borderWidth() {
    return this[dartx.getPropertyValue]('border-width');
  }
  set borderWidth(value) {
    this[dartx.setProperty]('border-width', value, '');
  }
  get bottom() {
    return this[dartx.getPropertyValue]('bottom');
  }
  set bottom(value) {
    this[dartx.setProperty]('bottom', value, '');
  }
  get boxAlign() {
    return this[dartx.getPropertyValue]('box-align');
  }
  set boxAlign(value) {
    this[dartx.setProperty]('box-align', value, '');
  }
  get boxDecorationBreak() {
    return this[dartx.getPropertyValue]('box-decoration-break');
  }
  set boxDecorationBreak(value) {
    this[dartx.setProperty]('box-decoration-break', value, '');
  }
  get boxDirection() {
    return this[dartx.getPropertyValue]('box-direction');
  }
  set boxDirection(value) {
    this[dartx.setProperty]('box-direction', value, '');
  }
  get boxFlex() {
    return this[dartx.getPropertyValue]('box-flex');
  }
  set boxFlex(value) {
    this[dartx.setProperty]('box-flex', value, '');
  }
  get boxFlexGroup() {
    return this[dartx.getPropertyValue]('box-flex-group');
  }
  set boxFlexGroup(value) {
    this[dartx.setProperty]('box-flex-group', value, '');
  }
  get boxLines() {
    return this[dartx.getPropertyValue]('box-lines');
  }
  set boxLines(value) {
    this[dartx.setProperty]('box-lines', value, '');
  }
  get boxOrdinalGroup() {
    return this[dartx.getPropertyValue]('box-ordinal-group');
  }
  set boxOrdinalGroup(value) {
    this[dartx.setProperty]('box-ordinal-group', value, '');
  }
  get boxOrient() {
    return this[dartx.getPropertyValue]('box-orient');
  }
  set boxOrient(value) {
    this[dartx.setProperty]('box-orient', value, '');
  }
  get boxPack() {
    return this[dartx.getPropertyValue]('box-pack');
  }
  set boxPack(value) {
    this[dartx.setProperty]('box-pack', value, '');
  }
  get boxReflect() {
    return this[dartx.getPropertyValue]('box-reflect');
  }
  set boxReflect(value) {
    this[dartx.setProperty]('box-reflect', value, '');
  }
  get boxShadow() {
    return this[dartx.getPropertyValue]('box-shadow');
  }
  set boxShadow(value) {
    this[dartx.setProperty]('box-shadow', value, '');
  }
  get boxSizing() {
    return this[dartx.getPropertyValue]('box-sizing');
  }
  set boxSizing(value) {
    this[dartx.setProperty]('box-sizing', value, '');
  }
  get captionSide() {
    return this[dartx.getPropertyValue]('caption-side');
  }
  set captionSide(value) {
    this[dartx.setProperty]('caption-side', value, '');
  }
  get clear() {
    return this[dartx.getPropertyValue]('clear');
  }
  set clear(value) {
    this[dartx.setProperty]('clear', value, '');
  }
  get clip() {
    return this[dartx.getPropertyValue]('clip');
  }
  set clip(value) {
    this[dartx.setProperty]('clip', value, '');
  }
  get clipPath() {
    return this[dartx.getPropertyValue]('clip-path');
  }
  set clipPath(value) {
    this[dartx.setProperty]('clip-path', value, '');
  }
  get color() {
    return this[dartx.getPropertyValue]('color');
  }
  set color(value) {
    this[dartx.setProperty]('color', value, '');
  }
  get columnBreakAfter() {
    return this[dartx.getPropertyValue]('column-break-after');
  }
  set columnBreakAfter(value) {
    this[dartx.setProperty]('column-break-after', value, '');
  }
  get columnBreakBefore() {
    return this[dartx.getPropertyValue]('column-break-before');
  }
  set columnBreakBefore(value) {
    this[dartx.setProperty]('column-break-before', value, '');
  }
  get columnBreakInside() {
    return this[dartx.getPropertyValue]('column-break-inside');
  }
  set columnBreakInside(value) {
    this[dartx.setProperty]('column-break-inside', value, '');
  }
  get columnCount() {
    return this[dartx.getPropertyValue]('column-count');
  }
  set columnCount(value) {
    this[dartx.setProperty]('column-count', value, '');
  }
  get columnFill() {
    return this[dartx.getPropertyValue]('column-fill');
  }
  set columnFill(value) {
    this[dartx.setProperty]('column-fill', value, '');
  }
  get columnGap() {
    return this[dartx.getPropertyValue]('column-gap');
  }
  set columnGap(value) {
    this[dartx.setProperty]('column-gap', value, '');
  }
  get columnRule() {
    return this[dartx.getPropertyValue]('column-rule');
  }
  set columnRule(value) {
    this[dartx.setProperty]('column-rule', value, '');
  }
  get columnRuleColor() {
    return this[dartx.getPropertyValue]('column-rule-color');
  }
  set columnRuleColor(value) {
    this[dartx.setProperty]('column-rule-color', value, '');
  }
  get columnRuleStyle() {
    return this[dartx.getPropertyValue]('column-rule-style');
  }
  set columnRuleStyle(value) {
    this[dartx.setProperty]('column-rule-style', value, '');
  }
  get columnRuleWidth() {
    return this[dartx.getPropertyValue]('column-rule-width');
  }
  set columnRuleWidth(value) {
    this[dartx.setProperty]('column-rule-width', value, '');
  }
  get columnSpan() {
    return this[dartx.getPropertyValue]('column-span');
  }
  set columnSpan(value) {
    this[dartx.setProperty]('column-span', value, '');
  }
  get columnWidth() {
    return this[dartx.getPropertyValue]('column-width');
  }
  set columnWidth(value) {
    this[dartx.setProperty]('column-width', value, '');
  }
  get columns() {
    return this[dartx.getPropertyValue]('columns');
  }
  set columns(value) {
    this[dartx.setProperty]('columns', value, '');
  }
  get content() {
    return this[dartx.getPropertyValue]('content');
  }
  set content(value) {
    this[dartx.setProperty]('content', value, '');
  }
  get counterIncrement() {
    return this[dartx.getPropertyValue]('counter-increment');
  }
  set counterIncrement(value) {
    this[dartx.setProperty]('counter-increment', value, '');
  }
  get counterReset() {
    return this[dartx.getPropertyValue]('counter-reset');
  }
  set counterReset(value) {
    this[dartx.setProperty]('counter-reset', value, '');
  }
  get cursor() {
    return this[dartx.getPropertyValue]('cursor');
  }
  set cursor(value) {
    this[dartx.setProperty]('cursor', value, '');
  }
  get direction() {
    return this[dartx.getPropertyValue]('direction');
  }
  set direction(value) {
    this[dartx.setProperty]('direction', value, '');
  }
  get display() {
    return this[dartx.getPropertyValue]('display');
  }
  set display(value) {
    this[dartx.setProperty]('display', value, '');
  }
  get emptyCells() {
    return this[dartx.getPropertyValue]('empty-cells');
  }
  set emptyCells(value) {
    this[dartx.setProperty]('empty-cells', value, '');
  }
  get filter() {
    return this[dartx.getPropertyValue]('filter');
  }
  set filter(value) {
    this[dartx.setProperty]('filter', value, '');
  }
  get flex() {
    return this[dartx.getPropertyValue]('flex');
  }
  set flex(value) {
    this[dartx.setProperty]('flex', value, '');
  }
  get flexBasis() {
    return this[dartx.getPropertyValue]('flex-basis');
  }
  set flexBasis(value) {
    this[dartx.setProperty]('flex-basis', value, '');
  }
  get flexDirection() {
    return this[dartx.getPropertyValue]('flex-direction');
  }
  set flexDirection(value) {
    this[dartx.setProperty]('flex-direction', value, '');
  }
  get flexFlow() {
    return this[dartx.getPropertyValue]('flex-flow');
  }
  set flexFlow(value) {
    this[dartx.setProperty]('flex-flow', value, '');
  }
  get flexGrow() {
    return this[dartx.getPropertyValue]('flex-grow');
  }
  set flexGrow(value) {
    this[dartx.setProperty]('flex-grow', value, '');
  }
  get flexShrink() {
    return this[dartx.getPropertyValue]('flex-shrink');
  }
  set flexShrink(value) {
    this[dartx.setProperty]('flex-shrink', value, '');
  }
  get flexWrap() {
    return this[dartx.getPropertyValue]('flex-wrap');
  }
  set flexWrap(value) {
    this[dartx.setProperty]('flex-wrap', value, '');
  }
  get float() {
    return this[dartx.getPropertyValue]('float');
  }
  set float(value) {
    this[dartx.setProperty]('float', value, '');
  }
  get font() {
    return this[dartx.getPropertyValue]('font');
  }
  set font(value) {
    this[dartx.setProperty]('font', value, '');
  }
  get fontFamily() {
    return this[dartx.getPropertyValue]('font-family');
  }
  set fontFamily(value) {
    this[dartx.setProperty]('font-family', value, '');
  }
  get fontFeatureSettings() {
    return this[dartx.getPropertyValue]('font-feature-settings');
  }
  set fontFeatureSettings(value) {
    this[dartx.setProperty]('font-feature-settings', value, '');
  }
  get fontKerning() {
    return this[dartx.getPropertyValue]('font-kerning');
  }
  set fontKerning(value) {
    this[dartx.setProperty]('font-kerning', value, '');
  }
  get fontSize() {
    return this[dartx.getPropertyValue]('font-size');
  }
  set fontSize(value) {
    this[dartx.setProperty]('font-size', value, '');
  }
  get fontSizeDelta() {
    return this[dartx.getPropertyValue]('font-size-delta');
  }
  set fontSizeDelta(value) {
    this[dartx.setProperty]('font-size-delta', value, '');
  }
  get fontSmoothing() {
    return this[dartx.getPropertyValue]('font-smoothing');
  }
  set fontSmoothing(value) {
    this[dartx.setProperty]('font-smoothing', value, '');
  }
  get fontStretch() {
    return this[dartx.getPropertyValue]('font-stretch');
  }
  set fontStretch(value) {
    this[dartx.setProperty]('font-stretch', value, '');
  }
  get fontStyle() {
    return this[dartx.getPropertyValue]('font-style');
  }
  set fontStyle(value) {
    this[dartx.setProperty]('font-style', value, '');
  }
  get fontVariant() {
    return this[dartx.getPropertyValue]('font-variant');
  }
  set fontVariant(value) {
    this[dartx.setProperty]('font-variant', value, '');
  }
  get fontVariantLigatures() {
    return this[dartx.getPropertyValue]('font-variant-ligatures');
  }
  set fontVariantLigatures(value) {
    this[dartx.setProperty]('font-variant-ligatures', value, '');
  }
  get fontWeight() {
    return this[dartx.getPropertyValue]('font-weight');
  }
  set fontWeight(value) {
    this[dartx.setProperty]('font-weight', value, '');
  }
  get grid() {
    return this[dartx.getPropertyValue]('grid');
  }
  set grid(value) {
    this[dartx.setProperty]('grid', value, '');
  }
  get gridArea() {
    return this[dartx.getPropertyValue]('grid-area');
  }
  set gridArea(value) {
    this[dartx.setProperty]('grid-area', value, '');
  }
  get gridAutoColumns() {
    return this[dartx.getPropertyValue]('grid-auto-columns');
  }
  set gridAutoColumns(value) {
    this[dartx.setProperty]('grid-auto-columns', value, '');
  }
  get gridAutoFlow() {
    return this[dartx.getPropertyValue]('grid-auto-flow');
  }
  set gridAutoFlow(value) {
    this[dartx.setProperty]('grid-auto-flow', value, '');
  }
  get gridAutoRows() {
    return this[dartx.getPropertyValue]('grid-auto-rows');
  }
  set gridAutoRows(value) {
    this[dartx.setProperty]('grid-auto-rows', value, '');
  }
  get gridColumn() {
    return this[dartx.getPropertyValue]('grid-column');
  }
  set gridColumn(value) {
    this[dartx.setProperty]('grid-column', value, '');
  }
  get gridColumnEnd() {
    return this[dartx.getPropertyValue]('grid-column-end');
  }
  set gridColumnEnd(value) {
    this[dartx.setProperty]('grid-column-end', value, '');
  }
  get gridColumnStart() {
    return this[dartx.getPropertyValue]('grid-column-start');
  }
  set gridColumnStart(value) {
    this[dartx.setProperty]('grid-column-start', value, '');
  }
  get gridRow() {
    return this[dartx.getPropertyValue]('grid-row');
  }
  set gridRow(value) {
    this[dartx.setProperty]('grid-row', value, '');
  }
  get gridRowEnd() {
    return this[dartx.getPropertyValue]('grid-row-end');
  }
  set gridRowEnd(value) {
    this[dartx.setProperty]('grid-row-end', value, '');
  }
  get gridRowStart() {
    return this[dartx.getPropertyValue]('grid-row-start');
  }
  set gridRowStart(value) {
    this[dartx.setProperty]('grid-row-start', value, '');
  }
  get gridTemplate() {
    return this[dartx.getPropertyValue]('grid-template');
  }
  set gridTemplate(value) {
    this[dartx.setProperty]('grid-template', value, '');
  }
  get gridTemplateAreas() {
    return this[dartx.getPropertyValue]('grid-template-areas');
  }
  set gridTemplateAreas(value) {
    this[dartx.setProperty]('grid-template-areas', value, '');
  }
  get gridTemplateColumns() {
    return this[dartx.getPropertyValue]('grid-template-columns');
  }
  set gridTemplateColumns(value) {
    this[dartx.setProperty]('grid-template-columns', value, '');
  }
  get gridTemplateRows() {
    return this[dartx.getPropertyValue]('grid-template-rows');
  }
  set gridTemplateRows(value) {
    this[dartx.setProperty]('grid-template-rows', value, '');
  }
  get height() {
    return this[dartx.getPropertyValue]('height');
  }
  set height(value) {
    this[dartx.setProperty]('height', value, '');
  }
  get highlight() {
    return this[dartx.getPropertyValue]('highlight');
  }
  set highlight(value) {
    this[dartx.setProperty]('highlight', value, '');
  }
  get hyphenateCharacter() {
    return this[dartx.getPropertyValue]('hyphenate-character');
  }
  set hyphenateCharacter(value) {
    this[dartx.setProperty]('hyphenate-character', value, '');
  }
  get imageRendering() {
    return this[dartx.getPropertyValue]('image-rendering');
  }
  set imageRendering(value) {
    this[dartx.setProperty]('image-rendering', value, '');
  }
  get isolation() {
    return this[dartx.getPropertyValue]('isolation');
  }
  set isolation(value) {
    this[dartx.setProperty]('isolation', value, '');
  }
  get justifyContent() {
    return this[dartx.getPropertyValue]('justify-content');
  }
  set justifyContent(value) {
    this[dartx.setProperty]('justify-content', value, '');
  }
  get justifySelf() {
    return this[dartx.getPropertyValue]('justify-self');
  }
  set justifySelf(value) {
    this[dartx.setProperty]('justify-self', value, '');
  }
  get left() {
    return this[dartx.getPropertyValue]('left');
  }
  set left(value) {
    this[dartx.setProperty]('left', value, '');
  }
  get letterSpacing() {
    return this[dartx.getPropertyValue]('letter-spacing');
  }
  set letterSpacing(value) {
    this[dartx.setProperty]('letter-spacing', value, '');
  }
  get lineBoxContain() {
    return this[dartx.getPropertyValue]('line-box-contain');
  }
  set lineBoxContain(value) {
    this[dartx.setProperty]('line-box-contain', value, '');
  }
  get lineBreak() {
    return this[dartx.getPropertyValue]('line-break');
  }
  set lineBreak(value) {
    this[dartx.setProperty]('line-break', value, '');
  }
  get lineClamp() {
    return this[dartx.getPropertyValue]('line-clamp');
  }
  set lineClamp(value) {
    this[dartx.setProperty]('line-clamp', value, '');
  }
  get lineHeight() {
    return this[dartx.getPropertyValue]('line-height');
  }
  set lineHeight(value) {
    this[dartx.setProperty]('line-height', value, '');
  }
  get listStyle() {
    return this[dartx.getPropertyValue]('list-style');
  }
  set listStyle(value) {
    this[dartx.setProperty]('list-style', value, '');
  }
  get listStyleImage() {
    return this[dartx.getPropertyValue]('list-style-image');
  }
  set listStyleImage(value) {
    this[dartx.setProperty]('list-style-image', value, '');
  }
  get listStylePosition() {
    return this[dartx.getPropertyValue]('list-style-position');
  }
  set listStylePosition(value) {
    this[dartx.setProperty]('list-style-position', value, '');
  }
  get listStyleType() {
    return this[dartx.getPropertyValue]('list-style-type');
  }
  set listStyleType(value) {
    this[dartx.setProperty]('list-style-type', value, '');
  }
  get locale() {
    return this[dartx.getPropertyValue]('locale');
  }
  set locale(value) {
    this[dartx.setProperty]('locale', value, '');
  }
  get logicalHeight() {
    return this[dartx.getPropertyValue]('logical-height');
  }
  set logicalHeight(value) {
    this[dartx.setProperty]('logical-height', value, '');
  }
  get logicalWidth() {
    return this[dartx.getPropertyValue]('logical-width');
  }
  set logicalWidth(value) {
    this[dartx.setProperty]('logical-width', value, '');
  }
  get margin() {
    return this[dartx.getPropertyValue]('margin');
  }
  set margin(value) {
    this[dartx.setProperty]('margin', value, '');
  }
  get marginAfter() {
    return this[dartx.getPropertyValue]('margin-after');
  }
  set marginAfter(value) {
    this[dartx.setProperty]('margin-after', value, '');
  }
  get marginAfterCollapse() {
    return this[dartx.getPropertyValue]('margin-after-collapse');
  }
  set marginAfterCollapse(value) {
    this[dartx.setProperty]('margin-after-collapse', value, '');
  }
  get marginBefore() {
    return this[dartx.getPropertyValue]('margin-before');
  }
  set marginBefore(value) {
    this[dartx.setProperty]('margin-before', value, '');
  }
  get marginBeforeCollapse() {
    return this[dartx.getPropertyValue]('margin-before-collapse');
  }
  set marginBeforeCollapse(value) {
    this[dartx.setProperty]('margin-before-collapse', value, '');
  }
  get marginBottom() {
    return this[dartx.getPropertyValue]('margin-bottom');
  }
  set marginBottom(value) {
    this[dartx.setProperty]('margin-bottom', value, '');
  }
  get marginBottomCollapse() {
    return this[dartx.getPropertyValue]('margin-bottom-collapse');
  }
  set marginBottomCollapse(value) {
    this[dartx.setProperty]('margin-bottom-collapse', value, '');
  }
  get marginCollapse() {
    return this[dartx.getPropertyValue]('margin-collapse');
  }
  set marginCollapse(value) {
    this[dartx.setProperty]('margin-collapse', value, '');
  }
  get marginEnd() {
    return this[dartx.getPropertyValue]('margin-end');
  }
  set marginEnd(value) {
    this[dartx.setProperty]('margin-end', value, '');
  }
  get marginLeft() {
    return this[dartx.getPropertyValue]('margin-left');
  }
  set marginLeft(value) {
    this[dartx.setProperty]('margin-left', value, '');
  }
  get marginRight() {
    return this[dartx.getPropertyValue]('margin-right');
  }
  set marginRight(value) {
    this[dartx.setProperty]('margin-right', value, '');
  }
  get marginStart() {
    return this[dartx.getPropertyValue]('margin-start');
  }
  set marginStart(value) {
    this[dartx.setProperty]('margin-start', value, '');
  }
  get marginTop() {
    return this[dartx.getPropertyValue]('margin-top');
  }
  set marginTop(value) {
    this[dartx.setProperty]('margin-top', value, '');
  }
  get marginTopCollapse() {
    return this[dartx.getPropertyValue]('margin-top-collapse');
  }
  set marginTopCollapse(value) {
    this[dartx.setProperty]('margin-top-collapse', value, '');
  }
  get mask() {
    return this[dartx.getPropertyValue]('mask');
  }
  set mask(value) {
    this[dartx.setProperty]('mask', value, '');
  }
  get maskBoxImage() {
    return this[dartx.getPropertyValue]('mask-box-image');
  }
  set maskBoxImage(value) {
    this[dartx.setProperty]('mask-box-image', value, '');
  }
  get maskBoxImageOutset() {
    return this[dartx.getPropertyValue]('mask-box-image-outset');
  }
  set maskBoxImageOutset(value) {
    this[dartx.setProperty]('mask-box-image-outset', value, '');
  }
  get maskBoxImageRepeat() {
    return this[dartx.getPropertyValue]('mask-box-image-repeat');
  }
  set maskBoxImageRepeat(value) {
    this[dartx.setProperty]('mask-box-image-repeat', value, '');
  }
  get maskBoxImageSlice() {
    return this[dartx.getPropertyValue]('mask-box-image-slice');
  }
  set maskBoxImageSlice(value) {
    this[dartx.setProperty]('mask-box-image-slice', value, '');
  }
  get maskBoxImageSource() {
    return this[dartx.getPropertyValue]('mask-box-image-source');
  }
  set maskBoxImageSource(value) {
    this[dartx.setProperty]('mask-box-image-source', value, '');
  }
  get maskBoxImageWidth() {
    return this[dartx.getPropertyValue]('mask-box-image-width');
  }
  set maskBoxImageWidth(value) {
    this[dartx.setProperty]('mask-box-image-width', value, '');
  }
  get maskClip() {
    return this[dartx.getPropertyValue]('mask-clip');
  }
  set maskClip(value) {
    this[dartx.setProperty]('mask-clip', value, '');
  }
  get maskComposite() {
    return this[dartx.getPropertyValue]('mask-composite');
  }
  set maskComposite(value) {
    this[dartx.setProperty]('mask-composite', value, '');
  }
  get maskImage() {
    return this[dartx.getPropertyValue]('mask-image');
  }
  set maskImage(value) {
    this[dartx.setProperty]('mask-image', value, '');
  }
  get maskOrigin() {
    return this[dartx.getPropertyValue]('mask-origin');
  }
  set maskOrigin(value) {
    this[dartx.setProperty]('mask-origin', value, '');
  }
  get maskPosition() {
    return this[dartx.getPropertyValue]('mask-position');
  }
  set maskPosition(value) {
    this[dartx.setProperty]('mask-position', value, '');
  }
  get maskPositionX() {
    return this[dartx.getPropertyValue]('mask-position-x');
  }
  set maskPositionX(value) {
    this[dartx.setProperty]('mask-position-x', value, '');
  }
  get maskPositionY() {
    return this[dartx.getPropertyValue]('mask-position-y');
  }
  set maskPositionY(value) {
    this[dartx.setProperty]('mask-position-y', value, '');
  }
  get maskRepeat() {
    return this[dartx.getPropertyValue]('mask-repeat');
  }
  set maskRepeat(value) {
    this[dartx.setProperty]('mask-repeat', value, '');
  }
  get maskRepeatX() {
    return this[dartx.getPropertyValue]('mask-repeat-x');
  }
  set maskRepeatX(value) {
    this[dartx.setProperty]('mask-repeat-x', value, '');
  }
  get maskRepeatY() {
    return this[dartx.getPropertyValue]('mask-repeat-y');
  }
  set maskRepeatY(value) {
    this[dartx.setProperty]('mask-repeat-y', value, '');
  }
  get maskSize() {
    return this[dartx.getPropertyValue]('mask-size');
  }
  set maskSize(value) {
    this[dartx.setProperty]('mask-size', value, '');
  }
  get maskSourceType() {
    return this[dartx.getPropertyValue]('mask-source-type');
  }
  set maskSourceType(value) {
    this[dartx.setProperty]('mask-source-type', value, '');
  }
  get maxHeight() {
    return this[dartx.getPropertyValue]('max-height');
  }
  set maxHeight(value) {
    this[dartx.setProperty]('max-height', value, '');
  }
  get maxLogicalHeight() {
    return this[dartx.getPropertyValue]('max-logical-height');
  }
  set maxLogicalHeight(value) {
    this[dartx.setProperty]('max-logical-height', value, '');
  }
  get maxLogicalWidth() {
    return this[dartx.getPropertyValue]('max-logical-width');
  }
  set maxLogicalWidth(value) {
    this[dartx.setProperty]('max-logical-width', value, '');
  }
  get maxWidth() {
    return this[dartx.getPropertyValue]('max-width');
  }
  set maxWidth(value) {
    this[dartx.setProperty]('max-width', value, '');
  }
  get maxZoom() {
    return this[dartx.getPropertyValue]('max-zoom');
  }
  set maxZoom(value) {
    this[dartx.setProperty]('max-zoom', value, '');
  }
  get minHeight() {
    return this[dartx.getPropertyValue]('min-height');
  }
  set minHeight(value) {
    this[dartx.setProperty]('min-height', value, '');
  }
  get minLogicalHeight() {
    return this[dartx.getPropertyValue]('min-logical-height');
  }
  set minLogicalHeight(value) {
    this[dartx.setProperty]('min-logical-height', value, '');
  }
  get minLogicalWidth() {
    return this[dartx.getPropertyValue]('min-logical-width');
  }
  set minLogicalWidth(value) {
    this[dartx.setProperty]('min-logical-width', value, '');
  }
  get minWidth() {
    return this[dartx.getPropertyValue]('min-width');
  }
  set minWidth(value) {
    this[dartx.setProperty]('min-width', value, '');
  }
  get minZoom() {
    return this[dartx.getPropertyValue]('min-zoom');
  }
  set minZoom(value) {
    this[dartx.setProperty]('min-zoom', value, '');
  }
  get mixBlendMode() {
    return this[dartx.getPropertyValue]('mix-blend-mode');
  }
  set mixBlendMode(value) {
    this[dartx.setProperty]('mix-blend-mode', value, '');
  }
  get objectFit() {
    return this[dartx.getPropertyValue]('object-fit');
  }
  set objectFit(value) {
    this[dartx.setProperty]('object-fit', value, '');
  }
  get objectPosition() {
    return this[dartx.getPropertyValue]('object-position');
  }
  set objectPosition(value) {
    this[dartx.setProperty]('object-position', value, '');
  }
  get opacity() {
    return this[dartx.getPropertyValue]('opacity');
  }
  set opacity(value) {
    this[dartx.setProperty]('opacity', value, '');
  }
  get order() {
    return this[dartx.getPropertyValue]('order');
  }
  set order(value) {
    this[dartx.setProperty]('order', value, '');
  }
  get orientation() {
    return this[dartx.getPropertyValue]('orientation');
  }
  set orientation(value) {
    this[dartx.setProperty]('orientation', value, '');
  }
  get orphans() {
    return this[dartx.getPropertyValue]('orphans');
  }
  set orphans(value) {
    this[dartx.setProperty]('orphans', value, '');
  }
  get outline() {
    return this[dartx.getPropertyValue]('outline');
  }
  set outline(value) {
    this[dartx.setProperty]('outline', value, '');
  }
  get outlineColor() {
    return this[dartx.getPropertyValue]('outline-color');
  }
  set outlineColor(value) {
    this[dartx.setProperty]('outline-color', value, '');
  }
  get outlineOffset() {
    return this[dartx.getPropertyValue]('outline-offset');
  }
  set outlineOffset(value) {
    this[dartx.setProperty]('outline-offset', value, '');
  }
  get outlineStyle() {
    return this[dartx.getPropertyValue]('outline-style');
  }
  set outlineStyle(value) {
    this[dartx.setProperty]('outline-style', value, '');
  }
  get outlineWidth() {
    return this[dartx.getPropertyValue]('outline-width');
  }
  set outlineWidth(value) {
    this[dartx.setProperty]('outline-width', value, '');
  }
  get overflow() {
    return this[dartx.getPropertyValue]('overflow');
  }
  set overflow(value) {
    this[dartx.setProperty]('overflow', value, '');
  }
  get overflowWrap() {
    return this[dartx.getPropertyValue]('overflow-wrap');
  }
  set overflowWrap(value) {
    this[dartx.setProperty]('overflow-wrap', value, '');
  }
  get overflowX() {
    return this[dartx.getPropertyValue]('overflow-x');
  }
  set overflowX(value) {
    this[dartx.setProperty]('overflow-x', value, '');
  }
  get overflowY() {
    return this[dartx.getPropertyValue]('overflow-y');
  }
  set overflowY(value) {
    this[dartx.setProperty]('overflow-y', value, '');
  }
  get padding() {
    return this[dartx.getPropertyValue]('padding');
  }
  set padding(value) {
    this[dartx.setProperty]('padding', value, '');
  }
  get paddingAfter() {
    return this[dartx.getPropertyValue]('padding-after');
  }
  set paddingAfter(value) {
    this[dartx.setProperty]('padding-after', value, '');
  }
  get paddingBefore() {
    return this[dartx.getPropertyValue]('padding-before');
  }
  set paddingBefore(value) {
    this[dartx.setProperty]('padding-before', value, '');
  }
  get paddingBottom() {
    return this[dartx.getPropertyValue]('padding-bottom');
  }
  set paddingBottom(value) {
    this[dartx.setProperty]('padding-bottom', value, '');
  }
  get paddingEnd() {
    return this[dartx.getPropertyValue]('padding-end');
  }
  set paddingEnd(value) {
    this[dartx.setProperty]('padding-end', value, '');
  }
  get paddingLeft() {
    return this[dartx.getPropertyValue]('padding-left');
  }
  set paddingLeft(value) {
    this[dartx.setProperty]('padding-left', value, '');
  }
  get paddingRight() {
    return this[dartx.getPropertyValue]('padding-right');
  }
  set paddingRight(value) {
    this[dartx.setProperty]('padding-right', value, '');
  }
  get paddingStart() {
    return this[dartx.getPropertyValue]('padding-start');
  }
  set paddingStart(value) {
    this[dartx.setProperty]('padding-start', value, '');
  }
  get paddingTop() {
    return this[dartx.getPropertyValue]('padding-top');
  }
  set paddingTop(value) {
    this[dartx.setProperty]('padding-top', value, '');
  }
  get page() {
    return this[dartx.getPropertyValue]('page');
  }
  set page(value) {
    this[dartx.setProperty]('page', value, '');
  }
  get pageBreakAfter() {
    return this[dartx.getPropertyValue]('page-break-after');
  }
  set pageBreakAfter(value) {
    this[dartx.setProperty]('page-break-after', value, '');
  }
  get pageBreakBefore() {
    return this[dartx.getPropertyValue]('page-break-before');
  }
  set pageBreakBefore(value) {
    this[dartx.setProperty]('page-break-before', value, '');
  }
  get pageBreakInside() {
    return this[dartx.getPropertyValue]('page-break-inside');
  }
  set pageBreakInside(value) {
    this[dartx.setProperty]('page-break-inside', value, '');
  }
  get perspective() {
    return this[dartx.getPropertyValue]('perspective');
  }
  set perspective(value) {
    this[dartx.setProperty]('perspective', value, '');
  }
  get perspectiveOrigin() {
    return this[dartx.getPropertyValue]('perspective-origin');
  }
  set perspectiveOrigin(value) {
    this[dartx.setProperty]('perspective-origin', value, '');
  }
  get perspectiveOriginX() {
    return this[dartx.getPropertyValue]('perspective-origin-x');
  }
  set perspectiveOriginX(value) {
    this[dartx.setProperty]('perspective-origin-x', value, '');
  }
  get perspectiveOriginY() {
    return this[dartx.getPropertyValue]('perspective-origin-y');
  }
  set perspectiveOriginY(value) {
    this[dartx.setProperty]('perspective-origin-y', value, '');
  }
  get pointerEvents() {
    return this[dartx.getPropertyValue]('pointer-events');
  }
  set pointerEvents(value) {
    this[dartx.setProperty]('pointer-events', value, '');
  }
  get position() {
    return this[dartx.getPropertyValue]('position');
  }
  set position(value) {
    this[dartx.setProperty]('position', value, '');
  }
  get printColorAdjust() {
    return this[dartx.getPropertyValue]('print-color-adjust');
  }
  set printColorAdjust(value) {
    this[dartx.setProperty]('print-color-adjust', value, '');
  }
  get quotes() {
    return this[dartx.getPropertyValue]('quotes');
  }
  set quotes(value) {
    this[dartx.setProperty]('quotes', value, '');
  }
  get resize() {
    return this[dartx.getPropertyValue]('resize');
  }
  set resize(value) {
    this[dartx.setProperty]('resize', value, '');
  }
  get right() {
    return this[dartx.getPropertyValue]('right');
  }
  set right(value) {
    this[dartx.setProperty]('right', value, '');
  }
  get rtlOrdering() {
    return this[dartx.getPropertyValue]('rtl-ordering');
  }
  set rtlOrdering(value) {
    this[dartx.setProperty]('rtl-ordering', value, '');
  }
  get rubyPosition() {
    return this[dartx.getPropertyValue]('ruby-position');
  }
  set rubyPosition(value) {
    this[dartx.setProperty]('ruby-position', value, '');
  }
  get scrollBehavior() {
    return this[dartx.getPropertyValue]('scroll-behavior');
  }
  set scrollBehavior(value) {
    this[dartx.setProperty]('scroll-behavior', value, '');
  }
  get shapeImageThreshold() {
    return this[dartx.getPropertyValue]('shape-image-threshold');
  }
  set shapeImageThreshold(value) {
    this[dartx.setProperty]('shape-image-threshold', value, '');
  }
  get shapeMargin() {
    return this[dartx.getPropertyValue]('shape-margin');
  }
  set shapeMargin(value) {
    this[dartx.setProperty]('shape-margin', value, '');
  }
  get shapeOutside() {
    return this[dartx.getPropertyValue]('shape-outside');
  }
  set shapeOutside(value) {
    this[dartx.setProperty]('shape-outside', value, '');
  }
  get size() {
    return this[dartx.getPropertyValue]('size');
  }
  set size(value) {
    this[dartx.setProperty]('size', value, '');
  }
  get speak() {
    return this[dartx.getPropertyValue]('speak');
  }
  set speak(value) {
    this[dartx.setProperty]('speak', value, '');
  }
  get src() {
    return this[dartx.getPropertyValue]('src');
  }
  set src(value) {
    this[dartx.setProperty]('src', value, '');
  }
  get tabSize() {
    return this[dartx.getPropertyValue]('tab-size');
  }
  set tabSize(value) {
    this[dartx.setProperty]('tab-size', value, '');
  }
  get tableLayout() {
    return this[dartx.getPropertyValue]('table-layout');
  }
  set tableLayout(value) {
    this[dartx.setProperty]('table-layout', value, '');
  }
  get tapHighlightColor() {
    return this[dartx.getPropertyValue]('tap-highlight-color');
  }
  set tapHighlightColor(value) {
    this[dartx.setProperty]('tap-highlight-color', value, '');
  }
  get textAlign() {
    return this[dartx.getPropertyValue]('text-align');
  }
  set textAlign(value) {
    this[dartx.setProperty]('text-align', value, '');
  }
  get textAlignLast() {
    return this[dartx.getPropertyValue]('text-align-last');
  }
  set textAlignLast(value) {
    this[dartx.setProperty]('text-align-last', value, '');
  }
  get textCombine() {
    return this[dartx.getPropertyValue]('text-combine');
  }
  set textCombine(value) {
    this[dartx.setProperty]('text-combine', value, '');
  }
  get textDecoration() {
    return this[dartx.getPropertyValue]('text-decoration');
  }
  set textDecoration(value) {
    this[dartx.setProperty]('text-decoration', value, '');
  }
  get textDecorationColor() {
    return this[dartx.getPropertyValue]('text-decoration-color');
  }
  set textDecorationColor(value) {
    this[dartx.setProperty]('text-decoration-color', value, '');
  }
  get textDecorationLine() {
    return this[dartx.getPropertyValue]('text-decoration-line');
  }
  set textDecorationLine(value) {
    this[dartx.setProperty]('text-decoration-line', value, '');
  }
  get textDecorationStyle() {
    return this[dartx.getPropertyValue]('text-decoration-style');
  }
  set textDecorationStyle(value) {
    this[dartx.setProperty]('text-decoration-style', value, '');
  }
  get textDecorationsInEffect() {
    return this[dartx.getPropertyValue]('text-decorations-in-effect');
  }
  set textDecorationsInEffect(value) {
    this[dartx.setProperty]('text-decorations-in-effect', value, '');
  }
  get textEmphasis() {
    return this[dartx.getPropertyValue]('text-emphasis');
  }
  set textEmphasis(value) {
    this[dartx.setProperty]('text-emphasis', value, '');
  }
  get textEmphasisColor() {
    return this[dartx.getPropertyValue]('text-emphasis-color');
  }
  set textEmphasisColor(value) {
    this[dartx.setProperty]('text-emphasis-color', value, '');
  }
  get textEmphasisPosition() {
    return this[dartx.getPropertyValue]('text-emphasis-position');
  }
  set textEmphasisPosition(value) {
    this[dartx.setProperty]('text-emphasis-position', value, '');
  }
  get textEmphasisStyle() {
    return this[dartx.getPropertyValue]('text-emphasis-style');
  }
  set textEmphasisStyle(value) {
    this[dartx.setProperty]('text-emphasis-style', value, '');
  }
  get textFillColor() {
    return this[dartx.getPropertyValue]('text-fill-color');
  }
  set textFillColor(value) {
    this[dartx.setProperty]('text-fill-color', value, '');
  }
  get textIndent() {
    return this[dartx.getPropertyValue]('text-indent');
  }
  set textIndent(value) {
    this[dartx.setProperty]('text-indent', value, '');
  }
  get textJustify() {
    return this[dartx.getPropertyValue]('text-justify');
  }
  set textJustify(value) {
    this[dartx.setProperty]('text-justify', value, '');
  }
  get textLineThroughColor() {
    return this[dartx.getPropertyValue]('text-line-through-color');
  }
  set textLineThroughColor(value) {
    this[dartx.setProperty]('text-line-through-color', value, '');
  }
  get textLineThroughMode() {
    return this[dartx.getPropertyValue]('text-line-through-mode');
  }
  set textLineThroughMode(value) {
    this[dartx.setProperty]('text-line-through-mode', value, '');
  }
  get textLineThroughStyle() {
    return this[dartx.getPropertyValue]('text-line-through-style');
  }
  set textLineThroughStyle(value) {
    this[dartx.setProperty]('text-line-through-style', value, '');
  }
  get textLineThroughWidth() {
    return this[dartx.getPropertyValue]('text-line-through-width');
  }
  set textLineThroughWidth(value) {
    this[dartx.setProperty]('text-line-through-width', value, '');
  }
  get textOrientation() {
    return this[dartx.getPropertyValue]('text-orientation');
  }
  set textOrientation(value) {
    this[dartx.setProperty]('text-orientation', value, '');
  }
  get textOverflow() {
    return this[dartx.getPropertyValue]('text-overflow');
  }
  set textOverflow(value) {
    this[dartx.setProperty]('text-overflow', value, '');
  }
  get textOverlineColor() {
    return this[dartx.getPropertyValue]('text-overline-color');
  }
  set textOverlineColor(value) {
    this[dartx.setProperty]('text-overline-color', value, '');
  }
  get textOverlineMode() {
    return this[dartx.getPropertyValue]('text-overline-mode');
  }
  set textOverlineMode(value) {
    this[dartx.setProperty]('text-overline-mode', value, '');
  }
  get textOverlineStyle() {
    return this[dartx.getPropertyValue]('text-overline-style');
  }
  set textOverlineStyle(value) {
    this[dartx.setProperty]('text-overline-style', value, '');
  }
  get textOverlineWidth() {
    return this[dartx.getPropertyValue]('text-overline-width');
  }
  set textOverlineWidth(value) {
    this[dartx.setProperty]('text-overline-width', value, '');
  }
  get textRendering() {
    return this[dartx.getPropertyValue]('text-rendering');
  }
  set textRendering(value) {
    this[dartx.setProperty]('text-rendering', value, '');
  }
  get textSecurity() {
    return this[dartx.getPropertyValue]('text-security');
  }
  set textSecurity(value) {
    this[dartx.setProperty]('text-security', value, '');
  }
  get textShadow() {
    return this[dartx.getPropertyValue]('text-shadow');
  }
  set textShadow(value) {
    this[dartx.setProperty]('text-shadow', value, '');
  }
  get textStroke() {
    return this[dartx.getPropertyValue]('text-stroke');
  }
  set textStroke(value) {
    this[dartx.setProperty]('text-stroke', value, '');
  }
  get textStrokeColor() {
    return this[dartx.getPropertyValue]('text-stroke-color');
  }
  set textStrokeColor(value) {
    this[dartx.setProperty]('text-stroke-color', value, '');
  }
  get textStrokeWidth() {
    return this[dartx.getPropertyValue]('text-stroke-width');
  }
  set textStrokeWidth(value) {
    this[dartx.setProperty]('text-stroke-width', value, '');
  }
  get textTransform() {
    return this[dartx.getPropertyValue]('text-transform');
  }
  set textTransform(value) {
    this[dartx.setProperty]('text-transform', value, '');
  }
  get textUnderlineColor() {
    return this[dartx.getPropertyValue]('text-underline-color');
  }
  set textUnderlineColor(value) {
    this[dartx.setProperty]('text-underline-color', value, '');
  }
  get textUnderlineMode() {
    return this[dartx.getPropertyValue]('text-underline-mode');
  }
  set textUnderlineMode(value) {
    this[dartx.setProperty]('text-underline-mode', value, '');
  }
  get textUnderlinePosition() {
    return this[dartx.getPropertyValue]('text-underline-position');
  }
  set textUnderlinePosition(value) {
    this[dartx.setProperty]('text-underline-position', value, '');
  }
  get textUnderlineStyle() {
    return this[dartx.getPropertyValue]('text-underline-style');
  }
  set textUnderlineStyle(value) {
    this[dartx.setProperty]('text-underline-style', value, '');
  }
  get textUnderlineWidth() {
    return this[dartx.getPropertyValue]('text-underline-width');
  }
  set textUnderlineWidth(value) {
    this[dartx.setProperty]('text-underline-width', value, '');
  }
  get top() {
    return this[dartx.getPropertyValue]('top');
  }
  set top(value) {
    this[dartx.setProperty]('top', value, '');
  }
  get touchAction() {
    return this[dartx.getPropertyValue]('touch-action');
  }
  set touchAction(value) {
    this[dartx.setProperty]('touch-action', value, '');
  }
  get touchActionDelay() {
    return this[dartx.getPropertyValue]('touch-action-delay');
  }
  set touchActionDelay(value) {
    this[dartx.setProperty]('touch-action-delay', value, '');
  }
  get transform() {
    return this[dartx.getPropertyValue]('transform');
  }
  set transform(value) {
    this[dartx.setProperty]('transform', value, '');
  }
  get transformOrigin() {
    return this[dartx.getPropertyValue]('transform-origin');
  }
  set transformOrigin(value) {
    this[dartx.setProperty]('transform-origin', value, '');
  }
  get transformOriginX() {
    return this[dartx.getPropertyValue]('transform-origin-x');
  }
  set transformOriginX(value) {
    this[dartx.setProperty]('transform-origin-x', value, '');
  }
  get transformOriginY() {
    return this[dartx.getPropertyValue]('transform-origin-y');
  }
  set transformOriginY(value) {
    this[dartx.setProperty]('transform-origin-y', value, '');
  }
  get transformOriginZ() {
    return this[dartx.getPropertyValue]('transform-origin-z');
  }
  set transformOriginZ(value) {
    this[dartx.setProperty]('transform-origin-z', value, '');
  }
  get transformStyle() {
    return this[dartx.getPropertyValue]('transform-style');
  }
  set transformStyle(value) {
    this[dartx.setProperty]('transform-style', value, '');
  }
  get transition() {
    return this[dartx.getPropertyValue]('transition');
  }
  set transition(value) {
    this[dartx.setProperty]('transition', value, '');
  }
  get transitionDelay() {
    return this[dartx.getPropertyValue]('transition-delay');
  }
  set transitionDelay(value) {
    this[dartx.setProperty]('transition-delay', value, '');
  }
  get transitionDuration() {
    return this[dartx.getPropertyValue]('transition-duration');
  }
  set transitionDuration(value) {
    this[dartx.setProperty]('transition-duration', value, '');
  }
  get transitionProperty() {
    return this[dartx.getPropertyValue]('transition-property');
  }
  set transitionProperty(value) {
    this[dartx.setProperty]('transition-property', value, '');
  }
  get transitionTimingFunction() {
    return this[dartx.getPropertyValue]('transition-timing-function');
  }
  set transitionTimingFunction(value) {
    this[dartx.setProperty]('transition-timing-function', value, '');
  }
  get unicodeBidi() {
    return this[dartx.getPropertyValue]('unicode-bidi');
  }
  set unicodeBidi(value) {
    this[dartx.setProperty]('unicode-bidi', value, '');
  }
  get unicodeRange() {
    return this[dartx.getPropertyValue]('unicode-range');
  }
  set unicodeRange(value) {
    this[dartx.setProperty]('unicode-range', value, '');
  }
  get userDrag() {
    return this[dartx.getPropertyValue]('user-drag');
  }
  set userDrag(value) {
    this[dartx.setProperty]('user-drag', value, '');
  }
  get userModify() {
    return this[dartx.getPropertyValue]('user-modify');
  }
  set userModify(value) {
    this[dartx.setProperty]('user-modify', value, '');
  }
  get userSelect() {
    return this[dartx.getPropertyValue]('user-select');
  }
  set userSelect(value) {
    this[dartx.setProperty]('user-select', value, '');
  }
  get userZoom() {
    return this[dartx.getPropertyValue]('user-zoom');
  }
  set userZoom(value) {
    this[dartx.setProperty]('user-zoom', value, '');
  }
  get verticalAlign() {
    return this[dartx.getPropertyValue]('vertical-align');
  }
  set verticalAlign(value) {
    this[dartx.setProperty]('vertical-align', value, '');
  }
  get visibility() {
    return this[dartx.getPropertyValue]('visibility');
  }
  set visibility(value) {
    this[dartx.setProperty]('visibility', value, '');
  }
  get whiteSpace() {
    return this[dartx.getPropertyValue]('white-space');
  }
  set whiteSpace(value) {
    this[dartx.setProperty]('white-space', value, '');
  }
  get widows() {
    return this[dartx.getPropertyValue]('widows');
  }
  set widows(value) {
    this[dartx.setProperty]('widows', value, '');
  }
  get width() {
    return this[dartx.getPropertyValue]('width');
  }
  set width(value) {
    this[dartx.setProperty]('width', value, '');
  }
  get willChange() {
    return this[dartx.getPropertyValue]('will-change');
  }
  set willChange(value) {
    this[dartx.setProperty]('will-change', value, '');
  }
  get wordBreak() {
    return this[dartx.getPropertyValue]('word-break');
  }
  set wordBreak(value) {
    this[dartx.setProperty]('word-break', value, '');
  }
  get wordSpacing() {
    return this[dartx.getPropertyValue]('word-spacing');
  }
  set wordSpacing(value) {
    this[dartx.setProperty]('word-spacing', value, '');
  }
  get wordWrap() {
    return this[dartx.getPropertyValue]('word-wrap');
  }
  set wordWrap(value) {
    this[dartx.setProperty]('word-wrap', value, '');
  }
  get wrapFlow() {
    return this[dartx.getPropertyValue]('wrap-flow');
  }
  set wrapFlow(value) {
    this[dartx.setProperty]('wrap-flow', value, '');
  }
  get wrapThrough() {
    return this[dartx.getPropertyValue]('wrap-through');
  }
  set wrapThrough(value) {
    this[dartx.setProperty]('wrap-through', value, '');
  }
  get writingMode() {
    return this[dartx.getPropertyValue]('writing-mode');
  }
  set writingMode(value) {
    this[dartx.setProperty]('writing-mode', value, '');
  }
  get zIndex() {
    return this[dartx.getPropertyValue]('z-index');
  }
  set zIndex(value) {
    this[dartx.setProperty]('z-index', value, '');
  }
  get zoom() {
    return this[dartx.getPropertyValue]('zoom');
  }
  set zoom(value) {
    this[dartx.setProperty]('zoom', value, '');
  }
};
dart.setSignature(html.CssStyleDeclarationBase, {
  getters: () => ({
    alignContent: dart.definiteFunctionType(core.String, []),
    alignItems: dart.definiteFunctionType(core.String, []),
    alignSelf: dart.definiteFunctionType(core.String, []),
    animation: dart.definiteFunctionType(core.String, []),
    animationDelay: dart.definiteFunctionType(core.String, []),
    animationDirection: dart.definiteFunctionType(core.String, []),
    animationDuration: dart.definiteFunctionType(core.String, []),
    animationFillMode: dart.definiteFunctionType(core.String, []),
    animationIterationCount: dart.definiteFunctionType(core.String, []),
    animationName: dart.definiteFunctionType(core.String, []),
    animationPlayState: dart.definiteFunctionType(core.String, []),
    animationTimingFunction: dart.definiteFunctionType(core.String, []),
    appRegion: dart.definiteFunctionType(core.String, []),
    appearance: dart.definiteFunctionType(core.String, []),
    aspectRatio: dart.definiteFunctionType(core.String, []),
    backfaceVisibility: dart.definiteFunctionType(core.String, []),
    background: dart.definiteFunctionType(core.String, []),
    backgroundAttachment: dart.definiteFunctionType(core.String, []),
    backgroundBlendMode: dart.definiteFunctionType(core.String, []),
    backgroundClip: dart.definiteFunctionType(core.String, []),
    backgroundColor: dart.definiteFunctionType(core.String, []),
    backgroundComposite: dart.definiteFunctionType(core.String, []),
    backgroundImage: dart.definiteFunctionType(core.String, []),
    backgroundOrigin: dart.definiteFunctionType(core.String, []),
    backgroundPosition: dart.definiteFunctionType(core.String, []),
    backgroundPositionX: dart.definiteFunctionType(core.String, []),
    backgroundPositionY: dart.definiteFunctionType(core.String, []),
    backgroundRepeat: dart.definiteFunctionType(core.String, []),
    backgroundRepeatX: dart.definiteFunctionType(core.String, []),
    backgroundRepeatY: dart.definiteFunctionType(core.String, []),
    backgroundSize: dart.definiteFunctionType(core.String, []),
    border: dart.definiteFunctionType(core.String, []),
    borderAfter: dart.definiteFunctionType(core.String, []),
    borderAfterColor: dart.definiteFunctionType(core.String, []),
    borderAfterStyle: dart.definiteFunctionType(core.String, []),
    borderAfterWidth: dart.definiteFunctionType(core.String, []),
    borderBefore: dart.definiteFunctionType(core.String, []),
    borderBeforeColor: dart.definiteFunctionType(core.String, []),
    borderBeforeStyle: dart.definiteFunctionType(core.String, []),
    borderBeforeWidth: dart.definiteFunctionType(core.String, []),
    borderBottom: dart.definiteFunctionType(core.String, []),
    borderBottomColor: dart.definiteFunctionType(core.String, []),
    borderBottomLeftRadius: dart.definiteFunctionType(core.String, []),
    borderBottomRightRadius: dart.definiteFunctionType(core.String, []),
    borderBottomStyle: dart.definiteFunctionType(core.String, []),
    borderBottomWidth: dart.definiteFunctionType(core.String, []),
    borderCollapse: dart.definiteFunctionType(core.String, []),
    borderColor: dart.definiteFunctionType(core.String, []),
    borderEnd: dart.definiteFunctionType(core.String, []),
    borderEndColor: dart.definiteFunctionType(core.String, []),
    borderEndStyle: dart.definiteFunctionType(core.String, []),
    borderEndWidth: dart.definiteFunctionType(core.String, []),
    borderFit: dart.definiteFunctionType(core.String, []),
    borderHorizontalSpacing: dart.definiteFunctionType(core.String, []),
    borderImage: dart.definiteFunctionType(core.String, []),
    borderImageOutset: dart.definiteFunctionType(core.String, []),
    borderImageRepeat: dart.definiteFunctionType(core.String, []),
    borderImageSlice: dart.definiteFunctionType(core.String, []),
    borderImageSource: dart.definiteFunctionType(core.String, []),
    borderImageWidth: dart.definiteFunctionType(core.String, []),
    borderLeft: dart.definiteFunctionType(core.String, []),
    borderLeftColor: dart.definiteFunctionType(core.String, []),
    borderLeftStyle: dart.definiteFunctionType(core.String, []),
    borderLeftWidth: dart.definiteFunctionType(core.String, []),
    borderRadius: dart.definiteFunctionType(core.String, []),
    borderRight: dart.definiteFunctionType(core.String, []),
    borderRightColor: dart.definiteFunctionType(core.String, []),
    borderRightStyle: dart.definiteFunctionType(core.String, []),
    borderRightWidth: dart.definiteFunctionType(core.String, []),
    borderSpacing: dart.definiteFunctionType(core.String, []),
    borderStart: dart.definiteFunctionType(core.String, []),
    borderStartColor: dart.definiteFunctionType(core.String, []),
    borderStartStyle: dart.definiteFunctionType(core.String, []),
    borderStartWidth: dart.definiteFunctionType(core.String, []),
    borderStyle: dart.definiteFunctionType(core.String, []),
    borderTop: dart.definiteFunctionType(core.String, []),
    borderTopColor: dart.definiteFunctionType(core.String, []),
    borderTopLeftRadius: dart.definiteFunctionType(core.String, []),
    borderTopRightRadius: dart.definiteFunctionType(core.String, []),
    borderTopStyle: dart.definiteFunctionType(core.String, []),
    borderTopWidth: dart.definiteFunctionType(core.String, []),
    borderVerticalSpacing: dart.definiteFunctionType(core.String, []),
    borderWidth: dart.definiteFunctionType(core.String, []),
    bottom: dart.definiteFunctionType(core.String, []),
    boxAlign: dart.definiteFunctionType(core.String, []),
    boxDecorationBreak: dart.definiteFunctionType(core.String, []),
    boxDirection: dart.definiteFunctionType(core.String, []),
    boxFlex: dart.definiteFunctionType(core.String, []),
    boxFlexGroup: dart.definiteFunctionType(core.String, []),
    boxLines: dart.definiteFunctionType(core.String, []),
    boxOrdinalGroup: dart.definiteFunctionType(core.String, []),
    boxOrient: dart.definiteFunctionType(core.String, []),
    boxPack: dart.definiteFunctionType(core.String, []),
    boxReflect: dart.definiteFunctionType(core.String, []),
    boxShadow: dart.definiteFunctionType(core.String, []),
    boxSizing: dart.definiteFunctionType(core.String, []),
    captionSide: dart.definiteFunctionType(core.String, []),
    clear: dart.definiteFunctionType(core.String, []),
    clip: dart.definiteFunctionType(core.String, []),
    clipPath: dart.definiteFunctionType(core.String, []),
    color: dart.definiteFunctionType(core.String, []),
    columnBreakAfter: dart.definiteFunctionType(core.String, []),
    columnBreakBefore: dart.definiteFunctionType(core.String, []),
    columnBreakInside: dart.definiteFunctionType(core.String, []),
    columnCount: dart.definiteFunctionType(core.String, []),
    columnFill: dart.definiteFunctionType(core.String, []),
    columnGap: dart.definiteFunctionType(core.String, []),
    columnRule: dart.definiteFunctionType(core.String, []),
    columnRuleColor: dart.definiteFunctionType(core.String, []),
    columnRuleStyle: dart.definiteFunctionType(core.String, []),
    columnRuleWidth: dart.definiteFunctionType(core.String, []),
    columnSpan: dart.definiteFunctionType(core.String, []),
    columnWidth: dart.definiteFunctionType(core.String, []),
    columns: dart.definiteFunctionType(core.String, []),
    content: dart.definiteFunctionType(core.String, []),
    counterIncrement: dart.definiteFunctionType(core.String, []),
    counterReset: dart.definiteFunctionType(core.String, []),
    cursor: dart.definiteFunctionType(core.String, []),
    direction: dart.definiteFunctionType(core.String, []),
    display: dart.definiteFunctionType(core.String, []),
    emptyCells: dart.definiteFunctionType(core.String, []),
    filter: dart.definiteFunctionType(core.String, []),
    flex: dart.definiteFunctionType(core.String, []),
    flexBasis: dart.definiteFunctionType(core.String, []),
    flexDirection: dart.definiteFunctionType(core.String, []),
    flexFlow: dart.definiteFunctionType(core.String, []),
    flexGrow: dart.definiteFunctionType(core.String, []),
    flexShrink: dart.definiteFunctionType(core.String, []),
    flexWrap: dart.definiteFunctionType(core.String, []),
    float: dart.definiteFunctionType(core.String, []),
    font: dart.definiteFunctionType(core.String, []),
    fontFamily: dart.definiteFunctionType(core.String, []),
    fontFeatureSettings: dart.definiteFunctionType(core.String, []),
    fontKerning: dart.definiteFunctionType(core.String, []),
    fontSize: dart.definiteFunctionType(core.String, []),
    fontSizeDelta: dart.definiteFunctionType(core.String, []),
    fontSmoothing: dart.definiteFunctionType(core.String, []),
    fontStretch: dart.definiteFunctionType(core.String, []),
    fontStyle: dart.definiteFunctionType(core.String, []),
    fontVariant: dart.definiteFunctionType(core.String, []),
    fontVariantLigatures: dart.definiteFunctionType(core.String, []),
    fontWeight: dart.definiteFunctionType(core.String, []),
    grid: dart.definiteFunctionType(core.String, []),
    gridArea: dart.definiteFunctionType(core.String, []),
    gridAutoColumns: dart.definiteFunctionType(core.String, []),
    gridAutoFlow: dart.definiteFunctionType(core.String, []),
    gridAutoRows: dart.definiteFunctionType(core.String, []),
    gridColumn: dart.definiteFunctionType(core.String, []),
    gridColumnEnd: dart.definiteFunctionType(core.String, []),
    gridColumnStart: dart.definiteFunctionType(core.String, []),
    gridRow: dart.definiteFunctionType(core.String, []),
    gridRowEnd: dart.definiteFunctionType(core.String, []),
    gridRowStart: dart.definiteFunctionType(core.String, []),
    gridTemplate: dart.definiteFunctionType(core.String, []),
    gridTemplateAreas: dart.definiteFunctionType(core.String, []),
    gridTemplateColumns: dart.definiteFunctionType(core.String, []),
    gridTemplateRows: dart.definiteFunctionType(core.String, []),
    height: dart.definiteFunctionType(core.String, []),
    highlight: dart.definiteFunctionType(core.String, []),
    hyphenateCharacter: dart.definiteFunctionType(core.String, []),
    imageRendering: dart.definiteFunctionType(core.String, []),
    isolation: dart.definiteFunctionType(core.String, []),
    justifyContent: dart.definiteFunctionType(core.String, []),
    justifySelf: dart.definiteFunctionType(core.String, []),
    left: dart.definiteFunctionType(core.String, []),
    letterSpacing: dart.definiteFunctionType(core.String, []),
    lineBoxContain: dart.definiteFunctionType(core.String, []),
    lineBreak: dart.definiteFunctionType(core.String, []),
    lineClamp: dart.definiteFunctionType(core.String, []),
    lineHeight: dart.definiteFunctionType(core.String, []),
    listStyle: dart.definiteFunctionType(core.String, []),
    listStyleImage: dart.definiteFunctionType(core.String, []),
    listStylePosition: dart.definiteFunctionType(core.String, []),
    listStyleType: dart.definiteFunctionType(core.String, []),
    locale: dart.definiteFunctionType(core.String, []),
    logicalHeight: dart.definiteFunctionType(core.String, []),
    logicalWidth: dart.definiteFunctionType(core.String, []),
    margin: dart.definiteFunctionType(core.String, []),
    marginAfter: dart.definiteFunctionType(core.String, []),
    marginAfterCollapse: dart.definiteFunctionType(core.String, []),
    marginBefore: dart.definiteFunctionType(core.String, []),
    marginBeforeCollapse: dart.definiteFunctionType(core.String, []),
    marginBottom: dart.definiteFunctionType(core.String, []),
    marginBottomCollapse: dart.definiteFunctionType(core.String, []),
    marginCollapse: dart.definiteFunctionType(core.String, []),
    marginEnd: dart.definiteFunctionType(core.String, []),
    marginLeft: dart.definiteFunctionType(core.String, []),
    marginRight: dart.definiteFunctionType(core.String, []),
    marginStart: dart.definiteFunctionType(core.String, []),
    marginTop: dart.definiteFunctionType(core.String, []),
    marginTopCollapse: dart.definiteFunctionType(core.String, []),
    mask: dart.definiteFunctionType(core.String, []),
    maskBoxImage: dart.definiteFunctionType(core.String, []),
    maskBoxImageOutset: dart.definiteFunctionType(core.String, []),
    maskBoxImageRepeat: dart.definiteFunctionType(core.String, []),
    maskBoxImageSlice: dart.definiteFunctionType(core.String, []),
    maskBoxImageSource: dart.definiteFunctionType(core.String, []),
    maskBoxImageWidth: dart.definiteFunctionType(core.String, []),
    maskClip: dart.definiteFunctionType(core.String, []),
    maskComposite: dart.definiteFunctionType(core.String, []),
    maskImage: dart.definiteFunctionType(core.String, []),
    maskOrigin: dart.definiteFunctionType(core.String, []),
    maskPosition: dart.definiteFunctionType(core.String, []),
    maskPositionX: dart.definiteFunctionType(core.String, []),
    maskPositionY: dart.definiteFunctionType(core.String, []),
    maskRepeat: dart.definiteFunctionType(core.String, []),
    maskRepeatX: dart.definiteFunctionType(core.String, []),
    maskRepeatY: dart.definiteFunctionType(core.String, []),
    maskSize: dart.definiteFunctionType(core.String, []),
    maskSourceType: dart.definiteFunctionType(core.String, []),
    maxHeight: dart.definiteFunctionType(core.String, []),
    maxLogicalHeight: dart.definiteFunctionType(core.String, []),
    maxLogicalWidth: dart.definiteFunctionType(core.String, []),
    maxWidth: dart.definiteFunctionType(core.String, []),
    maxZoom: dart.definiteFunctionType(core.String, []),
    minHeight: dart.definiteFunctionType(core.String, []),
    minLogicalHeight: dart.definiteFunctionType(core.String, []),
    minLogicalWidth: dart.definiteFunctionType(core.String, []),
    minWidth: dart.definiteFunctionType(core.String, []),
    minZoom: dart.definiteFunctionType(core.String, []),
    mixBlendMode: dart.definiteFunctionType(core.String, []),
    objectFit: dart.definiteFunctionType(core.String, []),
    objectPosition: dart.definiteFunctionType(core.String, []),
    opacity: dart.definiteFunctionType(core.String, []),
    order: dart.definiteFunctionType(core.String, []),
    orientation: dart.definiteFunctionType(core.String, []),
    orphans: dart.definiteFunctionType(core.String, []),
    outline: dart.definiteFunctionType(core.String, []),
    outlineColor: dart.definiteFunctionType(core.String, []),
    outlineOffset: dart.definiteFunctionType(core.String, []),
    outlineStyle: dart.definiteFunctionType(core.String, []),
    outlineWidth: dart.definiteFunctionType(core.String, []),
    overflow: dart.definiteFunctionType(core.String, []),
    overflowWrap: dart.definiteFunctionType(core.String, []),
    overflowX: dart.definiteFunctionType(core.String, []),
    overflowY: dart.definiteFunctionType(core.String, []),
    padding: dart.definiteFunctionType(core.String, []),
    paddingAfter: dart.definiteFunctionType(core.String, []),
    paddingBefore: dart.definiteFunctionType(core.String, []),
    paddingBottom: dart.definiteFunctionType(core.String, []),
    paddingEnd: dart.definiteFunctionType(core.String, []),
    paddingLeft: dart.definiteFunctionType(core.String, []),
    paddingRight: dart.definiteFunctionType(core.String, []),
    paddingStart: dart.definiteFunctionType(core.String, []),
    paddingTop: dart.definiteFunctionType(core.String, []),
    page: dart.definiteFunctionType(core.String, []),
    pageBreakAfter: dart.definiteFunctionType(core.String, []),
    pageBreakBefore: dart.definiteFunctionType(core.String, []),
    pageBreakInside: dart.definiteFunctionType(core.String, []),
    perspective: dart.definiteFunctionType(core.String, []),
    perspectiveOrigin: dart.definiteFunctionType(core.String, []),
    perspectiveOriginX: dart.definiteFunctionType(core.String, []),
    perspectiveOriginY: dart.definiteFunctionType(core.String, []),
    pointerEvents: dart.definiteFunctionType(core.String, []),
    position: dart.definiteFunctionType(core.String, []),
    printColorAdjust: dart.definiteFunctionType(core.String, []),
    quotes: dart.definiteFunctionType(core.String, []),
    resize: dart.definiteFunctionType(core.String, []),
    right: dart.definiteFunctionType(core.String, []),
    rtlOrdering: dart.definiteFunctionType(core.String, []),
    rubyPosition: dart.definiteFunctionType(core.String, []),
    scrollBehavior: dart.definiteFunctionType(core.String, []),
    shapeImageThreshold: dart.definiteFunctionType(core.String, []),
    shapeMargin: dart.definiteFunctionType(core.String, []),
    shapeOutside: dart.definiteFunctionType(core.String, []),
    size: dart.definiteFunctionType(core.String, []),
    speak: dart.definiteFunctionType(core.String, []),
    src: dart.definiteFunctionType(core.String, []),
    tabSize: dart.definiteFunctionType(core.String, []),
    tableLayout: dart.definiteFunctionType(core.String, []),
    tapHighlightColor: dart.definiteFunctionType(core.String, []),
    textAlign: dart.definiteFunctionType(core.String, []),
    textAlignLast: dart.definiteFunctionType(core.String, []),
    textCombine: dart.definiteFunctionType(core.String, []),
    textDecoration: dart.definiteFunctionType(core.String, []),
    textDecorationColor: dart.definiteFunctionType(core.String, []),
    textDecorationLine: dart.definiteFunctionType(core.String, []),
    textDecorationStyle: dart.definiteFunctionType(core.String, []),
    textDecorationsInEffect: dart.definiteFunctionType(core.String, []),
    textEmphasis: dart.definiteFunctionType(core.String, []),
    textEmphasisColor: dart.definiteFunctionType(core.String, []),
    textEmphasisPosition: dart.definiteFunctionType(core.String, []),
    textEmphasisStyle: dart.definiteFunctionType(core.String, []),
    textFillColor: dart.definiteFunctionType(core.String, []),
    textIndent: dart.definiteFunctionType(core.String, []),
    textJustify: dart.definiteFunctionType(core.String, []),
    textLineThroughColor: dart.definiteFunctionType(core.String, []),
    textLineThroughMode: dart.definiteFunctionType(core.String, []),
    textLineThroughStyle: dart.definiteFunctionType(core.String, []),
    textLineThroughWidth: dart.definiteFunctionType(core.String, []),
    textOrientation: dart.definiteFunctionType(core.String, []),
    textOverflow: dart.definiteFunctionType(core.String, []),
    textOverlineColor: dart.definiteFunctionType(core.String, []),
    textOverlineMode: dart.definiteFunctionType(core.String, []),
    textOverlineStyle: dart.definiteFunctionType(core.String, []),
    textOverlineWidth: dart.definiteFunctionType(core.String, []),
    textRendering: dart.definiteFunctionType(core.String, []),
    textSecurity: dart.definiteFunctionType(core.String, []),
    textShadow: dart.definiteFunctionType(core.String, []),
    textStroke: dart.definiteFunctionType(core.String, []),
    textStrokeColor: dart.definiteFunctionType(core.String, []),
    textStrokeWidth: dart.definiteFunctionType(core.String, []),
    textTransform: dart.definiteFunctionType(core.String, []),
    textUnderlineColor: dart.definiteFunctionType(core.String, []),
    textUnderlineMode: dart.definiteFunctionType(core.String, []),
    textUnderlinePosition: dart.definiteFunctionType(core.String, []),
    textUnderlineStyle: dart.definiteFunctionType(core.String, []),
    textUnderlineWidth: dart.definiteFunctionType(core.String, []),
    top: dart.definiteFunctionType(core.String, []),
    touchAction: dart.definiteFunctionType(core.String, []),
    touchActionDelay: dart.definiteFunctionType(core.String, []),
    transform: dart.definiteFunctionType(core.String, []),
    transformOrigin: dart.definiteFunctionType(core.String, []),
    transformOriginX: dart.definiteFunctionType(core.String, []),
    transformOriginY: dart.definiteFunctionType(core.String, []),
    transformOriginZ: dart.definiteFunctionType(core.String, []),
    transformStyle: dart.definiteFunctionType(core.String, []),
    transition: dart.definiteFunctionType(core.String, []),
    transitionDelay: dart.definiteFunctionType(core.String, []),
    transitionDuration: dart.definiteFunctionType(core.String, []),
    transitionProperty: dart.definiteFunctionType(core.String, []),
    transitionTimingFunction: dart.definiteFunctionType(core.String, []),
    unicodeBidi: dart.definiteFunctionType(core.String, []),
    unicodeRange: dart.definiteFunctionType(core.String, []),
    userDrag: dart.definiteFunctionType(core.String, []),
    userModify: dart.definiteFunctionType(core.String, []),
    userSelect: dart.definiteFunctionType(core.String, []),
    userZoom: dart.definiteFunctionType(core.String, []),
    verticalAlign: dart.definiteFunctionType(core.String, []),
    visibility: dart.definiteFunctionType(core.String, []),
    whiteSpace: dart.definiteFunctionType(core.String, []),
    widows: dart.definiteFunctionType(core.String, []),
    width: dart.definiteFunctionType(core.String, []),
    willChange: dart.definiteFunctionType(core.String, []),
    wordBreak: dart.definiteFunctionType(core.String, []),
    wordSpacing: dart.definiteFunctionType(core.String, []),
    wordWrap: dart.definiteFunctionType(core.String, []),
    wrapFlow: dart.definiteFunctionType(core.String, []),
    wrapThrough: dart.definiteFunctionType(core.String, []),
    writingMode: dart.definiteFunctionType(core.String, []),
    zIndex: dart.definiteFunctionType(core.String, []),
    zoom: dart.definiteFunctionType(core.String, [])
  }),
  setters: () => ({
    alignContent: dart.definiteFunctionType(dart.void, [core.String]),
    alignItems: dart.definiteFunctionType(dart.void, [core.String]),
    alignSelf: dart.definiteFunctionType(dart.void, [core.String]),
    animation: dart.definiteFunctionType(dart.void, [core.String]),
    animationDelay: dart.definiteFunctionType(dart.void, [core.String]),
    animationDirection: dart.definiteFunctionType(dart.void, [core.String]),
    animationDuration: dart.definiteFunctionType(dart.void, [core.String]),
    animationFillMode: dart.definiteFunctionType(dart.void, [core.String]),
    animationIterationCount: dart.definiteFunctionType(dart.void, [core.String]),
    animationName: dart.definiteFunctionType(dart.void, [core.String]),
    animationPlayState: dart.definiteFunctionType(dart.void, [core.String]),
    animationTimingFunction: dart.definiteFunctionType(dart.void, [core.String]),
    appRegion: dart.definiteFunctionType(dart.void, [core.String]),
    appearance: dart.definiteFunctionType(dart.void, [core.String]),
    aspectRatio: dart.definiteFunctionType(dart.void, [core.String]),
    backfaceVisibility: dart.definiteFunctionType(dart.void, [core.String]),
    background: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundAttachment: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundBlendMode: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundClip: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundColor: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundComposite: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundImage: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundOrigin: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundPosition: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundPositionX: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundPositionY: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundRepeat: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundRepeatX: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundRepeatY: dart.definiteFunctionType(dart.void, [core.String]),
    backgroundSize: dart.definiteFunctionType(dart.void, [core.String]),
    border: dart.definiteFunctionType(dart.void, [core.String]),
    borderAfter: dart.definiteFunctionType(dart.void, [core.String]),
    borderAfterColor: dart.definiteFunctionType(dart.void, [core.String]),
    borderAfterStyle: dart.definiteFunctionType(dart.void, [core.String]),
    borderAfterWidth: dart.definiteFunctionType(dart.void, [core.String]),
    borderBefore: dart.definiteFunctionType(dart.void, [core.String]),
    borderBeforeColor: dart.definiteFunctionType(dart.void, [core.String]),
    borderBeforeStyle: dart.definiteFunctionType(dart.void, [core.String]),
    borderBeforeWidth: dart.definiteFunctionType(dart.void, [core.String]),
    borderBottom: dart.definiteFunctionType(dart.void, [core.String]),
    borderBottomColor: dart.definiteFunctionType(dart.void, [core.String]),
    borderBottomLeftRadius: dart.definiteFunctionType(dart.void, [core.String]),
    borderBottomRightRadius: dart.definiteFunctionType(dart.void, [core.String]),
    borderBottomStyle: dart.definiteFunctionType(dart.void, [core.String]),
    borderBottomWidth: dart.definiteFunctionType(dart.void, [core.String]),
    borderCollapse: dart.definiteFunctionType(dart.void, [core.String]),
    borderColor: dart.definiteFunctionType(dart.void, [core.String]),
    borderEnd: dart.definiteFunctionType(dart.void, [core.String]),
    borderEndColor: dart.definiteFunctionType(dart.void, [core.String]),
    borderEndStyle: dart.definiteFunctionType(dart.void, [core.String]),
    borderEndWidth: dart.definiteFunctionType(dart.void, [core.String]),
    borderFit: dart.definiteFunctionType(dart.void, [core.String]),
    borderHorizontalSpacing: dart.definiteFunctionType(dart.void, [core.String]),
    borderImage: dart.definiteFunctionType(dart.void, [core.String]),
    borderImageOutset: dart.definiteFunctionType(dart.void, [core.String]),
    borderImageRepeat: dart.definiteFunctionType(dart.void, [core.String]),
    borderImageSlice: dart.definiteFunctionType(dart.void, [core.String]),
    borderImageSource: dart.definiteFunctionType(dart.void, [core.String]),
    borderImageWidth: dart.definiteFunctionType(dart.void, [core.String]),
    borderLeft: dart.definiteFunctionType(dart.void, [core.String]),
    borderLeftColor: dart.definiteFunctionType(dart.void, [core.String]),
    borderLeftStyle: dart.definiteFunctionType(dart.void, [core.String]),
    borderLeftWidth: dart.definiteFunctionType(dart.void, [core.String]),
    borderRadius: dart.definiteFunctionType(dart.void, [core.String]),
    borderRight: dart.definiteFunctionType(dart.void, [core.String]),
    borderRightColor: dart.definiteFunctionType(dart.void, [core.String]),
    borderRightStyle: dart.definiteFunctionType(dart.void, [core.String]),
    borderRightWidth: dart.definiteFunctionType(dart.void, [core.String]),
    borderSpacing: dart.definiteFunctionType(dart.void, [core.String]),
    borderStart: dart.definiteFunctionType(dart.void, [core.String]),
    borderStartColor: dart.definiteFunctionType(dart.void, [core.String]),
    borderStartStyle: dart.definiteFunctionType(dart.void, [core.String]),
    borderStartWidth: dart.definiteFunctionType(dart.void, [core.String]),
    borderStyle: dart.definiteFunctionType(dart.void, [core.String]),
    borderTop: dart.definiteFunctionType(dart.void, [core.String]),
    borderTopColor: dart.definiteFunctionType(dart.void, [core.String]),
    borderTopLeftRadius: dart.definiteFunctionType(dart.void, [core.String]),
    borderTopRightRadius: dart.definiteFunctionType(dart.void, [core.String]),
    borderTopStyle: dart.definiteFunctionType(dart.void, [core.String]),
    borderTopWidth: dart.definiteFunctionType(dart.void, [core.String]),
    borderVerticalSpacing: dart.definiteFunctionType(dart.void, [core.String]),
    borderWidth: dart.definiteFunctionType(dart.void, [core.String]),
    bottom: dart.definiteFunctionType(dart.void, [core.String]),
    boxAlign: dart.definiteFunctionType(dart.void, [core.String]),
    boxDecorationBreak: dart.definiteFunctionType(dart.void, [core.String]),
    boxDirection: dart.definiteFunctionType(dart.void, [core.String]),
    boxFlex: dart.definiteFunctionType(dart.void, [core.String]),
    boxFlexGroup: dart.definiteFunctionType(dart.void, [core.String]),
    boxLines: dart.definiteFunctionType(dart.void, [core.String]),
    boxOrdinalGroup: dart.definiteFunctionType(dart.void, [core.String]),
    boxOrient: dart.definiteFunctionType(dart.void, [core.String]),
    boxPack: dart.definiteFunctionType(dart.void, [core.String]),
    boxReflect: dart.definiteFunctionType(dart.void, [core.String]),
    boxShadow: dart.definiteFunctionType(dart.void, [core.String]),
    boxSizing: dart.definiteFunctionType(dart.void, [core.String]),
    captionSide: dart.definiteFunctionType(dart.void, [core.String]),
    clear: dart.definiteFunctionType(dart.void, [core.String]),
    clip: dart.definiteFunctionType(dart.void, [core.String]),
    clipPath: dart.definiteFunctionType(dart.void, [core.String]),
    color: dart.definiteFunctionType(dart.void, [core.String]),
    columnBreakAfter: dart.definiteFunctionType(dart.void, [core.String]),
    columnBreakBefore: dart.definiteFunctionType(dart.void, [core.String]),
    columnBreakInside: dart.definiteFunctionType(dart.void, [core.String]),
    columnCount: dart.definiteFunctionType(dart.void, [core.String]),
    columnFill: dart.definiteFunctionType(dart.void, [core.String]),
    columnGap: dart.definiteFunctionType(dart.void, [core.String]),
    columnRule: dart.definiteFunctionType(dart.void, [core.String]),
    columnRuleColor: dart.definiteFunctionType(dart.void, [core.String]),
    columnRuleStyle: dart.definiteFunctionType(dart.void, [core.String]),
    columnRuleWidth: dart.definiteFunctionType(dart.void, [core.String]),
    columnSpan: dart.definiteFunctionType(dart.void, [core.String]),
    columnWidth: dart.definiteFunctionType(dart.void, [core.String]),
    columns: dart.definiteFunctionType(dart.void, [core.String]),
    content: dart.definiteFunctionType(dart.void, [core.String]),
    counterIncrement: dart.definiteFunctionType(dart.void, [core.String]),
    counterReset: dart.definiteFunctionType(dart.void, [core.String]),
    cursor: dart.definiteFunctionType(dart.void, [core.String]),
    direction: dart.definiteFunctionType(dart.void, [core.String]),
    display: dart.definiteFunctionType(dart.void, [core.String]),
    emptyCells: dart.definiteFunctionType(dart.void, [core.String]),
    filter: dart.definiteFunctionType(dart.void, [core.String]),
    flex: dart.definiteFunctionType(dart.void, [core.String]),
    flexBasis: dart.definiteFunctionType(dart.void, [core.String]),
    flexDirection: dart.definiteFunctionType(dart.void, [core.String]),
    flexFlow: dart.definiteFunctionType(dart.void, [core.String]),
    flexGrow: dart.definiteFunctionType(dart.void, [core.String]),
    flexShrink: dart.definiteFunctionType(dart.void, [core.String]),
    flexWrap: dart.definiteFunctionType(dart.void, [core.String]),
    float: dart.definiteFunctionType(dart.void, [core.String]),
    font: dart.definiteFunctionType(dart.void, [core.String]),
    fontFamily: dart.definiteFunctionType(dart.void, [core.String]),
    fontFeatureSettings: dart.definiteFunctionType(dart.void, [core.String]),
    fontKerning: dart.definiteFunctionType(dart.void, [core.String]),
    fontSize: dart.definiteFunctionType(dart.void, [core.String]),
    fontSizeDelta: dart.definiteFunctionType(dart.void, [core.String]),
    fontSmoothing: dart.definiteFunctionType(dart.void, [core.String]),
    fontStretch: dart.definiteFunctionType(dart.void, [core.String]),
    fontStyle: dart.definiteFunctionType(dart.void, [core.String]),
    fontVariant: dart.definiteFunctionType(dart.void, [core.String]),
    fontVariantLigatures: dart.definiteFunctionType(dart.void, [core.String]),
    fontWeight: dart.definiteFunctionType(dart.void, [core.String]),
    grid: dart.definiteFunctionType(dart.void, [core.String]),
    gridArea: dart.definiteFunctionType(dart.void, [core.String]),
    gridAutoColumns: dart.definiteFunctionType(dart.void, [core.String]),
    gridAutoFlow: dart.definiteFunctionType(dart.void, [core.String]),
    gridAutoRows: dart.definiteFunctionType(dart.void, [core.String]),
    gridColumn: dart.definiteFunctionType(dart.void, [core.String]),
    gridColumnEnd: dart.definiteFunctionType(dart.void, [core.String]),
    gridColumnStart: dart.definiteFunctionType(dart.void, [core.String]),
    gridRow: dart.definiteFunctionType(dart.void, [core.String]),
    gridRowEnd: dart.definiteFunctionType(dart.void, [core.String]),
    gridRowStart: dart.definiteFunctionType(dart.void, [core.String]),
    gridTemplate: dart.definiteFunctionType(dart.void, [core.String]),
    gridTemplateAreas: dart.definiteFunctionType(dart.void, [core.String]),
    gridTemplateColumns: dart.definiteFunctionType(dart.void, [core.String]),
    gridTemplateRows: dart.definiteFunctionType(dart.void, [core.String]),
    height: dart.definiteFunctionType(dart.void, [core.String]),
    highlight: dart.definiteFunctionType(dart.void, [core.String]),
    hyphenateCharacter: dart.definiteFunctionType(dart.void, [core.String]),
    imageRendering: dart.definiteFunctionType(dart.void, [core.String]),
    isolation: dart.definiteFunctionType(dart.void, [core.String]),
    justifyContent: dart.definiteFunctionType(dart.void, [core.String]),
    justifySelf: dart.definiteFunctionType(dart.void, [core.String]),
    left: dart.definiteFunctionType(dart.void, [core.String]),
    letterSpacing: dart.definiteFunctionType(dart.void, [core.String]),
    lineBoxContain: dart.definiteFunctionType(dart.void, [core.String]),
    lineBreak: dart.definiteFunctionType(dart.void, [core.String]),
    lineClamp: dart.definiteFunctionType(dart.void, [core.String]),
    lineHeight: dart.definiteFunctionType(dart.void, [core.String]),
    listStyle: dart.definiteFunctionType(dart.void, [core.String]),
    listStyleImage: dart.definiteFunctionType(dart.void, [core.String]),
    listStylePosition: dart.definiteFunctionType(dart.void, [core.String]),
    listStyleType: dart.definiteFunctionType(dart.void, [core.String]),
    locale: dart.definiteFunctionType(dart.void, [core.String]),
    logicalHeight: dart.definiteFunctionType(dart.void, [core.String]),
    logicalWidth: dart.definiteFunctionType(dart.void, [core.String]),
    margin: dart.definiteFunctionType(dart.void, [core.String]),
    marginAfter: dart.definiteFunctionType(dart.void, [core.String]),
    marginAfterCollapse: dart.definiteFunctionType(dart.void, [core.String]),
    marginBefore: dart.definiteFunctionType(dart.void, [core.String]),
    marginBeforeCollapse: dart.definiteFunctionType(dart.void, [core.String]),
    marginBottom: dart.definiteFunctionType(dart.void, [core.String]),
    marginBottomCollapse: dart.definiteFunctionType(dart.void, [core.String]),
    marginCollapse: dart.definiteFunctionType(dart.void, [core.String]),
    marginEnd: dart.definiteFunctionType(dart.void, [core.String]),
    marginLeft: dart.definiteFunctionType(dart.void, [core.String]),
    marginRight: dart.definiteFunctionType(dart.void, [core.String]),
    marginStart: dart.definiteFunctionType(dart.void, [core.String]),
    marginTop: dart.definiteFunctionType(dart.void, [core.String]),
    marginTopCollapse: dart.definiteFunctionType(dart.void, [core.String]),
    mask: dart.definiteFunctionType(dart.void, [core.String]),
    maskBoxImage: dart.definiteFunctionType(dart.void, [core.String]),
    maskBoxImageOutset: dart.definiteFunctionType(dart.void, [core.String]),
    maskBoxImageRepeat: dart.definiteFunctionType(dart.void, [core.String]),
    maskBoxImageSlice: dart.definiteFunctionType(dart.void, [core.String]),
    maskBoxImageSource: dart.definiteFunctionType(dart.void, [core.String]),
    maskBoxImageWidth: dart.definiteFunctionType(dart.void, [core.String]),
    maskClip: dart.definiteFunctionType(dart.void, [core.String]),
    maskComposite: dart.definiteFunctionType(dart.void, [core.String]),
    maskImage: dart.definiteFunctionType(dart.void, [core.String]),
    maskOrigin: dart.definiteFunctionType(dart.void, [core.String]),
    maskPosition: dart.definiteFunctionType(dart.void, [core.String]),
    maskPositionX: dart.definiteFunctionType(dart.void, [core.String]),
    maskPositionY: dart.definiteFunctionType(dart.void, [core.String]),
    maskRepeat: dart.definiteFunctionType(dart.void, [core.String]),
    maskRepeatX: dart.definiteFunctionType(dart.void, [core.String]),
    maskRepeatY: dart.definiteFunctionType(dart.void, [core.String]),
    maskSize: dart.definiteFunctionType(dart.void, [core.String]),
    maskSourceType: dart.definiteFunctionType(dart.void, [core.String]),
    maxHeight: dart.definiteFunctionType(dart.void, [core.String]),
    maxLogicalHeight: dart.definiteFunctionType(dart.void, [core.String]),
    maxLogicalWidth: dart.definiteFunctionType(dart.void, [core.String]),
    maxWidth: dart.definiteFunctionType(dart.void, [core.String]),
    maxZoom: dart.definiteFunctionType(dart.void, [core.String]),
    minHeight: dart.definiteFunctionType(dart.void, [core.String]),
    minLogicalHeight: dart.definiteFunctionType(dart.void, [core.String]),
    minLogicalWidth: dart.definiteFunctionType(dart.void, [core.String]),
    minWidth: dart.definiteFunctionType(dart.void, [core.String]),
    minZoom: dart.definiteFunctionType(dart.void, [core.String]),
    mixBlendMode: dart.definiteFunctionType(dart.void, [core.String]),
    objectFit: dart.definiteFunctionType(dart.void, [core.String]),
    objectPosition: dart.definiteFunctionType(dart.void, [core.String]),
    opacity: dart.definiteFunctionType(dart.void, [core.String]),
    order: dart.definiteFunctionType(dart.void, [core.String]),
    orientation: dart.definiteFunctionType(dart.void, [core.String]),
    orphans: dart.definiteFunctionType(dart.void, [core.String]),
    outline: dart.definiteFunctionType(dart.void, [core.String]),
    outlineColor: dart.definiteFunctionType(dart.void, [core.String]),
    outlineOffset: dart.definiteFunctionType(dart.void, [core.String]),
    outlineStyle: dart.definiteFunctionType(dart.void, [core.String]),
    outlineWidth: dart.definiteFunctionType(dart.void, [core.String]),
    overflow: dart.definiteFunctionType(dart.void, [core.String]),
    overflowWrap: dart.definiteFunctionType(dart.void, [core.String]),
    overflowX: dart.definiteFunctionType(dart.void, [core.String]),
    overflowY: dart.definiteFunctionType(dart.void, [core.String]),
    padding: dart.definiteFunctionType(dart.void, [core.String]),
    paddingAfter: dart.definiteFunctionType(dart.void, [core.String]),
    paddingBefore: dart.definiteFunctionType(dart.void, [core.String]),
    paddingBottom: dart.definiteFunctionType(dart.void, [core.String]),
    paddingEnd: dart.definiteFunctionType(dart.void, [core.String]),
    paddingLeft: dart.definiteFunctionType(dart.void, [core.String]),
    paddingRight: dart.definiteFunctionType(dart.void, [core.String]),
    paddingStart: dart.definiteFunctionType(dart.void, [core.String]),
    paddingTop: dart.definiteFunctionType(dart.void, [core.String]),
    page: dart.definiteFunctionType(dart.void, [core.String]),
    pageBreakAfter: dart.definiteFunctionType(dart.void, [core.String]),
    pageBreakBefore: dart.definiteFunctionType(dart.void, [core.String]),
    pageBreakInside: dart.definiteFunctionType(dart.void, [core.String]),
    perspective: dart.definiteFunctionType(dart.void, [core.String]),
    perspectiveOrigin: dart.definiteFunctionType(dart.void, [core.String]),
    perspectiveOriginX: dart.definiteFunctionType(dart.void, [core.String]),
    perspectiveOriginY: dart.definiteFunctionType(dart.void, [core.String]),
    pointerEvents: dart.definiteFunctionType(dart.void, [core.String]),
    position: dart.definiteFunctionType(dart.void, [core.String]),
    printColorAdjust: dart.definiteFunctionType(dart.void, [core.String]),
    quotes: dart.definiteFunctionType(dart.void, [core.String]),
    resize: dart.definiteFunctionType(dart.void, [core.String]),
    right: dart.definiteFunctionType(dart.void, [core.String]),
    rtlOrdering: dart.definiteFunctionType(dart.void, [core.String]),
    rubyPosition: dart.definiteFunctionType(dart.void, [core.String]),
    scrollBehavior: dart.definiteFunctionType(dart.void, [core.String]),
    shapeImageThreshold: dart.definiteFunctionType(dart.void, [core.String]),
    shapeMargin: dart.definiteFunctionType(dart.void, [core.String]),
    shapeOutside: dart.definiteFunctionType(dart.void, [core.String]),
    size: dart.definiteFunctionType(dart.void, [core.String]),
    speak: dart.definiteFunctionType(dart.void, [core.String]),
    src: dart.definiteFunctionType(dart.void, [core.String]),
    tabSize: dart.definiteFunctionType(dart.void, [core.String]),
    tableLayout: dart.definiteFunctionType(dart.void, [core.String]),
    tapHighlightColor: dart.definiteFunctionType(dart.void, [core.String]),
    textAlign: dart.definiteFunctionType(dart.void, [core.String]),
    textAlignLast: dart.definiteFunctionType(dart.void, [core.String]),
    textCombine: dart.definiteFunctionType(dart.void, [core.String]),
    textDecoration: dart.definiteFunctionType(dart.void, [core.String]),
    textDecorationColor: dart.definiteFunctionType(dart.void, [core.String]),
    textDecorationLine: dart.definiteFunctionType(dart.void, [core.String]),
    textDecorationStyle: dart.definiteFunctionType(dart.void, [core.String]),
    textDecorationsInEffect: dart.definiteFunctionType(dart.void, [core.String]),
    textEmphasis: dart.definiteFunctionType(dart.void, [core.String]),
    textEmphasisColor: dart.definiteFunctionType(dart.void, [core.String]),
    textEmphasisPosition: dart.definiteFunctionType(dart.void, [core.String]),
    textEmphasisStyle: dart.definiteFunctionType(dart.void, [core.String]),
    textFillColor: dart.definiteFunctionType(dart.void, [core.String]),
    textIndent: dart.definiteFunctionType(dart.void, [core.String]),
    textJustify: dart.definiteFunctionType(dart.void, [core.String]),
    textLineThroughColor: dart.definiteFunctionType(dart.void, [core.String]),
    textLineThroughMode: dart.definiteFunctionType(dart.void, [core.String]),
    textLineThroughStyle: dart.definiteFunctionType(dart.void, [core.String]),
    textLineThroughWidth: dart.definiteFunctionType(dart.void, [core.String]),
    textOrientation: dart.definiteFunctionType(dart.void, [core.String]),
    textOverflow: dart.definiteFunctionType(dart.void, [core.String]),
    textOverlineColor: dart.definiteFunctionType(dart.void, [core.String]),
    textOverlineMode: dart.definiteFunctionType(dart.void, [core.String]),
    textOverlineStyle: dart.definiteFunctionType(dart.void, [core.String]),
    textOverlineWidth: dart.definiteFunctionType(dart.void, [core.String]),
    textRendering: dart.definiteFunctionType(dart.void, [core.String]),
    textSecurity: dart.definiteFunctionType(dart.void, [core.String]),
    textShadow: dart.definiteFunctionType(dart.void, [core.String]),
    textStroke: dart.definiteFunctionType(dart.void, [core.String]),
    textStrokeColor: dart.definiteFunctionType(dart.void, [core.String]),
    textStrokeWidth: dart.definiteFunctionType(dart.void, [core.String]),
    textTransform: dart.definiteFunctionType(dart.void, [core.String]),
    textUnderlineColor: dart.definiteFunctionType(dart.void, [core.String]),
    textUnderlineMode: dart.definiteFunctionType(dart.void, [core.String]),
    textUnderlinePosition: dart.definiteFunctionType(dart.void, [core.String]),
    textUnderlineStyle: dart.definiteFunctionType(dart.void, [core.String]),
    textUnderlineWidth: dart.definiteFunctionType(dart.void, [core.String]),
    top: dart.definiteFunctionType(dart.void, [core.String]),
    touchAction: dart.definiteFunctionType(dart.void, [core.String]),
    touchActionDelay: dart.definiteFunctionType(dart.void, [core.String]),
    transform: dart.definiteFunctionType(dart.void, [core.String]),
    transformOrigin: dart.definiteFunctionType(dart.void, [core.String]),
    transformOriginX: dart.definiteFunctionType(dart.void, [core.String]),
    transformOriginY: dart.definiteFunctionType(dart.void, [core.String]),
    transformOriginZ: dart.definiteFunctionType(dart.void, [core.String]),
    transformStyle: dart.definiteFunctionType(dart.void, [core.String]),
    transition: dart.definiteFunctionType(dart.void, [core.String]),
    transitionDelay: dart.definiteFunctionType(dart.void, [core.String]),
    transitionDuration: dart.definiteFunctionType(dart.void, [core.String]),
    transitionProperty: dart.definiteFunctionType(dart.void, [core.String]),
    transitionTimingFunction: dart.definiteFunctionType(dart.void, [core.String]),
    unicodeBidi: dart.definiteFunctionType(dart.void, [core.String]),
    unicodeRange: dart.definiteFunctionType(dart.void, [core.String]),
    userDrag: dart.definiteFunctionType(dart.void, [core.String]),
    userModify: dart.definiteFunctionType(dart.void, [core.String]),
    userSelect: dart.definiteFunctionType(dart.void, [core.String]),
    userZoom: dart.definiteFunctionType(dart.void, [core.String]),
    verticalAlign: dart.definiteFunctionType(dart.void, [core.String]),
    visibility: dart.definiteFunctionType(dart.void, [core.String]),
    whiteSpace: dart.definiteFunctionType(dart.void, [core.String]),
    widows: dart.definiteFunctionType(dart.void, [core.String]),
    width: dart.definiteFunctionType(dart.void, [core.String]),
    willChange: dart.definiteFunctionType(dart.void, [core.String]),
    wordBreak: dart.definiteFunctionType(dart.void, [core.String]),
    wordSpacing: dart.definiteFunctionType(dart.void, [core.String]),
    wordWrap: dart.definiteFunctionType(dart.void, [core.String]),
    wrapFlow: dart.definiteFunctionType(dart.void, [core.String]),
    wrapThrough: dart.definiteFunctionType(dart.void, [core.String]),
    writingMode: dart.definiteFunctionType(dart.void, [core.String]),
    zIndex: dart.definiteFunctionType(dart.void, [core.String]),
    zoom: dart.definiteFunctionType(dart.void, [core.String])
  })
});
dart.defineExtensionMembers(html.CssStyleDeclarationBase, [
  'alignContent',
  'alignContent',
  'alignItems',
  'alignItems',
  'alignSelf',
  'alignSelf',
  'animation',
  'animation',
  'animationDelay',
  'animationDelay',
  'animationDirection',
  'animationDirection',
  'animationDuration',
  'animationDuration',
  'animationFillMode',
  'animationFillMode',
  'animationIterationCount',
  'animationIterationCount',
  'animationName',
  'animationName',
  'animationPlayState',
  'animationPlayState',
  'animationTimingFunction',
  'animationTimingFunction',
  'appRegion',
  'appRegion',
  'appearance',
  'appearance',
  'aspectRatio',
  'aspectRatio',
  'backfaceVisibility',
  'backfaceVisibility',
  'background',
  'background',
  'backgroundAttachment',
  'backgroundAttachment',
  'backgroundBlendMode',
  'backgroundBlendMode',
  'backgroundClip',
  'backgroundClip',
  'backgroundColor',
  'backgroundColor',
  'backgroundComposite',
  'backgroundComposite',
  'backgroundImage',
  'backgroundImage',
  'backgroundOrigin',
  'backgroundOrigin',
  'backgroundPosition',
  'backgroundPosition',
  'backgroundPositionX',
  'backgroundPositionX',
  'backgroundPositionY',
  'backgroundPositionY',
  'backgroundRepeat',
  'backgroundRepeat',
  'backgroundRepeatX',
  'backgroundRepeatX',
  'backgroundRepeatY',
  'backgroundRepeatY',
  'backgroundSize',
  'backgroundSize',
  'border',
  'border',
  'borderAfter',
  'borderAfter',
  'borderAfterColor',
  'borderAfterColor',
  'borderAfterStyle',
  'borderAfterStyle',
  'borderAfterWidth',
  'borderAfterWidth',
  'borderBefore',
  'borderBefore',
  'borderBeforeColor',
  'borderBeforeColor',
  'borderBeforeStyle',
  'borderBeforeStyle',
  'borderBeforeWidth',
  'borderBeforeWidth',
  'borderBottom',
  'borderBottom',
  'borderBottomColor',
  'borderBottomColor',
  'borderBottomLeftRadius',
  'borderBottomLeftRadius',
  'borderBottomRightRadius',
  'borderBottomRightRadius',
  'borderBottomStyle',
  'borderBottomStyle',
  'borderBottomWidth',
  'borderBottomWidth',
  'borderCollapse',
  'borderCollapse',
  'borderColor',
  'borderColor',
  'borderEnd',
  'borderEnd',
  'borderEndColor',
  'borderEndColor',
  'borderEndStyle',
  'borderEndStyle',
  'borderEndWidth',
  'borderEndWidth',
  'borderFit',
  'borderFit',
  'borderHorizontalSpacing',
  'borderHorizontalSpacing',
  'borderImage',
  'borderImage',
  'borderImageOutset',
  'borderImageOutset',
  'borderImageRepeat',
  'borderImageRepeat',
  'borderImageSlice',
  'borderImageSlice',
  'borderImageSource',
  'borderImageSource',
  'borderImageWidth',
  'borderImageWidth',
  'borderLeft',
  'borderLeft',
  'borderLeftColor',
  'borderLeftColor',
  'borderLeftStyle',
  'borderLeftStyle',
  'borderLeftWidth',
  'borderLeftWidth',
  'borderRadius',
  'borderRadius',
  'borderRight',
  'borderRight',
  'borderRightColor',
  'borderRightColor',
  'borderRightStyle',
  'borderRightStyle',
  'borderRightWidth',
  'borderRightWidth',
  'borderSpacing',
  'borderSpacing',
  'borderStart',
  'borderStart',
  'borderStartColor',
  'borderStartColor',
  'borderStartStyle',
  'borderStartStyle',
  'borderStartWidth',
  'borderStartWidth',
  'borderStyle',
  'borderStyle',
  'borderTop',
  'borderTop',
  'borderTopColor',
  'borderTopColor',
  'borderTopLeftRadius',
  'borderTopLeftRadius',
  'borderTopRightRadius',
  'borderTopRightRadius',
  'borderTopStyle',
  'borderTopStyle',
  'borderTopWidth',
  'borderTopWidth',
  'borderVerticalSpacing',
  'borderVerticalSpacing',
  'borderWidth',
  'borderWidth',
  'bottom',
  'bottom',
  'boxAlign',
  'boxAlign',
  'boxDecorationBreak',
  'boxDecorationBreak',
  'boxDirection',
  'boxDirection',
  'boxFlex',
  'boxFlex',
  'boxFlexGroup',
  'boxFlexGroup',
  'boxLines',
  'boxLines',
  'boxOrdinalGroup',
  'boxOrdinalGroup',
  'boxOrient',
  'boxOrient',
  'boxPack',
  'boxPack',
  'boxReflect',
  'boxReflect',
  'boxShadow',
  'boxShadow',
  'boxSizing',
  'boxSizing',
  'captionSide',
  'captionSide',
  'clear',
  'clear',
  'clip',
  'clip',
  'clipPath',
  'clipPath',
  'color',
  'color',
  'columnBreakAfter',
  'columnBreakAfter',
  'columnBreakBefore',
  'columnBreakBefore',
  'columnBreakInside',
  'columnBreakInside',
  'columnCount',
  'columnCount',
  'columnFill',
  'columnFill',
  'columnGap',
  'columnGap',
  'columnRule',
  'columnRule',
  'columnRuleColor',
  'columnRuleColor',
  'columnRuleStyle',
  'columnRuleStyle',
  'columnRuleWidth',
  'columnRuleWidth',
  'columnSpan',
  'columnSpan',
  'columnWidth',
  'columnWidth',
  'columns',
  'columns',
  'content',
  'content',
  'counterIncrement',
  'counterIncrement',
  'counterReset',
  'counterReset',
  'cursor',
  'cursor',
  'direction',
  'direction',
  'display',
  'display',
  'emptyCells',
  'emptyCells',
  'filter',
  'filter',
  'flex',
  'flex',
  'flexBasis',
  'flexBasis',
  'flexDirection',
  'flexDirection',
  'flexFlow',
  'flexFlow',
  'flexGrow',
  'flexGrow',
  'flexShrink',
  'flexShrink',
  'flexWrap',
  'flexWrap',
  'float',
  'float',
  'font',
  'font',
  'fontFamily',
  'fontFamily',
  'fontFeatureSettings',
  'fontFeatureSettings',
  'fontKerning',
  'fontKerning',
  'fontSize',
  'fontSize',
  'fontSizeDelta',
  'fontSizeDelta',
  'fontSmoothing',
  'fontSmoothing',
  'fontStretch',
  'fontStretch',
  'fontStyle',
  'fontStyle',
  'fontVariant',
  'fontVariant',
  'fontVariantLigatures',
  'fontVariantLigatures',
  'fontWeight',
  'fontWeight',
  'grid',
  'grid',
  'gridArea',
  'gridArea',
  'gridAutoColumns',
  'gridAutoColumns',
  'gridAutoFlow',
  'gridAutoFlow',
  'gridAutoRows',
  'gridAutoRows',
  'gridColumn',
  'gridColumn',
  'gridColumnEnd',
  'gridColumnEnd',
  'gridColumnStart',
  'gridColumnStart',
  'gridRow',
  'gridRow',
  'gridRowEnd',
  'gridRowEnd',
  'gridRowStart',
  'gridRowStart',
  'gridTemplate',
  'gridTemplate',
  'gridTemplateAreas',
  'gridTemplateAreas',
  'gridTemplateColumns',
  'gridTemplateColumns',
  'gridTemplateRows',
  'gridTemplateRows',
  'height',
  'height',
  'highlight',
  'highlight',
  'hyphenateCharacter',
  'hyphenateCharacter',
  'imageRendering',
  'imageRendering',
  'isolation',
  'isolation',
  'justifyContent',
  'justifyContent',
  'justifySelf',
  'justifySelf',
  'left',
  'left',
  'letterSpacing',
  'letterSpacing',
  'lineBoxContain',
  'lineBoxContain',
  'lineBreak',
  'lineBreak',
  'lineClamp',
  'lineClamp',
  'lineHeight',
  'lineHeight',
  'listStyle',
  'listStyle',
  'listStyleImage',
  'listStyleImage',
  'listStylePosition',
  'listStylePosition',
  'listStyleType',
  'listStyleType',
  'locale',
  'locale',
  'logicalHeight',
  'logicalHeight',
  'logicalWidth',
  'logicalWidth',
  'margin',
  'margin',
  'marginAfter',
  'marginAfter',
  'marginAfterCollapse',
  'marginAfterCollapse',
  'marginBefore',
  'marginBefore',
  'marginBeforeCollapse',
  'marginBeforeCollapse',
  'marginBottom',
  'marginBottom',
  'marginBottomCollapse',
  'marginBottomCollapse',
  'marginCollapse',
  'marginCollapse',
  'marginEnd',
  'marginEnd',
  'marginLeft',
  'marginLeft',
  'marginRight',
  'marginRight',
  'marginStart',
  'marginStart',
  'marginTop',
  'marginTop',
  'marginTopCollapse',
  'marginTopCollapse',
  'mask',
  'mask',
  'maskBoxImage',
  'maskBoxImage',
  'maskBoxImageOutset',
  'maskBoxImageOutset',
  'maskBoxImageRepeat',
  'maskBoxImageRepeat',
  'maskBoxImageSlice',
  'maskBoxImageSlice',
  'maskBoxImageSource',
  'maskBoxImageSource',
  'maskBoxImageWidth',
  'maskBoxImageWidth',
  'maskClip',
  'maskClip',
  'maskComposite',
  'maskComposite',
  'maskImage',
  'maskImage',
  'maskOrigin',
  'maskOrigin',
  'maskPosition',
  'maskPosition',
  'maskPositionX',
  'maskPositionX',
  'maskPositionY',
  'maskPositionY',
  'maskRepeat',
  'maskRepeat',
  'maskRepeatX',
  'maskRepeatX',
  'maskRepeatY',
  'maskRepeatY',
  'maskSize',
  'maskSize',
  'maskSourceType',
  'maskSourceType',
  'maxHeight',
  'maxHeight',
  'maxLogicalHeight',
  'maxLogicalHeight',
  'maxLogicalWidth',
  'maxLogicalWidth',
  'maxWidth',
  'maxWidth',
  'maxZoom',
  'maxZoom',
  'minHeight',
  'minHeight',
  'minLogicalHeight',
  'minLogicalHeight',
  'minLogicalWidth',
  'minLogicalWidth',
  'minWidth',
  'minWidth',
  'minZoom',
  'minZoom',
  'mixBlendMode',
  'mixBlendMode',
  'objectFit',
  'objectFit',
  'objectPosition',
  'objectPosition',
  'opacity',
  'opacity',
  'order',
  'order',
  'orientation',
  'orientation',
  'orphans',
  'orphans',
  'outline',
  'outline',
  'outlineColor',
  'outlineColor',
  'outlineOffset',
  'outlineOffset',
  'outlineStyle',
  'outlineStyle',
  'outlineWidth',
  'outlineWidth',
  'overflow',
  'overflow',
  'overflowWrap',
  'overflowWrap',
  'overflowX',
  'overflowX',
  'overflowY',
  'overflowY',
  'padding',
  'padding',
  'paddingAfter',
  'paddingAfter',
  'paddingBefore',
  'paddingBefore',
  'paddingBottom',
  'paddingBottom',
  'paddingEnd',
  'paddingEnd',
  'paddingLeft',
  'paddingLeft',
  'paddingRight',
  'paddingRight',
  'paddingStart',
  'paddingStart',
  'paddingTop',
  'paddingTop',
  'page',
  'page',
  'pageBreakAfter',
  'pageBreakAfter',
  'pageBreakBefore',
  'pageBreakBefore',
  'pageBreakInside',
  'pageBreakInside',
  'perspective',
  'perspective',
  'perspectiveOrigin',
  'perspectiveOrigin',
  'perspectiveOriginX',
  'perspectiveOriginX',
  'perspectiveOriginY',
  'perspectiveOriginY',
  'pointerEvents',
  'pointerEvents',
  'position',
  'position',
  'printColorAdjust',
  'printColorAdjust',
  'quotes',
  'quotes',
  'resize',
  'resize',
  'right',
  'right',
  'rtlOrdering',
  'rtlOrdering',
  'rubyPosition',
  'rubyPosition',
  'scrollBehavior',
  'scrollBehavior',
  'shapeImageThreshold',
  'shapeImageThreshold',
  'shapeMargin',
  'shapeMargin',
  'shapeOutside',
  'shapeOutside',
  'size',
  'size',
  'speak',
  'speak',
  'src',
  'src',
  'tabSize',
  'tabSize',
  'tableLayout',
  'tableLayout',
  'tapHighlightColor',
  'tapHighlightColor',
  'textAlign',
  'textAlign',
  'textAlignLast',
  'textAlignLast',
  'textCombine',
  'textCombine',
  'textDecoration',
  'textDecoration',
  'textDecorationColor',
  'textDecorationColor',
  'textDecorationLine',
  'textDecorationLine',
  'textDecorationStyle',
  'textDecorationStyle',
  'textDecorationsInEffect',
  'textDecorationsInEffect',
  'textEmphasis',
  'textEmphasis',
  'textEmphasisColor',
  'textEmphasisColor',
  'textEmphasisPosition',
  'textEmphasisPosition',
  'textEmphasisStyle',
  'textEmphasisStyle',
  'textFillColor',
  'textFillColor',
  'textIndent',
  'textIndent',
  'textJustify',
  'textJustify',
  'textLineThroughColor',
  'textLineThroughColor',
  'textLineThroughMode',
  'textLineThroughMode',
  'textLineThroughStyle',
  'textLineThroughStyle',
  'textLineThroughWidth',
  'textLineThroughWidth',
  'textOrientation',
  'textOrientation',
  'textOverflow',
  'textOverflow',
  'textOverlineColor',
  'textOverlineColor',
  'textOverlineMode',
  'textOverlineMode',
  'textOverlineStyle',
  'textOverlineStyle',
  'textOverlineWidth',
  'textOverlineWidth',
  'textRendering',
  'textRendering',
  'textSecurity',
  'textSecurity',
  'textShadow',
  'textShadow',
  'textStroke',
  'textStroke',
  'textStrokeColor',
  'textStrokeColor',
  'textStrokeWidth',
  'textStrokeWidth',
  'textTransform',
  'textTransform',
  'textUnderlineColor',
  'textUnderlineColor',
  'textUnderlineMode',
  'textUnderlineMode',
  'textUnderlinePosition',
  'textUnderlinePosition',
  'textUnderlineStyle',
  'textUnderlineStyle',
  'textUnderlineWidth',
  'textUnderlineWidth',
  'top',
  'top',
  'touchAction',
  'touchAction',
  'touchActionDelay',
  'touchActionDelay',
  'transform',
  'transform',
  'transformOrigin',
  'transformOrigin',
  'transformOriginX',
  'transformOriginX',
  'transformOriginY',
  'transformOriginY',
  'transformOriginZ',
  'transformOriginZ',
  'transformStyle',
  'transformStyle',
  'transition',
  'transition',
  'transitionDelay',
  'transitionDelay',
  'transitionDuration',
  'transitionDuration',
  'transitionProperty',
  'transitionProperty',
  'transitionTimingFunction',
  'transitionTimingFunction',
  'unicodeBidi',
  'unicodeBidi',
  'unicodeRange',
  'unicodeRange',
  'userDrag',
  'userDrag',
  'userModify',
  'userModify',
  'userSelect',
  'userSelect',
  'userZoom',
  'userZoom',
  'verticalAlign',
  'verticalAlign',
  'visibility',
  'visibility',
  'whiteSpace',
  'whiteSpace',
  'widows',
  'widows',
  'width',
  'width',
  'willChange',
  'willChange',
  'wordBreak',
  'wordBreak',
  'wordSpacing',
  'wordSpacing',
  'wordWrap',
  'wordWrap',
  'wrapFlow',
  'wrapFlow',
  'wrapThrough',
  'wrapThrough',
  'writingMode',
  'writingMode',
  'zIndex',
  'zIndex',
  'zoom',
  'zoom'
]);
dart.defineExtensionNames([
  'getPropertyValue',
  'supportsProperty',
  'setProperty',
  'getPropertyPriority',
  'item',
  'removeProperty',
  'background',
  'background',
  'backgroundAttachment',
  'backgroundAttachment',
  'backgroundColor',
  'backgroundColor',
  'backgroundImage',
  'backgroundImage',
  'backgroundPosition',
  'backgroundPosition',
  'backgroundRepeat',
  'backgroundRepeat',
  'border',
  'border',
  'borderBottom',
  'borderBottom',
  'borderBottomColor',
  'borderBottomColor',
  'borderBottomStyle',
  'borderBottomStyle',
  'borderBottomWidth',
  'borderBottomWidth',
  'borderCollapse',
  'borderCollapse',
  'borderColor',
  'borderColor',
  'borderLeft',
  'borderLeft',
  'borderLeftColor',
  'borderLeftColor',
  'borderLeftStyle',
  'borderLeftStyle',
  'borderLeftWidth',
  'borderLeftWidth',
  'borderRight',
  'borderRight',
  'borderRightColor',
  'borderRightColor',
  'borderRightStyle',
  'borderRightStyle',
  'borderRightWidth',
  'borderRightWidth',
  'borderSpacing',
  'borderSpacing',
  'borderStyle',
  'borderStyle',
  'borderTop',
  'borderTop',
  'borderTopColor',
  'borderTopColor',
  'borderTopStyle',
  'borderTopStyle',
  'borderTopWidth',
  'borderTopWidth',
  'borderWidth',
  'borderWidth',
  'bottom',
  'bottom',
  'captionSide',
  'captionSide',
  'clear',
  'clear',
  'clip',
  'clip',
  'color',
  'color',
  'content',
  'content',
  'cursor',
  'cursor',
  'direction',
  'direction',
  'display',
  'display',
  'emptyCells',
  'emptyCells',
  'font',
  'font',
  'fontFamily',
  'fontFamily',
  'fontSize',
  'fontSize',
  'fontStyle',
  'fontStyle',
  'fontVariant',
  'fontVariant',
  'fontWeight',
  'fontWeight',
  'height',
  'height',
  'left',
  'left',
  'letterSpacing',
  'letterSpacing',
  'lineHeight',
  'lineHeight',
  'listStyle',
  'listStyle',
  'listStyleImage',
  'listStyleImage',
  'listStylePosition',
  'listStylePosition',
  'listStyleType',
  'listStyleType',
  'margin',
  'margin',
  'marginBottom',
  'marginBottom',
  'marginLeft',
  'marginLeft',
  'marginRight',
  'marginRight',
  'marginTop',
  'marginTop',
  'maxHeight',
  'maxHeight',
  'maxWidth',
  'maxWidth',
  'minHeight',
  'minHeight',
  'minWidth',
  'minWidth',
  'outline',
  'outline',
  'outlineColor',
  'outlineColor',
  'outlineStyle',
  'outlineStyle',
  'outlineWidth',
  'outlineWidth',
  'overflow',
  'overflow',
  'padding',
  'padding',
  'paddingBottom',
  'paddingBottom',
  'paddingLeft',
  'paddingLeft',
  'paddingRight',
  'paddingRight',
  'paddingTop',
  'paddingTop',
  'pageBreakAfter',
  'pageBreakAfter',
  'pageBreakBefore',
  'pageBreakBefore',
  'pageBreakInside',
  'pageBreakInside',
  'position',
  'position',
  'quotes',
  'quotes',
  'right',
  'right',
  'tableLayout',
  'tableLayout',
  'textAlign',
  'textAlign',
  'textDecoration',
  'textDecoration',
  'textIndent',
  'textIndent',
  'textTransform',
  'textTransform',
  'top',
  'top',
  'unicodeBidi',
  'unicodeBidi',
  'verticalAlign',
  'verticalAlign',
  'visibility',
  'visibility',
  'whiteSpace',
  'whiteSpace',
  'width',
  'width',
  'wordSpacing',
  'wordSpacing',
  'zIndex',
  'zIndex',
  'cssText',
  'length',
  'parentRule'
]);
html.CssStyleDeclaration = class CssStyleDeclaration extends dart.mixin(_interceptors.Interceptor, html.CssStyleDeclarationBase) {
  static new() {
    return html.CssStyleDeclaration.css('');
  }
  static css(css) {
    let style = html.Element.tag('div')[dartx.style];
    style[dartx.cssText] = css;
    return style;
  }
  [dartx.getPropertyValue](propertyName) {
    let propValue = this[_getPropertyValueHelper](propertyName);
    return propValue != null ? propValue : '';
  }
  [_getPropertyValueHelper](propertyName) {
    if (dart.test(this[_supportsProperty](html.CssStyleDeclaration._camelCase(propertyName)))) {
      return this[_getPropertyValue](propertyName);
    } else {
      return this[_getPropertyValue](dart.notNull(html_common.Device.cssPrefix) + dart.notNull(propertyName));
    }
  }
  [dartx.supportsProperty](propertyName) {
    return dart.test(this[_supportsProperty](propertyName)) || dart.test(this[_supportsProperty](html.CssStyleDeclaration._camelCase(dart.notNull(html_common.Device.cssPrefix) + dart.notNull(propertyName))));
  }
  [_supportsProperty](propertyName) {
    return propertyName in this;
  }
  [dartx.setProperty](propertyName, value, priority) {
    if (priority === void 0) priority = null;
    return this[_setPropertyHelper](this[_browserPropertyName](propertyName), value, priority);
  }
  [_browserPropertyName](propertyName) {
    let name = html.CssStyleDeclaration._readCache(propertyName);
    if (typeof name == 'string') return name;
    if (dart.test(this[_supportsProperty](html.CssStyleDeclaration._camelCase(propertyName)))) {
      name = propertyName;
    } else {
      name = dart.notNull(html_common.Device.cssPrefix) + dart.notNull(propertyName);
    }
    html.CssStyleDeclaration._writeCache(propertyName, name);
    return name;
  }
  static _readCache(key) {
    return html.CssStyleDeclaration._propertyCache[key];
  }
  static _writeCache(key, value) {
    html.CssStyleDeclaration._propertyCache[key] = value;
  }
  static _camelCase(hyphenated) {
    let replacedMs = hyphenated.replace(/^-ms-/, "ms-");
    return replacedMs.replace(/-([\da-z])/ig, (_, letter) => letter.toUpperCase());
  }
  [_setPropertyHelper](propertyName, value, priority) {
    if (priority === void 0) priority = null;
    if (value == null) value = '';
    if (priority == null) priority = '';
    this.setProperty(propertyName, value, priority);
  }
  static get supportsTransitions() {
    return html.document[dartx.body][dartx.style][dartx.supportsProperty]('transition');
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.cssText]() {
    return this.cssText;
  }
  set [dartx.cssText](value) {
    this.cssText = value;
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.parentRule]() {
    return this.parentRule;
  }
  [dartx.getPropertyPriority](...args) {
    return this.getPropertyPriority.apply(this, args);
  }
  [_getPropertyValue](...args) {
    return this.getPropertyValue.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
  [dartx.removeProperty](...args) {
    return this.removeProperty.apply(this, args);
  }
  get [dartx.background]() {
    return this[_background];
  }
  set [dartx.background](value) {
    this[_background] = value == null ? '' : value;
  }
  get [_background]() {
    return this.background;
  }
  set [_background](value) {
    this.background = value;
  }
  get [dartx.backgroundAttachment]() {
    return this[_backgroundAttachment];
  }
  set [dartx.backgroundAttachment](value) {
    this[_backgroundAttachment] = value == null ? '' : value;
  }
  get [_backgroundAttachment]() {
    return this.backgroundAttachment;
  }
  set [_backgroundAttachment](value) {
    this.backgroundAttachment = value;
  }
  get [dartx.backgroundColor]() {
    return this[_backgroundColor];
  }
  set [dartx.backgroundColor](value) {
    this[_backgroundColor] = value == null ? '' : value;
  }
  get [_backgroundColor]() {
    return this.backgroundColor;
  }
  set [_backgroundColor](value) {
    this.backgroundColor = value;
  }
  get [dartx.backgroundImage]() {
    return this[_backgroundImage];
  }
  set [dartx.backgroundImage](value) {
    this[_backgroundImage] = value == null ? '' : value;
  }
  get [_backgroundImage]() {
    return this.backgroundImage;
  }
  set [_backgroundImage](value) {
    this.backgroundImage = value;
  }
  get [dartx.backgroundPosition]() {
    return this[_backgroundPosition];
  }
  set [dartx.backgroundPosition](value) {
    this[_backgroundPosition] = value == null ? '' : value;
  }
  get [_backgroundPosition]() {
    return this.backgroundPosition;
  }
  set [_backgroundPosition](value) {
    this.backgroundPosition = value;
  }
  get [dartx.backgroundRepeat]() {
    return this[_backgroundRepeat];
  }
  set [dartx.backgroundRepeat](value) {
    this[_backgroundRepeat] = value == null ? '' : value;
  }
  get [_backgroundRepeat]() {
    return this.backgroundRepeat;
  }
  set [_backgroundRepeat](value) {
    this.backgroundRepeat = value;
  }
  get [dartx.border]() {
    return this[_border];
  }
  set [dartx.border](value) {
    this[_border] = value == null ? '' : value;
  }
  get [_border]() {
    return this.border;
  }
  set [_border](value) {
    this.border = value;
  }
  get [dartx.borderBottom]() {
    return this[_borderBottom];
  }
  set [dartx.borderBottom](value) {
    this[_borderBottom] = value == null ? '' : value;
  }
  get [_borderBottom]() {
    return this.borderBottom;
  }
  set [_borderBottom](value) {
    this.borderBottom = value;
  }
  get [dartx.borderBottomColor]() {
    return this[_borderBottomColor];
  }
  set [dartx.borderBottomColor](value) {
    this[_borderBottomColor] = value == null ? '' : value;
  }
  get [_borderBottomColor]() {
    return this.borderBottomColor;
  }
  set [_borderBottomColor](value) {
    this.borderBottomColor = value;
  }
  get [dartx.borderBottomStyle]() {
    return this[_borderBottomStyle];
  }
  set [dartx.borderBottomStyle](value) {
    this[_borderBottomStyle] = value == null ? '' : value;
  }
  get [_borderBottomStyle]() {
    return this.borderBottomStyle;
  }
  set [_borderBottomStyle](value) {
    this.borderBottomStyle = value;
  }
  get [dartx.borderBottomWidth]() {
    return this[_borderBottomWidth];
  }
  set [dartx.borderBottomWidth](value) {
    this[_borderBottomWidth] = value == null ? '' : value;
  }
  get [_borderBottomWidth]() {
    return this.borderBottomWidth;
  }
  set [_borderBottomWidth](value) {
    this.borderBottomWidth = value;
  }
  get [dartx.borderCollapse]() {
    return this[_borderCollapse];
  }
  set [dartx.borderCollapse](value) {
    this[_borderCollapse] = value == null ? '' : value;
  }
  get [_borderCollapse]() {
    return this.borderCollapse;
  }
  set [_borderCollapse](value) {
    this.borderCollapse = value;
  }
  get [dartx.borderColor]() {
    return this[_borderColor];
  }
  set [dartx.borderColor](value) {
    this[_borderColor] = value == null ? '' : value;
  }
  get [_borderColor]() {
    return this.borderColor;
  }
  set [_borderColor](value) {
    this.borderColor = value;
  }
  get [dartx.borderLeft]() {
    return this[_borderLeft];
  }
  set [dartx.borderLeft](value) {
    this[_borderLeft] = value == null ? '' : value;
  }
  get [_borderLeft]() {
    return this.borderLeft;
  }
  set [_borderLeft](value) {
    this.borderLeft = value;
  }
  get [dartx.borderLeftColor]() {
    return this[_borderLeftColor];
  }
  set [dartx.borderLeftColor](value) {
    this[_borderLeftColor] = value == null ? '' : value;
  }
  get [_borderLeftColor]() {
    return this.borderLeftColor;
  }
  set [_borderLeftColor](value) {
    this.borderLeftColor = value;
  }
  get [dartx.borderLeftStyle]() {
    return this[_borderLeftStyle];
  }
  set [dartx.borderLeftStyle](value) {
    this[_borderLeftStyle] = value == null ? '' : value;
  }
  get [_borderLeftStyle]() {
    return this.borderLeftStyle;
  }
  set [_borderLeftStyle](value) {
    this.borderLeftStyle = value;
  }
  get [dartx.borderLeftWidth]() {
    return this[_borderLeftWidth];
  }
  set [dartx.borderLeftWidth](value) {
    this[_borderLeftWidth] = value == null ? '' : value;
  }
  get [_borderLeftWidth]() {
    return this.borderLeftWidth;
  }
  set [_borderLeftWidth](value) {
    this.borderLeftWidth = value;
  }
  get [dartx.borderRight]() {
    return this[_borderRight];
  }
  set [dartx.borderRight](value) {
    this[_borderRight] = value == null ? '' : value;
  }
  get [_borderRight]() {
    return this.borderRight;
  }
  set [_borderRight](value) {
    this.borderRight = value;
  }
  get [dartx.borderRightColor]() {
    return this[_borderRightColor];
  }
  set [dartx.borderRightColor](value) {
    this[_borderRightColor] = value == null ? '' : value;
  }
  get [_borderRightColor]() {
    return this.borderRightColor;
  }
  set [_borderRightColor](value) {
    this.borderRightColor = value;
  }
  get [dartx.borderRightStyle]() {
    return this[_borderRightStyle];
  }
  set [dartx.borderRightStyle](value) {
    this[_borderRightStyle] = value == null ? '' : value;
  }
  get [_borderRightStyle]() {
    return this.borderRightStyle;
  }
  set [_borderRightStyle](value) {
    this.borderRightStyle = value;
  }
  get [dartx.borderRightWidth]() {
    return this[_borderRightWidth];
  }
  set [dartx.borderRightWidth](value) {
    this[_borderRightWidth] = value == null ? '' : value;
  }
  get [_borderRightWidth]() {
    return this.borderRightWidth;
  }
  set [_borderRightWidth](value) {
    this.borderRightWidth = value;
  }
  get [dartx.borderSpacing]() {
    return this[_borderSpacing];
  }
  set [dartx.borderSpacing](value) {
    this[_borderSpacing] = value == null ? '' : value;
  }
  get [_borderSpacing]() {
    return this.borderSpacing;
  }
  set [_borderSpacing](value) {
    this.borderSpacing = value;
  }
  get [dartx.borderStyle]() {
    return this[_borderStyle];
  }
  set [dartx.borderStyle](value) {
    this[_borderStyle] = value == null ? '' : value;
  }
  get [_borderStyle]() {
    return this.borderStyle;
  }
  set [_borderStyle](value) {
    this.borderStyle = value;
  }
  get [dartx.borderTop]() {
    return this[_borderTop];
  }
  set [dartx.borderTop](value) {
    this[_borderTop] = value == null ? '' : value;
  }
  get [_borderTop]() {
    return this.borderTop;
  }
  set [_borderTop](value) {
    this.borderTop = value;
  }
  get [dartx.borderTopColor]() {
    return this[_borderTopColor];
  }
  set [dartx.borderTopColor](value) {
    this[_borderTopColor] = value == null ? '' : value;
  }
  get [_borderTopColor]() {
    return this.borderTopColor;
  }
  set [_borderTopColor](value) {
    this.borderTopColor = value;
  }
  get [dartx.borderTopStyle]() {
    return this[_borderTopStyle];
  }
  set [dartx.borderTopStyle](value) {
    this[_borderTopStyle] = value == null ? '' : value;
  }
  get [_borderTopStyle]() {
    return this.borderTopStyle;
  }
  set [_borderTopStyle](value) {
    this.borderTopStyle = value;
  }
  get [dartx.borderTopWidth]() {
    return this[_borderTopWidth];
  }
  set [dartx.borderTopWidth](value) {
    this[_borderTopWidth] = value == null ? '' : value;
  }
  get [_borderTopWidth]() {
    return this.borderTopWidth;
  }
  set [_borderTopWidth](value) {
    this.borderTopWidth = value;
  }
  get [dartx.borderWidth]() {
    return this[_borderWidth];
  }
  set [dartx.borderWidth](value) {
    this[_borderWidth] = value == null ? '' : value;
  }
  get [_borderWidth]() {
    return this.borderWidth;
  }
  set [_borderWidth](value) {
    this.borderWidth = value;
  }
  get [dartx.bottom]() {
    return this[_bottom];
  }
  set [dartx.bottom](value) {
    this[_bottom] = value == null ? '' : value;
  }
  get [_bottom]() {
    return this.bottom;
  }
  set [_bottom](value) {
    this.bottom = value;
  }
  get [dartx.captionSide]() {
    return this[_captionSide];
  }
  set [dartx.captionSide](value) {
    this[_captionSide] = value == null ? '' : value;
  }
  get [_captionSide]() {
    return this.captionSide;
  }
  set [_captionSide](value) {
    this.captionSide = value;
  }
  get [dartx.clear]() {
    return this[_clear];
  }
  set [dartx.clear](value) {
    this[_clear] = value == null ? '' : value;
  }
  get [_clear]() {
    return this.clear;
  }
  set [_clear](value) {
    this.clear = value;
  }
  get [dartx.clip]() {
    return this[_clip];
  }
  set [dartx.clip](value) {
    this[_clip] = value == null ? '' : value;
  }
  get [_clip]() {
    return this.clip;
  }
  set [_clip](value) {
    this.clip = value;
  }
  get [dartx.color]() {
    return this[_color];
  }
  set [dartx.color](value) {
    this[_color] = value == null ? '' : value;
  }
  get [_color]() {
    return this.color;
  }
  set [_color](value) {
    this.color = value;
  }
  get [dartx.content]() {
    return this[_content];
  }
  set [dartx.content](value) {
    this[_content] = value == null ? '' : value;
  }
  get [_content]() {
    return this.content;
  }
  set [_content](value) {
    this.content = value;
  }
  get [dartx.cursor]() {
    return this[_cursor];
  }
  set [dartx.cursor](value) {
    this[_cursor] = value == null ? '' : value;
  }
  get [_cursor]() {
    return this.cursor;
  }
  set [_cursor](value) {
    this.cursor = value;
  }
  get [dartx.direction]() {
    return this[_direction];
  }
  set [dartx.direction](value) {
    this[_direction] = value == null ? '' : value;
  }
  get [_direction]() {
    return this.direction;
  }
  set [_direction](value) {
    this.direction = value;
  }
  get [dartx.display]() {
    return this[_display];
  }
  set [dartx.display](value) {
    this[_display] = value == null ? '' : value;
  }
  get [_display]() {
    return this.display;
  }
  set [_display](value) {
    this.display = value;
  }
  get [dartx.emptyCells]() {
    return this[_emptyCells];
  }
  set [dartx.emptyCells](value) {
    this[_emptyCells] = value == null ? '' : value;
  }
  get [_emptyCells]() {
    return this.emptyCells;
  }
  set [_emptyCells](value) {
    this.emptyCells = value;
  }
  get [dartx.font]() {
    return this[_font];
  }
  set [dartx.font](value) {
    this[_font] = value == null ? '' : value;
  }
  get [_font]() {
    return this.font;
  }
  set [_font](value) {
    this.font = value;
  }
  get [dartx.fontFamily]() {
    return this[_fontFamily];
  }
  set [dartx.fontFamily](value) {
    this[_fontFamily] = value == null ? '' : value;
  }
  get [_fontFamily]() {
    return this.fontFamily;
  }
  set [_fontFamily](value) {
    this.fontFamily = value;
  }
  get [dartx.fontSize]() {
    return this[_fontSize];
  }
  set [dartx.fontSize](value) {
    this[_fontSize] = value == null ? '' : value;
  }
  get [_fontSize]() {
    return this.fontSize;
  }
  set [_fontSize](value) {
    this.fontSize = value;
  }
  get [dartx.fontStyle]() {
    return this[_fontStyle];
  }
  set [dartx.fontStyle](value) {
    this[_fontStyle] = value == null ? '' : value;
  }
  get [_fontStyle]() {
    return this.fontStyle;
  }
  set [_fontStyle](value) {
    this.fontStyle = value;
  }
  get [dartx.fontVariant]() {
    return this[_fontVariant];
  }
  set [dartx.fontVariant](value) {
    this[_fontVariant] = value == null ? '' : value;
  }
  get [_fontVariant]() {
    return this.fontVariant;
  }
  set [_fontVariant](value) {
    this.fontVariant = value;
  }
  get [dartx.fontWeight]() {
    return this[_fontWeight];
  }
  set [dartx.fontWeight](value) {
    this[_fontWeight] = value == null ? '' : value;
  }
  get [_fontWeight]() {
    return this.fontWeight;
  }
  set [_fontWeight](value) {
    this.fontWeight = value;
  }
  get [dartx.height]() {
    return this[_height];
  }
  set [dartx.height](value) {
    this[_height] = value == null ? '' : value;
  }
  get [_height]() {
    return this.height;
  }
  set [_height](value) {
    this.height = value;
  }
  get [dartx.left]() {
    return this[_left];
  }
  set [dartx.left](value) {
    this[_left] = value == null ? '' : value;
  }
  get [_left]() {
    return this.left;
  }
  set [_left](value) {
    this.left = value;
  }
  get [dartx.letterSpacing]() {
    return this[_letterSpacing];
  }
  set [dartx.letterSpacing](value) {
    this[_letterSpacing] = value == null ? '' : value;
  }
  get [_letterSpacing]() {
    return this.letterSpacing;
  }
  set [_letterSpacing](value) {
    this.letterSpacing = value;
  }
  get [dartx.lineHeight]() {
    return this[_lineHeight];
  }
  set [dartx.lineHeight](value) {
    this[_lineHeight] = value == null ? '' : value;
  }
  get [_lineHeight]() {
    return this.lineHeight;
  }
  set [_lineHeight](value) {
    this.lineHeight = value;
  }
  get [dartx.listStyle]() {
    return this[_listStyle];
  }
  set [dartx.listStyle](value) {
    this[_listStyle] = value == null ? '' : value;
  }
  get [_listStyle]() {
    return this.listStyle;
  }
  set [_listStyle](value) {
    this.listStyle = value;
  }
  get [dartx.listStyleImage]() {
    return this[_listStyleImage];
  }
  set [dartx.listStyleImage](value) {
    this[_listStyleImage] = value == null ? '' : value;
  }
  get [_listStyleImage]() {
    return this.listStyleImage;
  }
  set [_listStyleImage](value) {
    this.listStyleImage = value;
  }
  get [dartx.listStylePosition]() {
    return this[_listStylePosition];
  }
  set [dartx.listStylePosition](value) {
    this[_listStylePosition] = value == null ? '' : value;
  }
  get [_listStylePosition]() {
    return this.listStylePosition;
  }
  set [_listStylePosition](value) {
    this.listStylePosition = value;
  }
  get [dartx.listStyleType]() {
    return this[_listStyleType];
  }
  set [dartx.listStyleType](value) {
    this[_listStyleType] = value == null ? '' : value;
  }
  get [_listStyleType]() {
    return this.listStyleType;
  }
  set [_listStyleType](value) {
    this.listStyleType = value;
  }
  get [dartx.margin]() {
    return this[_margin];
  }
  set [dartx.margin](value) {
    this[_margin] = value == null ? '' : value;
  }
  get [_margin]() {
    return this.margin;
  }
  set [_margin](value) {
    this.margin = value;
  }
  get [dartx.marginBottom]() {
    return this[_marginBottom];
  }
  set [dartx.marginBottom](value) {
    this[_marginBottom] = value == null ? '' : value;
  }
  get [_marginBottom]() {
    return this.marginBottom;
  }
  set [_marginBottom](value) {
    this.marginBottom = value;
  }
  get [dartx.marginLeft]() {
    return this[_marginLeft];
  }
  set [dartx.marginLeft](value) {
    this[_marginLeft] = value == null ? '' : value;
  }
  get [_marginLeft]() {
    return this.marginLeft;
  }
  set [_marginLeft](value) {
    this.marginLeft = value;
  }
  get [dartx.marginRight]() {
    return this[_marginRight];
  }
  set [dartx.marginRight](value) {
    this[_marginRight] = value == null ? '' : value;
  }
  get [_marginRight]() {
    return this.marginRight;
  }
  set [_marginRight](value) {
    this.marginRight = value;
  }
  get [dartx.marginTop]() {
    return this[_marginTop];
  }
  set [dartx.marginTop](value) {
    this[_marginTop] = value == null ? '' : value;
  }
  get [_marginTop]() {
    return this.marginTop;
  }
  set [_marginTop](value) {
    this.marginTop = value;
  }
  get [dartx.maxHeight]() {
    return this[_maxHeight];
  }
  set [dartx.maxHeight](value) {
    this[_maxHeight] = value == null ? '' : value;
  }
  get [_maxHeight]() {
    return this.maxHeight;
  }
  set [_maxHeight](value) {
    this.maxHeight = value;
  }
  get [dartx.maxWidth]() {
    return this[_maxWidth];
  }
  set [dartx.maxWidth](value) {
    this[_maxWidth] = value == null ? '' : value;
  }
  get [_maxWidth]() {
    return this.maxWidth;
  }
  set [_maxWidth](value) {
    this.maxWidth = value;
  }
  get [dartx.minHeight]() {
    return this[_minHeight];
  }
  set [dartx.minHeight](value) {
    this[_minHeight] = value == null ? '' : value;
  }
  get [_minHeight]() {
    return this.minHeight;
  }
  set [_minHeight](value) {
    this.minHeight = value;
  }
  get [dartx.minWidth]() {
    return this[_minWidth];
  }
  set [dartx.minWidth](value) {
    this[_minWidth] = value == null ? '' : value;
  }
  get [_minWidth]() {
    return this.minWidth;
  }
  set [_minWidth](value) {
    this.minWidth = value;
  }
  get [dartx.outline]() {
    return this[_outline];
  }
  set [dartx.outline](value) {
    this[_outline] = value == null ? '' : value;
  }
  get [_outline]() {
    return this.outline;
  }
  set [_outline](value) {
    this.outline = value;
  }
  get [dartx.outlineColor]() {
    return this[_outlineColor];
  }
  set [dartx.outlineColor](value) {
    this[_outlineColor] = value == null ? '' : value;
  }
  get [_outlineColor]() {
    return this.outlineColor;
  }
  set [_outlineColor](value) {
    this.outlineColor = value;
  }
  get [dartx.outlineStyle]() {
    return this[_outlineStyle];
  }
  set [dartx.outlineStyle](value) {
    this[_outlineStyle] = value == null ? '' : value;
  }
  get [_outlineStyle]() {
    return this.outlineStyle;
  }
  set [_outlineStyle](value) {
    this.outlineStyle = value;
  }
  get [dartx.outlineWidth]() {
    return this[_outlineWidth];
  }
  set [dartx.outlineWidth](value) {
    this[_outlineWidth] = value == null ? '' : value;
  }
  get [_outlineWidth]() {
    return this.outlineWidth;
  }
  set [_outlineWidth](value) {
    this.outlineWidth = value;
  }
  get [dartx.overflow]() {
    return this[_overflow];
  }
  set [dartx.overflow](value) {
    this[_overflow] = value == null ? '' : value;
  }
  get [_overflow]() {
    return this.overflow;
  }
  set [_overflow](value) {
    this.overflow = value;
  }
  get [dartx.padding]() {
    return this[_padding];
  }
  set [dartx.padding](value) {
    this[_padding] = value == null ? '' : value;
  }
  get [_padding]() {
    return this.padding;
  }
  set [_padding](value) {
    this.padding = value;
  }
  get [dartx.paddingBottom]() {
    return this[_paddingBottom];
  }
  set [dartx.paddingBottom](value) {
    this[_paddingBottom] = value == null ? '' : value;
  }
  get [_paddingBottom]() {
    return this.paddingBottom;
  }
  set [_paddingBottom](value) {
    this.paddingBottom = value;
  }
  get [dartx.paddingLeft]() {
    return this[_paddingLeft];
  }
  set [dartx.paddingLeft](value) {
    this[_paddingLeft] = value == null ? '' : value;
  }
  get [_paddingLeft]() {
    return this.paddingLeft;
  }
  set [_paddingLeft](value) {
    this.paddingLeft = value;
  }
  get [dartx.paddingRight]() {
    return this[_paddingRight];
  }
  set [dartx.paddingRight](value) {
    this[_paddingRight] = value == null ? '' : value;
  }
  get [_paddingRight]() {
    return this.paddingRight;
  }
  set [_paddingRight](value) {
    this.paddingRight = value;
  }
  get [dartx.paddingTop]() {
    return this[_paddingTop];
  }
  set [dartx.paddingTop](value) {
    this[_paddingTop] = value == null ? '' : value;
  }
  get [_paddingTop]() {
    return this.paddingTop;
  }
  set [_paddingTop](value) {
    this.paddingTop = value;
  }
  get [dartx.pageBreakAfter]() {
    return this[_pageBreakAfter];
  }
  set [dartx.pageBreakAfter](value) {
    this[_pageBreakAfter] = value == null ? '' : value;
  }
  get [_pageBreakAfter]() {
    return this.pageBreakAfter;
  }
  set [_pageBreakAfter](value) {
    this.pageBreakAfter = value;
  }
  get [dartx.pageBreakBefore]() {
    return this[_pageBreakBefore];
  }
  set [dartx.pageBreakBefore](value) {
    this[_pageBreakBefore] = value == null ? '' : value;
  }
  get [_pageBreakBefore]() {
    return this.pageBreakBefore;
  }
  set [_pageBreakBefore](value) {
    this.pageBreakBefore = value;
  }
  get [dartx.pageBreakInside]() {
    return this[_pageBreakInside];
  }
  set [dartx.pageBreakInside](value) {
    this[_pageBreakInside] = value == null ? '' : value;
  }
  get [_pageBreakInside]() {
    return this.pageBreakInside;
  }
  set [_pageBreakInside](value) {
    this.pageBreakInside = value;
  }
  get [dartx.position]() {
    return this[_position];
  }
  set [dartx.position](value) {
    this[_position] = value == null ? '' : value;
  }
  get [_position]() {
    return this.position;
  }
  set [_position](value) {
    this.position = value;
  }
  get [dartx.quotes]() {
    return this[_quotes];
  }
  set [dartx.quotes](value) {
    this[_quotes] = value == null ? '' : value;
  }
  get [_quotes]() {
    return this.quotes;
  }
  set [_quotes](value) {
    this.quotes = value;
  }
  get [dartx.right]() {
    return this[_right];
  }
  set [dartx.right](value) {
    this[_right] = value == null ? '' : value;
  }
  get [_right]() {
    return this.right;
  }
  set [_right](value) {
    this.right = value;
  }
  get [dartx.tableLayout]() {
    return this[_tableLayout];
  }
  set [dartx.tableLayout](value) {
    this[_tableLayout] = value == null ? '' : value;
  }
  get [_tableLayout]() {
    return this.tableLayout;
  }
  set [_tableLayout](value) {
    this.tableLayout = value;
  }
  get [dartx.textAlign]() {
    return this[_textAlign];
  }
  set [dartx.textAlign](value) {
    this[_textAlign] = value == null ? '' : value;
  }
  get [_textAlign]() {
    return this.textAlign;
  }
  set [_textAlign](value) {
    this.textAlign = value;
  }
  get [dartx.textDecoration]() {
    return this[_textDecoration];
  }
  set [dartx.textDecoration](value) {
    this[_textDecoration] = value == null ? '' : value;
  }
  get [_textDecoration]() {
    return this.textDecoration;
  }
  set [_textDecoration](value) {
    this.textDecoration = value;
  }
  get [dartx.textIndent]() {
    return this[_textIndent];
  }
  set [dartx.textIndent](value) {
    this[_textIndent] = value == null ? '' : value;
  }
  get [_textIndent]() {
    return this.textIndent;
  }
  set [_textIndent](value) {
    this.textIndent = value;
  }
  get [dartx.textTransform]() {
    return this[_textTransform];
  }
  set [dartx.textTransform](value) {
    this[_textTransform] = value == null ? '' : value;
  }
  get [_textTransform]() {
    return this.textTransform;
  }
  set [_textTransform](value) {
    this.textTransform = value;
  }
  get [dartx.top]() {
    return this[_top];
  }
  set [dartx.top](value) {
    this[_top] = value == null ? '' : value;
  }
  get [_top]() {
    return this.top;
  }
  set [_top](value) {
    this.top = value;
  }
  get [dartx.unicodeBidi]() {
    return this[_unicodeBidi];
  }
  set [dartx.unicodeBidi](value) {
    this[_unicodeBidi] = value == null ? '' : value;
  }
  get [_unicodeBidi]() {
    return this.unicodeBidi;
  }
  set [_unicodeBidi](value) {
    this.unicodeBidi = value;
  }
  get [dartx.verticalAlign]() {
    return this[_verticalAlign];
  }
  set [dartx.verticalAlign](value) {
    this[_verticalAlign] = value == null ? '' : value;
  }
  get [_verticalAlign]() {
    return this.verticalAlign;
  }
  set [_verticalAlign](value) {
    this.verticalAlign = value;
  }
  get [dartx.visibility]() {
    return this[_visibility];
  }
  set [dartx.visibility](value) {
    this[_visibility] = value == null ? '' : value;
  }
  get [_visibility]() {
    return this.visibility;
  }
  set [_visibility](value) {
    this.visibility = value;
  }
  get [dartx.whiteSpace]() {
    return this[_whiteSpace];
  }
  set [dartx.whiteSpace](value) {
    this[_whiteSpace] = value == null ? '' : value;
  }
  get [_whiteSpace]() {
    return this.whiteSpace;
  }
  set [_whiteSpace](value) {
    this.whiteSpace = value;
  }
  get [dartx.width]() {
    return this[_width];
  }
  set [dartx.width](value) {
    this[_width] = value == null ? '' : value;
  }
  get [_width]() {
    return this.width;
  }
  set [_width](value) {
    this.width = value;
  }
  get [dartx.wordSpacing]() {
    return this[_wordSpacing];
  }
  set [dartx.wordSpacing](value) {
    this[_wordSpacing] = value == null ? '' : value;
  }
  get [_wordSpacing]() {
    return this.wordSpacing;
  }
  set [_wordSpacing](value) {
    this.wordSpacing = value;
  }
  get [dartx.zIndex]() {
    return this[_zIndex];
  }
  set [dartx.zIndex](value) {
    this[_zIndex] = value == null ? '' : value;
  }
  get [_zIndex]() {
    return this.zIndex;
  }
  set [_zIndex](value) {
    this.zIndex = value;
  }
};
dart.setSignature(html.CssStyleDeclaration, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.CssStyleDeclaration, []),
    css: dart.definiteFunctionType(html.CssStyleDeclaration, [core.String]),
    _: dart.definiteFunctionType(html.CssStyleDeclaration, [])
  }),
  fields: () => ({
    [dartx.cssText]: core.String,
    [dartx.length]: core.int,
    [dartx.parentRule]: html.CssRule,
    [_background]: core.String,
    [_backgroundAttachment]: core.String,
    [_backgroundColor]: core.String,
    [_backgroundImage]: core.String,
    [_backgroundPosition]: core.String,
    [_backgroundRepeat]: core.String,
    [_border]: core.String,
    [_borderBottom]: core.String,
    [_borderBottomColor]: core.String,
    [_borderBottomStyle]: core.String,
    [_borderBottomWidth]: core.String,
    [_borderCollapse]: core.String,
    [_borderColor]: core.String,
    [_borderLeft]: core.String,
    [_borderLeftColor]: core.String,
    [_borderLeftStyle]: core.String,
    [_borderLeftWidth]: core.String,
    [_borderRight]: core.String,
    [_borderRightColor]: core.String,
    [_borderRightStyle]: core.String,
    [_borderRightWidth]: core.String,
    [_borderSpacing]: core.String,
    [_borderStyle]: core.String,
    [_borderTop]: core.String,
    [_borderTopColor]: core.String,
    [_borderTopStyle]: core.String,
    [_borderTopWidth]: core.String,
    [_borderWidth]: core.String,
    [_bottom]: core.String,
    [_captionSide]: core.String,
    [_clear]: core.String,
    [_clip]: core.String,
    [_color]: core.String,
    [_content]: core.String,
    [_cursor]: core.String,
    [_direction]: core.String,
    [_display]: core.String,
    [_emptyCells]: core.String,
    [_font]: core.String,
    [_fontFamily]: core.String,
    [_fontSize]: core.String,
    [_fontStyle]: core.String,
    [_fontVariant]: core.String,
    [_fontWeight]: core.String,
    [_height]: core.String,
    [_left]: core.String,
    [_letterSpacing]: core.String,
    [_lineHeight]: core.String,
    [_listStyle]: core.String,
    [_listStyleImage]: core.String,
    [_listStylePosition]: core.String,
    [_listStyleType]: core.String,
    [_margin]: core.String,
    [_marginBottom]: core.String,
    [_marginLeft]: core.String,
    [_marginRight]: core.String,
    [_marginTop]: core.String,
    [_maxHeight]: core.String,
    [_maxWidth]: core.String,
    [_minHeight]: core.String,
    [_minWidth]: core.String,
    [_outline]: core.String,
    [_outlineColor]: core.String,
    [_outlineStyle]: core.String,
    [_outlineWidth]: core.String,
    [_overflow]: core.String,
    [_padding]: core.String,
    [_paddingBottom]: core.String,
    [_paddingLeft]: core.String,
    [_paddingRight]: core.String,
    [_paddingTop]: core.String,
    [_pageBreakAfter]: core.String,
    [_pageBreakBefore]: core.String,
    [_pageBreakInside]: core.String,
    [_position]: core.String,
    [_quotes]: core.String,
    [_right]: core.String,
    [_tableLayout]: core.String,
    [_textAlign]: core.String,
    [_textDecoration]: core.String,
    [_textIndent]: core.String,
    [_textTransform]: core.String,
    [_top]: core.String,
    [_unicodeBidi]: core.String,
    [_verticalAlign]: core.String,
    [_visibility]: core.String,
    [_whiteSpace]: core.String,
    [_width]: core.String,
    [_wordSpacing]: core.String,
    [_zIndex]: core.String
  }),
  methods: () => ({
    [dartx.getPropertyValue]: dart.definiteFunctionType(core.String, [core.String]),
    [_getPropertyValueHelper]: dart.definiteFunctionType(core.String, [core.String]),
    [dartx.supportsProperty]: dart.definiteFunctionType(core.bool, [core.String]),
    [_supportsProperty]: dart.definiteFunctionType(core.bool, [core.String]),
    [dartx.setProperty]: dart.definiteFunctionType(dart.void, [core.String, core.String], [core.String]),
    [_browserPropertyName]: dart.definiteFunctionType(core.String, [core.String]),
    [_setPropertyHelper]: dart.definiteFunctionType(dart.void, [core.String, core.String], [core.String]),
    [dartx.getPropertyPriority]: dart.definiteFunctionType(core.String, [core.String]),
    [_getPropertyValue]: dart.definiteFunctionType(core.String, [core.String]),
    [dartx.item]: dart.definiteFunctionType(core.String, [core.int]),
    [dartx.removeProperty]: dart.definiteFunctionType(core.String, [core.String])
  }),
  sfields: () => ({_propertyCache: dart.dynamic}),
  sgetters: () => ({supportsTransitions: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({
    _readCache: dart.definiteFunctionType(core.String, [core.String]),
    _writeCache: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    _camelCase: dart.definiteFunctionType(core.String, [core.String])
  }),
  names: ['_readCache', '_writeCache', '_camelCase']
});
dart.defineLazy(html.CssStyleDeclaration, {
  get _propertyCache() {
    return {};
  }
});
dart.registerExtension(dart.global.CSSStyleDeclaration, html.CssStyleDeclaration);
dart.registerExtension(dart.global.MSStyleCSSProperties, html.CssStyleDeclaration);
dart.registerExtension(dart.global.CSS2Properties, html.CssStyleDeclaration);
const _elementIterable = Symbol('_elementIterable');
const _elementCssStyleDeclarationSetIterable = Symbol('_elementCssStyleDeclarationSetIterable');
const _setAll = Symbol('_setAll');
html._CssStyleDeclarationSet = class _CssStyleDeclarationSet extends dart.mixin(core.Object, html.CssStyleDeclarationBase) {
  new(elementIterable) {
    this[_elementIterable] = elementIterable;
    this[_elementCssStyleDeclarationSetIterable] = null;
    this[_elementCssStyleDeclarationSetIterable] = core.List.from(this[_elementIterable])[dartx.map](html.CssStyleDeclaration)(dart.fn(e => html.CssStyleDeclaration._check(dart.dload(e, 'style')), dynamicToCssStyleDeclaration()));
  }
  getPropertyValue(propertyName) {
    return this[_elementCssStyleDeclarationSetIterable][dartx.first][dartx.getPropertyValue](propertyName);
  }
  setProperty(propertyName, value, priority) {
    if (priority === void 0) priority = null;
    this[_elementCssStyleDeclarationSetIterable][dartx.forEach](dart.fn(e => e[dartx.setProperty](propertyName, value, priority), CssStyleDeclarationTovoid()));
  }
  [_setAll](propertyName, value) {
    value = value == null ? '' : value;
    for (let element of this[_elementIterable]) {
      element.style[propertyName] = value;
    }
  }
  set background(value) {
    this[_setAll]('background', value);
  }
  get background() {
    return super.background;
  }
  set backgroundAttachment(value) {
    this[_setAll]('backgroundAttachment', value);
  }
  get backgroundAttachment() {
    return super.backgroundAttachment;
  }
  set backgroundColor(value) {
    this[_setAll]('backgroundColor', value);
  }
  get backgroundColor() {
    return super.backgroundColor;
  }
  set backgroundImage(value) {
    this[_setAll]('backgroundImage', value);
  }
  get backgroundImage() {
    return super.backgroundImage;
  }
  set backgroundPosition(value) {
    this[_setAll]('backgroundPosition', value);
  }
  get backgroundPosition() {
    return super.backgroundPosition;
  }
  set backgroundRepeat(value) {
    this[_setAll]('backgroundRepeat', value);
  }
  get backgroundRepeat() {
    return super.backgroundRepeat;
  }
  set border(value) {
    this[_setAll]('border', value);
  }
  get border() {
    return super.border;
  }
  set borderBottom(value) {
    this[_setAll]('borderBottom', value);
  }
  get borderBottom() {
    return super.borderBottom;
  }
  set borderBottomColor(value) {
    this[_setAll]('borderBottomColor', value);
  }
  get borderBottomColor() {
    return super.borderBottomColor;
  }
  set borderBottomStyle(value) {
    this[_setAll]('borderBottomStyle', value);
  }
  get borderBottomStyle() {
    return super.borderBottomStyle;
  }
  set borderBottomWidth(value) {
    this[_setAll]('borderBottomWidth', value);
  }
  get borderBottomWidth() {
    return super.borderBottomWidth;
  }
  set borderCollapse(value) {
    this[_setAll]('borderCollapse', value);
  }
  get borderCollapse() {
    return super.borderCollapse;
  }
  set borderColor(value) {
    this[_setAll]('borderColor', value);
  }
  get borderColor() {
    return super.borderColor;
  }
  set borderLeft(value) {
    this[_setAll]('borderLeft', value);
  }
  get borderLeft() {
    return super.borderLeft;
  }
  set borderLeftColor(value) {
    this[_setAll]('borderLeftColor', value);
  }
  get borderLeftColor() {
    return super.borderLeftColor;
  }
  set borderLeftStyle(value) {
    this[_setAll]('borderLeftStyle', value);
  }
  get borderLeftStyle() {
    return super.borderLeftStyle;
  }
  set borderLeftWidth(value) {
    this[_setAll]('borderLeftWidth', value);
  }
  get borderLeftWidth() {
    return super.borderLeftWidth;
  }
  set borderRight(value) {
    this[_setAll]('borderRight', value);
  }
  get borderRight() {
    return super.borderRight;
  }
  set borderRightColor(value) {
    this[_setAll]('borderRightColor', value);
  }
  get borderRightColor() {
    return super.borderRightColor;
  }
  set borderRightStyle(value) {
    this[_setAll]('borderRightStyle', value);
  }
  get borderRightStyle() {
    return super.borderRightStyle;
  }
  set borderRightWidth(value) {
    this[_setAll]('borderRightWidth', value);
  }
  get borderRightWidth() {
    return super.borderRightWidth;
  }
  set borderSpacing(value) {
    this[_setAll]('borderSpacing', value);
  }
  get borderSpacing() {
    return super.borderSpacing;
  }
  set borderStyle(value) {
    this[_setAll]('borderStyle', value);
  }
  get borderStyle() {
    return super.borderStyle;
  }
  set borderTop(value) {
    this[_setAll]('borderTop', value);
  }
  get borderTop() {
    return super.borderTop;
  }
  set borderTopColor(value) {
    this[_setAll]('borderTopColor', value);
  }
  get borderTopColor() {
    return super.borderTopColor;
  }
  set borderTopStyle(value) {
    this[_setAll]('borderTopStyle', value);
  }
  get borderTopStyle() {
    return super.borderTopStyle;
  }
  set borderTopWidth(value) {
    this[_setAll]('borderTopWidth', value);
  }
  get borderTopWidth() {
    return super.borderTopWidth;
  }
  set borderWidth(value) {
    this[_setAll]('borderWidth', value);
  }
  get borderWidth() {
    return super.borderWidth;
  }
  set bottom(value) {
    this[_setAll]('bottom', value);
  }
  get bottom() {
    return super.bottom;
  }
  set captionSide(value) {
    this[_setAll]('captionSide', value);
  }
  get captionSide() {
    return super.captionSide;
  }
  set clear(value) {
    this[_setAll]('clear', value);
  }
  get clear() {
    return super.clear;
  }
  set clip(value) {
    this[_setAll]('clip', value);
  }
  get clip() {
    return super.clip;
  }
  set color(value) {
    this[_setAll]('color', value);
  }
  get color() {
    return super.color;
  }
  set content(value) {
    this[_setAll]('content', value);
  }
  get content() {
    return super.content;
  }
  set cursor(value) {
    this[_setAll]('cursor', value);
  }
  get cursor() {
    return super.cursor;
  }
  set direction(value) {
    this[_setAll]('direction', value);
  }
  get direction() {
    return super.direction;
  }
  set display(value) {
    this[_setAll]('display', value);
  }
  get display() {
    return super.display;
  }
  set emptyCells(value) {
    this[_setAll]('emptyCells', value);
  }
  get emptyCells() {
    return super.emptyCells;
  }
  set font(value) {
    this[_setAll]('font', value);
  }
  get font() {
    return super.font;
  }
  set fontFamily(value) {
    this[_setAll]('fontFamily', value);
  }
  get fontFamily() {
    return super.fontFamily;
  }
  set fontSize(value) {
    this[_setAll]('fontSize', value);
  }
  get fontSize() {
    return super.fontSize;
  }
  set fontStyle(value) {
    this[_setAll]('fontStyle', value);
  }
  get fontStyle() {
    return super.fontStyle;
  }
  set fontVariant(value) {
    this[_setAll]('fontVariant', value);
  }
  get fontVariant() {
    return super.fontVariant;
  }
  set fontWeight(value) {
    this[_setAll]('fontWeight', value);
  }
  get fontWeight() {
    return super.fontWeight;
  }
  set height(value) {
    this[_setAll]('height', value);
  }
  get height() {
    return super.height;
  }
  set left(value) {
    this[_setAll]('left', value);
  }
  get left() {
    return super.left;
  }
  set letterSpacing(value) {
    this[_setAll]('letterSpacing', value);
  }
  get letterSpacing() {
    return super.letterSpacing;
  }
  set lineHeight(value) {
    this[_setAll]('lineHeight', value);
  }
  get lineHeight() {
    return super.lineHeight;
  }
  set listStyle(value) {
    this[_setAll]('listStyle', value);
  }
  get listStyle() {
    return super.listStyle;
  }
  set listStyleImage(value) {
    this[_setAll]('listStyleImage', value);
  }
  get listStyleImage() {
    return super.listStyleImage;
  }
  set listStylePosition(value) {
    this[_setAll]('listStylePosition', value);
  }
  get listStylePosition() {
    return super.listStylePosition;
  }
  set listStyleType(value) {
    this[_setAll]('listStyleType', value);
  }
  get listStyleType() {
    return super.listStyleType;
  }
  set margin(value) {
    this[_setAll]('margin', value);
  }
  get margin() {
    return super.margin;
  }
  set marginBottom(value) {
    this[_setAll]('marginBottom', value);
  }
  get marginBottom() {
    return super.marginBottom;
  }
  set marginLeft(value) {
    this[_setAll]('marginLeft', value);
  }
  get marginLeft() {
    return super.marginLeft;
  }
  set marginRight(value) {
    this[_setAll]('marginRight', value);
  }
  get marginRight() {
    return super.marginRight;
  }
  set marginTop(value) {
    this[_setAll]('marginTop', value);
  }
  get marginTop() {
    return super.marginTop;
  }
  set maxHeight(value) {
    this[_setAll]('maxHeight', value);
  }
  get maxHeight() {
    return super.maxHeight;
  }
  set maxWidth(value) {
    this[_setAll]('maxWidth', value);
  }
  get maxWidth() {
    return super.maxWidth;
  }
  set minHeight(value) {
    this[_setAll]('minHeight', value);
  }
  get minHeight() {
    return super.minHeight;
  }
  set minWidth(value) {
    this[_setAll]('minWidth', value);
  }
  get minWidth() {
    return super.minWidth;
  }
  set outline(value) {
    this[_setAll]('outline', value);
  }
  get outline() {
    return super.outline;
  }
  set outlineColor(value) {
    this[_setAll]('outlineColor', value);
  }
  get outlineColor() {
    return super.outlineColor;
  }
  set outlineStyle(value) {
    this[_setAll]('outlineStyle', value);
  }
  get outlineStyle() {
    return super.outlineStyle;
  }
  set outlineWidth(value) {
    this[_setAll]('outlineWidth', value);
  }
  get outlineWidth() {
    return super.outlineWidth;
  }
  set overflow(value) {
    this[_setAll]('overflow', value);
  }
  get overflow() {
    return super.overflow;
  }
  set padding(value) {
    this[_setAll]('padding', value);
  }
  get padding() {
    return super.padding;
  }
  set paddingBottom(value) {
    this[_setAll]('paddingBottom', value);
  }
  get paddingBottom() {
    return super.paddingBottom;
  }
  set paddingLeft(value) {
    this[_setAll]('paddingLeft', value);
  }
  get paddingLeft() {
    return super.paddingLeft;
  }
  set paddingRight(value) {
    this[_setAll]('paddingRight', value);
  }
  get paddingRight() {
    return super.paddingRight;
  }
  set paddingTop(value) {
    this[_setAll]('paddingTop', value);
  }
  get paddingTop() {
    return super.paddingTop;
  }
  set pageBreakAfter(value) {
    this[_setAll]('pageBreakAfter', value);
  }
  get pageBreakAfter() {
    return super.pageBreakAfter;
  }
  set pageBreakBefore(value) {
    this[_setAll]('pageBreakBefore', value);
  }
  get pageBreakBefore() {
    return super.pageBreakBefore;
  }
  set pageBreakInside(value) {
    this[_setAll]('pageBreakInside', value);
  }
  get pageBreakInside() {
    return super.pageBreakInside;
  }
  set position(value) {
    this[_setAll]('position', value);
  }
  get position() {
    return super.position;
  }
  set quotes(value) {
    this[_setAll]('quotes', value);
  }
  get quotes() {
    return super.quotes;
  }
  set right(value) {
    this[_setAll]('right', value);
  }
  get right() {
    return super.right;
  }
  set tableLayout(value) {
    this[_setAll]('tableLayout', value);
  }
  get tableLayout() {
    return super.tableLayout;
  }
  set textAlign(value) {
    this[_setAll]('textAlign', value);
  }
  get textAlign() {
    return super.textAlign;
  }
  set textDecoration(value) {
    this[_setAll]('textDecoration', value);
  }
  get textDecoration() {
    return super.textDecoration;
  }
  set textIndent(value) {
    this[_setAll]('textIndent', value);
  }
  get textIndent() {
    return super.textIndent;
  }
  set textTransform(value) {
    this[_setAll]('textTransform', value);
  }
  get textTransform() {
    return super.textTransform;
  }
  set top(value) {
    this[_setAll]('top', value);
  }
  get top() {
    return super.top;
  }
  set unicodeBidi(value) {
    this[_setAll]('unicodeBidi', value);
  }
  get unicodeBidi() {
    return super.unicodeBidi;
  }
  set verticalAlign(value) {
    this[_setAll]('verticalAlign', value);
  }
  get verticalAlign() {
    return super.verticalAlign;
  }
  set visibility(value) {
    this[_setAll]('visibility', value);
  }
  get visibility() {
    return super.visibility;
  }
  set whiteSpace(value) {
    this[_setAll]('whiteSpace', value);
  }
  get whiteSpace() {
    return super.whiteSpace;
  }
  set width(value) {
    this[_setAll]('width', value);
  }
  get width() {
    return super.width;
  }
  set wordSpacing(value) {
    this[_setAll]('wordSpacing', value);
  }
  get wordSpacing() {
    return super.wordSpacing;
  }
  set zIndex(value) {
    this[_setAll]('zIndex', value);
  }
  get zIndex() {
    return super.zIndex;
  }
};
dart.setSignature(html._CssStyleDeclarationSet, {
  constructors: () => ({new: dart.definiteFunctionType(html._CssStyleDeclarationSet, [IterableOfElement()])}),
  fields: () => ({
    [_elementIterable]: IterableOfElement(),
    [_elementCssStyleDeclarationSetIterable]: IterableOfCssStyleDeclaration()
  }),
  methods: () => ({
    getPropertyValue: dart.definiteFunctionType(core.String, [core.String]),
    setProperty: dart.definiteFunctionType(dart.void, [core.String, core.String], [core.String]),
    [_setAll]: dart.definiteFunctionType(dart.void, [core.String, core.String])
  })
});
dart.defineExtensionMembers(html._CssStyleDeclarationSet, [
  'getPropertyValue',
  'setProperty',
  'background',
  'backgroundAttachment',
  'backgroundColor',
  'backgroundImage',
  'backgroundPosition',
  'backgroundRepeat',
  'border',
  'borderBottom',
  'borderBottomColor',
  'borderBottomStyle',
  'borderBottomWidth',
  'borderCollapse',
  'borderColor',
  'borderLeft',
  'borderLeftColor',
  'borderLeftStyle',
  'borderLeftWidth',
  'borderRight',
  'borderRightColor',
  'borderRightStyle',
  'borderRightWidth',
  'borderSpacing',
  'borderStyle',
  'borderTop',
  'borderTopColor',
  'borderTopStyle',
  'borderTopWidth',
  'borderWidth',
  'bottom',
  'captionSide',
  'clear',
  'clip',
  'color',
  'content',
  'cursor',
  'direction',
  'display',
  'emptyCells',
  'font',
  'fontFamily',
  'fontSize',
  'fontStyle',
  'fontVariant',
  'fontWeight',
  'height',
  'left',
  'letterSpacing',
  'lineHeight',
  'listStyle',
  'listStyleImage',
  'listStylePosition',
  'listStyleType',
  'margin',
  'marginBottom',
  'marginLeft',
  'marginRight',
  'marginTop',
  'maxHeight',
  'maxWidth',
  'minHeight',
  'minWidth',
  'outline',
  'outlineColor',
  'outlineStyle',
  'outlineWidth',
  'overflow',
  'padding',
  'paddingBottom',
  'paddingLeft',
  'paddingRight',
  'paddingTop',
  'pageBreakAfter',
  'pageBreakBefore',
  'pageBreakInside',
  'position',
  'quotes',
  'right',
  'tableLayout',
  'textAlign',
  'textDecoration',
  'textIndent',
  'textTransform',
  'top',
  'unicodeBidi',
  'verticalAlign',
  'visibility',
  'whiteSpace',
  'width',
  'wordSpacing',
  'zIndex'
]);
dart.defineExtensionNames([
  'selectorText',
  'style'
]);
html.CssStyleRule = class CssStyleRule extends html.CssRule {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.selectorText]() {
    return this.selectorText;
  }
  set [dartx.selectorText](value) {
    this.selectorText = value;
  }
  get [dartx.style]() {
    return this.style;
  }
};
dart.setSignature(html.CssStyleRule, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssStyleRule, [])}),
  fields: () => ({
    [dartx.selectorText]: core.String,
    [dartx.style]: html.CssStyleDeclaration
  })
});
dart.registerExtension(dart.global.CSSStyleRule, html.CssStyleRule);
dart.defineExtensionNames([
  'disabled',
  'href',
  'media',
  'ownerNode',
  'parentStyleSheet',
  'title',
  'type'
]);
html.StyleSheet = class StyleSheet extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.href]() {
    return this.href;
  }
  get [dartx.media]() {
    return this.media;
  }
  get [dartx.ownerNode]() {
    return this.ownerNode;
  }
  get [dartx.parentStyleSheet]() {
    return this.parentStyleSheet;
  }
  get [dartx.title]() {
    return this.title;
  }
  get [dartx.type]() {
    return this.type;
  }
};
dart.setSignature(html.StyleSheet, {
  constructors: () => ({_: dart.definiteFunctionType(html.StyleSheet, [])}),
  fields: () => ({
    [dartx.disabled]: core.bool,
    [dartx.href]: core.String,
    [dartx.media]: html.MediaList,
    [dartx.ownerNode]: html.Node,
    [dartx.parentStyleSheet]: html.StyleSheet,
    [dartx.title]: core.String,
    [dartx.type]: core.String
  })
});
dart.registerExtension(dart.global.StyleSheet, html.StyleSheet);
dart.defineExtensionNames([
  'addRule',
  'deleteRule',
  'insertRule',
  'removeRule',
  'cssRules',
  'ownerRule',
  'rules'
]);
html.CssStyleSheet = class CssStyleSheet extends html.StyleSheet {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.cssRules]() {
    return this.cssRules;
  }
  get [dartx.ownerRule]() {
    return this.ownerRule;
  }
  get [dartx.rules]() {
    return this.rules;
  }
  [dartx.addRule](...args) {
    return this.addRule.apply(this, args);
  }
  [dartx.deleteRule](...args) {
    return this.deleteRule.apply(this, args);
  }
  [dartx.insertRule](...args) {
    return this.insertRule.apply(this, args);
  }
  [dartx.removeRule](...args) {
    return this.removeRule.apply(this, args);
  }
};
dart.setSignature(html.CssStyleSheet, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssStyleSheet, [])}),
  fields: () => ({
    [dartx.cssRules]: ListOfCssRule(),
    [dartx.ownerRule]: html.CssRule,
    [dartx.rules]: ListOfCssRule()
  }),
  methods: () => ({
    [dartx.addRule]: dart.definiteFunctionType(core.int, [core.String, core.String], [core.int]),
    [dartx.deleteRule]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.insertRule]: dart.definiteFunctionType(core.int, [core.String], [core.int]),
    [dartx.removeRule]: dart.definiteFunctionType(dart.void, [core.int])
  })
});
dart.registerExtension(dart.global.CSSStyleSheet, html.CssStyleSheet);
dart.defineExtensionNames([
  'deleteRule',
  'insertRule',
  'conditionText',
  'cssRules'
]);
html.CssSupportsRule = class CssSupportsRule extends html.CssRule {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.conditionText]() {
    return this.conditionText;
  }
  get [dartx.cssRules]() {
    return this.cssRules;
  }
  [dartx.deleteRule](...args) {
    return this.deleteRule.apply(this, args);
  }
  [dartx.insertRule](...args) {
    return this.insertRule.apply(this, args);
  }
};
dart.setSignature(html.CssSupportsRule, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssSupportsRule, [])}),
  fields: () => ({
    [dartx.conditionText]: core.String,
    [dartx.cssRules]: ListOfCssRule()
  }),
  methods: () => ({
    [dartx.deleteRule]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.insertRule]: dart.definiteFunctionType(core.int, [core.String, core.int])
  })
});
dart.registerExtension(dart.global.CSSSupportsRule, html.CssSupportsRule);
dart.defineExtensionNames([
  'style'
]);
html.CssViewportRule = class CssViewportRule extends html.CssRule {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.style]() {
    return this.style;
  }
};
dart.setSignature(html.CssViewportRule, {
  constructors: () => ({_: dart.definiteFunctionType(html.CssViewportRule, [])}),
  fields: () => ({[dartx.style]: html.CssStyleDeclaration})
});
dart.registerExtension(dart.global.CSSViewportRule, html.CssViewportRule);
const _dartDetail = Symbol('_dartDetail');
const _initCustomEvent = Symbol('_initCustomEvent');
const _detail = Symbol('_detail');
const _get__detail = Symbol('_get__detail');
dart.defineExtensionNames([
  'detail'
]);
html.CustomEvent = class CustomEvent extends html.Event {
  get [_dartDetail]() {
    return this._dartDetail;
  }
  set [_dartDetail](value) {
    this._dartDetail = value;
  }
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let detail = opts && 'detail' in opts ? opts.detail : null;
    let e = html.CustomEvent._check(html.document[_createEvent]('CustomEvent'));
    e[_dartDetail] = detail;
    if (core.List.is(detail) || core.Map.is(detail) || typeof detail == 'string' || typeof detail == 'number') {
      try {
        detail = html_common.convertDartToNative_SerializedScriptValue(detail);
        e[_initCustomEvent](type, canBubble, cancelable, detail);
      } catch (_) {
        e[_initCustomEvent](type, canBubble, cancelable, null);
      }

    } else {
      e[_initCustomEvent](type, canBubble, cancelable, null);
    }
    return e;
  }
  get [dartx.detail]() {
    if (this[_dartDetail] != null) {
      return this[_dartDetail];
    }
    return this[_detail];
  }
  static _(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.CustomEvent._create_1(type, eventInitDict_1);
    }
    return html.CustomEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new CustomEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new CustomEvent(type);
  }
  get [_detail]() {
    return html_common.convertNativeToDart_SerializedScriptValue(this[_get__detail]);
  }
  get [_get__detail]() {
    return this.detail;
  }
  [_initCustomEvent](...args) {
    return this.initCustomEvent.apply(this, args);
  }
};
dart.setSignature(html.CustomEvent, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.CustomEvent, [core.String], {canBubble: core.bool, cancelable: core.bool, detail: core.Object}),
    _: dart.definiteFunctionType(html.CustomEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [_dartDetail]: dart.dynamic,
    [_get__detail]: dart.dynamic
  }),
  getters: () => ({
    [dartx.detail]: dart.definiteFunctionType(dart.dynamic, []),
    [_detail]: dart.definiteFunctionType(dart.dynamic, [])
  }),
  methods: () => ({[_initCustomEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, core.Object])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.CustomEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.CustomEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.CustomEvent, html.CustomEvent);
html.DListElement = class DListElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.DListElement._check(html.document[dartx.createElement]("dl"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.DListElement, 'created');
dart.setSignature(html.DListElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DListElement, []),
    new: dart.definiteFunctionType(html.DListElement, []),
    created: dart.definiteFunctionType(html.DListElement, [])
  })
});
dart.registerExtension(dart.global.HTMLDListElement, html.DListElement);
dart.defineExtensionNames([
  'options'
]);
html.DataListElement = class DataListElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.DataListElement._check(html.document[dartx.createElement]("datalist"));
  }
  created() {
    this[dartx.options] = null;
    super.created();
  }
  static get supported() {
    return html.Element.isTagSupported('datalist');
  }
  get [dartx.options]() {
    return this.options;
  }
};
dart.defineNamedConstructor(html.DataListElement, 'created');
dart.setSignature(html.DataListElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DataListElement, []),
    new: dart.definiteFunctionType(html.DataListElement, []),
    created: dart.definiteFunctionType(html.DataListElement, [])
  }),
  fields: () => ({[dartx.options]: ListOfNode()}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.HTMLDataListElement, html.DataListElement);
dart.defineExtensionNames([
  'clearData',
  'getData',
  'setData',
  'setDragImage',
  'dropEffect',
  'effectAllowed',
  'files',
  'items',
  'types'
]);
html.DataTransfer = class DataTransfer extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.dropEffect]() {
    return this.dropEffect;
  }
  set [dartx.dropEffect](value) {
    this.dropEffect = value;
  }
  get [dartx.effectAllowed]() {
    return this.effectAllowed;
  }
  set [dartx.effectAllowed](value) {
    this.effectAllowed = value;
  }
  get [dartx.files]() {
    return this.files;
  }
  get [dartx.items]() {
    return this.items;
  }
  get [dartx.types]() {
    return this.types;
  }
  [dartx.clearData](...args) {
    return this.clearData.apply(this, args);
  }
  [dartx.getData](...args) {
    return this.getData.apply(this, args);
  }
  [dartx.setData](...args) {
    return this.setData.apply(this, args);
  }
  [dartx.setDragImage](...args) {
    return this.setDragImage.apply(this, args);
  }
};
dart.setSignature(html.DataTransfer, {
  constructors: () => ({_: dart.definiteFunctionType(html.DataTransfer, [])}),
  fields: () => ({
    [dartx.dropEffect]: core.String,
    [dartx.effectAllowed]: core.String,
    [dartx.files]: ListOfFile(),
    [dartx.items]: html.DataTransferItemList,
    [dartx.types]: ListOfString()
  }),
  methods: () => ({
    [dartx.clearData]: dart.definiteFunctionType(dart.void, [], [core.String]),
    [dartx.getData]: dart.definiteFunctionType(core.String, [core.String]),
    [dartx.setData]: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    [dartx.setDragImage]: dart.definiteFunctionType(dart.void, [html.Element, core.int, core.int])
  })
});
dart.registerExtension(dart.global.DataTransfer, html.DataTransfer);
const _getAsString = Symbol('_getAsString');
dart.defineExtensionNames([
  'getAsFile',
  'getAsString',
  'getAsEntry',
  'kind',
  'type'
]);
html.DataTransferItem = class DataTransferItem extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.kind]() {
    return this.kind;
  }
  get [dartx.type]() {
    return this.type;
  }
  [dartx.getAsFile](...args) {
    return this.getAsFile.apply(this, args);
  }
  [_getAsString](...args) {
    return this.getAsString.apply(this, args);
  }
  [dartx.getAsString]() {
    let completer = CompleterOfString().new();
    this[_getAsString](dart.fn(value => {
      completer.complete(value);
    }, StringTovoid()));
    return completer.future;
  }
  [dartx.getAsEntry](...args) {
    return this.webkitGetAsEntry.apply(this, args);
  }
};
dart.setSignature(html.DataTransferItem, {
  constructors: () => ({_: dart.definiteFunctionType(html.DataTransferItem, [])}),
  fields: () => ({
    [dartx.kind]: core.String,
    [dartx.type]: core.String
  }),
  methods: () => ({
    [dartx.getAsFile]: dart.definiteFunctionType(html.Blob, []),
    [_getAsString]: dart.definiteFunctionType(dart.void, [html._StringCallback]),
    [dartx.getAsString]: dart.definiteFunctionType(async.Future$(core.String), []),
    [dartx.getAsEntry]: dart.definiteFunctionType(html.Entry, [])
  })
});
dart.registerExtension(dart.global.DataTransferItem, html.DataTransferItem);
dart.defineExtensionNames([
  'add',
  'addData',
  'addFile',
  'clear',
  'item',
  'remove',
  '_get',
  'length'
]);
html.DataTransferItemList = class DataTransferItemList extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx.add](...args) {
    return this.add.apply(this, args);
  }
  [dartx.addData](...args) {
    return this.add.apply(this, args);
  }
  [dartx.addFile](...args) {
    return this.add.apply(this, args);
  }
  [dartx.clear](...args) {
    return this.clear.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
  [dartx.remove](...args) {
    return this.remove.apply(this, args);
  }
  [dartx._get](index) {
    return this[index];
  }
};
dart.setSignature(html.DataTransferItemList, {
  constructors: () => ({_: dart.definiteFunctionType(html.DataTransferItemList, [])}),
  fields: () => ({[dartx.length]: core.int}),
  methods: () => ({
    [dartx.add]: dart.definiteFunctionType(html.DataTransferItem, [dart.dynamic], [core.String]),
    [dartx.addData]: dart.definiteFunctionType(html.DataTransferItem, [core.String, core.String]),
    [dartx.addFile]: dart.definiteFunctionType(html.DataTransferItem, [html.File]),
    [dartx.clear]: dart.definiteFunctionType(dart.void, []),
    [dartx.item]: dart.definiteFunctionType(html.DataTransferItem, [core.int]),
    [dartx.remove]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx._get]: dart.definiteFunctionType(html.DataTransferItem, [core.int])
  })
});
dart.registerExtension(dart.global.DataTransferItemList, html.DataTransferItemList);
html.DatabaseCallback = dart.typedef('DatabaseCallback', () => dart.functionType(dart.void, [web_sql.SqlDatabase]));
dart.defineExtensionNames([
  'postMessage',
  'onMessage'
]);
html.DedicatedWorkerGlobalScope = class DedicatedWorkerGlobalScope extends html.WorkerGlobalScope {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.postMessage](message, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
  get [dartx.onMessage]() {
    return html.DedicatedWorkerGlobalScope.messageEvent.forTarget(this);
  }
};
dart.setSignature(html.DedicatedWorkerGlobalScope, {
  constructors: () => ({_: dart.definiteFunctionType(html.DedicatedWorkerGlobalScope, [])}),
  getters: () => ({[dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), [])}),
  methods: () => ({
    [dartx.postMessage]: dart.definiteFunctionType(dart.void, [dart.dynamic], [ListOfMessagePort()]),
    [_postMessage_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, ListOfMessagePort()]),
    [_postMessage_2]: dart.definiteFunctionType(dart.void, [dart.dynamic])
  }),
  sfields: () => ({messageEvent: EventStreamProviderOfMessageEvent()})
});
dart.defineLazy(html.DedicatedWorkerGlobalScope, {
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  }
});
dart.registerExtension(dart.global.DedicatedWorkerGlobalScope, html.DedicatedWorkerGlobalScope);
dart.defineExtensionNames([
  'session'
]);
html.DefaultSessionStartEvent = class DefaultSessionStartEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.DefaultSessionStartEvent._create_1(type, eventInitDict_1);
    }
    return html.DefaultSessionStartEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new DefaultSessionStartEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new DefaultSessionStartEvent(type);
  }
  get [dartx.session]() {
    return this.session;
  }
};
dart.setSignature(html.DefaultSessionStartEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DefaultSessionStartEvent, []),
    new: dart.definiteFunctionType(html.DefaultSessionStartEvent, [core.String], [core.Map])
  }),
  fields: () => ({[dartx.session]: html.PresentationSession}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.DefaultSessionStartEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.DefaultSessionStartEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.DefaultSessionStartEvent, html.DefaultSessionStartEvent);
dart.defineExtensionNames([
  'queryUsageAndQuota',
  'requestQuota'
]);
html.DeprecatedStorageInfo = class DeprecatedStorageInfo extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.queryUsageAndQuota](...args) {
    return this.queryUsageAndQuota.apply(this, args);
  }
  [dartx.requestQuota](...args) {
    return this.requestQuota.apply(this, args);
  }
};
dart.setSignature(html.DeprecatedStorageInfo, {
  constructors: () => ({_: dart.definiteFunctionType(html.DeprecatedStorageInfo, [])}),
  methods: () => ({
    [dartx.queryUsageAndQuota]: dart.definiteFunctionType(dart.void, [core.int], [html.StorageUsageCallback, html.StorageErrorCallback]),
    [dartx.requestQuota]: dart.definiteFunctionType(dart.void, [core.int, core.int], [html.StorageQuotaCallback, html.StorageErrorCallback])
  }),
  sfields: () => ({
    PERSISTENT: core.int,
    TEMPORARY: core.int
  })
});
html.DeprecatedStorageInfo.PERSISTENT = 1;
html.DeprecatedStorageInfo.TEMPORARY = 0;
dart.registerExtension(dart.global.DeprecatedStorageInfo, html.DeprecatedStorageInfo);
dart.defineExtensionNames([
  'queryUsageAndQuota',
  'requestQuota'
]);
html.DeprecatedStorageQuota = class DeprecatedStorageQuota extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.queryUsageAndQuota](...args) {
    return this.queryUsageAndQuota.apply(this, args);
  }
  [dartx.requestQuota](...args) {
    return this.requestQuota.apply(this, args);
  }
};
dart.setSignature(html.DeprecatedStorageQuota, {
  constructors: () => ({_: dart.definiteFunctionType(html.DeprecatedStorageQuota, [])}),
  methods: () => ({
    [dartx.queryUsageAndQuota]: dart.definiteFunctionType(dart.void, [html.StorageUsageCallback], [html.StorageErrorCallback]),
    [dartx.requestQuota]: dart.definiteFunctionType(dart.void, [core.int], [html.StorageQuotaCallback, html.StorageErrorCallback])
  })
});
dart.registerExtension(dart.global.DeprecatedStorageQuota, html.DeprecatedStorageQuota);
dart.defineExtensionNames([
  'open'
]);
html.DetailsElement = class DetailsElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.DetailsElement._check(html.document[dartx.createElement]("details"));
  }
  created() {
    this[dartx.open] = null;
    super.created();
  }
  static get supported() {
    return html.Element.isTagSupported('details');
  }
  get [dartx.open]() {
    return this.open;
  }
  set [dartx.open](value) {
    this.open = value;
  }
};
dart.defineNamedConstructor(html.DetailsElement, 'created');
dart.setSignature(html.DetailsElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DetailsElement, []),
    new: dart.definiteFunctionType(html.DetailsElement, []),
    created: dart.definiteFunctionType(html.DetailsElement, [])
  }),
  fields: () => ({[dartx.open]: core.bool}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.HTMLDetailsElement, html.DetailsElement);
dart.defineExtensionNames([
  'x',
  'y',
  'z'
]);
html.DeviceAcceleration = class DeviceAcceleration extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
  get [dartx.z]() {
    return this.z;
  }
};
dart.setSignature(html.DeviceAcceleration, {
  constructors: () => ({_: dart.definiteFunctionType(html.DeviceAcceleration, [])}),
  fields: () => ({
    [dartx.x]: core.double,
    [dartx.y]: core.double,
    [dartx.z]: core.double
  })
});
dart.registerExtension(dart.global.DeviceAcceleration, html.DeviceAcceleration);
dart.defineExtensionNames([
  'value'
]);
html.DeviceLightEvent = class DeviceLightEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.DeviceLightEvent._create_1(type, eventInitDict_1);
    }
    return html.DeviceLightEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new DeviceLightEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new DeviceLightEvent(type);
  }
  get [dartx.value]() {
    return this.value;
  }
};
dart.setSignature(html.DeviceLightEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DeviceLightEvent, []),
    new: dart.definiteFunctionType(html.DeviceLightEvent, [core.String], [core.Map])
  }),
  fields: () => ({[dartx.value]: core.double}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.DeviceLightEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.DeviceLightEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.DeviceLightEvent, html.DeviceLightEvent);
dart.defineExtensionNames([
  'initDeviceMotionEvent',
  'acceleration',
  'accelerationIncludingGravity',
  'interval',
  'rotationRate'
]);
html.DeviceMotionEvent = class DeviceMotionEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.acceleration]() {
    return this.acceleration;
  }
  get [dartx.accelerationIncludingGravity]() {
    return this.accelerationIncludingGravity;
  }
  get [dartx.interval]() {
    return this.interval;
  }
  get [dartx.rotationRate]() {
    return this.rotationRate;
  }
  [dartx.initDeviceMotionEvent](...args) {
    return this.initDeviceMotionEvent.apply(this, args);
  }
};
dart.setSignature(html.DeviceMotionEvent, {
  constructors: () => ({_: dart.definiteFunctionType(html.DeviceMotionEvent, [])}),
  fields: () => ({
    [dartx.acceleration]: html.DeviceAcceleration,
    [dartx.accelerationIncludingGravity]: html.DeviceAcceleration,
    [dartx.interval]: core.double,
    [dartx.rotationRate]: html.DeviceRotationRate
  }),
  methods: () => ({[dartx.initDeviceMotionEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, html.DeviceAcceleration, html.DeviceAcceleration, html.DeviceRotationRate, core.num])})
});
dart.registerExtension(dart.global.DeviceMotionEvent, html.DeviceMotionEvent);
const _initDeviceOrientationEvent = Symbol('_initDeviceOrientationEvent');
dart.defineExtensionNames([
  'absolute',
  'alpha',
  'beta',
  'gamma'
]);
html.DeviceOrientationEvent = class DeviceOrientationEvent extends html.Event {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let alpha = opts && 'alpha' in opts ? opts.alpha : 0;
    let beta = opts && 'beta' in opts ? opts.beta : 0;
    let gamma = opts && 'gamma' in opts ? opts.gamma : 0;
    let absolute = opts && 'absolute' in opts ? opts.absolute : false;
    let e = html.DeviceOrientationEvent._check(html.document[_createEvent]("DeviceOrientationEvent"));
    e[_initDeviceOrientationEvent](type, canBubble, cancelable, alpha, beta, gamma, absolute);
    return e;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.absolute]() {
    return this.absolute;
  }
  get [dartx.alpha]() {
    return this.alpha;
  }
  get [dartx.beta]() {
    return this.beta;
  }
  get [dartx.gamma]() {
    return this.gamma;
  }
  [_initDeviceOrientationEvent](...args) {
    return this.initDeviceOrientationEvent.apply(this, args);
  }
};
dart.setSignature(html.DeviceOrientationEvent, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.DeviceOrientationEvent, [core.String], {canBubble: core.bool, cancelable: core.bool, alpha: core.num, beta: core.num, gamma: core.num, absolute: core.bool}),
    _: dart.definiteFunctionType(html.DeviceOrientationEvent, [])
  }),
  fields: () => ({
    [dartx.absolute]: core.bool,
    [dartx.alpha]: core.double,
    [dartx.beta]: core.double,
    [dartx.gamma]: core.double
  }),
  methods: () => ({[_initDeviceOrientationEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, core.num, core.num, core.num, core.bool])})
});
dart.registerExtension(dart.global.DeviceOrientationEvent, html.DeviceOrientationEvent);
dart.defineExtensionNames([
  'alpha',
  'beta',
  'gamma'
]);
html.DeviceRotationRate = class DeviceRotationRate extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.alpha]() {
    return this.alpha;
  }
  get [dartx.beta]() {
    return this.beta;
  }
  get [dartx.gamma]() {
    return this.gamma;
  }
};
dart.setSignature(html.DeviceRotationRate, {
  constructors: () => ({_: dart.definiteFunctionType(html.DeviceRotationRate, [])}),
  fields: () => ({
    [dartx.alpha]: core.double,
    [dartx.beta]: core.double,
    [dartx.gamma]: core.double
  })
});
dart.registerExtension(dart.global.DeviceRotationRate, html.DeviceRotationRate);
dart.defineExtensionNames([
  'close',
  'show',
  'showModal',
  'open',
  'returnValue'
]);
html.DialogElement = class DialogElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.open] = null;
    this[dartx.returnValue] = null;
    super.created();
  }
  get [dartx.open]() {
    return this.open;
  }
  set [dartx.open](value) {
    this.open = value;
  }
  get [dartx.returnValue]() {
    return this.returnValue;
  }
  set [dartx.returnValue](value) {
    this.returnValue = value;
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [dartx.show](...args) {
    return this.show.apply(this, args);
  }
  [dartx.showModal](...args) {
    return this.showModal.apply(this, args);
  }
};
dart.defineNamedConstructor(html.DialogElement, 'created');
dart.setSignature(html.DialogElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DialogElement, []),
    created: dart.definiteFunctionType(html.DialogElement, [])
  }),
  fields: () => ({
    [dartx.open]: core.bool,
    [dartx.returnValue]: core.String
  }),
  methods: () => ({
    [dartx.close]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.show]: dart.definiteFunctionType(dart.void, []),
    [dartx.showModal]: dart.definiteFunctionType(dart.void, [])
  })
});
dart.registerExtension(dart.global.HTMLDialogElement, html.DialogElement);
const _getDirectory = Symbol('_getDirectory');
const _getFile = Symbol('_getFile');
const __getDirectory_1 = Symbol('__getDirectory_1');
const __getDirectory_2 = Symbol('__getDirectory_2');
const __getDirectory_3 = Symbol('__getDirectory_3');
const __getDirectory_4 = Symbol('__getDirectory_4');
const __getDirectory = Symbol('__getDirectory');
const __getFile_1 = Symbol('__getFile_1');
const __getFile_2 = Symbol('__getFile_2');
const __getFile_3 = Symbol('__getFile_3');
const __getFile_4 = Symbol('__getFile_4');
const __getFile = Symbol('__getFile');
const _removeRecursively = Symbol('_removeRecursively');
const _copyTo = Symbol('_copyTo');
const _getMetadata = Symbol('_getMetadata');
const _getParent = Symbol('_getParent');
const _moveTo = Symbol('_moveTo');
const _remove = Symbol('_remove');
dart.defineExtensionNames([
  'copyTo',
  'getMetadata',
  'getParent',
  'moveTo',
  'remove',
  'toUrl',
  'filesystem',
  'fullPath',
  'isDirectory',
  'isFile',
  'name'
]);
html.Entry = class Entry extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.filesystem]() {
    return this.filesystem;
  }
  get [dartx.fullPath]() {
    return this.fullPath;
  }
  get [dartx.isDirectory]() {
    return this.isDirectory;
  }
  get [dartx.isFile]() {
    return this.isFile;
  }
  get [dartx.name]() {
    return this.name;
  }
  [_copyTo](...args) {
    return this.copyTo.apply(this, args);
  }
  [dartx.copyTo](parent, opts) {
    let name = opts && 'name' in opts ? opts.name : null;
    let completer = CompleterOfEntry().new();
    this[_copyTo](parent, {name: name, successCallback: dart.fn(value => {
        completer.complete(value);
      }, EntryTovoid()), errorCallback: dart.fn(error => {
        completer.completeError(error);
      }, FileErrorTovoid())});
    return completer.future;
  }
  [_getMetadata](...args) {
    return this.getMetadata.apply(this, args);
  }
  [dartx.getMetadata]() {
    let completer = CompleterOfMetadata().new();
    this[_getMetadata](dart.fn(value => {
      completer.complete(value);
    }, MetadataTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, FileErrorTovoid()));
    return completer.future;
  }
  [_getParent](...args) {
    return this.getParent.apply(this, args);
  }
  [dartx.getParent]() {
    let completer = CompleterOfEntry().new();
    this[_getParent](dart.fn(value => {
      completer.complete(value);
    }, EntryTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, FileErrorTovoid()));
    return completer.future;
  }
  [_moveTo](...args) {
    return this.moveTo.apply(this, args);
  }
  [dartx.moveTo](parent, opts) {
    let name = opts && 'name' in opts ? opts.name : null;
    let completer = CompleterOfEntry().new();
    this[_moveTo](parent, {name: name, successCallback: dart.fn(value => {
        completer.complete(value);
      }, EntryTovoid()), errorCallback: dart.fn(error => {
        completer.completeError(error);
      }, FileErrorTovoid())});
    return completer.future;
  }
  [_remove](...args) {
    return this.remove.apply(this, args);
  }
  [dartx.remove]() {
    let completer = async.Completer.new();
    this[_remove](dart.fn(() => {
      completer.complete();
    }, VoidTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, FileErrorTovoid()));
    return completer.future;
  }
  [dartx.toUrl](...args) {
    return this.toURL.apply(this, args);
  }
};
dart.setSignature(html.Entry, {
  constructors: () => ({_: dart.definiteFunctionType(html.Entry, [])}),
  fields: () => ({
    [dartx.filesystem]: html.FileSystem,
    [dartx.fullPath]: core.String,
    [dartx.isDirectory]: core.bool,
    [dartx.isFile]: core.bool,
    [dartx.name]: core.String
  }),
  methods: () => ({
    [_copyTo]: dart.definiteFunctionType(dart.void, [html.DirectoryEntry], {name: core.String, successCallback: html._EntryCallback, errorCallback: html._ErrorCallback}),
    [dartx.copyTo]: dart.definiteFunctionType(async.Future$(html.Entry), [html.DirectoryEntry], {name: core.String}),
    [_getMetadata]: dart.definiteFunctionType(dart.void, [html.MetadataCallback], [html._ErrorCallback]),
    [dartx.getMetadata]: dart.definiteFunctionType(async.Future$(html.Metadata), []),
    [_getParent]: dart.definiteFunctionType(dart.void, [], [html._EntryCallback, html._ErrorCallback]),
    [dartx.getParent]: dart.definiteFunctionType(async.Future$(html.Entry), []),
    [_moveTo]: dart.definiteFunctionType(dart.void, [html.DirectoryEntry], {name: core.String, successCallback: html._EntryCallback, errorCallback: html._ErrorCallback}),
    [dartx.moveTo]: dart.definiteFunctionType(async.Future$(html.Entry), [html.DirectoryEntry], {name: core.String}),
    [_remove]: dart.definiteFunctionType(dart.void, [html.VoidCallback], [html._ErrorCallback]),
    [dartx.remove]: dart.definiteFunctionType(async.Future, []),
    [dartx.toUrl]: dart.definiteFunctionType(core.String, [])
  })
});
dart.registerExtension(dart.global.Entry, html.Entry);
dart.defineExtensionNames([
  'createDirectory',
  'getDirectory',
  'createFile',
  'getFile',
  'createReader',
  'removeRecursively'
]);
html.DirectoryEntry = class DirectoryEntry extends html.Entry {
  [dartx.createDirectory](path, opts) {
    let exclusive = opts && 'exclusive' in opts ? opts.exclusive : false;
    return this[_getDirectory](path, {options: dart.map({create: true, exclusive: exclusive}, core.String, core.bool)});
  }
  [dartx.getDirectory](path) {
    return this[_getDirectory](path);
  }
  [dartx.createFile](path, opts) {
    let exclusive = opts && 'exclusive' in opts ? opts.exclusive : false;
    return this[_getFile](path, {options: dart.map({create: true, exclusive: exclusive}, core.String, core.bool)});
  }
  [dartx.getFile](path) {
    return this[_getFile](path);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.createReader](...args) {
    return this.createReader.apply(this, args);
  }
  [__getDirectory](path, opts) {
    let options = opts && 'options' in opts ? opts.options : null;
    let successCallback = opts && 'successCallback' in opts ? opts.successCallback : null;
    let errorCallback = opts && 'errorCallback' in opts ? opts.errorCallback : null;
    if (errorCallback != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[__getDirectory_1](path, options_1, successCallback, errorCallback);
      return;
    }
    if (successCallback != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[__getDirectory_2](path, options_1, successCallback);
      return;
    }
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[__getDirectory_3](path, options_1);
      return;
    }
    this[__getDirectory_4](path);
    return;
  }
  [__getDirectory_1](...args) {
    return this.getDirectory.apply(this, args);
  }
  [__getDirectory_2](...args) {
    return this.getDirectory.apply(this, args);
  }
  [__getDirectory_3](...args) {
    return this.getDirectory.apply(this, args);
  }
  [__getDirectory_4](...args) {
    return this.getDirectory.apply(this, args);
  }
  [_getDirectory](path, opts) {
    let options = opts && 'options' in opts ? opts.options : null;
    let completer = CompleterOfEntry().new();
    this[__getDirectory](path, {options: options, successCallback: dart.fn(value => {
        completer.complete(value);
      }, EntryTovoid()), errorCallback: dart.fn(error => {
        completer.completeError(error);
      }, FileErrorTovoid())});
    return completer.future;
  }
  [__getFile](path, opts) {
    let options = opts && 'options' in opts ? opts.options : null;
    let successCallback = opts && 'successCallback' in opts ? opts.successCallback : null;
    let errorCallback = opts && 'errorCallback' in opts ? opts.errorCallback : null;
    if (errorCallback != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[__getFile_1](path, options_1, successCallback, errorCallback);
      return;
    }
    if (successCallback != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[__getFile_2](path, options_1, successCallback);
      return;
    }
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[__getFile_3](path, options_1);
      return;
    }
    this[__getFile_4](path);
    return;
  }
  [__getFile_1](...args) {
    return this.getFile.apply(this, args);
  }
  [__getFile_2](...args) {
    return this.getFile.apply(this, args);
  }
  [__getFile_3](...args) {
    return this.getFile.apply(this, args);
  }
  [__getFile_4](...args) {
    return this.getFile.apply(this, args);
  }
  [_getFile](path, opts) {
    let options = opts && 'options' in opts ? opts.options : null;
    let completer = CompleterOfEntry().new();
    this[__getFile](path, {options: options, successCallback: dart.fn(value => {
        completer.complete(value);
      }, EntryTovoid()), errorCallback: dart.fn(error => {
        completer.completeError(error);
      }, FileErrorTovoid())});
    return completer.future;
  }
  [_removeRecursively](...args) {
    return this.removeRecursively.apply(this, args);
  }
  [dartx.removeRecursively]() {
    let completer = async.Completer.new();
    this[_removeRecursively](dart.fn(() => {
      completer.complete();
    }, VoidTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, FileErrorTovoid()));
    return completer.future;
  }
};
dart.setSignature(html.DirectoryEntry, {
  constructors: () => ({_: dart.definiteFunctionType(html.DirectoryEntry, [])}),
  methods: () => ({
    [dartx.createDirectory]: dart.definiteFunctionType(async.Future$(html.Entry), [core.String], {exclusive: core.bool}),
    [dartx.getDirectory]: dart.definiteFunctionType(async.Future$(html.Entry), [core.String]),
    [dartx.createFile]: dart.definiteFunctionType(async.Future$(html.Entry), [core.String], {exclusive: core.bool}),
    [dartx.getFile]: dart.definiteFunctionType(async.Future$(html.Entry), [core.String]),
    [dartx.createReader]: dart.definiteFunctionType(html.DirectoryReader, []),
    [__getDirectory]: dart.definiteFunctionType(dart.void, [core.String], {options: core.Map, successCallback: html._EntryCallback, errorCallback: html._ErrorCallback}),
    [__getDirectory_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, html._EntryCallback, html._ErrorCallback]),
    [__getDirectory_2]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, html._EntryCallback]),
    [__getDirectory_3]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic]),
    [__getDirectory_4]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [_getDirectory]: dart.definiteFunctionType(async.Future$(html.Entry), [core.String], {options: core.Map}),
    [__getFile]: dart.definiteFunctionType(dart.void, [core.String], {options: core.Map, successCallback: html._EntryCallback, errorCallback: html._ErrorCallback}),
    [__getFile_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, html._EntryCallback, html._ErrorCallback]),
    [__getFile_2]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, html._EntryCallback]),
    [__getFile_3]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic]),
    [__getFile_4]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [_getFile]: dart.definiteFunctionType(async.Future$(html.Entry), [core.String], {options: core.Map}),
    [_removeRecursively]: dart.definiteFunctionType(dart.void, [html.VoidCallback], [html._ErrorCallback]),
    [dartx.removeRecursively]: dart.definiteFunctionType(async.Future, [])
  })
});
dart.registerExtension(dart.global.DirectoryEntry, html.DirectoryEntry);
const _readEntries = Symbol('_readEntries');
dart.defineExtensionNames([
  'readEntries'
]);
html.DirectoryReader = class DirectoryReader extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [_readEntries](...args) {
    return this.readEntries.apply(this, args);
  }
  [dartx.readEntries]() {
    let completer = CompleterOfListOfEntry().new();
    this[_readEntries](dart.fn(value => {
      completer.complete(value);
    }, ListOfEntryTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, FileErrorTovoid()));
    return completer.future;
  }
};
dart.setSignature(html.DirectoryReader, {
  constructors: () => ({_: dart.definiteFunctionType(html.DirectoryReader, [])}),
  methods: () => ({
    [_readEntries]: dart.definiteFunctionType(dart.void, [html._EntriesCallback], [html._ErrorCallback]),
    [dartx.readEntries]: dart.definiteFunctionType(async.Future$(core.List$(html.Entry)), [])
  })
});
dart.registerExtension(dart.global.DirectoryReader, html.DirectoryReader);
html.DivElement = class DivElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.DivElement._check(html.document[dartx.createElement]("div"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.DivElement, 'created');
dart.setSignature(html.DivElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DivElement, []),
    new: dart.definiteFunctionType(html.DivElement, []),
    created: dart.definiteFunctionType(html.DivElement, [])
  })
});
dart.registerExtension(dart.global.HTMLDivElement, html.DivElement);
const _body = Symbol('_body');
const _get_window = Symbol('_get_window');
const _head = Symbol('_head');
const _lastModified = Symbol('_lastModified');
const _preferredStylesheetSet = Symbol('_preferredStylesheetSet');
const _referrer = Symbol('_referrer');
const _selectedStylesheetSet = Symbol('_selectedStylesheetSet');
const _styleSheets = Symbol('_styleSheets');
const _title = Symbol('_title');
const _visibilityState = Symbol('_visibilityState');
const _webkitFullscreenElement = Symbol('_webkitFullscreenElement');
const _webkitFullscreenEnabled = Symbol('_webkitFullscreenEnabled');
const _webkitHidden = Symbol('_webkitHidden');
const _webkitVisibilityState = Symbol('_webkitVisibilityState');
const _caretRangeFromPoint = Symbol('_caretRangeFromPoint');
const _createElement = Symbol('_createElement');
const _createElementNS = Symbol('_createElementNS');
const _createTouch_1 = Symbol('_createTouch_1');
const _createTouch = Symbol('_createTouch');
const _createTouchList = Symbol('_createTouchList');
const _elementFromPoint = Symbol('_elementFromPoint');
const _getCssCanvasContext = Symbol('_getCssCanvasContext');
const _webkitExitFullscreen = Symbol('_webkitExitFullscreen');
const _createElement_2 = Symbol('_createElement_2');
const _createElementNS_2 = Symbol('_createElementNS_2');
const _createNodeIterator = Symbol('_createNodeIterator');
const _createTreeWalker = Symbol('_createTreeWalker');
dart.defineExtensionNames([
  'window',
  'adoptNode',
  'createDocumentFragment',
  'createRange',
  'elementsFromPoint',
  'execCommand',
  'exitFullscreen',
  'exitPointerLock',
  'getElementsByClassName',
  'getElementsByName',
  'getElementsByTagName',
  'importNode',
  'queryCommandEnabled',
  'queryCommandIndeterm',
  'queryCommandState',
  'queryCommandSupported',
  'queryCommandValue',
  'transformDocumentToTreeView',
  'getElementById',
  'querySelector',
  'onAbort',
  'onBeforeCopy',
  'onBeforeCut',
  'onBeforePaste',
  'onBlur',
  'onCanPlay',
  'onCanPlayThrough',
  'onChange',
  'onClick',
  'onContextMenu',
  'onCopy',
  'onCut',
  'onDoubleClick',
  'onDrag',
  'onDragEnd',
  'onDragEnter',
  'onDragLeave',
  'onDragOver',
  'onDragStart',
  'onDrop',
  'onDurationChange',
  'onEmptied',
  'onEnded',
  'onError',
  'onFocus',
  'onInput',
  'onInvalid',
  'onKeyDown',
  'onKeyPress',
  'onKeyUp',
  'onLoad',
  'onLoadedData',
  'onLoadedMetadata',
  'onMouseDown',
  'onMouseEnter',
  'onMouseLeave',
  'onMouseMove',
  'onMouseOut',
  'onMouseOver',
  'onMouseUp',
  'onMouseWheel',
  'onPaste',
  'onPause',
  'onPlay',
  'onPlaying',
  'onPointerLockChange',
  'onPointerLockError',
  'onRateChange',
  'onReadyStateChange',
  'onReset',
  'onResize',
  'onScroll',
  'onSearch',
  'onSecurityPolicyViolation',
  'onSeeked',
  'onSeeking',
  'onSelect',
  'onSelectionChange',
  'onSelectStart',
  'onStalled',
  'onSubmit',
  'onSuspend',
  'onTimeUpdate',
  'onTouchCancel',
  'onTouchEnd',
  'onTouchMove',
  'onTouchStart',
  'onVolumeChange',
  'onWaiting',
  'onFullscreenChange',
  'onFullscreenError',
  'querySelectorAll',
  'query',
  'queryAll',
  'supportsRegisterElement',
  'supportsRegister',
  'createElement',
  'createElementNS',
  'visibilityState',
  'activeElement',
  'contentType',
  'cookie',
  'currentScript',
  'documentElement',
  'domain',
  'fonts',
  'fullscreenElement',
  'fullscreenEnabled',
  'hidden',
  'implementation',
  'origin',
  'pointerLockElement',
  'readyState',
  'rootElement',
  'scrollingElement',
  'timeline'
]);
html.Document = class Document extends html.Node {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.activeElement]() {
    return this.activeElement;
  }
  get [_body]() {
    return this.body;
  }
  set [_body](value) {
    this.body = value;
  }
  get [dartx.contentType]() {
    return this.contentType;
  }
  get [dartx.cookie]() {
    return this.cookie;
  }
  set [dartx.cookie](value) {
    this.cookie = value;
  }
  get [dartx.currentScript]() {
    return this.currentScript;
  }
  get [dartx.window]() {
    return html._convertNativeToDart_Window(this[_get_window]);
  }
  get [_get_window]() {
    return this.defaultView;
  }
  get [dartx.documentElement]() {
    return this.documentElement;
  }
  get [dartx.domain]() {
    return this.domain;
  }
  get [dartx.fonts]() {
    return this.fonts;
  }
  get [dartx.fullscreenElement]() {
    return this.fullscreenElement;
  }
  get [dartx.fullscreenEnabled]() {
    return this.fullscreenEnabled;
  }
  get [_head]() {
    return this.head;
  }
  get [dartx.hidden]() {
    return this.hidden;
  }
  get [dartx.implementation]() {
    return this.implementation;
  }
  get [_lastModified]() {
    return this.lastModified;
  }
  get [dartx.origin]() {
    return this.origin;
  }
  get [dartx.pointerLockElement]() {
    return this.pointerLockElement;
  }
  get [_preferredStylesheetSet]() {
    return this.preferredStylesheetSet;
  }
  get [dartx.readyState]() {
    return this.readyState;
  }
  get [_referrer]() {
    return this.referrer;
  }
  get [dartx.rootElement]() {
    return this.rootElement;
  }
  get [dartx.scrollingElement]() {
    return this.scrollingElement;
  }
  get [_selectedStylesheetSet]() {
    return this.selectedStylesheetSet;
  }
  set [_selectedStylesheetSet](value) {
    this.selectedStylesheetSet = value;
  }
  get [_styleSheets]() {
    return this.styleSheets;
  }
  get [dartx.timeline]() {
    return this.timeline;
  }
  get [_title]() {
    return this.title;
  }
  set [_title](value) {
    this.title = value;
  }
  get [_visibilityState]() {
    return this.visibilityState;
  }
  get [_webkitFullscreenElement]() {
    return this.webkitFullscreenElement;
  }
  get [_webkitFullscreenEnabled]() {
    return this.webkitFullscreenEnabled;
  }
  get [_webkitHidden]() {
    return this.webkitHidden;
  }
  get [_webkitVisibilityState]() {
    return this.webkitVisibilityState;
  }
  [dartx.adoptNode](...args) {
    return this.adoptNode.apply(this, args);
  }
  [_caretRangeFromPoint](...args) {
    return this.caretRangeFromPoint.apply(this, args);
  }
  [dartx.createDocumentFragment](...args) {
    return this.createDocumentFragment.apply(this, args);
  }
  [_createElement](...args) {
    return this.createElement.apply(this, args);
  }
  [_createElementNS](...args) {
    return this.createElementNS.apply(this, args);
  }
  [_createEvent](...args) {
    return this.createEvent.apply(this, args);
  }
  [dartx.createRange](...args) {
    return this.createRange.apply(this, args);
  }
  [_createTextNode](...args) {
    return this.createTextNode.apply(this, args);
  }
  [_createTouch](window, target, identifier, pageX, pageY, screenX, screenY, radiusX, radiusY, rotationAngle, force) {
    let target_1 = html._convertDartToNative_EventTarget(target);
    return this[_createTouch_1](window, target_1, identifier, pageX, pageY, screenX, screenY, radiusX, radiusY, rotationAngle, force);
  }
  [_createTouch_1](...args) {
    return this.createTouch.apply(this, args);
  }
  [_createTouchList](...args) {
    return this.createTouchList.apply(this, args);
  }
  [_elementFromPoint](...args) {
    return this.elementFromPoint.apply(this, args);
  }
  [dartx.elementsFromPoint](...args) {
    return this.elementsFromPoint.apply(this, args);
  }
  [dartx.execCommand](...args) {
    return this.execCommand.apply(this, args);
  }
  [dartx.exitFullscreen](...args) {
    return this.exitFullscreen.apply(this, args);
  }
  [dartx.exitPointerLock](...args) {
    return this.exitPointerLock.apply(this, args);
  }
  [_getCssCanvasContext](...args) {
    return this.getCSSCanvasContext.apply(this, args);
  }
  [dartx.getElementsByClassName](...args) {
    return this.getElementsByClassName.apply(this, args);
  }
  [dartx.getElementsByName](...args) {
    return this.getElementsByName.apply(this, args);
  }
  [dartx.getElementsByTagName](...args) {
    return this.getElementsByTagName.apply(this, args);
  }
  [dartx.importNode](...args) {
    return this.importNode.apply(this, args);
  }
  [dartx.queryCommandEnabled](...args) {
    return this.queryCommandEnabled.apply(this, args);
  }
  [dartx.queryCommandIndeterm](...args) {
    return this.queryCommandIndeterm.apply(this, args);
  }
  [dartx.queryCommandState](...args) {
    return this.queryCommandState.apply(this, args);
  }
  [dartx.queryCommandSupported](...args) {
    return this.queryCommandSupported.apply(this, args);
  }
  [dartx.queryCommandValue](...args) {
    return this.queryCommandValue.apply(this, args);
  }
  [dartx.transformDocumentToTreeView](...args) {
    return this.transformDocumentToTreeView.apply(this, args);
  }
  [_webkitExitFullscreen](...args) {
    return this.webkitExitFullscreen.apply(this, args);
  }
  [dartx.getElementById](...args) {
    return this.getElementById.apply(this, args);
  }
  get [_childElementCount]() {
    return this.childElementCount;
  }
  get [_children]() {
    return this.children;
  }
  get [_firstElementChild]() {
    return this.firstElementChild;
  }
  get [_lastElementChild]() {
    return this.lastElementChild;
  }
  [dartx.querySelector](...args) {
    return this.querySelector.apply(this, args);
  }
  [_querySelectorAll](...args) {
    return this.querySelectorAll.apply(this, args);
  }
  get [dartx.onAbort]() {
    return html.Element.abortEvent.forTarget(this);
  }
  get [dartx.onBeforeCopy]() {
    return html.Element.beforeCopyEvent.forTarget(this);
  }
  get [dartx.onBeforeCut]() {
    return html.Element.beforeCutEvent.forTarget(this);
  }
  get [dartx.onBeforePaste]() {
    return html.Element.beforePasteEvent.forTarget(this);
  }
  get [dartx.onBlur]() {
    return html.Element.blurEvent.forTarget(this);
  }
  get [dartx.onCanPlay]() {
    return html.Element.canPlayEvent.forTarget(this);
  }
  get [dartx.onCanPlayThrough]() {
    return html.Element.canPlayThroughEvent.forTarget(this);
  }
  get [dartx.onChange]() {
    return html.Element.changeEvent.forTarget(this);
  }
  get [dartx.onClick]() {
    return html.Element.clickEvent.forTarget(this);
  }
  get [dartx.onContextMenu]() {
    return html.Element.contextMenuEvent.forTarget(this);
  }
  get [dartx.onCopy]() {
    return html.Element.copyEvent.forTarget(this);
  }
  get [dartx.onCut]() {
    return html.Element.cutEvent.forTarget(this);
  }
  get [dartx.onDoubleClick]() {
    return html.Element.doubleClickEvent.forTarget(this);
  }
  get [dartx.onDrag]() {
    return html.Element.dragEvent.forTarget(this);
  }
  get [dartx.onDragEnd]() {
    return html.Element.dragEndEvent.forTarget(this);
  }
  get [dartx.onDragEnter]() {
    return html.Element.dragEnterEvent.forTarget(this);
  }
  get [dartx.onDragLeave]() {
    return html.Element.dragLeaveEvent.forTarget(this);
  }
  get [dartx.onDragOver]() {
    return html.Element.dragOverEvent.forTarget(this);
  }
  get [dartx.onDragStart]() {
    return html.Element.dragStartEvent.forTarget(this);
  }
  get [dartx.onDrop]() {
    return html.Element.dropEvent.forTarget(this);
  }
  get [dartx.onDurationChange]() {
    return html.Element.durationChangeEvent.forTarget(this);
  }
  get [dartx.onEmptied]() {
    return html.Element.emptiedEvent.forTarget(this);
  }
  get [dartx.onEnded]() {
    return html.Element.endedEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return html.Element.errorEvent.forTarget(this);
  }
  get [dartx.onFocus]() {
    return html.Element.focusEvent.forTarget(this);
  }
  get [dartx.onInput]() {
    return html.Element.inputEvent.forTarget(this);
  }
  get [dartx.onInvalid]() {
    return html.Element.invalidEvent.forTarget(this);
  }
  get [dartx.onKeyDown]() {
    return html.Element.keyDownEvent.forTarget(this);
  }
  get [dartx.onKeyPress]() {
    return html.Element.keyPressEvent.forTarget(this);
  }
  get [dartx.onKeyUp]() {
    return html.Element.keyUpEvent.forTarget(this);
  }
  get [dartx.onLoad]() {
    return html.Element.loadEvent.forTarget(this);
  }
  get [dartx.onLoadedData]() {
    return html.Element.loadedDataEvent.forTarget(this);
  }
  get [dartx.onLoadedMetadata]() {
    return html.Element.loadedMetadataEvent.forTarget(this);
  }
  get [dartx.onMouseDown]() {
    return html.Element.mouseDownEvent.forTarget(this);
  }
  get [dartx.onMouseEnter]() {
    return html.Element.mouseEnterEvent.forTarget(this);
  }
  get [dartx.onMouseLeave]() {
    return html.Element.mouseLeaveEvent.forTarget(this);
  }
  get [dartx.onMouseMove]() {
    return html.Element.mouseMoveEvent.forTarget(this);
  }
  get [dartx.onMouseOut]() {
    return html.Element.mouseOutEvent.forTarget(this);
  }
  get [dartx.onMouseOver]() {
    return html.Element.mouseOverEvent.forTarget(this);
  }
  get [dartx.onMouseUp]() {
    return html.Element.mouseUpEvent.forTarget(this);
  }
  get [dartx.onMouseWheel]() {
    return html.Element.mouseWheelEvent.forTarget(this);
  }
  get [dartx.onPaste]() {
    return html.Element.pasteEvent.forTarget(this);
  }
  get [dartx.onPause]() {
    return html.Element.pauseEvent.forTarget(this);
  }
  get [dartx.onPlay]() {
    return html.Element.playEvent.forTarget(this);
  }
  get [dartx.onPlaying]() {
    return html.Element.playingEvent.forTarget(this);
  }
  get [dartx.onPointerLockChange]() {
    return html.Document.pointerLockChangeEvent.forTarget(this);
  }
  get [dartx.onPointerLockError]() {
    return html.Document.pointerLockErrorEvent.forTarget(this);
  }
  get [dartx.onRateChange]() {
    return html.Element.rateChangeEvent.forTarget(this);
  }
  get [dartx.onReadyStateChange]() {
    return html.Document.readyStateChangeEvent.forTarget(this);
  }
  get [dartx.onReset]() {
    return html.Element.resetEvent.forTarget(this);
  }
  get [dartx.onResize]() {
    return html.Element.resizeEvent.forTarget(this);
  }
  get [dartx.onScroll]() {
    return html.Element.scrollEvent.forTarget(this);
  }
  get [dartx.onSearch]() {
    return html.Element.searchEvent.forTarget(this);
  }
  get [dartx.onSecurityPolicyViolation]() {
    return html.Document.securityPolicyViolationEvent.forTarget(this);
  }
  get [dartx.onSeeked]() {
    return html.Element.seekedEvent.forTarget(this);
  }
  get [dartx.onSeeking]() {
    return html.Element.seekingEvent.forTarget(this);
  }
  get [dartx.onSelect]() {
    return html.Element.selectEvent.forTarget(this);
  }
  get [dartx.onSelectionChange]() {
    return html.Document.selectionChangeEvent.forTarget(this);
  }
  get [dartx.onSelectStart]() {
    return html.Element.selectStartEvent.forTarget(this);
  }
  get [dartx.onStalled]() {
    return html.Element.stalledEvent.forTarget(this);
  }
  get [dartx.onSubmit]() {
    return html.Element.submitEvent.forTarget(this);
  }
  get [dartx.onSuspend]() {
    return html.Element.suspendEvent.forTarget(this);
  }
  get [dartx.onTimeUpdate]() {
    return html.Element.timeUpdateEvent.forTarget(this);
  }
  get [dartx.onTouchCancel]() {
    return html.Element.touchCancelEvent.forTarget(this);
  }
  get [dartx.onTouchEnd]() {
    return html.Element.touchEndEvent.forTarget(this);
  }
  get [dartx.onTouchMove]() {
    return html.Element.touchMoveEvent.forTarget(this);
  }
  get [dartx.onTouchStart]() {
    return html.Element.touchStartEvent.forTarget(this);
  }
  get [dartx.onVolumeChange]() {
    return html.Element.volumeChangeEvent.forTarget(this);
  }
  get [dartx.onWaiting]() {
    return html.Element.waitingEvent.forTarget(this);
  }
  get [dartx.onFullscreenChange]() {
    return html.Element.fullscreenChangeEvent.forTarget(this);
  }
  get [dartx.onFullscreenError]() {
    return html.Element.fullscreenErrorEvent.forTarget(this);
  }
  [dartx.querySelectorAll](T) {
    return selectors => {
      return new (html._FrozenElementList$(T))._wrap(this[_querySelectorAll](selectors));
    };
  }
  [dartx.query](relativeSelectors) {
    return this[dartx.querySelector](relativeSelectors);
  }
  [dartx.queryAll](T) {
    return relativeSelectors => {
      return this[dartx.querySelectorAll](T)(relativeSelectors);
    };
  }
  get [dartx.supportsRegisterElement]() {
    return "registerElement" in this;
  }
  get [dartx.supportsRegister]() {
    return this[dartx.supportsRegisterElement];
  }
  [dartx.createElement](tagName, typeExtension) {
    if (typeExtension === void 0) typeExtension = null;
    return html.Element._check(typeExtension == null ? this[_createElement_2](tagName) : this[_createElement](tagName, typeExtension));
  }
  [_createElement_2](tagName) {
    return this.createElement(tagName);
  }
  [_createElementNS_2](namespaceURI, qualifiedName) {
    return this.createElementNS(namespaceURI, qualifiedName);
  }
  [dartx.createElementNS](namespaceURI, qualifiedName, typeExtension) {
    if (typeExtension === void 0) typeExtension = null;
    return html.Element._check(typeExtension == null ? this[_createElementNS_2](namespaceURI, qualifiedName) : this[_createElementNS](namespaceURI, qualifiedName, typeExtension));
  }
  [_createNodeIterator](root, whatToShow, filter) {
    if (whatToShow === void 0) whatToShow = null;
    if (filter === void 0) filter = null;
    return this.createNodeIterator(root, whatToShow, filter, false);
  }
  [_createTreeWalker](root, whatToShow, filter) {
    if (whatToShow === void 0) whatToShow = null;
    if (filter === void 0) filter = null;
    return this.createTreeWalker(root, whatToShow, filter, false);
  }
  get [dartx.visibilityState]() {
    return this.visibilityState || this.mozVisibilityState || this.msVisibilityState || this.webkitVisibilityState;
  }
};
dart.setSignature(html.Document, {
  constructors: () => ({_: dart.definiteFunctionType(html.Document, [])}),
  fields: () => ({
    [dartx.activeElement]: html.Element,
    [_body]: html.HtmlElement,
    [dartx.contentType]: core.String,
    [dartx.cookie]: core.String,
    [dartx.currentScript]: html.ScriptElement,
    [_get_window]: dart.dynamic,
    [dartx.documentElement]: html.Element,
    [dartx.domain]: core.String,
    [dartx.fonts]: html.FontFaceSet,
    [dartx.fullscreenElement]: html.Element,
    [dartx.fullscreenEnabled]: core.bool,
    [_head]: html.HeadElement,
    [dartx.hidden]: core.bool,
    [dartx.implementation]: html.DomImplementation,
    [_lastModified]: core.String,
    [dartx.origin]: core.String,
    [dartx.pointerLockElement]: html.Element,
    [_preferredStylesheetSet]: core.String,
    [dartx.readyState]: core.String,
    [_referrer]: core.String,
    [dartx.rootElement]: svg.SvgSvgElement,
    [dartx.scrollingElement]: html.Element,
    [_selectedStylesheetSet]: core.String,
    [_styleSheets]: ListOfStyleSheet(),
    [dartx.timeline]: html.AnimationTimeline,
    [_title]: core.String,
    [_visibilityState]: core.String,
    [_webkitFullscreenElement]: html.Element,
    [_webkitFullscreenEnabled]: core.bool,
    [_webkitHidden]: core.bool,
    [_webkitVisibilityState]: core.String,
    [_childElementCount]: core.int,
    [_children]: ListOfNode(),
    [_firstElementChild]: html.Element,
    [_lastElementChild]: html.Element
  }),
  getters: () => ({
    [dartx.window]: dart.definiteFunctionType(html.WindowBase, []),
    [dartx.onAbort]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onBeforeCopy]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onBeforeCut]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onBeforePaste]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onBlur]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onCanPlay]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onCanPlayThrough]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onClick]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onContextMenu]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onCopy]: dart.definiteFunctionType(async.Stream$(html.ClipboardEvent), []),
    [dartx.onCut]: dart.definiteFunctionType(async.Stream$(html.ClipboardEvent), []),
    [dartx.onDoubleClick]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onDrag]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDragEnd]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDragEnter]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDragLeave]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDragOver]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDragStart]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDrop]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDurationChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onEmptied]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onEnded]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onFocus]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onInput]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onInvalid]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onKeyDown]: dart.definiteFunctionType(async.Stream$(html.KeyboardEvent), []),
    [dartx.onKeyPress]: dart.definiteFunctionType(async.Stream$(html.KeyboardEvent), []),
    [dartx.onKeyUp]: dart.definiteFunctionType(async.Stream$(html.KeyboardEvent), []),
    [dartx.onLoad]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onLoadedData]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onLoadedMetadata]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onMouseDown]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseEnter]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseLeave]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseMove]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseOut]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseOver]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseUp]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseWheel]: dart.definiteFunctionType(async.Stream$(html.WheelEvent), []),
    [dartx.onPaste]: dart.definiteFunctionType(async.Stream$(html.ClipboardEvent), []),
    [dartx.onPause]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onPlay]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onPlaying]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onPointerLockChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onPointerLockError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onRateChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onReadyStateChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onReset]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onResize]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onScroll]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSearch]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSecurityPolicyViolation]: dart.definiteFunctionType(async.Stream$(html.SecurityPolicyViolationEvent), []),
    [dartx.onSeeked]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSeeking]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSelect]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSelectionChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSelectStart]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onStalled]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSubmit]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSuspend]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onTimeUpdate]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onTouchCancel]: dart.definiteFunctionType(async.Stream$(html.TouchEvent), []),
    [dartx.onTouchEnd]: dart.definiteFunctionType(async.Stream$(html.TouchEvent), []),
    [dartx.onTouchMove]: dart.definiteFunctionType(async.Stream$(html.TouchEvent), []),
    [dartx.onTouchStart]: dart.definiteFunctionType(async.Stream$(html.TouchEvent), []),
    [dartx.onVolumeChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onWaiting]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onFullscreenChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onFullscreenError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.supportsRegisterElement]: dart.definiteFunctionType(core.bool, []),
    [dartx.supportsRegister]: dart.definiteFunctionType(core.bool, []),
    [dartx.visibilityState]: dart.definiteFunctionType(core.String, [])
  }),
  methods: () => ({
    [dartx.adoptNode]: dart.definiteFunctionType(html.Node, [html.Node]),
    [_caretRangeFromPoint]: dart.definiteFunctionType(html.Range, [core.int, core.int]),
    [dartx.createDocumentFragment]: dart.definiteFunctionType(html.DocumentFragment, []),
    [_createElement]: dart.definiteFunctionType(html.Element, [core.String], [core.String]),
    [_createElementNS]: dart.definiteFunctionType(html.Element, [core.String, core.String], [core.String]),
    [_createEvent]: dart.definiteFunctionType(html.Event, [core.String]),
    [dartx.createRange]: dart.definiteFunctionType(html.Range, []),
    [_createTextNode]: dart.definiteFunctionType(html.Text, [core.String]),
    [_createTouch]: dart.definiteFunctionType(html.Touch, [html.Window, html.EventTarget, core.int, core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.num]),
    [_createTouch_1]: dart.definiteFunctionType(html.Touch, [html.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_createTouchList]: dart.definiteFunctionType(html.TouchList, [html.Touch]),
    [_elementFromPoint]: dart.definiteFunctionType(html.Element, [core.int, core.int]),
    [dartx.elementsFromPoint]: dart.definiteFunctionType(core.List$(html.Element), [core.int, core.int]),
    [dartx.execCommand]: dart.definiteFunctionType(core.bool, [core.String], [core.bool, core.String]),
    [dartx.exitFullscreen]: dart.definiteFunctionType(dart.void, []),
    [dartx.exitPointerLock]: dart.definiteFunctionType(dart.void, []),
    [_getCssCanvasContext]: dart.definiteFunctionType(core.Object, [core.String, core.String, core.int, core.int]),
    [dartx.getElementsByClassName]: dart.definiteFunctionType(core.List$(html.Node), [core.String]),
    [dartx.getElementsByName]: dart.definiteFunctionType(core.List$(html.Node), [core.String]),
    [dartx.getElementsByTagName]: dart.definiteFunctionType(core.List$(html.Node), [core.String]),
    [dartx.importNode]: dart.definiteFunctionType(html.Node, [html.Node], [core.bool]),
    [dartx.queryCommandEnabled]: dart.definiteFunctionType(core.bool, [core.String]),
    [dartx.queryCommandIndeterm]: dart.definiteFunctionType(core.bool, [core.String]),
    [dartx.queryCommandState]: dart.definiteFunctionType(core.bool, [core.String]),
    [dartx.queryCommandSupported]: dart.definiteFunctionType(core.bool, [core.String]),
    [dartx.queryCommandValue]: dart.definiteFunctionType(core.String, [core.String]),
    [dartx.transformDocumentToTreeView]: dart.definiteFunctionType(dart.void, [core.String]),
    [_webkitExitFullscreen]: dart.definiteFunctionType(dart.void, []),
    [dartx.getElementById]: dart.definiteFunctionType(html.Element, [core.String]),
    [dartx.querySelector]: dart.definiteFunctionType(html.Element, [core.String]),
    [_querySelectorAll]: dart.definiteFunctionType(core.List$(html.Node), [core.String]),
    [dartx.querySelectorAll]: dart.definiteFunctionType(T => [html.ElementList$(T), [core.String]]),
    [dartx.query]: dart.definiteFunctionType(html.Element, [core.String]),
    [dartx.queryAll]: dart.definiteFunctionType(T => [html.ElementList$(T), [core.String]]),
    [dartx.createElement]: dart.definiteFunctionType(html.Element, [core.String], [core.String]),
    [_createElement_2]: dart.definiteFunctionType(dart.dynamic, [core.String]),
    [_createElementNS_2]: dart.definiteFunctionType(dart.dynamic, [core.String, core.String]),
    [dartx.createElementNS]: dart.definiteFunctionType(html.Element, [core.String, core.String], [core.String]),
    [_createNodeIterator]: dart.definiteFunctionType(html.NodeIterator, [html.Node], [core.int, html.NodeFilter]),
    [_createTreeWalker]: dart.definiteFunctionType(html.TreeWalker, [html.Node], [core.int, html.NodeFilter])
  }),
  sfields: () => ({
    pointerLockChangeEvent: EventStreamProviderOfEvent(),
    pointerLockErrorEvent: EventStreamProviderOfEvent(),
    readyStateChangeEvent: EventStreamProviderOfEvent(),
    securityPolicyViolationEvent: EventStreamProviderOfSecurityPolicyViolationEvent(),
    selectionChangeEvent: EventStreamProviderOfEvent()
  })
});
dart.defineLazy(html.Document, {
  get pointerLockChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('pointerlockchange'));
  },
  get pointerLockErrorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('pointerlockerror'));
  },
  get readyStateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('readystatechange'));
  },
  get securityPolicyViolationEvent() {
    return dart.const(new (EventStreamProviderOfSecurityPolicyViolationEvent())('securitypolicyviolation'));
  },
  get selectionChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('selectionchange'));
  }
});
dart.registerExtension(dart.global.Document, html.Document);
const _docChildren = Symbol('_docChildren');
dart.defineExtensionNames([
  'children',
  'children',
  'querySelectorAll',
  'innerHtml',
  'innerHtml',
  'setInnerHtml',
  'appendText',
  'appendHtml',
  'query',
  'queryAll',
  'getElementById',
  'querySelector'
]);
html.DocumentFragment = class DocumentFragment extends html.Node {
  static new() {
    return html.document[dartx.createDocumentFragment]();
  }
  static html(html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    return html.document[dartx.body][dartx.createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
  }
  static svg(svgContent, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    return svg.SvgSvgElement.new()[dartx.createFragment](svgContent, {validator: validator, treeSanitizer: treeSanitizer});
  }
  get [_children]() {
    return dart.throw(new core.UnimplementedError('Use _docChildren instead'));
  }
  get [_docChildren]() {
    return this._docChildren;
  }
  set [_docChildren](value) {
    this._docChildren = value;
  }
  get [dartx.children]() {
    if (this[_docChildren] == null) {
      this[_docChildren] = new html_common.FilteredElementList(this);
    }
    return this[_docChildren];
  }
  set [dartx.children](value) {
    let copy = value[dartx.toList]();
    let children = this[dartx.children];
    children[dartx.clear]();
    children[dartx.addAll](copy);
  }
  [dartx.querySelectorAll](T) {
    return selectors => {
      return new (html._FrozenElementList$(T))._wrap(this[_querySelectorAll](selectors));
    };
  }
  get [dartx.innerHtml]() {
    let e = html.Element.tag("div");
    e[dartx.append](this[dartx.clone](true));
    return e[dartx.innerHtml];
  }
  set [dartx.innerHtml](value) {
    this[dartx.setInnerHtml](value);
  }
  [dartx.setInnerHtml](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    this[dartx.nodes][dartx.clear]();
    this[dartx.append](html.document[dartx.body][dartx.createFragment](html, {validator: validator, treeSanitizer: treeSanitizer}));
  }
  [dartx.appendText](text) {
    this[dartx.append](html.Text.new(text));
  }
  [dartx.appendHtml](text, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let NodeTreeSanitizer = opts && 'NodeTreeSanitizer' in opts ? opts.NodeTreeSanitizer : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    this[dartx.append](html.DocumentFragment.html(text, {validator: validator, treeSanitizer: html.NodeTreeSanitizer._check(treeSanitizer)}));
  }
  [dartx.query](relativeSelectors) {
    return this[dartx.querySelector](relativeSelectors);
  }
  [dartx.queryAll](T) {
    return relativeSelectors => {
      return this[dartx.querySelectorAll](T)(relativeSelectors);
    };
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.getElementById](...args) {
    return this.getElementById.apply(this, args);
  }
  get [_childElementCount]() {
    return this.childElementCount;
  }
  get [_firstElementChild]() {
    return this.firstElementChild;
  }
  get [_lastElementChild]() {
    return this.lastElementChild;
  }
  [dartx.querySelector](...args) {
    return this.querySelector.apply(this, args);
  }
  [_querySelectorAll](...args) {
    return this.querySelectorAll.apply(this, args);
  }
};
html.DocumentFragment[dart.implements] = () => [html.NonElementParentNode, html.ParentNode];
dart.setSignature(html.DocumentFragment, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.DocumentFragment, []),
    html: dart.definiteFunctionType(html.DocumentFragment, [core.String], {validator: html.NodeValidator, treeSanitizer: html.NodeTreeSanitizer}),
    svg: dart.definiteFunctionType(html.DocumentFragment, [core.String], {validator: html.NodeValidator, treeSanitizer: html.NodeTreeSanitizer}),
    _: dart.definiteFunctionType(html.DocumentFragment, [])
  }),
  fields: () => ({
    [_docChildren]: ListOfElement(),
    [_childElementCount]: core.int,
    [_firstElementChild]: html.Element,
    [_lastElementChild]: html.Element
  }),
  getters: () => ({
    [_children]: dart.definiteFunctionType(html.HtmlCollection, []),
    [dartx.children]: dart.definiteFunctionType(core.List$(html.Element), []),
    [dartx.innerHtml]: dart.definiteFunctionType(core.String, [])
  }),
  setters: () => ({
    [dartx.children]: dart.definiteFunctionType(dart.void, [ListOfElement()]),
    [dartx.innerHtml]: dart.definiteFunctionType(dart.void, [core.String])
  }),
  methods: () => ({
    [dartx.querySelectorAll]: dart.definiteFunctionType(T => [html.ElementList$(T), [core.String]]),
    [dartx.setInnerHtml]: dart.definiteFunctionType(dart.void, [core.String], {validator: html.NodeValidator, treeSanitizer: html.NodeTreeSanitizer}),
    [dartx.appendText]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.appendHtml]: dart.definiteFunctionType(dart.void, [core.String], {validator: html.NodeValidator, NodeTreeSanitizer: dart.dynamic, treeSanitizer: dart.dynamic}),
    [dartx.query]: dart.definiteFunctionType(html.Element, [core.String]),
    [dartx.queryAll]: dart.definiteFunctionType(T => [html.ElementList$(T), [core.String]]),
    [dartx.getElementById]: dart.definiteFunctionType(html.Element, [core.String]),
    [dartx.querySelector]: dart.definiteFunctionType(html.Element, [core.String]),
    [_querySelectorAll]: dart.definiteFunctionType(core.List$(html.Node), [core.String])
  })
});
dart.registerExtension(dart.global.DocumentFragment, html.DocumentFragment);
dart.defineExtensionNames([
  'message',
  'name'
]);
html.DomError = class DomError extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(name, message) {
    if (message === void 0) message = null;
    if (message != null) {
      return html.DomError._create_1(name, message);
    }
    return html.DomError._create_2(name);
  }
  static _create_1(name, message) {
    return new DOMError(name, message);
  }
  static _create_2(name) {
    return new DOMError(name);
  }
  get [dartx.message]() {
    return this.message;
  }
  get [dartx.name]() {
    return this.name;
  }
};
dart.setSignature(html.DomError, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DomError, []),
    new: dart.definiteFunctionType(html.DomError, [core.String], [core.String])
  }),
  fields: () => ({
    [dartx.message]: core.String,
    [dartx.name]: core.String
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.DomError, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.DomError, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.DOMError, html.DomError);
dart.defineExtensionNames([
  'name',
  'toString',
  'message'
]);
html.DomException = class DomException extends _interceptors.Interceptor {
  get [dartx.name]() {
    let errorName = this.name;
    if (dart.test(html_common.Device.isWebKit) && errorName == 'SECURITY_ERR') return 'SecurityError';
    if (dart.test(html_common.Device.isWebKit) && errorName == 'SYNTAX_ERR') return 'SyntaxError';
    return errorName;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.message]() {
    return this.message;
  }
  [dartx.toString]() {
    return String(this);
  }
};
dart.setSignature(html.DomException, {
  constructors: () => ({_: dart.definiteFunctionType(html.DomException, [])}),
  fields: () => ({[dartx.message]: core.String}),
  getters: () => ({[dartx.name]: dart.definiteFunctionType(core.String, [])}),
  sfields: () => ({
    INDEX_SIZE: core.String,
    HIERARCHY_REQUEST: core.String,
    WRONG_DOCUMENT: core.String,
    INVALID_CHARACTER: core.String,
    NO_MODIFICATION_ALLOWED: core.String,
    NOT_FOUND: core.String,
    NOT_SUPPORTED: core.String,
    INVALID_STATE: core.String,
    SYNTAX: core.String,
    INVALID_MODIFICATION: core.String,
    NAMESPACE: core.String,
    INVALID_ACCESS: core.String,
    TYPE_MISMATCH: core.String,
    SECURITY: core.String,
    NETWORK: core.String,
    ABORT: core.String,
    URL_MISMATCH: core.String,
    QUOTA_EXCEEDED: core.String,
    TIMEOUT: core.String,
    INVALID_NODE_TYPE: core.String,
    DATA_CLONE: core.String
  })
});
html.DomException.INDEX_SIZE = 'IndexSizeError';
html.DomException.HIERARCHY_REQUEST = 'HierarchyRequestError';
html.DomException.WRONG_DOCUMENT = 'WrongDocumentError';
html.DomException.INVALID_CHARACTER = 'InvalidCharacterError';
html.DomException.NO_MODIFICATION_ALLOWED = 'NoModificationAllowedError';
html.DomException.NOT_FOUND = 'NotFoundError';
html.DomException.NOT_SUPPORTED = 'NotSupportedError';
html.DomException.INVALID_STATE = 'InvalidStateError';
html.DomException.SYNTAX = 'SyntaxError';
html.DomException.INVALID_MODIFICATION = 'InvalidModificationError';
html.DomException.NAMESPACE = 'NamespaceError';
html.DomException.INVALID_ACCESS = 'InvalidAccessError';
html.DomException.TYPE_MISMATCH = 'TypeMismatchError';
html.DomException.SECURITY = 'SecurityError';
html.DomException.NETWORK = 'NetworkError';
html.DomException.ABORT = 'AbortError';
html.DomException.URL_MISMATCH = 'URLMismatchError';
html.DomException.QUOTA_EXCEEDED = 'QuotaExceededError';
html.DomException.TIMEOUT = 'TimeoutError';
html.DomException.INVALID_NODE_TYPE = 'InvalidNodeTypeError';
html.DomException.DATA_CLONE = 'DataCloneError';
dart.registerExtension(dart.global.DOMException, html.DomException);
dart.defineExtensionNames([
  'createDocument',
  'createDocumentType',
  'createHtmlDocument',
  'hasFeature'
]);
html.DomImplementation = class DomImplementation extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.createDocument](...args) {
    return this.createDocument.apply(this, args);
  }
  [dartx.createDocumentType](...args) {
    return this.createDocumentType.apply(this, args);
  }
  [dartx.createHtmlDocument](...args) {
    return this.createHTMLDocument.apply(this, args);
  }
  [dartx.hasFeature](...args) {
    return this.hasFeature.apply(this, args);
  }
};
dart.setSignature(html.DomImplementation, {
  constructors: () => ({_: dart.definiteFunctionType(html.DomImplementation, [])}),
  methods: () => ({
    [dartx.createDocument]: dart.definiteFunctionType(html.XmlDocument, [core.String, core.String, html._DocumentType]),
    [dartx.createDocumentType]: dart.definiteFunctionType(html._DocumentType, [core.String, core.String, core.String]),
    [dartx.createHtmlDocument]: dart.definiteFunctionType(html.HtmlDocument, [core.String]),
    [dartx.hasFeature]: dart.definiteFunctionType(core.bool, [])
  })
});
dart.registerExtension(dart.global.DOMImplementation, html.DomImplementation);
dart.defineExtensionNames([
  'next'
]);
html.DomIterator = class DomIterator extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.next](...args) {
    return this.next.apply(this, args);
  }
};
dart.setSignature(html.DomIterator, {
  constructors: () => ({_: dart.definiteFunctionType(html.DomIterator, [])}),
  methods: () => ({[dartx.next]: dart.definiteFunctionType(core.Object, [], [core.Object])})
});
dart.registerExtension(dart.global.Iterator, html.DomIterator);
dart.defineExtensionNames([
  'a',
  'b',
  'c',
  'd',
  'e',
  'f',
  'is2D',
  'isIdentity',
  'm11',
  'm12',
  'm13',
  'm14',
  'm21',
  'm22',
  'm23',
  'm24',
  'm31',
  'm32',
  'm33',
  'm34',
  'm41',
  'm42',
  'm43',
  'm44',
  'multiply',
  'scale',
  'scale3d',
  'scaleNonUniform',
  'toFloat32Array',
  'toFloat64Array',
  'translate'
]);
html.DomMatrixReadOnly = class DomMatrixReadOnly extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.a]() {
    return this.a;
  }
  get [dartx.b]() {
    return this.b;
  }
  get [dartx.c]() {
    return this.c;
  }
  get [dartx.d]() {
    return this.d;
  }
  get [dartx.e]() {
    return this.e;
  }
  get [dartx.f]() {
    return this.f;
  }
  get [dartx.is2D]() {
    return this.is2D;
  }
  get [dartx.isIdentity]() {
    return this.isIdentity;
  }
  get [dartx.m11]() {
    return this.m11;
  }
  get [dartx.m12]() {
    return this.m12;
  }
  get [dartx.m13]() {
    return this.m13;
  }
  get [dartx.m14]() {
    return this.m14;
  }
  get [dartx.m21]() {
    return this.m21;
  }
  get [dartx.m22]() {
    return this.m22;
  }
  get [dartx.m23]() {
    return this.m23;
  }
  get [dartx.m24]() {
    return this.m24;
  }
  get [dartx.m31]() {
    return this.m31;
  }
  get [dartx.m32]() {
    return this.m32;
  }
  get [dartx.m33]() {
    return this.m33;
  }
  get [dartx.m34]() {
    return this.m34;
  }
  get [dartx.m41]() {
    return this.m41;
  }
  get [dartx.m42]() {
    return this.m42;
  }
  get [dartx.m43]() {
    return this.m43;
  }
  get [dartx.m44]() {
    return this.m44;
  }
  [dartx.multiply](...args) {
    return this.multiply.apply(this, args);
  }
  [dartx.scale](...args) {
    return this.scale.apply(this, args);
  }
  [dartx.scale3d](...args) {
    return this.scale3d.apply(this, args);
  }
  [dartx.scaleNonUniform](...args) {
    return this.scaleNonUniform.apply(this, args);
  }
  [dartx.toFloat32Array](...args) {
    return this.toFloat32Array.apply(this, args);
  }
  [dartx.toFloat64Array](...args) {
    return this.toFloat64Array.apply(this, args);
  }
  [dartx.translate](...args) {
    return this.translate.apply(this, args);
  }
};
dart.setSignature(html.DomMatrixReadOnly, {
  constructors: () => ({_: dart.definiteFunctionType(html.DomMatrixReadOnly, [])}),
  getters: () => ({
    [dartx.a]: dart.definiteFunctionType(core.num, []),
    [dartx.b]: dart.definiteFunctionType(core.num, []),
    [dartx.c]: dart.definiteFunctionType(core.num, []),
    [dartx.d]: dart.definiteFunctionType(core.num, []),
    [dartx.e]: dart.definiteFunctionType(core.num, []),
    [dartx.f]: dart.definiteFunctionType(core.num, []),
    [dartx.is2D]: dart.definiteFunctionType(core.bool, []),
    [dartx.isIdentity]: dart.definiteFunctionType(core.bool, []),
    [dartx.m11]: dart.definiteFunctionType(core.num, []),
    [dartx.m12]: dart.definiteFunctionType(core.num, []),
    [dartx.m13]: dart.definiteFunctionType(core.num, []),
    [dartx.m14]: dart.definiteFunctionType(core.num, []),
    [dartx.m21]: dart.definiteFunctionType(core.num, []),
    [dartx.m22]: dart.definiteFunctionType(core.num, []),
    [dartx.m23]: dart.definiteFunctionType(core.num, []),
    [dartx.m24]: dart.definiteFunctionType(core.num, []),
    [dartx.m31]: dart.definiteFunctionType(core.num, []),
    [dartx.m32]: dart.definiteFunctionType(core.num, []),
    [dartx.m33]: dart.definiteFunctionType(core.num, []),
    [dartx.m34]: dart.definiteFunctionType(core.num, []),
    [dartx.m41]: dart.definiteFunctionType(core.num, []),
    [dartx.m42]: dart.definiteFunctionType(core.num, []),
    [dartx.m43]: dart.definiteFunctionType(core.num, []),
    [dartx.m44]: dart.definiteFunctionType(core.num, [])
  }),
  methods: () => ({
    [dartx.multiply]: dart.definiteFunctionType(html.DomMatrix, [html.DomMatrix]),
    [dartx.scale]: dart.definiteFunctionType(html.DomMatrix, [core.num], [core.num, core.num]),
    [dartx.scale3d]: dart.definiteFunctionType(html.DomMatrix, [core.num], [core.num, core.num, core.num]),
    [dartx.scaleNonUniform]: dart.definiteFunctionType(html.DomMatrix, [core.num], [core.num, core.num, core.num, core.num, core.num]),
    [dartx.toFloat32Array]: dart.definiteFunctionType(typed_data.Float32List, []),
    [dartx.toFloat64Array]: dart.definiteFunctionType(typed_data.Float64List, []),
    [dartx.translate]: dart.definiteFunctionType(html.DomMatrix, [core.num, core.num], [core.num])
  })
});
dart.registerExtension(dart.global.DOMMatrixReadOnly, html.DomMatrixReadOnly);
dart.defineExtensionNames([
  'a',
  'a',
  'b',
  'b',
  'c',
  'c',
  'd',
  'd',
  'e',
  'e',
  'f',
  'f',
  'm11',
  'm11',
  'm12',
  'm12',
  'm13',
  'm13',
  'm14',
  'm14',
  'm21',
  'm21',
  'm22',
  'm22',
  'm23',
  'm23',
  'm24',
  'm24',
  'm31',
  'm31',
  'm32',
  'm32',
  'm33',
  'm33',
  'm34',
  'm34',
  'm41',
  'm41',
  'm42',
  'm42',
  'm43',
  'm43',
  'm44',
  'm44',
  'multiplySelf',
  'preMultiplySelf',
  'scale3dSelf',
  'scaleNonUniformSelf',
  'scaleSelf',
  'translateSelf'
]);
html.DomMatrix = class DomMatrix extends html.DomMatrixReadOnly {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(other) {
    if (other === void 0) other = null;
    if (other == null) {
      return html.DomMatrix._create_1();
    }
    if (html.DomMatrixReadOnly.is(other) || other == null) {
      return html.DomMatrix._create_2(other);
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  static _create_1() {
    return new DOMMatrix();
  }
  static _create_2(other) {
    return new DOMMatrix(other);
  }
  get [dartx.a]() {
    return this.a;
  }
  set [dartx.a](value) {
    this.a = value;
  }
  get [dartx.b]() {
    return this.b;
  }
  set [dartx.b](value) {
    this.b = value;
  }
  get [dartx.c]() {
    return this.c;
  }
  set [dartx.c](value) {
    this.c = value;
  }
  get [dartx.d]() {
    return this.d;
  }
  set [dartx.d](value) {
    this.d = value;
  }
  get [dartx.e]() {
    return this.e;
  }
  set [dartx.e](value) {
    this.e = value;
  }
  get [dartx.f]() {
    return this.f;
  }
  set [dartx.f](value) {
    this.f = value;
  }
  get [dartx.m11]() {
    return this.m11;
  }
  set [dartx.m11](value) {
    this.m11 = value;
  }
  get [dartx.m12]() {
    return this.m12;
  }
  set [dartx.m12](value) {
    this.m12 = value;
  }
  get [dartx.m13]() {
    return this.m13;
  }
  set [dartx.m13](value) {
    this.m13 = value;
  }
  get [dartx.m14]() {
    return this.m14;
  }
  set [dartx.m14](value) {
    this.m14 = value;
  }
  get [dartx.m21]() {
    return this.m21;
  }
  set [dartx.m21](value) {
    this.m21 = value;
  }
  get [dartx.m22]() {
    return this.m22;
  }
  set [dartx.m22](value) {
    this.m22 = value;
  }
  get [dartx.m23]() {
    return this.m23;
  }
  set [dartx.m23](value) {
    this.m23 = value;
  }
  get [dartx.m24]() {
    return this.m24;
  }
  set [dartx.m24](value) {
    this.m24 = value;
  }
  get [dartx.m31]() {
    return this.m31;
  }
  set [dartx.m31](value) {
    this.m31 = value;
  }
  get [dartx.m32]() {
    return this.m32;
  }
  set [dartx.m32](value) {
    this.m32 = value;
  }
  get [dartx.m33]() {
    return this.m33;
  }
  set [dartx.m33](value) {
    this.m33 = value;
  }
  get [dartx.m34]() {
    return this.m34;
  }
  set [dartx.m34](value) {
    this.m34 = value;
  }
  get [dartx.m41]() {
    return this.m41;
  }
  set [dartx.m41](value) {
    this.m41 = value;
  }
  get [dartx.m42]() {
    return this.m42;
  }
  set [dartx.m42](value) {
    this.m42 = value;
  }
  get [dartx.m43]() {
    return this.m43;
  }
  set [dartx.m43](value) {
    this.m43 = value;
  }
  get [dartx.m44]() {
    return this.m44;
  }
  set [dartx.m44](value) {
    this.m44 = value;
  }
  [dartx.multiplySelf](...args) {
    return this.multiplySelf.apply(this, args);
  }
  [dartx.preMultiplySelf](...args) {
    return this.preMultiplySelf.apply(this, args);
  }
  [dartx.scale3dSelf](...args) {
    return this.scale3dSelf.apply(this, args);
  }
  [dartx.scaleNonUniformSelf](...args) {
    return this.scaleNonUniformSelf.apply(this, args);
  }
  [dartx.scaleSelf](...args) {
    return this.scaleSelf.apply(this, args);
  }
  [dartx.translateSelf](...args) {
    return this.translateSelf.apply(this, args);
  }
};
dart.setSignature(html.DomMatrix, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DomMatrix, []),
    new: dart.definiteFunctionType(html.DomMatrix, [], [html.DomMatrixReadOnly])
  }),
  setters: () => ({
    [dartx.a]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.b]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.c]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.d]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.e]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.f]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m11]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m12]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m13]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m14]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m21]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m22]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m23]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m24]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m31]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m32]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m33]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m34]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m41]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m42]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m43]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.m44]: dart.definiteFunctionType(dart.void, [core.num])
  }),
  methods: () => ({
    [dartx.multiplySelf]: dart.definiteFunctionType(html.DomMatrix, [html.DomMatrix]),
    [dartx.preMultiplySelf]: dart.definiteFunctionType(html.DomMatrix, [html.DomMatrix]),
    [dartx.scale3dSelf]: dart.definiteFunctionType(html.DomMatrix, [core.num], [core.num, core.num, core.num]),
    [dartx.scaleNonUniformSelf]: dart.definiteFunctionType(html.DomMatrix, [core.num], [core.num, core.num, core.num, core.num, core.num]),
    [dartx.scaleSelf]: dart.definiteFunctionType(html.DomMatrix, [core.num], [core.num, core.num]),
    [dartx.translateSelf]: dart.definiteFunctionType(html.DomMatrix, [core.num, core.num], [core.num])
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.DomMatrix, []),
    _create_2: dart.definiteFunctionType(html.DomMatrix, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.DOMMatrix, html.DomMatrix);
dart.defineExtensionNames([
  'parseFromString'
]);
html.DomParser = class DomParser extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.DomParser._create_1();
  }
  static _create_1() {
    return new DOMParser();
  }
  [dartx.parseFromString](...args) {
    return this.parseFromString.apply(this, args);
  }
};
dart.setSignature(html.DomParser, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DomParser, []),
    new: dart.definiteFunctionType(html.DomParser, [])
  }),
  methods: () => ({[dartx.parseFromString]: dart.definiteFunctionType(html.Document, [core.String, core.String])}),
  statics: () => ({_create_1: dart.definiteFunctionType(html.DomParser, [])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.DOMParser, html.DomParser);
dart.defineExtensionNames([
  'w',
  'x',
  'y',
  'z'
]);
html.DomPointReadOnly = class DomPointReadOnly extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(x, y, z, w) {
    return html.DomPointReadOnly._create_1(x, y, z, w);
  }
  static _create_1(x, y, z, w) {
    return new DOMPointReadOnly(x, y, z, w);
  }
  get [dartx.w]() {
    return this.w;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
  get [dartx.z]() {
    return this.z;
  }
};
dart.setSignature(html.DomPointReadOnly, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DomPointReadOnly, []),
    new: dart.definiteFunctionType(html.DomPointReadOnly, [core.num, core.num, core.num, core.num])
  }),
  getters: () => ({
    [dartx.w]: dart.definiteFunctionType(core.num, []),
    [dartx.x]: dart.definiteFunctionType(core.num, []),
    [dartx.y]: dart.definiteFunctionType(core.num, []),
    [dartx.z]: dart.definiteFunctionType(core.num, [])
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.DomPointReadOnly, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.DOMPointReadOnly, html.DomPointReadOnly);
dart.defineExtensionNames([
  'w',
  'w',
  'x',
  'x',
  'y',
  'y',
  'z',
  'z'
]);
html.DomPoint = class DomPoint extends html.DomPointReadOnly {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(point_OR_x, y, z, w) {
    if (point_OR_x === void 0) point_OR_x = null;
    if (y === void 0) y = null;
    if (z === void 0) z = null;
    if (w === void 0) w = null;
    if ((core.Map.is(point_OR_x) || point_OR_x == null) && y == null && z == null && w == null) {
      let point_1 = html_common.convertDartToNative_Dictionary(core.Map._check(point_OR_x));
      return html.DomPoint._create_1(point_1);
    }
    if (point_OR_x == null && y == null && z == null && w == null) {
      return html.DomPoint._create_2();
    }
    if ((typeof point_OR_x == 'number' || point_OR_x == null) && y == null && z == null && w == null) {
      return html.DomPoint._create_3(point_OR_x);
    }
    if ((typeof y == 'number' || y == null) && (typeof point_OR_x == 'number' || point_OR_x == null) && z == null && w == null) {
      return html.DomPoint._create_4(point_OR_x, y);
    }
    if ((typeof z == 'number' || z == null) && (typeof y == 'number' || y == null) && (typeof point_OR_x == 'number' || point_OR_x == null) && w == null) {
      return html.DomPoint._create_5(point_OR_x, y, z);
    }
    if ((typeof w == 'number' || w == null) && (typeof z == 'number' || z == null) && (typeof y == 'number' || y == null) && (typeof point_OR_x == 'number' || point_OR_x == null)) {
      return html.DomPoint._create_6(point_OR_x, y, z, w);
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  static _create_1(point_OR_x) {
    return new DOMPoint(point_OR_x);
  }
  static _create_2() {
    return new DOMPoint();
  }
  static _create_3(point_OR_x) {
    return new DOMPoint(point_OR_x);
  }
  static _create_4(point_OR_x, y) {
    return new DOMPoint(point_OR_x, y);
  }
  static _create_5(point_OR_x, y, z) {
    return new DOMPoint(point_OR_x, y, z);
  }
  static _create_6(point_OR_x, y, z, w) {
    return new DOMPoint(point_OR_x, y, z, w);
  }
  static get supported() {
    return !!window.DOMPoint || !!window.WebKitPoint;
  }
  get [dartx.w]() {
    return this.w;
  }
  set [dartx.w](value) {
    this.w = value;
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
  get [dartx.z]() {
    return this.z;
  }
  set [dartx.z](value) {
    this.z = value;
  }
};
dart.setSignature(html.DomPoint, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DomPoint, []),
    new: dart.definiteFunctionType(html.DomPoint, [], [dart.dynamic, core.num, core.num, core.num])
  }),
  setters: () => ({
    [dartx.w]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.x]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.y]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.z]: dart.definiteFunctionType(dart.void, [core.num])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.DomPoint, [dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.DomPoint, []),
    _create_3: dart.definiteFunctionType(html.DomPoint, [dart.dynamic]),
    _create_4: dart.definiteFunctionType(html.DomPoint, [dart.dynamic, dart.dynamic]),
    _create_5: dart.definiteFunctionType(html.DomPoint, [dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_6: dart.definiteFunctionType(html.DomPoint, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create_1', '_create_2', '_create_3', '_create_4', '_create_5', '_create_6']
});
dart.registerExtension(dart.global.DOMPoint, html.DomPoint);
dart.defineExtensionNames([
  'toString',
  '==',
  'hashCode',
  'intersection',
  'intersects',
  'boundingBox',
  'containsRectangle',
  'containsPoint',
  'topLeft',
  'topRight',
  'bottomRight',
  'bottomLeft',
  'bottom',
  'height',
  'left',
  'right',
  'top',
  'width',
  'x',
  'y'
]);
html.DomRectReadOnly = class DomRectReadOnly extends _interceptors.Interceptor {
  [dartx.toString]() {
    return dart.str`Rectangle (${this[dartx.left]}, ${this[dartx.top]}) ${this[dartx.width]} x ${this[dartx.height]}`;
  }
  [dartx['==']](other) {
    if (!RectangleOfnum().is(other)) return false;
    return dart.equals(this[dartx.left], dart.dload(other, 'left')) && dart.equals(this[dartx.top], dart.dload(other, 'top')) && dart.equals(this[dartx.width], dart.dload(other, 'width')) && dart.equals(this[dartx.height], dart.dload(other, 'height'));
  }
  get [dartx.hashCode]() {
    return html._JenkinsSmiHash.hash4(dart.hashCode(this[dartx.left]), dart.hashCode(this[dartx.top]), dart.hashCode(this[dartx.width]), dart.hashCode(this[dartx.height]));
  }
  [dartx.intersection](other) {
    let x0 = math.max(core.num)(this[dartx.left], other[dartx.left]);
    let x1 = math.min(core.num)(dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]), dart.notNull(other[dartx.left]) + dart.notNull(other[dartx.width]));
    if (dart.notNull(x0) <= dart.notNull(x1)) {
      let y0 = math.max(core.num)(this[dartx.top], other[dartx.top]);
      let y1 = math.min(core.num)(dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]), dart.notNull(other[dartx.top]) + dart.notNull(other[dartx.height]));
      if (dart.notNull(y0) <= dart.notNull(y1)) {
        return new (RectangleOfnum())(x0, y0, dart.notNull(x1) - dart.notNull(x0), dart.notNull(y1) - dart.notNull(y0));
      }
    }
    return null;
  }
  [dartx.intersects](other) {
    return dart.notNull(this[dartx.left]) <= dart.notNull(other[dartx.left]) + dart.notNull(other[dartx.width]) && dart.notNull(other[dartx.left]) <= dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]) && dart.notNull(this[dartx.top]) <= dart.notNull(other[dartx.top]) + dart.notNull(other[dartx.height]) && dart.notNull(other[dartx.top]) <= dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]);
  }
  [dartx.boundingBox](other) {
    let right = math.max(core.num)(dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]), dart.notNull(other[dartx.left]) + dart.notNull(other[dartx.width]));
    let bottom = math.max(core.num)(dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]), dart.notNull(other[dartx.top]) + dart.notNull(other[dartx.height]));
    let left = math.min(core.num)(this[dartx.left], other[dartx.left]);
    let top = math.min(core.num)(this[dartx.top], other[dartx.top]);
    return new (RectangleOfnum())(left, top, dart.notNull(right) - dart.notNull(left), dart.notNull(bottom) - dart.notNull(top));
  }
  [dartx.containsRectangle](another) {
    return dart.notNull(this[dartx.left]) <= dart.notNull(another[dartx.left]) && dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]) >= dart.notNull(another[dartx.left]) + dart.notNull(another[dartx.width]) && dart.notNull(this[dartx.top]) <= dart.notNull(another[dartx.top]) && dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]) >= dart.notNull(another[dartx.top]) + dart.notNull(another[dartx.height]);
  }
  [dartx.containsPoint](another) {
    return dart.notNull(another.x) >= dart.notNull(this[dartx.left]) && dart.notNull(another.x) <= dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]) && dart.notNull(another.y) >= dart.notNull(this[dartx.top]) && dart.notNull(another.y) <= dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]);
  }
  get [dartx.topLeft]() {
    return new (PointOfnum())(this[dartx.left], this[dartx.top]);
  }
  get [dartx.topRight]() {
    return new (PointOfnum())(dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]), this[dartx.top]);
  }
  get [dartx.bottomRight]() {
    return new (PointOfnum())(dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]), dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]));
  }
  get [dartx.bottomLeft]() {
    return new (PointOfnum())(this[dartx.left], dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]));
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(x, y, width, height) {
    return html.DomRectReadOnly._create_1(x, y, width, height);
  }
  static _create_1(x, y, width, height) {
    return new DOMRectReadOnly(x, y, width, height);
  }
  get [dartx.bottom]() {
    return this.bottom;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.left]() {
    return this.left;
  }
  get [dartx.right]() {
    return this.right;
  }
  get [dartx.top]() {
    return this.top;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
html.DomRectReadOnly[dart.implements] = () => [RectangleOfnum()];
dart.setSignature(html.DomRectReadOnly, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.DomRectReadOnly, []),
    new: dart.definiteFunctionType(html.DomRectReadOnly, [core.num, core.num, core.num, core.num])
  }),
  getters: () => ({
    [dartx.topLeft]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.topRight]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.bottomRight]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.bottomLeft]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.bottom]: dart.definiteFunctionType(core.num, []),
    [dartx.height]: dart.definiteFunctionType(core.num, []),
    [dartx.left]: dart.definiteFunctionType(core.num, []),
    [dartx.right]: dart.definiteFunctionType(core.num, []),
    [dartx.top]: dart.definiteFunctionType(core.num, []),
    [dartx.width]: dart.definiteFunctionType(core.num, []),
    [dartx.x]: dart.definiteFunctionType(core.num, []),
    [dartx.y]: dart.definiteFunctionType(core.num, [])
  }),
  methods: () => ({
    [dartx.intersection]: dart.definiteFunctionType(math.Rectangle$(core.num), [RectangleOfnum()]),
    [dartx.intersects]: dart.definiteFunctionType(core.bool, [RectangleOfnum()]),
    [dartx.boundingBox]: dart.definiteFunctionType(math.Rectangle$(core.num), [RectangleOfnum()]),
    [dartx.containsRectangle]: dart.definiteFunctionType(core.bool, [RectangleOfnum()]),
    [dartx.containsPoint]: dart.definiteFunctionType(core.bool, [PointOfnum()])
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.DomRectReadOnly, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.DOMRectReadOnly, html.DomRectReadOnly);
dart.defineExtensionNames([
  'add',
  'contains',
  'item',
  'remove',
  'toggle',
  'length'
]);
html.DomTokenList = class DomTokenList extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx.add](...args) {
    return this.add.apply(this, args);
  }
  [dartx.contains](...args) {
    return this.contains.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
  [dartx.remove](...args) {
    return this.remove.apply(this, args);
  }
  [dartx.toggle](...args) {
    return this.toggle.apply(this, args);
  }
};
dart.setSignature(html.DomTokenList, {
  constructors: () => ({_: dart.definiteFunctionType(html.DomTokenList, [])}),
  fields: () => ({[dartx.length]: core.int}),
  methods: () => ({
    [dartx.add]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.contains]: dart.definiteFunctionType(core.bool, [core.String]),
    [dartx.item]: dart.definiteFunctionType(core.String, [core.int]),
    [dartx.remove]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.toggle]: dart.definiteFunctionType(core.bool, [core.String], [core.bool])
  })
});
dart.registerExtension(dart.global.DOMTokenList, html.DomTokenList);
dart.defineExtensionNames([
  'value'
]);
html.DomSettableTokenList = class DomSettableTokenList extends html.DomTokenList {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
};
dart.setSignature(html.DomSettableTokenList, {
  constructors: () => ({_: dart.definiteFunctionType(html.DomSettableTokenList, [])}),
  fields: () => ({[dartx.value]: core.String})
});
dart.registerExtension(dart.global.DOMSettableTokenList, html.DomSettableTokenList);
html.ImmutableListMixin$ = dart.generic(E => {
  let FixedSizeListIteratorOfE = () => (FixedSizeListIteratorOfE = dart.constFn(html.FixedSizeListIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let EAndEToint = () => (EAndEToint = dart.constFn(dart.functionType(core.int, [E, E])))();
  let ETobool = () => (ETobool = dart.constFn(dart.functionType(core.bool, [E])))();
  dart.defineExtensionNames([
    'iterator',
    'add',
    'addAll',
    'sort',
    'shuffle',
    'insert',
    'insertAll',
    'setAll',
    'removeAt',
    'removeLast',
    'remove',
    'removeWhere',
    'retainWhere',
    'setRange',
    'removeRange',
    'replaceRange',
    'fillRange'
  ]);
  class ImmutableListMixin extends core.Object {
    get iterator() {
      return new (FixedSizeListIteratorOfE())(this);
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this[dartx.iterator]);
    }
    add(value) {
      E._check(value);
      dart.throw(new core.UnsupportedError("Cannot add to immutable List."));
    }
    addAll(iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError("Cannot add to immutable List."));
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      dart.throw(new core.UnsupportedError("Cannot sort immutable List."));
    }
    shuffle(random) {
      if (random === void 0) random = null;
      dart.throw(new core.UnsupportedError("Cannot shuffle immutable List."));
    }
    insert(index, element) {
      E._check(element);
      dart.throw(new core.UnsupportedError("Cannot add to immutable List."));
    }
    insertAll(index, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError("Cannot add to immutable List."));
    }
    setAll(index, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError("Cannot modify an immutable List."));
    }
    removeAt(pos) {
      dart.throw(new core.UnsupportedError("Cannot remove from immutable List."));
    }
    removeLast() {
      dart.throw(new core.UnsupportedError("Cannot remove from immutable List."));
    }
    remove(object) {
      dart.throw(new core.UnsupportedError("Cannot remove from immutable List."));
    }
    removeWhere(test) {
      dart.throw(new core.UnsupportedError("Cannot remove from immutable List."));
    }
    retainWhere(test) {
      dart.throw(new core.UnsupportedError("Cannot remove from immutable List."));
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfE()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      dart.throw(new core.UnsupportedError("Cannot setRange on immutable List."));
    }
    removeRange(start, end) {
      dart.throw(new core.UnsupportedError("Cannot removeRange on immutable List."));
    }
    replaceRange(start, end, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError("Cannot modify an immutable List."));
    }
    fillRange(start, end, fillValue) {
      if (fillValue === void 0) fillValue = null;
      E._check(fillValue);
      dart.throw(new core.UnsupportedError("Cannot modify an immutable List."));
    }
  }
  dart.addTypeTests(ImmutableListMixin);
  ImmutableListMixin[dart.implements] = () => [ListOfE()];
  dart.setSignature(ImmutableListMixin, {
    getters: () => ({iterator: dart.definiteFunctionType(core.Iterator$(E), [])}),
    methods: () => ({
      add: dart.definiteFunctionType(dart.void, [E]),
      addAll: dart.definiteFunctionType(dart.void, [IterableOfE()]),
      sort: dart.definiteFunctionType(dart.void, [], [EAndEToint()]),
      shuffle: dart.definiteFunctionType(dart.void, [], [math.Random]),
      insert: dart.definiteFunctionType(dart.void, [core.int, E]),
      insertAll: dart.definiteFunctionType(dart.void, [core.int, IterableOfE()]),
      setAll: dart.definiteFunctionType(dart.void, [core.int, IterableOfE()]),
      removeAt: dart.definiteFunctionType(E, [core.int]),
      removeLast: dart.definiteFunctionType(E, []),
      remove: dart.definiteFunctionType(core.bool, [core.Object]),
      removeWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      retainWhere: dart.definiteFunctionType(dart.void, [ETobool()]),
      setRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfE()], [core.int]),
      removeRange: dart.definiteFunctionType(dart.void, [core.int, core.int]),
      replaceRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfE()]),
      fillRange: dart.definiteFunctionType(dart.void, [core.int, core.int], [E])
    })
  });
  dart.defineExtensionMembers(ImmutableListMixin, [
    'add',
    'addAll',
    'sort',
    'shuffle',
    'insert',
    'insertAll',
    'setAll',
    'removeAt',
    'removeLast',
    'remove',
    'removeWhere',
    'retainWhere',
    'setRange',
    'removeRange',
    'replaceRange',
    'fillRange',
    'iterator'
  ]);
  return ImmutableListMixin;
});
html.ImmutableListMixin = ImmutableListMixin();
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item'
]);
html.DomStringList = class DomStringList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(core.String), html.ImmutableListMixin$(core.String)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[dartx.item](index);
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
html.DomStringList[dart.implements] = () => [ListOfString()];
dart.setSignature(html.DomStringList, {
  constructors: () => ({_: dart.definiteFunctionType(html.DomStringList, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(core.String, []),
    [dartx.last]: dart.definiteFunctionType(core.String, []),
    [dartx.single]: dart.definiteFunctionType(core.String, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(core.String, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, core.String]),
    [dartx.elementAt]: dart.definiteFunctionType(core.String, [core.int]),
    [__getter__]: dart.definiteFunctionType(core.String, [core.int]),
    [dartx.item]: dart.definiteFunctionType(core.String, [core.int])
  })
});
dart.registerExtension(dart.global.DOMStringList, html.DomStringList);
html.DomStringMap = class DomStringMap extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.DomStringMap, {
  constructors: () => ({_: dart.definiteFunctionType(html.DomStringMap, [])})
});
html.EffectModel = class EffectModel extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.EffectModel, {
  constructors: () => ({_: dart.definiteFunctionType(html.EffectModel, [])})
});
dart.registerExtension(dart.global.EffectModel, html.EffectModel);
const _childElements = Symbol('_childElements');
const _element = Symbol('_element');
const _filter = Symbol('_filter');
html._ChildrenElementList = class _ChildrenElementList extends collection.ListBase$(html.Element) {
  _wrap(element) {
    this[_childElements] = html.HtmlCollection._check(element[_children]);
    this[_element] = element;
  }
  contains(element) {
    return this[_childElements][dartx.contains](element);
  }
  get isEmpty() {
    return this[_element][_firstElementChild] == null;
  }
  get length() {
    return this[_childElements][dartx.length];
  }
  _get(index) {
    return html.Element._check(this[_childElements][dartx._get](index));
  }
  _set(index, value) {
    this[_element][_replaceChild](value, this[_childElements][dartx._get](index));
    return value;
  }
  set length(newLength) {
    dart.throw(new core.UnsupportedError('Cannot resize element lists'));
  }
  add(value) {
    this[_element][dartx.append](value);
    return value;
  }
  get iterator() {
    return this[dartx.toList]()[dartx.iterator];
  }
  addAll(iterable) {
    if (html._ChildNodeListLazy.is(iterable)) {
      iterable = ListOfElement().from(iterable);
    }
    for (let element of iterable) {
      this[_element][dartx.append](element);
    }
  }
  sort(compare) {
    if (compare === void 0) compare = null;
    dart.throw(new core.UnsupportedError('Cannot sort element lists'));
  }
  shuffle(random) {
    if (random === void 0) random = null;
    dart.throw(new core.UnsupportedError('Cannot shuffle element lists'));
  }
  removeWhere(test) {
    this[_filter](test, false);
  }
  retainWhere(test) {
    this[_filter](test, true);
  }
  [_filter](test, retainMatching) {
    let removed = null;
    if (dart.test(retainMatching)) {
      removed = this[_element][dartx.children][dartx.where](dart.fn(e => !dart.test(test(e)), ElementTobool()));
    } else {
      removed = this[_element][dartx.children][dartx.where](test);
    }
    for (let e of core.Iterable._check(removed))
      dart.dsend(e, 'remove');
  }
  setRange(start, end, iterable, skipCount) {
    if (skipCount === void 0) skipCount = 0;
    dart.throw(new core.UnimplementedError());
  }
  replaceRange(start, end, iterable) {
    dart.throw(new core.UnimplementedError());
  }
  fillRange(start, end, fillValue) {
    if (fillValue === void 0) fillValue = null;
    dart.throw(new core.UnimplementedError());
  }
  remove(object) {
    if (html.Element.is(object)) {
      let element = object;
      if (core.identical(element[dartx.parentNode], this[_element])) {
        this[_element][_removeChild](element);
        return true;
      }
    }
    return false;
  }
  insert(index, element) {
    if (dart.notNull(index) < 0 || dart.notNull(index) > dart.notNull(this.length)) {
      dart.throw(new core.RangeError.range(index, 0, this.length));
    }
    if (index == this.length) {
      this[_element][dartx.append](element);
    } else {
      this[_element][dartx.insertBefore](element, this._get(index));
    }
  }
  setAll(index, iterable) {
    dart.throw(new core.UnimplementedError());
  }
  clear() {
    this[_element][_clearChildren]();
  }
  removeAt(index) {
    let result = this._get(index);
    if (result != null) {
      this[_element][_removeChild](result);
    }
    return result;
  }
  removeLast() {
    let result = this.last;
    if (result != null) {
      this[_element][_removeChild](result);
    }
    return result;
  }
  get first() {
    let result = this[_element][_firstElementChild];
    if (result == null) dart.throw(new core.StateError("No elements"));
    return result;
  }
  get last() {
    let result = this[_element][_lastElementChild];
    if (result == null) dart.throw(new core.StateError("No elements"));
    return result;
  }
  get single() {
    if (dart.notNull(this.length) > 1) dart.throw(new core.StateError("More than one element"));
    return this.first;
  }
  get rawList() {
    return this[_childElements];
  }
};
dart.addSimpleTypeTests(html._ChildrenElementList);
dart.defineNamedConstructor(html._ChildrenElementList, '_wrap');
html._ChildrenElementList[dart.implements] = () => [html_common.NodeListWrapper];
dart.setSignature(html._ChildrenElementList, {
  constructors: () => ({_wrap: dart.definiteFunctionType(html._ChildrenElementList, [html.Element])}),
  fields: () => ({
    [_element]: html.Element,
    [_childElements]: html.HtmlCollection
  }),
  getters: () => ({
    length: dart.definiteFunctionType(core.int, []),
    iterator: dart.definiteFunctionType(core.Iterator$(html.Element), []),
    first: dart.definiteFunctionType(html.Element, []),
    last: dart.definiteFunctionType(html.Element, []),
    single: dart.definiteFunctionType(html.Element, []),
    rawList: dart.definiteFunctionType(core.List$(html.Node), [])
  }),
  setters: () => ({length: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    _get: dart.definiteFunctionType(html.Element, [core.int]),
    _set: dart.definiteFunctionType(dart.void, [core.int, html.Element]),
    add: dart.definiteFunctionType(html.Element, [html.Element]),
    addAll: dart.definiteFunctionType(dart.void, [IterableOfElement()]),
    sort: dart.definiteFunctionType(dart.void, [], [ElementAndElementToint()]),
    removeWhere: dart.definiteFunctionType(dart.void, [ElementTobool()]),
    retainWhere: dart.definiteFunctionType(dart.void, [ElementTobool()]),
    [_filter]: dart.definiteFunctionType(dart.void, [ElementTobool(), core.bool]),
    setRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfElement()], [core.int]),
    replaceRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfElement()]),
    fillRange: dart.definiteFunctionType(dart.void, [core.int, core.int], [html.Element]),
    insert: dart.definiteFunctionType(dart.void, [core.int, html.Element]),
    setAll: dart.definiteFunctionType(dart.void, [core.int, IterableOfElement()]),
    removeAt: dart.definiteFunctionType(html.Element, [core.int]),
    removeLast: dart.definiteFunctionType(html.Element, [])
  })
});
dart.defineExtensionMembers(html._ChildrenElementList, [
  'contains',
  '_get',
  '_set',
  'add',
  'addAll',
  'sort',
  'shuffle',
  'removeWhere',
  'retainWhere',
  'setRange',
  'replaceRange',
  'fillRange',
  'remove',
  'insert',
  'setAll',
  'clear',
  'removeAt',
  'removeLast',
  'isEmpty',
  'length',
  'length',
  'iterator',
  'first',
  'last',
  'single'
]);
html.ElementList$ = dart.generic(T => {
  class ElementList extends collection.ListBase$(T) {}
  return ElementList;
});
html.ElementList = ElementList();
const _nodeList = Symbol('_nodeList');
const _forElementList = Symbol('_forElementList');
html._FrozenElementList$ = dart.generic(E => {
  let ElementListOfE = () => (ElementListOfE = dart.constFn(html.ElementList$(E)))();
  let ComparatorOfE = () => (ComparatorOfE = dart.constFn(core.Comparator$(E)))();
  let EToIterableOfString = () => (EToIterableOfString = dart.constFn(dart.definiteFunctionType(IterableOfString(), [E])))();
  class _FrozenElementList extends collection.ListBase$(E) {
    _wrap(nodeList) {
      this[_nodeList] = nodeList;
    }
    get length() {
      return this[_nodeList][dartx.length];
    }
    _get(index) {
      return html._downcast(html.Node, E)(this[_nodeList][dartx._get](index));
    }
    _set(index, value) {
      E._check(value);
      dart.throw(new core.UnsupportedError('Cannot modify list'));
      return value;
    }
    set length(newLength) {
      dart.throw(new core.UnsupportedError('Cannot modify list'));
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      dart.throw(new core.UnsupportedError('Cannot sort list'));
    }
    shuffle(random) {
      if (random === void 0) random = null;
      dart.throw(new core.UnsupportedError('Cannot shuffle list'));
    }
    get first() {
      return html._downcast(html.Node, E)(this[_nodeList][dartx.first]);
    }
    get last() {
      return html._downcast(html.Node, E)(this[_nodeList][dartx.last]);
    }
    get single() {
      return html._downcast(html.Node, E)(this[_nodeList][dartx.single]);
    }
    get classes() {
      return html._MultiElementCssClassSet.new(this);
    }
    get style() {
      return new html._CssStyleDeclarationSet(this);
    }
    set classes(value) {
      this[dartx.forEach](dart.fn(e => e[dartx.classes] = value, EToIterableOfString()));
    }
    get contentEdge() {
      return new html._ContentCssListRect(this);
    }
    get paddingEdge() {
      return this.first[dartx.paddingEdge];
    }
    get borderEdge() {
      return this.first[dartx.borderEdge];
    }
    get marginEdge() {
      return this.first[dartx.marginEdge];
    }
    get rawList() {
      return this[_nodeList];
    }
    get onAbort() {
      return html.Element.abortEvent[_forElementList](this);
    }
    get onBeforeCopy() {
      return html.Element.beforeCopyEvent[_forElementList](this);
    }
    get onBeforeCut() {
      return html.Element.beforeCutEvent[_forElementList](this);
    }
    get onBeforePaste() {
      return html.Element.beforePasteEvent[_forElementList](this);
    }
    get onBlur() {
      return html.Element.blurEvent[_forElementList](this);
    }
    get onCanPlay() {
      return html.Element.canPlayEvent[_forElementList](this);
    }
    get onCanPlayThrough() {
      return html.Element.canPlayThroughEvent[_forElementList](this);
    }
    get onChange() {
      return html.Element.changeEvent[_forElementList](this);
    }
    get onClick() {
      return html.Element.clickEvent[_forElementList](this);
    }
    get onContextMenu() {
      return html.Element.contextMenuEvent[_forElementList](this);
    }
    get onCopy() {
      return html.Element.copyEvent[_forElementList](this);
    }
    get onCut() {
      return html.Element.cutEvent[_forElementList](this);
    }
    get onDoubleClick() {
      return html.Element.doubleClickEvent[_forElementList](this);
    }
    get onDrag() {
      return html.Element.dragEvent[_forElementList](this);
    }
    get onDragEnd() {
      return html.Element.dragEndEvent[_forElementList](this);
    }
    get onDragEnter() {
      return html.Element.dragEnterEvent[_forElementList](this);
    }
    get onDragLeave() {
      return html.Element.dragLeaveEvent[_forElementList](this);
    }
    get onDragOver() {
      return html.Element.dragOverEvent[_forElementList](this);
    }
    get onDragStart() {
      return html.Element.dragStartEvent[_forElementList](this);
    }
    get onDrop() {
      return html.Element.dropEvent[_forElementList](this);
    }
    get onDurationChange() {
      return html.Element.durationChangeEvent[_forElementList](this);
    }
    get onEmptied() {
      return html.Element.emptiedEvent[_forElementList](this);
    }
    get onEnded() {
      return html.Element.endedEvent[_forElementList](this);
    }
    get onError() {
      return html.Element.errorEvent[_forElementList](this);
    }
    get onFocus() {
      return html.Element.focusEvent[_forElementList](this);
    }
    get onInput() {
      return html.Element.inputEvent[_forElementList](this);
    }
    get onInvalid() {
      return html.Element.invalidEvent[_forElementList](this);
    }
    get onKeyDown() {
      return html.Element.keyDownEvent[_forElementList](this);
    }
    get onKeyPress() {
      return html.Element.keyPressEvent[_forElementList](this);
    }
    get onKeyUp() {
      return html.Element.keyUpEvent[_forElementList](this);
    }
    get onLoad() {
      return html.Element.loadEvent[_forElementList](this);
    }
    get onLoadedData() {
      return html.Element.loadedDataEvent[_forElementList](this);
    }
    get onLoadedMetadata() {
      return html.Element.loadedMetadataEvent[_forElementList](this);
    }
    get onMouseDown() {
      return html.Element.mouseDownEvent[_forElementList](this);
    }
    get onMouseEnter() {
      return html.Element.mouseEnterEvent[_forElementList](this);
    }
    get onMouseLeave() {
      return html.Element.mouseLeaveEvent[_forElementList](this);
    }
    get onMouseMove() {
      return html.Element.mouseMoveEvent[_forElementList](this);
    }
    get onMouseOut() {
      return html.Element.mouseOutEvent[_forElementList](this);
    }
    get onMouseOver() {
      return html.Element.mouseOverEvent[_forElementList](this);
    }
    get onMouseUp() {
      return html.Element.mouseUpEvent[_forElementList](this);
    }
    get onMouseWheel() {
      return html.Element.mouseWheelEvent[_forElementList](this);
    }
    get onPaste() {
      return html.Element.pasteEvent[_forElementList](this);
    }
    get onPause() {
      return html.Element.pauseEvent[_forElementList](this);
    }
    get onPlay() {
      return html.Element.playEvent[_forElementList](this);
    }
    get onPlaying() {
      return html.Element.playingEvent[_forElementList](this);
    }
    get onRateChange() {
      return html.Element.rateChangeEvent[_forElementList](this);
    }
    get onReset() {
      return html.Element.resetEvent[_forElementList](this);
    }
    get onResize() {
      return html.Element.resizeEvent[_forElementList](this);
    }
    get onScroll() {
      return html.Element.scrollEvent[_forElementList](this);
    }
    get onSearch() {
      return html.Element.searchEvent[_forElementList](this);
    }
    get onSeeked() {
      return html.Element.seekedEvent[_forElementList](this);
    }
    get onSeeking() {
      return html.Element.seekingEvent[_forElementList](this);
    }
    get onSelect() {
      return html.Element.selectEvent[_forElementList](this);
    }
    get onSelectStart() {
      return html.Element.selectStartEvent[_forElementList](this);
    }
    get onStalled() {
      return html.Element.stalledEvent[_forElementList](this);
    }
    get onSubmit() {
      return html.Element.submitEvent[_forElementList](this);
    }
    get onSuspend() {
      return html.Element.suspendEvent[_forElementList](this);
    }
    get onTimeUpdate() {
      return html.Element.timeUpdateEvent[_forElementList](this);
    }
    get onTouchCancel() {
      return html.Element.touchCancelEvent[_forElementList](this);
    }
    get onTouchEnd() {
      return html.Element.touchEndEvent[_forElementList](this);
    }
    get onTouchEnter() {
      return html.Element.touchEnterEvent[_forElementList](this);
    }
    get onTouchLeave() {
      return html.Element.touchLeaveEvent[_forElementList](this);
    }
    get onTouchMove() {
      return html.Element.touchMoveEvent[_forElementList](this);
    }
    get onTouchStart() {
      return html.Element.touchStartEvent[_forElementList](this);
    }
    get onTransitionEnd() {
      return html.Element.transitionEndEvent[_forElementList](this);
    }
    get onVolumeChange() {
      return html.Element.volumeChangeEvent[_forElementList](this);
    }
    get onWaiting() {
      return html.Element.waitingEvent[_forElementList](this);
    }
    get onFullscreenChange() {
      return html.Element.fullscreenChangeEvent[_forElementList](this);
    }
    get onFullscreenError() {
      return html.Element.fullscreenErrorEvent[_forElementList](this);
    }
  }
  dart.defineNamedConstructor(_FrozenElementList, '_wrap');
  _FrozenElementList[dart.implements] = () => [ElementListOfE(), html_common.NodeListWrapper];
  dart.setSignature(_FrozenElementList, {
    constructors: () => ({_wrap: dart.definiteFunctionType(html._FrozenElementList$(E), [ListOfNode()])}),
    fields: () => ({[_nodeList]: ListOfNode()}),
    getters: () => ({
      length: dart.definiteFunctionType(core.int, []),
      first: dart.definiteFunctionType(E, []),
      last: dart.definiteFunctionType(E, []),
      single: dart.definiteFunctionType(E, []),
      classes: dart.definiteFunctionType(html.CssClassSet, []),
      style: dart.definiteFunctionType(html.CssStyleDeclarationBase, []),
      contentEdge: dart.definiteFunctionType(html.CssRect, []),
      paddingEdge: dart.definiteFunctionType(html.CssRect, []),
      borderEdge: dart.definiteFunctionType(html.CssRect, []),
      marginEdge: dart.definiteFunctionType(html.CssRect, []),
      rawList: dart.definiteFunctionType(core.List$(html.Node), []),
      onAbort: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onBeforeCopy: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onBeforeCut: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onBeforePaste: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onBlur: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onCanPlay: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onCanPlayThrough: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onChange: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onClick: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onContextMenu: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onCopy: dart.definiteFunctionType(html.ElementStream$(html.ClipboardEvent), []),
      onCut: dart.definiteFunctionType(html.ElementStream$(html.ClipboardEvent), []),
      onDoubleClick: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onDrag: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onDragEnd: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onDragEnter: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onDragLeave: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onDragOver: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onDragStart: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onDrop: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onDurationChange: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onEmptied: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onEnded: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onError: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onFocus: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onInput: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onInvalid: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onKeyDown: dart.definiteFunctionType(html.ElementStream$(html.KeyboardEvent), []),
      onKeyPress: dart.definiteFunctionType(html.ElementStream$(html.KeyboardEvent), []),
      onKeyUp: dart.definiteFunctionType(html.ElementStream$(html.KeyboardEvent), []),
      onLoad: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onLoadedData: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onLoadedMetadata: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onMouseDown: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onMouseEnter: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onMouseLeave: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onMouseMove: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onMouseOut: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onMouseOver: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onMouseUp: dart.definiteFunctionType(html.ElementStream$(html.MouseEvent), []),
      onMouseWheel: dart.definiteFunctionType(html.ElementStream$(html.WheelEvent), []),
      onPaste: dart.definiteFunctionType(html.ElementStream$(html.ClipboardEvent), []),
      onPause: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onPlay: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onPlaying: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onRateChange: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onReset: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onResize: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onScroll: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onSearch: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onSeeked: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onSeeking: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onSelect: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onSelectStart: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onStalled: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onSubmit: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onSuspend: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onTimeUpdate: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onTouchCancel: dart.definiteFunctionType(html.ElementStream$(html.TouchEvent), []),
      onTouchEnd: dart.definiteFunctionType(html.ElementStream$(html.TouchEvent), []),
      onTouchEnter: dart.definiteFunctionType(html.ElementStream$(html.TouchEvent), []),
      onTouchLeave: dart.definiteFunctionType(html.ElementStream$(html.TouchEvent), []),
      onTouchMove: dart.definiteFunctionType(html.ElementStream$(html.TouchEvent), []),
      onTouchStart: dart.definiteFunctionType(html.ElementStream$(html.TouchEvent), []),
      onTransitionEnd: dart.definiteFunctionType(html.ElementStream$(html.TransitionEvent), []),
      onVolumeChange: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onWaiting: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onFullscreenChange: dart.definiteFunctionType(html.ElementStream$(html.Event), []),
      onFullscreenError: dart.definiteFunctionType(html.ElementStream$(html.Event), [])
    }),
    setters: () => ({
      length: dart.definiteFunctionType(dart.void, [core.int]),
      classes: dart.definiteFunctionType(dart.void, [IterableOfString()])
    }),
    methods: () => ({
      _get: dart.definiteFunctionType(E, [core.int]),
      _set: dart.definiteFunctionType(dart.void, [core.int, E]),
      sort: dart.definiteFunctionType(dart.void, [], [ComparatorOfE()])
    })
  });
  dart.defineExtensionMembers(_FrozenElementList, [
    '_get',
    '_set',
    'sort',
    'shuffle',
    'length',
    'length',
    'first',
    'last',
    'single'
  ]);
  return _FrozenElementList;
});
html._FrozenElementList = _FrozenElementList();
html._ElementFactoryProvider = class _ElementFactoryProvider extends core.Object {
  static createElement_tag(tag, typeExtension) {
    if (typeExtension != null) {
      return document.createElement(tag, typeExtension);
    }
    return document.createElement(tag);
  }
};
dart.setSignature(html._ElementFactoryProvider, {
  statics: () => ({createElement_tag: dart.definiteFunctionType(dart.dynamic, [core.String, core.String])}),
  names: ['createElement_tag']
});
const _value = Symbol('_value');
html.ScrollAlignment = class ScrollAlignment extends core.Object {
  _internal(value) {
    this[_value] = value;
  }
  toString() {
    return dart.str`ScrollAlignment.${this[_value]}`;
  }
};
dart.defineNamedConstructor(html.ScrollAlignment, '_internal');
dart.setSignature(html.ScrollAlignment, {
  constructors: () => ({_internal: dart.definiteFunctionType(html.ScrollAlignment, [dart.dynamic])}),
  fields: () => ({[_value]: dart.dynamic}),
  sfields: () => ({
    TOP: html.ScrollAlignment,
    CENTER: html.ScrollAlignment,
    BOTTOM: html.ScrollAlignment
  })
});
dart.defineLazy(html.ScrollAlignment, {
  get TOP() {
    return dart.const(new html.ScrollAlignment._internal('TOP'));
  },
  get CENTER() {
    return dart.const(new html.ScrollAlignment._internal('CENTER'));
  },
  get BOTTOM() {
    return dart.const(new html.ScrollAlignment._internal('BOTTOM'));
  }
});
const __setter__ = Symbol('__setter__');
dart.defineExtensionNames([
  'height',
  'name',
  'src',
  'type',
  'width'
]);
html.EmbedElement = class EmbedElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.EmbedElement._check(html.document[dartx.createElement]("embed"));
  }
  created() {
    this[dartx.height] = null;
    this[dartx.name] = null;
    this[dartx.src] = null;
    this[dartx.type] = null;
    this[dartx.width] = null;
    super.created();
  }
  static get supported() {
    return html.Element.isTagSupported('embed');
  }
  get [dartx.height]() {
    return this.height;
  }
  set [dartx.height](value) {
    this.height = value;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.src]() {
    return this.src;
  }
  set [dartx.src](value) {
    this.src = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
  get [dartx.width]() {
    return this.width;
  }
  set [dartx.width](value) {
    this.width = value;
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
};
dart.defineNamedConstructor(html.EmbedElement, 'created');
dart.setSignature(html.EmbedElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.EmbedElement, []),
    new: dart.definiteFunctionType(html.EmbedElement, []),
    created: dart.definiteFunctionType(html.EmbedElement, [])
  }),
  fields: () => ({
    [dartx.height]: core.String,
    [dartx.name]: core.String,
    [dartx.src]: core.String,
    [dartx.type]: core.String,
    [dartx.width]: core.String
  }),
  methods: () => ({
    [__getter__]: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    [__setter__]: dart.definiteFunctionType(dart.void, [dart.dynamic, html.Node])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.HTMLEmbedElement, html.EmbedElement);
html._EntriesCallback = dart.typedef('_EntriesCallback', () => dart.functionType(dart.void, [ListOfEntry()]));
html._EntryCallback = dart.typedef('_EntryCallback', () => dart.functionType(dart.void, [html.Entry]));
html._ErrorCallback = dart.typedef('_ErrorCallback', () => dart.functionType(dart.void, [html.FileError]));
dart.defineExtensionNames([
  'colno',
  'error',
  'filename',
  'lineno',
  'message'
]);
html.ErrorEvent = class ErrorEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.ErrorEvent._create_1(type, eventInitDict_1);
    }
    return html.ErrorEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new ErrorEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new ErrorEvent(type);
  }
  get [dartx.colno]() {
    return this.colno;
  }
  get [dartx.error]() {
    return this.error;
  }
  get [dartx.filename]() {
    return this.filename;
  }
  get [dartx.lineno]() {
    return this.lineno;
  }
  get [dartx.message]() {
    return this.message;
  }
};
dart.setSignature(html.ErrorEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ErrorEvent, []),
    new: dart.definiteFunctionType(html.ErrorEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.colno]: core.int,
    [dartx.error]: core.Object,
    [dartx.filename]: core.String,
    [dartx.lineno]: core.int,
    [dartx.message]: core.String
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.ErrorEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.ErrorEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.ErrorEvent, html.ErrorEvent);
dart.defineExtensionNames([
  'close',
  'onError',
  'onMessage',
  'onOpen',
  'readyState',
  'url',
  'withCredentials'
]);
html.EventSource = class EventSource extends html.EventTarget {
  static new(url, opts) {
    let withCredentials = opts && 'withCredentials' in opts ? opts.withCredentials : false;
    let parsedOptions = dart.map({withCredentials: withCredentials}, core.String, dart.dynamic);
    return html.EventSource._factoryEventSource(url, parsedOptions);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static _factoryEventSource(url, eventSourceInitDict) {
    if (eventSourceInitDict === void 0) eventSourceInitDict = null;
    if (eventSourceInitDict != null) {
      let eventSourceInitDict_1 = html_common.convertDartToNative_Dictionary(eventSourceInitDict);
      return html.EventSource._create_1(url, eventSourceInitDict_1);
    }
    return html.EventSource._create_2(url);
  }
  static _create_1(url, eventSourceInitDict) {
    return new EventSource(url, eventSourceInitDict);
  }
  static _create_2(url) {
    return new EventSource(url);
  }
  get [dartx.readyState]() {
    return this.readyState;
  }
  get [dartx.url]() {
    return this.url;
  }
  get [dartx.withCredentials]() {
    return this.withCredentials;
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  get [dartx.onError]() {
    return html.EventSource.errorEvent.forTarget(this);
  }
  get [dartx.onMessage]() {
    return html.EventSource.messageEvent.forTarget(this);
  }
  get [dartx.onOpen]() {
    return html.EventSource.openEvent.forTarget(this);
  }
};
dart.setSignature(html.EventSource, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.EventSource, [core.String], {withCredentials: dart.dynamic}),
    _: dart.definiteFunctionType(html.EventSource, [])
  }),
  fields: () => ({
    [dartx.readyState]: core.int,
    [dartx.url]: core.String,
    [dartx.withCredentials]: core.bool
  }),
  getters: () => ({
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), []),
    [dartx.onOpen]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  methods: () => ({[dartx.close]: dart.definiteFunctionType(dart.void, [])}),
  sfields: () => ({
    errorEvent: EventStreamProviderOfEvent(),
    messageEvent: EventStreamProviderOfMessageEvent(),
    openEvent: EventStreamProviderOfEvent(),
    CLOSED: core.int,
    CONNECTING: core.int,
    OPEN: core.int
  }),
  statics: () => ({
    _factoryEventSource: dart.definiteFunctionType(html.EventSource, [core.String], [core.Map]),
    _create_1: dart.definiteFunctionType(html.EventSource, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.EventSource, [dart.dynamic])
  }),
  names: ['_factoryEventSource', '_create_1', '_create_2']
});
html.EventSource.CLOSED = 2;
html.EventSource.CONNECTING = 0;
html.EventSource.OPEN = 1;
dart.defineLazy(html.EventSource, {
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  },
  get openEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('open'));
  }
});
dart.registerExtension(dart.global.EventSource, html.EventSource);
const _ptr = Symbol('_ptr');
html.Events = class Events extends core.Object {
  new(ptr) {
    this[_ptr] = ptr;
  }
  _get(type) {
    return new (_EventStreamOfEvent())(this[_ptr], type, false);
  }
};
dart.setSignature(html.Events, {
  constructors: () => ({new: dart.definiteFunctionType(html.Events, [html.EventTarget])}),
  fields: () => ({[_ptr]: html.EventTarget}),
  methods: () => ({_get: dart.definiteFunctionType(async.Stream, [core.String])})
});
html.ElementEvents = class ElementEvents extends html.Events {
  new(ptr) {
    super.new(ptr);
  }
  _get(type) {
    if (dart.test(html.ElementEvents.webkitEvents[dartx.keys][dartx.contains](type[dartx.toLowerCase]()))) {
      if (dart.test(html_common.Device.isWebKit)) {
        return new (_ElementEventStreamImplOfEvent())(this[_ptr], html.ElementEvents.webkitEvents[dartx._get](type[dartx.toLowerCase]()), false);
      }
    }
    return new (_ElementEventStreamImplOfEvent())(this[_ptr], type, false);
  }
};
dart.setSignature(html.ElementEvents, {
  constructors: () => ({new: dart.definiteFunctionType(html.ElementEvents, [html.Element])}),
  sfields: () => ({webkitEvents: MapOfString$String()})
});
dart.defineLazy(html.ElementEvents, {
  get webkitEvents() {
    return dart.map({animationend: 'webkitAnimationEnd', animationiteration: 'webkitAnimationIteration', animationstart: 'webkitAnimationStart', fullscreenchange: 'webkitfullscreenchange', fullscreenerror: 'webkitfullscreenerror', keyadded: 'webkitkeyadded', keyerror: 'webkitkeyerror', keymessage: 'webkitkeymessage', needkey: 'webkitneedkey', pointerlockchange: 'webkitpointerlockchange', pointerlockerror: 'webkitpointerlockerror', resourcetimingbufferfull: 'webkitresourcetimingbufferfull', transitionend: 'webkitTransitionEnd', speechchange: 'webkitSpeechChange'}, core.String, core.String);
  }
});
dart.defineExtensionNames([
  'waitUntil'
]);
html.ExtendableEvent = class ExtendableEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.ExtendableEvent._create_1(type, eventInitDict_1);
    }
    return html.ExtendableEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new ExtendableEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new ExtendableEvent(type);
  }
  [dartx.waitUntil](...args) {
    return this.waitUntil.apply(this, args);
  }
};
dart.setSignature(html.ExtendableEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ExtendableEvent, []),
    new: dart.definiteFunctionType(html.ExtendableEvent, [core.String], [core.Map])
  }),
  methods: () => ({[dartx.waitUntil]: dart.definiteFunctionType(dart.void, [core.Object])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.ExtendableEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.ExtendableEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.ExtendableEvent, html.ExtendableEvent);
dart.defineExtensionNames([
  'protocol',
  'provider'
]);
html.FederatedCredential = class FederatedCredential extends html.Credential {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(data) {
    let data_1 = html_common.convertDartToNative_Dictionary(data);
    return html.FederatedCredential._create_1(data_1);
  }
  static _create_1(data) {
    return new FederatedCredential(data);
  }
  get [dartx.protocol]() {
    return this.protocol;
  }
  get [dartx.provider]() {
    return this.provider;
  }
};
dart.setSignature(html.FederatedCredential, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.FederatedCredential, []),
    new: dart.definiteFunctionType(html.FederatedCredential, [core.Map])
  }),
  fields: () => ({
    [dartx.protocol]: core.String,
    [dartx.provider]: core.String
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.FederatedCredential, [dart.dynamic])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.FederatedCredential, html.FederatedCredential);
dart.defineExtensionNames([
  'respondWith',
  'isReload',
  'request'
]);
html.FetchEvent = class FetchEvent extends html.ExtendableEvent {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.FetchEvent._create_1(type, eventInitDict_1);
    }
    return html.FetchEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new FetchEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new FetchEvent(type);
  }
  get [dartx.isReload]() {
    return this.isReload;
  }
  get [dartx.request]() {
    return this.request;
  }
  [dartx.respondWith](...args) {
    return this.respondWith.apply(this, args);
  }
};
dart.setSignature(html.FetchEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.FetchEvent, []),
    new: dart.definiteFunctionType(html.FetchEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.isReload]: core.bool,
    [dartx.request]: html._Request
  }),
  methods: () => ({[dartx.respondWith]: dart.definiteFunctionType(dart.void, [core.Object])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.FetchEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.FetchEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.FetchEvent, html.FetchEvent);
dart.defineExtensionNames([
  'checkValidity',
  'reportValidity',
  'setCustomValidity',
  'disabled',
  'elements',
  'form',
  'name',
  'type',
  'validationMessage',
  'validity',
  'willValidate'
]);
html.FieldSetElement = class FieldSetElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.FieldSetElement._check(html.document[dartx.createElement]("fieldset"));
  }
  created() {
    this[dartx.disabled] = null;
    this[dartx.elements] = null;
    this[dartx.form] = null;
    this[dartx.name] = null;
    this[dartx.type] = null;
    this[dartx.validationMessage] = null;
    this[dartx.validity] = null;
    this[dartx.willValidate] = null;
    super.created();
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.elements]() {
    return this.elements;
  }
  get [dartx.form]() {
    return this.form;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  get [dartx.validationMessage]() {
    return this.validationMessage;
  }
  get [dartx.validity]() {
    return this.validity;
  }
  get [dartx.willValidate]() {
    return this.willValidate;
  }
  [dartx.checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [dartx.reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [dartx.setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
};
dart.defineNamedConstructor(html.FieldSetElement, 'created');
dart.setSignature(html.FieldSetElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.FieldSetElement, []),
    new: dart.definiteFunctionType(html.FieldSetElement, []),
    created: dart.definiteFunctionType(html.FieldSetElement, [])
  }),
  fields: () => ({
    [dartx.disabled]: core.bool,
    [dartx.elements]: html.HtmlFormControlsCollection,
    [dartx.form]: html.FormElement,
    [dartx.name]: core.String,
    [dartx.type]: core.String,
    [dartx.validationMessage]: core.String,
    [dartx.validity]: html.ValidityState,
    [dartx.willValidate]: core.bool
  }),
  methods: () => ({
    [dartx.checkValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.reportValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.setCustomValidity]: dart.definiteFunctionType(dart.void, [core.String])
  })
});
dart.registerExtension(dart.global.HTMLFieldSetElement, html.FieldSetElement);
const _get_lastModifiedDate = Symbol('_get_lastModifiedDate');
dart.defineExtensionNames([
  'lastModifiedDate',
  'lastModified',
  'name',
  'relativePath'
]);
html.File = class File extends html.Blob {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(fileBits, fileName, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return html.File._create_1(fileBits, fileName, options_1);
    }
    return html.File._create_2(fileBits, fileName);
  }
  static _create_1(fileBits, fileName, options) {
    return new File(fileBits, fileName, options);
  }
  static _create_2(fileBits, fileName) {
    return new File(fileBits, fileName);
  }
  get [dartx.lastModified]() {
    return this.lastModified;
  }
  get [dartx.lastModifiedDate]() {
    return html_common.convertNativeToDart_DateTime(this[_get_lastModifiedDate]);
  }
  get [_get_lastModifiedDate]() {
    return this.lastModifiedDate;
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.relativePath]() {
    return this.webkitRelativePath;
  }
};
dart.setSignature(html.File, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.File, []),
    new: dart.definiteFunctionType(html.File, [ListOfObject(), core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.lastModified]: core.int,
    [_get_lastModifiedDate]: dart.dynamic,
    [dartx.name]: core.String,
    [dartx.relativePath]: core.String
  }),
  getters: () => ({[dartx.lastModifiedDate]: dart.definiteFunctionType(core.DateTime, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.File, [dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.File, [dart.dynamic, dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.File, html.File);
html._FileCallback = dart.typedef('_FileCallback', () => dart.functionType(dart.void, [html.File]));
const _createWriter = Symbol('_createWriter');
const _file = Symbol('_file');
dart.defineExtensionNames([
  'createWriter',
  'file'
]);
html.FileEntry = class FileEntry extends html.Entry {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [_createWriter](...args) {
    return this.createWriter.apply(this, args);
  }
  [dartx.createWriter]() {
    let completer = CompleterOfFileWriter().new();
    this[_createWriter](dart.fn(value => {
      completer.complete(value);
    }, FileWriterTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, FileErrorTovoid()));
    return completer.future;
  }
  [_file](...args) {
    return this.file.apply(this, args);
  }
  [dartx.file]() {
    let completer = CompleterOfFile().new();
    this[_file](dart.fn(value => {
      completer.complete(value);
    }, FileTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, FileErrorTovoid()));
    return completer.future;
  }
};
dart.setSignature(html.FileEntry, {
  constructors: () => ({_: dart.definiteFunctionType(html.FileEntry, [])}),
  methods: () => ({
    [_createWriter]: dart.definiteFunctionType(dart.void, [html._FileWriterCallback], [html._ErrorCallback]),
    [dartx.createWriter]: dart.definiteFunctionType(async.Future$(html.FileWriter), []),
    [_file]: dart.definiteFunctionType(dart.void, [html._FileCallback], [html._ErrorCallback]),
    [dartx.file]: dart.definiteFunctionType(async.Future$(html.File), [])
  })
});
dart.registerExtension(dart.global.FileEntry, html.FileEntry);
dart.defineExtensionNames([
  'code'
]);
html.FileError = class FileError extends html.DomError {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.code]() {
    return this.code;
  }
};
dart.setSignature(html.FileError, {
  constructors: () => ({_: dart.definiteFunctionType(html.FileError, [])}),
  fields: () => ({[dartx.code]: core.int}),
  sfields: () => ({
    ABORT_ERR: core.int,
    ENCODING_ERR: core.int,
    INVALID_MODIFICATION_ERR: core.int,
    INVALID_STATE_ERR: core.int,
    NOT_FOUND_ERR: core.int,
    NOT_READABLE_ERR: core.int,
    NO_MODIFICATION_ALLOWED_ERR: core.int,
    PATH_EXISTS_ERR: core.int,
    QUOTA_EXCEEDED_ERR: core.int,
    SECURITY_ERR: core.int,
    SYNTAX_ERR: core.int,
    TYPE_MISMATCH_ERR: core.int
  })
});
html.FileError.ABORT_ERR = 3;
html.FileError.ENCODING_ERR = 5;
html.FileError.INVALID_MODIFICATION_ERR = 9;
html.FileError.INVALID_STATE_ERR = 7;
html.FileError.NOT_FOUND_ERR = 1;
html.FileError.NOT_READABLE_ERR = 4;
html.FileError.NO_MODIFICATION_ALLOWED_ERR = 6;
html.FileError.PATH_EXISTS_ERR = 12;
html.FileError.QUOTA_EXCEEDED_ERR = 10;
html.FileError.SECURITY_ERR = 2;
html.FileError.SYNTAX_ERR = 8;
html.FileError.TYPE_MISMATCH_ERR = 11;
dart.registerExtension(dart.global.FileError, html.FileError);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item'
]);
html.FileList = class FileList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.File), html.ImmutableListMixin$(html.File)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
html.FileList[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfFile()];
dart.setSignature(html.FileList, {
  constructors: () => ({_: dart.definiteFunctionType(html.FileList, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.File, []),
    [dartx.last]: dart.definiteFunctionType(html.File, []),
    [dartx.single]: dart.definiteFunctionType(html.File, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.File, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.File]),
    [dartx.elementAt]: dart.definiteFunctionType(html.File, [core.int]),
    [dartx.item]: dart.definiteFunctionType(html.File, [core.int])
  })
});
dart.registerExtension(dart.global.FileList, html.FileList);
dart.defineExtensionNames([
  'result',
  'abort',
  'readAsArrayBuffer',
  'readAsDataUrl',
  'readAsText',
  'onAbort',
  'onError',
  'onLoad',
  'onLoadEnd',
  'onLoadStart',
  'onProgress',
  'error',
  'readyState'
]);
html.FileReader = class FileReader extends html.EventTarget {
  get [dartx.result]() {
    let res = this.result;
    if (typed_data.ByteBuffer.is(res)) {
      return typed_data.Uint8List.view(res);
    }
    return res;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.FileReader._create_1();
  }
  static _create_1() {
    return new FileReader();
  }
  get [dartx.error]() {
    return this.error;
  }
  get [dartx.readyState]() {
    return this.readyState;
  }
  [dartx.abort](...args) {
    return this.abort.apply(this, args);
  }
  [dartx.readAsArrayBuffer](...args) {
    return this.readAsArrayBuffer.apply(this, args);
  }
  [dartx.readAsDataUrl](...args) {
    return this.readAsDataURL.apply(this, args);
  }
  [dartx.readAsText](...args) {
    return this.readAsText.apply(this, args);
  }
  get [dartx.onAbort]() {
    return html.FileReader.abortEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return html.FileReader.errorEvent.forTarget(this);
  }
  get [dartx.onLoad]() {
    return html.FileReader.loadEvent.forTarget(this);
  }
  get [dartx.onLoadEnd]() {
    return html.FileReader.loadEndEvent.forTarget(this);
  }
  get [dartx.onLoadStart]() {
    return html.FileReader.loadStartEvent.forTarget(this);
  }
  get [dartx.onProgress]() {
    return html.FileReader.progressEvent.forTarget(this);
  }
};
dart.setSignature(html.FileReader, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.FileReader, []),
    new: dart.definiteFunctionType(html.FileReader, [])
  }),
  fields: () => ({
    [dartx.error]: html.FileError,
    [dartx.readyState]: core.int
  }),
  getters: () => ({
    [dartx.result]: dart.definiteFunctionType(core.Object, []),
    [dartx.onAbort]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onLoad]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onLoadEnd]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onLoadStart]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onProgress]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), [])
  }),
  methods: () => ({
    [dartx.abort]: dart.definiteFunctionType(dart.void, []),
    [dartx.readAsArrayBuffer]: dart.definiteFunctionType(dart.void, [html.Blob]),
    [dartx.readAsDataUrl]: dart.definiteFunctionType(dart.void, [html.Blob]),
    [dartx.readAsText]: dart.definiteFunctionType(dart.void, [html.Blob], [core.String])
  }),
  sfields: () => ({
    abortEvent: EventStreamProviderOfProgressEvent(),
    errorEvent: EventStreamProviderOfEvent(),
    loadEvent: EventStreamProviderOfProgressEvent(),
    loadEndEvent: EventStreamProviderOfProgressEvent(),
    loadStartEvent: EventStreamProviderOfProgressEvent(),
    progressEvent: EventStreamProviderOfProgressEvent(),
    DONE: core.int,
    EMPTY: core.int,
    LOADING: core.int
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.FileReader, [])}),
  names: ['_create_1']
});
html.FileReader.DONE = 2;
html.FileReader.EMPTY = 0;
html.FileReader.LOADING = 1;
dart.defineLazy(html.FileReader, {
  get abortEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('abort'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get loadEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('load'));
  },
  get loadEndEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('loadend'));
  },
  get loadStartEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('loadstart'));
  },
  get progressEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('progress'));
  }
});
dart.registerExtension(dart.global.FileReader, html.FileReader);
dart.defineExtensionNames([
  'type'
]);
html.FileStream = class FileStream extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.type]() {
    return this.type;
  }
};
dart.setSignature(html.FileStream, {
  constructors: () => ({_: dart.definiteFunctionType(html.FileStream, [])}),
  fields: () => ({[dartx.type]: core.String})
});
dart.registerExtension(dart.global.Stream, html.FileStream);
dart.defineExtensionNames([
  'name',
  'root'
]);
html.FileSystem = class FileSystem extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static get supported() {
    return !!window.webkitRequestFileSystem;
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.root]() {
    return this.root;
  }
};
dart.setSignature(html.FileSystem, {
  constructors: () => ({_: dart.definiteFunctionType(html.FileSystem, [])}),
  fields: () => ({
    [dartx.name]: core.String,
    [dartx.root]: html.DirectoryEntry
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.DOMFileSystem, html.FileSystem);
html._FileSystemCallback = dart.typedef('_FileSystemCallback', () => dart.functionType(dart.void, [html.FileSystem]));
dart.defineExtensionNames([
  'abort',
  'seek',
  'truncate',
  'write',
  'onAbort',
  'onError',
  'onProgress',
  'onWrite',
  'onWriteEnd',
  'onWriteStart',
  'error',
  'length',
  'position',
  'readyState'
]);
html.FileWriter = class FileWriter extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.error]() {
    return this.error;
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.position]() {
    return this.position;
  }
  get [dartx.readyState]() {
    return this.readyState;
  }
  [dartx.abort](...args) {
    return this.abort.apply(this, args);
  }
  [dartx.seek](...args) {
    return this.seek.apply(this, args);
  }
  [dartx.truncate](...args) {
    return this.truncate.apply(this, args);
  }
  [dartx.write](...args) {
    return this.write.apply(this, args);
  }
  get [dartx.onAbort]() {
    return html.FileWriter.abortEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return html.FileWriter.errorEvent.forTarget(this);
  }
  get [dartx.onProgress]() {
    return html.FileWriter.progressEvent.forTarget(this);
  }
  get [dartx.onWrite]() {
    return html.FileWriter.writeEvent.forTarget(this);
  }
  get [dartx.onWriteEnd]() {
    return html.FileWriter.writeEndEvent.forTarget(this);
  }
  get [dartx.onWriteStart]() {
    return html.FileWriter.writeStartEvent.forTarget(this);
  }
};
dart.setSignature(html.FileWriter, {
  constructors: () => ({_: dart.definiteFunctionType(html.FileWriter, [])}),
  fields: () => ({
    [dartx.error]: html.FileError,
    [dartx.length]: core.int,
    [dartx.position]: core.int,
    [dartx.readyState]: core.int
  }),
  getters: () => ({
    [dartx.onAbort]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onProgress]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onWrite]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onWriteEnd]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onWriteStart]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), [])
  }),
  methods: () => ({
    [dartx.abort]: dart.definiteFunctionType(dart.void, []),
    [dartx.seek]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.truncate]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.write]: dart.definiteFunctionType(dart.void, [html.Blob])
  }),
  sfields: () => ({
    abortEvent: EventStreamProviderOfProgressEvent(),
    errorEvent: EventStreamProviderOfEvent(),
    progressEvent: EventStreamProviderOfProgressEvent(),
    writeEvent: EventStreamProviderOfProgressEvent(),
    writeEndEvent: EventStreamProviderOfProgressEvent(),
    writeStartEvent: EventStreamProviderOfProgressEvent(),
    DONE: core.int,
    INIT: core.int,
    WRITING: core.int
  })
});
html.FileWriter.DONE = 2;
html.FileWriter.INIT = 0;
html.FileWriter.WRITING = 1;
dart.defineLazy(html.FileWriter, {
  get abortEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('abort'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get progressEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('progress'));
  },
  get writeEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('write'));
  },
  get writeEndEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('writeend'));
  },
  get writeStartEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('writestart'));
  }
});
dart.registerExtension(dart.global.FileWriter, html.FileWriter);
html._FileWriterCallback = dart.typedef('_FileWriterCallback', () => dart.functionType(dart.void, [html.FileWriter]));
const _get_relatedTarget = Symbol('_get_relatedTarget');
dart.defineExtensionNames([
  'relatedTarget'
]);
html.FocusEvent = class FocusEvent extends html.UIEvent {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.FocusEvent._create_1(type, eventInitDict_1);
    }
    return html.FocusEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new FocusEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new FocusEvent(type);
  }
  get [dartx.relatedTarget]() {
    return html._convertNativeToDart_EventTarget(this[_get_relatedTarget]);
  }
  get [_get_relatedTarget]() {
    return this.relatedTarget;
  }
};
dart.setSignature(html.FocusEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.FocusEvent, []),
    new: dart.definiteFunctionType(html.FocusEvent, [core.String], [core.Map])
  }),
  fields: () => ({[_get_relatedTarget]: dart.dynamic}),
  getters: () => ({[dartx.relatedTarget]: dart.definiteFunctionType(html.EventTarget, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.FocusEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.FocusEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.FocusEvent, html.FocusEvent);
dart.defineExtensionNames([
  'load',
  'family',
  'featureSettings',
  'loaded',
  'status',
  'stretch',
  'style',
  'unicodeRange',
  'variant',
  'weight'
]);
html.FontFace = class FontFace extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(family, source, descriptors) {
    if (descriptors === void 0) descriptors = null;
    if (descriptors != null) {
      let descriptors_1 = html_common.convertDartToNative_Dictionary(descriptors);
      return html.FontFace._create_1(family, source, descriptors_1);
    }
    return html.FontFace._create_2(family, source);
  }
  static _create_1(family, source, descriptors) {
    return new FontFace(family, source, descriptors);
  }
  static _create_2(family, source) {
    return new FontFace(family, source);
  }
  get [dartx.family]() {
    return this.family;
  }
  set [dartx.family](value) {
    this.family = value;
  }
  get [dartx.featureSettings]() {
    return this.featureSettings;
  }
  set [dartx.featureSettings](value) {
    this.featureSettings = value;
  }
  get [dartx.loaded]() {
    return this.loaded;
  }
  get [dartx.status]() {
    return this.status;
  }
  get [dartx.stretch]() {
    return this.stretch;
  }
  set [dartx.stretch](value) {
    this.stretch = value;
  }
  get [dartx.style]() {
    return this.style;
  }
  set [dartx.style](value) {
    this.style = value;
  }
  get [dartx.unicodeRange]() {
    return this.unicodeRange;
  }
  set [dartx.unicodeRange](value) {
    this.unicodeRange = value;
  }
  get [dartx.variant]() {
    return this.variant;
  }
  set [dartx.variant](value) {
    this.variant = value;
  }
  get [dartx.weight]() {
    return this.weight;
  }
  set [dartx.weight](value) {
    this.weight = value;
  }
  [dartx.load](...args) {
    return this.load.apply(this, args);
  }
};
dart.setSignature(html.FontFace, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.FontFace, []),
    new: dart.definiteFunctionType(html.FontFace, [core.String, core.Object], [core.Map])
  }),
  fields: () => ({
    [dartx.family]: core.String,
    [dartx.featureSettings]: core.String,
    [dartx.loaded]: async.Future,
    [dartx.status]: core.String,
    [dartx.stretch]: core.String,
    [dartx.style]: core.String,
    [dartx.unicodeRange]: core.String,
    [dartx.variant]: core.String,
    [dartx.weight]: core.String
  }),
  methods: () => ({[dartx.load]: dart.definiteFunctionType(async.Future, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.FontFace, [dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.FontFace, [dart.dynamic, dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.FontFace, html.FontFace);
dart.defineExtensionNames([
  'add',
  'check',
  'clear',
  'delete',
  'forEach',
  'has',
  'size',
  'status'
]);
html.FontFaceSet = class FontFaceSet extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.size]() {
    return this.size;
  }
  get [dartx.status]() {
    return this.status;
  }
  [dartx.add](...args) {
    return this.add.apply(this, args);
  }
  [dartx.check](...args) {
    return this.check.apply(this, args);
  }
  [dartx.clear](...args) {
    return this.clear.apply(this, args);
  }
  [dartx.delete](...args) {
    return this.delete.apply(this, args);
  }
  [dartx.forEach](...args) {
    return this.forEach.apply(this, args);
  }
  [dartx.has](...args) {
    return this.has.apply(this, args);
  }
};
dart.setSignature(html.FontFaceSet, {
  constructors: () => ({_: dart.definiteFunctionType(html.FontFaceSet, [])}),
  fields: () => ({
    [dartx.size]: core.int,
    [dartx.status]: core.String
  }),
  methods: () => ({
    [dartx.add]: dart.definiteFunctionType(dart.void, [html.FontFace]),
    [dartx.check]: dart.definiteFunctionType(core.bool, [core.String], [core.String]),
    [dartx.clear]: dart.definiteFunctionType(dart.void, []),
    [dartx.delete]: dart.definiteFunctionType(core.bool, [html.FontFace]),
    [dartx.forEach]: dart.definiteFunctionType(dart.void, [html.FontFaceSetForEachCallback], [core.Object]),
    [dartx.has]: dart.definiteFunctionType(core.bool, [html.FontFace])
  })
});
dart.registerExtension(dart.global.FontFaceSet, html.FontFaceSet);
html.FontFaceSetForEachCallback = dart.typedef('FontFaceSetForEachCallback', () => dart.functionType(dart.void, [html.FontFace, html.FontFace, html.FontFaceSet]));
dart.defineExtensionNames([
  'fontfaces'
]);
html.FontFaceSetLoadEvent = class FontFaceSetLoadEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.fontfaces]() {
    return this.fontfaces;
  }
};
dart.setSignature(html.FontFaceSetLoadEvent, {
  constructors: () => ({_: dart.definiteFunctionType(html.FontFaceSetLoadEvent, [])}),
  fields: () => ({[dartx.fontfaces]: ListOfFontFace()})
});
dart.registerExtension(dart.global.FontFaceSetLoadEvent, html.FontFaceSetLoadEvent);
dart.defineExtensionNames([
  'append',
  'appendBlob',
  'delete',
  'get',
  'getAll',
  'has',
  'set'
]);
html.FormData = class FormData extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(form) {
    if (form === void 0) form = null;
    if (form != null) {
      return html.FormData._create_1(form);
    }
    return html.FormData._create_2();
  }
  static _create_1(form) {
    return new FormData(form);
  }
  static _create_2() {
    return new FormData();
  }
  static get supported() {
    return !!window.FormData;
  }
  [dartx.append](...args) {
    return this.append.apply(this, args);
  }
  [dartx.appendBlob](...args) {
    return this.append.apply(this, args);
  }
  [dartx.delete](...args) {
    return this.delete.apply(this, args);
  }
  [dartx.get](...args) {
    return this.get.apply(this, args);
  }
  [dartx.getAll](...args) {
    return this.getAll.apply(this, args);
  }
  [dartx.has](...args) {
    return this.has.apply(this, args);
  }
  [dartx.set](...args) {
    return this.set.apply(this, args);
  }
};
dart.setSignature(html.FormData, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.FormData, []),
    new: dart.definiteFunctionType(html.FormData, [], [html.FormElement])
  }),
  methods: () => ({
    [dartx.append]: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    [dartx.appendBlob]: dart.definiteFunctionType(dart.void, [core.String, html.Blob], [core.String]),
    [dartx.delete]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.get]: dart.definiteFunctionType(core.Object, [core.String]),
    [dartx.getAll]: dart.definiteFunctionType(core.List$(core.Object), [core.String]),
    [dartx.has]: dart.definiteFunctionType(core.bool, [core.String]),
    [dartx.set]: dart.definiteFunctionType(dart.void, [core.String, dart.dynamic], [core.String])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.FormData, [dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.FormData, [])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.FormData, html.FormData);
const _requestAutocomplete_1 = Symbol('_requestAutocomplete_1');
dart.defineExtensionNames([
  'checkValidity',
  'item',
  'reportValidity',
  'requestAutocomplete',
  'reset',
  'submit',
  'acceptCharset',
  'action',
  'autocomplete',
  'encoding',
  'enctype',
  'length',
  'method',
  'name',
  'noValidate',
  'target'
]);
html.FormElement = class FormElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.FormElement._check(html.document[dartx.createElement]("form"));
  }
  created() {
    this[dartx.acceptCharset] = null;
    this[dartx.action] = null;
    this[dartx.autocomplete] = null;
    this[dartx.encoding] = null;
    this[dartx.enctype] = null;
    this[dartx.length] = null;
    this[dartx.method] = null;
    this[dartx.name] = null;
    this[dartx.noValidate] = null;
    this[dartx.target] = null;
    super.created();
  }
  get [dartx.acceptCharset]() {
    return this.acceptCharset;
  }
  set [dartx.acceptCharset](value) {
    this.acceptCharset = value;
  }
  get [dartx.action]() {
    return this.action;
  }
  set [dartx.action](value) {
    this.action = value;
  }
  get [dartx.autocomplete]() {
    return this.autocomplete;
  }
  set [dartx.autocomplete](value) {
    this.autocomplete = value;
  }
  get [dartx.encoding]() {
    return this.encoding;
  }
  set [dartx.encoding](value) {
    this.encoding = value;
  }
  get [dartx.enctype]() {
    return this.enctype;
  }
  set [dartx.enctype](value) {
    this.enctype = value;
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.method]() {
    return this.method;
  }
  set [dartx.method](value) {
    this.method = value;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.noValidate]() {
    return this.noValidate;
  }
  set [dartx.noValidate](value) {
    this.noValidate = value;
  }
  get [dartx.target]() {
    return this.target;
  }
  set [dartx.target](value) {
    this.target = value;
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [dartx.checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
  [dartx.reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [dartx.requestAutocomplete](details) {
    let details_1 = html_common.convertDartToNative_Dictionary(details);
    this[_requestAutocomplete_1](details_1);
    return;
  }
  [_requestAutocomplete_1](...args) {
    return this.requestAutocomplete.apply(this, args);
  }
  [dartx.reset](...args) {
    return this.reset.apply(this, args);
  }
  [dartx.submit](...args) {
    return this.submit.apply(this, args);
  }
};
dart.defineNamedConstructor(html.FormElement, 'created');
dart.setSignature(html.FormElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.FormElement, []),
    new: dart.definiteFunctionType(html.FormElement, []),
    created: dart.definiteFunctionType(html.FormElement, [])
  }),
  fields: () => ({
    [dartx.acceptCharset]: core.String,
    [dartx.action]: core.String,
    [dartx.autocomplete]: core.String,
    [dartx.encoding]: core.String,
    [dartx.enctype]: core.String,
    [dartx.length]: core.int,
    [dartx.method]: core.String,
    [dartx.name]: core.String,
    [dartx.noValidate]: core.bool,
    [dartx.target]: core.String
  }),
  methods: () => ({
    [__getter__]: dart.definiteFunctionType(core.Object, [core.String]),
    [dartx.checkValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.item]: dart.definiteFunctionType(html.Element, [core.int]),
    [dartx.reportValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.requestAutocomplete]: dart.definiteFunctionType(dart.void, [core.Map]),
    [_requestAutocomplete_1]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [dartx.reset]: dart.definiteFunctionType(dart.void, []),
    [dartx.submit]: dart.definiteFunctionType(dart.void, [])
  })
});
dart.registerExtension(dart.global.HTMLFormElement, html.FormElement);
html.FrameRequestCallback = dart.typedef('FrameRequestCallback', () => dart.functionType(dart.void, [core.num]));
dart.defineExtensionNames([
  'axes',
  'buttons',
  'connected',
  'id',
  'index',
  'mapping',
  'timestamp'
]);
html.Gamepad = class Gamepad extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.axes]() {
    return this.axes;
  }
  get [dartx.buttons]() {
    return this.buttons;
  }
  get [dartx.connected]() {
    return this.connected;
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.index]() {
    return this.index;
  }
  get [dartx.mapping]() {
    return this.mapping;
  }
  get [dartx.timestamp]() {
    return this.timestamp;
  }
};
dart.setSignature(html.Gamepad, {
  constructors: () => ({_: dart.definiteFunctionType(html.Gamepad, [])}),
  fields: () => ({
    [dartx.axes]: ListOfnum(),
    [dartx.buttons]: ListOfGamepadButton(),
    [dartx.connected]: core.bool,
    [dartx.id]: core.String,
    [dartx.index]: core.int,
    [dartx.mapping]: core.String,
    [dartx.timestamp]: core.int
  })
});
dart.registerExtension(dart.global.Gamepad, html.Gamepad);
dart.defineExtensionNames([
  'pressed',
  'value'
]);
html.GamepadButton = class GamepadButton extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.pressed]() {
    return this.pressed;
  }
  get [dartx.value]() {
    return this.value;
  }
};
dart.setSignature(html.GamepadButton, {
  constructors: () => ({_: dart.definiteFunctionType(html.GamepadButton, [])}),
  fields: () => ({
    [dartx.pressed]: core.bool,
    [dartx.value]: core.double
  })
});
dart.registerExtension(dart.global.GamepadButton, html.GamepadButton);
dart.defineExtensionNames([
  'gamepad'
]);
html.GamepadEvent = class GamepadEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.GamepadEvent._create_1(type, eventInitDict_1);
    }
    return html.GamepadEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new GamepadEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new GamepadEvent(type);
  }
  get [dartx.gamepad]() {
    return this.gamepad;
  }
};
dart.setSignature(html.GamepadEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.GamepadEvent, []),
    new: dart.definiteFunctionType(html.GamepadEvent, [core.String], [core.Map])
  }),
  fields: () => ({[dartx.gamepad]: html.Gamepad}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.GamepadEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.GamepadEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.GamepadEvent, html.GamepadEvent);
dart.defineExtensionNames([
  'getRegisteredRegions',
  'registerRegion',
  'unregisterRegion'
]);
html.Geofencing = class Geofencing extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.getRegisteredRegions](...args) {
    return this.getRegisteredRegions.apply(this, args);
  }
  [dartx.registerRegion](...args) {
    return this.registerRegion.apply(this, args);
  }
  [dartx.unregisterRegion](...args) {
    return this.unregisterRegion.apply(this, args);
  }
};
dart.setSignature(html.Geofencing, {
  constructors: () => ({_: dart.definiteFunctionType(html.Geofencing, [])}),
  methods: () => ({
    [dartx.getRegisteredRegions]: dart.definiteFunctionType(async.Future, []),
    [dartx.registerRegion]: dart.definiteFunctionType(async.Future, [html.GeofencingRegion]),
    [dartx.unregisterRegion]: dart.definiteFunctionType(async.Future, [core.String])
  })
});
dart.registerExtension(dart.global.Geofencing, html.Geofencing);
dart.defineExtensionNames([
  'id',
  'region'
]);
html.GeofencingEvent = class GeofencingEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.region]() {
    return this.region;
  }
};
dart.setSignature(html.GeofencingEvent, {
  constructors: () => ({_: dart.definiteFunctionType(html.GeofencingEvent, [])}),
  fields: () => ({
    [dartx.id]: core.String,
    [dartx.region]: html.GeofencingRegion
  })
});
dart.registerExtension(dart.global.GeofencingEvent, html.GeofencingEvent);
const _getCurrentPosition = Symbol('_getCurrentPosition');
const _ensurePosition = Symbol('_ensurePosition');
const _watchPosition = Symbol('_watchPosition');
const _clearWatch = Symbol('_clearWatch');
const _getCurrentPosition_1 = Symbol('_getCurrentPosition_1');
const _getCurrentPosition_2 = Symbol('_getCurrentPosition_2');
const _getCurrentPosition_3 = Symbol('_getCurrentPosition_3');
const _watchPosition_1 = Symbol('_watchPosition_1');
const _watchPosition_2 = Symbol('_watchPosition_2');
const _watchPosition_3 = Symbol('_watchPosition_3');
dart.defineExtensionNames([
  'getCurrentPosition',
  'watchPosition'
]);
html.Geolocation = class Geolocation extends _interceptors.Interceptor {
  [dartx.getCurrentPosition](opts) {
    let enableHighAccuracy = opts && 'enableHighAccuracy' in opts ? opts.enableHighAccuracy : null;
    let timeout = opts && 'timeout' in opts ? opts.timeout : null;
    let maximumAge = opts && 'maximumAge' in opts ? opts.maximumAge : null;
    let options = dart.map();
    if (enableHighAccuracy != null) {
      options[dartx._set]('enableHighAccuracy', enableHighAccuracy);
    }
    if (timeout != null) {
      options[dartx._set]('timeout', timeout.inMilliseconds);
    }
    if (maximumAge != null) {
      options[dartx._set]('maximumAge', maximumAge.inMilliseconds);
    }
    let completer = CompleterOfGeoposition().new();
    try {
      this[_getCurrentPosition](dart.fn(position => {
        completer.complete(this[_ensurePosition](position));
      }, GeopositionTovoid()), dart.fn(error => {
        completer.completeError(error);
      }, PositionErrorTovoid()), options);
    } catch (e) {
      let stacktrace = dart.stackTrace(e);
      completer.completeError(e, stacktrace);
    }

    return completer.future;
  }
  [dartx.watchPosition](opts) {
    let enableHighAccuracy = opts && 'enableHighAccuracy' in opts ? opts.enableHighAccuracy : null;
    let timeout = opts && 'timeout' in opts ? opts.timeout : null;
    let maximumAge = opts && 'maximumAge' in opts ? opts.maximumAge : null;
    let options = dart.map();
    if (enableHighAccuracy != null) {
      options[dartx._set]('enableHighAccuracy', enableHighAccuracy);
    }
    if (timeout != null) {
      options[dartx._set]('timeout', timeout.inMilliseconds);
    }
    if (maximumAge != null) {
      options[dartx._set]('maximumAge', maximumAge.inMilliseconds);
    }
    let watchId = null;
    let controller = null;
    controller = StreamControllerOfGeoposition().new({sync: true, onListen: dart.fn(() => {
        dart.assert(watchId == null);
        watchId = this[_watchPosition](dart.fn(position => {
          controller.add(this[_ensurePosition](position));
        }, GeopositionTovoid()), dart.fn(error => {
          controller.addError(error);
        }, PositionErrorTovoid()), options);
      }, VoidTovoid()), onCancel: dart.fn(() => {
        dart.assert(watchId != null);
        this[_clearWatch](watchId);
      }, VoidTodynamic())});
    return controller.stream;
  }
  [_ensurePosition](domPosition) {
    try {
      if (html.Geoposition.is(domPosition)) {
        return domPosition;
      }
    } catch (e) {
    }

    return new html._GeopositionWrapper(domPosition);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [_clearWatch](...args) {
    return this.clearWatch.apply(this, args);
  }
  [_getCurrentPosition](successCallback, errorCallback, options) {
    if (errorCallback === void 0) errorCallback = null;
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[_getCurrentPosition_1](successCallback, errorCallback, options_1);
      return;
    }
    if (errorCallback != null) {
      this[_getCurrentPosition_2](successCallback, errorCallback);
      return;
    }
    this[_getCurrentPosition_3](successCallback);
    return;
  }
  [_getCurrentPosition_1](...args) {
    return this.getCurrentPosition.apply(this, args);
  }
  [_getCurrentPosition_2](...args) {
    return this.getCurrentPosition.apply(this, args);
  }
  [_getCurrentPosition_3](...args) {
    return this.getCurrentPosition.apply(this, args);
  }
  [_watchPosition](successCallback, errorCallback, options) {
    if (errorCallback === void 0) errorCallback = null;
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_watchPosition_1](successCallback, errorCallback, options_1);
    }
    if (errorCallback != null) {
      return this[_watchPosition_2](successCallback, errorCallback);
    }
    return this[_watchPosition_3](successCallback);
  }
  [_watchPosition_1](...args) {
    return this.watchPosition.apply(this, args);
  }
  [_watchPosition_2](...args) {
    return this.watchPosition.apply(this, args);
  }
  [_watchPosition_3](...args) {
    return this.watchPosition.apply(this, args);
  }
};
dart.setSignature(html.Geolocation, {
  constructors: () => ({_: dart.definiteFunctionType(html.Geolocation, [])}),
  methods: () => ({
    [dartx.getCurrentPosition]: dart.definiteFunctionType(async.Future$(html.Geoposition), [], {enableHighAccuracy: core.bool, timeout: core.Duration, maximumAge: core.Duration}),
    [dartx.watchPosition]: dart.definiteFunctionType(async.Stream$(html.Geoposition), [], {enableHighAccuracy: core.bool, timeout: core.Duration, maximumAge: core.Duration}),
    [_ensurePosition]: dart.definiteFunctionType(html.Geoposition, [dart.dynamic]),
    [_clearWatch]: dart.definiteFunctionType(dart.void, [core.int]),
    [_getCurrentPosition]: dart.definiteFunctionType(dart.void, [html._PositionCallback], [html._PositionErrorCallback, core.Map]),
    [_getCurrentPosition_1]: dart.definiteFunctionType(dart.void, [html._PositionCallback, html._PositionErrorCallback, dart.dynamic]),
    [_getCurrentPosition_2]: dart.definiteFunctionType(dart.void, [html._PositionCallback, html._PositionErrorCallback]),
    [_getCurrentPosition_3]: dart.definiteFunctionType(dart.void, [html._PositionCallback]),
    [_watchPosition]: dart.definiteFunctionType(core.int, [html._PositionCallback], [html._PositionErrorCallback, core.Map]),
    [_watchPosition_1]: dart.definiteFunctionType(core.int, [html._PositionCallback, html._PositionErrorCallback, dart.dynamic]),
    [_watchPosition_2]: dart.definiteFunctionType(core.int, [html._PositionCallback, html._PositionErrorCallback]),
    [_watchPosition_3]: dart.definiteFunctionType(core.int, [html._PositionCallback])
  })
});
dart.registerExtension(dart.global.Geolocation, html.Geolocation);
html._GeopositionWrapper = class _GeopositionWrapper extends core.Object {
  new(ptr) {
    this[_ptr] = ptr;
  }
  get coords() {
    return this[_ptr].coords;
  }
  get timestamp() {
    return this[_ptr].timestamp;
  }
};
html._GeopositionWrapper[dart.implements] = () => [html.Geoposition];
dart.setSignature(html._GeopositionWrapper, {
  constructors: () => ({new: dart.definiteFunctionType(html._GeopositionWrapper, [dart.dynamic])}),
  fields: () => ({[_ptr]: dart.dynamic}),
  getters: () => ({
    coords: dart.definiteFunctionType(html.Coordinates, []),
    timestamp: dart.definiteFunctionType(core.int, [])
  })
});
dart.defineExtensionNames([
  'coords',
  'timestamp'
]);
html.Geoposition = class Geoposition extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.coords]() {
    return this.coords;
  }
  get [dartx.timestamp]() {
    return this.timestamp;
  }
};
dart.setSignature(html.Geoposition, {
  constructors: () => ({_: dart.definiteFunctionType(html.Geoposition, [])}),
  fields: () => ({
    [dartx.coords]: html.Coordinates,
    [dartx.timestamp]: core.int
  })
});
dart.registerExtension(dart.global.Geoposition, html.Geoposition);
dart.defineExtensionNames([
  'onAbort',
  'onBlur',
  'onCanPlay',
  'onCanPlayThrough',
  'onChange',
  'onClick',
  'onContextMenu',
  'onDoubleClick',
  'onDrag',
  'onDragEnd',
  'onDragEnter',
  'onDragLeave',
  'onDragOver',
  'onDragStart',
  'onDrop',
  'onDurationChange',
  'onEmptied',
  'onEnded',
  'onError',
  'onFocus',
  'onInput',
  'onInvalid',
  'onKeyDown',
  'onKeyPress',
  'onKeyUp',
  'onLoad',
  'onLoadedData',
  'onLoadedMetadata',
  'onMouseDown',
  'onMouseEnter',
  'onMouseLeave',
  'onMouseMove',
  'onMouseOut',
  'onMouseOver',
  'onMouseUp',
  'onMouseWheel',
  'onPause',
  'onPlay',
  'onPlaying',
  'onRateChange',
  'onReset',
  'onResize',
  'onScroll',
  'onSeeked',
  'onSeeking',
  'onSelect',
  'onStalled',
  'onSubmit',
  'onSuspend',
  'onTimeUpdate',
  'onVolumeChange',
  'onWaiting'
]);
html.GlobalEventHandlers = class GlobalEventHandlers extends core.Object {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get onAbort() {
    return html.GlobalEventHandlers.abortEvent.forTarget(this);
  }
  get onBlur() {
    return html.GlobalEventHandlers.blurEvent.forTarget(this);
  }
  get onCanPlay() {
    return html.GlobalEventHandlers.canPlayEvent.forTarget(this);
  }
  get onCanPlayThrough() {
    return html.GlobalEventHandlers.canPlayThroughEvent.forTarget(this);
  }
  get onChange() {
    return html.GlobalEventHandlers.changeEvent.forTarget(this);
  }
  get onClick() {
    return html.GlobalEventHandlers.clickEvent.forTarget(this);
  }
  get onContextMenu() {
    return html.GlobalEventHandlers.contextMenuEvent.forTarget(this);
  }
  get onDoubleClick() {
    return html.GlobalEventHandlers.doubleClickEvent.forTarget(this);
  }
  get onDrag() {
    return html.GlobalEventHandlers.dragEvent.forTarget(this);
  }
  get onDragEnd() {
    return html.GlobalEventHandlers.dragEndEvent.forTarget(this);
  }
  get onDragEnter() {
    return html.GlobalEventHandlers.dragEnterEvent.forTarget(this);
  }
  get onDragLeave() {
    return html.GlobalEventHandlers.dragLeaveEvent.forTarget(this);
  }
  get onDragOver() {
    return html.GlobalEventHandlers.dragOverEvent.forTarget(this);
  }
  get onDragStart() {
    return html.GlobalEventHandlers.dragStartEvent.forTarget(this);
  }
  get onDrop() {
    return html.GlobalEventHandlers.dropEvent.forTarget(this);
  }
  get onDurationChange() {
    return html.GlobalEventHandlers.durationChangeEvent.forTarget(this);
  }
  get onEmptied() {
    return html.GlobalEventHandlers.emptiedEvent.forTarget(this);
  }
  get onEnded() {
    return html.GlobalEventHandlers.endedEvent.forTarget(this);
  }
  get onError() {
    return html.GlobalEventHandlers.errorEvent.forTarget(this);
  }
  get onFocus() {
    return html.GlobalEventHandlers.focusEvent.forTarget(this);
  }
  get onInput() {
    return html.GlobalEventHandlers.inputEvent.forTarget(this);
  }
  get onInvalid() {
    return html.GlobalEventHandlers.invalidEvent.forTarget(this);
  }
  get onKeyDown() {
    return html.GlobalEventHandlers.keyDownEvent.forTarget(this);
  }
  get onKeyPress() {
    return html.GlobalEventHandlers.keyPressEvent.forTarget(this);
  }
  get onKeyUp() {
    return html.GlobalEventHandlers.keyUpEvent.forTarget(this);
  }
  get onLoad() {
    return html.GlobalEventHandlers.loadEvent.forTarget(this);
  }
  get onLoadedData() {
    return html.GlobalEventHandlers.loadedDataEvent.forTarget(this);
  }
  get onLoadedMetadata() {
    return html.GlobalEventHandlers.loadedMetadataEvent.forTarget(this);
  }
  get onMouseDown() {
    return html.GlobalEventHandlers.mouseDownEvent.forTarget(this);
  }
  get onMouseEnter() {
    return html.GlobalEventHandlers.mouseEnterEvent.forTarget(this);
  }
  get onMouseLeave() {
    return html.GlobalEventHandlers.mouseLeaveEvent.forTarget(this);
  }
  get onMouseMove() {
    return html.GlobalEventHandlers.mouseMoveEvent.forTarget(this);
  }
  get onMouseOut() {
    return html.GlobalEventHandlers.mouseOutEvent.forTarget(this);
  }
  get onMouseOver() {
    return html.GlobalEventHandlers.mouseOverEvent.forTarget(this);
  }
  get onMouseUp() {
    return html.GlobalEventHandlers.mouseUpEvent.forTarget(this);
  }
  get onMouseWheel() {
    return html.GlobalEventHandlers.mouseWheelEvent.forTarget(this);
  }
  get onPause() {
    return html.GlobalEventHandlers.pauseEvent.forTarget(this);
  }
  get onPlay() {
    return html.GlobalEventHandlers.playEvent.forTarget(this);
  }
  get onPlaying() {
    return html.GlobalEventHandlers.playingEvent.forTarget(this);
  }
  get onRateChange() {
    return html.GlobalEventHandlers.rateChangeEvent.forTarget(this);
  }
  get onReset() {
    return html.GlobalEventHandlers.resetEvent.forTarget(this);
  }
  get onResize() {
    return html.GlobalEventHandlers.resizeEvent.forTarget(this);
  }
  get onScroll() {
    return html.GlobalEventHandlers.scrollEvent.forTarget(this);
  }
  get onSeeked() {
    return html.GlobalEventHandlers.seekedEvent.forTarget(this);
  }
  get onSeeking() {
    return html.GlobalEventHandlers.seekingEvent.forTarget(this);
  }
  get onSelect() {
    return html.GlobalEventHandlers.selectEvent.forTarget(this);
  }
  get onStalled() {
    return html.GlobalEventHandlers.stalledEvent.forTarget(this);
  }
  get onSubmit() {
    return html.GlobalEventHandlers.submitEvent.forTarget(this);
  }
  get onSuspend() {
    return html.GlobalEventHandlers.suspendEvent.forTarget(this);
  }
  get onTimeUpdate() {
    return html.GlobalEventHandlers.timeUpdateEvent.forTarget(this);
  }
  get onVolumeChange() {
    return html.GlobalEventHandlers.volumeChangeEvent.forTarget(this);
  }
  get onWaiting() {
    return html.GlobalEventHandlers.waitingEvent.forTarget(this);
  }
};
html.GlobalEventHandlers[dart.implements] = () => [html.EventTarget];
dart.setSignature(html.GlobalEventHandlers, {
  constructors: () => ({_: dart.definiteFunctionType(html.GlobalEventHandlers, [])}),
  getters: () => ({
    onAbort: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onBlur: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onCanPlay: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onCanPlayThrough: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onChange: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onClick: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onContextMenu: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onDoubleClick: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onDrag: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onDragEnd: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onDragEnter: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onDragLeave: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onDragOver: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onDragStart: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onDrop: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onDurationChange: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onEmptied: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onEnded: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onError: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onFocus: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onInput: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onInvalid: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onKeyDown: dart.definiteFunctionType(async.Stream$(html.KeyboardEvent), []),
    onKeyPress: dart.definiteFunctionType(async.Stream$(html.KeyboardEvent), []),
    onKeyUp: dart.definiteFunctionType(async.Stream$(html.KeyboardEvent), []),
    onLoad: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onLoadedData: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onLoadedMetadata: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onMouseDown: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onMouseEnter: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onMouseLeave: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onMouseMove: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onMouseOut: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onMouseOver: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onMouseUp: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    onMouseWheel: dart.definiteFunctionType(async.Stream$(html.WheelEvent), []),
    onPause: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onPlay: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onPlaying: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onRateChange: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onReset: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onResize: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onScroll: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onSeeked: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onSeeking: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onSelect: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onStalled: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onSubmit: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onSuspend: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onTimeUpdate: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onVolumeChange: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onWaiting: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  sfields: () => ({
    abortEvent: EventStreamProviderOfEvent(),
    blurEvent: EventStreamProviderOfEvent(),
    canPlayEvent: EventStreamProviderOfEvent(),
    canPlayThroughEvent: EventStreamProviderOfEvent(),
    changeEvent: EventStreamProviderOfEvent(),
    clickEvent: EventStreamProviderOfMouseEvent(),
    contextMenuEvent: EventStreamProviderOfMouseEvent(),
    doubleClickEvent: EventStreamProviderOfEvent(),
    dragEvent: EventStreamProviderOfMouseEvent(),
    dragEndEvent: EventStreamProviderOfMouseEvent(),
    dragEnterEvent: EventStreamProviderOfMouseEvent(),
    dragLeaveEvent: EventStreamProviderOfMouseEvent(),
    dragOverEvent: EventStreamProviderOfMouseEvent(),
    dragStartEvent: EventStreamProviderOfMouseEvent(),
    dropEvent: EventStreamProviderOfMouseEvent(),
    durationChangeEvent: EventStreamProviderOfEvent(),
    emptiedEvent: EventStreamProviderOfEvent(),
    endedEvent: EventStreamProviderOfEvent(),
    errorEvent: EventStreamProviderOfEvent(),
    focusEvent: EventStreamProviderOfEvent(),
    inputEvent: EventStreamProviderOfEvent(),
    invalidEvent: EventStreamProviderOfEvent(),
    keyDownEvent: EventStreamProviderOfKeyboardEvent(),
    keyPressEvent: EventStreamProviderOfKeyboardEvent(),
    keyUpEvent: EventStreamProviderOfKeyboardEvent(),
    loadEvent: EventStreamProviderOfEvent(),
    loadedDataEvent: EventStreamProviderOfEvent(),
    loadedMetadataEvent: EventStreamProviderOfEvent(),
    mouseDownEvent: EventStreamProviderOfMouseEvent(),
    mouseEnterEvent: EventStreamProviderOfMouseEvent(),
    mouseLeaveEvent: EventStreamProviderOfMouseEvent(),
    mouseMoveEvent: EventStreamProviderOfMouseEvent(),
    mouseOutEvent: EventStreamProviderOfMouseEvent(),
    mouseOverEvent: EventStreamProviderOfMouseEvent(),
    mouseUpEvent: EventStreamProviderOfMouseEvent(),
    mouseWheelEvent: EventStreamProviderOfWheelEvent(),
    pauseEvent: EventStreamProviderOfEvent(),
    playEvent: EventStreamProviderOfEvent(),
    playingEvent: EventStreamProviderOfEvent(),
    rateChangeEvent: EventStreamProviderOfEvent(),
    resetEvent: EventStreamProviderOfEvent(),
    resizeEvent: EventStreamProviderOfEvent(),
    scrollEvent: EventStreamProviderOfEvent(),
    seekedEvent: EventStreamProviderOfEvent(),
    seekingEvent: EventStreamProviderOfEvent(),
    selectEvent: EventStreamProviderOfEvent(),
    stalledEvent: EventStreamProviderOfEvent(),
    submitEvent: EventStreamProviderOfEvent(),
    suspendEvent: EventStreamProviderOfEvent(),
    timeUpdateEvent: EventStreamProviderOfEvent(),
    volumeChangeEvent: EventStreamProviderOfEvent(),
    waitingEvent: EventStreamProviderOfEvent()
  })
});
dart.defineExtensionMembers(html.GlobalEventHandlers, [
  'onAbort',
  'onBlur',
  'onCanPlay',
  'onCanPlayThrough',
  'onChange',
  'onClick',
  'onContextMenu',
  'onDoubleClick',
  'onDrag',
  'onDragEnd',
  'onDragEnter',
  'onDragLeave',
  'onDragOver',
  'onDragStart',
  'onDrop',
  'onDurationChange',
  'onEmptied',
  'onEnded',
  'onError',
  'onFocus',
  'onInput',
  'onInvalid',
  'onKeyDown',
  'onKeyPress',
  'onKeyUp',
  'onLoad',
  'onLoadedData',
  'onLoadedMetadata',
  'onMouseDown',
  'onMouseEnter',
  'onMouseLeave',
  'onMouseMove',
  'onMouseOut',
  'onMouseOver',
  'onMouseUp',
  'onMouseWheel',
  'onPause',
  'onPlay',
  'onPlaying',
  'onRateChange',
  'onReset',
  'onResize',
  'onScroll',
  'onSeeked',
  'onSeeking',
  'onSelect',
  'onStalled',
  'onSubmit',
  'onSuspend',
  'onTimeUpdate',
  'onVolumeChange',
  'onWaiting'
]);
dart.defineLazy(html.GlobalEventHandlers, {
  get abortEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('abort'));
  },
  get blurEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('blur'));
  },
  get canPlayEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('canplay'));
  },
  get canPlayThroughEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('canplaythrough'));
  },
  get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('change'));
  },
  get clickEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('click'));
  },
  get contextMenuEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('contextmenu'));
  },
  get doubleClickEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('dblclick'));
  },
  get dragEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('drag'));
  },
  get dragEndEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragend'));
  },
  get dragEnterEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragenter'));
  },
  get dragLeaveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragleave'));
  },
  get dragOverEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragover'));
  },
  get dragStartEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragstart'));
  },
  get dropEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('drop'));
  },
  get durationChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('durationchange'));
  },
  get emptiedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('emptied'));
  },
  get endedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('ended'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get focusEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('focus'));
  },
  get inputEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('input'));
  },
  get invalidEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('invalid'));
  },
  get keyDownEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent())('keydown'));
  },
  get keyPressEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent())('keypress'));
  },
  get keyUpEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent())('keyup'));
  },
  get loadEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('load'));
  },
  get loadedDataEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('loadeddata'));
  },
  get loadedMetadataEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('loadedmetadata'));
  },
  get mouseDownEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mousedown'));
  },
  get mouseEnterEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseenter'));
  },
  get mouseLeaveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseleave'));
  },
  get mouseMoveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mousemove'));
  },
  get mouseOutEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseout'));
  },
  get mouseOverEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseover'));
  },
  get mouseUpEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseup'));
  },
  get mouseWheelEvent() {
    return dart.const(new (EventStreamProviderOfWheelEvent())('mousewheel'));
  },
  get pauseEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('pause'));
  },
  get playEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('play'));
  },
  get playingEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('playing'));
  },
  get rateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('ratechange'));
  },
  get resetEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('reset'));
  },
  get resizeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('resize'));
  },
  get scrollEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('scroll'));
  },
  get seekedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('seeked'));
  },
  get seekingEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('seeking'));
  },
  get selectEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('select'));
  },
  get stalledEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('stalled'));
  },
  get submitEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('submit'));
  },
  get suspendEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('suspend'));
  },
  get timeUpdateEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('timeupdate'));
  },
  get volumeChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('volumechange'));
  },
  get waitingEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('waiting'));
  }
});
dart.defineExtensionNames([
  'color'
]);
html.HRElement = class HRElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.HRElement._check(html.document[dartx.createElement]("hr"));
  }
  created() {
    this[dartx.color] = null;
    super.created();
  }
  get [dartx.color]() {
    return this.color;
  }
  set [dartx.color](value) {
    this.color = value;
  }
};
dart.defineNamedConstructor(html.HRElement, 'created');
dart.setSignature(html.HRElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.HRElement, []),
    new: dart.definiteFunctionType(html.HRElement, []),
    created: dart.definiteFunctionType(html.HRElement, [])
  }),
  fields: () => ({[dartx.color]: core.String})
});
dart.registerExtension(dart.global.HTMLHRElement, html.HRElement);
const _initHashChangeEvent = Symbol('_initHashChangeEvent');
dart.defineExtensionNames([
  'newUrl',
  'oldUrl'
]);
html.HashChangeEvent = class HashChangeEvent extends html.Event {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let oldUrl = opts && 'oldUrl' in opts ? opts.oldUrl : null;
    let newUrl = opts && 'newUrl' in opts ? opts.newUrl : null;
    let options = dart.map({canBubble: canBubble, cancelable: cancelable, oldURL: oldUrl, newURL: newUrl}, core.String, core.Object);
    return new HashChangeEvent(type, html_common.convertDartToNative_Dictionary(options));
  }
  static _(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.HashChangeEvent._create_1(type, eventInitDict_1);
    }
    return html.HashChangeEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new HashChangeEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new HashChangeEvent(type);
  }
  static get supported() {
    return html_common.Device.isEventTypeSupported('HashChangeEvent');
  }
  get [dartx.newUrl]() {
    return this.newURL;
  }
  get [dartx.oldUrl]() {
    return this.oldURL;
  }
  [_initHashChangeEvent](...args) {
    return this.initHashChangeEvent.apply(this, args);
  }
};
dart.setSignature(html.HashChangeEvent, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.HashChangeEvent, [core.String], {canBubble: core.bool, cancelable: core.bool, oldUrl: core.String, newUrl: core.String}),
    _: dart.definiteFunctionType(html.HashChangeEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.newUrl]: core.String,
    [dartx.oldUrl]: core.String
  }),
  methods: () => ({[_initHashChangeEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, core.String, core.String])}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.HashChangeEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.HashChangeEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.HashChangeEvent, html.HashChangeEvent);
html.HeadElement = class HeadElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.HeadElement._check(html.document[dartx.createElement]("head"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.HeadElement, 'created');
dart.setSignature(html.HeadElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.HeadElement, []),
    new: dart.definiteFunctionType(html.HeadElement, []),
    created: dart.definiteFunctionType(html.HeadElement, [])
  })
});
dart.registerExtension(dart.global.HTMLHeadElement, html.HeadElement);
html.Headers = class Headers extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(input) {
    if (input === void 0) input = null;
    if (input == null) {
      return html.Headers._create_1();
    }
    if (html.Headers.is(input)) {
      return html.Headers._create_2(input);
    }
    if (core.Map.is(input)) {
      let input_1 = html_common.convertDartToNative_Dictionary(input);
      return html.Headers._create_3(input_1);
    }
    if (ListOfObject().is(input)) {
      return html.Headers._create_4(input);
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  static _create_1() {
    return new Headers();
  }
  static _create_2(input) {
    return new Headers(input);
  }
  static _create_3(input) {
    return new Headers(input);
  }
  static _create_4(input) {
    return new Headers(input);
  }
};
dart.setSignature(html.Headers, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.Headers, []),
    new: dart.definiteFunctionType(html.Headers, [], [dart.dynamic])
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.Headers, []),
    _create_2: dart.definiteFunctionType(html.Headers, [dart.dynamic]),
    _create_3: dart.definiteFunctionType(html.Headers, [dart.dynamic]),
    _create_4: dart.definiteFunctionType(html.Headers, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2', '_create_3', '_create_4']
});
dart.registerExtension(dart.global.Headers, html.Headers);
html.HeadingElement = class HeadingElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static h1() {
    return html.HeadingElement._check(html.document[dartx.createElement]("h1"));
  }
  static h2() {
    return html.HeadingElement._check(html.document[dartx.createElement]("h2"));
  }
  static h3() {
    return html.HeadingElement._check(html.document[dartx.createElement]("h3"));
  }
  static h4() {
    return html.HeadingElement._check(html.document[dartx.createElement]("h4"));
  }
  static h5() {
    return html.HeadingElement._check(html.document[dartx.createElement]("h5"));
  }
  static h6() {
    return html.HeadingElement._check(html.document[dartx.createElement]("h6"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.HeadingElement, 'created');
dart.setSignature(html.HeadingElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.HeadingElement, []),
    h1: dart.definiteFunctionType(html.HeadingElement, []),
    h2: dart.definiteFunctionType(html.HeadingElement, []),
    h3: dart.definiteFunctionType(html.HeadingElement, []),
    h4: dart.definiteFunctionType(html.HeadingElement, []),
    h5: dart.definiteFunctionType(html.HeadingElement, []),
    h6: dart.definiteFunctionType(html.HeadingElement, []),
    created: dart.definiteFunctionType(html.HeadingElement, [])
  })
});
dart.registerExtension(dart.global.HTMLHeadingElement, html.HeadingElement);
const _get_options = Symbol('_get_options');
const _get_state = Symbol('_get_state');
const _pushState_1 = Symbol('_pushState_1');
const _pushState_2 = Symbol('_pushState_2');
const _replaceState_1 = Symbol('_replaceState_1');
const _replaceState_2 = Symbol('_replaceState_2');
dart.defineExtensionNames([
  'options',
  'state',
  'back',
  'forward',
  'go',
  'pushState',
  'replaceState',
  'length'
]);
html.History = class History extends _interceptors.Interceptor {
  static get supportsState() {
    return !!window.history.pushState;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.options]() {
    return html_common.convertNativeToDart_Dictionary(this[_get_options]);
  }
  get [_get_options]() {
    return this.options;
  }
  get [dartx.state]() {
    return html_common.convertNativeToDart_SerializedScriptValue(this[_get_state]);
  }
  get [_get_state]() {
    return this.state;
  }
  [dartx.back](...args) {
    return this.back.apply(this, args);
  }
  [dartx.forward](...args) {
    return this.forward.apply(this, args);
  }
  [dartx.go](...args) {
    return this.go.apply(this, args);
  }
  [dartx.pushState](data, title, url, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let data_1 = html_common.convertDartToNative_SerializedScriptValue(data);
      let options_2 = html_common.convertDartToNative_Dictionary(options);
      this[_pushState_1](data_1, title, url, options_2);
      return;
    }
    let data_1 = html_common.convertDartToNative_SerializedScriptValue(data);
    this[_pushState_2](data_1, title, url);
    return;
  }
  [_pushState_1](...args) {
    return this.pushState.apply(this, args);
  }
  [_pushState_2](...args) {
    return this.pushState.apply(this, args);
  }
  [dartx.replaceState](data, title, url, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let data_1 = html_common.convertDartToNative_SerializedScriptValue(data);
      let options_2 = html_common.convertDartToNative_Dictionary(options);
      this[_replaceState_1](data_1, title, url, options_2);
      return;
    }
    let data_1 = html_common.convertDartToNative_SerializedScriptValue(data);
    this[_replaceState_2](data_1, title, url);
    return;
  }
  [_replaceState_1](...args) {
    return this.replaceState.apply(this, args);
  }
  [_replaceState_2](...args) {
    return this.replaceState.apply(this, args);
  }
};
html.History[dart.implements] = () => [html.HistoryBase];
dart.setSignature(html.History, {
  constructors: () => ({_: dart.definiteFunctionType(html.History, [])}),
  fields: () => ({
    [dartx.length]: core.int,
    [_get_options]: dart.dynamic,
    [_get_state]: dart.dynamic
  }),
  getters: () => ({
    [dartx.options]: dart.definiteFunctionType(core.Map, []),
    [dartx.state]: dart.definiteFunctionType(dart.dynamic, [])
  }),
  methods: () => ({
    [dartx.back]: dart.definiteFunctionType(dart.void, []),
    [dartx.forward]: dart.definiteFunctionType(dart.void, []),
    [dartx.go]: dart.definiteFunctionType(dart.void, [], [core.int]),
    [dartx.pushState]: dart.definiteFunctionType(dart.void, [dart.dynamic, core.String, core.String], [core.Map]),
    [_pushState_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_pushState_2]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
    [dartx.replaceState]: dart.definiteFunctionType(dart.void, [dart.dynamic, core.String, core.String], [core.Map]),
    [_replaceState_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_replaceState_2]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  sgetters: () => ({supportsState: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.History, html.History);
dart.defineExtensionNames([
  'deviceId',
  'deviceName',
  'hardwareUnitId'
]);
html.VRDevice = class VRDevice extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.deviceId]() {
    return this.deviceId;
  }
  get [dartx.deviceName]() {
    return this.deviceName;
  }
  get [dartx.hardwareUnitId]() {
    return this.hardwareUnitId;
  }
};
dart.setSignature(html.VRDevice, {
  constructors: () => ({_: dart.definiteFunctionType(html.VRDevice, [])}),
  fields: () => ({
    [dartx.deviceId]: core.String,
    [dartx.deviceName]: core.String,
    [dartx.hardwareUnitId]: core.String
  })
});
dart.registerExtension(dart.global.VRDevice, html.VRDevice);
dart.defineExtensionNames([
  'getEyeParameters',
  'setFieldOfView'
]);
html.HmdvrDevice = class HmdvrDevice extends html.VRDevice {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.getEyeParameters](...args) {
    return this.getEyeParameters.apply(this, args);
  }
  [dartx.setFieldOfView](...args) {
    return this.setFieldOfView.apply(this, args);
  }
};
dart.setSignature(html.HmdvrDevice, {
  constructors: () => ({_: dart.definiteFunctionType(html.HmdvrDevice, [])}),
  methods: () => ({
    [dartx.getEyeParameters]: dart.definiteFunctionType(html.VREyeParameters, [core.String]),
    [dartx.setFieldOfView]: dart.definiteFunctionType(dart.void, [], [html.VRFieldOfView, html.VRFieldOfView])
  })
});
dart.registerExtension(dart.global.HMDVRDevice, html.HmdvrDevice);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item',
  'namedItem'
]);
html.HtmlCollection = class HtmlCollection extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.Node), html.ImmutableListMixin$(html.Node)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
  [dartx.namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
};
html.HtmlCollection[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfNode()];
dart.setSignature(html.HtmlCollection, {
  constructors: () => ({_: dart.definiteFunctionType(html.HtmlCollection, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.Node, []),
    [dartx.last]: dart.definiteFunctionType(html.Node, []),
    [dartx.single]: dart.definiteFunctionType(html.Node, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.Node, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.Node]),
    [dartx.elementAt]: dart.definiteFunctionType(html.Node, [core.int]),
    [dartx.item]: dart.definiteFunctionType(html.Node, [core.int]),
    [dartx.namedItem]: dart.definiteFunctionType(core.Object, [core.String])
  })
});
dart.registerExtension(dart.global.HTMLCollection, html.HtmlCollection);
dart.defineExtensionNames([
  'caretRangeFromPoint',
  'elementFromPoint',
  'getCssCanvasContext',
  'head',
  'lastModified',
  'preferredStylesheetSet',
  'referrer',
  'selectedStylesheetSet',
  'selectedStylesheetSet',
  'styleSheets',
  'title',
  'title',
  'exitFullscreen',
  'registerElement',
  'register',
  'onVisibilityChange',
  'createElementUpgrader',
  'body'
]);
html.HtmlDocument = class HtmlDocument extends html.Document {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.body]() {
    return this.body;
  }
  set [dartx.body](value) {
    this.body = value;
  }
  [dartx.caretRangeFromPoint](x, y) {
    return this[_caretRangeFromPoint](x, y);
  }
  [dartx.elementFromPoint](x, y) {
    return this[_elementFromPoint](x, y);
  }
  static get supportsCssCanvasContext() {
    return !!document.getCSSCanvasContext;
  }
  [dartx.getCssCanvasContext](contextId, name, width, height) {
    return html.CanvasRenderingContext._check(this[_getCssCanvasContext](contextId, name, width, height));
  }
  get [dartx.head]() {
    return this[_head];
  }
  get [dartx.lastModified]() {
    return this[_lastModified];
  }
  get [dartx.preferredStylesheetSet]() {
    return this[_preferredStylesheetSet];
  }
  get [dartx.referrer]() {
    return this[_referrer];
  }
  get [dartx.selectedStylesheetSet]() {
    return this[_selectedStylesheetSet];
  }
  set [dartx.selectedStylesheetSet](value) {
    this[_selectedStylesheetSet] = value;
  }
  get [dartx.styleSheets]() {
    return this[_styleSheets];
  }
  get [dartx.title]() {
    return this[_title];
  }
  set [dartx.title](value) {
    this[_title] = value;
  }
  [dartx.exitFullscreen]() {
    this[_webkitExitFullscreen]();
  }
  [dartx.registerElement](tag, customElementClass, opts) {
    let extendsTag = opts && 'extendsTag' in opts ? opts.extendsTag : null;
    html._registerCustomElement(window, this, tag, customElementClass, extendsTag);
  }
  [dartx.register](tag, customElementClass, opts) {
    let extendsTag = opts && 'extendsTag' in opts ? opts.extendsTag : null;
    return this[dartx.registerElement](tag, customElementClass, {extendsTag: extendsTag});
  }
  static _determineVisibilityChangeEventType(e) {
    if (typeof e.hidden !== "undefined") {
      return 'visibilitychange';
    } else if (typeof e.mozHidden !== "undefined") {
      return 'mozvisibilitychange';
    } else if (typeof e.msHidden !== "undefined") {
      return 'msvisibilitychange';
    } else if (typeof e.webkitHidden !== "undefined") {
      return 'webkitvisibilitychange';
    }
    return 'visibilitychange';
  }
  get [dartx.onVisibilityChange]() {
    return html.HtmlDocument.visibilityChangeEvent.forTarget(this);
  }
  [dartx.createElementUpgrader](type, opts) {
    let extendsTag = opts && 'extendsTag' in opts ? opts.extendsTag : null;
    return new html._JSElementUpgrader(this, type, extendsTag);
  }
};
dart.setSignature(html.HtmlDocument, {
  constructors: () => ({_: dart.definiteFunctionType(html.HtmlDocument, [])}),
  fields: () => ({[dartx.body]: html.BodyElement}),
  getters: () => ({
    [dartx.head]: dart.definiteFunctionType(html.HeadElement, []),
    [dartx.lastModified]: dart.definiteFunctionType(core.String, []),
    [dartx.preferredStylesheetSet]: dart.definiteFunctionType(core.String, []),
    [dartx.referrer]: dart.definiteFunctionType(core.String, []),
    [dartx.selectedStylesheetSet]: dart.definiteFunctionType(core.String, []),
    [dartx.styleSheets]: dart.definiteFunctionType(core.List$(html.StyleSheet), []),
    [dartx.title]: dart.definiteFunctionType(core.String, []),
    [dartx.onVisibilityChange]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  setters: () => ({
    [dartx.selectedStylesheetSet]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.title]: dart.definiteFunctionType(dart.void, [core.String])
  }),
  methods: () => ({
    [dartx.caretRangeFromPoint]: dart.definiteFunctionType(html.Range, [core.int, core.int]),
    [dartx.elementFromPoint]: dart.definiteFunctionType(html.Element, [core.int, core.int]),
    [dartx.getCssCanvasContext]: dart.definiteFunctionType(html.CanvasRenderingContext, [core.String, core.String, core.int, core.int]),
    [dartx.registerElement]: dart.definiteFunctionType(dart.void, [core.String, core.Type], {extendsTag: core.String}),
    [dartx.register]: dart.definiteFunctionType(dart.void, [core.String, core.Type], {extendsTag: core.String}),
    [dartx.createElementUpgrader]: dart.definiteFunctionType(html.ElementUpgrader, [core.Type], {extendsTag: core.String})
  }),
  sfields: () => ({visibilityChangeEvent: EventStreamProviderOfEvent()}),
  sgetters: () => ({supportsCssCanvasContext: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({_determineVisibilityChangeEventType: dart.definiteFunctionType(core.String, [html.EventTarget])}),
  names: ['_determineVisibilityChangeEventType']
});
dart.defineLazy(html.HtmlDocument, {
  get visibilityChangeEvent() {
    return dart.const(new (_CustomEventStreamProviderOfEvent())(html.HtmlDocument._determineVisibilityChangeEventType));
  }
});
dart.registerExtension(dart.global.HTMLDocument, html.HtmlDocument);
dart.defineExtensionNames([
  'item',
  'namedItem'
]);
html.HtmlFormControlsCollection = class HtmlFormControlsCollection extends html.HtmlCollection {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
  [dartx.namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
};
dart.setSignature(html.HtmlFormControlsCollection, {
  constructors: () => ({_: dart.definiteFunctionType(html.HtmlFormControlsCollection, [])})
});
dart.registerExtension(dart.global.HTMLFormControlsCollection, html.HtmlFormControlsCollection);
html.HtmlHtmlElement = class HtmlHtmlElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.HtmlHtmlElement._check(html.document[dartx.createElement]("html"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.HtmlHtmlElement, 'created');
dart.setSignature(html.HtmlHtmlElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.HtmlHtmlElement, []),
    new: dart.definiteFunctionType(html.HtmlHtmlElement, []),
    created: dart.definiteFunctionType(html.HtmlHtmlElement, [])
  })
});
dart.registerExtension(dart.global.HTMLHtmlElement, html.HtmlHtmlElement);
const _item = Symbol('_item');
html.HtmlOptionsCollection = class HtmlOptionsCollection extends html.HtmlCollection {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [_item](...args) {
    return this.item.apply(this, args);
  }
};
dart.setSignature(html.HtmlOptionsCollection, {
  constructors: () => ({_: dart.definiteFunctionType(html.HtmlOptionsCollection, [])}),
  methods: () => ({[_item]: dart.definiteFunctionType(html.Node, [core.int])})
});
dart.registerExtension(dart.global.HTMLOptionsCollection, html.HtmlOptionsCollection);
const _get_response = Symbol('_get_response');
dart.defineExtensionNames([
  'onAbort',
  'onError',
  'onLoad',
  'onLoadEnd',
  'onLoadStart',
  'onProgress',
  'onTimeout'
]);
html.HttpRequestEventTarget = class HttpRequestEventTarget extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.onAbort]() {
    return html.HttpRequestEventTarget.abortEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return html.HttpRequestEventTarget.errorEvent.forTarget(this);
  }
  get [dartx.onLoad]() {
    return html.HttpRequestEventTarget.loadEvent.forTarget(this);
  }
  get [dartx.onLoadEnd]() {
    return html.HttpRequestEventTarget.loadEndEvent.forTarget(this);
  }
  get [dartx.onLoadStart]() {
    return html.HttpRequestEventTarget.loadStartEvent.forTarget(this);
  }
  get [dartx.onProgress]() {
    return html.HttpRequestEventTarget.progressEvent.forTarget(this);
  }
  get [dartx.onTimeout]() {
    return html.HttpRequestEventTarget.timeoutEvent.forTarget(this);
  }
};
dart.setSignature(html.HttpRequestEventTarget, {
  constructors: () => ({_: dart.definiteFunctionType(html.HttpRequestEventTarget, [])}),
  getters: () => ({
    [dartx.onAbort]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onLoad]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onLoadEnd]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onLoadStart]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onProgress]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), []),
    [dartx.onTimeout]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), [])
  }),
  sfields: () => ({
    abortEvent: EventStreamProviderOfProgressEvent(),
    errorEvent: EventStreamProviderOfProgressEvent(),
    loadEvent: EventStreamProviderOfProgressEvent(),
    loadEndEvent: EventStreamProviderOfProgressEvent(),
    loadStartEvent: EventStreamProviderOfProgressEvent(),
    progressEvent: EventStreamProviderOfProgressEvent(),
    timeoutEvent: EventStreamProviderOfProgressEvent()
  })
});
dart.defineLazy(html.HttpRequestEventTarget, {
  get abortEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('abort'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('error'));
  },
  get loadEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('load'));
  },
  get loadEndEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('loadend'));
  },
  get loadStartEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('loadstart'));
  },
  get progressEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('progress'));
  },
  get timeoutEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('timeout'));
  }
});
dart.registerExtension(dart.global.XMLHttpRequestEventTarget, html.HttpRequestEventTarget);
dart.defineExtensionNames([
  'responseHeaders',
  'open',
  'response',
  'abort',
  'getAllResponseHeaders',
  'getResponseHeader',
  'overrideMimeType',
  'send',
  'setRequestHeader',
  'onReadyStateChange',
  'readyState',
  'responseText',
  'responseType',
  'responseUrl',
  'responseXml',
  'status',
  'statusText',
  'timeout',
  'upload',
  'withCredentials'
]);
html.HttpRequest = class HttpRequest extends html.HttpRequestEventTarget {
  static getString(url, opts) {
    let withCredentials = opts && 'withCredentials' in opts ? opts.withCredentials : null;
    let onProgress = opts && 'onProgress' in opts ? opts.onProgress : null;
    return html.HttpRequest.request(url, {withCredentials: withCredentials, onProgress: onProgress}).then(core.String)(dart.fn(xhr => xhr[dartx.responseText], HttpRequestToString()));
  }
  static postFormData(url, data, opts) {
    let withCredentials = opts && 'withCredentials' in opts ? opts.withCredentials : null;
    let responseType = opts && 'responseType' in opts ? opts.responseType : null;
    let requestHeaders = opts && 'requestHeaders' in opts ? opts.requestHeaders : null;
    let onProgress = opts && 'onProgress' in opts ? opts.onProgress : null;
    let parts = [];
    data[dartx.forEach](dart.fn((key, value) => {
      parts[dartx.add](dart.str`${core.Uri.encodeQueryComponent(key)}=` + dart.str`${core.Uri.encodeQueryComponent(value)}`);
    }, StringAndStringTovoid()));
    let formData = parts[dartx.join]('&');
    if (requestHeaders == null) {
      requestHeaders = dart.map({}, core.String, core.String);
    }
    requestHeaders[dartx.putIfAbsent]('Content-Type', dart.fn(() => 'application/x-www-form-urlencoded; charset=UTF-8', VoidToString()));
    return html.HttpRequest.request(url, {method: 'POST', withCredentials: withCredentials, responseType: responseType, requestHeaders: requestHeaders, sendData: formData, onProgress: onProgress});
  }
  static request(url, opts) {
    let method = opts && 'method' in opts ? opts.method : null;
    let withCredentials = opts && 'withCredentials' in opts ? opts.withCredentials : null;
    let responseType = opts && 'responseType' in opts ? opts.responseType : null;
    let mimeType = opts && 'mimeType' in opts ? opts.mimeType : null;
    let requestHeaders = opts && 'requestHeaders' in opts ? opts.requestHeaders : null;
    let sendData = opts && 'sendData' in opts ? opts.sendData : null;
    let onProgress = opts && 'onProgress' in opts ? opts.onProgress : null;
    let completer = CompleterOfHttpRequest().new();
    let xhr = html.HttpRequest.new();
    if (method == null) {
      method = 'GET';
    }
    xhr[dartx.open](method, url, {async: true});
    if (withCredentials != null) {
      xhr[dartx.withCredentials] = withCredentials;
    }
    if (responseType != null) {
      xhr[dartx.responseType] = responseType;
    }
    if (mimeType != null) {
      xhr[dartx.overrideMimeType](mimeType);
    }
    if (requestHeaders != null) {
      requestHeaders[dartx.forEach](dart.fn((header, value) => {
        xhr[dartx.setRequestHeader](header, value);
      }, StringAndStringTovoid()));
    }
    if (onProgress != null) {
      xhr[dartx.onProgress].listen(onProgress);
    }
    xhr[dartx.onLoad].listen(dart.fn(e => {
      let accepted = dart.notNull(xhr[dartx.status]) >= 200 && dart.notNull(xhr[dartx.status]) < 300;
      let fileUri = xhr[dartx.status] == 0;
      let notModified = xhr[dartx.status] == 304;
      let unknownRedirect = dart.notNull(xhr[dartx.status]) > 307 && dart.notNull(xhr[dartx.status]) < 400;
      if (accepted || fileUri || notModified || unknownRedirect) {
        completer.complete(xhr);
      } else {
        completer.completeError(e);
      }
    }, ProgressEventTovoid()));
    xhr[dartx.onError].listen(dart.bind(completer, 'completeError'));
    if (sendData != null) {
      xhr[dartx.send](sendData);
    } else {
      xhr[dartx.send]();
    }
    return completer.future;
  }
  static get supportsProgressEvent() {
    let xhr = html.HttpRequest.new();
    return "onprogress" in xhr;
  }
  static get supportsCrossOrigin() {
    let xhr = html.HttpRequest.new();
    return "withCredentials" in xhr;
  }
  static get supportsLoadEndEvent() {
    let xhr = html.HttpRequest.new();
    return "onloadend" in xhr;
  }
  static get supportsOverrideMimeType() {
    let xhr = html.HttpRequest.new();
    return "overrideMimeType" in xhr;
  }
  static requestCrossOrigin(url, opts) {
    let method = opts && 'method' in opts ? opts.method : null;
    let sendData = opts && 'sendData' in opts ? opts.sendData : null;
    if (dart.test(html.HttpRequest.supportsCrossOrigin)) {
      return html.HttpRequest.request(url, {method: method, sendData: sendData}).then(core.String)(dart.fn(xhr => xhr[dartx.responseText], HttpRequestToString()));
    }
    let completer = CompleterOfString().new();
    if (method == null) {
      method = 'GET';
    }
    let xhr = new XDomainRequest();
    xhr.open(method, url);
    xhr.onload = _js_helper.convertDartClosureToJS(dynamicTodynamic())(dart.fn(e => {
      let response = xhr.responseText;
      completer.complete(response);
    }, dynamicTodynamic()), 1);
    xhr.onerror = _js_helper.convertDartClosureToJS(dynamicTodynamic())(dart.fn(e => {
      completer.completeError(e);
    }, dynamicTodynamic()), 1);
    xhr.onprogress = {};
    xhr.ontimeout = {};
    xhr.timeout = Number.MAX_VALUE;
    if (sendData != null) {
      xhr.send(sendData);
    } else {
      xhr.send();
    }
    return completer.future;
  }
  get [dartx.responseHeaders]() {
    let headers = dart.map({}, core.String, core.String);
    let headersString = this[dartx.getAllResponseHeaders]();
    if (headersString == null) {
      return headers;
    }
    let headersList = headersString[dartx.split]('\r\n');
    for (let header of headersList) {
      if (dart.test(header[dartx.isEmpty])) {
        continue;
      }
      let splitIdx = header[dartx.indexOf](': ');
      if (splitIdx == -1) {
        continue;
      }
      let key = header[dartx.substring](0, splitIdx)[dartx.toLowerCase]();
      let value = header[dartx.substring](dart.notNull(splitIdx) + 2);
      if (dart.test(headers[dartx.containsKey](key))) {
        headers[dartx._set](key, dart.str`${headers[dartx._get](key)}, ${value}`);
      } else {
        headers[dartx._set](key, value);
      }
    }
    return headers;
  }
  [dartx.open](...args) {
    return this.open.apply(this, args);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.HttpRequest._create_1();
  }
  static _create_1() {
    return new XMLHttpRequest();
  }
  get [dartx.readyState]() {
    return this.readyState;
  }
  get [dartx.response]() {
    return html._convertNativeToDart_XHR_Response(this[_get_response]);
  }
  get [_get_response]() {
    return this.response;
  }
  get [dartx.responseText]() {
    return this.responseText;
  }
  get [dartx.responseType]() {
    return this.responseType;
  }
  set [dartx.responseType](value) {
    this.responseType = value;
  }
  get [dartx.responseUrl]() {
    return this.responseURL;
  }
  get [dartx.responseXml]() {
    return this.responseXML;
  }
  get [dartx.status]() {
    return this.status;
  }
  get [dartx.statusText]() {
    return this.statusText;
  }
  get [dartx.timeout]() {
    return this.timeout;
  }
  set [dartx.timeout](value) {
    this.timeout = value;
  }
  get [dartx.upload]() {
    return this.upload;
  }
  get [dartx.withCredentials]() {
    return this.withCredentials;
  }
  set [dartx.withCredentials](value) {
    this.withCredentials = value;
  }
  [dartx.abort](...args) {
    return this.abort.apply(this, args);
  }
  [dartx.getAllResponseHeaders](...args) {
    return this.getAllResponseHeaders.apply(this, args);
  }
  [dartx.getResponseHeader](...args) {
    return this.getResponseHeader.apply(this, args);
  }
  [dartx.overrideMimeType](...args) {
    return this.overrideMimeType.apply(this, args);
  }
  [dartx.send](...args) {
    return this.send.apply(this, args);
  }
  [dartx.setRequestHeader](...args) {
    return this.setRequestHeader.apply(this, args);
  }
  get [dartx.onReadyStateChange]() {
    return html.HttpRequest.readyStateChangeEvent.forTarget(this);
  }
};
dart.setSignature(html.HttpRequest, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.HttpRequest, []),
    new: dart.definiteFunctionType(html.HttpRequest, [])
  }),
  fields: () => ({
    [dartx.readyState]: core.int,
    [_get_response]: dart.dynamic,
    [dartx.responseText]: core.String,
    [dartx.responseType]: core.String,
    [dartx.responseUrl]: core.String,
    [dartx.responseXml]: html.Document,
    [dartx.status]: core.int,
    [dartx.statusText]: core.String,
    [dartx.timeout]: core.int,
    [dartx.upload]: html.HttpRequestUpload,
    [dartx.withCredentials]: core.bool
  }),
  getters: () => ({
    [dartx.responseHeaders]: dart.definiteFunctionType(core.Map$(core.String, core.String), []),
    [dartx.response]: dart.definiteFunctionType(dart.dynamic, []),
    [dartx.onReadyStateChange]: dart.definiteFunctionType(async.Stream$(html.ProgressEvent), [])
  }),
  methods: () => ({
    [dartx.open]: dart.definiteFunctionType(dart.void, [core.String, core.String], {async: core.bool, user: core.String, password: core.String}),
    [dartx.abort]: dart.definiteFunctionType(dart.void, []),
    [dartx.getAllResponseHeaders]: dart.definiteFunctionType(core.String, []),
    [dartx.getResponseHeader]: dart.definiteFunctionType(core.String, [core.String]),
    [dartx.overrideMimeType]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.send]: dart.definiteFunctionType(dart.void, [], [dart.dynamic]),
    [dartx.setRequestHeader]: dart.definiteFunctionType(dart.void, [core.String, core.String])
  }),
  sfields: () => ({
    readyStateChangeEvent: EventStreamProviderOfProgressEvent(),
    DONE: core.int,
    HEADERS_RECEIVED: core.int,
    LOADING: core.int,
    OPENED: core.int,
    UNSENT: core.int
  }),
  sgetters: () => ({
    supportsProgressEvent: dart.definiteFunctionType(core.bool, []),
    supportsCrossOrigin: dart.definiteFunctionType(core.bool, []),
    supportsLoadEndEvent: dart.definiteFunctionType(core.bool, []),
    supportsOverrideMimeType: dart.definiteFunctionType(core.bool, [])
  }),
  statics: () => ({
    getString: dart.definiteFunctionType(async.Future$(core.String), [core.String], {withCredentials: core.bool, onProgress: ProgressEventTovoid()}),
    postFormData: dart.definiteFunctionType(async.Future$(html.HttpRequest), [core.String, MapOfString$String()], {withCredentials: core.bool, responseType: core.String, requestHeaders: MapOfString$String(), onProgress: ProgressEventTovoid()}),
    request: dart.definiteFunctionType(async.Future$(html.HttpRequest), [core.String], {method: core.String, withCredentials: core.bool, responseType: core.String, mimeType: core.String, requestHeaders: MapOfString$String(), sendData: dart.dynamic, onProgress: ProgressEventTovoid()}),
    requestCrossOrigin: dart.definiteFunctionType(async.Future$(core.String), [core.String], {method: core.String, sendData: core.String}),
    _create_1: dart.definiteFunctionType(html.HttpRequest, [])
  }),
  names: ['getString', 'postFormData', 'request', 'requestCrossOrigin', '_create_1']
});
html.HttpRequest.DONE = 4;
html.HttpRequest.HEADERS_RECEIVED = 2;
html.HttpRequest.LOADING = 3;
html.HttpRequest.OPENED = 1;
html.HttpRequest.UNSENT = 0;
dart.defineLazy(html.HttpRequest, {
  get readyStateChangeEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent())('readystatechange'));
  }
});
dart.registerExtension(dart.global.XMLHttpRequest, html.HttpRequest);
html.HttpRequestUpload = class HttpRequestUpload extends html.HttpRequestEventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.HttpRequestUpload, {
  constructors: () => ({_: dart.definiteFunctionType(html.HttpRequestUpload, [])})
});
dart.registerExtension(dart.global.XMLHttpRequestUpload, html.HttpRequestUpload);
const _get_contentWindow = Symbol('_get_contentWindow');
dart.defineExtensionNames([
  'contentWindow',
  'allowFullscreen',
  'height',
  'name',
  'sandbox',
  'src',
  'srcdoc',
  'width'
]);
html.IFrameElement = class IFrameElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.IFrameElement._check(html.document[dartx.createElement]("iframe"));
  }
  created() {
    this[dartx.allowFullscreen] = null;
    this[_get_contentWindow] = null;
    this[dartx.height] = null;
    this[dartx.name] = null;
    this[dartx.sandbox] = null;
    this[dartx.src] = null;
    this[dartx.srcdoc] = null;
    this[dartx.width] = null;
    super.created();
  }
  get [dartx.allowFullscreen]() {
    return this.allowFullscreen;
  }
  set [dartx.allowFullscreen](value) {
    this.allowFullscreen = value;
  }
  get [dartx.contentWindow]() {
    return html._convertNativeToDart_Window(this[_get_contentWindow]);
  }
  get [_get_contentWindow]() {
    return this.contentWindow;
  }
  get [dartx.height]() {
    return this.height;
  }
  set [dartx.height](value) {
    this.height = value;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.sandbox]() {
    return this.sandbox;
  }
  get [dartx.src]() {
    return this.src;
  }
  set [dartx.src](value) {
    this.src = value;
  }
  get [dartx.srcdoc]() {
    return this.srcdoc;
  }
  set [dartx.srcdoc](value) {
    this.srcdoc = value;
  }
  get [dartx.width]() {
    return this.width;
  }
  set [dartx.width](value) {
    this.width = value;
  }
};
dart.defineNamedConstructor(html.IFrameElement, 'created');
dart.setSignature(html.IFrameElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.IFrameElement, []),
    new: dart.definiteFunctionType(html.IFrameElement, []),
    created: dart.definiteFunctionType(html.IFrameElement, [])
  }),
  fields: () => ({
    [dartx.allowFullscreen]: core.bool,
    [_get_contentWindow]: dart.dynamic,
    [dartx.height]: core.String,
    [dartx.name]: core.String,
    [dartx.sandbox]: html.DomSettableTokenList,
    [dartx.src]: core.String,
    [dartx.srcdoc]: core.String,
    [dartx.width]: core.String
  }),
  getters: () => ({[dartx.contentWindow]: dart.definiteFunctionType(html.WindowBase, [])})
});
dart.registerExtension(dart.global.HTMLIFrameElement, html.IFrameElement);
dart.defineExtensionNames([
  'height',
  'width'
]);
html.ImageBitmap = class ImageBitmap extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.width]() {
    return this.width;
  }
};
dart.setSignature(html.ImageBitmap, {
  constructors: () => ({_: dart.definiteFunctionType(html.ImageBitmap, [])}),
  fields: () => ({
    [dartx.height]: core.int,
    [dartx.width]: core.int
  })
});
dart.registerExtension(dart.global.ImageBitmap, html.ImageBitmap);
dart.defineExtensionNames([
  'data',
  'height',
  'width'
]);
html.ImageData = class ImageData extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(data_OR_sw, sh_OR_sw, sh) {
    if (sh === void 0) sh = null;
    if (typeof sh_OR_sw == 'number' && typeof data_OR_sw == 'number' && sh == null) {
      return html.ImageData._create_1(data_OR_sw, sh_OR_sw);
    }
    if (typeof sh_OR_sw == 'number' && typed_data.Uint8ClampedList.is(data_OR_sw) && sh == null) {
      return html.ImageData._create_2(data_OR_sw, sh_OR_sw);
    }
    if (typeof sh == 'number' && typeof sh_OR_sw == 'number' && typed_data.Uint8ClampedList.is(data_OR_sw)) {
      return html.ImageData._create_3(data_OR_sw, sh_OR_sw, sh);
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  static _create_1(data_OR_sw, sh_OR_sw) {
    return new ImageData(data_OR_sw, sh_OR_sw);
  }
  static _create_2(data_OR_sw, sh_OR_sw) {
    return new ImageData(data_OR_sw, sh_OR_sw);
  }
  static _create_3(data_OR_sw, sh_OR_sw, sh) {
    return new ImageData(data_OR_sw, sh_OR_sw, sh);
  }
  get [dartx.data]() {
    return this.data;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.width]() {
    return this.width;
  }
};
dart.setSignature(html.ImageData, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ImageData, []),
    new: dart.definiteFunctionType(html.ImageData, [dart.dynamic, core.int], [core.int])
  }),
  fields: () => ({
    [dartx.data]: typed_data.Uint8ClampedList,
    [dartx.height]: core.int,
    [dartx.width]: core.int
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.ImageData, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.ImageData, [dart.dynamic, dart.dynamic]),
    _create_3: dart.definiteFunctionType(html.ImageData, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create_1', '_create_2', '_create_3']
});
dart.registerExtension(dart.global.ImageData, html.ImageData);
dart.defineExtensionNames([
  'alt',
  'complete',
  'crossOrigin',
  'currentSrc',
  'height',
  'isMap',
  'naturalHeight',
  'naturalWidth',
  'sizes',
  'src',
  'srcset',
  'useMap',
  'width'
]);
html.ImageElement = class ImageElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(opts) {
    let src = opts && 'src' in opts ? opts.src : null;
    let width = opts && 'width' in opts ? opts.width : null;
    let height = opts && 'height' in opts ? opts.height : null;
    let e = html.ImageElement._check(html.document[dartx.createElement]("img"));
    if (src != null) e[dartx.src] = src;
    if (width != null) e[dartx.width] = width;
    if (height != null) e[dartx.height] = height;
    return e;
  }
  created() {
    this[dartx.alt] = null;
    this[dartx.complete] = null;
    this[dartx.crossOrigin] = null;
    this[dartx.currentSrc] = null;
    this[dartx.height] = null;
    this[dartx.isMap] = null;
    this[dartx.naturalHeight] = null;
    this[dartx.naturalWidth] = null;
    this[dartx.sizes] = null;
    this[dartx.src] = null;
    this[dartx.srcset] = null;
    this[dartx.useMap] = null;
    this[dartx.width] = null;
    super.created();
  }
  get [dartx.alt]() {
    return this.alt;
  }
  set [dartx.alt](value) {
    this.alt = value;
  }
  get [dartx.complete]() {
    return this.complete;
  }
  get [dartx.crossOrigin]() {
    return this.crossOrigin;
  }
  set [dartx.crossOrigin](value) {
    this.crossOrigin = value;
  }
  get [dartx.currentSrc]() {
    return this.currentSrc;
  }
  get [dartx.height]() {
    return this.height;
  }
  set [dartx.height](value) {
    this.height = value;
  }
  get [dartx.isMap]() {
    return this.isMap;
  }
  set [dartx.isMap](value) {
    this.isMap = value;
  }
  get [dartx.naturalHeight]() {
    return this.naturalHeight;
  }
  get [dartx.naturalWidth]() {
    return this.naturalWidth;
  }
  get [dartx.sizes]() {
    return this.sizes;
  }
  set [dartx.sizes](value) {
    this.sizes = value;
  }
  get [dartx.src]() {
    return this.src;
  }
  set [dartx.src](value) {
    this.src = value;
  }
  get [dartx.srcset]() {
    return this.srcset;
  }
  set [dartx.srcset](value) {
    this.srcset = value;
  }
  get [dartx.useMap]() {
    return this.useMap;
  }
  set [dartx.useMap](value) {
    this.useMap = value;
  }
  get [dartx.width]() {
    return this.width;
  }
  set [dartx.width](value) {
    this.width = value;
  }
};
dart.defineNamedConstructor(html.ImageElement, 'created');
html.ImageElement[dart.implements] = () => [html.CanvasImageSource];
dart.setSignature(html.ImageElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ImageElement, []),
    new: dart.definiteFunctionType(html.ImageElement, [], {src: core.String, width: core.int, height: core.int}),
    created: dart.definiteFunctionType(html.ImageElement, [])
  }),
  fields: () => ({
    [dartx.alt]: core.String,
    [dartx.complete]: core.bool,
    [dartx.crossOrigin]: core.String,
    [dartx.currentSrc]: core.String,
    [dartx.height]: core.int,
    [dartx.isMap]: core.bool,
    [dartx.naturalHeight]: core.int,
    [dartx.naturalWidth]: core.int,
    [dartx.sizes]: core.String,
    [dartx.src]: core.String,
    [dartx.srcset]: core.String,
    [dartx.useMap]: core.String,
    [dartx.width]: core.int
  })
});
dart.registerExtension(dart.global.HTMLImageElement, html.ImageElement);
dart.defineExtensionNames([
  'inspect'
]);
html.InjectedScriptHost = class InjectedScriptHost extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.inspect](...args) {
    return this.inspect.apply(this, args);
  }
};
dart.setSignature(html.InjectedScriptHost, {
  constructors: () => ({_: dart.definiteFunctionType(html.InjectedScriptHost, [])}),
  methods: () => ({[dartx.inspect]: dart.definiteFunctionType(dart.void, [core.Object, core.Object])})
});
dart.registerExtension(dart.global.InjectedScriptHost, html.InjectedScriptHost);
dart.defineExtensionNames([
  'firesTouchEvents'
]);
html.InputDevice = class InputDevice extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(deviceInitDict) {
    if (deviceInitDict === void 0) deviceInitDict = null;
    if (deviceInitDict != null) {
      let deviceInitDict_1 = html_common.convertDartToNative_Dictionary(deviceInitDict);
      return html.InputDevice._create_1(deviceInitDict_1);
    }
    return html.InputDevice._create_2();
  }
  static _create_1(deviceInitDict) {
    return new InputDevice(deviceInitDict);
  }
  static _create_2() {
    return new InputDevice();
  }
  get [dartx.firesTouchEvents]() {
    return this.firesTouchEvents;
  }
};
dart.setSignature(html.InputDevice, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.InputDevice, []),
    new: dart.definiteFunctionType(html.InputDevice, [], [core.Map])
  }),
  fields: () => ({[dartx.firesTouchEvents]: core.bool}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.InputDevice, [dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.InputDevice, [])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.InputDevice, html.InputDevice);
const _get_valueAsDate = Symbol('_get_valueAsDate');
const _set_valueAsDate = Symbol('_set_valueAsDate');
dart.defineExtensionNames([
  'valueAsDate',
  'valueAsDate',
  'checkValidity',
  'reportValidity',
  'select',
  'setCustomValidity',
  'setRangeText',
  'setSelectionRange',
  'stepDown',
  'stepUp',
  'accept',
  'alt',
  'autocapitalize',
  'autocomplete',
  'autofocus',
  'capture',
  'checked',
  'defaultChecked',
  'defaultValue',
  'dirName',
  'disabled',
  'files',
  'form',
  'formAction',
  'formEnctype',
  'formMethod',
  'formNoValidate',
  'formTarget',
  'height',
  'incremental',
  'indeterminate',
  'inputMode',
  'labels',
  'list',
  'max',
  'maxLength',
  'min',
  'minLength',
  'multiple',
  'name',
  'pattern',
  'placeholder',
  'readOnly',
  'required',
  'selectionDirection',
  'selectionEnd',
  'selectionStart',
  'size',
  'src',
  'step',
  'type',
  'validationMessage',
  'validity',
  'value',
  'valueAsNumber',
  'entries',
  'directory',
  'width',
  'willValidate'
]);
html.InputElement = class InputElement extends html.HtmlElement {
  static new(opts) {
    let type = opts && 'type' in opts ? opts.type : null;
    let e = html.InputElement._check(html.document[dartx.createElement]("input"));
    if (type != null) {
      try {
        e[dartx.type] = type;
      } catch (_) {
      }

    }
    return e;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.accept] = null;
    this[dartx.alt] = null;
    this[dartx.autocapitalize] = null;
    this[dartx.autocomplete] = null;
    this[dartx.autofocus] = null;
    this[dartx.capture] = null;
    this[dartx.checked] = null;
    this[dartx.defaultChecked] = null;
    this[dartx.defaultValue] = null;
    this[dartx.dirName] = null;
    this[dartx.disabled] = null;
    this[dartx.files] = null;
    this[dartx.form] = null;
    this[dartx.formAction] = null;
    this[dartx.formEnctype] = null;
    this[dartx.formMethod] = null;
    this[dartx.formNoValidate] = null;
    this[dartx.formTarget] = null;
    this[dartx.height] = null;
    this[dartx.incremental] = null;
    this[dartx.indeterminate] = null;
    this[dartx.inputMode] = null;
    this[dartx.labels] = null;
    this[dartx.list] = null;
    this[dartx.max] = null;
    this[dartx.maxLength] = null;
    this[dartx.min] = null;
    this[dartx.minLength] = null;
    this[dartx.multiple] = null;
    this[dartx.name] = null;
    this[dartx.pattern] = null;
    this[dartx.placeholder] = null;
    this[dartx.readOnly] = null;
    this[dartx.required] = null;
    this[dartx.selectionDirection] = null;
    this[dartx.selectionEnd] = null;
    this[dartx.selectionStart] = null;
    this[dartx.size] = null;
    this[dartx.src] = null;
    this[dartx.step] = null;
    this[dartx.type] = null;
    this[dartx.validationMessage] = null;
    this[dartx.validity] = null;
    this[dartx.value] = null;
    this[_get_valueAsDate] = null;
    this[dartx.valueAsNumber] = null;
    this[dartx.entries] = null;
    this[dartx.directory] = null;
    this[dartx.width] = null;
    this[dartx.willValidate] = null;
    super.created();
  }
  get [dartx.accept]() {
    return this.accept;
  }
  set [dartx.accept](value) {
    this.accept = value;
  }
  get [dartx.alt]() {
    return this.alt;
  }
  set [dartx.alt](value) {
    this.alt = value;
  }
  get [dartx.autocapitalize]() {
    return this.autocapitalize;
  }
  set [dartx.autocapitalize](value) {
    this.autocapitalize = value;
  }
  get [dartx.autocomplete]() {
    return this.autocomplete;
  }
  set [dartx.autocomplete](value) {
    this.autocomplete = value;
  }
  get [dartx.autofocus]() {
    return this.autofocus;
  }
  set [dartx.autofocus](value) {
    this.autofocus = value;
  }
  get [dartx.capture]() {
    return this.capture;
  }
  set [dartx.capture](value) {
    this.capture = value;
  }
  get [dartx.checked]() {
    return this.checked;
  }
  set [dartx.checked](value) {
    this.checked = value;
  }
  get [dartx.defaultChecked]() {
    return this.defaultChecked;
  }
  set [dartx.defaultChecked](value) {
    this.defaultChecked = value;
  }
  get [dartx.defaultValue]() {
    return this.defaultValue;
  }
  set [dartx.defaultValue](value) {
    this.defaultValue = value;
  }
  get [dartx.dirName]() {
    return this.dirName;
  }
  set [dartx.dirName](value) {
    this.dirName = value;
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.files]() {
    return this.files;
  }
  set [dartx.files](value) {
    this.files = value;
  }
  get [dartx.form]() {
    return this.form;
  }
  get [dartx.formAction]() {
    return this.formAction;
  }
  set [dartx.formAction](value) {
    this.formAction = value;
  }
  get [dartx.formEnctype]() {
    return this.formEnctype;
  }
  set [dartx.formEnctype](value) {
    this.formEnctype = value;
  }
  get [dartx.formMethod]() {
    return this.formMethod;
  }
  set [dartx.formMethod](value) {
    this.formMethod = value;
  }
  get [dartx.formNoValidate]() {
    return this.formNoValidate;
  }
  set [dartx.formNoValidate](value) {
    this.formNoValidate = value;
  }
  get [dartx.formTarget]() {
    return this.formTarget;
  }
  set [dartx.formTarget](value) {
    this.formTarget = value;
  }
  get [dartx.height]() {
    return this.height;
  }
  set [dartx.height](value) {
    this.height = value;
  }
  get [dartx.incremental]() {
    return this.incremental;
  }
  set [dartx.incremental](value) {
    this.incremental = value;
  }
  get [dartx.indeterminate]() {
    return this.indeterminate;
  }
  set [dartx.indeterminate](value) {
    this.indeterminate = value;
  }
  get [dartx.inputMode]() {
    return this.inputMode;
  }
  set [dartx.inputMode](value) {
    this.inputMode = value;
  }
  get [dartx.labels]() {
    return this.labels;
  }
  get [dartx.list]() {
    return this.list;
  }
  get [dartx.max]() {
    return this.max;
  }
  set [dartx.max](value) {
    this.max = value;
  }
  get [dartx.maxLength]() {
    return this.maxLength;
  }
  set [dartx.maxLength](value) {
    this.maxLength = value;
  }
  get [dartx.min]() {
    return this.min;
  }
  set [dartx.min](value) {
    this.min = value;
  }
  get [dartx.minLength]() {
    return this.minLength;
  }
  set [dartx.minLength](value) {
    this.minLength = value;
  }
  get [dartx.multiple]() {
    return this.multiple;
  }
  set [dartx.multiple](value) {
    this.multiple = value;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.pattern]() {
    return this.pattern;
  }
  set [dartx.pattern](value) {
    this.pattern = value;
  }
  get [dartx.placeholder]() {
    return this.placeholder;
  }
  set [dartx.placeholder](value) {
    this.placeholder = value;
  }
  get [dartx.readOnly]() {
    return this.readOnly;
  }
  set [dartx.readOnly](value) {
    this.readOnly = value;
  }
  get [dartx.required]() {
    return this.required;
  }
  set [dartx.required](value) {
    this.required = value;
  }
  get [dartx.selectionDirection]() {
    return this.selectionDirection;
  }
  set [dartx.selectionDirection](value) {
    this.selectionDirection = value;
  }
  get [dartx.selectionEnd]() {
    return this.selectionEnd;
  }
  set [dartx.selectionEnd](value) {
    this.selectionEnd = value;
  }
  get [dartx.selectionStart]() {
    return this.selectionStart;
  }
  set [dartx.selectionStart](value) {
    this.selectionStart = value;
  }
  get [dartx.size]() {
    return this.size;
  }
  set [dartx.size](value) {
    this.size = value;
  }
  get [dartx.src]() {
    return this.src;
  }
  set [dartx.src](value) {
    this.src = value;
  }
  get [dartx.step]() {
    return this.step;
  }
  set [dartx.step](value) {
    this.step = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
  get [dartx.validationMessage]() {
    return this.validationMessage;
  }
  get [dartx.validity]() {
    return this.validity;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
  get [dartx.valueAsDate]() {
    return html_common.convertNativeToDart_DateTime(this[_get_valueAsDate]);
  }
  get [_get_valueAsDate]() {
    return this.valueAsDate;
  }
  set [dartx.valueAsDate](value) {
    this[_set_valueAsDate] = html_common.convertDartToNative_DateTime(value);
  }
  set [_set_valueAsDate](value) {
    this.valueAsDate = value;
  }
  get [dartx.valueAsNumber]() {
    return this.valueAsNumber;
  }
  set [dartx.valueAsNumber](value) {
    this.valueAsNumber = value;
  }
  get [dartx.entries]() {
    return this.webkitEntries;
  }
  get [dartx.directory]() {
    return this.webkitdirectory;
  }
  set [dartx.directory](value) {
    this.webkitdirectory = value;
  }
  get [dartx.width]() {
    return this.width;
  }
  set [dartx.width](value) {
    this.width = value;
  }
  get [dartx.willValidate]() {
    return this.willValidate;
  }
  [dartx.checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [dartx.reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [dartx.select](...args) {
    return this.select.apply(this, args);
  }
  [dartx.setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
  [dartx.setRangeText](...args) {
    return this.setRangeText.apply(this, args);
  }
  [dartx.setSelectionRange](...args) {
    return this.setSelectionRange.apply(this, args);
  }
  [dartx.stepDown](...args) {
    return this.stepDown.apply(this, args);
  }
  [dartx.stepUp](...args) {
    return this.stepUp.apply(this, args);
  }
};
dart.defineNamedConstructor(html.InputElement, 'created');
html.InputElement[dart.implements] = () => [html.HiddenInputElement, html.SearchInputElement, html.TextInputElement, html.UrlInputElement, html.TelephoneInputElement, html.EmailInputElement, html.PasswordInputElement, html.DateInputElement, html.MonthInputElement, html.WeekInputElement, html.TimeInputElement, html.LocalDateTimeInputElement, html.NumberInputElement, html.RangeInputElement, html.CheckboxInputElement, html.RadioButtonInputElement, html.FileUploadInputElement, html.SubmitButtonInputElement, html.ImageButtonInputElement, html.ResetButtonInputElement, html.ButtonInputElement];
dart.setSignature(html.InputElement, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.InputElement, [], {type: core.String}),
    _: dart.definiteFunctionType(html.InputElement, []),
    created: dart.definiteFunctionType(html.InputElement, [])
  }),
  fields: () => ({
    [dartx.accept]: core.String,
    [dartx.alt]: core.String,
    [dartx.autocapitalize]: core.String,
    [dartx.autocomplete]: core.String,
    [dartx.autofocus]: core.bool,
    [dartx.capture]: core.bool,
    [dartx.checked]: core.bool,
    [dartx.defaultChecked]: core.bool,
    [dartx.defaultValue]: core.String,
    [dartx.dirName]: core.String,
    [dartx.disabled]: core.bool,
    [dartx.files]: ListOfFile(),
    [dartx.form]: html.FormElement,
    [dartx.formAction]: core.String,
    [dartx.formEnctype]: core.String,
    [dartx.formMethod]: core.String,
    [dartx.formNoValidate]: core.bool,
    [dartx.formTarget]: core.String,
    [dartx.height]: core.int,
    [dartx.incremental]: core.bool,
    [dartx.indeterminate]: core.bool,
    [dartx.inputMode]: core.String,
    [dartx.labels]: ListOfNode(),
    [dartx.list]: html.HtmlElement,
    [dartx.max]: core.String,
    [dartx.maxLength]: core.int,
    [dartx.min]: core.String,
    [dartx.minLength]: core.int,
    [dartx.multiple]: core.bool,
    [dartx.name]: core.String,
    [dartx.pattern]: core.String,
    [dartx.placeholder]: core.String,
    [dartx.readOnly]: core.bool,
    [dartx.required]: core.bool,
    [dartx.selectionDirection]: core.String,
    [dartx.selectionEnd]: core.int,
    [dartx.selectionStart]: core.int,
    [dartx.size]: core.int,
    [dartx.src]: core.String,
    [dartx.step]: core.String,
    [dartx.type]: core.String,
    [dartx.validationMessage]: core.String,
    [dartx.validity]: html.ValidityState,
    [dartx.value]: core.String,
    [_get_valueAsDate]: dart.dynamic,
    [dartx.valueAsNumber]: core.num,
    [dartx.entries]: ListOfEntry(),
    [dartx.directory]: core.bool,
    [dartx.width]: core.int,
    [dartx.willValidate]: core.bool
  }),
  getters: () => ({[dartx.valueAsDate]: dart.definiteFunctionType(core.DateTime, [])}),
  setters: () => ({
    [dartx.valueAsDate]: dart.definiteFunctionType(dart.void, [core.DateTime]),
    [_set_valueAsDate]: dart.definiteFunctionType(dart.void, [dart.dynamic])
  }),
  methods: () => ({
    [dartx.checkValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.reportValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.select]: dart.definiteFunctionType(dart.void, []),
    [dartx.setCustomValidity]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.setRangeText]: dart.definiteFunctionType(dart.void, [core.String], {start: core.int, end: core.int, selectionMode: core.String}),
    [dartx.setSelectionRange]: dart.definiteFunctionType(dart.void, [core.int, core.int], [core.String]),
    [dartx.stepDown]: dart.definiteFunctionType(dart.void, [], [core.int]),
    [dartx.stepUp]: dart.definiteFunctionType(dart.void, [], [core.int])
  })
});
dart.registerExtension(dart.global.HTMLInputElement, html.InputElement);
dart.defineExtensionNames([
  'autofocus',
  'disabled',
  'incremental',
  'indeterminate',
  'name',
  'value'
]);
html.InputElementBase = class InputElementBase extends core.Object {
  new() {
    this[autofocus] = null;
    this[disabled] = null;
    this[incremental] = null;
    this[indeterminate] = null;
    this[name] = null;
    this[value] = null;
  }
  get autofocus() {
    return this[autofocus];
  }
  set autofocus(value) {
    this[autofocus] = value;
  }
  get disabled() {
    return this[disabled];
  }
  set disabled(value) {
    this[disabled] = value;
  }
  get incremental() {
    return this[incremental];
  }
  set incremental(value) {
    this[incremental] = value;
  }
  get indeterminate() {
    return this[indeterminate];
  }
  set indeterminate(value) {
    this[indeterminate] = value;
  }
  get name() {
    return this[name];
  }
  set name(value) {
    this[name] = value;
  }
  get value() {
    return this[value];
  }
  set value(value) {
    this[value] = value;
  }
};
const autofocus = Symbol(html.InputElementBase.name + "." + 'autofocus'.toString());
const disabled = Symbol(html.InputElementBase.name + "." + 'disabled'.toString());
const incremental = Symbol(html.InputElementBase.name + "." + 'incremental'.toString());
const indeterminate = Symbol(html.InputElementBase.name + "." + 'indeterminate'.toString());
const name = Symbol(html.InputElementBase.name + "." + 'name'.toString());
const value = Symbol(html.InputElementBase.name + "." + 'value'.toString());
html.InputElementBase[dart.implements] = () => [html.Element];
dart.setSignature(html.InputElementBase, {
  fields: () => ({
    autofocus: core.bool,
    disabled: core.bool,
    incremental: core.bool,
    indeterminate: core.bool,
    name: core.String,
    value: core.String
  })
});
dart.defineExtensionMembers(html.InputElementBase, [
  'autofocus',
  'autofocus',
  'disabled',
  'disabled',
  'incremental',
  'incremental',
  'indeterminate',
  'indeterminate',
  'name',
  'name',
  'value',
  'value'
]);
html.HiddenInputElement = class HiddenInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'hidden'});
  }
};
html.HiddenInputElement[dart.implements] = () => [html.InputElementBase];
dart.setSignature(html.HiddenInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.HiddenInputElement, [])})
});
dart.defineExtensionNames([
  'autocomplete',
  'maxLength',
  'pattern',
  'placeholder',
  'readOnly',
  'required',
  'size',
  'selectionDirection',
  'selectionEnd',
  'selectionStart'
]);
html.TextInputElementBase = class TextInputElementBase extends core.Object {
  new() {
    this[autocomplete] = null;
    this[maxLength] = null;
    this[pattern] = null;
    this[placeholder] = null;
    this[readOnly] = null;
    this[required] = null;
    this[size] = null;
    this[selectionDirection] = null;
    this[selectionEnd] = null;
    this[selectionStart] = null;
  }
  get autocomplete() {
    return this[autocomplete];
  }
  set autocomplete(value) {
    this[autocomplete] = value;
  }
  get maxLength() {
    return this[maxLength];
  }
  set maxLength(value) {
    this[maxLength] = value;
  }
  get pattern() {
    return this[pattern];
  }
  set pattern(value) {
    this[pattern] = value;
  }
  get placeholder() {
    return this[placeholder];
  }
  set placeholder(value) {
    this[placeholder] = value;
  }
  get readOnly() {
    return this[readOnly];
  }
  set readOnly(value) {
    this[readOnly] = value;
  }
  get required() {
    return this[required];
  }
  set required(value) {
    this[required] = value;
  }
  get size() {
    return this[size];
  }
  set size(value) {
    this[size] = value;
  }
  get selectionDirection() {
    return this[selectionDirection];
  }
  set selectionDirection(value) {
    this[selectionDirection] = value;
  }
  get selectionEnd() {
    return this[selectionEnd];
  }
  set selectionEnd(value) {
    this[selectionEnd] = value;
  }
  get selectionStart() {
    return this[selectionStart];
  }
  set selectionStart(value) {
    this[selectionStart] = value;
  }
};
const autocomplete = Symbol(html.TextInputElementBase.name + "." + 'autocomplete'.toString());
const maxLength = Symbol(html.TextInputElementBase.name + "." + 'maxLength'.toString());
const pattern = Symbol(html.TextInputElementBase.name + "." + 'pattern'.toString());
const placeholder = Symbol(html.TextInputElementBase.name + "." + 'placeholder'.toString());
const readOnly = Symbol(html.TextInputElementBase.name + "." + 'readOnly'.toString());
const required = Symbol(html.TextInputElementBase.name + "." + 'required'.toString());
const size = Symbol(html.TextInputElementBase.name + "." + 'size'.toString());
const selectionDirection = Symbol(html.TextInputElementBase.name + "." + 'selectionDirection'.toString());
const selectionEnd = Symbol(html.TextInputElementBase.name + "." + 'selectionEnd'.toString());
const selectionStart = Symbol(html.TextInputElementBase.name + "." + 'selectionStart'.toString());
html.TextInputElementBase[dart.implements] = () => [html.InputElementBase];
dart.setSignature(html.TextInputElementBase, {
  fields: () => ({
    autocomplete: core.String,
    maxLength: core.int,
    pattern: core.String,
    placeholder: core.String,
    readOnly: core.bool,
    required: core.bool,
    size: core.int,
    selectionDirection: core.String,
    selectionEnd: core.int,
    selectionStart: core.int
  })
});
dart.defineExtensionMembers(html.TextInputElementBase, [
  'autocomplete',
  'autocomplete',
  'maxLength',
  'maxLength',
  'pattern',
  'pattern',
  'placeholder',
  'placeholder',
  'readOnly',
  'readOnly',
  'required',
  'required',
  'size',
  'size',
  'selectionDirection',
  'selectionDirection',
  'selectionEnd',
  'selectionEnd',
  'selectionStart',
  'selectionStart'
]);
dart.defineExtensionNames([
  'dirName'
]);
html.SearchInputElement = class SearchInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'search'});
  }
  get dirName() {
    return this[dirName];
  }
  set dirName(value) {
    this[dirName] = value;
  }
  static get supported() {
    return html.InputElement.new({type: 'search'})[dartx.type] == 'search';
  }
};
const dirName = Symbol(html.SearchInputElement.name + "." + 'dirName'.toString());
html.SearchInputElement[dart.implements] = () => [html.TextInputElementBase];
dart.setSignature(html.SearchInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.SearchInputElement, [])}),
  fields: () => ({dirName: core.String}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineExtensionMembers(html.SearchInputElement, ['dirName', 'dirName']);
dart.defineExtensionNames([
  'dirName'
]);
html.TextInputElement = class TextInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'text'});
  }
  get dirName() {
    return this[dirName];
  }
  set dirName(value) {
    this[dirName] = value;
  }
};
const dirName = Symbol(html.TextInputElement.name + "." + 'dirName'.toString());
html.TextInputElement[dart.implements] = () => [html.TextInputElementBase];
dart.setSignature(html.TextInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.TextInputElement, [])}),
  fields: () => ({dirName: core.String})
});
dart.defineExtensionMembers(html.TextInputElement, ['dirName', 'dirName']);
html.UrlInputElement = class UrlInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'url'});
  }
  static get supported() {
    return html.InputElement.new({type: 'url'})[dartx.type] == 'url';
  }
};
html.UrlInputElement[dart.implements] = () => [html.TextInputElementBase];
dart.setSignature(html.UrlInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.UrlInputElement, [])}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
html.TelephoneInputElement = class TelephoneInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'tel'});
  }
  static get supported() {
    return html.InputElement.new({type: 'tel'})[dartx.type] == 'tel';
  }
};
html.TelephoneInputElement[dart.implements] = () => [html.TextInputElementBase];
dart.setSignature(html.TelephoneInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.TelephoneInputElement, [])}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineExtensionNames([
  'autocomplete',
  'autofocus',
  'maxLength',
  'multiple',
  'pattern',
  'placeholder',
  'readOnly',
  'required',
  'size'
]);
html.EmailInputElement = class EmailInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'email'});
  }
  get autocomplete() {
    return this[autocomplete];
  }
  set autocomplete(value) {
    this[autocomplete] = value;
  }
  get autofocus() {
    return this[autofocus];
  }
  set autofocus(value) {
    this[autofocus] = value;
  }
  get maxLength() {
    return this[maxLength];
  }
  set maxLength(value) {
    this[maxLength] = value;
  }
  get multiple() {
    return this[multiple];
  }
  set multiple(value) {
    this[multiple] = value;
  }
  get pattern() {
    return this[pattern];
  }
  set pattern(value) {
    this[pattern] = value;
  }
  get placeholder() {
    return this[placeholder];
  }
  set placeholder(value) {
    this[placeholder] = value;
  }
  get readOnly() {
    return this[readOnly];
  }
  set readOnly(value) {
    this[readOnly] = value;
  }
  get required() {
    return this[required];
  }
  set required(value) {
    this[required] = value;
  }
  get size() {
    return this[size];
  }
  set size(value) {
    this[size] = value;
  }
  static get supported() {
    return html.InputElement.new({type: 'email'})[dartx.type] == 'email';
  }
};
const autocomplete = Symbol(html.EmailInputElement.name + "." + 'autocomplete'.toString());
const autofocus = Symbol(html.EmailInputElement.name + "." + 'autofocus'.toString());
const maxLength = Symbol(html.EmailInputElement.name + "." + 'maxLength'.toString());
const multiple = Symbol(html.EmailInputElement.name + "." + 'multiple'.toString());
const pattern = Symbol(html.EmailInputElement.name + "." + 'pattern'.toString());
const placeholder = Symbol(html.EmailInputElement.name + "." + 'placeholder'.toString());
const readOnly = Symbol(html.EmailInputElement.name + "." + 'readOnly'.toString());
const required = Symbol(html.EmailInputElement.name + "." + 'required'.toString());
const size = Symbol(html.EmailInputElement.name + "." + 'size'.toString());
html.EmailInputElement[dart.implements] = () => [html.TextInputElementBase];
dart.setSignature(html.EmailInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.EmailInputElement, [])}),
  fields: () => ({
    autocomplete: core.String,
    autofocus: core.bool,
    maxLength: core.int,
    multiple: core.bool,
    pattern: core.String,
    placeholder: core.String,
    readOnly: core.bool,
    required: core.bool,
    size: core.int
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineExtensionMembers(html.EmailInputElement, [
  'autocomplete',
  'autocomplete',
  'autofocus',
  'autofocus',
  'maxLength',
  'maxLength',
  'multiple',
  'multiple',
  'pattern',
  'pattern',
  'placeholder',
  'placeholder',
  'readOnly',
  'readOnly',
  'required',
  'required',
  'size',
  'size'
]);
html.PasswordInputElement = class PasswordInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'password'});
  }
};
html.PasswordInputElement[dart.implements] = () => [html.TextInputElementBase];
dart.setSignature(html.PasswordInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.PasswordInputElement, [])})
});
dart.defineExtensionNames([
  'max',
  'min',
  'step',
  'valueAsNumber'
]);
html.RangeInputElementBase = class RangeInputElementBase extends core.Object {
  new() {
    this[max] = null;
    this[min] = null;
    this[step] = null;
    this[valueAsNumber] = null;
  }
  get max() {
    return this[max];
  }
  set max(value) {
    this[max] = value;
  }
  get min() {
    return this[min];
  }
  set min(value) {
    this[min] = value;
  }
  get step() {
    return this[step];
  }
  set step(value) {
    this[step] = value;
  }
  get valueAsNumber() {
    return this[valueAsNumber];
  }
  set valueAsNumber(value) {
    this[valueAsNumber] = value;
  }
};
const max = Symbol(html.RangeInputElementBase.name + "." + 'max'.toString());
const min = Symbol(html.RangeInputElementBase.name + "." + 'min'.toString());
const step = Symbol(html.RangeInputElementBase.name + "." + 'step'.toString());
const valueAsNumber = Symbol(html.RangeInputElementBase.name + "." + 'valueAsNumber'.toString());
html.RangeInputElementBase[dart.implements] = () => [html.InputElementBase];
dart.setSignature(html.RangeInputElementBase, {
  fields: () => ({
    max: core.String,
    min: core.String,
    step: core.String,
    valueAsNumber: core.num
  })
});
dart.defineExtensionMembers(html.RangeInputElementBase, [
  'max',
  'max',
  'min',
  'min',
  'step',
  'step',
  'valueAsNumber',
  'valueAsNumber'
]);
dart.defineExtensionNames([
  'valueAsDate',
  'readOnly',
  'required'
]);
html.DateInputElement = class DateInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'date'});
  }
  get valueAsDate() {
    return this[valueAsDate];
  }
  set valueAsDate(value) {
    this[valueAsDate] = value;
  }
  get readOnly() {
    return this[readOnly];
  }
  set readOnly(value) {
    this[readOnly] = value;
  }
  get required() {
    return this[required];
  }
  set required(value) {
    this[required] = value;
  }
  static get supported() {
    return html.InputElement.new({type: 'date'})[dartx.type] == 'date';
  }
};
const valueAsDate = Symbol(html.DateInputElement.name + "." + 'valueAsDate'.toString());
const readOnly = Symbol(html.DateInputElement.name + "." + 'readOnly'.toString());
const required = Symbol(html.DateInputElement.name + "." + 'required'.toString());
html.DateInputElement[dart.implements] = () => [html.RangeInputElementBase];
dart.setSignature(html.DateInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.DateInputElement, [])}),
  fields: () => ({
    valueAsDate: core.DateTime,
    readOnly: core.bool,
    required: core.bool
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineExtensionMembers(html.DateInputElement, [
  'valueAsDate',
  'valueAsDate',
  'readOnly',
  'readOnly',
  'required',
  'required'
]);
dart.defineExtensionNames([
  'valueAsDate',
  'readOnly',
  'required'
]);
html.MonthInputElement = class MonthInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'month'});
  }
  get valueAsDate() {
    return this[valueAsDate];
  }
  set valueAsDate(value) {
    this[valueAsDate] = value;
  }
  get readOnly() {
    return this[readOnly];
  }
  set readOnly(value) {
    this[readOnly] = value;
  }
  get required() {
    return this[required];
  }
  set required(value) {
    this[required] = value;
  }
  static get supported() {
    return html.InputElement.new({type: 'month'})[dartx.type] == 'month';
  }
};
const valueAsDate = Symbol(html.MonthInputElement.name + "." + 'valueAsDate'.toString());
const readOnly = Symbol(html.MonthInputElement.name + "." + 'readOnly'.toString());
const required = Symbol(html.MonthInputElement.name + "." + 'required'.toString());
html.MonthInputElement[dart.implements] = () => [html.RangeInputElementBase];
dart.setSignature(html.MonthInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.MonthInputElement, [])}),
  fields: () => ({
    valueAsDate: core.DateTime,
    readOnly: core.bool,
    required: core.bool
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineExtensionMembers(html.MonthInputElement, [
  'valueAsDate',
  'valueAsDate',
  'readOnly',
  'readOnly',
  'required',
  'required'
]);
dart.defineExtensionNames([
  'valueAsDate',
  'readOnly',
  'required'
]);
html.WeekInputElement = class WeekInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'week'});
  }
  get valueAsDate() {
    return this[valueAsDate];
  }
  set valueAsDate(value) {
    this[valueAsDate] = value;
  }
  get readOnly() {
    return this[readOnly];
  }
  set readOnly(value) {
    this[readOnly] = value;
  }
  get required() {
    return this[required];
  }
  set required(value) {
    this[required] = value;
  }
  static get supported() {
    return html.InputElement.new({type: 'week'})[dartx.type] == 'week';
  }
};
const valueAsDate = Symbol(html.WeekInputElement.name + "." + 'valueAsDate'.toString());
const readOnly = Symbol(html.WeekInputElement.name + "." + 'readOnly'.toString());
const required = Symbol(html.WeekInputElement.name + "." + 'required'.toString());
html.WeekInputElement[dart.implements] = () => [html.RangeInputElementBase];
dart.setSignature(html.WeekInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.WeekInputElement, [])}),
  fields: () => ({
    valueAsDate: core.DateTime,
    readOnly: core.bool,
    required: core.bool
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineExtensionMembers(html.WeekInputElement, [
  'valueAsDate',
  'valueAsDate',
  'readOnly',
  'readOnly',
  'required',
  'required'
]);
dart.defineExtensionNames([
  'valueAsDate',
  'readOnly',
  'required'
]);
html.TimeInputElement = class TimeInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'time'});
  }
  get valueAsDate() {
    return this[valueAsDate];
  }
  set valueAsDate(value) {
    this[valueAsDate] = value;
  }
  get readOnly() {
    return this[readOnly];
  }
  set readOnly(value) {
    this[readOnly] = value;
  }
  get required() {
    return this[required];
  }
  set required(value) {
    this[required] = value;
  }
  static get supported() {
    return html.InputElement.new({type: 'time'})[dartx.type] == 'time';
  }
};
const valueAsDate = Symbol(html.TimeInputElement.name + "." + 'valueAsDate'.toString());
const readOnly = Symbol(html.TimeInputElement.name + "." + 'readOnly'.toString());
const required = Symbol(html.TimeInputElement.name + "." + 'required'.toString());
html.TimeInputElement[dart.implements] = () => [html.RangeInputElementBase];
dart.setSignature(html.TimeInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.TimeInputElement, [])}),
  fields: () => ({
    valueAsDate: core.DateTime,
    readOnly: core.bool,
    required: core.bool
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineExtensionMembers(html.TimeInputElement, [
  'valueAsDate',
  'valueAsDate',
  'readOnly',
  'readOnly',
  'required',
  'required'
]);
dart.defineExtensionNames([
  'readOnly',
  'required'
]);
html.LocalDateTimeInputElement = class LocalDateTimeInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'datetime-local'});
  }
  get readOnly() {
    return this[readOnly];
  }
  set readOnly(value) {
    this[readOnly] = value;
  }
  get required() {
    return this[required];
  }
  set required(value) {
    this[required] = value;
  }
  static get supported() {
    return html.InputElement.new({type: 'datetime-local'})[dartx.type] == 'datetime-local';
  }
};
const readOnly = Symbol(html.LocalDateTimeInputElement.name + "." + 'readOnly'.toString());
const required = Symbol(html.LocalDateTimeInputElement.name + "." + 'required'.toString());
html.LocalDateTimeInputElement[dart.implements] = () => [html.RangeInputElementBase];
dart.setSignature(html.LocalDateTimeInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.LocalDateTimeInputElement, [])}),
  fields: () => ({
    readOnly: core.bool,
    required: core.bool
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineExtensionMembers(html.LocalDateTimeInputElement, ['readOnly', 'readOnly', 'required', 'required']);
dart.defineExtensionNames([
  'placeholder',
  'readOnly',
  'required'
]);
html.NumberInputElement = class NumberInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'number'});
  }
  get placeholder() {
    return this[placeholder];
  }
  set placeholder(value) {
    this[placeholder] = value;
  }
  get readOnly() {
    return this[readOnly];
  }
  set readOnly(value) {
    this[readOnly] = value;
  }
  get required() {
    return this[required];
  }
  set required(value) {
    this[required] = value;
  }
  static get supported() {
    return html.InputElement.new({type: 'number'})[dartx.type] == 'number';
  }
};
const placeholder = Symbol(html.NumberInputElement.name + "." + 'placeholder'.toString());
const readOnly = Symbol(html.NumberInputElement.name + "." + 'readOnly'.toString());
const required = Symbol(html.NumberInputElement.name + "." + 'required'.toString());
html.NumberInputElement[dart.implements] = () => [html.RangeInputElementBase];
dart.setSignature(html.NumberInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.NumberInputElement, [])}),
  fields: () => ({
    placeholder: core.String,
    readOnly: core.bool,
    required: core.bool
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineExtensionMembers(html.NumberInputElement, [
  'placeholder',
  'placeholder',
  'readOnly',
  'readOnly',
  'required',
  'required'
]);
html.RangeInputElement = class RangeInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'range'});
  }
  static get supported() {
    return html.InputElement.new({type: 'range'})[dartx.type] == 'range';
  }
};
html.RangeInputElement[dart.implements] = () => [html.RangeInputElementBase];
dart.setSignature(html.RangeInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.RangeInputElement, [])}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineExtensionNames([
  'checked',
  'required'
]);
html.CheckboxInputElement = class CheckboxInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'checkbox'});
  }
  get checked() {
    return this[checked];
  }
  set checked(value) {
    this[checked] = value;
  }
  get required() {
    return this[required];
  }
  set required(value) {
    this[required] = value;
  }
};
const checked = Symbol(html.CheckboxInputElement.name + "." + 'checked'.toString());
const required = Symbol(html.CheckboxInputElement.name + "." + 'required'.toString());
html.CheckboxInputElement[dart.implements] = () => [html.InputElementBase];
dart.setSignature(html.CheckboxInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.CheckboxInputElement, [])}),
  fields: () => ({
    checked: core.bool,
    required: core.bool
  })
});
dart.defineExtensionMembers(html.CheckboxInputElement, ['checked', 'checked', 'required', 'required']);
dart.defineExtensionNames([
  'checked',
  'required'
]);
html.RadioButtonInputElement = class RadioButtonInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'radio'});
  }
  get checked() {
    return this[checked];
  }
  set checked(value) {
    this[checked] = value;
  }
  get required() {
    return this[required];
  }
  set required(value) {
    this[required] = value;
  }
};
const checked = Symbol(html.RadioButtonInputElement.name + "." + 'checked'.toString());
const required = Symbol(html.RadioButtonInputElement.name + "." + 'required'.toString());
html.RadioButtonInputElement[dart.implements] = () => [html.InputElementBase];
dart.setSignature(html.RadioButtonInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.RadioButtonInputElement, [])}),
  fields: () => ({
    checked: core.bool,
    required: core.bool
  })
});
dart.defineExtensionMembers(html.RadioButtonInputElement, ['checked', 'checked', 'required', 'required']);
dart.defineExtensionNames([
  'accept',
  'multiple',
  'required',
  'files'
]);
html.FileUploadInputElement = class FileUploadInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'file'});
  }
  get accept() {
    return this[accept];
  }
  set accept(value) {
    this[accept] = value;
  }
  get multiple() {
    return this[multiple];
  }
  set multiple(value) {
    this[multiple] = value;
  }
  get required() {
    return this[required];
  }
  set required(value) {
    this[required] = value;
  }
  get files() {
    return this[files];
  }
  set files(value) {
    this[files] = value;
  }
};
const accept = Symbol(html.FileUploadInputElement.name + "." + 'accept'.toString());
const multiple = Symbol(html.FileUploadInputElement.name + "." + 'multiple'.toString());
const required = Symbol(html.FileUploadInputElement.name + "." + 'required'.toString());
const files = Symbol(html.FileUploadInputElement.name + "." + 'files'.toString());
html.FileUploadInputElement[dart.implements] = () => [html.InputElementBase];
dart.setSignature(html.FileUploadInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.FileUploadInputElement, [])}),
  fields: () => ({
    accept: core.String,
    multiple: core.bool,
    required: core.bool,
    files: ListOfFile()
  })
});
dart.defineExtensionMembers(html.FileUploadInputElement, [
  'accept',
  'accept',
  'multiple',
  'multiple',
  'required',
  'required',
  'files',
  'files'
]);
dart.defineExtensionNames([
  'formAction',
  'formEnctype',
  'formMethod',
  'formNoValidate',
  'formTarget'
]);
html.SubmitButtonInputElement = class SubmitButtonInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'submit'});
  }
  get formAction() {
    return this[formAction];
  }
  set formAction(value) {
    this[formAction] = value;
  }
  get formEnctype() {
    return this[formEnctype];
  }
  set formEnctype(value) {
    this[formEnctype] = value;
  }
  get formMethod() {
    return this[formMethod];
  }
  set formMethod(value) {
    this[formMethod] = value;
  }
  get formNoValidate() {
    return this[formNoValidate];
  }
  set formNoValidate(value) {
    this[formNoValidate] = value;
  }
  get formTarget() {
    return this[formTarget];
  }
  set formTarget(value) {
    this[formTarget] = value;
  }
};
const formAction = Symbol(html.SubmitButtonInputElement.name + "." + 'formAction'.toString());
const formEnctype = Symbol(html.SubmitButtonInputElement.name + "." + 'formEnctype'.toString());
const formMethod = Symbol(html.SubmitButtonInputElement.name + "." + 'formMethod'.toString());
const formNoValidate = Symbol(html.SubmitButtonInputElement.name + "." + 'formNoValidate'.toString());
const formTarget = Symbol(html.SubmitButtonInputElement.name + "." + 'formTarget'.toString());
html.SubmitButtonInputElement[dart.implements] = () => [html.InputElementBase];
dart.setSignature(html.SubmitButtonInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.SubmitButtonInputElement, [])}),
  fields: () => ({
    formAction: core.String,
    formEnctype: core.String,
    formMethod: core.String,
    formNoValidate: core.bool,
    formTarget: core.String
  })
});
dart.defineExtensionMembers(html.SubmitButtonInputElement, [
  'formAction',
  'formAction',
  'formEnctype',
  'formEnctype',
  'formMethod',
  'formMethod',
  'formNoValidate',
  'formNoValidate',
  'formTarget',
  'formTarget'
]);
dart.defineExtensionNames([
  'alt',
  'formAction',
  'formEnctype',
  'formMethod',
  'formNoValidate',
  'formTarget',
  'height',
  'src',
  'width'
]);
html.ImageButtonInputElement = class ImageButtonInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'image'});
  }
  get alt() {
    return this[alt];
  }
  set alt(value) {
    this[alt] = value;
  }
  get formAction() {
    return this[formAction];
  }
  set formAction(value) {
    this[formAction] = value;
  }
  get formEnctype() {
    return this[formEnctype];
  }
  set formEnctype(value) {
    this[formEnctype] = value;
  }
  get formMethod() {
    return this[formMethod];
  }
  set formMethod(value) {
    this[formMethod] = value;
  }
  get formNoValidate() {
    return this[formNoValidate];
  }
  set formNoValidate(value) {
    this[formNoValidate] = value;
  }
  get formTarget() {
    return this[formTarget];
  }
  set formTarget(value) {
    this[formTarget] = value;
  }
  get height() {
    return this[height];
  }
  set height(value) {
    this[height] = value;
  }
  get src() {
    return this[src];
  }
  set src(value) {
    this[src] = value;
  }
  get width() {
    return this[width];
  }
  set width(value) {
    this[width] = value;
  }
};
const alt = Symbol(html.ImageButtonInputElement.name + "." + 'alt'.toString());
const formAction = Symbol(html.ImageButtonInputElement.name + "." + 'formAction'.toString());
const formEnctype = Symbol(html.ImageButtonInputElement.name + "." + 'formEnctype'.toString());
const formMethod = Symbol(html.ImageButtonInputElement.name + "." + 'formMethod'.toString());
const formNoValidate = Symbol(html.ImageButtonInputElement.name + "." + 'formNoValidate'.toString());
const formTarget = Symbol(html.ImageButtonInputElement.name + "." + 'formTarget'.toString());
const height = Symbol(html.ImageButtonInputElement.name + "." + 'height'.toString());
const src = Symbol(html.ImageButtonInputElement.name + "." + 'src'.toString());
const width = Symbol(html.ImageButtonInputElement.name + "." + 'width'.toString());
html.ImageButtonInputElement[dart.implements] = () => [html.InputElementBase];
dart.setSignature(html.ImageButtonInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.ImageButtonInputElement, [])}),
  fields: () => ({
    alt: core.String,
    formAction: core.String,
    formEnctype: core.String,
    formMethod: core.String,
    formNoValidate: core.bool,
    formTarget: core.String,
    height: core.int,
    src: core.String,
    width: core.int
  })
});
dart.defineExtensionMembers(html.ImageButtonInputElement, [
  'alt',
  'alt',
  'formAction',
  'formAction',
  'formEnctype',
  'formEnctype',
  'formMethod',
  'formMethod',
  'formNoValidate',
  'formNoValidate',
  'formTarget',
  'formTarget',
  'height',
  'height',
  'src',
  'src',
  'width',
  'width'
]);
html.ResetButtonInputElement = class ResetButtonInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'reset'});
  }
};
html.ResetButtonInputElement[dart.implements] = () => [html.InputElementBase];
dart.setSignature(html.ResetButtonInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.ResetButtonInputElement, [])})
});
html.ButtonInputElement = class ButtonInputElement extends core.Object {
  static new() {
    return html.InputElement.new({type: 'button'});
  }
};
html.ButtonInputElement[dart.implements] = () => [html.InputElementBase];
dart.setSignature(html.ButtonInputElement, {
  constructors: () => ({new: dart.definiteFunctionType(html.ButtonInputElement, [])})
});
const _initKeyboardEvent = Symbol('_initKeyboardEvent');
const _keyIdentifier = Symbol('_keyIdentifier');
dart.defineExtensionNames([
  'keyCode',
  'charCode',
  'which',
  'getModifierState',
  'altKey',
  'code',
  'ctrlKey',
  'key',
  'keyLocation',
  'location',
  'metaKey',
  'repeat',
  'shiftKey'
]);
html.KeyboardEvent = class KeyboardEvent extends html.UIEvent {
  static new(type, opts) {
    let view = opts && 'view' in opts ? opts.view : null;
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let keyLocation = opts && 'keyLocation' in opts ? opts.keyLocation : 1;
    let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
    let altKey = opts && 'altKey' in opts ? opts.altKey : false;
    let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
    let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
    if (view == null) {
      view = html.window;
    }
    let e = html.KeyboardEvent._check(html.document[_createEvent]("KeyboardEvent"));
    e[_initKeyboardEvent](type, canBubble, cancelable, view, "", keyLocation, ctrlKey, altKey, shiftKey, metaKey);
    return e;
  }
  [_initKeyboardEvent](type, canBubble, cancelable, view, keyIdentifier, keyLocation, ctrlKey, altKey, shiftKey, metaKey) {
    if (typeof this.initKeyEvent == "function") {
      this.initKeyEvent(type, canBubble, cancelable, view, ctrlKey, altKey, shiftKey, metaKey, 0, 0);
    } else {
      this.initKeyboardEvent(type, canBubble, cancelable, view, keyIdentifier, keyLocation, ctrlKey, altKey, shiftKey, metaKey);
    }
  }
  get [dartx.keyCode]() {
    return this[_keyCode];
  }
  get [dartx.charCode]() {
    return this[_charCode];
  }
  get [dartx.which]() {
    return this[_which];
  }
  static _(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.KeyboardEvent._create_1(type, eventInitDict_1);
    }
    return html.KeyboardEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new KeyboardEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new KeyboardEvent(type);
  }
  get [dartx.altKey]() {
    return this.altKey;
  }
  get [dartx.code]() {
    return this.code;
  }
  get [dartx.ctrlKey]() {
    return this.ctrlKey;
  }
  get [dartx.key]() {
    return this.key;
  }
  get [_keyIdentifier]() {
    return this.keyIdentifier;
  }
  get [dartx.keyLocation]() {
    return this.keyLocation;
  }
  get [dartx.location]() {
    return this.location;
  }
  get [dartx.metaKey]() {
    return this.metaKey;
  }
  get [dartx.repeat]() {
    return this.repeat;
  }
  get [dartx.shiftKey]() {
    return this.shiftKey;
  }
  [dartx.getModifierState](...args) {
    return this.getModifierState.apply(this, args);
  }
};
dart.setSignature(html.KeyboardEvent, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.KeyboardEvent, [core.String], {view: html.Window, canBubble: core.bool, cancelable: core.bool, keyLocation: core.int, ctrlKey: core.bool, altKey: core.bool, shiftKey: core.bool, metaKey: core.bool}),
    _: dart.definiteFunctionType(html.KeyboardEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.altKey]: core.bool,
    [dartx.code]: core.String,
    [dartx.ctrlKey]: core.bool,
    [dartx.key]: core.String,
    [_keyIdentifier]: core.String,
    [dartx.keyLocation]: core.int,
    [dartx.location]: core.int,
    [dartx.metaKey]: core.bool,
    [dartx.repeat]: core.bool,
    [dartx.shiftKey]: core.bool
  }),
  getters: () => ({
    [dartx.keyCode]: dart.definiteFunctionType(core.int, []),
    [dartx.charCode]: dart.definiteFunctionType(core.int, []),
    [dartx.which]: dart.definiteFunctionType(core.int, [])
  }),
  methods: () => ({
    [_initKeyboardEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, html.Window, core.String, core.int, core.bool, core.bool, core.bool, core.bool]),
    [dartx.getModifierState]: dart.definiteFunctionType(core.bool, [core.String])
  }),
  sfields: () => ({
    DOM_KEY_LOCATION_LEFT: core.int,
    DOM_KEY_LOCATION_NUMPAD: core.int,
    DOM_KEY_LOCATION_RIGHT: core.int,
    DOM_KEY_LOCATION_STANDARD: core.int
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.KeyboardEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.KeyboardEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
html.KeyboardEvent.DOM_KEY_LOCATION_LEFT = 1;
html.KeyboardEvent.DOM_KEY_LOCATION_NUMPAD = 3;
html.KeyboardEvent.DOM_KEY_LOCATION_RIGHT = 2;
html.KeyboardEvent.DOM_KEY_LOCATION_STANDARD = 0;
dart.registerExtension(dart.global.KeyboardEvent, html.KeyboardEvent);
html.KeyframeEffect = class KeyframeEffect extends html.AnimationEffectReadOnly {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(target, keyframes, timing) {
    if (timing === void 0) timing = null;
    if (ListOfMap().is(keyframes) && (html.Element.is(target) || target == null) && timing == null) {
      return html.KeyframeEffect._create_1(target, keyframes);
    }
    if (typeof timing == 'number' && ListOfMap().is(keyframes) && (html.Element.is(target) || target == null)) {
      return html.KeyframeEffect._create_2(target, keyframes, timing);
    }
    if (core.Map.is(timing) && ListOfMap().is(keyframes) && (html.Element.is(target) || target == null)) {
      let timing_1 = html_common.convertDartToNative_Dictionary(timing);
      return html.KeyframeEffect._create_3(target, keyframes, timing_1);
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  static _create_1(target, keyframes) {
    return new KeyframeEffect(target, keyframes);
  }
  static _create_2(target, keyframes, timing) {
    return new KeyframeEffect(target, keyframes, timing);
  }
  static _create_3(target, keyframes, timing) {
    return new KeyframeEffect(target, keyframes, timing);
  }
};
dart.setSignature(html.KeyframeEffect, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.KeyframeEffect, []),
    new: dart.definiteFunctionType(html.KeyframeEffect, [html.Element, ListOfMap()], [dart.dynamic])
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.KeyframeEffect, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.KeyframeEffect, [dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_3: dart.definiteFunctionType(html.KeyframeEffect, [dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create_1', '_create_2', '_create_3']
});
dart.registerExtension(dart.global.KeyframeEffect, html.KeyframeEffect);
dart.defineExtensionNames([
  'checkValidity',
  'reportValidity',
  'setCustomValidity',
  'autofocus',
  'challenge',
  'disabled',
  'form',
  'keytype',
  'labels',
  'name',
  'type',
  'validationMessage',
  'validity',
  'willValidate'
]);
html.KeygenElement = class KeygenElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.KeygenElement._check(html.document[dartx.createElement]("keygen"));
  }
  created() {
    this[dartx.autofocus] = null;
    this[dartx.challenge] = null;
    this[dartx.disabled] = null;
    this[dartx.form] = null;
    this[dartx.keytype] = null;
    this[dartx.labels] = null;
    this[dartx.name] = null;
    this[dartx.type] = null;
    this[dartx.validationMessage] = null;
    this[dartx.validity] = null;
    this[dartx.willValidate] = null;
    super.created();
  }
  static get supported() {
    return dart.test(html.Element.isTagSupported('keygen')) && html.KeygenElement.is(html.Element.tag('keygen'));
  }
  get [dartx.autofocus]() {
    return this.autofocus;
  }
  set [dartx.autofocus](value) {
    this.autofocus = value;
  }
  get [dartx.challenge]() {
    return this.challenge;
  }
  set [dartx.challenge](value) {
    this.challenge = value;
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.form]() {
    return this.form;
  }
  get [dartx.keytype]() {
    return this.keytype;
  }
  set [dartx.keytype](value) {
    this.keytype = value;
  }
  get [dartx.labels]() {
    return this.labels;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  get [dartx.validationMessage]() {
    return this.validationMessage;
  }
  get [dartx.validity]() {
    return this.validity;
  }
  get [dartx.willValidate]() {
    return this.willValidate;
  }
  [dartx.checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [dartx.reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [dartx.setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
};
dart.defineNamedConstructor(html.KeygenElement, 'created');
dart.setSignature(html.KeygenElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.KeygenElement, []),
    new: dart.definiteFunctionType(html.KeygenElement, []),
    created: dart.definiteFunctionType(html.KeygenElement, [])
  }),
  fields: () => ({
    [dartx.autofocus]: core.bool,
    [dartx.challenge]: core.String,
    [dartx.disabled]: core.bool,
    [dartx.form]: html.FormElement,
    [dartx.keytype]: core.String,
    [dartx.labels]: ListOfNode(),
    [dartx.name]: core.String,
    [dartx.type]: core.String,
    [dartx.validationMessage]: core.String,
    [dartx.validity]: html.ValidityState,
    [dartx.willValidate]: core.bool
  }),
  methods: () => ({
    [dartx.checkValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.reportValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.setCustomValidity]: dart.definiteFunctionType(dart.void, [core.String])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.HTMLKeygenElement, html.KeygenElement);
dart.defineExtensionNames([
  'value'
]);
html.LIElement = class LIElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.LIElement._check(html.document[dartx.createElement]("li"));
  }
  created() {
    this[dartx.value] = null;
    super.created();
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
};
dart.defineNamedConstructor(html.LIElement, 'created');
dart.setSignature(html.LIElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.LIElement, []),
    new: dart.definiteFunctionType(html.LIElement, []),
    created: dart.definiteFunctionType(html.LIElement, [])
  }),
  fields: () => ({[dartx.value]: core.int})
});
dart.registerExtension(dart.global.HTMLLIElement, html.LIElement);
dart.defineExtensionNames([
  'control',
  'form',
  'htmlFor'
]);
html.LabelElement = class LabelElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.LabelElement._check(html.document[dartx.createElement]("label"));
  }
  created() {
    this[dartx.control] = null;
    this[dartx.form] = null;
    this[dartx.htmlFor] = null;
    super.created();
  }
  get [dartx.control]() {
    return this.control;
  }
  get [dartx.form]() {
    return this.form;
  }
  get [dartx.htmlFor]() {
    return this.htmlFor;
  }
  set [dartx.htmlFor](value) {
    this.htmlFor = value;
  }
};
dart.defineNamedConstructor(html.LabelElement, 'created');
dart.setSignature(html.LabelElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.LabelElement, []),
    new: dart.definiteFunctionType(html.LabelElement, []),
    created: dart.definiteFunctionType(html.LabelElement, [])
  }),
  fields: () => ({
    [dartx.control]: html.HtmlElement,
    [dartx.form]: html.FormElement,
    [dartx.htmlFor]: core.String
  })
});
dart.registerExtension(dart.global.HTMLLabelElement, html.LabelElement);
dart.defineExtensionNames([
  'form'
]);
html.LegendElement = class LegendElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.LegendElement._check(html.document[dartx.createElement]("legend"));
  }
  created() {
    this[dartx.form] = null;
    super.created();
  }
  get [dartx.form]() {
    return this.form;
  }
};
dart.defineNamedConstructor(html.LegendElement, 'created');
dart.setSignature(html.LegendElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.LegendElement, []),
    new: dart.definiteFunctionType(html.LegendElement, []),
    created: dart.definiteFunctionType(html.LegendElement, [])
  }),
  fields: () => ({[dartx.form]: html.FormElement})
});
dart.registerExtension(dart.global.HTMLLegendElement, html.LegendElement);
dart.defineExtensionNames([
  'supportsImport',
  'crossOrigin',
  'disabled',
  'href',
  'hreflang',
  'import',
  'integrity',
  'media',
  'rel',
  'sheet',
  'sizes',
  'type'
]);
html.LinkElement = class LinkElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.LinkElement._check(html.document[dartx.createElement]("link"));
  }
  created() {
    this[dartx.crossOrigin] = null;
    this[dartx.disabled] = null;
    this[dartx.href] = null;
    this[dartx.hreflang] = null;
    this[dartx.import] = null;
    this[dartx.integrity] = null;
    this[dartx.media] = null;
    this[dartx.rel] = null;
    this[dartx.sheet] = null;
    this[dartx.sizes] = null;
    this[dartx.type] = null;
    super.created();
  }
  get [dartx.crossOrigin]() {
    return this.crossOrigin;
  }
  set [dartx.crossOrigin](value) {
    this.crossOrigin = value;
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.href]() {
    return this.href;
  }
  set [dartx.href](value) {
    this.href = value;
  }
  get [dartx.hreflang]() {
    return this.hreflang;
  }
  set [dartx.hreflang](value) {
    this.hreflang = value;
  }
  get [dartx.import]() {
    return this.import;
  }
  get [dartx.integrity]() {
    return this.integrity;
  }
  set [dartx.integrity](value) {
    this.integrity = value;
  }
  get [dartx.media]() {
    return this.media;
  }
  set [dartx.media](value) {
    this.media = value;
  }
  get [dartx.rel]() {
    return this.rel;
  }
  set [dartx.rel](value) {
    this.rel = value;
  }
  get [dartx.sheet]() {
    return this.sheet;
  }
  get [dartx.sizes]() {
    return this.sizes;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
  get [dartx.supportsImport]() {
    return "import" in this;
  }
};
dart.defineNamedConstructor(html.LinkElement, 'created');
dart.setSignature(html.LinkElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.LinkElement, []),
    new: dart.definiteFunctionType(html.LinkElement, []),
    created: dart.definiteFunctionType(html.LinkElement, [])
  }),
  fields: () => ({
    [dartx.crossOrigin]: core.String,
    [dartx.disabled]: core.bool,
    [dartx.href]: core.String,
    [dartx.hreflang]: core.String,
    [dartx.import]: html.Document,
    [dartx.integrity]: core.String,
    [dartx.media]: core.String,
    [dartx.rel]: core.String,
    [dartx.sheet]: html.StyleSheet,
    [dartx.sizes]: html.DomSettableTokenList,
    [dartx.type]: core.String
  }),
  getters: () => ({[dartx.supportsImport]: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.HTMLLinkElement, html.LinkElement);
dart.defineExtensionNames([
  'assign',
  'reload',
  'replace',
  'origin',
  'toString',
  'ancestorOrigins',
  'hash',
  'host',
  'hostname',
  'href',
  'pathname',
  'port',
  'protocol',
  'search'
]);
html.Location = class Location extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.ancestorOrigins]() {
    return this.ancestorOrigins;
  }
  get [dartx.hash]() {
    return this.hash;
  }
  set [dartx.hash](value) {
    this.hash = value;
  }
  get [dartx.host]() {
    return this.host;
  }
  set [dartx.host](value) {
    this.host = value;
  }
  get [dartx.hostname]() {
    return this.hostname;
  }
  set [dartx.hostname](value) {
    this.hostname = value;
  }
  get [dartx.href]() {
    return this.href;
  }
  set [dartx.href](value) {
    this.href = value;
  }
  get [dartx.pathname]() {
    return this.pathname;
  }
  set [dartx.pathname](value) {
    this.pathname = value;
  }
  get [dartx.port]() {
    return this.port;
  }
  set [dartx.port](value) {
    this.port = value;
  }
  get [dartx.protocol]() {
    return this.protocol;
  }
  set [dartx.protocol](value) {
    this.protocol = value;
  }
  get [dartx.search]() {
    return this.search;
  }
  set [dartx.search](value) {
    this.search = value;
  }
  [dartx.assign](...args) {
    return this.assign.apply(this, args);
  }
  [dartx.reload](...args) {
    return this.reload.apply(this, args);
  }
  [dartx.replace](...args) {
    return this.replace.apply(this, args);
  }
  get [dartx.origin]() {
    if ("origin" in this) {
      return this.origin;
    }
    return dart.str`${this[dartx.protocol]}//${this[dartx.host]}`;
  }
  [dartx.toString]() {
    return String(this);
  }
};
html.Location[dart.implements] = () => [html.LocationBase];
dart.setSignature(html.Location, {
  constructors: () => ({_: dart.definiteFunctionType(html.Location, [])}),
  fields: () => ({
    [dartx.ancestorOrigins]: ListOfString(),
    [dartx.hash]: core.String,
    [dartx.host]: core.String,
    [dartx.hostname]: core.String,
    [dartx.href]: core.String,
    [dartx.pathname]: core.String,
    [dartx.port]: core.String,
    [dartx.protocol]: core.String,
    [dartx.search]: core.String
  }),
  getters: () => ({[dartx.origin]: dart.definiteFunctionType(core.String, [])}),
  methods: () => ({
    [dartx.assign]: dart.definiteFunctionType(dart.void, [], [core.String]),
    [dartx.reload]: dart.definiteFunctionType(dart.void, []),
    [dartx.replace]: dart.definiteFunctionType(dart.void, [core.String])
  })
});
dart.registerExtension(dart.global.Location, html.Location);
dart.defineExtensionNames([
  'areas',
  'name'
]);
html.MapElement = class MapElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.MapElement._check(html.document[dartx.createElement]("map"));
  }
  created() {
    this[dartx.areas] = null;
    this[dartx.name] = null;
    super.created();
  }
  get [dartx.areas]() {
    return this.areas;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
};
dart.defineNamedConstructor(html.MapElement, 'created');
dart.setSignature(html.MapElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MapElement, []),
    new: dart.definiteFunctionType(html.MapElement, []),
    created: dart.definiteFunctionType(html.MapElement, [])
  }),
  fields: () => ({
    [dartx.areas]: ListOfNode(),
    [dartx.name]: core.String
  })
});
dart.registerExtension(dart.global.HTMLMapElement, html.MapElement);
dart.defineExtensionNames([
  'pause',
  'play',
  'unpause',
  'buffered',
  'currentTime',
  'defaultPlaybackRate',
  'duration',
  'muted',
  'paused',
  'playbackRate',
  'playbackState',
  'played',
  'seekable',
  'volume'
]);
html.MediaController = class MediaController extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.MediaController._create_1();
  }
  static _create_1() {
    return new MediaController();
  }
  get [dartx.buffered]() {
    return this.buffered;
  }
  get [dartx.currentTime]() {
    return this.currentTime;
  }
  set [dartx.currentTime](value) {
    this.currentTime = value;
  }
  get [dartx.defaultPlaybackRate]() {
    return this.defaultPlaybackRate;
  }
  set [dartx.defaultPlaybackRate](value) {
    this.defaultPlaybackRate = value;
  }
  get [dartx.duration]() {
    return this.duration;
  }
  get [dartx.muted]() {
    return this.muted;
  }
  set [dartx.muted](value) {
    this.muted = value;
  }
  get [dartx.paused]() {
    return this.paused;
  }
  get [dartx.playbackRate]() {
    return this.playbackRate;
  }
  set [dartx.playbackRate](value) {
    this.playbackRate = value;
  }
  get [dartx.playbackState]() {
    return this.playbackState;
  }
  get [dartx.played]() {
    return this.played;
  }
  get [dartx.seekable]() {
    return this.seekable;
  }
  get [dartx.volume]() {
    return this.volume;
  }
  set [dartx.volume](value) {
    this.volume = value;
  }
  [dartx.pause](...args) {
    return this.pause.apply(this, args);
  }
  [dartx.play](...args) {
    return this.play.apply(this, args);
  }
  [dartx.unpause](...args) {
    return this.unpause.apply(this, args);
  }
};
dart.setSignature(html.MediaController, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MediaController, []),
    new: dart.definiteFunctionType(html.MediaController, [])
  }),
  fields: () => ({
    [dartx.buffered]: html.TimeRanges,
    [dartx.currentTime]: core.num,
    [dartx.defaultPlaybackRate]: core.num,
    [dartx.duration]: core.double,
    [dartx.muted]: core.bool,
    [dartx.paused]: core.bool,
    [dartx.playbackRate]: core.num,
    [dartx.playbackState]: core.String,
    [dartx.played]: html.TimeRanges,
    [dartx.seekable]: html.TimeRanges,
    [dartx.volume]: core.num
  }),
  methods: () => ({
    [dartx.pause]: dart.definiteFunctionType(dart.void, []),
    [dartx.play]: dart.definiteFunctionType(dart.void, []),
    [dartx.unpause]: dart.definiteFunctionType(dart.void, [])
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.MediaController, [])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.MediaController, html.MediaController);
dart.defineExtensionNames([
  'deviceId',
  'groupId',
  'kind',
  'label'
]);
html.MediaDeviceInfo = class MediaDeviceInfo extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.deviceId]() {
    return this.deviceId;
  }
  get [dartx.groupId]() {
    return this.groupId;
  }
  get [dartx.kind]() {
    return this.kind;
  }
  get [dartx.label]() {
    return this.label;
  }
};
dart.setSignature(html.MediaDeviceInfo, {
  constructors: () => ({_: dart.definiteFunctionType(html.MediaDeviceInfo, [])}),
  fields: () => ({
    [dartx.deviceId]: core.String,
    [dartx.groupId]: core.String,
    [dartx.kind]: core.String,
    [dartx.label]: core.String
  })
});
dart.registerExtension(dart.global.MediaDeviceInfo, html.MediaDeviceInfo);
const _getUserMedia_1 = Symbol('_getUserMedia_1');
dart.defineExtensionNames([
  'enumerateDevices',
  'getUserMedia'
]);
html.MediaDevices = class MediaDevices extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.enumerateDevices](...args) {
    return this.enumerateDevices.apply(this, args);
  }
  [dartx.getUserMedia](options) {
    let options_1 = html_common.convertDartToNative_Dictionary(options);
    return this[_getUserMedia_1](options_1);
  }
  [_getUserMedia_1](...args) {
    return this.getUserMedia.apply(this, args);
  }
};
dart.setSignature(html.MediaDevices, {
  constructors: () => ({_: dart.definiteFunctionType(html.MediaDevices, [])}),
  methods: () => ({
    [dartx.enumerateDevices]: dart.definiteFunctionType(async.Future, []),
    [dartx.getUserMedia]: dart.definiteFunctionType(async.Future, [core.Map]),
    [_getUserMedia_1]: dart.definiteFunctionType(async.Future, [dart.dynamic])
  })
});
dart.registerExtension(dart.global.MediaDevices, html.MediaDevices);
dart.defineExtensionNames([
  'initData',
  'initDataType'
]);
html.MediaEncryptedEvent = class MediaEncryptedEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.MediaEncryptedEvent._create_1(type, eventInitDict_1);
    }
    return html.MediaEncryptedEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MediaEncryptedEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MediaEncryptedEvent(type);
  }
  get [dartx.initData]() {
    return this.initData;
  }
  get [dartx.initDataType]() {
    return this.initDataType;
  }
};
dart.setSignature(html.MediaEncryptedEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MediaEncryptedEvent, []),
    new: dart.definiteFunctionType(html.MediaEncryptedEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.initData]: typed_data.ByteBuffer,
    [dartx.initDataType]: core.String
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.MediaEncryptedEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.MediaEncryptedEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.MediaEncryptedEvent, html.MediaEncryptedEvent);
dart.defineExtensionNames([
  'code'
]);
html.MediaError = class MediaError extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.code]() {
    return this.code;
  }
};
dart.setSignature(html.MediaError, {
  constructors: () => ({_: dart.definiteFunctionType(html.MediaError, [])}),
  fields: () => ({[dartx.code]: core.int}),
  sfields: () => ({
    MEDIA_ERR_ABORTED: core.int,
    MEDIA_ERR_DECODE: core.int,
    MEDIA_ERR_NETWORK: core.int,
    MEDIA_ERR_SRC_NOT_SUPPORTED: core.int
  })
});
html.MediaError.MEDIA_ERR_ABORTED = 1;
html.MediaError.MEDIA_ERR_DECODE = 3;
html.MediaError.MEDIA_ERR_NETWORK = 2;
html.MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
dart.registerExtension(dart.global.MediaError, html.MediaError);
dart.defineExtensionNames([
  'code',
  'systemCode'
]);
html.MediaKeyError = class MediaKeyError extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.code]() {
    return this.code;
  }
  get [dartx.systemCode]() {
    return this.systemCode;
  }
};
dart.setSignature(html.MediaKeyError, {
  constructors: () => ({_: dart.definiteFunctionType(html.MediaKeyError, [])}),
  fields: () => ({
    [dartx.code]: core.int,
    [dartx.systemCode]: core.int
  }),
  sfields: () => ({
    MEDIA_KEYERR_CLIENT: core.int,
    MEDIA_KEYERR_DOMAIN: core.int,
    MEDIA_KEYERR_HARDWARECHANGE: core.int,
    MEDIA_KEYERR_OUTPUT: core.int,
    MEDIA_KEYERR_SERVICE: core.int,
    MEDIA_KEYERR_UNKNOWN: core.int
  })
});
html.MediaKeyError.MEDIA_KEYERR_CLIENT = 2;
html.MediaKeyError.MEDIA_KEYERR_DOMAIN = 6;
html.MediaKeyError.MEDIA_KEYERR_HARDWARECHANGE = 5;
html.MediaKeyError.MEDIA_KEYERR_OUTPUT = 4;
html.MediaKeyError.MEDIA_KEYERR_SERVICE = 3;
html.MediaKeyError.MEDIA_KEYERR_UNKNOWN = 1;
dart.registerExtension(dart.global.MediaKeyError, html.MediaKeyError);
dart.defineExtensionNames([
  'defaultUrl',
  'errorCode',
  'initData',
  'keySystem',
  'message',
  'sessionId',
  'systemCode'
]);
html.MediaKeyEvent = class MediaKeyEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.MediaKeyEvent._create_1(type, eventInitDict_1);
    }
    return html.MediaKeyEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MediaKeyEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MediaKeyEvent(type);
  }
  get [dartx.defaultUrl]() {
    return this.defaultURL;
  }
  get [dartx.errorCode]() {
    return this.errorCode;
  }
  get [dartx.initData]() {
    return this.initData;
  }
  get [dartx.keySystem]() {
    return this.keySystem;
  }
  get [dartx.message]() {
    return this.message;
  }
  get [dartx.sessionId]() {
    return this.sessionId;
  }
  get [dartx.systemCode]() {
    return this.systemCode;
  }
};
dart.setSignature(html.MediaKeyEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MediaKeyEvent, []),
    new: dart.definiteFunctionType(html.MediaKeyEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.defaultUrl]: core.String,
    [dartx.errorCode]: html.MediaKeyError,
    [dartx.initData]: typed_data.Uint8List,
    [dartx.keySystem]: core.String,
    [dartx.message]: typed_data.Uint8List,
    [dartx.sessionId]: core.String,
    [dartx.systemCode]: core.int
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.MediaKeyEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.MediaKeyEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.MediaKeyEvent, html.MediaKeyEvent);
dart.defineExtensionNames([
  'message',
  'messageType'
]);
html.MediaKeyMessageEvent = class MediaKeyMessageEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.MediaKeyMessageEvent._create_1(type, eventInitDict_1);
    }
    return html.MediaKeyMessageEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MediaKeyMessageEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MediaKeyMessageEvent(type);
  }
  get [dartx.message]() {
    return this.message;
  }
  get [dartx.messageType]() {
    return this.messageType;
  }
};
dart.setSignature(html.MediaKeyMessageEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MediaKeyMessageEvent, []),
    new: dart.definiteFunctionType(html.MediaKeyMessageEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.message]: typed_data.ByteBuffer,
    [dartx.messageType]: core.String
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.MediaKeyMessageEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.MediaKeyMessageEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.MediaKeyMessageEvent, html.MediaKeyMessageEvent);
const _update = Symbol('_update');
dart.defineExtensionNames([
  'close',
  'generateRequest',
  'load',
  'remove',
  'closed',
  'expiration',
  'keyStatuses',
  'sessionId'
]);
html.MediaKeySession = class MediaKeySession extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.closed]() {
    return this.closed;
  }
  get [dartx.expiration]() {
    return this.expiration;
  }
  get [dartx.keyStatuses]() {
    return this.keyStatuses;
  }
  get [dartx.sessionId]() {
    return this.sessionId;
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [dartx.generateRequest](...args) {
    return this.generateRequest.apply(this, args);
  }
  [dartx.load](...args) {
    return this.load.apply(this, args);
  }
  [dartx.remove](...args) {
    return this.remove.apply(this, args);
  }
  [_update](...args) {
    return this.update.apply(this, args);
  }
};
dart.setSignature(html.MediaKeySession, {
  constructors: () => ({_: dart.definiteFunctionType(html.MediaKeySession, [])}),
  fields: () => ({
    [dartx.closed]: async.Future,
    [dartx.expiration]: core.double,
    [dartx.keyStatuses]: html.MediaKeyStatusMap,
    [dartx.sessionId]: core.String
  }),
  methods: () => ({
    [dartx.close]: dart.definiteFunctionType(async.Future, []),
    [dartx.generateRequest]: dart.definiteFunctionType(async.Future, [core.String, dart.dynamic]),
    [dartx.load]: dart.definiteFunctionType(async.Future, [core.String]),
    [dartx.remove]: dart.definiteFunctionType(async.Future, []),
    [_update]: dart.definiteFunctionType(async.Future, [dart.dynamic])
  })
});
dart.registerExtension(dart.global.MediaKeySession, html.MediaKeySession);
dart.defineExtensionNames([
  'size'
]);
html.MediaKeyStatusMap = class MediaKeyStatusMap extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.size]() {
    return this.size;
  }
};
dart.setSignature(html.MediaKeyStatusMap, {
  constructors: () => ({_: dart.definiteFunctionType(html.MediaKeyStatusMap, [])}),
  fields: () => ({[dartx.size]: core.int})
});
dart.registerExtension(dart.global.MediaKeyStatusMap, html.MediaKeyStatusMap);
const _getConfiguration_1 = Symbol('_getConfiguration_1');
dart.defineExtensionNames([
  'createMediaKeys',
  'getConfiguration',
  'keySystem'
]);
html.MediaKeySystemAccess = class MediaKeySystemAccess extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.keySystem]() {
    return this.keySystem;
  }
  [dartx.createMediaKeys](...args) {
    return this.createMediaKeys.apply(this, args);
  }
  [dartx.getConfiguration]() {
    return html_common.convertNativeToDart_Dictionary(this[_getConfiguration_1]());
  }
  [_getConfiguration_1](...args) {
    return this.getConfiguration.apply(this, args);
  }
};
dart.setSignature(html.MediaKeySystemAccess, {
  constructors: () => ({_: dart.definiteFunctionType(html.MediaKeySystemAccess, [])}),
  fields: () => ({[dartx.keySystem]: core.String}),
  methods: () => ({
    [dartx.createMediaKeys]: dart.definiteFunctionType(async.Future, []),
    [dartx.getConfiguration]: dart.definiteFunctionType(core.Map, []),
    [_getConfiguration_1]: dart.definiteFunctionType(dart.dynamic, [])
  })
});
dart.registerExtension(dart.global.MediaKeySystemAccess, html.MediaKeySystemAccess);
const _createSession = Symbol('_createSession');
dart.defineExtensionNames([
  'setServerCertificate'
]);
html.MediaKeys = class MediaKeys extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [_createSession](...args) {
    return this.createSession.apply(this, args);
  }
  [dartx.setServerCertificate](...args) {
    return this.setServerCertificate.apply(this, args);
  }
};
dart.setSignature(html.MediaKeys, {
  constructors: () => ({_: dart.definiteFunctionType(html.MediaKeys, [])}),
  methods: () => ({
    [_createSession]: dart.definiteFunctionType(html.MediaKeySession, [], [core.String]),
    [dartx.setServerCertificate]: dart.definiteFunctionType(async.Future, [dart.dynamic])
  })
});
dart.registerExtension(dart.global.MediaKeys, html.MediaKeys);
dart.defineExtensionNames([
  'appendMedium',
  'deleteMedium',
  'item',
  'length',
  'mediaText'
]);
html.MediaList = class MediaList extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.mediaText]() {
    return this.mediaText;
  }
  set [dartx.mediaText](value) {
    this.mediaText = value;
  }
  [dartx.appendMedium](...args) {
    return this.appendMedium.apply(this, args);
  }
  [dartx.deleteMedium](...args) {
    return this.deleteMedium.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
dart.setSignature(html.MediaList, {
  constructors: () => ({_: dart.definiteFunctionType(html.MediaList, [])}),
  fields: () => ({
    [dartx.length]: core.int,
    [dartx.mediaText]: core.String
  }),
  methods: () => ({
    [dartx.appendMedium]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.deleteMedium]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.item]: dart.definiteFunctionType(core.String, [core.int])
  })
});
dart.registerExtension(dart.global.MediaList, html.MediaList);
dart.defineExtensionNames([
  'addListener',
  'removeListener',
  'onChange',
  'matches',
  'media'
]);
html.MediaQueryList = class MediaQueryList extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.matches]() {
    return this.matches;
  }
  get [dartx.media]() {
    return this.media;
  }
  [dartx.addListener](...args) {
    return this.addListener.apply(this, args);
  }
  [dartx.removeListener](...args) {
    return this.removeListener.apply(this, args);
  }
  get [dartx.onChange]() {
    return html.MediaQueryList.changeEvent.forTarget(this);
  }
};
dart.setSignature(html.MediaQueryList, {
  constructors: () => ({_: dart.definiteFunctionType(html.MediaQueryList, [])}),
  fields: () => ({
    [dartx.matches]: core.bool,
    [dartx.media]: core.String
  }),
  getters: () => ({[dartx.onChange]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  methods: () => ({
    [dartx.addListener]: dart.definiteFunctionType(dart.void, [html.EventListener]),
    [dartx.removeListener]: dart.definiteFunctionType(dart.void, [html.EventListener])
  }),
  sfields: () => ({changeEvent: EventStreamProviderOfEvent()})
});
dart.defineLazy(html.MediaQueryList, {
  get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('change'));
  }
});
dart.registerExtension(dart.global.MediaQueryList, html.MediaQueryList);
dart.defineExtensionNames([
  'matches',
  'media'
]);
html.MediaQueryListEvent = class MediaQueryListEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.MediaQueryListEvent._create_1(type, eventInitDict_1);
    }
    return html.MediaQueryListEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MediaQueryListEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MediaQueryListEvent(type);
  }
  get [dartx.matches]() {
    return this.matches;
  }
  get [dartx.media]() {
    return this.media;
  }
};
dart.setSignature(html.MediaQueryListEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MediaQueryListEvent, []),
    new: dart.definiteFunctionType(html.MediaQueryListEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.matches]: core.bool,
    [dartx.media]: core.String
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.MediaQueryListEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.MediaQueryListEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.MediaQueryListEvent, html.MediaQueryListEvent);
dart.defineExtensionNames([
  'activate',
  'deactivate'
]);
html.MediaSession = class MediaSession extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.MediaSession._create_1();
  }
  static _create_1() {
    return new MediaSession();
  }
  [dartx.activate](...args) {
    return this.activate.apply(this, args);
  }
  [dartx.deactivate](...args) {
    return this.deactivate.apply(this, args);
  }
};
dart.setSignature(html.MediaSession, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MediaSession, []),
    new: dart.definiteFunctionType(html.MediaSession, [])
  }),
  methods: () => ({
    [dartx.activate]: dart.definiteFunctionType(dart.void, []),
    [dartx.deactivate]: dart.definiteFunctionType(dart.void, [])
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.MediaSession, [])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.MediaSession, html.MediaSession);
dart.defineExtensionNames([
  'addSourceBuffer',
  'endOfStream',
  'removeSourceBuffer',
  'activeSourceBuffers',
  'duration',
  'readyState',
  'sourceBuffers'
]);
html.MediaSource = class MediaSource extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.MediaSource._create_1();
  }
  static _create_1() {
    return new MediaSource();
  }
  static get supported() {
    return !!window.MediaSource;
  }
  get [dartx.activeSourceBuffers]() {
    return this.activeSourceBuffers;
  }
  get [dartx.duration]() {
    return this.duration;
  }
  set [dartx.duration](value) {
    this.duration = value;
  }
  get [dartx.readyState]() {
    return this.readyState;
  }
  get [dartx.sourceBuffers]() {
    return this.sourceBuffers;
  }
  [dartx.addSourceBuffer](...args) {
    return this.addSourceBuffer.apply(this, args);
  }
  [dartx.endOfStream](...args) {
    return this.endOfStream.apply(this, args);
  }
  [dartx.removeSourceBuffer](...args) {
    return this.removeSourceBuffer.apply(this, args);
  }
};
dart.setSignature(html.MediaSource, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MediaSource, []),
    new: dart.definiteFunctionType(html.MediaSource, [])
  }),
  fields: () => ({
    [dartx.activeSourceBuffers]: html.SourceBufferList,
    [dartx.duration]: core.num,
    [dartx.readyState]: core.String,
    [dartx.sourceBuffers]: html.SourceBufferList
  }),
  methods: () => ({
    [dartx.addSourceBuffer]: dart.definiteFunctionType(html.SourceBuffer, [core.String]),
    [dartx.endOfStream]: dart.definiteFunctionType(dart.void, [], [core.String]),
    [dartx.removeSourceBuffer]: dart.definiteFunctionType(dart.void, [html.SourceBuffer])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.MediaSource, []),
    isTypeSupported: dart.definiteFunctionType(core.bool, [core.String])
  }),
  names: ['_create_1', 'isTypeSupported']
});
dart.registerExtension(dart.global.MediaSource, html.MediaSource);
dart.defineExtensionNames([
  'addTrack',
  'clone',
  'getAudioTracks',
  'getTrackById',
  'getTracks',
  'getVideoTracks',
  'removeTrack',
  'stop',
  'onAddTrack',
  'onEnded',
  'onRemoveTrack',
  'active',
  'ended',
  'id',
  'label'
]);
html.MediaStream = class MediaStream extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(stream_OR_tracks) {
    if (stream_OR_tracks === void 0) stream_OR_tracks = null;
    if (stream_OR_tracks == null) {
      return html.MediaStream._create_1();
    }
    if (html.MediaStream.is(stream_OR_tracks) || stream_OR_tracks == null) {
      return html.MediaStream._create_2(stream_OR_tracks);
    }
    if (ListOfMediaStreamTrack().is(stream_OR_tracks) || stream_OR_tracks == null) {
      return html.MediaStream._create_3(stream_OR_tracks);
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  static _create_1() {
    return new MediaStream();
  }
  static _create_2(stream_OR_tracks) {
    return new MediaStream(stream_OR_tracks);
  }
  static _create_3(stream_OR_tracks) {
    return new MediaStream(stream_OR_tracks);
  }
  get [dartx.active]() {
    return this.active;
  }
  get [dartx.ended]() {
    return this.ended;
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.label]() {
    return this.label;
  }
  [dartx.addTrack](...args) {
    return this.addTrack.apply(this, args);
  }
  [dartx.clone](...args) {
    return this.clone.apply(this, args);
  }
  [dartx.getAudioTracks](...args) {
    return this.getAudioTracks.apply(this, args);
  }
  [dartx.getTrackById](...args) {
    return this.getTrackById.apply(this, args);
  }
  [dartx.getTracks](...args) {
    return this.getTracks.apply(this, args);
  }
  [dartx.getVideoTracks](...args) {
    return this.getVideoTracks.apply(this, args);
  }
  [dartx.removeTrack](...args) {
    return this.removeTrack.apply(this, args);
  }
  [dartx.stop](...args) {
    return this.stop.apply(this, args);
  }
  get [dartx.onAddTrack]() {
    return html.MediaStream.addTrackEvent.forTarget(this);
  }
  get [dartx.onEnded]() {
    return html.MediaStream.endedEvent.forTarget(this);
  }
  get [dartx.onRemoveTrack]() {
    return html.MediaStream.removeTrackEvent.forTarget(this);
  }
  static get supported() {
    return !!(html.window[dartx.navigator].getUserMedia || html.window[dartx.navigator].webkitGetUserMedia || html.window[dartx.navigator].mozGetUserMedia || html.window[dartx.navigator].msGetUserMedia);
  }
};
dart.setSignature(html.MediaStream, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MediaStream, []),
    new: dart.definiteFunctionType(html.MediaStream, [], [dart.dynamic])
  }),
  fields: () => ({
    [dartx.active]: core.bool,
    [dartx.ended]: core.bool,
    [dartx.id]: core.String,
    [dartx.label]: core.String
  }),
  getters: () => ({
    [dartx.onAddTrack]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onEnded]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onRemoveTrack]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  methods: () => ({
    [dartx.addTrack]: dart.definiteFunctionType(dart.void, [html.MediaStreamTrack]),
    [dartx.clone]: dart.definiteFunctionType(html.MediaStream, []),
    [dartx.getAudioTracks]: dart.definiteFunctionType(core.List$(html.MediaStreamTrack), []),
    [dartx.getTrackById]: dart.definiteFunctionType(html.MediaStreamTrack, [core.String]),
    [dartx.getTracks]: dart.definiteFunctionType(core.List$(html.MediaStreamTrack), []),
    [dartx.getVideoTracks]: dart.definiteFunctionType(core.List$(html.MediaStreamTrack), []),
    [dartx.removeTrack]: dart.definiteFunctionType(dart.void, [html.MediaStreamTrack]),
    [dartx.stop]: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({
    addTrackEvent: EventStreamProviderOfEvent(),
    endedEvent: EventStreamProviderOfEvent(),
    removeTrackEvent: EventStreamProviderOfEvent()
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.MediaStream, []),
    _create_2: dart.definiteFunctionType(html.MediaStream, [dart.dynamic]),
    _create_3: dart.definiteFunctionType(html.MediaStream, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2', '_create_3']
});
dart.defineLazy(html.MediaStream, {
  get addTrackEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('addtrack'));
  },
  get endedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('ended'));
  },
  get removeTrackEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('removetrack'));
  }
});
dart.registerExtension(dart.global.MediaStream, html.MediaStream);
dart.defineExtensionNames([
  'stream'
]);
html.MediaStreamEvent = class MediaStreamEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.MediaStreamEvent._create_1(type, eventInitDict_1);
    }
    return html.MediaStreamEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MediaStreamEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MediaStreamEvent(type);
  }
  static get supported() {
    return html_common.Device.isEventTypeSupported('MediaStreamEvent');
  }
  get [dartx.stream]() {
    return this.stream;
  }
};
dart.setSignature(html.MediaStreamEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MediaStreamEvent, []),
    new: dart.definiteFunctionType(html.MediaStreamEvent, [core.String], [core.Map])
  }),
  fields: () => ({[dartx.stream]: html.MediaStream}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.MediaStreamEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.MediaStreamEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.MediaStreamEvent, html.MediaStreamEvent);
dart.defineExtensionNames([
  'clone',
  'stop',
  'onEnded',
  'onMute',
  'onUnmute',
  'enabled',
  'id',
  'kind',
  'label',
  'muted',
  'readyState'
]);
html.MediaStreamTrack = class MediaStreamTrack extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.enabled]() {
    return this.enabled;
  }
  set [dartx.enabled](value) {
    this.enabled = value;
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.kind]() {
    return this.kind;
  }
  get [dartx.label]() {
    return this.label;
  }
  get [dartx.muted]() {
    return this.muted;
  }
  get [dartx.readyState]() {
    return this.readyState;
  }
  [dartx.clone](...args) {
    return this.clone.apply(this, args);
  }
  static getSources() {
    let completer = CompleterOfListOfSourceInfo().new();
    html.MediaStreamTrack._getSources(dart.fn(value => {
      completer.complete(value);
    }, ListOfSourceInfoTovoid()));
    return completer.future;
  }
  [dartx.stop](...args) {
    return this.stop.apply(this, args);
  }
  get [dartx.onEnded]() {
    return html.MediaStreamTrack.endedEvent.forTarget(this);
  }
  get [dartx.onMute]() {
    return html.MediaStreamTrack.muteEvent.forTarget(this);
  }
  get [dartx.onUnmute]() {
    return html.MediaStreamTrack.unmuteEvent.forTarget(this);
  }
};
dart.setSignature(html.MediaStreamTrack, {
  constructors: () => ({_: dart.definiteFunctionType(html.MediaStreamTrack, [])}),
  fields: () => ({
    [dartx.enabled]: core.bool,
    [dartx.id]: core.String,
    [dartx.kind]: core.String,
    [dartx.label]: core.String,
    [dartx.muted]: core.bool,
    [dartx.readyState]: core.String
  }),
  getters: () => ({
    [dartx.onEnded]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onMute]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onUnmute]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  methods: () => ({
    [dartx.clone]: dart.definiteFunctionType(html.MediaStreamTrack, []),
    [dartx.stop]: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({
    endedEvent: EventStreamProviderOfEvent(),
    muteEvent: EventStreamProviderOfEvent(),
    unmuteEvent: EventStreamProviderOfEvent()
  }),
  statics: () => ({
    _getSources: dart.definiteFunctionType(dart.void, [html.MediaStreamTrackSourcesCallback]),
    getSources: dart.definiteFunctionType(async.Future$(core.List$(html.SourceInfo)), [])
  }),
  names: ['_getSources', 'getSources']
});
dart.defineLazy(html.MediaStreamTrack, {
  get endedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('ended'));
  },
  get muteEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('mute'));
  },
  get unmuteEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('unmute'));
  }
});
dart.registerExtension(dart.global.MediaStreamTrack, html.MediaStreamTrack);
dart.defineExtensionNames([
  'track'
]);
html.MediaStreamTrackEvent = class MediaStreamTrackEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static get supported() {
    return html_common.Device.isEventTypeSupported('MediaStreamTrackEvent');
  }
  get [dartx.track]() {
    return this.track;
  }
};
dart.setSignature(html.MediaStreamTrackEvent, {
  constructors: () => ({_: dart.definiteFunctionType(html.MediaStreamTrackEvent, [])}),
  fields: () => ({[dartx.track]: html.MediaStreamTrack}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.MediaStreamTrackEvent, html.MediaStreamTrackEvent);
html.MediaStreamTrackSourcesCallback = dart.typedef('MediaStreamTrackSourcesCallback', () => dart.functionType(dart.void, [ListOfSourceInfo()]));
dart.defineExtensionNames([
  'jsHeapSizeLimit',
  'totalJSHeapSize',
  'usedJSHeapSize'
]);
html.MemoryInfo = class MemoryInfo extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.jsHeapSizeLimit]() {
    return this.jsHeapSizeLimit;
  }
  get [dartx.totalJSHeapSize]() {
    return this.totalJSHeapSize;
  }
  get [dartx.usedJSHeapSize]() {
    return this.usedJSHeapSize;
  }
};
dart.setSignature(html.MemoryInfo, {
  constructors: () => ({_: dart.definiteFunctionType(html.MemoryInfo, [])}),
  fields: () => ({
    [dartx.jsHeapSizeLimit]: core.int,
    [dartx.totalJSHeapSize]: core.int,
    [dartx.usedJSHeapSize]: core.int
  })
});
dart.registerExtension(dart.global.MemoryInfo, html.MemoryInfo);
dart.defineExtensionNames([
  'label',
  'type'
]);
html.MenuElement = class MenuElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.MenuElement._check(html.document[dartx.createElement]("menu"));
  }
  created() {
    this[dartx.label] = null;
    this[dartx.type] = null;
    super.created();
  }
  get [dartx.label]() {
    return this.label;
  }
  set [dartx.label](value) {
    this.label = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
};
dart.defineNamedConstructor(html.MenuElement, 'created');
dart.setSignature(html.MenuElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MenuElement, []),
    new: dart.definiteFunctionType(html.MenuElement, []),
    created: dart.definiteFunctionType(html.MenuElement, [])
  }),
  fields: () => ({
    [dartx.label]: core.String,
    [dartx.type]: core.String
  })
});
dart.registerExtension(dart.global.HTMLMenuElement, html.MenuElement);
dart.defineExtensionNames([
  'checked',
  'defaultValue',
  'disabled',
  'icon',
  'label',
  'radiogroup',
  'type'
]);
html.MenuItemElement = class MenuItemElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.checked] = null;
    this[dartx.defaultValue] = null;
    this[dartx.disabled] = null;
    this[dartx.icon] = null;
    this[dartx.label] = null;
    this[dartx.radiogroup] = null;
    this[dartx.type] = null;
    super.created();
  }
  get [dartx.checked]() {
    return this.checked;
  }
  set [dartx.checked](value) {
    this.checked = value;
  }
  get [dartx.defaultValue]() {
    return this.default;
  }
  set [dartx.defaultValue](value) {
    this.default = value;
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.icon]() {
    return this.icon;
  }
  set [dartx.icon](value) {
    this.icon = value;
  }
  get [dartx.label]() {
    return this.label;
  }
  set [dartx.label](value) {
    this.label = value;
  }
  get [dartx.radiogroup]() {
    return this.radiogroup;
  }
  set [dartx.radiogroup](value) {
    this.radiogroup = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
};
dart.defineNamedConstructor(html.MenuItemElement, 'created');
dart.setSignature(html.MenuItemElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MenuItemElement, []),
    created: dart.definiteFunctionType(html.MenuItemElement, [])
  }),
  fields: () => ({
    [dartx.checked]: core.bool,
    [dartx.defaultValue]: core.bool,
    [dartx.disabled]: core.bool,
    [dartx.icon]: core.String,
    [dartx.label]: core.String,
    [dartx.radiogroup]: core.String,
    [dartx.type]: core.String
  })
});
dart.registerExtension(dart.global.HTMLMenuItemElement, html.MenuItemElement);
dart.defineExtensionNames([
  'port1',
  'port2'
]);
html.MessageChannel = class MessageChannel extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.port1]() {
    return this.port1;
  }
  get [dartx.port2]() {
    return this.port2;
  }
};
dart.setSignature(html.MessageChannel, {
  constructors: () => ({_: dart.definiteFunctionType(html.MessageChannel, [])}),
  fields: () => ({
    [dartx.port1]: html.MessagePort,
    [dartx.port2]: html.MessagePort
  })
});
dart.registerExtension(dart.global.MessageChannel, html.MessageChannel);
const _initMessageEvent = Symbol('_initMessageEvent');
const _get_data = Symbol('_get_data');
const _get_source = Symbol('_get_source');
dart.defineExtensionNames([
  'data',
  'source',
  'lastEventId',
  'origin'
]);
html.MessageEvent = class MessageEvent extends html.Event {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : false;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : false;
    let data = opts && 'data' in opts ? opts.data : null;
    let origin = opts && 'origin' in opts ? opts.origin : null;
    let lastEventId = opts && 'lastEventId' in opts ? opts.lastEventId : null;
    let source = opts && 'source' in opts ? opts.source : null;
    let messagePorts = opts && 'messagePorts' in opts ? opts.messagePorts : null;
    if (source == null) {
      source = html.window;
    }
    if (!dart.test(html_common.Device.isIE)) {
      return new MessageEvent(type, {bubbles: canBubble, cancelable: cancelable, data: data, origin: origin, lastEventId: lastEventId, source: source, ports: messagePorts});
    }
    let event = html.MessageEvent._check(html.document[_createEvent]("MessageEvent"));
    event[_initMessageEvent](type, canBubble, cancelable, data, origin, lastEventId, source, messagePorts);
    return event;
  }
  get [dartx.data]() {
    return html_common.convertNativeToDart_SerializedScriptValue(this[_get_data]);
  }
  get [_get_data]() {
    return this.data;
  }
  static _(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.MessageEvent._create_1(type, eventInitDict_1);
    }
    return html.MessageEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MessageEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MessageEvent(type);
  }
  get [dartx.lastEventId]() {
    return this.lastEventId;
  }
  get [dartx.origin]() {
    return this.origin;
  }
  get [dartx.source]() {
    return html._convertNativeToDart_EventTarget(this[_get_source]);
  }
  get [_get_source]() {
    return this.source;
  }
  [_initMessageEvent](...args) {
    return this.initMessageEvent.apply(this, args);
  }
};
dart.setSignature(html.MessageEvent, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.MessageEvent, [core.String], {canBubble: core.bool, cancelable: core.bool, data: core.Object, origin: core.String, lastEventId: core.String, source: html.Window, messagePorts: ListOfMessagePort()}),
    _: dart.definiteFunctionType(html.MessageEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [_get_data]: dart.dynamic,
    [dartx.lastEventId]: core.String,
    [dartx.origin]: core.String,
    [_get_source]: dart.dynamic
  }),
  getters: () => ({
    [dartx.data]: dart.definiteFunctionType(dart.dynamic, []),
    [dartx.source]: dart.definiteFunctionType(html.EventTarget, [])
  }),
  methods: () => ({[_initMessageEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, core.Object, core.String, core.String, html.Window, ListOfMessagePort()])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.MessageEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.MessageEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.MessageEvent, html.MessageEvent);
dart.defineExtensionNames([
  'close',
  'postMessage',
  'start',
  'onMessage'
]);
html.MessagePort = class MessagePort extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [dartx.postMessage](message, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
  [dartx.start](...args) {
    return this.start.apply(this, args);
  }
  get [dartx.onMessage]() {
    return html.MessagePort.messageEvent.forTarget(this);
  }
};
dart.setSignature(html.MessagePort, {
  constructors: () => ({_: dart.definiteFunctionType(html.MessagePort, [])}),
  getters: () => ({[dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), [])}),
  methods: () => ({
    [dartx.close]: dart.definiteFunctionType(dart.void, []),
    [dartx.postMessage]: dart.definiteFunctionType(dart.void, [dart.dynamic], [ListOfMessagePort()]),
    [_postMessage_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, ListOfMessagePort()]),
    [_postMessage_2]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [dartx.start]: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({messageEvent: EventStreamProviderOfMessageEvent()})
});
dart.defineLazy(html.MessagePort, {
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  }
});
dart.registerExtension(dart.global.MessagePort, html.MessagePort);
dart.defineExtensionNames([
  'content',
  'httpEquiv',
  'name'
]);
html.MetaElement = class MetaElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.MetaElement._check(html.document[dartx.createElement]("meta"));
  }
  created() {
    this[dartx.content] = null;
    this[dartx.httpEquiv] = null;
    this[dartx.name] = null;
    super.created();
  }
  get [dartx.content]() {
    return this.content;
  }
  set [dartx.content](value) {
    this.content = value;
  }
  get [dartx.httpEquiv]() {
    return this.httpEquiv;
  }
  set [dartx.httpEquiv](value) {
    this.httpEquiv = value;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
};
dart.defineNamedConstructor(html.MetaElement, 'created');
dart.setSignature(html.MetaElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MetaElement, []),
    new: dart.definiteFunctionType(html.MetaElement, []),
    created: dart.definiteFunctionType(html.MetaElement, [])
  }),
  fields: () => ({
    [dartx.content]: core.String,
    [dartx.httpEquiv]: core.String,
    [dartx.name]: core.String
  })
});
dart.registerExtension(dart.global.HTMLMetaElement, html.MetaElement);
const _get_modificationTime = Symbol('_get_modificationTime');
dart.defineExtensionNames([
  'modificationTime',
  'size'
]);
html.Metadata = class Metadata extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.modificationTime]() {
    return html_common.convertNativeToDart_DateTime(this[_get_modificationTime]);
  }
  get [_get_modificationTime]() {
    return this.modificationTime;
  }
  get [dartx.size]() {
    return this.size;
  }
};
dart.setSignature(html.Metadata, {
  constructors: () => ({_: dart.definiteFunctionType(html.Metadata, [])}),
  fields: () => ({
    [_get_modificationTime]: dart.dynamic,
    [dartx.size]: core.int
  }),
  getters: () => ({[dartx.modificationTime]: dart.definiteFunctionType(core.DateTime, [])})
});
dart.registerExtension(dart.global.Metadata, html.Metadata);
html.MetadataCallback = dart.typedef('MetadataCallback', () => dart.functionType(dart.void, [html.Metadata]));
dart.defineExtensionNames([
  'high',
  'labels',
  'low',
  'max',
  'min',
  'optimum',
  'value'
]);
html.MeterElement = class MeterElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.MeterElement._check(html.document[dartx.createElement]("meter"));
  }
  created() {
    this[dartx.high] = null;
    this[dartx.labels] = null;
    this[dartx.low] = null;
    this[dartx.max] = null;
    this[dartx.min] = null;
    this[dartx.optimum] = null;
    this[dartx.value] = null;
    super.created();
  }
  static get supported() {
    return html.Element.isTagSupported('meter');
  }
  get [dartx.high]() {
    return this.high;
  }
  set [dartx.high](value) {
    this.high = value;
  }
  get [dartx.labels]() {
    return this.labels;
  }
  get [dartx.low]() {
    return this.low;
  }
  set [dartx.low](value) {
    this.low = value;
  }
  get [dartx.max]() {
    return this.max;
  }
  set [dartx.max](value) {
    this.max = value;
  }
  get [dartx.min]() {
    return this.min;
  }
  set [dartx.min](value) {
    this.min = value;
  }
  get [dartx.optimum]() {
    return this.optimum;
  }
  set [dartx.optimum](value) {
    this.optimum = value;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
};
dart.defineNamedConstructor(html.MeterElement, 'created');
dart.setSignature(html.MeterElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MeterElement, []),
    new: dart.definiteFunctionType(html.MeterElement, []),
    created: dart.definiteFunctionType(html.MeterElement, [])
  }),
  fields: () => ({
    [dartx.high]: core.num,
    [dartx.labels]: ListOfNode(),
    [dartx.low]: core.num,
    [dartx.max]: core.num,
    [dartx.min]: core.num,
    [dartx.optimum]: core.num,
    [dartx.value]: core.num
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.HTMLMeterElement, html.MeterElement);
dart.defineExtensionNames([
  'inputs',
  'outputs',
  'sysexEnabled'
]);
html.MidiAccess = class MidiAccess extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.inputs]() {
    return this.inputs;
  }
  get [dartx.outputs]() {
    return this.outputs;
  }
  get [dartx.sysexEnabled]() {
    return this.sysexEnabled;
  }
};
dart.setSignature(html.MidiAccess, {
  constructors: () => ({_: dart.definiteFunctionType(html.MidiAccess, [])}),
  fields: () => ({
    [dartx.inputs]: html.MidiInputMap,
    [dartx.outputs]: html.MidiOutputMap,
    [dartx.sysexEnabled]: core.bool
  })
});
dart.registerExtension(dart.global.MIDIAccess, html.MidiAccess);
dart.defineExtensionNames([
  'port'
]);
html.MidiConnectionEvent = class MidiConnectionEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.MidiConnectionEvent._create_1(type, eventInitDict_1);
    }
    return html.MidiConnectionEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MIDIConnectionEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MIDIConnectionEvent(type);
  }
  get [dartx.port]() {
    return this.port;
  }
};
dart.setSignature(html.MidiConnectionEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MidiConnectionEvent, []),
    new: dart.definiteFunctionType(html.MidiConnectionEvent, [core.String], [core.Map])
  }),
  fields: () => ({[dartx.port]: html.MidiPort}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.MidiConnectionEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.MidiConnectionEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.MIDIConnectionEvent, html.MidiConnectionEvent);
dart.defineExtensionNames([
  'close',
  'open',
  'connection',
  'id',
  'manufacturer',
  'name',
  'state',
  'type',
  'version'
]);
html.MidiPort = class MidiPort extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.connection]() {
    return this.connection;
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.manufacturer]() {
    return this.manufacturer;
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.state]() {
    return this.state;
  }
  get [dartx.type]() {
    return this.type;
  }
  get [dartx.version]() {
    return this.version;
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [dartx.open](...args) {
    return this.open.apply(this, args);
  }
};
dart.setSignature(html.MidiPort, {
  constructors: () => ({_: dart.definiteFunctionType(html.MidiPort, [])}),
  fields: () => ({
    [dartx.connection]: core.String,
    [dartx.id]: core.String,
    [dartx.manufacturer]: core.String,
    [dartx.name]: core.String,
    [dartx.state]: core.String,
    [dartx.type]: core.String,
    [dartx.version]: core.String
  }),
  methods: () => ({
    [dartx.close]: dart.definiteFunctionType(async.Future, []),
    [dartx.open]: dart.definiteFunctionType(async.Future, [])
  })
});
dart.registerExtension(dart.global.MIDIPort, html.MidiPort);
dart.defineExtensionNames([
  'onMidiMessage'
]);
html.MidiInput = class MidiInput extends html.MidiPort {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.onMidiMessage]() {
    return html.MidiInput.midiMessageEvent.forTarget(this);
  }
};
dart.setSignature(html.MidiInput, {
  constructors: () => ({_: dart.definiteFunctionType(html.MidiInput, [])}),
  getters: () => ({[dartx.onMidiMessage]: dart.definiteFunctionType(async.Stream$(html.MidiMessageEvent), [])}),
  sfields: () => ({midiMessageEvent: EventStreamProviderOfMidiMessageEvent()})
});
dart.defineLazy(html.MidiInput, {
  get midiMessageEvent() {
    return dart.const(new (EventStreamProviderOfMidiMessageEvent())('midimessage'));
  }
});
dart.registerExtension(dart.global.MIDIInput, html.MidiInput);
dart.defineExtensionNames([
  'size'
]);
html.MidiInputMap = class MidiInputMap extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.size]() {
    return this.size;
  }
};
dart.setSignature(html.MidiInputMap, {
  constructors: () => ({_: dart.definiteFunctionType(html.MidiInputMap, [])}),
  fields: () => ({[dartx.size]: core.int})
});
dart.registerExtension(dart.global.MIDIInputMap, html.MidiInputMap);
dart.defineExtensionNames([
  'data',
  'receivedTime'
]);
html.MidiMessageEvent = class MidiMessageEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.MidiMessageEvent._create_1(type, eventInitDict_1);
    }
    return html.MidiMessageEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MIDIMessageEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MIDIMessageEvent(type);
  }
  get [dartx.data]() {
    return this.data;
  }
  get [dartx.receivedTime]() {
    return this.receivedTime;
  }
};
dart.setSignature(html.MidiMessageEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.MidiMessageEvent, []),
    new: dart.definiteFunctionType(html.MidiMessageEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.data]: typed_data.Uint8List,
    [dartx.receivedTime]: core.double
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.MidiMessageEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.MidiMessageEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.MIDIMessageEvent, html.MidiMessageEvent);
dart.defineExtensionNames([
  'send'
]);
html.MidiOutput = class MidiOutput extends html.MidiPort {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.send](...args) {
    return this.send.apply(this, args);
  }
};
dart.setSignature(html.MidiOutput, {
  constructors: () => ({_: dart.definiteFunctionType(html.MidiOutput, [])}),
  methods: () => ({[dartx.send]: dart.definiteFunctionType(dart.void, [typed_data.Uint8List], [core.num])})
});
dart.registerExtension(dart.global.MIDIOutput, html.MidiOutput);
dart.defineExtensionNames([
  'size'
]);
html.MidiOutputMap = class MidiOutputMap extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.size]() {
    return this.size;
  }
};
dart.setSignature(html.MidiOutputMap, {
  constructors: () => ({_: dart.definiteFunctionType(html.MidiOutputMap, [])}),
  fields: () => ({[dartx.size]: core.int})
});
dart.registerExtension(dart.global.MIDIOutputMap, html.MidiOutputMap);
dart.defineExtensionNames([
  'description',
  'enabledPlugin',
  'suffixes',
  'type'
]);
html.MimeType = class MimeType extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.description]() {
    return this.description;
  }
  get [dartx.enabledPlugin]() {
    return this.enabledPlugin;
  }
  get [dartx.suffixes]() {
    return this.suffixes;
  }
  get [dartx.type]() {
    return this.type;
  }
};
dart.setSignature(html.MimeType, {
  constructors: () => ({_: dart.definiteFunctionType(html.MimeType, [])}),
  fields: () => ({
    [dartx.description]: core.String,
    [dartx.enabledPlugin]: html.Plugin,
    [dartx.suffixes]: core.String,
    [dartx.type]: core.String
  })
});
dart.registerExtension(dart.global.MimeType, html.MimeType);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item',
  'namedItem'
]);
html.MimeTypeArray = class MimeTypeArray extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.MimeType), html.ImmutableListMixin$(html.MimeType)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
  [dartx.namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
};
html.MimeTypeArray[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfMimeType()];
dart.setSignature(html.MimeTypeArray, {
  constructors: () => ({_: dart.definiteFunctionType(html.MimeTypeArray, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.MimeType, []),
    [dartx.last]: dart.definiteFunctionType(html.MimeType, []),
    [dartx.single]: dart.definiteFunctionType(html.MimeType, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.MimeType, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.MimeType]),
    [dartx.elementAt]: dart.definiteFunctionType(html.MimeType, [core.int]),
    [dartx.item]: dart.definiteFunctionType(html.MimeType, [core.int]),
    [dartx.namedItem]: dart.definiteFunctionType(html.MimeType, [core.String])
  })
});
dart.registerExtension(dart.global.MimeTypeArray, html.MimeTypeArray);
dart.defineExtensionNames([
  'cite',
  'dateTime'
]);
html.ModElement = class ModElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.cite] = null;
    this[dartx.dateTime] = null;
    super.created();
  }
  get [dartx.cite]() {
    return this.cite;
  }
  set [dartx.cite](value) {
    this.cite = value;
  }
  get [dartx.dateTime]() {
    return this.dateTime;
  }
  set [dartx.dateTime](value) {
    this.dateTime = value;
  }
};
dart.defineNamedConstructor(html.ModElement, 'created');
dart.setSignature(html.ModElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ModElement, []),
    created: dart.definiteFunctionType(html.ModElement, [])
  }),
  fields: () => ({
    [dartx.cite]: core.String,
    [dartx.dateTime]: core.String
  })
});
dart.registerExtension(dart.global.HTMLModElement, html.ModElement);
const _initMouseEvent = Symbol('_initMouseEvent');
const _clientX = Symbol('_clientX');
const _clientY = Symbol('_clientY');
const _layerX = Symbol('_layerX');
const _layerY = Symbol('_layerY');
const _movementX = Symbol('_movementX');
const _movementY = Symbol('_movementY');
const _pageX = Symbol('_pageX');
const _pageY = Symbol('_pageY');
const _screenX = Symbol('_screenX');
const _screenY = Symbol('_screenY');
const _webkitMovementX = Symbol('_webkitMovementX');
const _webkitMovementY = Symbol('_webkitMovementY');
const _initMouseEvent_1 = Symbol('_initMouseEvent_1');
dart.defineExtensionNames([
  'relatedTarget',
  'client',
  'movement',
  'offset',
  'screen',
  'layer',
  'page',
  'altKey',
  'button',
  'buttons',
  'ctrlKey',
  'dataTransfer',
  'fromElement',
  'metaKey',
  'region',
  'shiftKey',
  'toElement'
]);
html.MouseEvent = class MouseEvent extends html.UIEvent {
  static new(type, opts) {
    let view = opts && 'view' in opts ? opts.view : null;
    let detail = opts && 'detail' in opts ? opts.detail : 0;
    let screenX = opts && 'screenX' in opts ? opts.screenX : 0;
    let screenY = opts && 'screenY' in opts ? opts.screenY : 0;
    let clientX = opts && 'clientX' in opts ? opts.clientX : 0;
    let clientY = opts && 'clientY' in opts ? opts.clientY : 0;
    let button = opts && 'button' in opts ? opts.button : 0;
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
    let altKey = opts && 'altKey' in opts ? opts.altKey : false;
    let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
    let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
    let relatedTarget = opts && 'relatedTarget' in opts ? opts.relatedTarget : null;
    if (view == null) {
      view = html.window;
    }
    let event = html.MouseEvent._check(html.document[_createEvent]('MouseEvent'));
    event[_initMouseEvent](type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget);
    return event;
  }
  static _(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.MouseEvent._create_1(type, eventInitDict_1);
    }
    return html.MouseEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MouseEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MouseEvent(type);
  }
  get [dartx.altKey]() {
    return this.altKey;
  }
  get [dartx.button]() {
    return this.button;
  }
  get [dartx.buttons]() {
    return this.buttons;
  }
  get [_clientX]() {
    return this.clientX;
  }
  get [_clientY]() {
    return this.clientY;
  }
  get [dartx.ctrlKey]() {
    return this.ctrlKey;
  }
  get [dartx.dataTransfer]() {
    return this.dataTransfer;
  }
  get [dartx.fromElement]() {
    return this.fromElement;
  }
  get [_layerX]() {
    return this.layerX;
  }
  get [_layerY]() {
    return this.layerY;
  }
  get [dartx.metaKey]() {
    return this.metaKey;
  }
  get [_movementX]() {
    return this.movementX;
  }
  get [_movementY]() {
    return this.movementY;
  }
  get [_pageX]() {
    return this.pageX;
  }
  get [_pageY]() {
    return this.pageY;
  }
  get [dartx.region]() {
    return this.region;
  }
  get [dartx.relatedTarget]() {
    return html._convertNativeToDart_EventTarget(this[_get_relatedTarget]);
  }
  get [_get_relatedTarget]() {
    return this.relatedTarget;
  }
  get [_screenX]() {
    return this.screenX;
  }
  get [_screenY]() {
    return this.screenY;
  }
  get [dartx.shiftKey]() {
    return this.shiftKey;
  }
  get [dartx.toElement]() {
    return this.toElement;
  }
  get [_webkitMovementX]() {
    return this.webkitMovementX;
  }
  get [_webkitMovementY]() {
    return this.webkitMovementY;
  }
  [_initMouseEvent](type, bubbles, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget) {
    let relatedTarget_1 = html._convertDartToNative_EventTarget(relatedTarget);
    this[_initMouseEvent_1](type, bubbles, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget_1);
    return;
  }
  [_initMouseEvent_1](...args) {
    return this.initMouseEvent.apply(this, args);
  }
  get [dartx.client]() {
    return new (PointOfnum())(this[_clientX], this[_clientY]);
  }
  get [dartx.movement]() {
    return new (PointOfnum())(this[_webkitMovementX], this[_webkitMovementY]);
  }
  get [dartx.offset]() {
    if (!!this.offsetX) {
      let x = this.offsetX;
      let y = this.offsetY;
      return new (PointOfnum())(x, y);
    } else {
      if (!html.Element.is(this[dartx.target])) {
        dart.throw(new core.UnsupportedError('offsetX is only supported on elements'));
      }
      let target = html.Element._check(this[dartx.target]);
      let point = this[dartx.client]['-'](target[dartx.getBoundingClientRect]()[dartx.topLeft]);
      return new (PointOfnum())(point.x[dartx.toInt](), point.y[dartx.toInt]());
    }
  }
  get [dartx.screen]() {
    return new (PointOfnum())(this[_screenX], this[_screenY]);
  }
  get [dartx.layer]() {
    return new (PointOfnum())(this[_layerX], this[_layerY]);
  }
  get [dartx.page]() {
    return new (PointOfnum())(this[_pageX], this[_pageY]);
  }
};
dart.setSignature(html.MouseEvent, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.MouseEvent, [core.String], {view: html.Window, detail: core.int, screenX: core.int, screenY: core.int, clientX: core.int, clientY: core.int, button: core.int, canBubble: core.bool, cancelable: core.bool, ctrlKey: core.bool, altKey: core.bool, shiftKey: core.bool, metaKey: core.bool, relatedTarget: html.EventTarget}),
    _: dart.definiteFunctionType(html.MouseEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.altKey]: core.bool,
    [dartx.button]: core.int,
    [dartx.buttons]: core.int,
    [_clientX]: core.int,
    [_clientY]: core.int,
    [dartx.ctrlKey]: core.bool,
    [dartx.dataTransfer]: html.DataTransfer,
    [dartx.fromElement]: html.Node,
    [_layerX]: core.int,
    [_layerY]: core.int,
    [dartx.metaKey]: core.bool,
    [_movementX]: core.int,
    [_movementY]: core.int,
    [_pageX]: core.int,
    [_pageY]: core.int,
    [dartx.region]: core.String,
    [_get_relatedTarget]: dart.dynamic,
    [_screenX]: core.int,
    [_screenY]: core.int,
    [dartx.shiftKey]: core.bool,
    [dartx.toElement]: html.Node,
    [_webkitMovementX]: core.int,
    [_webkitMovementY]: core.int
  }),
  getters: () => ({
    [dartx.relatedTarget]: dart.definiteFunctionType(html.EventTarget, []),
    [dartx.client]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.movement]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.offset]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.screen]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.layer]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.page]: dart.definiteFunctionType(math.Point$(core.num), [])
  }),
  methods: () => ({
    [_initMouseEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, html.Window, core.int, core.int, core.int, core.int, core.int, core.bool, core.bool, core.bool, core.bool, core.int, html.EventTarget]),
    [_initMouseEvent_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, html.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.MouseEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.MouseEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.MouseEvent, html.MouseEvent);
dart.registerExtension(dart.global.DragEvent, html.MouseEvent);
html.MutationCallback = dart.typedef('MutationCallback', () => dart.functionType(dart.void, [ListOfMutationRecord(), html.MutationObserver]));
const _observe_1 = Symbol('_observe_1');
const _observe = Symbol('_observe');
const _call = Symbol('_call');
dart.defineExtensionNames([
  'disconnect',
  'takeRecords',
  'observe'
]);
html.MutationObserver = class MutationObserver extends _interceptors.Interceptor {
  [dartx.disconnect](...args) {
    return this.disconnect.apply(this, args);
  }
  [_observe](target, options) {
    let options_1 = html_common.convertDartToNative_Dictionary(options);
    this[_observe_1](target, options_1);
    return;
  }
  [_observe_1](...args) {
    return this.observe.apply(this, args);
  }
  [dartx.takeRecords](...args) {
    return this.takeRecords.apply(this, args);
  }
  static get supported() {
    return !!(window.MutationObserver || window.WebKitMutationObserver);
  }
  [dartx.observe](target, opts) {
    let childList = opts && 'childList' in opts ? opts.childList : null;
    let attributes = opts && 'attributes' in opts ? opts.attributes : null;
    let characterData = opts && 'characterData' in opts ? opts.characterData : null;
    let subtree = opts && 'subtree' in opts ? opts.subtree : null;
    let attributeOldValue = opts && 'attributeOldValue' in opts ? opts.attributeOldValue : null;
    let characterDataOldValue = opts && 'characterDataOldValue' in opts ? opts.characterDataOldValue : null;
    let attributeFilter = opts && 'attributeFilter' in opts ? opts.attributeFilter : null;
    let parsedOptions = html.MutationObserver._createDict();
    function override(key, value) {
      if (value != null) html.MutationObserver._add(parsedOptions, core.String._check(key), value);
    }
    dart.fn(override, dynamicAnddynamicTodynamic());
    override('childList', childList);
    override('attributes', attributes);
    override('characterData', characterData);
    override('subtree', subtree);
    override('attributeOldValue', attributeOldValue);
    override('characterDataOldValue', characterDataOldValue);
    if (attributeFilter != null) {
      override('attributeFilter', html.MutationObserver._fixupList(attributeFilter));
    }
    this[_call](target, parsedOptions);
  }
  static _createDict() {
    return {};
  }
  static _add(m, key, value) {
    m[key] = value;
  }
  static _fixupList(list) {
    return list;
  }
  [_call](...args) {
    return this.observe.apply(this, args);
  }
  static new(callback) {
    0;
    return new (window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver)(_js_helper.convertDartClosureToJS(html._wrapZoneBinaryCallback)(html._wrapBinaryZone(dart.dynamic, dart.dynamic, dart.dynamic)(callback), 2));
  }
};
dart.setSignature(html.MutationObserver, {
  constructors: () => ({new: dart.definiteFunctionType(html.MutationObserver, [html.MutationCallback])}),
  methods: () => ({
    [dartx.disconnect]: dart.definiteFunctionType(dart.void, []),
    [_observe]: dart.definiteFunctionType(dart.void, [html.Node, core.Map]),
    [_observe_1]: dart.definiteFunctionType(dart.void, [html.Node, dart.dynamic]),
    [dartx.takeRecords]: dart.definiteFunctionType(core.List$(html.MutationRecord), []),
    [dartx.observe]: dart.definiteFunctionType(dart.void, [html.Node], {childList: core.bool, attributes: core.bool, characterData: core.bool, subtree: core.bool, attributeOldValue: core.bool, characterDataOldValue: core.bool, attributeFilter: ListOfString()}),
    [_call]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic])
  }),
  sfields: () => ({_boolKeys: MapOfString$bool()}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({
    _createDict: dart.definiteFunctionType(dart.dynamic, []),
    _add: dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.String, dart.dynamic]),
    _fixupList: dart.definiteFunctionType(dart.dynamic, [dart.dynamic])
  }),
  names: ['_createDict', '_add', '_fixupList']
});
html.MutationObserver._boolKeys = dart.const(dart.map({childList: true, attributes: true, characterData: true, subtree: true, attributeOldValue: true, characterDataOldValue: true}, core.String, core.bool));
dart.registerExtension(dart.global.MutationObserver, html.MutationObserver);
dart.registerExtension(dart.global.WebKitMutationObserver, html.MutationObserver);
dart.defineExtensionNames([
  'addedNodes',
  'attributeName',
  'attributeNamespace',
  'nextSibling',
  'oldValue',
  'previousSibling',
  'removedNodes',
  'target',
  'type'
]);
html.MutationRecord = class MutationRecord extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.addedNodes]() {
    return this.addedNodes;
  }
  get [dartx.attributeName]() {
    return this.attributeName;
  }
  get [dartx.attributeNamespace]() {
    return this.attributeNamespace;
  }
  get [dartx.nextSibling]() {
    return this.nextSibling;
  }
  get [dartx.oldValue]() {
    return this.oldValue;
  }
  get [dartx.previousSibling]() {
    return this.previousSibling;
  }
  get [dartx.removedNodes]() {
    return this.removedNodes;
  }
  get [dartx.target]() {
    return this.target;
  }
  get [dartx.type]() {
    return this.type;
  }
};
dart.setSignature(html.MutationRecord, {
  constructors: () => ({_: dart.definiteFunctionType(html.MutationRecord, [])}),
  fields: () => ({
    [dartx.addedNodes]: ListOfNode(),
    [dartx.attributeName]: core.String,
    [dartx.attributeNamespace]: core.String,
    [dartx.nextSibling]: html.Node,
    [dartx.oldValue]: core.String,
    [dartx.previousSibling]: html.Node,
    [dartx.removedNodes]: ListOfNode(),
    [dartx.target]: html.Node,
    [dartx.type]: core.String
  })
});
dart.registerExtension(dart.global.MutationRecord, html.MutationRecord);
const _ensureGetUserMedia = Symbol('_ensureGetUserMedia');
const _getUserMedia = Symbol('_getUserMedia');
const _requestMidiAccess_1 = Symbol('_requestMidiAccess_1');
const _requestMidiAccess_2 = Symbol('_requestMidiAccess_2');
dart.defineExtensionNames([
  'language',
  'getUserMedia',
  'getBattery',
  'getGamepads',
  'getVRDevices',
  'registerProtocolHandler',
  'requestMidiAccess',
  'requestMediaKeySystemAccess',
  'sendBeacon',
  'getStorageUpdates',
  'bluetooth',
  'connection',
  'credentials',
  'doNotTrack',
  'geolocation',
  'maxTouchPoints',
  'mediaDevices',
  'mimeTypes',
  'permissions',
  'presentation',
  'productSub',
  'serviceWorker',
  'services',
  'storageQuota',
  'vendor',
  'vendorSub',
  'persistentStorage',
  'temporaryStorage',
  'hardwareConcurrency',
  'appCodeName',
  'appName',
  'appVersion',
  'dartEnabled',
  'platform',
  'product',
  'userAgent',
  'languages',
  'onLine',
  'cookieEnabled'
]);
html.Navigator = class Navigator extends _interceptors.Interceptor {
  get [dartx.language]() {
    return this.language || this.userLanguage;
  }
  [dartx.getUserMedia](opts) {
    let audio = opts && 'audio' in opts ? opts.audio : false;
    let video = opts && 'video' in opts ? opts.video : false;
    let completer = CompleterOfMediaStream().new();
    let options = dart.map({audio: audio, video: video}, core.String, dart.dynamic);
    this[_ensureGetUserMedia]();
    this[_getUserMedia](html_common.convertDartToNative_SerializedScriptValue(options), dart.fn(stream => {
      completer.complete(stream);
    }, MediaStreamTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, NavigatorUserMediaErrorTovoid()));
    return completer.future;
  }
  [_ensureGetUserMedia]() {
    if (!this.getUserMedia) {
      this.getUserMedia = this.getUserMedia || this.webkitGetUserMedia || this.mozGetUserMedia || this.msGetUserMedia;
    }
  }
  [_getUserMedia](...args) {
    return this.getUserMedia.apply(this, args);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.bluetooth]() {
    return this.bluetooth;
  }
  get [dartx.connection]() {
    return this.connection;
  }
  get [dartx.credentials]() {
    return this.credentials;
  }
  get [dartx.doNotTrack]() {
    return this.doNotTrack;
  }
  get [dartx.geolocation]() {
    return this.geolocation;
  }
  get [dartx.maxTouchPoints]() {
    return this.maxTouchPoints;
  }
  get [dartx.mediaDevices]() {
    return this.mediaDevices;
  }
  get [dartx.mimeTypes]() {
    return this.mimeTypes;
  }
  get [dartx.permissions]() {
    return this.permissions;
  }
  get [dartx.presentation]() {
    return this.presentation;
  }
  get [dartx.productSub]() {
    return this.productSub;
  }
  get [dartx.serviceWorker]() {
    return this.serviceWorker;
  }
  get [dartx.services]() {
    return this.services;
  }
  get [dartx.storageQuota]() {
    return this.storageQuota;
  }
  get [dartx.vendor]() {
    return this.vendor;
  }
  get [dartx.vendorSub]() {
    return this.vendorSub;
  }
  get [dartx.persistentStorage]() {
    return this.webkitPersistentStorage;
  }
  get [dartx.temporaryStorage]() {
    return this.webkitTemporaryStorage;
  }
  [dartx.getBattery](...args) {
    return this.getBattery.apply(this, args);
  }
  [dartx.getGamepads](...args) {
    return this.getGamepads.apply(this, args);
  }
  [dartx.getVRDevices](...args) {
    return this.getVRDevices.apply(this, args);
  }
  [dartx.registerProtocolHandler](...args) {
    return this.registerProtocolHandler.apply(this, args);
  }
  [dartx.requestMidiAccess](options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_requestMidiAccess_1](options_1);
    }
    return this[_requestMidiAccess_2]();
  }
  [_requestMidiAccess_1](...args) {
    return this.requestMIDIAccess.apply(this, args);
  }
  [_requestMidiAccess_2](...args) {
    return this.requestMIDIAccess.apply(this, args);
  }
  [dartx.requestMediaKeySystemAccess](...args) {
    return this.requestMediaKeySystemAccess.apply(this, args);
  }
  [dartx.sendBeacon](...args) {
    return this.sendBeacon.apply(this, args);
  }
  get [dartx.hardwareConcurrency]() {
    return this.hardwareConcurrency;
  }
  get [dartx.appCodeName]() {
    return this.appCodeName;
  }
  get [dartx.appName]() {
    return this.appName;
  }
  get [dartx.appVersion]() {
    return this.appVersion;
  }
  get [dartx.dartEnabled]() {
    return this.dartEnabled;
  }
  get [dartx.platform]() {
    return this.platform;
  }
  get [dartx.product]() {
    return this.product;
  }
  get [dartx.userAgent]() {
    return this.userAgent;
  }
  get [dartx.languages]() {
    return this.languages;
  }
  get [dartx.onLine]() {
    return this.onLine;
  }
  get [dartx.cookieEnabled]() {
    return this.cookieEnabled;
  }
  [dartx.getStorageUpdates](...args) {
    return this.getStorageUpdates.apply(this, args);
  }
};
html.Navigator[dart.implements] = () => [html.NavigatorStorageUtils, html.NavigatorCpu, html.NavigatorLanguage, html.NavigatorOnLine, html.NavigatorID];
dart.setSignature(html.Navigator, {
  constructors: () => ({_: dart.definiteFunctionType(html.Navigator, [])}),
  fields: () => ({
    [dartx.bluetooth]: html.Bluetooth,
    [dartx.connection]: html.NetworkInformation,
    [dartx.credentials]: html.CredentialsContainer,
    [dartx.doNotTrack]: core.String,
    [dartx.geolocation]: html.Geolocation,
    [dartx.maxTouchPoints]: core.int,
    [dartx.mediaDevices]: html.MediaDevices,
    [dartx.mimeTypes]: html.MimeTypeArray,
    [dartx.permissions]: html.Permissions,
    [dartx.presentation]: html.Presentation,
    [dartx.productSub]: core.String,
    [dartx.serviceWorker]: html.ServiceWorkerContainer,
    [dartx.services]: html.ServicePortCollection,
    [dartx.storageQuota]: html.StorageQuota,
    [dartx.vendor]: core.String,
    [dartx.vendorSub]: core.String,
    [dartx.persistentStorage]: html.DeprecatedStorageQuota,
    [dartx.temporaryStorage]: html.DeprecatedStorageQuota,
    [dartx.hardwareConcurrency]: core.int,
    [dartx.appCodeName]: core.String,
    [dartx.appName]: core.String,
    [dartx.appVersion]: core.String,
    [dartx.dartEnabled]: core.bool,
    [dartx.platform]: core.String,
    [dartx.product]: core.String,
    [dartx.userAgent]: core.String,
    [dartx.languages]: ListOfString(),
    [dartx.onLine]: core.bool,
    [dartx.cookieEnabled]: core.bool
  }),
  getters: () => ({[dartx.language]: dart.definiteFunctionType(core.String, [])}),
  methods: () => ({
    [dartx.getUserMedia]: dart.definiteFunctionType(async.Future$(html.MediaStream), [], {audio: dart.dynamic, video: dart.dynamic}),
    [_ensureGetUserMedia]: dart.definiteFunctionType(dart.dynamic, []),
    [_getUserMedia]: dart.definiteFunctionType(dart.void, [dart.dynamic, html._NavigatorUserMediaSuccessCallback, html._NavigatorUserMediaErrorCallback]),
    [dartx.getBattery]: dart.definiteFunctionType(async.Future, []),
    [dartx.getGamepads]: dart.definiteFunctionType(core.List$(html.Gamepad), []),
    [dartx.getVRDevices]: dart.definiteFunctionType(async.Future, []),
    [dartx.registerProtocolHandler]: dart.definiteFunctionType(dart.void, [core.String, core.String, core.String]),
    [dartx.requestMidiAccess]: dart.definiteFunctionType(async.Future, [], [core.Map]),
    [_requestMidiAccess_1]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [_requestMidiAccess_2]: dart.definiteFunctionType(async.Future, []),
    [dartx.requestMediaKeySystemAccess]: dart.definiteFunctionType(async.Future, [core.String, ListOfMap()]),
    [dartx.sendBeacon]: dart.definiteFunctionType(core.bool, [core.String, core.Object]),
    [dartx.getStorageUpdates]: dart.definiteFunctionType(dart.void, [])
  })
});
dart.registerExtension(dart.global.Navigator, html.Navigator);
dart.defineExtensionNames([
  'hardwareConcurrency'
]);
html.NavigatorCpu = class NavigatorCpu extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get hardwareConcurrency() {
    return this[hardwareConcurrency];
  }
  set hardwareConcurrency(value) {
    super.hardwareConcurrency = value;
  }
};
const hardwareConcurrency = Symbol(html.NavigatorCpu.name + "." + 'hardwareConcurrency'.toString());
dart.setSignature(html.NavigatorCpu, {
  constructors: () => ({_: dart.definiteFunctionType(html.NavigatorCpu, [])}),
  fields: () => ({hardwareConcurrency: core.int})
});
dart.defineExtensionMembers(html.NavigatorCpu, ['hardwareConcurrency']);
dart.defineExtensionNames([
  'appCodeName',
  'appName',
  'appVersion',
  'dartEnabled',
  'platform',
  'product',
  'userAgent'
]);
html.NavigatorID = class NavigatorID extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get appCodeName() {
    return this[appCodeName];
  }
  set appCodeName(value) {
    super.appCodeName = value;
  }
  get appName() {
    return this[appName];
  }
  set appName(value) {
    super.appName = value;
  }
  get appVersion() {
    return this[appVersion];
  }
  set appVersion(value) {
    super.appVersion = value;
  }
  get dartEnabled() {
    return this[dartEnabled];
  }
  set dartEnabled(value) {
    super.dartEnabled = value;
  }
  get platform() {
    return this[platform];
  }
  set platform(value) {
    super.platform = value;
  }
  get product() {
    return this[product];
  }
  set product(value) {
    super.product = value;
  }
  get userAgent() {
    return this[userAgent];
  }
  set userAgent(value) {
    super.userAgent = value;
  }
};
const appCodeName = Symbol(html.NavigatorID.name + "." + 'appCodeName'.toString());
const appName = Symbol(html.NavigatorID.name + "." + 'appName'.toString());
const appVersion = Symbol(html.NavigatorID.name + "." + 'appVersion'.toString());
const dartEnabled = Symbol(html.NavigatorID.name + "." + 'dartEnabled'.toString());
const platform = Symbol(html.NavigatorID.name + "." + 'platform'.toString());
const product = Symbol(html.NavigatorID.name + "." + 'product'.toString());
const userAgent = Symbol(html.NavigatorID.name + "." + 'userAgent'.toString());
dart.setSignature(html.NavigatorID, {
  constructors: () => ({_: dart.definiteFunctionType(html.NavigatorID, [])}),
  fields: () => ({
    appCodeName: core.String,
    appName: core.String,
    appVersion: core.String,
    dartEnabled: core.bool,
    platform: core.String,
    product: core.String,
    userAgent: core.String
  })
});
dart.defineExtensionMembers(html.NavigatorID, [
  'appCodeName',
  'appName',
  'appVersion',
  'dartEnabled',
  'platform',
  'product',
  'userAgent'
]);
dart.defineExtensionNames([
  'language',
  'languages'
]);
html.NavigatorLanguage = class NavigatorLanguage extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get language() {
    return this[language];
  }
  set language(value) {
    super.language = value;
  }
  get languages() {
    return this[languages];
  }
  set languages(value) {
    super.languages = value;
  }
};
const language = Symbol(html.NavigatorLanguage.name + "." + 'language'.toString());
const languages = Symbol(html.NavigatorLanguage.name + "." + 'languages'.toString());
dart.setSignature(html.NavigatorLanguage, {
  constructors: () => ({_: dart.definiteFunctionType(html.NavigatorLanguage, [])}),
  fields: () => ({
    language: core.String,
    languages: ListOfString()
  })
});
dart.defineExtensionMembers(html.NavigatorLanguage, ['language', 'languages']);
dart.defineExtensionNames([
  'onLine'
]);
html.NavigatorOnLine = class NavigatorOnLine extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get onLine() {
    return this[onLine];
  }
  set onLine(value) {
    super.onLine = value;
  }
};
const onLine = Symbol(html.NavigatorOnLine.name + "." + 'onLine'.toString());
dart.setSignature(html.NavigatorOnLine, {
  constructors: () => ({_: dart.definiteFunctionType(html.NavigatorOnLine, [])}),
  fields: () => ({onLine: core.bool})
});
dart.defineExtensionMembers(html.NavigatorOnLine, ['onLine']);
dart.defineExtensionNames([
  'getStorageUpdates',
  'cookieEnabled'
]);
html.NavigatorStorageUtils = class NavigatorStorageUtils extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.cookieEnabled]() {
    return this.cookieEnabled;
  }
  [dartx.getStorageUpdates](...args) {
    return this.getStorageUpdates.apply(this, args);
  }
};
dart.setSignature(html.NavigatorStorageUtils, {
  constructors: () => ({_: dart.definiteFunctionType(html.NavigatorStorageUtils, [])}),
  fields: () => ({[dartx.cookieEnabled]: core.bool}),
  methods: () => ({[dartx.getStorageUpdates]: dart.definiteFunctionType(dart.void, [])})
});
dart.registerExtension(dart.global.NavigatorStorageUtils, html.NavigatorStorageUtils);
dart.defineExtensionNames([
  'constraintName',
  'message',
  'name'
]);
html.NavigatorUserMediaError = class NavigatorUserMediaError extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.constraintName]() {
    return this.constraintName;
  }
  get [dartx.message]() {
    return this.message;
  }
  get [dartx.name]() {
    return this.name;
  }
};
dart.setSignature(html.NavigatorUserMediaError, {
  constructors: () => ({_: dart.definiteFunctionType(html.NavigatorUserMediaError, [])}),
  fields: () => ({
    [dartx.constraintName]: core.String,
    [dartx.message]: core.String,
    [dartx.name]: core.String
  })
});
dart.registerExtension(dart.global.NavigatorUserMediaError, html.NavigatorUserMediaError);
html._NavigatorUserMediaErrorCallback = dart.typedef('_NavigatorUserMediaErrorCallback', () => dart.functionType(dart.void, [html.NavigatorUserMediaError]));
html._NavigatorUserMediaSuccessCallback = dart.typedef('_NavigatorUserMediaSuccessCallback', () => dart.functionType(dart.void, [html.MediaStream]));
dart.defineExtensionNames([
  'type'
]);
html.NetworkInformation = class NetworkInformation extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.type]() {
    return this.type;
  }
};
dart.setSignature(html.NetworkInformation, {
  constructors: () => ({_: dart.definiteFunctionType(html.NetworkInformation, [])}),
  fields: () => ({[dartx.type]: core.String})
});
dart.registerExtension(dart.global.NetworkInformation, html.NetworkInformation);
html._ChildNodeListLazy = class _ChildNodeListLazy extends collection.ListBase$(html.Node) {
  new(this$) {
    this[_this] = this$;
  }
  get first() {
    let result = this[_this].firstChild;
    if (result == null) dart.throw(new core.StateError("No elements"));
    return result;
  }
  get last() {
    let result = this[_this].lastChild;
    if (result == null) dart.throw(new core.StateError("No elements"));
    return result;
  }
  get single() {
    let l = this.length;
    if (l == 0) dart.throw(new core.StateError("No elements"));
    if (dart.notNull(l) > 1) dart.throw(new core.StateError("More than one element"));
    return this[_this].firstChild;
  }
  add(value) {
    this[_this][dartx.append](value);
  }
  addAll(iterable) {
    if (html._ChildNodeListLazy.is(iterable)) {
      let otherList = iterable;
      if (!core.identical(otherList[_this], this[_this])) {
        for (let i = 0, len = otherList.length; i < dart.notNull(len); ++i) {
          this[_this][dartx.append](otherList[_this][dartx.firstChild]);
        }
      }
      return;
    }
    for (let node of iterable) {
      this[_this][dartx.append](node);
    }
  }
  insert(index, node) {
    if (dart.notNull(index) < 0 || dart.notNull(index) > dart.notNull(this.length)) {
      dart.throw(new core.RangeError.range(index, 0, this.length));
    }
    if (index == this.length) {
      this[_this][dartx.append](node);
    } else {
      this[_this][dartx.insertBefore](node, this._get(index));
    }
  }
  insertAll(index, iterable) {
    if (index == this.length) {
      this.addAll(iterable);
    } else {
      let item = this._get(index);
      this[_this][dartx.insertAllBefore](iterable, item);
    }
  }
  setAll(index, iterable) {
    dart.throw(new core.UnsupportedError("Cannot setAll on Node list"));
  }
  removeLast() {
    let result = this.last;
    if (result != null) {
      this[_this][_removeChild](result);
    }
    return result;
  }
  removeAt(index) {
    let result = this._get(index);
    if (result != null) {
      this[_this][_removeChild](result);
    }
    return result;
  }
  remove(object) {
    if (!html.Node.is(object)) return false;
    let node = html.Node._check(object);
    if (!core.identical(this[_this], node[dartx.parentNode])) return false;
    this[_this][_removeChild](node);
    return true;
  }
  [_filter](test, removeMatching) {
    let child = this[_this][dartx.firstChild];
    while (child != null) {
      let nextChild = child[dartx.nextNode];
      if (test(child) == removeMatching) {
        this[_this][_removeChild](child);
      }
      child = nextChild;
    }
  }
  removeWhere(test) {
    this[_filter](test, true);
  }
  retainWhere(test) {
    this[_filter](test, false);
  }
  clear() {
    this[_this][_clearChildren]();
  }
  _set(index, value) {
    this[_this][_replaceChild](value, this._get(index));
    return value;
  }
  get iterator() {
    return this[_this][dartx.childNodes][dartx.iterator];
  }
  sort(compare) {
    if (compare === void 0) compare = null;
    dart.throw(new core.UnsupportedError("Cannot sort Node list"));
  }
  shuffle(random) {
    if (random === void 0) random = null;
    dart.throw(new core.UnsupportedError("Cannot shuffle Node list"));
  }
  setRange(start, end, iterable, skipCount) {
    if (skipCount === void 0) skipCount = 0;
    dart.throw(new core.UnsupportedError("Cannot setRange on Node list"));
  }
  fillRange(start, end, fill) {
    if (fill === void 0) fill = null;
    dart.throw(new core.UnsupportedError("Cannot fillRange on Node list"));
  }
  get length() {
    return this[_this][dartx.childNodes][dartx.length];
  }
  set length(value) {
    dart.throw(new core.UnsupportedError("Cannot set length on immutable List."));
  }
  _get(index) {
    return this[_this][dartx.childNodes][dartx._get](index);
  }
  get rawList() {
    return this[_this][dartx.childNodes];
  }
};
dart.addSimpleTypeTests(html._ChildNodeListLazy);
html._ChildNodeListLazy[dart.implements] = () => [html_common.NodeListWrapper];
dart.setSignature(html._ChildNodeListLazy, {
  constructors: () => ({new: dart.definiteFunctionType(html._ChildNodeListLazy, [html.Node])}),
  fields: () => ({[_this]: html.Node}),
  getters: () => ({
    first: dart.definiteFunctionType(html.Node, []),
    last: dart.definiteFunctionType(html.Node, []),
    single: dart.definiteFunctionType(html.Node, []),
    iterator: dart.definiteFunctionType(core.Iterator$(html.Node), []),
    length: dart.definiteFunctionType(core.int, []),
    rawList: dart.definiteFunctionType(core.List$(html.Node), [])
  }),
  setters: () => ({length: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    add: dart.definiteFunctionType(dart.void, [html.Node]),
    addAll: dart.definiteFunctionType(dart.void, [IterableOfNode()]),
    insert: dart.definiteFunctionType(dart.void, [core.int, html.Node]),
    insertAll: dart.definiteFunctionType(dart.void, [core.int, IterableOfNode()]),
    setAll: dart.definiteFunctionType(dart.void, [core.int, IterableOfNode()]),
    removeLast: dart.definiteFunctionType(html.Node, []),
    removeAt: dart.definiteFunctionType(html.Node, [core.int]),
    [_filter]: dart.definiteFunctionType(dart.void, [NodeTobool(), core.bool]),
    removeWhere: dart.definiteFunctionType(dart.void, [NodeTobool()]),
    retainWhere: dart.definiteFunctionType(dart.void, [NodeTobool()]),
    _set: dart.definiteFunctionType(dart.void, [core.int, html.Node]),
    sort: dart.definiteFunctionType(dart.void, [], [ComparatorOfNode()]),
    setRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfNode()], [core.int]),
    fillRange: dart.definiteFunctionType(dart.void, [core.int, core.int], [html.Node]),
    _get: dart.definiteFunctionType(html.Node, [core.int])
  })
});
dart.defineExtensionMembers(html._ChildNodeListLazy, [
  'add',
  'addAll',
  'insert',
  'insertAll',
  'setAll',
  'removeLast',
  'removeAt',
  'remove',
  'removeWhere',
  'retainWhere',
  'clear',
  '_set',
  'sort',
  'shuffle',
  'setRange',
  'fillRange',
  '_get',
  'first',
  'last',
  'single',
  'iterator',
  'length',
  'length'
]);
html.NodeFilter = class NodeFilter extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.NodeFilter, {
  constructors: () => ({_: dart.definiteFunctionType(html.NodeFilter, [])}),
  sfields: () => ({
    FILTER_ACCEPT: core.int,
    FILTER_REJECT: core.int,
    FILTER_SKIP: core.int,
    SHOW_ALL: core.int,
    SHOW_COMMENT: core.int,
    SHOW_DOCUMENT: core.int,
    SHOW_DOCUMENT_FRAGMENT: core.int,
    SHOW_DOCUMENT_TYPE: core.int,
    SHOW_ELEMENT: core.int,
    SHOW_PROCESSING_INSTRUCTION: core.int,
    SHOW_TEXT: core.int
  })
});
html.NodeFilter.FILTER_ACCEPT = 1;
html.NodeFilter.FILTER_REJECT = 2;
html.NodeFilter.FILTER_SKIP = 3;
html.NodeFilter.SHOW_ALL = 4294967295;
html.NodeFilter.SHOW_COMMENT = 128;
html.NodeFilter.SHOW_DOCUMENT = 256;
html.NodeFilter.SHOW_DOCUMENT_FRAGMENT = 1024;
html.NodeFilter.SHOW_DOCUMENT_TYPE = 512;
html.NodeFilter.SHOW_ELEMENT = 1;
html.NodeFilter.SHOW_PROCESSING_INSTRUCTION = 64;
html.NodeFilter.SHOW_TEXT = 4;
dart.registerExtension(dart.global.NodeFilter, html.NodeFilter);
dart.defineExtensionNames([
  'detach',
  'nextNode',
  'previousNode',
  'pointerBeforeReferenceNode',
  'referenceNode',
  'root',
  'whatToShow'
]);
html.NodeIterator = class NodeIterator extends _interceptors.Interceptor {
  static new(root, whatToShow) {
    return html.document[_createNodeIterator](root, whatToShow, null);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.pointerBeforeReferenceNode]() {
    return this.pointerBeforeReferenceNode;
  }
  get [dartx.referenceNode]() {
    return this.referenceNode;
  }
  get [dartx.root]() {
    return this.root;
  }
  get [dartx.whatToShow]() {
    return this.whatToShow;
  }
  [dartx.detach](...args) {
    return this.detach.apply(this, args);
  }
  [dartx.nextNode](...args) {
    return this.nextNode.apply(this, args);
  }
  [dartx.previousNode](...args) {
    return this.previousNode.apply(this, args);
  }
};
dart.setSignature(html.NodeIterator, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.NodeIterator, [html.Node, core.int]),
    _: dart.definiteFunctionType(html.NodeIterator, [])
  }),
  fields: () => ({
    [dartx.pointerBeforeReferenceNode]: core.bool,
    [dartx.referenceNode]: html.Node,
    [dartx.root]: html.Node,
    [dartx.whatToShow]: core.int
  }),
  methods: () => ({
    [dartx.detach]: dart.definiteFunctionType(dart.void, []),
    [dartx.nextNode]: dart.definiteFunctionType(html.Node, []),
    [dartx.previousNode]: dart.definiteFunctionType(html.Node, [])
  })
});
dart.registerExtension(dart.global.NodeIterator, html.NodeIterator);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt'
]);
html.NodeList = class NodeList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.Node), html.ImmutableListMixin$(html.Node)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [_item](...args) {
    return this.item.apply(this, args);
  }
};
html.NodeList[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfNode()];
dart.setSignature(html.NodeList, {
  constructors: () => ({_: dart.definiteFunctionType(html.NodeList, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.Node, []),
    [dartx.last]: dart.definiteFunctionType(html.Node, []),
    [dartx.single]: dart.definiteFunctionType(html.Node, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.Node, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.Node]),
    [dartx.elementAt]: dart.definiteFunctionType(html.Node, [core.int]),
    [_item]: dart.definiteFunctionType(html.Node, [core.int])
  })
});
dart.registerExtension(dart.global.NodeList, html.NodeList);
dart.registerExtension(dart.global.RadioNodeList, html.NodeList);
dart.defineExtensionNames([
  'nextElementSibling',
  'previousElementSibling'
]);
html.NonDocumentTypeChildNode = class NonDocumentTypeChildNode extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.nextElementSibling]() {
    return this.nextElementSibling;
  }
  get [dartx.previousElementSibling]() {
    return this.previousElementSibling;
  }
};
dart.setSignature(html.NonDocumentTypeChildNode, {
  constructors: () => ({_: dart.definiteFunctionType(html.NonDocumentTypeChildNode, [])}),
  fields: () => ({
    [dartx.nextElementSibling]: html.Element,
    [dartx.previousElementSibling]: html.Element
  })
});
dart.registerExtension(dart.global.NonDocumentTypeChildNode, html.NonDocumentTypeChildNode);
dart.defineExtensionNames([
  'getElementById'
]);
html.NonElementParentNode = class NonElementParentNode extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.getElementById](...args) {
    return this.getElementById.apply(this, args);
  }
};
dart.setSignature(html.NonElementParentNode, {
  constructors: () => ({_: dart.definiteFunctionType(html.NonElementParentNode, [])}),
  methods: () => ({[dartx.getElementById]: dart.definiteFunctionType(html.Element, [core.String])})
});
dart.registerExtension(dart.global.NonElementParentNode, html.NonElementParentNode);
dart.defineExtensionNames([
  'close',
  'onClick',
  'onClose',
  'onError',
  'onShow',
  'body',
  'data',
  'dir',
  'icon',
  'lang',
  'permission',
  'silent',
  'tag',
  'title',
  'vibrate'
]);
html.Notification = class Notification extends html.EventTarget {
  static new(title, opts) {
    let dir = opts && 'dir' in opts ? opts.dir : null;
    let body = opts && 'body' in opts ? opts.body : null;
    let lang = opts && 'lang' in opts ? opts.lang : null;
    let tag = opts && 'tag' in opts ? opts.tag : null;
    let icon = opts && 'icon' in opts ? opts.icon : null;
    let parsedOptions = dart.map();
    if (dir != null) parsedOptions[dartx._set]('dir', dir);
    if (body != null) parsedOptions[dartx._set]('body', body);
    if (lang != null) parsedOptions[dartx._set]('lang', lang);
    if (tag != null) parsedOptions[dartx._set]('tag', tag);
    if (icon != null) parsedOptions[dartx._set]('icon', icon);
    return html.Notification._factoryNotification(title, parsedOptions);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static _factoryNotification(title, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return html.Notification._create_1(title, options_1);
    }
    return html.Notification._create_2(title);
  }
  static _create_1(title, options) {
    return new Notification(title, options);
  }
  static _create_2(title) {
    return new Notification(title);
  }
  static get supported() {
    return !!window.Notification;
  }
  get [dartx.body]() {
    return this.body;
  }
  get [dartx.data]() {
    return this.data;
  }
  get [dartx.dir]() {
    return this.dir;
  }
  get [dartx.icon]() {
    return this.icon;
  }
  get [dartx.lang]() {
    return this.lang;
  }
  get [dartx.permission]() {
    return this.permission;
  }
  get [dartx.silent]() {
    return this.silent;
  }
  get [dartx.tag]() {
    return this.tag;
  }
  get [dartx.title]() {
    return this.title;
  }
  get [dartx.vibrate]() {
    return this.vibrate;
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  static requestPermission() {
    let completer = CompleterOfString().new();
    html.Notification._requestPermission(dart.fn(value => {
      completer.complete(value);
    }, StringTovoid()));
    return completer.future;
  }
  get [dartx.onClick]() {
    return html.Notification.clickEvent.forTarget(this);
  }
  get [dartx.onClose]() {
    return html.Notification.closeEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return html.Notification.errorEvent.forTarget(this);
  }
  get [dartx.onShow]() {
    return html.Notification.showEvent.forTarget(this);
  }
};
dart.setSignature(html.Notification, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.Notification, [core.String], {dir: core.String, body: core.String, lang: core.String, tag: core.String, icon: core.String}),
    _: dart.definiteFunctionType(html.Notification, [])
  }),
  fields: () => ({
    [dartx.body]: core.String,
    [dartx.data]: core.Object,
    [dartx.dir]: core.String,
    [dartx.icon]: core.String,
    [dartx.lang]: core.String,
    [dartx.permission]: core.String,
    [dartx.silent]: core.bool,
    [dartx.tag]: core.String,
    [dartx.title]: core.String,
    [dartx.vibrate]: ListOfint()
  }),
  getters: () => ({
    [dartx.onClick]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onClose]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onShow]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  methods: () => ({[dartx.close]: dart.definiteFunctionType(dart.void, [])}),
  sfields: () => ({
    clickEvent: EventStreamProviderOfEvent(),
    closeEvent: EventStreamProviderOfEvent(),
    errorEvent: EventStreamProviderOfEvent(),
    showEvent: EventStreamProviderOfEvent()
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({
    _factoryNotification: dart.definiteFunctionType(html.Notification, [core.String], [core.Map]),
    _create_1: dart.definiteFunctionType(html.Notification, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.Notification, [dart.dynamic]),
    _requestPermission: dart.definiteFunctionType(dart.void, [], [html._NotificationPermissionCallback]),
    requestPermission: dart.definiteFunctionType(async.Future$(core.String), [])
  }),
  names: ['_factoryNotification', '_create_1', '_create_2', '_requestPermission', 'requestPermission']
});
dart.defineLazy(html.Notification, {
  get clickEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('click'));
  },
  get closeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('close'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get showEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('show'));
  }
});
dart.registerExtension(dart.global.Notification, html.Notification);
dart.defineExtensionNames([
  'notification'
]);
html.NotificationEvent = class NotificationEvent extends html.ExtendableEvent {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.NotificationEvent._create_1(type, eventInitDict_1);
    }
    return html.NotificationEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new NotificationEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new NotificationEvent(type);
  }
  get [dartx.notification]() {
    return this.notification;
  }
};
dart.setSignature(html.NotificationEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.NotificationEvent, []),
    new: dart.definiteFunctionType(html.NotificationEvent, [core.String], [core.Map])
  }),
  fields: () => ({[dartx.notification]: html.Notification}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.NotificationEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.NotificationEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.NotificationEvent, html.NotificationEvent);
html._NotificationPermissionCallback = dart.typedef('_NotificationPermissionCallback', () => dart.functionType(dart.void, [core.String]));
dart.defineExtensionNames([
  'reversed',
  'start',
  'type'
]);
html.OListElement = class OListElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.OListElement._check(html.document[dartx.createElement]("ol"));
  }
  created() {
    this[dartx.reversed] = null;
    this[dartx.start] = null;
    this[dartx.type] = null;
    super.created();
  }
  get [dartx.reversed]() {
    return this.reversed;
  }
  set [dartx.reversed](value) {
    this.reversed = value;
  }
  get [dartx.start]() {
    return this.start;
  }
  set [dartx.start](value) {
    this.start = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
};
dart.defineNamedConstructor(html.OListElement, 'created');
dart.setSignature(html.OListElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.OListElement, []),
    new: dart.definiteFunctionType(html.OListElement, []),
    created: dart.definiteFunctionType(html.OListElement, [])
  }),
  fields: () => ({
    [dartx.reversed]: core.bool,
    [dartx.start]: core.int,
    [dartx.type]: core.String
  })
});
dart.registerExtension(dart.global.HTMLOListElement, html.OListElement);
dart.defineExtensionNames([
  'checkValidity',
  'reportValidity',
  'setCustomValidity',
  'data',
  'form',
  'height',
  'name',
  'type',
  'useMap',
  'validationMessage',
  'validity',
  'width',
  'willValidate'
]);
html.ObjectElement = class ObjectElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.ObjectElement._check(html.document[dartx.createElement]("object"));
  }
  created() {
    this[dartx.data] = null;
    this[dartx.form] = null;
    this[dartx.height] = null;
    this[dartx.name] = null;
    this[dartx.type] = null;
    this[dartx.useMap] = null;
    this[dartx.validationMessage] = null;
    this[dartx.validity] = null;
    this[dartx.width] = null;
    this[dartx.willValidate] = null;
    super.created();
  }
  static get supported() {
    return html.Element.isTagSupported('object');
  }
  get [dartx.data]() {
    return this.data;
  }
  set [dartx.data](value) {
    this.data = value;
  }
  get [dartx.form]() {
    return this.form;
  }
  get [dartx.height]() {
    return this.height;
  }
  set [dartx.height](value) {
    this.height = value;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
  get [dartx.useMap]() {
    return this.useMap;
  }
  set [dartx.useMap](value) {
    this.useMap = value;
  }
  get [dartx.validationMessage]() {
    return this.validationMessage;
  }
  get [dartx.validity]() {
    return this.validity;
  }
  get [dartx.width]() {
    return this.width;
  }
  set [dartx.width](value) {
    this.width = value;
  }
  get [dartx.willValidate]() {
    return this.willValidate;
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [dartx.checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [dartx.reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [dartx.setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
};
dart.defineNamedConstructor(html.ObjectElement, 'created');
dart.setSignature(html.ObjectElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ObjectElement, []),
    new: dart.definiteFunctionType(html.ObjectElement, []),
    created: dart.definiteFunctionType(html.ObjectElement, [])
  }),
  fields: () => ({
    [dartx.data]: core.String,
    [dartx.form]: html.FormElement,
    [dartx.height]: core.String,
    [dartx.name]: core.String,
    [dartx.type]: core.String,
    [dartx.useMap]: core.String,
    [dartx.validationMessage]: core.String,
    [dartx.validity]: html.ValidityState,
    [dartx.width]: core.String,
    [dartx.willValidate]: core.bool
  }),
  methods: () => ({
    [__getter__]: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    [__setter__]: dart.definiteFunctionType(dart.void, [dart.dynamic, html.Node]),
    [dartx.checkValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.reportValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.setCustomValidity]: dart.definiteFunctionType(dart.void, [core.String])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.HTMLObjectElement, html.ObjectElement);
dart.defineExtensionNames([
  'disabled',
  'label'
]);
html.OptGroupElement = class OptGroupElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.OptGroupElement._check(html.document[dartx.createElement]("optgroup"));
  }
  created() {
    this[dartx.disabled] = null;
    this[dartx.label] = null;
    super.created();
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.label]() {
    return this.label;
  }
  set [dartx.label](value) {
    this.label = value;
  }
};
dart.defineNamedConstructor(html.OptGroupElement, 'created');
dart.setSignature(html.OptGroupElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.OptGroupElement, []),
    new: dart.definiteFunctionType(html.OptGroupElement, []),
    created: dart.definiteFunctionType(html.OptGroupElement, [])
  }),
  fields: () => ({
    [dartx.disabled]: core.bool,
    [dartx.label]: core.String
  })
});
dart.registerExtension(dart.global.HTMLOptGroupElement, html.OptGroupElement);
dart.defineExtensionNames([
  'defaultSelected',
  'disabled',
  'form',
  'index',
  'label',
  'selected',
  'value'
]);
html.OptionElement = class OptionElement extends html.HtmlElement {
  static new(opts) {
    let data = opts && 'data' in opts ? opts.data : '';
    let value = opts && 'value' in opts ? opts.value : '';
    let selected = opts && 'selected' in opts ? opts.selected : false;
    return html.OptionElement._(data, value, null, selected);
  }
  static _(data, value, defaultSelected, selected) {
    if (data === void 0) data = null;
    if (value === void 0) value = null;
    if (defaultSelected === void 0) defaultSelected = null;
    if (selected === void 0) selected = null;
    if (selected != null) {
      return html.OptionElement._create_1(data, value, defaultSelected, selected);
    }
    if (defaultSelected != null) {
      return html.OptionElement._create_2(data, value, defaultSelected);
    }
    if (value != null) {
      return html.OptionElement._create_3(data, value);
    }
    if (data != null) {
      return html.OptionElement._create_4(data);
    }
    return html.OptionElement._create_5();
  }
  static _create_1(data, value, defaultSelected, selected) {
    return new Option(data, value, defaultSelected, selected);
  }
  static _create_2(data, value, defaultSelected) {
    return new Option(data, value, defaultSelected);
  }
  static _create_3(data, value) {
    return new Option(data, value);
  }
  static _create_4(data) {
    return new Option(data);
  }
  static _create_5() {
    return new Option();
  }
  created() {
    this[dartx.defaultSelected] = null;
    this[dartx.disabled] = null;
    this[dartx.form] = null;
    this[dartx.index] = null;
    this[dartx.label] = null;
    this[dartx.selected] = null;
    this[dartx.value] = null;
    super.created();
  }
  get [dartx.defaultSelected]() {
    return this.defaultSelected;
  }
  set [dartx.defaultSelected](value) {
    this.defaultSelected = value;
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.form]() {
    return this.form;
  }
  get [dartx.index]() {
    return this.index;
  }
  get [dartx.label]() {
    return this.label;
  }
  set [dartx.label](value) {
    this.label = value;
  }
  get [dartx.selected]() {
    return this.selected;
  }
  set [dartx.selected](value) {
    this.selected = value;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
};
dart.defineNamedConstructor(html.OptionElement, 'created');
dart.setSignature(html.OptionElement, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.OptionElement, [], {data: core.String, value: core.String, selected: core.bool}),
    _: dart.definiteFunctionType(html.OptionElement, [], [core.String, core.String, core.bool, core.bool]),
    created: dart.definiteFunctionType(html.OptionElement, [])
  }),
  fields: () => ({
    [dartx.defaultSelected]: core.bool,
    [dartx.disabled]: core.bool,
    [dartx.form]: html.FormElement,
    [dartx.index]: core.int,
    [dartx.label]: core.String,
    [dartx.selected]: core.bool,
    [dartx.value]: core.String
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.OptionElement, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.OptionElement, [dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_3: dart.definiteFunctionType(html.OptionElement, [dart.dynamic, dart.dynamic]),
    _create_4: dart.definiteFunctionType(html.OptionElement, [dart.dynamic]),
    _create_5: dart.definiteFunctionType(html.OptionElement, [])
  }),
  names: ['_create_1', '_create_2', '_create_3', '_create_4', '_create_5']
});
dart.registerExtension(dart.global.HTMLOptionElement, html.OptionElement);
dart.defineExtensionNames([
  'checkValidity',
  'reportValidity',
  'setCustomValidity',
  'defaultValue',
  'form',
  'htmlFor',
  'labels',
  'name',
  'type',
  'validationMessage',
  'validity',
  'value',
  'willValidate'
]);
html.OutputElement = class OutputElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.OutputElement._check(html.document[dartx.createElement]("output"));
  }
  created() {
    this[dartx.defaultValue] = null;
    this[dartx.form] = null;
    this[dartx.htmlFor] = null;
    this[dartx.labels] = null;
    this[dartx.name] = null;
    this[dartx.type] = null;
    this[dartx.validationMessage] = null;
    this[dartx.validity] = null;
    this[dartx.value] = null;
    this[dartx.willValidate] = null;
    super.created();
  }
  static get supported() {
    return html.Element.isTagSupported('output');
  }
  get [dartx.defaultValue]() {
    return this.defaultValue;
  }
  set [dartx.defaultValue](value) {
    this.defaultValue = value;
  }
  get [dartx.form]() {
    return this.form;
  }
  get [dartx.htmlFor]() {
    return this.htmlFor;
  }
  get [dartx.labels]() {
    return this.labels;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  get [dartx.validationMessage]() {
    return this.validationMessage;
  }
  get [dartx.validity]() {
    return this.validity;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
  get [dartx.willValidate]() {
    return this.willValidate;
  }
  [dartx.checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [dartx.reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [dartx.setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
};
dart.defineNamedConstructor(html.OutputElement, 'created');
dart.setSignature(html.OutputElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.OutputElement, []),
    new: dart.definiteFunctionType(html.OutputElement, []),
    created: dart.definiteFunctionType(html.OutputElement, [])
  }),
  fields: () => ({
    [dartx.defaultValue]: core.String,
    [dartx.form]: html.FormElement,
    [dartx.htmlFor]: html.DomSettableTokenList,
    [dartx.labels]: ListOfNode(),
    [dartx.name]: core.String,
    [dartx.type]: core.String,
    [dartx.validationMessage]: core.String,
    [dartx.validity]: html.ValidityState,
    [dartx.value]: core.String,
    [dartx.willValidate]: core.bool
  }),
  methods: () => ({
    [dartx.checkValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.reportValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.setCustomValidity]: dart.definiteFunctionType(dart.void, [core.String])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.HTMLOutputElement, html.OutputElement);
dart.defineExtensionNames([
  'persisted'
]);
html.PageTransitionEvent = class PageTransitionEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.PageTransitionEvent._create_1(type, eventInitDict_1);
    }
    return html.PageTransitionEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new PageTransitionEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new PageTransitionEvent(type);
  }
  get [dartx.persisted]() {
    return this.persisted;
  }
};
dart.setSignature(html.PageTransitionEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.PageTransitionEvent, []),
    new: dart.definiteFunctionType(html.PageTransitionEvent, [core.String], [core.Map])
  }),
  fields: () => ({[dartx.persisted]: core.bool}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.PageTransitionEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.PageTransitionEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.PageTransitionEvent, html.PageTransitionEvent);
html.ParagraphElement = class ParagraphElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.ParagraphElement._check(html.document[dartx.createElement]("p"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.ParagraphElement, 'created');
dart.setSignature(html.ParagraphElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ParagraphElement, []),
    new: dart.definiteFunctionType(html.ParagraphElement, []),
    created: dart.definiteFunctionType(html.ParagraphElement, [])
  })
});
dart.registerExtension(dart.global.HTMLParagraphElement, html.ParagraphElement);
dart.defineExtensionNames([
  'name',
  'value'
]);
html.ParamElement = class ParamElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.ParamElement._check(html.document[dartx.createElement]("param"));
  }
  created() {
    this[dartx.name] = null;
    this[dartx.value] = null;
    super.created();
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
};
dart.defineNamedConstructor(html.ParamElement, 'created');
dart.setSignature(html.ParamElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ParamElement, []),
    new: dart.definiteFunctionType(html.ParamElement, []),
    created: dart.definiteFunctionType(html.ParamElement, [])
  }),
  fields: () => ({
    [dartx.name]: core.String,
    [dartx.value]: core.String
  })
});
dart.registerExtension(dart.global.HTMLParamElement, html.ParamElement);
html.ParentNode = class ParentNode extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.ParentNode, {
  constructors: () => ({_: dart.definiteFunctionType(html.ParentNode, [])}),
  fields: () => ({
    [_childElementCount]: core.int,
    [_children]: ListOfNode(),
    [_firstElementChild]: html.Element,
    [_lastElementChild]: html.Element
  })
});
dart.defineExtensionNames([
  'formData',
  'password'
]);
html.PasswordCredential = class PasswordCredential extends html.Credential {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(id, password, name, iconURL) {
    if (name === void 0) name = null;
    if (iconURL === void 0) iconURL = null;
    if (iconURL != null) {
      return html.PasswordCredential._create_1(id, password, name, iconURL);
    }
    if (name != null) {
      return html.PasswordCredential._create_2(id, password, name);
    }
    return html.PasswordCredential._create_3(id, password);
  }
  static _create_1(id, password, name, iconURL) {
    return new PasswordCredential(id, password, name, iconURL);
  }
  static _create_2(id, password, name) {
    return new PasswordCredential(id, password, name);
  }
  static _create_3(id, password) {
    return new PasswordCredential(id, password);
  }
  get [dartx.formData]() {
    return this.formData;
  }
  get [dartx.password]() {
    return this.password;
  }
};
dart.setSignature(html.PasswordCredential, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.PasswordCredential, []),
    new: dart.definiteFunctionType(html.PasswordCredential, [core.String, core.String], [core.String, core.String])
  }),
  fields: () => ({
    [dartx.formData]: html.FormData,
    [dartx.password]: core.String
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.PasswordCredential, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.PasswordCredential, [dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_3: dart.definiteFunctionType(html.PasswordCredential, [dart.dynamic, dart.dynamic])
  }),
  names: ['_create_1', '_create_2', '_create_3']
});
dart.registerExtension(dart.global.PasswordCredential, html.PasswordCredential);
dart.defineExtensionNames([
  'addPath',
  'arc',
  'arcTo',
  'bezierCurveTo',
  'closePath',
  'ellipse',
  'lineTo',
  'moveTo',
  'quadraticCurveTo',
  'rect'
]);
html.Path2D = class Path2D extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(path_OR_text) {
    if (path_OR_text === void 0) path_OR_text = null;
    if (path_OR_text == null) {
      return html.Path2D._create_1();
    }
    if (html.Path2D.is(path_OR_text) || path_OR_text == null) {
      return html.Path2D._create_2(path_OR_text);
    }
    if (typeof path_OR_text == 'string' || path_OR_text == null) {
      return html.Path2D._create_3(path_OR_text);
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  static _create_1() {
    return new Path2D();
  }
  static _create_2(path_OR_text) {
    return new Path2D(path_OR_text);
  }
  static _create_3(path_OR_text) {
    return new Path2D(path_OR_text);
  }
  [dartx.addPath](...args) {
    return this.addPath.apply(this, args);
  }
  [dartx.arc](...args) {
    return this.arc.apply(this, args);
  }
  [dartx.arcTo](...args) {
    return this.arcTo.apply(this, args);
  }
  [dartx.bezierCurveTo](...args) {
    return this.bezierCurveTo.apply(this, args);
  }
  [dartx.closePath](...args) {
    return this.closePath.apply(this, args);
  }
  [dartx.ellipse](...args) {
    return this.ellipse.apply(this, args);
  }
  [dartx.lineTo](...args) {
    return this.lineTo.apply(this, args);
  }
  [dartx.moveTo](...args) {
    return this.moveTo.apply(this, args);
  }
  [dartx.quadraticCurveTo](...args) {
    return this.quadraticCurveTo.apply(this, args);
  }
  [dartx.rect](...args) {
    return this.rect.apply(this, args);
  }
};
html.Path2D[dart.implements] = () => [html._CanvasPathMethods];
dart.setSignature(html.Path2D, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.Path2D, []),
    new: dart.definiteFunctionType(html.Path2D, [], [dart.dynamic])
  }),
  methods: () => ({
    [dartx.addPath]: dart.definiteFunctionType(dart.void, [html.Path2D], [svg.Matrix]),
    [dartx.arc]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.bool]),
    [dartx.arcTo]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num, core.num]),
    [dartx.bezierCurveTo]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [dartx.closePath]: dart.definiteFunctionType(dart.void, []),
    [dartx.ellipse]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.bool]),
    [dartx.lineTo]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [dartx.moveTo]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [dartx.quadraticCurveTo]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num]),
    [dartx.rect]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num])
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.Path2D, []),
    _create_2: dart.definiteFunctionType(html.Path2D, [dart.dynamic]),
    _create_3: dart.definiteFunctionType(html.Path2D, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2', '_create_3']
});
dart.registerExtension(dart.global.Path2D, html.Path2D);
dart.defineExtensionNames([
  'clearFrameTimings',
  'clearMarks',
  'clearMeasures',
  'getEntries',
  'getEntriesByName',
  'getEntriesByType',
  'mark',
  'measure',
  'now',
  'setFrameTimingBufferSize',
  'clearResourceTimings',
  'setResourceTimingBufferSize',
  'onResourceTimingBufferFull',
  'memory',
  'navigation',
  'timing'
]);
html.Performance = class Performance extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static get supported() {
    return !!window.performance;
  }
  get [dartx.memory]() {
    return this.memory;
  }
  get [dartx.navigation]() {
    return this.navigation;
  }
  get [dartx.timing]() {
    return this.timing;
  }
  [dartx.clearFrameTimings](...args) {
    return this.clearFrameTimings.apply(this, args);
  }
  [dartx.clearMarks](...args) {
    return this.clearMarks.apply(this, args);
  }
  [dartx.clearMeasures](...args) {
    return this.clearMeasures.apply(this, args);
  }
  [dartx.getEntries](...args) {
    return this.getEntries.apply(this, args);
  }
  [dartx.getEntriesByName](...args) {
    return this.getEntriesByName.apply(this, args);
  }
  [dartx.getEntriesByType](...args) {
    return this.getEntriesByType.apply(this, args);
  }
  [dartx.mark](...args) {
    return this.mark.apply(this, args);
  }
  [dartx.measure](...args) {
    return this.measure.apply(this, args);
  }
  [dartx.now](...args) {
    return this.now.apply(this, args);
  }
  [dartx.setFrameTimingBufferSize](...args) {
    return this.setFrameTimingBufferSize.apply(this, args);
  }
  [dartx.clearResourceTimings](...args) {
    return this.webkitClearResourceTimings.apply(this, args);
  }
  [dartx.setResourceTimingBufferSize](...args) {
    return this.webkitSetResourceTimingBufferSize.apply(this, args);
  }
  get [dartx.onResourceTimingBufferFull]() {
    return html.Performance.resourceTimingBufferFullEvent.forTarget(this);
  }
};
dart.setSignature(html.Performance, {
  constructors: () => ({_: dart.definiteFunctionType(html.Performance, [])}),
  fields: () => ({
    [dartx.memory]: html.MemoryInfo,
    [dartx.navigation]: html.PerformanceNavigation,
    [dartx.timing]: html.PerformanceTiming
  }),
  getters: () => ({[dartx.onResourceTimingBufferFull]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  methods: () => ({
    [dartx.clearFrameTimings]: dart.definiteFunctionType(dart.void, []),
    [dartx.clearMarks]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.clearMeasures]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.getEntries]: dart.definiteFunctionType(core.List$(html.PerformanceEntry), []),
    [dartx.getEntriesByName]: dart.definiteFunctionType(core.List$(html.PerformanceEntry), [core.String, core.String]),
    [dartx.getEntriesByType]: dart.definiteFunctionType(core.List$(html.PerformanceEntry), [core.String]),
    [dartx.mark]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.measure]: dart.definiteFunctionType(dart.void, [core.String, core.String, core.String]),
    [dartx.now]: dart.definiteFunctionType(core.double, []),
    [dartx.setFrameTimingBufferSize]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.clearResourceTimings]: dart.definiteFunctionType(dart.void, []),
    [dartx.setResourceTimingBufferSize]: dart.definiteFunctionType(dart.void, [core.int])
  }),
  sfields: () => ({resourceTimingBufferFullEvent: EventStreamProviderOfEvent()}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineLazy(html.Performance, {
  get resourceTimingBufferFullEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('webkitresourcetimingbufferfull'));
  }
});
dart.registerExtension(dart.global.Performance, html.Performance);
dart.defineExtensionNames([
  'duration',
  'entryType',
  'name',
  'startTime'
]);
html.PerformanceEntry = class PerformanceEntry extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.duration]() {
    return this.duration;
  }
  get [dartx.entryType]() {
    return this.entryType;
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.startTime]() {
    return this.startTime;
  }
};
dart.setSignature(html.PerformanceEntry, {
  constructors: () => ({_: dart.definiteFunctionType(html.PerformanceEntry, [])}),
  fields: () => ({
    [dartx.duration]: core.double,
    [dartx.entryType]: core.String,
    [dartx.name]: core.String,
    [dartx.startTime]: core.double
  })
});
dart.registerExtension(dart.global.PerformanceEntry, html.PerformanceEntry);
dart.defineExtensionNames([
  'sourceFrame'
]);
html.PerformanceCompositeTiming = class PerformanceCompositeTiming extends html.PerformanceEntry {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.sourceFrame]() {
    return this.sourceFrame;
  }
};
dart.setSignature(html.PerformanceCompositeTiming, {
  constructors: () => ({_: dart.definiteFunctionType(html.PerformanceCompositeTiming, [])}),
  fields: () => ({[dartx.sourceFrame]: core.int})
});
dart.registerExtension(dart.global.PerformanceCompositeTiming, html.PerformanceCompositeTiming);
html.PerformanceMark = class PerformanceMark extends html.PerformanceEntry {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.PerformanceMark, {
  constructors: () => ({_: dart.definiteFunctionType(html.PerformanceMark, [])})
});
dart.registerExtension(dart.global.PerformanceMark, html.PerformanceMark);
html.PerformanceMeasure = class PerformanceMeasure extends html.PerformanceEntry {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.PerformanceMeasure, {
  constructors: () => ({_: dart.definiteFunctionType(html.PerformanceMeasure, [])})
});
dart.registerExtension(dart.global.PerformanceMeasure, html.PerformanceMeasure);
dart.defineExtensionNames([
  'redirectCount',
  'type'
]);
html.PerformanceNavigation = class PerformanceNavigation extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.redirectCount]() {
    return this.redirectCount;
  }
  get [dartx.type]() {
    return this.type;
  }
};
dart.setSignature(html.PerformanceNavigation, {
  constructors: () => ({_: dart.definiteFunctionType(html.PerformanceNavigation, [])}),
  fields: () => ({
    [dartx.redirectCount]: core.int,
    [dartx.type]: core.int
  }),
  sfields: () => ({
    TYPE_BACK_FORWARD: core.int,
    TYPE_NAVIGATE: core.int,
    TYPE_RELOAD: core.int,
    TYPE_RESERVED: core.int
  })
});
html.PerformanceNavigation.TYPE_BACK_FORWARD = 2;
html.PerformanceNavigation.TYPE_NAVIGATE = 0;
html.PerformanceNavigation.TYPE_RELOAD = 1;
html.PerformanceNavigation.TYPE_RESERVED = 255;
dart.registerExtension(dart.global.PerformanceNavigation, html.PerformanceNavigation);
dart.defineExtensionNames([
  'sourceFrame'
]);
html.PerformanceRenderTiming = class PerformanceRenderTiming extends html.PerformanceEntry {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.sourceFrame]() {
    return this.sourceFrame;
  }
};
dart.setSignature(html.PerformanceRenderTiming, {
  constructors: () => ({_: dart.definiteFunctionType(html.PerformanceRenderTiming, [])}),
  fields: () => ({[dartx.sourceFrame]: core.int})
});
dart.registerExtension(dart.global.PerformanceRenderTiming, html.PerformanceRenderTiming);
dart.defineExtensionNames([
  'connectEnd',
  'connectStart',
  'domainLookupEnd',
  'domainLookupStart',
  'fetchStart',
  'initiatorType',
  'redirectEnd',
  'redirectStart',
  'requestStart',
  'responseEnd',
  'responseStart',
  'secureConnectionStart',
  'workerStart'
]);
html.PerformanceResourceTiming = class PerformanceResourceTiming extends html.PerformanceEntry {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.connectEnd]() {
    return this.connectEnd;
  }
  get [dartx.connectStart]() {
    return this.connectStart;
  }
  get [dartx.domainLookupEnd]() {
    return this.domainLookupEnd;
  }
  get [dartx.domainLookupStart]() {
    return this.domainLookupStart;
  }
  get [dartx.fetchStart]() {
    return this.fetchStart;
  }
  get [dartx.initiatorType]() {
    return this.initiatorType;
  }
  get [dartx.redirectEnd]() {
    return this.redirectEnd;
  }
  get [dartx.redirectStart]() {
    return this.redirectStart;
  }
  get [dartx.requestStart]() {
    return this.requestStart;
  }
  get [dartx.responseEnd]() {
    return this.responseEnd;
  }
  get [dartx.responseStart]() {
    return this.responseStart;
  }
  get [dartx.secureConnectionStart]() {
    return this.secureConnectionStart;
  }
  get [dartx.workerStart]() {
    return this.workerStart;
  }
};
dart.setSignature(html.PerformanceResourceTiming, {
  constructors: () => ({_: dart.definiteFunctionType(html.PerformanceResourceTiming, [])}),
  fields: () => ({
    [dartx.connectEnd]: core.double,
    [dartx.connectStart]: core.double,
    [dartx.domainLookupEnd]: core.double,
    [dartx.domainLookupStart]: core.double,
    [dartx.fetchStart]: core.double,
    [dartx.initiatorType]: core.String,
    [dartx.redirectEnd]: core.double,
    [dartx.redirectStart]: core.double,
    [dartx.requestStart]: core.double,
    [dartx.responseEnd]: core.double,
    [dartx.responseStart]: core.double,
    [dartx.secureConnectionStart]: core.double,
    [dartx.workerStart]: core.double
  })
});
dart.registerExtension(dart.global.PerformanceResourceTiming, html.PerformanceResourceTiming);
dart.defineExtensionNames([
  'connectEnd',
  'connectStart',
  'domComplete',
  'domContentLoadedEventEnd',
  'domContentLoadedEventStart',
  'domInteractive',
  'domLoading',
  'domainLookupEnd',
  'domainLookupStart',
  'fetchStart',
  'loadEventEnd',
  'loadEventStart',
  'navigationStart',
  'redirectEnd',
  'redirectStart',
  'requestStart',
  'responseEnd',
  'responseStart',
  'secureConnectionStart',
  'unloadEventEnd',
  'unloadEventStart'
]);
html.PerformanceTiming = class PerformanceTiming extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.connectEnd]() {
    return this.connectEnd;
  }
  get [dartx.connectStart]() {
    return this.connectStart;
  }
  get [dartx.domComplete]() {
    return this.domComplete;
  }
  get [dartx.domContentLoadedEventEnd]() {
    return this.domContentLoadedEventEnd;
  }
  get [dartx.domContentLoadedEventStart]() {
    return this.domContentLoadedEventStart;
  }
  get [dartx.domInteractive]() {
    return this.domInteractive;
  }
  get [dartx.domLoading]() {
    return this.domLoading;
  }
  get [dartx.domainLookupEnd]() {
    return this.domainLookupEnd;
  }
  get [dartx.domainLookupStart]() {
    return this.domainLookupStart;
  }
  get [dartx.fetchStart]() {
    return this.fetchStart;
  }
  get [dartx.loadEventEnd]() {
    return this.loadEventEnd;
  }
  get [dartx.loadEventStart]() {
    return this.loadEventStart;
  }
  get [dartx.navigationStart]() {
    return this.navigationStart;
  }
  get [dartx.redirectEnd]() {
    return this.redirectEnd;
  }
  get [dartx.redirectStart]() {
    return this.redirectStart;
  }
  get [dartx.requestStart]() {
    return this.requestStart;
  }
  get [dartx.responseEnd]() {
    return this.responseEnd;
  }
  get [dartx.responseStart]() {
    return this.responseStart;
  }
  get [dartx.secureConnectionStart]() {
    return this.secureConnectionStart;
  }
  get [dartx.unloadEventEnd]() {
    return this.unloadEventEnd;
  }
  get [dartx.unloadEventStart]() {
    return this.unloadEventStart;
  }
};
dart.setSignature(html.PerformanceTiming, {
  constructors: () => ({_: dart.definiteFunctionType(html.PerformanceTiming, [])}),
  fields: () => ({
    [dartx.connectEnd]: core.int,
    [dartx.connectStart]: core.int,
    [dartx.domComplete]: core.int,
    [dartx.domContentLoadedEventEnd]: core.int,
    [dartx.domContentLoadedEventStart]: core.int,
    [dartx.domInteractive]: core.int,
    [dartx.domLoading]: core.int,
    [dartx.domainLookupEnd]: core.int,
    [dartx.domainLookupStart]: core.int,
    [dartx.fetchStart]: core.int,
    [dartx.loadEventEnd]: core.int,
    [dartx.loadEventStart]: core.int,
    [dartx.navigationStart]: core.int,
    [dartx.redirectEnd]: core.int,
    [dartx.redirectStart]: core.int,
    [dartx.requestStart]: core.int,
    [dartx.responseEnd]: core.int,
    [dartx.responseStart]: core.int,
    [dartx.secureConnectionStart]: core.int,
    [dartx.unloadEventEnd]: core.int,
    [dartx.unloadEventStart]: core.int
  })
});
dart.registerExtension(dart.global.PerformanceTiming, html.PerformanceTiming);
dart.defineExtensionNames([
  'registration'
]);
html.PeriodicSyncEvent = class PeriodicSyncEvent extends html.ExtendableEvent {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, init) {
    let init_1 = html_common.convertDartToNative_Dictionary(init);
    return html.PeriodicSyncEvent._create_1(type, init_1);
  }
  static _create_1(type, init) {
    return new PeriodicSyncEvent(type, init);
  }
  get [dartx.registration]() {
    return this.registration;
  }
};
dart.setSignature(html.PeriodicSyncEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.PeriodicSyncEvent, []),
    new: dart.definiteFunctionType(html.PeriodicSyncEvent, [core.String, core.Map])
  }),
  fields: () => ({[dartx.registration]: html.PeriodicSyncRegistration}),
  statics: () => ({_create_1: dart.definiteFunctionType(html.PeriodicSyncEvent, [dart.dynamic, dart.dynamic])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.PeriodicSyncEvent, html.PeriodicSyncEvent);
const _register_1 = Symbol('_register_1');
const _register_2 = Symbol('_register_2');
dart.defineExtensionNames([
  'getRegistration',
  'getRegistrations',
  'permissionState',
  'register',
  'minPossiblePeriod'
]);
html.PeriodicSyncManager = class PeriodicSyncManager extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.minPossiblePeriod]() {
    return this.minPossiblePeriod;
  }
  [dartx.getRegistration](...args) {
    return this.getRegistration.apply(this, args);
  }
  [dartx.getRegistrations](...args) {
    return this.getRegistrations.apply(this, args);
  }
  [dartx.permissionState](...args) {
    return this.permissionState.apply(this, args);
  }
  [dartx.register](options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_register_1](options_1);
    }
    return this[_register_2]();
  }
  [_register_1](...args) {
    return this.register.apply(this, args);
  }
  [_register_2](...args) {
    return this.register.apply(this, args);
  }
};
dart.setSignature(html.PeriodicSyncManager, {
  constructors: () => ({_: dart.definiteFunctionType(html.PeriodicSyncManager, [])}),
  fields: () => ({[dartx.minPossiblePeriod]: core.int}),
  methods: () => ({
    [dartx.getRegistration]: dart.definiteFunctionType(async.Future, [core.String]),
    [dartx.getRegistrations]: dart.definiteFunctionType(async.Future, []),
    [dartx.permissionState]: dart.definiteFunctionType(async.Future, []),
    [dartx.register]: dart.definiteFunctionType(async.Future, [], [core.Map]),
    [_register_1]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [_register_2]: dart.definiteFunctionType(async.Future, [])
  })
});
dart.registerExtension(dart.global.PeriodicSyncManager, html.PeriodicSyncManager);
dart.defineExtensionNames([
  'unregister',
  'minPeriod',
  'networkState',
  'powerState',
  'tag'
]);
html.PeriodicSyncRegistration = class PeriodicSyncRegistration extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.minPeriod]() {
    return this.minPeriod;
  }
  get [dartx.networkState]() {
    return this.networkState;
  }
  get [dartx.powerState]() {
    return this.powerState;
  }
  get [dartx.tag]() {
    return this.tag;
  }
  [dartx.unregister](...args) {
    return this.unregister.apply(this, args);
  }
};
dart.setSignature(html.PeriodicSyncRegistration, {
  constructors: () => ({_: dart.definiteFunctionType(html.PeriodicSyncRegistration, [])}),
  fields: () => ({
    [dartx.minPeriod]: core.int,
    [dartx.networkState]: core.String,
    [dartx.powerState]: core.String,
    [dartx.tag]: core.String
  }),
  methods: () => ({[dartx.unregister]: dart.definiteFunctionType(async.Future, [])})
});
dart.registerExtension(dart.global.PeriodicSyncRegistration, html.PeriodicSyncRegistration);
dart.defineExtensionNames([
  'onChange',
  'state',
  'status'
]);
html.PermissionStatus = class PermissionStatus extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.state]() {
    return this.state;
  }
  get [dartx.status]() {
    return this.status;
  }
  get [dartx.onChange]() {
    return html.PermissionStatus.changeEvent.forTarget(this);
  }
};
dart.setSignature(html.PermissionStatus, {
  constructors: () => ({_: dart.definiteFunctionType(html.PermissionStatus, [])}),
  fields: () => ({
    [dartx.state]: core.String,
    [dartx.status]: core.String
  }),
  getters: () => ({[dartx.onChange]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  sfields: () => ({changeEvent: EventStreamProviderOfEvent()})
});
dart.defineLazy(html.PermissionStatus, {
  get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('change'));
  }
});
dart.registerExtension(dart.global.PermissionStatus, html.PermissionStatus);
dart.defineExtensionNames([
  'query'
]);
html.Permissions = class Permissions extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.query](...args) {
    return this.query.apply(this, args);
  }
};
dart.setSignature(html.Permissions, {
  constructors: () => ({_: dart.definiteFunctionType(html.Permissions, [])}),
  methods: () => ({[dartx.query]: dart.definiteFunctionType(async.Future, [core.Object])})
});
dart.registerExtension(dart.global.Permissions, html.Permissions);
html.PictureElement = class PictureElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.PictureElement, 'created');
dart.setSignature(html.PictureElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.PictureElement, []),
    created: dart.definiteFunctionType(html.PictureElement, [])
  })
});
dart.registerExtension(dart.global.HTMLPictureElement, html.PictureElement);
dart.defineExtensionNames([
  'item',
  'namedItem',
  'description',
  'filename',
  'length',
  'name'
]);
html.Plugin = class Plugin extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.description]() {
    return this.description;
  }
  get [dartx.filename]() {
    return this.filename;
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.name]() {
    return this.name;
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
  [dartx.namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
};
dart.setSignature(html.Plugin, {
  constructors: () => ({_: dart.definiteFunctionType(html.Plugin, [])}),
  fields: () => ({
    [dartx.description]: core.String,
    [dartx.filename]: core.String,
    [dartx.length]: core.int,
    [dartx.name]: core.String
  }),
  methods: () => ({
    [dartx.item]: dart.definiteFunctionType(html.MimeType, [core.int]),
    [dartx.namedItem]: dart.definiteFunctionType(html.MimeType, [core.String])
  })
});
dart.registerExtension(dart.global.Plugin, html.Plugin);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item',
  'namedItem',
  'refresh'
]);
html.PluginArray = class PluginArray extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.Plugin), html.ImmutableListMixin$(html.Plugin)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
  [dartx.namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
  [dartx.refresh](...args) {
    return this.refresh.apply(this, args);
  }
};
html.PluginArray[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfPlugin()];
dart.setSignature(html.PluginArray, {
  constructors: () => ({_: dart.definiteFunctionType(html.PluginArray, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.Plugin, []),
    [dartx.last]: dart.definiteFunctionType(html.Plugin, []),
    [dartx.single]: dart.definiteFunctionType(html.Plugin, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.Plugin, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.Plugin]),
    [dartx.elementAt]: dart.definiteFunctionType(html.Plugin, [core.int]),
    [dartx.item]: dart.definiteFunctionType(html.Plugin, [core.int]),
    [dartx.namedItem]: dart.definiteFunctionType(html.Plugin, [core.String]),
    [dartx.refresh]: dart.definiteFunctionType(dart.void, [core.bool])
  })
});
dart.registerExtension(dart.global.PluginArray, html.PluginArray);
dart.defineExtensionNames([
  'createdCallback',
  'closeable',
  'message'
]);
html.PluginPlaceholderElement = class PluginPlaceholderElement extends html.DivElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.closeable] = null;
    this[dartx.message] = null;
    super.created();
  }
  get [dartx.closeable]() {
    return this.closeable;
  }
  set [dartx.closeable](value) {
    this.closeable = value;
  }
  get [dartx.message]() {
    return this.message;
  }
  set [dartx.message](value) {
    this.message = value;
  }
  [dartx.createdCallback](...args) {
    return this.createdCallback.apply(this, args);
  }
};
dart.defineNamedConstructor(html.PluginPlaceholderElement, 'created');
dart.setSignature(html.PluginPlaceholderElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.PluginPlaceholderElement, []),
    created: dart.definiteFunctionType(html.PluginPlaceholderElement, [])
  }),
  fields: () => ({
    [dartx.closeable]: core.bool,
    [dartx.message]: core.String
  }),
  methods: () => ({[dartx.createdCallback]: dart.definiteFunctionType(dart.void, [])})
});
dart.registerExtension(dart.global.PluginPlaceholderElement, html.PluginPlaceholderElement);
dart.defineExtensionNames([
  'height',
  'isPrimary',
  'pointerId',
  'pointerType',
  'pressure',
  'tiltX',
  'tiltY',
  'width'
]);
html.PointerEvent = class PointerEvent extends html.MouseEvent {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.PointerEvent._create_1(type, eventInitDict_1);
    }
    return html.PointerEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new PointerEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new PointerEvent(type);
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.isPrimary]() {
    return this.isPrimary;
  }
  get [dartx.pointerId]() {
    return this.pointerId;
  }
  get [dartx.pointerType]() {
    return this.pointerType;
  }
  get [dartx.pressure]() {
    return this.pressure;
  }
  get [dartx.tiltX]() {
    return this.tiltX;
  }
  get [dartx.tiltY]() {
    return this.tiltY;
  }
  get [dartx.width]() {
    return this.width;
  }
};
dart.setSignature(html.PointerEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.PointerEvent, []),
    new: dart.definiteFunctionType(html.PointerEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.height]: core.double,
    [dartx.isPrimary]: core.bool,
    [dartx.pointerId]: core.int,
    [dartx.pointerType]: core.String,
    [dartx.pressure]: core.double,
    [dartx.tiltX]: core.int,
    [dartx.tiltY]: core.int,
    [dartx.width]: core.double
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.PointerEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.PointerEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.PointerEvent, html.PointerEvent);
dart.defineExtensionNames([
  'state'
]);
html.PopStateEvent = class PopStateEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.PopStateEvent._create_1(type, eventInitDict_1);
    }
    return html.PopStateEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new PopStateEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new PopStateEvent(type);
  }
  get [dartx.state]() {
    return html_common.convertNativeToDart_SerializedScriptValue(this[_get_state]);
  }
  get [_get_state]() {
    return this.state;
  }
};
dart.setSignature(html.PopStateEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.PopStateEvent, []),
    new: dart.definiteFunctionType(html.PopStateEvent, [core.String], [core.Map])
  }),
  fields: () => ({[_get_state]: dart.dynamic}),
  getters: () => ({[dartx.state]: dart.definiteFunctionType(dart.dynamic, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.PopStateEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.PopStateEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.PopStateEvent, html.PopStateEvent);
html._PositionCallback = dart.typedef('_PositionCallback', () => dart.functionType(dart.void, [html.Geoposition]));
dart.defineExtensionNames([
  'code',
  'message'
]);
html.PositionError = class PositionError extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.code]() {
    return this.code;
  }
  get [dartx.message]() {
    return this.message;
  }
};
dart.setSignature(html.PositionError, {
  constructors: () => ({_: dart.definiteFunctionType(html.PositionError, [])}),
  fields: () => ({
    [dartx.code]: core.int,
    [dartx.message]: core.String
  }),
  sfields: () => ({
    PERMISSION_DENIED: core.int,
    POSITION_UNAVAILABLE: core.int,
    TIMEOUT: core.int
  })
});
html.PositionError.PERMISSION_DENIED = 1;
html.PositionError.POSITION_UNAVAILABLE = 2;
html.PositionError.TIMEOUT = 3;
dart.registerExtension(dart.global.PositionError, html.PositionError);
html._PositionErrorCallback = dart.typedef('_PositionErrorCallback', () => dart.functionType(dart.void, [html.PositionError]));
dart.defineExtensionNames([
  'getImmediateState',
  'getState',
  'resetSensor'
]);
html.PositionSensorVRDevice = class PositionSensorVRDevice extends html.VRDevice {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.getImmediateState](...args) {
    return this.getImmediateState.apply(this, args);
  }
  [dartx.getState](...args) {
    return this.getState.apply(this, args);
  }
  [dartx.resetSensor](...args) {
    return this.resetSensor.apply(this, args);
  }
};
dart.setSignature(html.PositionSensorVRDevice, {
  constructors: () => ({_: dart.definiteFunctionType(html.PositionSensorVRDevice, [])}),
  methods: () => ({
    [dartx.getImmediateState]: dart.definiteFunctionType(html.VRPositionState, []),
    [dartx.getState]: dart.definiteFunctionType(html.VRPositionState, []),
    [dartx.resetSensor]: dart.definiteFunctionType(dart.void, [])
  })
});
dart.registerExtension(dart.global.PositionSensorVRDevice, html.PositionSensorVRDevice);
html.PreElement = class PreElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.PreElement._check(html.document[dartx.createElement]("pre"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.PreElement, 'created');
dart.setSignature(html.PreElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.PreElement, []),
    new: dart.definiteFunctionType(html.PreElement, []),
    created: dart.definiteFunctionType(html.PreElement, [])
  })
});
dart.registerExtension(dart.global.HTMLPreElement, html.PreElement);
dart.defineExtensionNames([
  'getAvailability',
  'joinSession',
  'startSession',
  'session'
]);
html.Presentation = class Presentation extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.session]() {
    return this.session;
  }
  [dartx.getAvailability](...args) {
    return this.getAvailability.apply(this, args);
  }
  [dartx.joinSession](...args) {
    return this.joinSession.apply(this, args);
  }
  [dartx.startSession](...args) {
    return this.startSession.apply(this, args);
  }
};
dart.setSignature(html.Presentation, {
  constructors: () => ({_: dart.definiteFunctionType(html.Presentation, [])}),
  fields: () => ({[dartx.session]: html.PresentationSession}),
  methods: () => ({
    [dartx.getAvailability]: dart.definiteFunctionType(async.Future, [core.String]),
    [dartx.joinSession]: dart.definiteFunctionType(async.Future, [core.String, core.String]),
    [dartx.startSession]: dart.definiteFunctionType(async.Future, [core.String])
  })
});
dart.registerExtension(dart.global.Presentation, html.Presentation);
dart.defineExtensionNames([
  'onChange',
  'value'
]);
html.PresentationAvailability = class PresentationAvailability extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.value]() {
    return this.value;
  }
  get [dartx.onChange]() {
    return html.PresentationAvailability.changeEvent.forTarget(this);
  }
};
dart.setSignature(html.PresentationAvailability, {
  constructors: () => ({_: dart.definiteFunctionType(html.PresentationAvailability, [])}),
  fields: () => ({[dartx.value]: core.bool}),
  getters: () => ({[dartx.onChange]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  sfields: () => ({changeEvent: EventStreamProviderOfEvent()})
});
dart.defineLazy(html.PresentationAvailability, {
  get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('change'));
  }
});
dart.registerExtension(dart.global.PresentationAvailability, html.PresentationAvailability);
dart.defineExtensionNames([
  'close',
  'send',
  'onMessage',
  'binaryType',
  'id',
  'state'
]);
html.PresentationSession = class PresentationSession extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.binaryType]() {
    return this.binaryType;
  }
  set [dartx.binaryType](value) {
    this.binaryType = value;
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.state]() {
    return this.state;
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [dartx.send](...args) {
    return this.send.apply(this, args);
  }
  get [dartx.onMessage]() {
    return html.PresentationSession.messageEvent.forTarget(this);
  }
};
dart.setSignature(html.PresentationSession, {
  constructors: () => ({_: dart.definiteFunctionType(html.PresentationSession, [])}),
  fields: () => ({
    [dartx.binaryType]: core.String,
    [dartx.id]: core.String,
    [dartx.state]: core.String
  }),
  getters: () => ({[dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), [])}),
  methods: () => ({
    [dartx.close]: dart.definiteFunctionType(dart.void, []),
    [dartx.send]: dart.definiteFunctionType(dart.void, [dart.dynamic])
  }),
  sfields: () => ({messageEvent: EventStreamProviderOfMessageEvent()})
});
dart.defineLazy(html.PresentationSession, {
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  }
});
dart.registerExtension(dart.global.PresentationSession, html.PresentationSession);
dart.defineExtensionNames([
  'sheet',
  'target'
]);
html.ProcessingInstruction = class ProcessingInstruction extends html.CharacterData {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.sheet]() {
    return this.sheet;
  }
  get [dartx.target]() {
    return this.target;
  }
};
dart.setSignature(html.ProcessingInstruction, {
  constructors: () => ({_: dart.definiteFunctionType(html.ProcessingInstruction, [])}),
  fields: () => ({
    [dartx.sheet]: html.StyleSheet,
    [dartx.target]: core.String
  })
});
dart.registerExtension(dart.global.ProcessingInstruction, html.ProcessingInstruction);
dart.defineExtensionNames([
  'labels',
  'max',
  'position',
  'value'
]);
html.ProgressElement = class ProgressElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.ProgressElement._check(html.document[dartx.createElement]("progress"));
  }
  created() {
    this[dartx.labels] = null;
    this[dartx.max] = null;
    this[dartx.position] = null;
    this[dartx.value] = null;
    super.created();
  }
  static get supported() {
    return html.Element.isTagSupported('progress');
  }
  get [dartx.labels]() {
    return this.labels;
  }
  get [dartx.max]() {
    return this.max;
  }
  set [dartx.max](value) {
    this.max = value;
  }
  get [dartx.position]() {
    return this.position;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
};
dart.defineNamedConstructor(html.ProgressElement, 'created');
dart.setSignature(html.ProgressElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ProgressElement, []),
    new: dart.definiteFunctionType(html.ProgressElement, []),
    created: dart.definiteFunctionType(html.ProgressElement, [])
  }),
  fields: () => ({
    [dartx.labels]: ListOfNode(),
    [dartx.max]: core.num,
    [dartx.position]: core.double,
    [dartx.value]: core.num
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.HTMLProgressElement, html.ProgressElement);
dart.defineExtensionNames([
  'lengthComputable',
  'loaded',
  'total'
]);
html.ProgressEvent = class ProgressEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.ProgressEvent._create_1(type, eventInitDict_1);
    }
    return html.ProgressEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new ProgressEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new ProgressEvent(type);
  }
  get [dartx.lengthComputable]() {
    return this.lengthComputable;
  }
  get [dartx.loaded]() {
    return this.loaded;
  }
  get [dartx.total]() {
    return this.total;
  }
};
dart.setSignature(html.ProgressEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ProgressEvent, []),
    new: dart.definiteFunctionType(html.ProgressEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.lengthComputable]: core.bool,
    [dartx.loaded]: core.int,
    [dartx.total]: core.int
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.ProgressEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.ProgressEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.ProgressEvent, html.ProgressEvent);
dart.defineExtensionNames([
  'promise',
  'reason'
]);
html.PromiseRejectionEvent = class PromiseRejectionEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.PromiseRejectionEvent._create_1(type, eventInitDict_1);
    }
    return html.PromiseRejectionEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new PromiseRejectionEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new PromiseRejectionEvent(type);
  }
  get [dartx.promise]() {
    return this.promise;
  }
  get [dartx.reason]() {
    return this.reason;
  }
};
dart.setSignature(html.PromiseRejectionEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.PromiseRejectionEvent, []),
    new: dart.definiteFunctionType(html.PromiseRejectionEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.promise]: async.Future,
    [dartx.reason]: core.Object
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.PromiseRejectionEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.PromiseRejectionEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.PromiseRejectionEvent, html.PromiseRejectionEvent);
dart.defineExtensionNames([
  'data'
]);
html.PushEvent = class PushEvent extends html.ExtendableEvent {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.PushEvent._create_1(type, eventInitDict_1);
    }
    return html.PushEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new PushEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new PushEvent(type);
  }
  get [dartx.data]() {
    return this.data;
  }
};
dart.setSignature(html.PushEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.PushEvent, []),
    new: dart.definiteFunctionType(html.PushEvent, [core.String], [core.Map])
  }),
  fields: () => ({[dartx.data]: html.PushMessageData}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.PushEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.PushEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.PushEvent, html.PushEvent);
const _permissionState_1 = Symbol('_permissionState_1');
const _permissionState_2 = Symbol('_permissionState_2');
const _subscribe_1 = Symbol('_subscribe_1');
const _subscribe_2 = Symbol('_subscribe_2');
dart.defineExtensionNames([
  'getSubscription',
  'permissionState',
  'subscribe'
]);
html.PushManager = class PushManager extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.getSubscription](...args) {
    return this.getSubscription.apply(this, args);
  }
  [dartx.permissionState](options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_permissionState_1](options_1);
    }
    return this[_permissionState_2]();
  }
  [_permissionState_1](...args) {
    return this.permissionState.apply(this, args);
  }
  [_permissionState_2](...args) {
    return this.permissionState.apply(this, args);
  }
  [dartx.subscribe](options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_subscribe_1](options_1);
    }
    return this[_subscribe_2]();
  }
  [_subscribe_1](...args) {
    return this.subscribe.apply(this, args);
  }
  [_subscribe_2](...args) {
    return this.subscribe.apply(this, args);
  }
};
dart.setSignature(html.PushManager, {
  constructors: () => ({_: dart.definiteFunctionType(html.PushManager, [])}),
  methods: () => ({
    [dartx.getSubscription]: dart.definiteFunctionType(async.Future, []),
    [dartx.permissionState]: dart.definiteFunctionType(async.Future, [], [core.Map]),
    [_permissionState_1]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [_permissionState_2]: dart.definiteFunctionType(async.Future, []),
    [dartx.subscribe]: dart.definiteFunctionType(async.Future, [], [core.Map]),
    [_subscribe_1]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [_subscribe_2]: dart.definiteFunctionType(async.Future, [])
  })
});
dart.registerExtension(dart.global.PushManager, html.PushManager);
dart.defineExtensionNames([
  'arrayBuffer',
  'blob',
  'json',
  'text'
]);
html.PushMessageData = class PushMessageData extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(message) {
    return html.PushMessageData._create_1(message);
  }
  static _create_1(message) {
    return new PushMessageData(message);
  }
  [dartx.arrayBuffer](...args) {
    return this.arrayBuffer.apply(this, args);
  }
  [dartx.blob](...args) {
    return this.blob.apply(this, args);
  }
  [dartx.json](...args) {
    return this.json.apply(this, args);
  }
  [dartx.text](...args) {
    return this.text.apply(this, args);
  }
};
dart.setSignature(html.PushMessageData, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.PushMessageData, []),
    new: dart.definiteFunctionType(html.PushMessageData, [core.String])
  }),
  methods: () => ({
    [dartx.arrayBuffer]: dart.definiteFunctionType(typed_data.ByteBuffer, []),
    [dartx.blob]: dart.definiteFunctionType(html.Blob, []),
    [dartx.json]: dart.definiteFunctionType(core.Object, []),
    [dartx.text]: dart.definiteFunctionType(core.String, [])
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.PushMessageData, [dart.dynamic])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.PushMessageData, html.PushMessageData);
dart.defineExtensionNames([
  'unsubscribe',
  'endpoint'
]);
html.PushSubscription = class PushSubscription extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.endpoint]() {
    return this.endpoint;
  }
  [dartx.unsubscribe](...args) {
    return this.unsubscribe.apply(this, args);
  }
};
dart.setSignature(html.PushSubscription, {
  constructors: () => ({_: dart.definiteFunctionType(html.PushSubscription, [])}),
  fields: () => ({[dartx.endpoint]: core.String}),
  methods: () => ({[dartx.unsubscribe]: dart.definiteFunctionType(async.Future, [])})
});
dart.registerExtension(dart.global.PushSubscription, html.PushSubscription);
dart.defineExtensionNames([
  'cite'
]);
html.QuoteElement = class QuoteElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.QuoteElement._check(html.document[dartx.createElement]("q"));
  }
  created() {
    this[dartx.cite] = null;
    super.created();
  }
  get [dartx.cite]() {
    return this.cite;
  }
  set [dartx.cite](value) {
    this.cite = value;
  }
};
dart.defineNamedConstructor(html.QuoteElement, 'created');
dart.setSignature(html.QuoteElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.QuoteElement, []),
    new: dart.definiteFunctionType(html.QuoteElement, []),
    created: dart.definiteFunctionType(html.QuoteElement, [])
  }),
  fields: () => ({[dartx.cite]: core.String})
});
dart.registerExtension(dart.global.HTMLQuoteElement, html.QuoteElement);
html._RtcErrorCallback = dart.typedef('_RtcErrorCallback', () => dart.functionType(dart.void, [core.String]));
html._RtcSessionDescriptionCallback = dart.typedef('_RtcSessionDescriptionCallback', () => dart.functionType(dart.void, [html.RtcSessionDescription]));
html.RtcStatsCallback = dart.typedef('RtcStatsCallback', () => dart.functionType(dart.void, [html.RtcStatsResponse]));
dart.defineExtensionNames([
  'cloneContents',
  'cloneRange',
  'collapse',
  'compareBoundaryPoints',
  'comparePoint',
  'createContextualFragment',
  'deleteContents',
  'detach',
  'expand',
  'extractContents',
  'getBoundingClientRect',
  'getClientRects',
  'insertNode',
  'isPointInRange',
  'selectNode',
  'selectNodeContents',
  'setEnd',
  'setEndAfter',
  'setEndBefore',
  'setStart',
  'setStartAfter',
  'setStartBefore',
  'surroundContents',
  'collapsed',
  'commonAncestorContainer',
  'endContainer',
  'endOffset',
  'startContainer',
  'startOffset'
]);
html.Range = class Range extends _interceptors.Interceptor {
  static new() {
    return html.document[dartx.createRange]();
  }
  static fromPoint(point) {
    return html.document[_caretRangeFromPoint](dart.asInt(point.x), dart.asInt(point.y));
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.collapsed]() {
    return this.collapsed;
  }
  get [dartx.commonAncestorContainer]() {
    return this.commonAncestorContainer;
  }
  get [dartx.endContainer]() {
    return this.endContainer;
  }
  get [dartx.endOffset]() {
    return this.endOffset;
  }
  get [dartx.startContainer]() {
    return this.startContainer;
  }
  get [dartx.startOffset]() {
    return this.startOffset;
  }
  [dartx.cloneContents](...args) {
    return this.cloneContents.apply(this, args);
  }
  [dartx.cloneRange](...args) {
    return this.cloneRange.apply(this, args);
  }
  [dartx.collapse](...args) {
    return this.collapse.apply(this, args);
  }
  [dartx.compareBoundaryPoints](...args) {
    return this.compareBoundaryPoints.apply(this, args);
  }
  [dartx.comparePoint](...args) {
    return this.comparePoint.apply(this, args);
  }
  [dartx.createContextualFragment](...args) {
    return this.createContextualFragment.apply(this, args);
  }
  [dartx.deleteContents](...args) {
    return this.deleteContents.apply(this, args);
  }
  [dartx.detach](...args) {
    return this.detach.apply(this, args);
  }
  [dartx.expand](...args) {
    return this.expand.apply(this, args);
  }
  [dartx.extractContents](...args) {
    return this.extractContents.apply(this, args);
  }
  [dartx.getBoundingClientRect](...args) {
    return this.getBoundingClientRect.apply(this, args);
  }
  [dartx.getClientRects](...args) {
    return this.getClientRects.apply(this, args);
  }
  [dartx.insertNode](...args) {
    return this.insertNode.apply(this, args);
  }
  [dartx.isPointInRange](...args) {
    return this.isPointInRange.apply(this, args);
  }
  [dartx.selectNode](...args) {
    return this.selectNode.apply(this, args);
  }
  [dartx.selectNodeContents](...args) {
    return this.selectNodeContents.apply(this, args);
  }
  [dartx.setEnd](...args) {
    return this.setEnd.apply(this, args);
  }
  [dartx.setEndAfter](...args) {
    return this.setEndAfter.apply(this, args);
  }
  [dartx.setEndBefore](...args) {
    return this.setEndBefore.apply(this, args);
  }
  [dartx.setStart](...args) {
    return this.setStart.apply(this, args);
  }
  [dartx.setStartAfter](...args) {
    return this.setStartAfter.apply(this, args);
  }
  [dartx.setStartBefore](...args) {
    return this.setStartBefore.apply(this, args);
  }
  [dartx.surroundContents](...args) {
    return this.surroundContents.apply(this, args);
  }
  static get supportsCreateContextualFragment() {
    return "createContextualFragment" in window.Range.prototype;
  }
};
dart.setSignature(html.Range, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.Range, []),
    fromPoint: dart.definiteFunctionType(html.Range, [PointOfnum()]),
    _: dart.definiteFunctionType(html.Range, [])
  }),
  fields: () => ({
    [dartx.collapsed]: core.bool,
    [dartx.commonAncestorContainer]: html.Node,
    [dartx.endContainer]: html.Node,
    [dartx.endOffset]: core.int,
    [dartx.startContainer]: html.Node,
    [dartx.startOffset]: core.int
  }),
  methods: () => ({
    [dartx.cloneContents]: dart.definiteFunctionType(html.DocumentFragment, []),
    [dartx.cloneRange]: dart.definiteFunctionType(html.Range, []),
    [dartx.collapse]: dart.definiteFunctionType(dart.void, [], [core.bool]),
    [dartx.compareBoundaryPoints]: dart.definiteFunctionType(core.int, [core.int, html.Range]),
    [dartx.comparePoint]: dart.definiteFunctionType(core.int, [html.Node, core.int]),
    [dartx.createContextualFragment]: dart.definiteFunctionType(html.DocumentFragment, [core.String]),
    [dartx.deleteContents]: dart.definiteFunctionType(dart.void, []),
    [dartx.detach]: dart.definiteFunctionType(dart.void, []),
    [dartx.expand]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.extractContents]: dart.definiteFunctionType(html.DocumentFragment, []),
    [dartx.getBoundingClientRect]: dart.definiteFunctionType(math.Rectangle$(core.num), []),
    [dartx.getClientRects]: dart.definiteFunctionType(core.List$(math.Rectangle$(core.num)), []),
    [dartx.insertNode]: dart.definiteFunctionType(dart.void, [html.Node]),
    [dartx.isPointInRange]: dart.definiteFunctionType(core.bool, [html.Node, core.int]),
    [dartx.selectNode]: dart.definiteFunctionType(dart.void, [html.Node]),
    [dartx.selectNodeContents]: dart.definiteFunctionType(dart.void, [html.Node]),
    [dartx.setEnd]: dart.definiteFunctionType(dart.void, [html.Node, core.int]),
    [dartx.setEndAfter]: dart.definiteFunctionType(dart.void, [html.Node]),
    [dartx.setEndBefore]: dart.definiteFunctionType(dart.void, [html.Node]),
    [dartx.setStart]: dart.definiteFunctionType(dart.void, [html.Node, core.int]),
    [dartx.setStartAfter]: dart.definiteFunctionType(dart.void, [html.Node]),
    [dartx.setStartBefore]: dart.definiteFunctionType(dart.void, [html.Node]),
    [dartx.surroundContents]: dart.definiteFunctionType(dart.void, [html.Node])
  }),
  sfields: () => ({
    END_TO_END: core.int,
    END_TO_START: core.int,
    START_TO_END: core.int,
    START_TO_START: core.int
  }),
  sgetters: () => ({supportsCreateContextualFragment: dart.definiteFunctionType(core.bool, [])})
});
html.Range.END_TO_END = 2;
html.Range.END_TO_START = 3;
html.Range.START_TO_END = 1;
html.Range.START_TO_START = 0;
dart.registerExtension(dart.global.Range, html.Range);
dart.defineExtensionNames([
  'cancel',
  'getReader'
]);
html.ReadableByteStream = class ReadableByteStream extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.cancel](...args) {
    return this.cancel.apply(this, args);
  }
  [dartx.getReader](...args) {
    return this.getReader.apply(this, args);
  }
};
dart.setSignature(html.ReadableByteStream, {
  constructors: () => ({_: dart.definiteFunctionType(html.ReadableByteStream, [])}),
  methods: () => ({
    [dartx.cancel]: dart.definiteFunctionType(async.Future, [], [core.Object]),
    [dartx.getReader]: dart.definiteFunctionType(html.ReadableByteStreamReader, [])
  })
});
dart.registerExtension(dart.global.ReadableByteStream, html.ReadableByteStream);
dart.defineExtensionNames([
  'cancel',
  'read',
  'releaseLock',
  'closed'
]);
html.ReadableByteStreamReader = class ReadableByteStreamReader extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.closed]() {
    return this.closed;
  }
  [dartx.cancel](...args) {
    return this.cancel.apply(this, args);
  }
  [dartx.read](...args) {
    return this.read.apply(this, args);
  }
  [dartx.releaseLock](...args) {
    return this.releaseLock.apply(this, args);
  }
};
dart.setSignature(html.ReadableByteStreamReader, {
  constructors: () => ({_: dart.definiteFunctionType(html.ReadableByteStreamReader, [])}),
  fields: () => ({[dartx.closed]: async.Future}),
  methods: () => ({
    [dartx.cancel]: dart.definiteFunctionType(async.Future, [], [core.Object]),
    [dartx.read]: dart.definiteFunctionType(async.Future, []),
    [dartx.releaseLock]: dart.definiteFunctionType(dart.void, [])
  })
});
dart.registerExtension(dart.global.ReadableByteStreamReader, html.ReadableByteStreamReader);
dart.defineExtensionNames([
  'cancel',
  'getReader'
]);
html.ReadableStream = class ReadableStream extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.cancel](...args) {
    return this.cancel.apply(this, args);
  }
  [dartx.getReader](...args) {
    return this.getReader.apply(this, args);
  }
};
dart.setSignature(html.ReadableStream, {
  constructors: () => ({_: dart.definiteFunctionType(html.ReadableStream, [])}),
  methods: () => ({
    [dartx.cancel]: dart.definiteFunctionType(async.Future, [], [core.Object]),
    [dartx.getReader]: dart.definiteFunctionType(html.ReadableStreamReader, [])
  })
});
dart.registerExtension(dart.global.ReadableStream, html.ReadableStream);
dart.defineExtensionNames([
  'cancel',
  'read',
  'releaseLock',
  'closed'
]);
html.ReadableStreamReader = class ReadableStreamReader extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.closed]() {
    return this.closed;
  }
  [dartx.cancel](...args) {
    return this.cancel.apply(this, args);
  }
  [dartx.read](...args) {
    return this.read.apply(this, args);
  }
  [dartx.releaseLock](...args) {
    return this.releaseLock.apply(this, args);
  }
};
dart.setSignature(html.ReadableStreamReader, {
  constructors: () => ({_: dart.definiteFunctionType(html.ReadableStreamReader, [])}),
  fields: () => ({[dartx.closed]: async.Future}),
  methods: () => ({
    [dartx.cancel]: dart.definiteFunctionType(async.Future, [], [core.Object]),
    [dartx.read]: dart.definiteFunctionType(async.Future, []),
    [dartx.releaseLock]: dart.definiteFunctionType(dart.void, [])
  })
});
dart.registerExtension(dart.global.ReadableStreamReader, html.ReadableStreamReader);
dart.defineExtensionNames([
  'relatedTarget'
]);
html.RelatedEvent = class RelatedEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.RelatedEvent._create_1(type, eventInitDict_1);
    }
    return html.RelatedEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new RelatedEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new RelatedEvent(type);
  }
  get [dartx.relatedTarget]() {
    return html._convertNativeToDart_EventTarget(this[_get_relatedTarget]);
  }
  get [_get_relatedTarget]() {
    return this.relatedTarget;
  }
};
dart.setSignature(html.RelatedEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.RelatedEvent, []),
    new: dart.definiteFunctionType(html.RelatedEvent, [core.String], [core.Map])
  }),
  fields: () => ({[_get_relatedTarget]: dart.dynamic}),
  getters: () => ({[dartx.relatedTarget]: dart.definiteFunctionType(html.EventTarget, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.RelatedEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.RelatedEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.RelatedEvent, html.RelatedEvent);
html.RequestAnimationFrameCallback = dart.typedef('RequestAnimationFrameCallback', () => dart.functionType(dart.void, [core.num]));
dart.defineExtensionNames([
  'url'
]);
html.ResourceProgressEvent = class ResourceProgressEvent extends html.ProgressEvent {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.url]() {
    return this.url;
  }
};
dart.setSignature(html.ResourceProgressEvent, {
  constructors: () => ({_: dart.definiteFunctionType(html.ResourceProgressEvent, [])}),
  fields: () => ({[dartx.url]: core.String})
});
dart.registerExtension(dart.global.ResourceProgressEvent, html.ResourceProgressEvent);
dart.defineExtensionNames([
  'close',
  'send',
  'sendBlob',
  'sendByteBuffer',
  'sendString',
  'sendTypedData',
  'onClose',
  'onError',
  'onMessage',
  'onOpen',
  'binaryType',
  'bufferedAmount',
  'id',
  'label',
  'maxRetransmitTime',
  'maxRetransmits',
  'negotiated',
  'ordered',
  'protocol',
  'readyState',
  'reliable'
]);
html.RtcDataChannel = class RtcDataChannel extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.binaryType]() {
    return this.binaryType;
  }
  set [dartx.binaryType](value) {
    this.binaryType = value;
  }
  get [dartx.bufferedAmount]() {
    return this.bufferedAmount;
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.label]() {
    return this.label;
  }
  get [dartx.maxRetransmitTime]() {
    return this.maxRetransmitTime;
  }
  get [dartx.maxRetransmits]() {
    return this.maxRetransmits;
  }
  get [dartx.negotiated]() {
    return this.negotiated;
  }
  get [dartx.ordered]() {
    return this.ordered;
  }
  get [dartx.protocol]() {
    return this.protocol;
  }
  get [dartx.readyState]() {
    return this.readyState;
  }
  get [dartx.reliable]() {
    return this.reliable;
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [dartx.send](...args) {
    return this.send.apply(this, args);
  }
  [dartx.sendBlob](...args) {
    return this.send.apply(this, args);
  }
  [dartx.sendByteBuffer](...args) {
    return this.send.apply(this, args);
  }
  [dartx.sendString](...args) {
    return this.send.apply(this, args);
  }
  [dartx.sendTypedData](...args) {
    return this.send.apply(this, args);
  }
  get [dartx.onClose]() {
    return html.RtcDataChannel.closeEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return html.RtcDataChannel.errorEvent.forTarget(this);
  }
  get [dartx.onMessage]() {
    return html.RtcDataChannel.messageEvent.forTarget(this);
  }
  get [dartx.onOpen]() {
    return html.RtcDataChannel.openEvent.forTarget(this);
  }
};
dart.setSignature(html.RtcDataChannel, {
  constructors: () => ({_: dart.definiteFunctionType(html.RtcDataChannel, [])}),
  fields: () => ({
    [dartx.binaryType]: core.String,
    [dartx.bufferedAmount]: core.int,
    [dartx.id]: core.int,
    [dartx.label]: core.String,
    [dartx.maxRetransmitTime]: core.int,
    [dartx.maxRetransmits]: core.int,
    [dartx.negotiated]: core.bool,
    [dartx.ordered]: core.bool,
    [dartx.protocol]: core.String,
    [dartx.readyState]: core.String,
    [dartx.reliable]: core.bool
  }),
  getters: () => ({
    [dartx.onClose]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), []),
    [dartx.onOpen]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  methods: () => ({
    [dartx.close]: dart.definiteFunctionType(dart.void, []),
    [dartx.send]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [dartx.sendBlob]: dart.definiteFunctionType(dart.void, [html.Blob]),
    [dartx.sendByteBuffer]: dart.definiteFunctionType(dart.void, [typed_data.ByteBuffer]),
    [dartx.sendString]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.sendTypedData]: dart.definiteFunctionType(dart.void, [typed_data.TypedData])
  }),
  sfields: () => ({
    closeEvent: EventStreamProviderOfEvent(),
    errorEvent: EventStreamProviderOfEvent(),
    messageEvent: EventStreamProviderOfMessageEvent(),
    openEvent: EventStreamProviderOfEvent()
  })
});
dart.defineLazy(html.RtcDataChannel, {
  get closeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('close'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  },
  get openEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('open'));
  }
});
dart.registerExtension(dart.global.RTCDataChannel, html.RtcDataChannel);
dart.registerExtension(dart.global.DataChannel, html.RtcDataChannel);
dart.defineExtensionNames([
  'channel'
]);
html.RtcDataChannelEvent = class RtcDataChannelEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.channel]() {
    return this.channel;
  }
};
dart.setSignature(html.RtcDataChannelEvent, {
  constructors: () => ({_: dart.definiteFunctionType(html.RtcDataChannelEvent, [])}),
  fields: () => ({[dartx.channel]: html.RtcDataChannel})
});
dart.registerExtension(dart.global.RTCDataChannelEvent, html.RtcDataChannelEvent);
dart.defineExtensionNames([
  'insertDtmf',
  'onToneChange',
  'canInsertDtmf',
  'duration',
  'interToneGap',
  'toneBuffer',
  'track'
]);
html.RtcDtmfSender = class RtcDtmfSender extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.canInsertDtmf]() {
    return this.canInsertDTMF;
  }
  get [dartx.duration]() {
    return this.duration;
  }
  get [dartx.interToneGap]() {
    return this.interToneGap;
  }
  get [dartx.toneBuffer]() {
    return this.toneBuffer;
  }
  get [dartx.track]() {
    return this.track;
  }
  [dartx.insertDtmf](...args) {
    return this.insertDTMF.apply(this, args);
  }
  get [dartx.onToneChange]() {
    return html.RtcDtmfSender.toneChangeEvent.forTarget(this);
  }
};
dart.setSignature(html.RtcDtmfSender, {
  constructors: () => ({_: dart.definiteFunctionType(html.RtcDtmfSender, [])}),
  fields: () => ({
    [dartx.canInsertDtmf]: core.bool,
    [dartx.duration]: core.int,
    [dartx.interToneGap]: core.int,
    [dartx.toneBuffer]: core.String,
    [dartx.track]: html.MediaStreamTrack
  }),
  getters: () => ({[dartx.onToneChange]: dart.definiteFunctionType(async.Stream$(html.RtcDtmfToneChangeEvent), [])}),
  methods: () => ({[dartx.insertDtmf]: dart.definiteFunctionType(dart.void, [core.String], [core.int, core.int])}),
  sfields: () => ({toneChangeEvent: EventStreamProviderOfRtcDtmfToneChangeEvent()})
});
dart.defineLazy(html.RtcDtmfSender, {
  get toneChangeEvent() {
    return dart.const(new (EventStreamProviderOfRtcDtmfToneChangeEvent())('tonechange'));
  }
});
dart.registerExtension(dart.global.RTCDTMFSender, html.RtcDtmfSender);
dart.defineExtensionNames([
  'tone'
]);
html.RtcDtmfToneChangeEvent = class RtcDtmfToneChangeEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html.RtcDtmfToneChangeEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new RTCDTMFToneChangeEvent(type, eventInitDict);
  }
  get [dartx.tone]() {
    return this.tone;
  }
};
dart.setSignature(html.RtcDtmfToneChangeEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.RtcDtmfToneChangeEvent, []),
    new: dart.definiteFunctionType(html.RtcDtmfToneChangeEvent, [core.String, core.Map])
  }),
  fields: () => ({[dartx.tone]: core.String}),
  statics: () => ({_create_1: dart.definiteFunctionType(html.RtcDtmfToneChangeEvent, [dart.dynamic, dart.dynamic])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.RTCDTMFToneChangeEvent, html.RtcDtmfToneChangeEvent);
dart.defineExtensionNames([
  'candidate',
  'sdpMLineIndex',
  'sdpMid'
]);
html.RtcIceCandidate = class RtcIceCandidate extends _interceptors.Interceptor {
  static new(dictionary) {
    let constructorName = window[dart.test(html_common.Device.isFirefox) ? dart.str`${html_common.Device.propertyPrefix}RTCIceCandidate` : 'RTCIceCandidate'];
    return new constructorName(html_common.convertDartToNative_SerializedScriptValue(dictionary));
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.candidate]() {
    return this.candidate;
  }
  set [dartx.candidate](value) {
    this.candidate = value;
  }
  get [dartx.sdpMLineIndex]() {
    return this.sdpMLineIndex;
  }
  set [dartx.sdpMLineIndex](value) {
    this.sdpMLineIndex = value;
  }
  get [dartx.sdpMid]() {
    return this.sdpMid;
  }
  set [dartx.sdpMid](value) {
    this.sdpMid = value;
  }
};
dart.setSignature(html.RtcIceCandidate, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.RtcIceCandidate, [core.Map]),
    _: dart.definiteFunctionType(html.RtcIceCandidate, [])
  }),
  fields: () => ({
    [dartx.candidate]: core.String,
    [dartx.sdpMLineIndex]: core.int,
    [dartx.sdpMid]: core.String
  })
});
dart.registerExtension(dart.global.RTCIceCandidate, html.RtcIceCandidate);
dart.registerExtension(dart.global.mozRTCIceCandidate, html.RtcIceCandidate);
dart.defineExtensionNames([
  'candidate'
]);
html.RtcIceCandidateEvent = class RtcIceCandidateEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.candidate]() {
    return this.candidate;
  }
};
dart.setSignature(html.RtcIceCandidateEvent, {
  constructors: () => ({_: dart.definiteFunctionType(html.RtcIceCandidateEvent, [])}),
  fields: () => ({[dartx.candidate]: html.RtcIceCandidate})
});
dart.registerExtension(dart.global.RTCIceCandidateEvent, html.RtcIceCandidateEvent);
dart.registerExtension(dart.global.RTCPeerConnectionIceEvent, html.RtcIceCandidateEvent);
const _createOffer = Symbol('_createOffer');
const _createAnswer = Symbol('_createAnswer');
const _getStats = Symbol('_getStats');
const _addStream_1 = Symbol('_addStream_1');
const _addStream_2 = Symbol('_addStream_2');
const _createAnswer_1 = Symbol('_createAnswer_1');
const _createAnswer_2 = Symbol('_createAnswer_2');
const _createDataChannel_1 = Symbol('_createDataChannel_1');
const _createDataChannel_2 = Symbol('_createDataChannel_2');
const _createOffer_1 = Symbol('_createOffer_1');
const _createOffer_2 = Symbol('_createOffer_2');
const _setLocalDescription = Symbol('_setLocalDescription');
const _setRemoteDescription = Symbol('_setRemoteDescription');
const _updateIce_1 = Symbol('_updateIce_1');
const _updateIce_2 = Symbol('_updateIce_2');
const _updateIce_3 = Symbol('_updateIce_3');
dart.defineExtensionNames([
  'createOffer',
  'createAnswer',
  'getStats',
  'addIceCandidate',
  'addStream',
  'close',
  'createDtmfSender',
  'createDataChannel',
  'getLocalStreams',
  'getRemoteStreams',
  'getStreamById',
  'removeStream',
  'setLocalDescription',
  'setRemoteDescription',
  'updateIce',
  'onAddStream',
  'onDataChannel',
  'onIceCandidate',
  'onIceConnectionStateChange',
  'onNegotiationNeeded',
  'onRemoveStream',
  'onSignalingStateChange',
  'iceConnectionState',
  'iceGatheringState',
  'localDescription',
  'remoteDescription',
  'signalingState'
]);
html.RtcPeerConnection = class RtcPeerConnection extends html.EventTarget {
  static new(rtcIceServers, mediaConstraints) {
    if (mediaConstraints === void 0) mediaConstraints = null;
    let constructorName = window[dart.str`${html_common.Device.propertyPrefix}RTCPeerConnection`];
    if (mediaConstraints != null) {
      return new constructorName(html_common.convertDartToNative_SerializedScriptValue(rtcIceServers), html_common.convertDartToNative_SerializedScriptValue(mediaConstraints));
    } else {
      return new constructorName(html_common.convertDartToNative_SerializedScriptValue(rtcIceServers));
    }
  }
  static get supported() {
    try {
      html.RtcPeerConnection.new(dart.map({iceServers: JSArrayOfMapOfString$String().of([dart.map({url: "stun:localhost"}, core.String, core.String)])}, core.String, ListOfMapOfString$String()));
      return true;
    } catch (_) {
      return false;
    }

    return false;
  }
  [dartx.createOffer](mediaConstraints) {
    if (mediaConstraints === void 0) mediaConstraints = null;
    let completer = CompleterOfRtcSessionDescription().new();
    this[_createOffer](dart.fn(value => {
      completer.complete(value);
    }, RtcSessionDescriptionTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, StringTovoid()), mediaConstraints);
    return completer.future;
  }
  [dartx.createAnswer](mediaConstraints) {
    if (mediaConstraints === void 0) mediaConstraints = null;
    let completer = CompleterOfRtcSessionDescription().new();
    this[_createAnswer](dart.fn(value => {
      completer.complete(value);
    }, RtcSessionDescriptionTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, StringTovoid()), mediaConstraints);
    return completer.future;
  }
  [dartx.getStats](selector) {
    let completer = CompleterOfRtcStatsResponse().new();
    this[_getStats](dart.fn(value => {
      completer.complete(value);
    }, RtcStatsResponseTovoid()), selector);
    return completer.future;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.iceConnectionState]() {
    return this.iceConnectionState;
  }
  get [dartx.iceGatheringState]() {
    return this.iceGatheringState;
  }
  get [dartx.localDescription]() {
    return this.localDescription;
  }
  get [dartx.remoteDescription]() {
    return this.remoteDescription;
  }
  get [dartx.signalingState]() {
    return this.signalingState;
  }
  [dartx.addIceCandidate](...args) {
    return this.addIceCandidate.apply(this, args);
  }
  [dartx.addStream](stream, mediaConstraints) {
    if (mediaConstraints === void 0) mediaConstraints = null;
    if (mediaConstraints != null) {
      let mediaConstraints_1 = html_common.convertDartToNative_Dictionary(mediaConstraints);
      this[_addStream_1](stream, mediaConstraints_1);
      return;
    }
    this[_addStream_2](stream);
    return;
  }
  [_addStream_1](...args) {
    return this.addStream.apply(this, args);
  }
  [_addStream_2](...args) {
    return this.addStream.apply(this, args);
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [_createAnswer](successCallback, failureCallback, mediaConstraints) {
    if (failureCallback === void 0) failureCallback = null;
    if (mediaConstraints === void 0) mediaConstraints = null;
    if (mediaConstraints != null) {
      let mediaConstraints_1 = html_common.convertDartToNative_Dictionary(mediaConstraints);
      this[_createAnswer_1](successCallback, failureCallback, mediaConstraints_1);
      return;
    }
    this[_createAnswer_2](successCallback, failureCallback);
    return;
  }
  [_createAnswer_1](...args) {
    return this.createAnswer.apply(this, args);
  }
  [_createAnswer_2](...args) {
    return this.createAnswer.apply(this, args);
  }
  [dartx.createDtmfSender](...args) {
    return this.createDTMFSender.apply(this, args);
  }
  [dartx.createDataChannel](label, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_createDataChannel_1](label, options_1);
    }
    return this[_createDataChannel_2](label);
  }
  [_createDataChannel_1](...args) {
    return this.createDataChannel.apply(this, args);
  }
  [_createDataChannel_2](...args) {
    return this.createDataChannel.apply(this, args);
  }
  [_createOffer](successCallback, failureCallback, rtcOfferOptions) {
    if (failureCallback === void 0) failureCallback = null;
    if (rtcOfferOptions === void 0) rtcOfferOptions = null;
    if (rtcOfferOptions != null) {
      let rtcOfferOptions_1 = html_common.convertDartToNative_Dictionary(rtcOfferOptions);
      this[_createOffer_1](successCallback, failureCallback, rtcOfferOptions_1);
      return;
    }
    this[_createOffer_2](successCallback, failureCallback);
    return;
  }
  [_createOffer_1](...args) {
    return this.createOffer.apply(this, args);
  }
  [_createOffer_2](...args) {
    return this.createOffer.apply(this, args);
  }
  [dartx.getLocalStreams](...args) {
    return this.getLocalStreams.apply(this, args);
  }
  [dartx.getRemoteStreams](...args) {
    return this.getRemoteStreams.apply(this, args);
  }
  [_getStats](...args) {
    return this.getStats.apply(this, args);
  }
  [dartx.getStreamById](...args) {
    return this.getStreamById.apply(this, args);
  }
  [dartx.removeStream](...args) {
    return this.removeStream.apply(this, args);
  }
  [_setLocalDescription](...args) {
    return this.setLocalDescription.apply(this, args);
  }
  [dartx.setLocalDescription](description) {
    let completer = async.Completer.new();
    this[_setLocalDescription](description, dart.fn(() => {
      completer.complete();
    }, VoidTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, StringTovoid()));
    return completer.future;
  }
  [_setRemoteDescription](...args) {
    return this.setRemoteDescription.apply(this, args);
  }
  [dartx.setRemoteDescription](description) {
    let completer = async.Completer.new();
    this[_setRemoteDescription](description, dart.fn(() => {
      completer.complete();
    }, VoidTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, StringTovoid()));
    return completer.future;
  }
  [dartx.updateIce](configuration, mediaConstraints) {
    if (configuration === void 0) configuration = null;
    if (mediaConstraints === void 0) mediaConstraints = null;
    if (mediaConstraints != null) {
      let configuration_1 = html_common.convertDartToNative_Dictionary(configuration);
      let mediaConstraints_2 = html_common.convertDartToNative_Dictionary(mediaConstraints);
      this[_updateIce_1](configuration_1, mediaConstraints_2);
      return;
    }
    if (configuration != null) {
      let configuration_1 = html_common.convertDartToNative_Dictionary(configuration);
      this[_updateIce_2](configuration_1);
      return;
    }
    this[_updateIce_3]();
    return;
  }
  [_updateIce_1](...args) {
    return this.updateIce.apply(this, args);
  }
  [_updateIce_2](...args) {
    return this.updateIce.apply(this, args);
  }
  [_updateIce_3](...args) {
    return this.updateIce.apply(this, args);
  }
  get [dartx.onAddStream]() {
    return html.RtcPeerConnection.addStreamEvent.forTarget(this);
  }
  get [dartx.onDataChannel]() {
    return html.RtcPeerConnection.dataChannelEvent.forTarget(this);
  }
  get [dartx.onIceCandidate]() {
    return html.RtcPeerConnection.iceCandidateEvent.forTarget(this);
  }
  get [dartx.onIceConnectionStateChange]() {
    return html.RtcPeerConnection.iceConnectionStateChangeEvent.forTarget(this);
  }
  get [dartx.onNegotiationNeeded]() {
    return html.RtcPeerConnection.negotiationNeededEvent.forTarget(this);
  }
  get [dartx.onRemoveStream]() {
    return html.RtcPeerConnection.removeStreamEvent.forTarget(this);
  }
  get [dartx.onSignalingStateChange]() {
    return html.RtcPeerConnection.signalingStateChangeEvent.forTarget(this);
  }
};
dart.setSignature(html.RtcPeerConnection, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.RtcPeerConnection, [core.Map], [core.Map]),
    _: dart.definiteFunctionType(html.RtcPeerConnection, [])
  }),
  fields: () => ({
    [dartx.iceConnectionState]: core.String,
    [dartx.iceGatheringState]: core.String,
    [dartx.localDescription]: html.RtcSessionDescription,
    [dartx.remoteDescription]: html.RtcSessionDescription,
    [dartx.signalingState]: core.String
  }),
  getters: () => ({
    [dartx.onAddStream]: dart.definiteFunctionType(async.Stream$(html.MediaStreamEvent), []),
    [dartx.onDataChannel]: dart.definiteFunctionType(async.Stream$(html.RtcDataChannelEvent), []),
    [dartx.onIceCandidate]: dart.definiteFunctionType(async.Stream$(html.RtcIceCandidateEvent), []),
    [dartx.onIceConnectionStateChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onNegotiationNeeded]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onRemoveStream]: dart.definiteFunctionType(async.Stream$(html.MediaStreamEvent), []),
    [dartx.onSignalingStateChange]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  methods: () => ({
    [dartx.createOffer]: dart.definiteFunctionType(async.Future$(html.RtcSessionDescription), [], [core.Map]),
    [dartx.createAnswer]: dart.definiteFunctionType(async.Future$(html.RtcSessionDescription), [], [core.Map]),
    [dartx.getStats]: dart.definiteFunctionType(async.Future$(html.RtcStatsResponse), [html.MediaStreamTrack]),
    [dartx.addIceCandidate]: dart.definiteFunctionType(dart.void, [html.RtcIceCandidate, html.VoidCallback, html._RtcErrorCallback]),
    [dartx.addStream]: dart.definiteFunctionType(dart.void, [html.MediaStream], [core.Map]),
    [_addStream_1]: dart.definiteFunctionType(dart.void, [html.MediaStream, dart.dynamic]),
    [_addStream_2]: dart.definiteFunctionType(dart.void, [html.MediaStream]),
    [dartx.close]: dart.definiteFunctionType(dart.void, []),
    [_createAnswer]: dart.definiteFunctionType(dart.void, [html._RtcSessionDescriptionCallback], [html._RtcErrorCallback, core.Map]),
    [_createAnswer_1]: dart.definiteFunctionType(dart.void, [html._RtcSessionDescriptionCallback, html._RtcErrorCallback, dart.dynamic]),
    [_createAnswer_2]: dart.definiteFunctionType(dart.void, [html._RtcSessionDescriptionCallback, html._RtcErrorCallback]),
    [dartx.createDtmfSender]: dart.definiteFunctionType(html.RtcDtmfSender, [html.MediaStreamTrack]),
    [dartx.createDataChannel]: dart.definiteFunctionType(html.RtcDataChannel, [core.String], [core.Map]),
    [_createDataChannel_1]: dart.definiteFunctionType(html.RtcDataChannel, [dart.dynamic, dart.dynamic]),
    [_createDataChannel_2]: dart.definiteFunctionType(html.RtcDataChannel, [dart.dynamic]),
    [_createOffer]: dart.definiteFunctionType(dart.void, [html._RtcSessionDescriptionCallback], [html._RtcErrorCallback, core.Map]),
    [_createOffer_1]: dart.definiteFunctionType(dart.void, [html._RtcSessionDescriptionCallback, html._RtcErrorCallback, dart.dynamic]),
    [_createOffer_2]: dart.definiteFunctionType(dart.void, [html._RtcSessionDescriptionCallback, html._RtcErrorCallback]),
    [dartx.getLocalStreams]: dart.definiteFunctionType(core.List$(html.MediaStream), []),
    [dartx.getRemoteStreams]: dart.definiteFunctionType(core.List$(html.MediaStream), []),
    [_getStats]: dart.definiteFunctionType(dart.void, [html.RtcStatsCallback, html.MediaStreamTrack]),
    [dartx.getStreamById]: dart.definiteFunctionType(html.MediaStream, [core.String]),
    [dartx.removeStream]: dart.definiteFunctionType(dart.void, [html.MediaStream]),
    [_setLocalDescription]: dart.definiteFunctionType(dart.void, [html.RtcSessionDescription], [html.VoidCallback, html._RtcErrorCallback]),
    [dartx.setLocalDescription]: dart.definiteFunctionType(async.Future, [html.RtcSessionDescription]),
    [_setRemoteDescription]: dart.definiteFunctionType(dart.void, [html.RtcSessionDescription], [html.VoidCallback, html._RtcErrorCallback]),
    [dartx.setRemoteDescription]: dart.definiteFunctionType(async.Future, [html.RtcSessionDescription]),
    [dartx.updateIce]: dart.definiteFunctionType(dart.void, [], [core.Map, core.Map]),
    [_updateIce_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic]),
    [_updateIce_2]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [_updateIce_3]: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({
    addStreamEvent: EventStreamProviderOfMediaStreamEvent(),
    dataChannelEvent: EventStreamProviderOfRtcDataChannelEvent(),
    iceCandidateEvent: EventStreamProviderOfRtcIceCandidateEvent(),
    iceConnectionStateChangeEvent: EventStreamProviderOfEvent(),
    negotiationNeededEvent: EventStreamProviderOfEvent(),
    removeStreamEvent: EventStreamProviderOfMediaStreamEvent(),
    signalingStateChangeEvent: EventStreamProviderOfEvent()
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineLazy(html.RtcPeerConnection, {
  get addStreamEvent() {
    return dart.const(new (EventStreamProviderOfMediaStreamEvent())('addstream'));
  },
  get dataChannelEvent() {
    return dart.const(new (EventStreamProviderOfRtcDataChannelEvent())('datachannel'));
  },
  get iceCandidateEvent() {
    return dart.const(new (EventStreamProviderOfRtcIceCandidateEvent())('icecandidate'));
  },
  get iceConnectionStateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('iceconnectionstatechange'));
  },
  get negotiationNeededEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('negotiationneeded'));
  },
  get removeStreamEvent() {
    return dart.const(new (EventStreamProviderOfMediaStreamEvent())('removestream'));
  },
  get signalingStateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('signalingstatechange'));
  }
});
dart.registerExtension(dart.global.RTCPeerConnection, html.RtcPeerConnection);
dart.registerExtension(dart.global.mozRTCPeerConnection, html.RtcPeerConnection);
dart.defineExtensionNames([
  'sdp',
  'type'
]);
html.RtcSessionDescription = class RtcSessionDescription extends _interceptors.Interceptor {
  static new(dictionary) {
    let constructorName = window[dart.test(html_common.Device.isFirefox) ? dart.str`${html_common.Device.propertyPrefix}RTCSessionDescription` : 'RTCSessionDescription'];
    return new constructorName(html_common.convertDartToNative_SerializedScriptValue(dictionary));
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.sdp]() {
    return this.sdp;
  }
  set [dartx.sdp](value) {
    this.sdp = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
};
dart.setSignature(html.RtcSessionDescription, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.RtcSessionDescription, [core.Map]),
    _: dart.definiteFunctionType(html.RtcSessionDescription, [])
  }),
  fields: () => ({
    [dartx.sdp]: core.String,
    [dartx.type]: core.String
  })
});
dart.registerExtension(dart.global.RTCSessionDescription, html.RtcSessionDescription);
dart.registerExtension(dart.global.mozRTCSessionDescription, html.RtcSessionDescription);
const _get_timestamp = Symbol('_get_timestamp');
dart.defineExtensionNames([
  'timestamp',
  'names',
  'stat',
  'id',
  'type'
]);
html.RtcStatsReport = class RtcStatsReport extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.timestamp]() {
    return html_common.convertNativeToDart_DateTime(this[_get_timestamp]);
  }
  get [_get_timestamp]() {
    return this.timestamp;
  }
  get [dartx.type]() {
    return this.type;
  }
  [dartx.names](...args) {
    return this.names.apply(this, args);
  }
  [dartx.stat](...args) {
    return this.stat.apply(this, args);
  }
};
dart.setSignature(html.RtcStatsReport, {
  constructors: () => ({_: dart.definiteFunctionType(html.RtcStatsReport, [])}),
  fields: () => ({
    [dartx.id]: core.String,
    [_get_timestamp]: dart.dynamic,
    [dartx.type]: core.String
  }),
  getters: () => ({[dartx.timestamp]: dart.definiteFunctionType(core.DateTime, [])}),
  methods: () => ({
    [dartx.names]: dart.definiteFunctionType(core.List$(core.String), []),
    [dartx.stat]: dart.definiteFunctionType(core.String, [core.String])
  })
});
dart.registerExtension(dart.global.RTCStatsReport, html.RtcStatsReport);
dart.defineExtensionNames([
  'namedItem',
  'result'
]);
html.RtcStatsResponse = class RtcStatsResponse extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
  [dartx.result](...args) {
    return this.result.apply(this, args);
  }
};
dart.setSignature(html.RtcStatsResponse, {
  constructors: () => ({_: dart.definiteFunctionType(html.RtcStatsResponse, [])}),
  methods: () => ({
    [dartx.namedItem]: dart.definiteFunctionType(html.RtcStatsReport, [core.String]),
    [dartx.result]: dart.definiteFunctionType(core.List$(html.RtcStatsReport), [])
  })
});
dart.registerExtension(dart.global.RTCStatsResponse, html.RtcStatsResponse);
const _availLeft = Symbol('_availLeft');
const _availTop = Symbol('_availTop');
const _availWidth = Symbol('_availWidth');
const _availHeight = Symbol('_availHeight');
dart.defineExtensionNames([
  'available',
  'colorDepth',
  'height',
  'orientation',
  'pixelDepth',
  'width'
]);
html.Screen = class Screen extends _interceptors.Interceptor {
  get [dartx.available]() {
    return new (RectangleOfint())(this[_availLeft], this[_availTop], this[_availWidth], this[_availHeight]);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [_availHeight]() {
    return this.availHeight;
  }
  get [_availLeft]() {
    return this.availLeft;
  }
  get [_availTop]() {
    return this.availTop;
  }
  get [_availWidth]() {
    return this.availWidth;
  }
  get [dartx.colorDepth]() {
    return this.colorDepth;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.orientation]() {
    return this.orientation;
  }
  get [dartx.pixelDepth]() {
    return this.pixelDepth;
  }
  get [dartx.width]() {
    return this.width;
  }
};
dart.setSignature(html.Screen, {
  constructors: () => ({_: dart.definiteFunctionType(html.Screen, [])}),
  fields: () => ({
    [_availHeight]: core.int,
    [_availLeft]: core.int,
    [_availTop]: core.int,
    [_availWidth]: core.int,
    [dartx.colorDepth]: core.int,
    [dartx.height]: core.int,
    [dartx.orientation]: html.ScreenOrientation,
    [dartx.pixelDepth]: core.int,
    [dartx.width]: core.int
  }),
  getters: () => ({[dartx.available]: dart.definiteFunctionType(math.Rectangle$(core.num), [])})
});
dart.registerExtension(dart.global.Screen, html.Screen);
dart.defineExtensionNames([
  'lock',
  'unlock',
  'onChange',
  'angle',
  'type'
]);
html.ScreenOrientation = class ScreenOrientation extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.angle]() {
    return this.angle;
  }
  get [dartx.type]() {
    return this.type;
  }
  [dartx.lock](...args) {
    return this.lock.apply(this, args);
  }
  [dartx.unlock](...args) {
    return this.unlock.apply(this, args);
  }
  get [dartx.onChange]() {
    return html.ScreenOrientation.changeEvent.forTarget(this);
  }
};
dart.setSignature(html.ScreenOrientation, {
  constructors: () => ({_: dart.definiteFunctionType(html.ScreenOrientation, [])}),
  fields: () => ({
    [dartx.angle]: core.int,
    [dartx.type]: core.String
  }),
  getters: () => ({[dartx.onChange]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  methods: () => ({
    [dartx.lock]: dart.definiteFunctionType(async.Future, [core.String]),
    [dartx.unlock]: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({changeEvent: EventStreamProviderOfEvent()})
});
dart.defineLazy(html.ScreenOrientation, {
  get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('change'));
  }
});
dart.registerExtension(dart.global.ScreenOrientation, html.ScreenOrientation);
dart.defineExtensionNames([
  'async',
  'charset',
  'crossOrigin',
  'defer',
  'integrity',
  'nonce',
  'src',
  'type'
]);
html.ScriptElement = class ScriptElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.ScriptElement._check(html.document[dartx.createElement]("script"));
  }
  created() {
    this[dartx.async] = null;
    this[dartx.charset] = null;
    this[dartx.crossOrigin] = null;
    this[dartx.defer] = null;
    this[dartx.integrity] = null;
    this[dartx.nonce] = null;
    this[dartx.src] = null;
    this[dartx.type] = null;
    super.created();
  }
  get [dartx.async]() {
    return this.async;
  }
  set [dartx.async](value) {
    this.async = value;
  }
  get [dartx.charset]() {
    return this.charset;
  }
  set [dartx.charset](value) {
    this.charset = value;
  }
  get [dartx.crossOrigin]() {
    return this.crossOrigin;
  }
  set [dartx.crossOrigin](value) {
    this.crossOrigin = value;
  }
  get [dartx.defer]() {
    return this.defer;
  }
  set [dartx.defer](value) {
    this.defer = value;
  }
  get [dartx.integrity]() {
    return this.integrity;
  }
  set [dartx.integrity](value) {
    this.integrity = value;
  }
  get [dartx.nonce]() {
    return this.nonce;
  }
  set [dartx.nonce](value) {
    this.nonce = value;
  }
  get [dartx.src]() {
    return this.src;
  }
  set [dartx.src](value) {
    this.src = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
};
dart.defineNamedConstructor(html.ScriptElement, 'created');
dart.setSignature(html.ScriptElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ScriptElement, []),
    new: dart.definiteFunctionType(html.ScriptElement, []),
    created: dart.definiteFunctionType(html.ScriptElement, [])
  }),
  fields: () => ({
    [dartx.async]: core.bool,
    [dartx.charset]: core.String,
    [dartx.crossOrigin]: core.String,
    [dartx.defer]: core.bool,
    [dartx.integrity]: core.String,
    [dartx.nonce]: core.String,
    [dartx.src]: core.String,
    [dartx.type]: core.String
  })
});
dart.registerExtension(dart.global.HTMLScriptElement, html.ScriptElement);
dart.defineExtensionNames([
  'consumeDelta',
  'deltaGranularity',
  'deltaX',
  'deltaY',
  'fromUserInput',
  'inInertialPhase',
  'isBeginning',
  'isEnding',
  'shouldPropagate',
  'velocityX',
  'velocityY'
]);
html.ScrollState = class ScrollState extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase, isBeginning, isEnding) {
    if (deltaX === void 0) deltaX = null;
    if (deltaY === void 0) deltaY = null;
    if (deltaGranularity === void 0) deltaGranularity = null;
    if (velocityX === void 0) velocityX = null;
    if (velocityY === void 0) velocityY = null;
    if (inInertialPhase === void 0) inInertialPhase = null;
    if (isBeginning === void 0) isBeginning = null;
    if (isEnding === void 0) isEnding = null;
    if (isEnding != null) {
      return html.ScrollState._create_1(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase, isBeginning, isEnding);
    }
    if (isBeginning != null) {
      return html.ScrollState._create_2(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase, isBeginning);
    }
    if (inInertialPhase != null) {
      return html.ScrollState._create_3(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase);
    }
    if (velocityY != null) {
      return html.ScrollState._create_4(deltaX, deltaY, deltaGranularity, velocityX, velocityY);
    }
    if (velocityX != null) {
      return html.ScrollState._create_5(deltaX, deltaY, deltaGranularity, velocityX);
    }
    if (deltaGranularity != null) {
      return html.ScrollState._create_6(deltaX, deltaY, deltaGranularity);
    }
    if (deltaY != null) {
      return html.ScrollState._create_7(deltaX, deltaY);
    }
    if (deltaX != null) {
      return html.ScrollState._create_8(deltaX);
    }
    return html.ScrollState._create_9();
  }
  static _create_1(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase, isBeginning, isEnding) {
    return new ScrollState(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase, isBeginning, isEnding);
  }
  static _create_2(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase, isBeginning) {
    return new ScrollState(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase, isBeginning);
  }
  static _create_3(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase) {
    return new ScrollState(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase);
  }
  static _create_4(deltaX, deltaY, deltaGranularity, velocityX, velocityY) {
    return new ScrollState(deltaX, deltaY, deltaGranularity, velocityX, velocityY);
  }
  static _create_5(deltaX, deltaY, deltaGranularity, velocityX) {
    return new ScrollState(deltaX, deltaY, deltaGranularity, velocityX);
  }
  static _create_6(deltaX, deltaY, deltaGranularity) {
    return new ScrollState(deltaX, deltaY, deltaGranularity);
  }
  static _create_7(deltaX, deltaY) {
    return new ScrollState(deltaX, deltaY);
  }
  static _create_8(deltaX) {
    return new ScrollState(deltaX);
  }
  static _create_9() {
    return new ScrollState();
  }
  get [dartx.deltaGranularity]() {
    return this.deltaGranularity;
  }
  get [dartx.deltaX]() {
    return this.deltaX;
  }
  get [dartx.deltaY]() {
    return this.deltaY;
  }
  get [dartx.fromUserInput]() {
    return this.fromUserInput;
  }
  get [dartx.inInertialPhase]() {
    return this.inInertialPhase;
  }
  get [dartx.isBeginning]() {
    return this.isBeginning;
  }
  get [dartx.isEnding]() {
    return this.isEnding;
  }
  get [dartx.shouldPropagate]() {
    return this.shouldPropagate;
  }
  get [dartx.velocityX]() {
    return this.velocityX;
  }
  get [dartx.velocityY]() {
    return this.velocityY;
  }
  [dartx.consumeDelta](...args) {
    return this.consumeDelta.apply(this, args);
  }
};
dart.setSignature(html.ScrollState, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ScrollState, []),
    new: dart.definiteFunctionType(html.ScrollState, [], [core.num, core.num, core.num, core.num, core.num, core.bool, core.bool, core.bool])
  }),
  fields: () => ({
    [dartx.deltaGranularity]: core.double,
    [dartx.deltaX]: core.double,
    [dartx.deltaY]: core.double,
    [dartx.fromUserInput]: core.bool,
    [dartx.inInertialPhase]: core.bool,
    [dartx.isBeginning]: core.bool,
    [dartx.isEnding]: core.bool,
    [dartx.shouldPropagate]: core.bool,
    [dartx.velocityX]: core.double,
    [dartx.velocityY]: core.double
  }),
  methods: () => ({[dartx.consumeDelta]: dart.definiteFunctionType(dart.void, [core.num, core.num])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.ScrollState, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.ScrollState, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_3: dart.definiteFunctionType(html.ScrollState, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_4: dart.definiteFunctionType(html.ScrollState, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_5: dart.definiteFunctionType(html.ScrollState, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_6: dart.definiteFunctionType(html.ScrollState, [dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_7: dart.definiteFunctionType(html.ScrollState, [dart.dynamic, dart.dynamic]),
    _create_8: dart.definiteFunctionType(html.ScrollState, [dart.dynamic]),
    _create_9: dart.definiteFunctionType(html.ScrollState, [])
  }),
  names: ['_create_1', '_create_2', '_create_3', '_create_4', '_create_5', '_create_6', '_create_7', '_create_8', '_create_9']
});
dart.registerExtension(dart.global.ScrollState, html.ScrollState);
dart.defineExtensionNames([
  'blockedUri',
  'columnNumber',
  'documentUri',
  'effectiveDirective',
  'lineNumber',
  'originalPolicy',
  'referrer',
  'sourceFile',
  'statusCode',
  'violatedDirective'
]);
html.SecurityPolicyViolationEvent = class SecurityPolicyViolationEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.SecurityPolicyViolationEvent._create_1(type, eventInitDict_1);
    }
    return html.SecurityPolicyViolationEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new SecurityPolicyViolationEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new SecurityPolicyViolationEvent(type);
  }
  get [dartx.blockedUri]() {
    return this.blockedURI;
  }
  get [dartx.columnNumber]() {
    return this.columnNumber;
  }
  get [dartx.documentUri]() {
    return this.documentURI;
  }
  get [dartx.effectiveDirective]() {
    return this.effectiveDirective;
  }
  get [dartx.lineNumber]() {
    return this.lineNumber;
  }
  get [dartx.originalPolicy]() {
    return this.originalPolicy;
  }
  get [dartx.referrer]() {
    return this.referrer;
  }
  get [dartx.sourceFile]() {
    return this.sourceFile;
  }
  get [dartx.statusCode]() {
    return this.statusCode;
  }
  get [dartx.violatedDirective]() {
    return this.violatedDirective;
  }
};
dart.setSignature(html.SecurityPolicyViolationEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.SecurityPolicyViolationEvent, []),
    new: dart.definiteFunctionType(html.SecurityPolicyViolationEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.blockedUri]: core.String,
    [dartx.columnNumber]: core.int,
    [dartx.documentUri]: core.String,
    [dartx.effectiveDirective]: core.String,
    [dartx.lineNumber]: core.int,
    [dartx.originalPolicy]: core.String,
    [dartx.referrer]: core.String,
    [dartx.sourceFile]: core.String,
    [dartx.statusCode]: core.int,
    [dartx.violatedDirective]: core.String
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.SecurityPolicyViolationEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.SecurityPolicyViolationEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.SecurityPolicyViolationEvent, html.SecurityPolicyViolationEvent);
dart.defineExtensionNames([
  'add',
  'checkValidity',
  'item',
  'namedItem',
  'reportValidity',
  'setCustomValidity',
  'options',
  'selectedOptions',
  'autofocus',
  'disabled',
  'form',
  'labels',
  'length',
  'multiple',
  'name',
  'required',
  'selectedIndex',
  'size',
  'type',
  'validationMessage',
  'validity',
  'value',
  'willValidate'
]);
html.SelectElement = class SelectElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.SelectElement._check(html.document[dartx.createElement]("select"));
  }
  created() {
    this[dartx.autofocus] = null;
    this[dartx.disabled] = null;
    this[dartx.form] = null;
    this[dartx.labels] = null;
    this[dartx.length] = null;
    this[dartx.multiple] = null;
    this[dartx.name] = null;
    this[dartx.required] = null;
    this[dartx.selectedIndex] = null;
    this[dartx.size] = null;
    this[dartx.type] = null;
    this[dartx.validationMessage] = null;
    this[dartx.validity] = null;
    this[dartx.value] = null;
    this[dartx.willValidate] = null;
    super.created();
  }
  get [dartx.autofocus]() {
    return this.autofocus;
  }
  set [dartx.autofocus](value) {
    this.autofocus = value;
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.form]() {
    return this.form;
  }
  get [dartx.labels]() {
    return this.labels;
  }
  get [dartx.length]() {
    return this.length;
  }
  set [dartx.length](value) {
    this.length = value;
  }
  get [dartx.multiple]() {
    return this.multiple;
  }
  set [dartx.multiple](value) {
    this.multiple = value;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.required]() {
    return this.required;
  }
  set [dartx.required](value) {
    this.required = value;
  }
  get [dartx.selectedIndex]() {
    return this.selectedIndex;
  }
  set [dartx.selectedIndex](value) {
    this.selectedIndex = value;
  }
  get [dartx.size]() {
    return this.size;
  }
  set [dartx.size](value) {
    this.size = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  get [dartx.validationMessage]() {
    return this.validationMessage;
  }
  get [dartx.validity]() {
    return this.validity;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
  get [dartx.willValidate]() {
    return this.willValidate;
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [dartx.add](...args) {
    return this.add.apply(this, args);
  }
  [dartx.checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
  [dartx.namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
  [dartx.reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [dartx.setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
  get [dartx.options]() {
    let options = ListOfOptionElement().from(this[dartx.querySelectorAll](html.Element)('option'));
    return new (UnmodifiableListViewOfOptionElement())(options);
  }
  get [dartx.selectedOptions]() {
    if (dart.test(this[dartx.multiple])) {
      let options = this[dartx.options][dartx.where](dart.fn(o => o[dartx.selected], OptionElementTobool()))[dartx.toList]();
      return new (UnmodifiableListViewOfOptionElement())(options);
    } else {
      return JSArrayOfOptionElement().of([this[dartx.options][dartx._get](this[dartx.selectedIndex])]);
    }
  }
};
dart.defineNamedConstructor(html.SelectElement, 'created');
dart.setSignature(html.SelectElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.SelectElement, []),
    new: dart.definiteFunctionType(html.SelectElement, []),
    created: dart.definiteFunctionType(html.SelectElement, [])
  }),
  fields: () => ({
    [dartx.autofocus]: core.bool,
    [dartx.disabled]: core.bool,
    [dartx.form]: html.FormElement,
    [dartx.labels]: ListOfNode(),
    [dartx.length]: core.int,
    [dartx.multiple]: core.bool,
    [dartx.name]: core.String,
    [dartx.required]: core.bool,
    [dartx.selectedIndex]: core.int,
    [dartx.size]: core.int,
    [dartx.type]: core.String,
    [dartx.validationMessage]: core.String,
    [dartx.validity]: html.ValidityState,
    [dartx.value]: core.String,
    [dartx.willValidate]: core.bool
  }),
  getters: () => ({
    [dartx.options]: dart.definiteFunctionType(core.List$(html.OptionElement), []),
    [dartx.selectedOptions]: dart.definiteFunctionType(core.List$(html.OptionElement), [])
  }),
  methods: () => ({
    [__setter__]: dart.definiteFunctionType(dart.void, [core.int, html.OptionElement]),
    [dartx.add]: dart.definiteFunctionType(dart.void, [core.Object, core.Object]),
    [dartx.checkValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.item]: dart.definiteFunctionType(html.Element, [core.int]),
    [dartx.namedItem]: dart.definiteFunctionType(html.OptionElement, [core.String]),
    [dartx.reportValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.setCustomValidity]: dart.definiteFunctionType(dart.void, [core.String])
  })
});
dart.registerExtension(dart.global.HTMLSelectElement, html.SelectElement);
dart.defineExtensionNames([
  'addRange',
  'collapse',
  'collapseToEnd',
  'collapseToStart',
  'containsNode',
  'deleteFromDocument',
  'empty',
  'extend',
  'getRangeAt',
  'modify',
  'removeAllRanges',
  'selectAllChildren',
  'setBaseAndExtent',
  'setPosition',
  'anchorNode',
  'anchorOffset',
  'baseNode',
  'baseOffset',
  'extentNode',
  'extentOffset',
  'focusNode',
  'focusOffset',
  'isCollapsed',
  'rangeCount',
  'type'
]);
html.Selection = class Selection extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.anchorNode]() {
    return this.anchorNode;
  }
  get [dartx.anchorOffset]() {
    return this.anchorOffset;
  }
  get [dartx.baseNode]() {
    return this.baseNode;
  }
  get [dartx.baseOffset]() {
    return this.baseOffset;
  }
  get [dartx.extentNode]() {
    return this.extentNode;
  }
  get [dartx.extentOffset]() {
    return this.extentOffset;
  }
  get [dartx.focusNode]() {
    return this.focusNode;
  }
  get [dartx.focusOffset]() {
    return this.focusOffset;
  }
  get [dartx.isCollapsed]() {
    return this.isCollapsed;
  }
  get [dartx.rangeCount]() {
    return this.rangeCount;
  }
  get [dartx.type]() {
    return this.type;
  }
  [dartx.addRange](...args) {
    return this.addRange.apply(this, args);
  }
  [dartx.collapse](...args) {
    return this.collapse.apply(this, args);
  }
  [dartx.collapseToEnd](...args) {
    return this.collapseToEnd.apply(this, args);
  }
  [dartx.collapseToStart](...args) {
    return this.collapseToStart.apply(this, args);
  }
  [dartx.containsNode](...args) {
    return this.containsNode.apply(this, args);
  }
  [dartx.deleteFromDocument](...args) {
    return this.deleteFromDocument.apply(this, args);
  }
  [dartx.empty](...args) {
    return this.empty.apply(this, args);
  }
  [dartx.extend](...args) {
    return this.extend.apply(this, args);
  }
  [dartx.getRangeAt](...args) {
    return this.getRangeAt.apply(this, args);
  }
  [dartx.modify](...args) {
    return this.modify.apply(this, args);
  }
  [dartx.removeAllRanges](...args) {
    return this.removeAllRanges.apply(this, args);
  }
  [dartx.selectAllChildren](...args) {
    return this.selectAllChildren.apply(this, args);
  }
  [dartx.setBaseAndExtent](...args) {
    return this.setBaseAndExtent.apply(this, args);
  }
  [dartx.setPosition](...args) {
    return this.setPosition.apply(this, args);
  }
};
dart.setSignature(html.Selection, {
  constructors: () => ({_: dart.definiteFunctionType(html.Selection, [])}),
  fields: () => ({
    [dartx.anchorNode]: html.Node,
    [dartx.anchorOffset]: core.int,
    [dartx.baseNode]: html.Node,
    [dartx.baseOffset]: core.int,
    [dartx.extentNode]: html.Node,
    [dartx.extentOffset]: core.int,
    [dartx.focusNode]: html.Node,
    [dartx.focusOffset]: core.int,
    [dartx.isCollapsed]: core.bool,
    [dartx.rangeCount]: core.int,
    [dartx.type]: core.String
  }),
  methods: () => ({
    [dartx.addRange]: dart.definiteFunctionType(dart.void, [html.Range]),
    [dartx.collapse]: dart.definiteFunctionType(dart.void, [html.Node], [core.int]),
    [dartx.collapseToEnd]: dart.definiteFunctionType(dart.void, []),
    [dartx.collapseToStart]: dart.definiteFunctionType(dart.void, []),
    [dartx.containsNode]: dart.definiteFunctionType(core.bool, [html.Node, core.bool]),
    [dartx.deleteFromDocument]: dart.definiteFunctionType(dart.void, []),
    [dartx.empty]: dart.definiteFunctionType(dart.void, []),
    [dartx.extend]: dart.definiteFunctionType(dart.void, [html.Node], [core.int]),
    [dartx.getRangeAt]: dart.definiteFunctionType(html.Range, [core.int]),
    [dartx.modify]: dart.definiteFunctionType(dart.void, [core.String, core.String, core.String]),
    [dartx.removeAllRanges]: dart.definiteFunctionType(dart.void, []),
    [dartx.selectAllChildren]: dart.definiteFunctionType(dart.void, [html.Node]),
    [dartx.setBaseAndExtent]: dart.definiteFunctionType(dart.void, [html.Node, core.int, html.Node, core.int]),
    [dartx.setPosition]: dart.definiteFunctionType(dart.void, [html.Node], [core.int])
  })
});
dart.registerExtension(dart.global.Selection, html.Selection);
dart.defineExtensionNames([
  'close',
  'postMessage',
  'data',
  'name',
  'targetUrl'
]);
html.ServicePort = class ServicePort extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.data]() {
    return this.data;
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.targetUrl]() {
    return this.targetURL;
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [dartx.postMessage](message, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
};
dart.setSignature(html.ServicePort, {
  constructors: () => ({_: dart.definiteFunctionType(html.ServicePort, [])}),
  fields: () => ({
    [dartx.data]: core.Object,
    [dartx.name]: core.String,
    [dartx.targetUrl]: core.String
  }),
  methods: () => ({
    [dartx.close]: dart.definiteFunctionType(dart.void, []),
    [dartx.postMessage]: dart.definiteFunctionType(dart.void, [dart.dynamic], [ListOfMessagePort()]),
    [_postMessage_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, ListOfMessagePort()]),
    [_postMessage_2]: dart.definiteFunctionType(dart.void, [dart.dynamic])
  })
});
dart.registerExtension(dart.global.ServicePort, html.ServicePort);
const _connect_1 = Symbol('_connect_1');
const _connect_2 = Symbol('_connect_2');
dart.defineExtensionNames([
  'connect',
  'match',
  'matchAll',
  'onMessage'
]);
html.ServicePortCollection = class ServicePortCollection extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.connect](url, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_connect_1](url, options_1);
    }
    return this[_connect_2](url);
  }
  [_connect_1](...args) {
    return this.connect.apply(this, args);
  }
  [_connect_2](...args) {
    return this.connect.apply(this, args);
  }
  [dartx.match](options) {
    let options_1 = html_common.convertDartToNative_Dictionary(options);
    return this[_match_1](options_1);
  }
  [_match_1](...args) {
    return this.match.apply(this, args);
  }
  [dartx.matchAll](options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_matchAll_1](options_1);
    }
    return this[_matchAll_2]();
  }
  [_matchAll_1](...args) {
    return this.matchAll.apply(this, args);
  }
  [_matchAll_2](...args) {
    return this.matchAll.apply(this, args);
  }
  get [dartx.onMessage]() {
    return html.ServicePortCollection.messageEvent.forTarget(this);
  }
};
dart.setSignature(html.ServicePortCollection, {
  constructors: () => ({_: dart.definiteFunctionType(html.ServicePortCollection, [])}),
  getters: () => ({[dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), [])}),
  methods: () => ({
    [dartx.connect]: dart.definiteFunctionType(async.Future, [core.String], [core.Map]),
    [_connect_1]: dart.definiteFunctionType(async.Future, [dart.dynamic, dart.dynamic]),
    [_connect_2]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [dartx.match]: dart.definiteFunctionType(async.Future, [core.Map]),
    [_match_1]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [dartx.matchAll]: dart.definiteFunctionType(async.Future, [], [core.Map]),
    [_matchAll_1]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [_matchAll_2]: dart.definiteFunctionType(async.Future, [])
  }),
  sfields: () => ({messageEvent: EventStreamProviderOfMessageEvent()})
});
dart.defineLazy(html.ServicePortCollection, {
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  }
});
dart.registerExtension(dart.global.ServicePortCollection, html.ServicePortCollection);
dart.defineExtensionNames([
  'respondWith',
  'origin',
  'targetUrl'
]);
html.ServicePortConnectEvent = class ServicePortConnectEvent extends html.ExtendableEvent {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.ServicePortConnectEvent._create_1(type, eventInitDict_1);
    }
    return html.ServicePortConnectEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new ServicePortConnectEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new ServicePortConnectEvent(type);
  }
  get [dartx.origin]() {
    return this.origin;
  }
  get [dartx.targetUrl]() {
    return this.targetURL;
  }
  [dartx.respondWith](...args) {
    return this.respondWith.apply(this, args);
  }
};
dart.setSignature(html.ServicePortConnectEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ServicePortConnectEvent, []),
    new: dart.definiteFunctionType(html.ServicePortConnectEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.origin]: core.String,
    [dartx.targetUrl]: core.String
  }),
  methods: () => ({[dartx.respondWith]: dart.definiteFunctionType(async.Future, [async.Future])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.ServicePortConnectEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.ServicePortConnectEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.ServicePortConnectEvent, html.ServicePortConnectEvent);
dart.defineExtensionNames([
  'getRegistration',
  'getRegistrations',
  'register',
  'onMessage',
  'controller',
  'ready'
]);
html.ServiceWorkerContainer = class ServiceWorkerContainer extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.controller]() {
    return this.controller;
  }
  get [dartx.ready]() {
    return this.ready;
  }
  [dartx.getRegistration](...args) {
    return this.getRegistration.apply(this, args);
  }
  [dartx.getRegistrations](...args) {
    return this.getRegistrations.apply(this, args);
  }
  [dartx.register](url, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_register_1](url, options_1);
    }
    return this[_register_2](url);
  }
  [_register_1](...args) {
    return this.register.apply(this, args);
  }
  [_register_2](...args) {
    return this.register.apply(this, args);
  }
  get [dartx.onMessage]() {
    return html.ServiceWorkerContainer.messageEvent.forTarget(this);
  }
};
dart.setSignature(html.ServiceWorkerContainer, {
  constructors: () => ({_: dart.definiteFunctionType(html.ServiceWorkerContainer, [])}),
  fields: () => ({
    [dartx.controller]: html._ServiceWorker,
    [dartx.ready]: async.Future
  }),
  getters: () => ({[dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), [])}),
  methods: () => ({
    [dartx.getRegistration]: dart.definiteFunctionType(async.Future, [], [core.String]),
    [dartx.getRegistrations]: dart.definiteFunctionType(async.Future, []),
    [dartx.register]: dart.definiteFunctionType(async.Future, [core.String], [core.Map]),
    [_register_1]: dart.definiteFunctionType(async.Future, [dart.dynamic, dart.dynamic]),
    [_register_2]: dart.definiteFunctionType(async.Future, [dart.dynamic])
  }),
  sfields: () => ({messageEvent: EventStreamProviderOfMessageEvent()})
});
dart.defineLazy(html.ServiceWorkerContainer, {
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  }
});
dart.registerExtension(dart.global.ServiceWorkerContainer, html.ServiceWorkerContainer);
dart.defineExtensionNames([
  'skipWaiting',
  'onMessage',
  'clients',
  'ports',
  'registration'
]);
html.ServiceWorkerGlobalScope = class ServiceWorkerGlobalScope extends html.WorkerGlobalScope {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.clients]() {
    return this.clients;
  }
  get [dartx.ports]() {
    return this.ports;
  }
  get [dartx.registration]() {
    return this.registration;
  }
  [dartx.skipWaiting](...args) {
    return this.skipWaiting.apply(this, args);
  }
  get [dartx.onMessage]() {
    return html.ServiceWorkerGlobalScope.messageEvent.forTarget(this);
  }
};
dart.setSignature(html.ServiceWorkerGlobalScope, {
  constructors: () => ({_: dart.definiteFunctionType(html.ServiceWorkerGlobalScope, [])}),
  fields: () => ({
    [dartx.clients]: html.Clients,
    [dartx.ports]: html.StashedPortCollection,
    [dartx.registration]: html.ServiceWorkerRegistration
  }),
  getters: () => ({[dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), [])}),
  methods: () => ({[dartx.skipWaiting]: dart.definiteFunctionType(async.Future, [])}),
  sfields: () => ({messageEvent: EventStreamProviderOfMessageEvent()})
});
dart.defineLazy(html.ServiceWorkerGlobalScope, {
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  }
});
dart.registerExtension(dart.global.ServiceWorkerGlobalScope, html.ServiceWorkerGlobalScope);
dart.defineExtensionNames([
  'data',
  'lastEventId',
  'origin',
  'ports',
  'source'
]);
html.ServiceWorkerMessageEvent = class ServiceWorkerMessageEvent extends html.Event {
  get [dartx.data]() {
    return html_common.convertNativeToDart_SerializedScriptValue(this[_get_data]);
  }
  get [_get_data]() {
    return this.data;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.ServiceWorkerMessageEvent._create_1(type, eventInitDict_1);
    }
    return html.ServiceWorkerMessageEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new ServiceWorkerMessageEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new ServiceWorkerMessageEvent(type);
  }
  get [dartx.lastEventId]() {
    return this.lastEventId;
  }
  get [dartx.origin]() {
    return this.origin;
  }
  get [dartx.ports]() {
    return this.ports;
  }
  get [dartx.source]() {
    return this.source;
  }
};
dart.setSignature(html.ServiceWorkerMessageEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ServiceWorkerMessageEvent, []),
    new: dart.definiteFunctionType(html.ServiceWorkerMessageEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [_get_data]: dart.dynamic,
    [dartx.lastEventId]: core.String,
    [dartx.origin]: core.String,
    [dartx.ports]: ListOfMessagePort(),
    [dartx.source]: core.Object
  }),
  getters: () => ({[dartx.data]: dart.definiteFunctionType(dart.dynamic, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.ServiceWorkerMessageEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.ServiceWorkerMessageEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.ServiceWorkerMessageEvent, html.ServiceWorkerMessageEvent);
const _getNotifications_1 = Symbol('_getNotifications_1');
const _getNotifications_2 = Symbol('_getNotifications_2');
const _showNotification_1 = Symbol('_showNotification_1');
const _showNotification_2 = Symbol('_showNotification_2');
dart.defineExtensionNames([
  'getNotifications',
  'showNotification',
  'unregister',
  'update',
  'active',
  'geofencing',
  'installing',
  'periodicSync',
  'pushManager',
  'scope',
  'sync',
  'waiting'
]);
html.ServiceWorkerRegistration = class ServiceWorkerRegistration extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.active]() {
    return this.active;
  }
  get [dartx.geofencing]() {
    return this.geofencing;
  }
  get [dartx.installing]() {
    return this.installing;
  }
  get [dartx.periodicSync]() {
    return this.periodicSync;
  }
  get [dartx.pushManager]() {
    return this.pushManager;
  }
  get [dartx.scope]() {
    return this.scope;
  }
  get [dartx.sync]() {
    return this.sync;
  }
  get [dartx.waiting]() {
    return this.waiting;
  }
  [dartx.getNotifications](filter) {
    if (filter === void 0) filter = null;
    if (filter != null) {
      let filter_1 = html_common.convertDartToNative_Dictionary(filter);
      return this[_getNotifications_1](filter_1);
    }
    return this[_getNotifications_2]();
  }
  [_getNotifications_1](...args) {
    return this.getNotifications.apply(this, args);
  }
  [_getNotifications_2](...args) {
    return this.getNotifications.apply(this, args);
  }
  [dartx.showNotification](title, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_showNotification_1](title, options_1);
    }
    return this[_showNotification_2](title);
  }
  [_showNotification_1](...args) {
    return this.showNotification.apply(this, args);
  }
  [_showNotification_2](...args) {
    return this.showNotification.apply(this, args);
  }
  [dartx.unregister](...args) {
    return this.unregister.apply(this, args);
  }
  [dartx.update](...args) {
    return this.update.apply(this, args);
  }
};
dart.setSignature(html.ServiceWorkerRegistration, {
  constructors: () => ({_: dart.definiteFunctionType(html.ServiceWorkerRegistration, [])}),
  fields: () => ({
    [dartx.active]: html._ServiceWorker,
    [dartx.geofencing]: html.Geofencing,
    [dartx.installing]: html._ServiceWorker,
    [dartx.periodicSync]: html.PeriodicSyncManager,
    [dartx.pushManager]: html.PushManager,
    [dartx.scope]: core.String,
    [dartx.sync]: html.SyncManager,
    [dartx.waiting]: html._ServiceWorker
  }),
  methods: () => ({
    [dartx.getNotifications]: dart.definiteFunctionType(async.Future, [], [core.Map]),
    [_getNotifications_1]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [_getNotifications_2]: dart.definiteFunctionType(async.Future, []),
    [dartx.showNotification]: dart.definiteFunctionType(async.Future, [core.String], [core.Map]),
    [_showNotification_1]: dart.definiteFunctionType(async.Future, [dart.dynamic, dart.dynamic]),
    [_showNotification_2]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [dartx.unregister]: dart.definiteFunctionType(async.Future, []),
    [dartx.update]: dart.definiteFunctionType(dart.void, [])
  })
});
dart.registerExtension(dart.global.ServiceWorkerRegistration, html.ServiceWorkerRegistration);
dart.defineExtensionNames([
  'getDistributedNodes'
]);
html.ShadowElement = class ShadowElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.ShadowElement._check(html.document[dartx.createElement]("shadow"));
  }
  created() {
    super.created();
  }
  static get supported() {
    return html.Element.isTagSupported('shadow');
  }
  [dartx.getDistributedNodes](...args) {
    return this.getDistributedNodes.apply(this, args);
  }
};
dart.defineNamedConstructor(html.ShadowElement, 'created');
dart.setSignature(html.ShadowElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.ShadowElement, []),
    new: dart.definiteFunctionType(html.ShadowElement, []),
    created: dart.definiteFunctionType(html.ShadowElement, [])
  }),
  methods: () => ({[dartx.getDistributedNodes]: dart.definiteFunctionType(core.List$(html.Node), [])}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.HTMLShadowElement, html.ShadowElement);
dart.defineExtensionNames([
  'clone',
  'elementFromPoint',
  'elementsFromPoint',
  'getSelection',
  'resetStyleInheritance',
  'resetStyleInheritance',
  'applyAuthorStyles',
  'applyAuthorStyles',
  'activeElement',
  'delegatesFocus',
  'host',
  'innerHtml',
  'olderShadowRoot',
  'styleSheets'
]);
html.ShadowRoot = class ShadowRoot extends html.DocumentFragment {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.activeElement]() {
    return this.activeElement;
  }
  get [dartx.delegatesFocus]() {
    return this.delegatesFocus;
  }
  get [dartx.host]() {
    return this.host;
  }
  get [dartx.innerHtml]() {
    return this.innerHTML;
  }
  set [dartx.innerHtml](value) {
    this.innerHTML = value;
  }
  get [dartx.olderShadowRoot]() {
    return this.olderShadowRoot;
  }
  get [dartx.styleSheets]() {
    return this.styleSheets;
  }
  [dartx.clone](...args) {
    return this.cloneNode.apply(this, args);
  }
  [dartx.elementFromPoint](...args) {
    return this.elementFromPoint.apply(this, args);
  }
  [dartx.elementsFromPoint](...args) {
    return this.elementsFromPoint.apply(this, args);
  }
  [dartx.getSelection](...args) {
    return this.getSelection.apply(this, args);
  }
  static get supported() {
    return !!(Element.prototype.createShadowRoot || Element.prototype.webkitCreateShadowRoot);
  }
  static _shadowRootDeprecationReport() {
    if (!dart.test(html.ShadowRoot._shadowRootDeprecationReported)) {
      html.window[dartx.console].warn('ShadowRoot.resetStyleInheritance and ShadowRoot.applyAuthorStyles now deprecated in dart:html.\nPlease remove them from your code.\n');
      html.ShadowRoot._shadowRootDeprecationReported = true;
    }
  }
  get [dartx.resetStyleInheritance]() {
    html.ShadowRoot._shadowRootDeprecationReport();
    return false;
  }
  set [dartx.resetStyleInheritance](value) {
    html.ShadowRoot._shadowRootDeprecationReport();
  }
  get [dartx.applyAuthorStyles]() {
    html.ShadowRoot._shadowRootDeprecationReport();
    return false;
  }
  set [dartx.applyAuthorStyles](value) {
    html.ShadowRoot._shadowRootDeprecationReport();
  }
};
const innerHtml = Symbol(html.ShadowRoot.name + "." + dartx.innerHtml.toString());
dart.setSignature(html.ShadowRoot, {
  constructors: () => ({_: dart.definiteFunctionType(html.ShadowRoot, [])}),
  fields: () => ({
    [dartx.activeElement]: html.Element,
    [dartx.delegatesFocus]: core.bool,
    [dartx.host]: html.Element,
    [dartx.innerHtml]: core.String,
    [dartx.olderShadowRoot]: html.ShadowRoot,
    [dartx.styleSheets]: ListOfStyleSheet()
  }),
  getters: () => ({
    [dartx.resetStyleInheritance]: dart.definiteFunctionType(core.bool, []),
    [dartx.applyAuthorStyles]: dart.definiteFunctionType(core.bool, [])
  }),
  setters: () => ({
    [dartx.resetStyleInheritance]: dart.definiteFunctionType(dart.void, [core.bool]),
    [dartx.applyAuthorStyles]: dart.definiteFunctionType(dart.void, [core.bool])
  }),
  methods: () => ({
    [dartx.elementFromPoint]: dart.definiteFunctionType(html.Element, [core.int, core.int]),
    [dartx.elementsFromPoint]: dart.definiteFunctionType(core.List$(html.Element), [core.int, core.int]),
    [dartx.getSelection]: dart.definiteFunctionType(html.Selection, [])
  }),
  sfields: () => ({_shadowRootDeprecationReported: core.bool}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({_shadowRootDeprecationReport: dart.definiteFunctionType(dart.void, [])}),
  names: ['_shadowRootDeprecationReport']
});
html.ShadowRoot._shadowRootDeprecationReported = false;
dart.registerExtension(dart.global.ShadowRoot, html.ShadowRoot);
dart.defineExtensionNames([
  'byteLength'
]);
html.SharedArrayBuffer = class SharedArrayBuffer extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.byteLength]() {
    return this.byteLength;
  }
};
dart.setSignature(html.SharedArrayBuffer, {
  constructors: () => ({_: dart.definiteFunctionType(html.SharedArrayBuffer, [])}),
  fields: () => ({[dartx.byteLength]: core.int})
});
dart.registerExtension(dart.global.SharedArrayBuffer, html.SharedArrayBuffer);
dart.defineExtensionNames([
  'onError',
  'port',
  'workerStart'
]);
html.SharedWorker = class SharedWorker extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(scriptURL, name) {
    if (name === void 0) name = null;
    if (name != null) {
      return html.SharedWorker._create_1(scriptURL, name);
    }
    return html.SharedWorker._create_2(scriptURL);
  }
  static _create_1(scriptURL, name) {
    return new SharedWorker(scriptURL, name);
  }
  static _create_2(scriptURL) {
    return new SharedWorker(scriptURL);
  }
  get [dartx.port]() {
    return this.port;
  }
  get [dartx.workerStart]() {
    return this.workerStart;
  }
  get [dartx.onError]() {
    return html.SharedWorker.errorEvent.forTarget(this);
  }
};
html.SharedWorker[dart.implements] = () => [html.AbstractWorker];
dart.setSignature(html.SharedWorker, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.SharedWorker, []),
    new: dart.definiteFunctionType(html.SharedWorker, [core.String], [core.String])
  }),
  fields: () => ({
    [dartx.port]: html.MessagePort,
    [dartx.workerStart]: core.double
  }),
  getters: () => ({[dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  sfields: () => ({errorEvent: EventStreamProviderOfEvent()}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.SharedWorker, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.SharedWorker, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.defineLazy(html.SharedWorker, {
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  }
});
dart.registerExtension(dart.global.SharedWorker, html.SharedWorker);
dart.defineExtensionNames([
  'onConnect',
  'name'
]);
html.SharedWorkerGlobalScope = class SharedWorkerGlobalScope extends html.WorkerGlobalScope {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.onConnect]() {
    return html.SharedWorkerGlobalScope.connectEvent.forTarget(this);
  }
};
dart.setSignature(html.SharedWorkerGlobalScope, {
  constructors: () => ({_: dart.definiteFunctionType(html.SharedWorkerGlobalScope, [])}),
  fields: () => ({[dartx.name]: core.String}),
  getters: () => ({[dartx.onConnect]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  sfields: () => ({connectEvent: EventStreamProviderOfEvent()})
});
dart.defineLazy(html.SharedWorkerGlobalScope, {
  get connectEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('connect'));
  }
});
dart.registerExtension(dart.global.SharedWorkerGlobalScope, html.SharedWorkerGlobalScope);
dart.defineExtensionNames([
  'abort',
  'appendBuffer',
  'appendStream',
  'appendTypedData',
  'remove',
  'appendWindowEnd',
  'appendWindowStart',
  'buffered',
  'mode',
  'timestampOffset',
  'trackDefaults',
  'updating'
]);
html.SourceBuffer = class SourceBuffer extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.appendWindowEnd]() {
    return this.appendWindowEnd;
  }
  set [dartx.appendWindowEnd](value) {
    this.appendWindowEnd = value;
  }
  get [dartx.appendWindowStart]() {
    return this.appendWindowStart;
  }
  set [dartx.appendWindowStart](value) {
    this.appendWindowStart = value;
  }
  get [dartx.buffered]() {
    return this.buffered;
  }
  get [dartx.mode]() {
    return this.mode;
  }
  set [dartx.mode](value) {
    this.mode = value;
  }
  get [dartx.timestampOffset]() {
    return this.timestampOffset;
  }
  set [dartx.timestampOffset](value) {
    this.timestampOffset = value;
  }
  get [dartx.trackDefaults]() {
    return this.trackDefaults;
  }
  set [dartx.trackDefaults](value) {
    this.trackDefaults = value;
  }
  get [dartx.updating]() {
    return this.updating;
  }
  [dartx.abort](...args) {
    return this.abort.apply(this, args);
  }
  [dartx.appendBuffer](...args) {
    return this.appendBuffer.apply(this, args);
  }
  [dartx.appendStream](...args) {
    return this.appendStream.apply(this, args);
  }
  [dartx.appendTypedData](...args) {
    return this.appendBuffer.apply(this, args);
  }
  [dartx.remove](...args) {
    return this.remove.apply(this, args);
  }
};
dart.setSignature(html.SourceBuffer, {
  constructors: () => ({_: dart.definiteFunctionType(html.SourceBuffer, [])}),
  fields: () => ({
    [dartx.appendWindowEnd]: core.num,
    [dartx.appendWindowStart]: core.num,
    [dartx.buffered]: html.TimeRanges,
    [dartx.mode]: core.String,
    [dartx.timestampOffset]: core.num,
    [dartx.trackDefaults]: html.TrackDefaultList,
    [dartx.updating]: core.bool
  }),
  methods: () => ({
    [dartx.abort]: dart.definiteFunctionType(dart.void, []),
    [dartx.appendBuffer]: dart.definiteFunctionType(dart.void, [typed_data.ByteBuffer]),
    [dartx.appendStream]: dart.definiteFunctionType(dart.void, [html.FileStream], [core.int]),
    [dartx.appendTypedData]: dart.definiteFunctionType(dart.void, [typed_data.TypedData]),
    [dartx.remove]: dart.definiteFunctionType(dart.void, [core.num, core.num])
  })
});
dart.registerExtension(dart.global.SourceBuffer, html.SourceBuffer);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item'
]);
html.SourceBufferList = class SourceBufferList extends dart.mixin(html.EventTarget, collection.ListMixin$(html.SourceBuffer), html.ImmutableListMixin$(html.SourceBuffer)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
html.SourceBufferList[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfSourceBuffer()];
dart.setSignature(html.SourceBufferList, {
  constructors: () => ({_: dart.definiteFunctionType(html.SourceBufferList, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.SourceBuffer, []),
    [dartx.last]: dart.definiteFunctionType(html.SourceBuffer, []),
    [dartx.single]: dart.definiteFunctionType(html.SourceBuffer, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.SourceBuffer, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.SourceBuffer]),
    [dartx.elementAt]: dart.definiteFunctionType(html.SourceBuffer, [core.int]),
    [dartx.item]: dart.definiteFunctionType(html.SourceBuffer, [core.int])
  })
});
dart.registerExtension(dart.global.SourceBufferList, html.SourceBufferList);
dart.defineExtensionNames([
  'media',
  'sizes',
  'src',
  'srcset',
  'type'
]);
html.SourceElement = class SourceElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.SourceElement._check(html.document[dartx.createElement]("source"));
  }
  created() {
    this[dartx.media] = null;
    this[dartx.sizes] = null;
    this[dartx.src] = null;
    this[dartx.srcset] = null;
    this[dartx.type] = null;
    super.created();
  }
  get [dartx.media]() {
    return this.media;
  }
  set [dartx.media](value) {
    this.media = value;
  }
  get [dartx.sizes]() {
    return this.sizes;
  }
  set [dartx.sizes](value) {
    this.sizes = value;
  }
  get [dartx.src]() {
    return this.src;
  }
  set [dartx.src](value) {
    this.src = value;
  }
  get [dartx.srcset]() {
    return this.srcset;
  }
  set [dartx.srcset](value) {
    this.srcset = value;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
};
dart.defineNamedConstructor(html.SourceElement, 'created');
dart.setSignature(html.SourceElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.SourceElement, []),
    new: dart.definiteFunctionType(html.SourceElement, []),
    created: dart.definiteFunctionType(html.SourceElement, [])
  }),
  fields: () => ({
    [dartx.media]: core.String,
    [dartx.sizes]: core.String,
    [dartx.src]: core.String,
    [dartx.srcset]: core.String,
    [dartx.type]: core.String
  })
});
dart.registerExtension(dart.global.HTMLSourceElement, html.SourceElement);
dart.defineExtensionNames([
  'facing',
  'id',
  'kind',
  'label'
]);
html.SourceInfo = class SourceInfo extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.facing]() {
    return this.facing;
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.kind]() {
    return this.kind;
  }
  get [dartx.label]() {
    return this.label;
  }
};
dart.setSignature(html.SourceInfo, {
  constructors: () => ({_: dart.definiteFunctionType(html.SourceInfo, [])}),
  fields: () => ({
    [dartx.facing]: core.String,
    [dartx.id]: core.String,
    [dartx.kind]: core.String,
    [dartx.label]: core.String
  })
});
dart.registerExtension(dart.global.SourceInfo, html.SourceInfo);
html.SpanElement = class SpanElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.SpanElement._check(html.document[dartx.createElement]("span"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.SpanElement, 'created');
dart.setSignature(html.SpanElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.SpanElement, []),
    new: dart.definiteFunctionType(html.SpanElement, []),
    created: dart.definiteFunctionType(html.SpanElement, [])
  })
});
dart.registerExtension(dart.global.HTMLSpanElement, html.SpanElement);
dart.defineExtensionNames([
  'src',
  'weight'
]);
html.SpeechGrammar = class SpeechGrammar extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.SpeechGrammar._create_1();
  }
  static _create_1() {
    return new SpeechGrammar();
  }
  get [dartx.src]() {
    return this.src;
  }
  set [dartx.src](value) {
    this.src = value;
  }
  get [dartx.weight]() {
    return this.weight;
  }
  set [dartx.weight](value) {
    this.weight = value;
  }
};
dart.setSignature(html.SpeechGrammar, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.SpeechGrammar, []),
    new: dart.definiteFunctionType(html.SpeechGrammar, [])
  }),
  fields: () => ({
    [dartx.src]: core.String,
    [dartx.weight]: core.num
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.SpeechGrammar, [])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.SpeechGrammar, html.SpeechGrammar);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'addFromString',
  'addFromUri',
  'item'
]);
html.SpeechGrammarList = class SpeechGrammarList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.SpeechGrammar), html.ImmutableListMixin$(html.SpeechGrammar)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.SpeechGrammarList._create_1();
  }
  static _create_1() {
    return new SpeechGrammarList();
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.addFromString](...args) {
    return this.addFromString.apply(this, args);
  }
  [dartx.addFromUri](...args) {
    return this.addFromUri.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
html.SpeechGrammarList[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfSpeechGrammar()];
dart.setSignature(html.SpeechGrammarList, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.SpeechGrammarList, []),
    new: dart.definiteFunctionType(html.SpeechGrammarList, [])
  }),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.SpeechGrammar, []),
    [dartx.last]: dart.definiteFunctionType(html.SpeechGrammar, []),
    [dartx.single]: dart.definiteFunctionType(html.SpeechGrammar, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.SpeechGrammar, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.SpeechGrammar]),
    [dartx.elementAt]: dart.definiteFunctionType(html.SpeechGrammar, [core.int]),
    [dartx.addFromString]: dart.definiteFunctionType(dart.void, [core.String], [core.num]),
    [dartx.addFromUri]: dart.definiteFunctionType(dart.void, [core.String], [core.num]),
    [dartx.item]: dart.definiteFunctionType(html.SpeechGrammar, [core.int])
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.SpeechGrammarList, [])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.SpeechGrammarList, html.SpeechGrammarList);
dart.defineExtensionNames([
  'abort',
  'start',
  'stop',
  'onAudioEnd',
  'onAudioStart',
  'onEnd',
  'onError',
  'onNoMatch',
  'onResult',
  'onSoundEnd',
  'onSoundStart',
  'onSpeechEnd',
  'onSpeechStart',
  'onStart',
  'audioTrack',
  'continuous',
  'grammars',
  'interimResults',
  'lang',
  'maxAlternatives',
  'serviceUri'
]);
html.SpeechRecognition = class SpeechRecognition extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static get supported() {
    return !!(window.SpeechRecognition || window.webkitSpeechRecognition);
  }
  get [dartx.audioTrack]() {
    return this.audioTrack;
  }
  set [dartx.audioTrack](value) {
    this.audioTrack = value;
  }
  get [dartx.continuous]() {
    return this.continuous;
  }
  set [dartx.continuous](value) {
    this.continuous = value;
  }
  get [dartx.grammars]() {
    return this.grammars;
  }
  set [dartx.grammars](value) {
    this.grammars = value;
  }
  get [dartx.interimResults]() {
    return this.interimResults;
  }
  set [dartx.interimResults](value) {
    this.interimResults = value;
  }
  get [dartx.lang]() {
    return this.lang;
  }
  set [dartx.lang](value) {
    this.lang = value;
  }
  get [dartx.maxAlternatives]() {
    return this.maxAlternatives;
  }
  set [dartx.maxAlternatives](value) {
    this.maxAlternatives = value;
  }
  get [dartx.serviceUri]() {
    return this.serviceURI;
  }
  set [dartx.serviceUri](value) {
    this.serviceURI = value;
  }
  [dartx.abort](...args) {
    return this.abort.apply(this, args);
  }
  [dartx.start](...args) {
    return this.start.apply(this, args);
  }
  [dartx.stop](...args) {
    return this.stop.apply(this, args);
  }
  get [dartx.onAudioEnd]() {
    return html.SpeechRecognition.audioEndEvent.forTarget(this);
  }
  get [dartx.onAudioStart]() {
    return html.SpeechRecognition.audioStartEvent.forTarget(this);
  }
  get [dartx.onEnd]() {
    return html.SpeechRecognition.endEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return html.SpeechRecognition.errorEvent.forTarget(this);
  }
  get [dartx.onNoMatch]() {
    return html.SpeechRecognition.noMatchEvent.forTarget(this);
  }
  get [dartx.onResult]() {
    return html.SpeechRecognition.resultEvent.forTarget(this);
  }
  get [dartx.onSoundEnd]() {
    return html.SpeechRecognition.soundEndEvent.forTarget(this);
  }
  get [dartx.onSoundStart]() {
    return html.SpeechRecognition.soundStartEvent.forTarget(this);
  }
  get [dartx.onSpeechEnd]() {
    return html.SpeechRecognition.speechEndEvent.forTarget(this);
  }
  get [dartx.onSpeechStart]() {
    return html.SpeechRecognition.speechStartEvent.forTarget(this);
  }
  get [dartx.onStart]() {
    return html.SpeechRecognition.startEvent.forTarget(this);
  }
  static new() {
    return new (window.SpeechRecognition || window.webkitSpeechRecognition)();
  }
};
dart.setSignature(html.SpeechRecognition, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.SpeechRecognition, []),
    new: dart.definiteFunctionType(html.SpeechRecognition, [])
  }),
  fields: () => ({
    [dartx.audioTrack]: html.MediaStreamTrack,
    [dartx.continuous]: core.bool,
    [dartx.grammars]: html.SpeechGrammarList,
    [dartx.interimResults]: core.bool,
    [dartx.lang]: core.String,
    [dartx.maxAlternatives]: core.int,
    [dartx.serviceUri]: core.String
  }),
  getters: () => ({
    [dartx.onAudioEnd]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onAudioStart]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onEnd]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.SpeechRecognitionError), []),
    [dartx.onNoMatch]: dart.definiteFunctionType(async.Stream$(html.SpeechRecognitionEvent), []),
    [dartx.onResult]: dart.definiteFunctionType(async.Stream$(html.SpeechRecognitionEvent), []),
    [dartx.onSoundEnd]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSoundStart]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSpeechEnd]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSpeechStart]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onStart]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  methods: () => ({
    [dartx.abort]: dart.definiteFunctionType(dart.void, []),
    [dartx.start]: dart.definiteFunctionType(dart.void, []),
    [dartx.stop]: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({
    audioEndEvent: EventStreamProviderOfEvent(),
    audioStartEvent: EventStreamProviderOfEvent(),
    endEvent: EventStreamProviderOfEvent(),
    errorEvent: EventStreamProviderOfSpeechRecognitionError(),
    noMatchEvent: EventStreamProviderOfSpeechRecognitionEvent(),
    resultEvent: EventStreamProviderOfSpeechRecognitionEvent(),
    soundEndEvent: EventStreamProviderOfEvent(),
    soundStartEvent: EventStreamProviderOfEvent(),
    speechEndEvent: EventStreamProviderOfEvent(),
    speechStartEvent: EventStreamProviderOfEvent(),
    startEvent: EventStreamProviderOfEvent()
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.defineLazy(html.SpeechRecognition, {
  get audioEndEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('audioend'));
  },
  get audioStartEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('audiostart'));
  },
  get endEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('end'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfSpeechRecognitionError())('error'));
  },
  get noMatchEvent() {
    return dart.const(new (EventStreamProviderOfSpeechRecognitionEvent())('nomatch'));
  },
  get resultEvent() {
    return dart.const(new (EventStreamProviderOfSpeechRecognitionEvent())('result'));
  },
  get soundEndEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('soundend'));
  },
  get soundStartEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('soundstart'));
  },
  get speechEndEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('speechend'));
  },
  get speechStartEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('speechstart'));
  },
  get startEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('start'));
  }
});
dart.registerExtension(dart.global.SpeechRecognition, html.SpeechRecognition);
dart.defineExtensionNames([
  'confidence',
  'transcript'
]);
html.SpeechRecognitionAlternative = class SpeechRecognitionAlternative extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.confidence]() {
    return this.confidence;
  }
  get [dartx.transcript]() {
    return this.transcript;
  }
};
dart.setSignature(html.SpeechRecognitionAlternative, {
  constructors: () => ({_: dart.definiteFunctionType(html.SpeechRecognitionAlternative, [])}),
  fields: () => ({
    [dartx.confidence]: core.double,
    [dartx.transcript]: core.String
  })
});
dart.registerExtension(dart.global.SpeechRecognitionAlternative, html.SpeechRecognitionAlternative);
dart.defineExtensionNames([
  'error',
  'message'
]);
html.SpeechRecognitionError = class SpeechRecognitionError extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, initDict) {
    if (initDict === void 0) initDict = null;
    if (initDict != null) {
      let initDict_1 = html_common.convertDartToNative_Dictionary(initDict);
      return html.SpeechRecognitionError._create_1(type, initDict_1);
    }
    return html.SpeechRecognitionError._create_2(type);
  }
  static _create_1(type, initDict) {
    return new SpeechRecognitionError(type, initDict);
  }
  static _create_2(type) {
    return new SpeechRecognitionError(type);
  }
  get [dartx.error]() {
    return this.error;
  }
  get [dartx.message]() {
    return this.message;
  }
};
dart.setSignature(html.SpeechRecognitionError, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.SpeechRecognitionError, []),
    new: dart.definiteFunctionType(html.SpeechRecognitionError, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.error]: core.String,
    [dartx.message]: core.String
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.SpeechRecognitionError, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.SpeechRecognitionError, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.SpeechRecognitionError, html.SpeechRecognitionError);
dart.defineExtensionNames([
  'emma',
  'interpretation',
  'resultIndex',
  'results'
]);
html.SpeechRecognitionEvent = class SpeechRecognitionEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, initDict) {
    if (initDict === void 0) initDict = null;
    if (initDict != null) {
      let initDict_1 = html_common.convertDartToNative_Dictionary(initDict);
      return html.SpeechRecognitionEvent._create_1(type, initDict_1);
    }
    return html.SpeechRecognitionEvent._create_2(type);
  }
  static _create_1(type, initDict) {
    return new SpeechRecognitionEvent(type, initDict);
  }
  static _create_2(type) {
    return new SpeechRecognitionEvent(type);
  }
  get [dartx.emma]() {
    return this.emma;
  }
  get [dartx.interpretation]() {
    return this.interpretation;
  }
  get [dartx.resultIndex]() {
    return this.resultIndex;
  }
  get [dartx.results]() {
    return this.results;
  }
};
dart.setSignature(html.SpeechRecognitionEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.SpeechRecognitionEvent, []),
    new: dart.definiteFunctionType(html.SpeechRecognitionEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.emma]: html.Document,
    [dartx.interpretation]: html.Document,
    [dartx.resultIndex]: core.int,
    [dartx.results]: ListOfSpeechRecognitionResult()
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.SpeechRecognitionEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.SpeechRecognitionEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.SpeechRecognitionEvent, html.SpeechRecognitionEvent);
dart.defineExtensionNames([
  'item',
  'isFinal',
  'length'
]);
html.SpeechRecognitionResult = class SpeechRecognitionResult extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.isFinal]() {
    return this.isFinal;
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
dart.setSignature(html.SpeechRecognitionResult, {
  constructors: () => ({_: dart.definiteFunctionType(html.SpeechRecognitionResult, [])}),
  fields: () => ({
    [dartx.isFinal]: core.bool,
    [dartx.length]: core.int
  }),
  methods: () => ({[dartx.item]: dart.definiteFunctionType(html.SpeechRecognitionAlternative, [core.int])})
});
dart.registerExtension(dart.global.SpeechRecognitionResult, html.SpeechRecognitionResult);
dart.defineExtensionNames([
  'cancel',
  'getVoices',
  'pause',
  'resume',
  'speak',
  'paused',
  'pending',
  'speaking'
]);
html.SpeechSynthesis = class SpeechSynthesis extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.paused]() {
    return this.paused;
  }
  get [dartx.pending]() {
    return this.pending;
  }
  get [dartx.speaking]() {
    return this.speaking;
  }
  [dartx.cancel](...args) {
    return this.cancel.apply(this, args);
  }
  [dartx.getVoices](...args) {
    return this.getVoices.apply(this, args);
  }
  [dartx.pause](...args) {
    return this.pause.apply(this, args);
  }
  [dartx.resume](...args) {
    return this.resume.apply(this, args);
  }
  [dartx.speak](...args) {
    return this.speak.apply(this, args);
  }
};
dart.setSignature(html.SpeechSynthesis, {
  constructors: () => ({_: dart.definiteFunctionType(html.SpeechSynthesis, [])}),
  fields: () => ({
    [dartx.paused]: core.bool,
    [dartx.pending]: core.bool,
    [dartx.speaking]: core.bool
  }),
  methods: () => ({
    [dartx.cancel]: dart.definiteFunctionType(dart.void, []),
    [dartx.getVoices]: dart.definiteFunctionType(core.List$(html.SpeechSynthesisVoice), []),
    [dartx.pause]: dart.definiteFunctionType(dart.void, []),
    [dartx.resume]: dart.definiteFunctionType(dart.void, []),
    [dartx.speak]: dart.definiteFunctionType(dart.void, [html.SpeechSynthesisUtterance])
  })
});
dart.registerExtension(dart.global.SpeechSynthesis, html.SpeechSynthesis);
dart.defineExtensionNames([
  'charIndex',
  'elapsedTime',
  'name',
  'utterance'
]);
html.SpeechSynthesisEvent = class SpeechSynthesisEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.charIndex]() {
    return this.charIndex;
  }
  get [dartx.elapsedTime]() {
    return this.elapsedTime;
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.utterance]() {
    return this.utterance;
  }
};
dart.setSignature(html.SpeechSynthesisEvent, {
  constructors: () => ({_: dart.definiteFunctionType(html.SpeechSynthesisEvent, [])}),
  fields: () => ({
    [dartx.charIndex]: core.int,
    [dartx.elapsedTime]: core.double,
    [dartx.name]: core.String,
    [dartx.utterance]: html.SpeechSynthesisUtterance
  })
});
dart.registerExtension(dart.global.SpeechSynthesisEvent, html.SpeechSynthesisEvent);
dart.defineExtensionNames([
  'onBoundary',
  'onEnd',
  'onError',
  'onMark',
  'onPause',
  'onResume',
  'onStart',
  'lang',
  'pitch',
  'rate',
  'text',
  'voice',
  'volume'
]);
html.SpeechSynthesisUtterance = class SpeechSynthesisUtterance extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(text) {
    if (text === void 0) text = null;
    if (text != null) {
      return html.SpeechSynthesisUtterance._create_1(text);
    }
    return html.SpeechSynthesisUtterance._create_2();
  }
  static _create_1(text) {
    return new SpeechSynthesisUtterance(text);
  }
  static _create_2() {
    return new SpeechSynthesisUtterance();
  }
  get [dartx.lang]() {
    return this.lang;
  }
  set [dartx.lang](value) {
    this.lang = value;
  }
  get [dartx.pitch]() {
    return this.pitch;
  }
  set [dartx.pitch](value) {
    this.pitch = value;
  }
  get [dartx.rate]() {
    return this.rate;
  }
  set [dartx.rate](value) {
    this.rate = value;
  }
  get [dartx.text]() {
    return this.text;
  }
  set [dartx.text](value) {
    this.text = value;
  }
  get [dartx.voice]() {
    return this.voice;
  }
  set [dartx.voice](value) {
    this.voice = value;
  }
  get [dartx.volume]() {
    return this.volume;
  }
  set [dartx.volume](value) {
    this.volume = value;
  }
  get [dartx.onBoundary]() {
    return html.SpeechSynthesisUtterance.boundaryEvent.forTarget(this);
  }
  get [dartx.onEnd]() {
    return html.SpeechSynthesisUtterance.endEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return html.SpeechSynthesisUtterance.errorEvent.forTarget(this);
  }
  get [dartx.onMark]() {
    return html.SpeechSynthesisUtterance.markEvent.forTarget(this);
  }
  get [dartx.onPause]() {
    return html.SpeechSynthesisUtterance.pauseEvent.forTarget(this);
  }
  get [dartx.onResume]() {
    return html.SpeechSynthesisUtterance.resumeEvent.forTarget(this);
  }
  get [dartx.onStart]() {
    return html.SpeechSynthesisUtterance.startEvent.forTarget(this);
  }
};
dart.setSignature(html.SpeechSynthesisUtterance, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.SpeechSynthesisUtterance, []),
    new: dart.definiteFunctionType(html.SpeechSynthesisUtterance, [], [core.String])
  }),
  fields: () => ({
    [dartx.lang]: core.String,
    [dartx.pitch]: core.num,
    [dartx.rate]: core.num,
    [dartx.text]: core.String,
    [dartx.voice]: html.SpeechSynthesisVoice,
    [dartx.volume]: core.num
  }),
  getters: () => ({
    [dartx.onBoundary]: dart.definiteFunctionType(async.Stream$(html.SpeechSynthesisEvent), []),
    [dartx.onEnd]: dart.definiteFunctionType(async.Stream$(html.SpeechSynthesisEvent), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onMark]: dart.definiteFunctionType(async.Stream$(html.SpeechSynthesisEvent), []),
    [dartx.onPause]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onResume]: dart.definiteFunctionType(async.Stream$(html.SpeechSynthesisEvent), []),
    [dartx.onStart]: dart.definiteFunctionType(async.Stream$(html.SpeechSynthesisEvent), [])
  }),
  sfields: () => ({
    boundaryEvent: EventStreamProviderOfSpeechSynthesisEvent(),
    endEvent: EventStreamProviderOfSpeechSynthesisEvent(),
    errorEvent: EventStreamProviderOfEvent(),
    markEvent: EventStreamProviderOfSpeechSynthesisEvent(),
    pauseEvent: EventStreamProviderOfEvent(),
    resumeEvent: EventStreamProviderOfSpeechSynthesisEvent(),
    startEvent: EventStreamProviderOfSpeechSynthesisEvent()
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.SpeechSynthesisUtterance, [dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.SpeechSynthesisUtterance, [])
  }),
  names: ['_create_1', '_create_2']
});
dart.defineLazy(html.SpeechSynthesisUtterance, {
  get boundaryEvent() {
    return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent())('boundary'));
  },
  get endEvent() {
    return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent())('end'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get markEvent() {
    return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent())('mark'));
  },
  get pauseEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('pause'));
  },
  get resumeEvent() {
    return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent())('resume'));
  },
  get startEvent() {
    return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent())('start'));
  }
});
dart.registerExtension(dart.global.SpeechSynthesisUtterance, html.SpeechSynthesisUtterance);
dart.defineExtensionNames([
  'defaultValue',
  'lang',
  'localService',
  'name',
  'voiceUri'
]);
html.SpeechSynthesisVoice = class SpeechSynthesisVoice extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.defaultValue]() {
    return this.default;
  }
  get [dartx.lang]() {
    return this.lang;
  }
  get [dartx.localService]() {
    return this.localService;
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.voiceUri]() {
    return this.voiceURI;
  }
};
dart.setSignature(html.SpeechSynthesisVoice, {
  constructors: () => ({_: dart.definiteFunctionType(html.SpeechSynthesisVoice, [])}),
  fields: () => ({
    [dartx.defaultValue]: core.bool,
    [dartx.lang]: core.String,
    [dartx.localService]: core.bool,
    [dartx.name]: core.String,
    [dartx.voiceUri]: core.String
  })
});
dart.registerExtension(dart.global.SpeechSynthesisVoice, html.SpeechSynthesisVoice);
dart.defineExtensionNames([
  'name'
]);
html.StashedMessagePort = class StashedMessagePort extends html.MessagePort {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.name]() {
    return this.name;
  }
};
dart.setSignature(html.StashedMessagePort, {
  constructors: () => ({_: dart.definiteFunctionType(html.StashedMessagePort, [])}),
  fields: () => ({[dartx.name]: core.String})
});
dart.registerExtension(dart.global.StashedMessagePort, html.StashedMessagePort);
dart.defineExtensionNames([
  'add',
  'onMessage'
]);
html.StashedPortCollection = class StashedPortCollection extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.add](...args) {
    return this.add.apply(this, args);
  }
  get [dartx.onMessage]() {
    return html.StashedPortCollection.messageEvent.forTarget(this);
  }
};
dart.setSignature(html.StashedPortCollection, {
  constructors: () => ({_: dart.definiteFunctionType(html.StashedPortCollection, [])}),
  getters: () => ({[dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), [])}),
  methods: () => ({[dartx.add]: dart.definiteFunctionType(html.StashedMessagePort, [core.String, html.MessagePort])}),
  sfields: () => ({messageEvent: EventStreamProviderOfMessageEvent()})
});
dart.defineLazy(html.StashedPortCollection, {
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  }
});
dart.registerExtension(dart.global.StashedPortCollection, html.StashedPortCollection);
const _getItem = Symbol('_getItem');
const _setItem = Symbol('_setItem');
const _removeItem = Symbol('_removeItem');
const _key = Symbol('_key');
const _length = Symbol('_length');
const __delete__ = Symbol('__delete__');
dart.defineExtensionNames([
  'addAll',
  'containsValue',
  'containsKey',
  '_get',
  '_set',
  'putIfAbsent',
  'remove',
  'clear',
  'forEach',
  'keys',
  'values',
  'length',
  'isEmpty',
  'isNotEmpty'
]);
html.Storage = class Storage extends _interceptors.Interceptor {
  [dartx.addAll](other) {
    other[dartx.forEach](dart.fn((k, v) => {
      this[dartx._set](k, v);
    }, StringAndStringTovoid()));
  }
  [dartx.containsValue](value) {
    return this[dartx.values][dartx.any](dart.fn(e => dart.equals(e, value), StringTobool()));
  }
  [dartx.containsKey](key) {
    return this[_getItem](core.String._check(key)) != null;
  }
  [dartx._get](key) {
    return this[_getItem](core.String._check(key));
  }
  [dartx._set](key, value) {
    this[_setItem](key, value);
    return value;
  }
  [dartx.putIfAbsent](key, ifAbsent) {
    if (!dart.test(this[dartx.containsKey](key))) this[dartx._set](key, ifAbsent());
    return this[dartx._get](key);
  }
  [dartx.remove](key) {
    let value = this[dartx._get](key);
    this[_removeItem](core.String._check(key));
    return value;
  }
  [dartx.clear]() {
    return this[_clear]();
  }
  [dartx.forEach](f) {
    for (let i = 0; true; i++) {
      let key = this[_key](i);
      if (key == null) return;
      f(key, this[dartx._get](key));
    }
  }
  get [dartx.keys]() {
    let keys = JSArrayOfString().of([]);
    this[dartx.forEach](dart.fn((k, v) => keys[dartx.add](k), StringAndStringTovoid()));
    return keys;
  }
  get [dartx.values]() {
    let values = JSArrayOfString().of([]);
    this[dartx.forEach](dart.fn((k, v) => values[dartx.add](v), StringAndStringTovoid()));
    return values;
  }
  get [dartx.length]() {
    return this[_length];
  }
  get [dartx.isEmpty]() {
    return this[_key](0) == null;
  }
  get [dartx.isNotEmpty]() {
    return !dart.test(this[dartx.isEmpty]);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [_length]() {
    return this.length;
  }
  [__delete__](...args) {
    return this.__delete__.apply(this, args);
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [_clear](...args) {
    return this.clear.apply(this, args);
  }
  [_getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [_key](...args) {
    return this.key.apply(this, args);
  }
  [_removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [_setItem](...args) {
    return this.setItem.apply(this, args);
  }
};
html.Storage[dart.implements] = () => [MapOfString$String()];
dart.setSignature(html.Storage, {
  constructors: () => ({_: dart.definiteFunctionType(html.Storage, [])}),
  fields: () => ({[_length]: core.int}),
  getters: () => ({
    [dartx.keys]: dart.definiteFunctionType(core.Iterable$(core.String), []),
    [dartx.values]: dart.definiteFunctionType(core.Iterable$(core.String), []),
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.isEmpty]: dart.definiteFunctionType(core.bool, []),
    [dartx.isNotEmpty]: dart.definiteFunctionType(core.bool, [])
  }),
  methods: () => ({
    [dartx.addAll]: dart.definiteFunctionType(dart.void, [MapOfString$String()]),
    [dartx.containsValue]: dart.definiteFunctionType(core.bool, [core.Object]),
    [dartx.containsKey]: dart.definiteFunctionType(core.bool, [core.Object]),
    [dartx._get]: dart.definiteFunctionType(core.String, [core.Object]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    [dartx.putIfAbsent]: dart.definiteFunctionType(core.String, [core.String, VoidToString()]),
    [dartx.remove]: dart.definiteFunctionType(core.String, [core.Object]),
    [dartx.clear]: dart.definiteFunctionType(dart.void, []),
    [dartx.forEach]: dart.definiteFunctionType(dart.void, [StringAndStringTovoid()]),
    [__delete__]: dart.definiteFunctionType(core.bool, [dart.dynamic]),
    [__getter__]: dart.definiteFunctionType(core.String, [dart.dynamic]),
    [__setter__]: dart.definiteFunctionType(dart.void, [dart.dynamic, core.String]),
    [_clear]: dart.definiteFunctionType(dart.void, []),
    [_getItem]: dart.definiteFunctionType(core.String, [core.String]),
    [_key]: dart.definiteFunctionType(core.String, [core.int]),
    [_removeItem]: dart.definiteFunctionType(dart.void, [core.String]),
    [_setItem]: dart.definiteFunctionType(dart.void, [core.String, core.String])
  })
});
dart.registerExtension(dart.global.Storage, html.Storage);
html.StorageErrorCallback = dart.typedef('StorageErrorCallback', () => dart.functionType(dart.void, [html.DomError]));
const _initStorageEvent = Symbol('_initStorageEvent');
dart.defineExtensionNames([
  'key',
  'newValue',
  'oldValue',
  'storageArea',
  'url'
]);
html.StorageEvent = class StorageEvent extends html.Event {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : false;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : false;
    let key = opts && 'key' in opts ? opts.key : null;
    let oldValue = opts && 'oldValue' in opts ? opts.oldValue : null;
    let newValue = opts && 'newValue' in opts ? opts.newValue : null;
    let url = opts && 'url' in opts ? opts.url : null;
    let storageArea = opts && 'storageArea' in opts ? opts.storageArea : null;
    let e = html.StorageEvent._check(html.document[_createEvent]("StorageEvent"));
    e[_initStorageEvent](type, canBubble, cancelable, key, oldValue, newValue, url, storageArea);
    return e;
  }
  static _(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.StorageEvent._create_1(type, eventInitDict_1);
    }
    return html.StorageEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new StorageEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new StorageEvent(type);
  }
  get [dartx.key]() {
    return this.key;
  }
  get [dartx.newValue]() {
    return this.newValue;
  }
  get [dartx.oldValue]() {
    return this.oldValue;
  }
  get [dartx.storageArea]() {
    return this.storageArea;
  }
  get [dartx.url]() {
    return this.url;
  }
  [_initStorageEvent](...args) {
    return this.initStorageEvent.apply(this, args);
  }
};
dart.setSignature(html.StorageEvent, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.StorageEvent, [core.String], {canBubble: core.bool, cancelable: core.bool, key: core.String, oldValue: core.String, newValue: core.String, url: core.String, storageArea: html.Storage}),
    _: dart.definiteFunctionType(html.StorageEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.key]: core.String,
    [dartx.newValue]: core.String,
    [dartx.oldValue]: core.String,
    [dartx.storageArea]: html.Storage,
    [dartx.url]: core.String
  }),
  methods: () => ({[_initStorageEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, core.String, core.String, core.String, core.String, html.Storage])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.StorageEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.StorageEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.StorageEvent, html.StorageEvent);
dart.defineExtensionNames([
  'quota',
  'usage'
]);
html.StorageInfo = class StorageInfo extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.quota]() {
    return this.quota;
  }
  get [dartx.usage]() {
    return this.usage;
  }
};
dart.setSignature(html.StorageInfo, {
  constructors: () => ({_: dart.definiteFunctionType(html.StorageInfo, [])}),
  fields: () => ({
    [dartx.quota]: core.int,
    [dartx.usage]: core.int
  })
});
dart.registerExtension(dart.global.StorageInfo, html.StorageInfo);
dart.defineExtensionNames([
  'queryInfo',
  'requestPersistentQuota',
  'supportedTypes'
]);
html.StorageQuota = class StorageQuota extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.supportedTypes]() {
    return this.supportedTypes;
  }
  [dartx.queryInfo](...args) {
    return this.queryInfo.apply(this, args);
  }
  [dartx.requestPersistentQuota](...args) {
    return this.requestPersistentQuota.apply(this, args);
  }
};
dart.setSignature(html.StorageQuota, {
  constructors: () => ({_: dart.definiteFunctionType(html.StorageQuota, [])}),
  fields: () => ({[dartx.supportedTypes]: ListOfString()}),
  methods: () => ({
    [dartx.queryInfo]: dart.definiteFunctionType(async.Future, [core.String]),
    [dartx.requestPersistentQuota]: dart.definiteFunctionType(async.Future, [core.int])
  })
});
dart.registerExtension(dart.global.StorageQuota, html.StorageQuota);
html.StorageQuotaCallback = dart.typedef('StorageQuotaCallback', () => dart.functionType(dart.void, [core.int]));
html.StorageUsageCallback = dart.typedef('StorageUsageCallback', () => dart.functionType(dart.void, [core.int, core.int]));
html._StringCallback = dart.typedef('_StringCallback', () => dart.functionType(dart.void, [core.String]));
dart.defineExtensionNames([
  'disabled',
  'media',
  'sheet',
  'type'
]);
html.StyleElement = class StyleElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.StyleElement._check(html.document[dartx.createElement]("style"));
  }
  created() {
    this[dartx.disabled] = null;
    this[dartx.media] = null;
    this[dartx.sheet] = null;
    this[dartx.type] = null;
    super.created();
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.media]() {
    return this.media;
  }
  set [dartx.media](value) {
    this.media = value;
  }
  get [dartx.sheet]() {
    return this.sheet;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
};
dart.defineNamedConstructor(html.StyleElement, 'created');
dart.setSignature(html.StyleElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.StyleElement, []),
    new: dart.definiteFunctionType(html.StyleElement, []),
    created: dart.definiteFunctionType(html.StyleElement, [])
  }),
  fields: () => ({
    [dartx.disabled]: core.bool,
    [dartx.media]: core.String,
    [dartx.sheet]: html.StyleSheet,
    [dartx.type]: core.String
  })
});
dart.registerExtension(dart.global.HTMLStyleElement, html.StyleElement);
dart.defineExtensionNames([
  'matchMedium',
  'type'
]);
html.StyleMedia = class StyleMedia extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.type]() {
    return this.type;
  }
  [dartx.matchMedium](...args) {
    return this.matchMedium.apply(this, args);
  }
};
dart.setSignature(html.StyleMedia, {
  constructors: () => ({_: dart.definiteFunctionType(html.StyleMedia, [])}),
  fields: () => ({[dartx.type]: core.String}),
  methods: () => ({[dartx.matchMedium]: dart.definiteFunctionType(core.bool, [core.String])})
});
dart.registerExtension(dart.global.StyleMedia, html.StyleMedia);
dart.defineExtensionNames([
  'registration'
]);
html.SyncEvent = class SyncEvent extends html.ExtendableEvent {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, init) {
    let init_1 = html_common.convertDartToNative_Dictionary(init);
    return html.SyncEvent._create_1(type, init_1);
  }
  static _create_1(type, init) {
    return new SyncEvent(type, init);
  }
  get [dartx.registration]() {
    return this.registration;
  }
};
dart.setSignature(html.SyncEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.SyncEvent, []),
    new: dart.definiteFunctionType(html.SyncEvent, [core.String, core.Map])
  }),
  fields: () => ({[dartx.registration]: html.SyncRegistration}),
  statics: () => ({_create_1: dart.definiteFunctionType(html.SyncEvent, [dart.dynamic, dart.dynamic])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.SyncEvent, html.SyncEvent);
dart.defineExtensionNames([
  'getRegistration',
  'getRegistrations',
  'permissionState',
  'register'
]);
html.SyncManager = class SyncManager extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.getRegistration](...args) {
    return this.getRegistration.apply(this, args);
  }
  [dartx.getRegistrations](...args) {
    return this.getRegistrations.apply(this, args);
  }
  [dartx.permissionState](...args) {
    return this.permissionState.apply(this, args);
  }
  [dartx.register](options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_register_1](options_1);
    }
    return this[_register_2]();
  }
  [_register_1](...args) {
    return this.register.apply(this, args);
  }
  [_register_2](...args) {
    return this.register.apply(this, args);
  }
};
dart.setSignature(html.SyncManager, {
  constructors: () => ({_: dart.definiteFunctionType(html.SyncManager, [])}),
  methods: () => ({
    [dartx.getRegistration]: dart.definiteFunctionType(async.Future, [core.String]),
    [dartx.getRegistrations]: dart.definiteFunctionType(async.Future, []),
    [dartx.permissionState]: dart.definiteFunctionType(async.Future, []),
    [dartx.register]: dart.definiteFunctionType(async.Future, [], [core.Map]),
    [_register_1]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [_register_2]: dart.definiteFunctionType(async.Future, [])
  })
});
dart.registerExtension(dart.global.SyncManager, html.SyncManager);
dart.defineExtensionNames([
  'unregister',
  'tag'
]);
html.SyncRegistration = class SyncRegistration extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.tag]() {
    return this.tag;
  }
  [dartx.unregister](...args) {
    return this.unregister.apply(this, args);
  }
};
dart.setSignature(html.SyncRegistration, {
  constructors: () => ({_: dart.definiteFunctionType(html.SyncRegistration, [])}),
  fields: () => ({[dartx.tag]: core.String}),
  methods: () => ({[dartx.unregister]: dart.definiteFunctionType(async.Future, [])})
});
dart.registerExtension(dart.global.SyncRegistration, html.SyncRegistration);
html.TableCaptionElement = class TableCaptionElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.TableCaptionElement._check(html.document[dartx.createElement]("caption"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.TableCaptionElement, 'created');
dart.setSignature(html.TableCaptionElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TableCaptionElement, []),
    new: dart.definiteFunctionType(html.TableCaptionElement, []),
    created: dart.definiteFunctionType(html.TableCaptionElement, [])
  })
});
dart.registerExtension(dart.global.HTMLTableCaptionElement, html.TableCaptionElement);
dart.defineExtensionNames([
  'cellIndex',
  'colSpan',
  'headers',
  'rowSpan'
]);
html.TableCellElement = class TableCellElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.TableCellElement._check(html.document[dartx.createElement]("td"));
  }
  created() {
    this[dartx.cellIndex] = null;
    this[dartx.colSpan] = null;
    this[dartx.headers] = null;
    this[dartx.rowSpan] = null;
    super.created();
  }
  get [dartx.cellIndex]() {
    return this.cellIndex;
  }
  get [dartx.colSpan]() {
    return this.colSpan;
  }
  set [dartx.colSpan](value) {
    this.colSpan = value;
  }
  get [dartx.headers]() {
    return this.headers;
  }
  set [dartx.headers](value) {
    this.headers = value;
  }
  get [dartx.rowSpan]() {
    return this.rowSpan;
  }
  set [dartx.rowSpan](value) {
    this.rowSpan = value;
  }
};
dart.defineNamedConstructor(html.TableCellElement, 'created');
dart.setSignature(html.TableCellElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TableCellElement, []),
    new: dart.definiteFunctionType(html.TableCellElement, []),
    created: dart.definiteFunctionType(html.TableCellElement, [])
  }),
  fields: () => ({
    [dartx.cellIndex]: core.int,
    [dartx.colSpan]: core.int,
    [dartx.headers]: core.String,
    [dartx.rowSpan]: core.int
  })
});
dart.registerExtension(dart.global.HTMLTableCellElement, html.TableCellElement);
dart.registerExtension(dart.global.HTMLTableDataCellElement, html.TableCellElement);
dart.registerExtension(dart.global.HTMLTableHeaderCellElement, html.TableCellElement);
dart.defineExtensionNames([
  'span'
]);
html.TableColElement = class TableColElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.TableColElement._check(html.document[dartx.createElement]("col"));
  }
  created() {
    this[dartx.span] = null;
    super.created();
  }
  get [dartx.span]() {
    return this.span;
  }
  set [dartx.span](value) {
    this.span = value;
  }
};
dart.defineNamedConstructor(html.TableColElement, 'created');
dart.setSignature(html.TableColElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TableColElement, []),
    new: dart.definiteFunctionType(html.TableColElement, []),
    created: dart.definiteFunctionType(html.TableColElement, [])
  }),
  fields: () => ({[dartx.span]: core.int})
});
dart.registerExtension(dart.global.HTMLTableColElement, html.TableColElement);
const _tBodies = Symbol('_tBodies');
const _rows = Symbol('_rows');
const _createCaption = Symbol('_createCaption');
const _createTBody = Symbol('_createTBody');
const _createTFoot = Symbol('_createTFoot');
const _createTHead = Symbol('_createTHead');
const _insertRow = Symbol('_insertRow');
const _nativeCreateTBody = Symbol('_nativeCreateTBody');
dart.defineExtensionNames([
  'tBodies',
  'rows',
  'addRow',
  'createCaption',
  'createTBody',
  'createTFoot',
  'createTHead',
  'insertRow',
  'createFragment',
  'deleteCaption',
  'deleteRow',
  'deleteTFoot',
  'deleteTHead',
  'caption',
  'tFoot',
  'tHead'
]);
html.TableElement = class TableElement extends html.HtmlElement {
  get [dartx.tBodies]() {
    return new (_WrappedListOfTableSectionElement())(this[_tBodies]);
  }
  get [dartx.rows]() {
    return new (_WrappedListOfTableRowElement())(this[_rows]);
  }
  [dartx.addRow]() {
    return this[dartx.insertRow](-1);
  }
  [dartx.createCaption]() {
    return html.TableCaptionElement._check(this[_createCaption]());
  }
  [dartx.createTBody]() {
    return this[_createTBody]();
  }
  [dartx.createTFoot]() {
    return html.TableSectionElement._check(this[_createTFoot]());
  }
  [dartx.createTHead]() {
    return html.TableSectionElement._check(this[_createTHead]());
  }
  [dartx.insertRow](index) {
    return html.TableRowElement._check(this[_insertRow](index));
  }
  [_createTBody]() {
    if (!!this.createTBody) {
      return this[_nativeCreateTBody]();
    }
    let tbody = html.Element.tag('tbody');
    this[dartx.children][dartx.add](tbody);
    return html.TableSectionElement._check(tbody);
  }
  [_nativeCreateTBody](...args) {
    return this.createTBody.apply(this, args);
  }
  [dartx.createFragment](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (dart.test(html.Range.supportsCreateContextualFragment)) {
      return super[dartx.createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
    }
    let contextualHtml = dart.str`<table>${html}</table>`;
    let table = html.Element.html(contextualHtml, {validator: validator, treeSanitizer: treeSanitizer});
    let fragment = html.DocumentFragment.new();
    fragment[dartx.nodes][dartx.addAll](table[dartx.nodes]);
    return fragment;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.TableElement._check(html.document[dartx.createElement]("table"));
  }
  created() {
    this[dartx.caption] = null;
    this[_rows] = null;
    this[_tBodies] = null;
    this[dartx.tFoot] = null;
    this[dartx.tHead] = null;
    super.created();
  }
  get [dartx.caption]() {
    return this.caption;
  }
  set [dartx.caption](value) {
    this.caption = value;
  }
  get [_rows]() {
    return this.rows;
  }
  get [_tBodies]() {
    return this.tBodies;
  }
  get [dartx.tFoot]() {
    return this.tFoot;
  }
  set [dartx.tFoot](value) {
    this.tFoot = value;
  }
  get [dartx.tHead]() {
    return this.tHead;
  }
  set [dartx.tHead](value) {
    this.tHead = value;
  }
  [_createCaption](...args) {
    return this.createCaption.apply(this, args);
  }
  [_createTFoot](...args) {
    return this.createTFoot.apply(this, args);
  }
  [_createTHead](...args) {
    return this.createTHead.apply(this, args);
  }
  [dartx.deleteCaption](...args) {
    return this.deleteCaption.apply(this, args);
  }
  [dartx.deleteRow](...args) {
    return this.deleteRow.apply(this, args);
  }
  [dartx.deleteTFoot](...args) {
    return this.deleteTFoot.apply(this, args);
  }
  [dartx.deleteTHead](...args) {
    return this.deleteTHead.apply(this, args);
  }
  [_insertRow](...args) {
    return this.insertRow.apply(this, args);
  }
};
dart.defineNamedConstructor(html.TableElement, 'created');
dart.setSignature(html.TableElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TableElement, []),
    new: dart.definiteFunctionType(html.TableElement, []),
    created: dart.definiteFunctionType(html.TableElement, [])
  }),
  fields: () => ({
    [dartx.caption]: html.TableCaptionElement,
    [_rows]: ListOfNode(),
    [_tBodies]: ListOfNode(),
    [dartx.tFoot]: html.TableSectionElement,
    [dartx.tHead]: html.TableSectionElement
  }),
  getters: () => ({
    [dartx.tBodies]: dart.definiteFunctionType(core.List$(html.TableSectionElement), []),
    [dartx.rows]: dart.definiteFunctionType(core.List$(html.TableRowElement), [])
  }),
  methods: () => ({
    [dartx.addRow]: dart.definiteFunctionType(html.TableRowElement, []),
    [dartx.createCaption]: dart.definiteFunctionType(html.TableCaptionElement, []),
    [dartx.createTBody]: dart.definiteFunctionType(html.TableSectionElement, []),
    [dartx.createTFoot]: dart.definiteFunctionType(html.TableSectionElement, []),
    [dartx.createTHead]: dart.definiteFunctionType(html.TableSectionElement, []),
    [dartx.insertRow]: dart.definiteFunctionType(html.TableRowElement, [core.int]),
    [_createTBody]: dart.definiteFunctionType(html.TableSectionElement, []),
    [_nativeCreateTBody]: dart.definiteFunctionType(html.TableSectionElement, []),
    [_createCaption]: dart.definiteFunctionType(html.HtmlElement, []),
    [_createTFoot]: dart.definiteFunctionType(html.HtmlElement, []),
    [_createTHead]: dart.definiteFunctionType(html.HtmlElement, []),
    [dartx.deleteCaption]: dart.definiteFunctionType(dart.void, []),
    [dartx.deleteRow]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.deleteTFoot]: dart.definiteFunctionType(dart.void, []),
    [dartx.deleteTHead]: dart.definiteFunctionType(dart.void, []),
    [_insertRow]: dart.definiteFunctionType(html.HtmlElement, [], [core.int])
  })
});
dart.registerExtension(dart.global.HTMLTableElement, html.TableElement);
const _cells = Symbol('_cells');
const _insertCell = Symbol('_insertCell');
dart.defineExtensionNames([
  'cells',
  'addCell',
  'insertCell',
  'createFragment',
  'deleteCell',
  'rowIndex',
  'sectionRowIndex'
]);
html.TableRowElement = class TableRowElement extends html.HtmlElement {
  get [dartx.cells]() {
    return new (_WrappedListOfTableCellElement())(this[_cells]);
  }
  [dartx.addCell]() {
    return this[dartx.insertCell](-1);
  }
  [dartx.insertCell](index) {
    return html.TableCellElement._check(this[_insertCell](index));
  }
  [dartx.createFragment](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (dart.test(html.Range.supportsCreateContextualFragment)) {
      return super[dartx.createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
    }
    let fragment = html.DocumentFragment.new();
    let section = html.TableElement.new()[dartx.createFragment](html, {validator: validator, treeSanitizer: treeSanitizer})[dartx.nodes][dartx.single];
    let row = section[dartx.nodes][dartx.single];
    fragment[dartx.nodes][dartx.addAll](row[dartx.nodes]);
    return fragment;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.TableRowElement._check(html.document[dartx.createElement]("tr"));
  }
  created() {
    this[_cells] = null;
    this[dartx.rowIndex] = null;
    this[dartx.sectionRowIndex] = null;
    super.created();
  }
  get [_cells]() {
    return this.cells;
  }
  get [dartx.rowIndex]() {
    return this.rowIndex;
  }
  get [dartx.sectionRowIndex]() {
    return this.sectionRowIndex;
  }
  [dartx.deleteCell](...args) {
    return this.deleteCell.apply(this, args);
  }
  [_insertCell](...args) {
    return this.insertCell.apply(this, args);
  }
};
dart.defineNamedConstructor(html.TableRowElement, 'created');
dart.setSignature(html.TableRowElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TableRowElement, []),
    new: dart.definiteFunctionType(html.TableRowElement, []),
    created: dart.definiteFunctionType(html.TableRowElement, [])
  }),
  fields: () => ({
    [_cells]: ListOfNode(),
    [dartx.rowIndex]: core.int,
    [dartx.sectionRowIndex]: core.int
  }),
  getters: () => ({[dartx.cells]: dart.definiteFunctionType(core.List$(html.TableCellElement), [])}),
  methods: () => ({
    [dartx.addCell]: dart.definiteFunctionType(html.TableCellElement, []),
    [dartx.insertCell]: dart.definiteFunctionType(html.TableCellElement, [core.int]),
    [dartx.deleteCell]: dart.definiteFunctionType(dart.void, [core.int]),
    [_insertCell]: dart.definiteFunctionType(html.HtmlElement, [], [core.int])
  })
});
dart.registerExtension(dart.global.HTMLTableRowElement, html.TableRowElement);
dart.defineExtensionNames([
  'rows',
  'addRow',
  'insertRow',
  'createFragment',
  'deleteRow'
]);
html.TableSectionElement = class TableSectionElement extends html.HtmlElement {
  get [dartx.rows]() {
    return new (_WrappedListOfTableRowElement())(this[_rows]);
  }
  [dartx.addRow]() {
    return this[dartx.insertRow](-1);
  }
  [dartx.insertRow](index) {
    return html.TableRowElement._check(this[_insertRow](index));
  }
  [dartx.createFragment](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (dart.test(html.Range.supportsCreateContextualFragment)) {
      return super[dartx.createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
    }
    let fragment = html.DocumentFragment.new();
    let section = html.TableElement.new()[dartx.createFragment](html, {validator: validator, treeSanitizer: treeSanitizer})[dartx.nodes][dartx.single];
    fragment[dartx.nodes][dartx.addAll](section[dartx.nodes]);
    return fragment;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[_rows] = null;
    super.created();
  }
  get [_rows]() {
    return this.rows;
  }
  [dartx.deleteRow](...args) {
    return this.deleteRow.apply(this, args);
  }
  [_insertRow](...args) {
    return this.insertRow.apply(this, args);
  }
};
dart.defineNamedConstructor(html.TableSectionElement, 'created');
dart.setSignature(html.TableSectionElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TableSectionElement, []),
    created: dart.definiteFunctionType(html.TableSectionElement, [])
  }),
  fields: () => ({[_rows]: ListOfNode()}),
  getters: () => ({[dartx.rows]: dart.definiteFunctionType(core.List$(html.TableRowElement), [])}),
  methods: () => ({
    [dartx.addRow]: dart.definiteFunctionType(html.TableRowElement, []),
    [dartx.insertRow]: dart.definiteFunctionType(html.TableRowElement, [core.int]),
    [dartx.deleteRow]: dart.definiteFunctionType(dart.void, [core.int]),
    [_insertRow]: dart.definiteFunctionType(html.HtmlElement, [], [core.int])
  })
});
dart.registerExtension(dart.global.HTMLTableSectionElement, html.TableSectionElement);
dart.defineExtensionNames([
  'setInnerHtml',
  'content'
]);
html.TemplateElement = class TemplateElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.TemplateElement._check(html.document[dartx.createElement]("template"));
  }
  created() {
    this[dartx.content] = null;
    super.created();
  }
  static get supported() {
    return html.Element.isTagSupported('template');
  }
  get [dartx.content]() {
    return this.content;
  }
  [dartx.setInnerHtml](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    this[dartx.text] = null;
    let fragment = this[dartx.createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
    this[dartx.content][dartx.append](fragment);
  }
};
dart.defineNamedConstructor(html.TemplateElement, 'created');
dart.setSignature(html.TemplateElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TemplateElement, []),
    new: dart.definiteFunctionType(html.TemplateElement, []),
    created: dart.definiteFunctionType(html.TemplateElement, [])
  }),
  fields: () => ({[dartx.content]: html.DocumentFragment}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.HTMLTemplateElement, html.TemplateElement);
dart.defineExtensionNames([
  'checkValidity',
  'reportValidity',
  'select',
  'setCustomValidity',
  'setRangeText',
  'setSelectionRange',
  'autocapitalize',
  'autofocus',
  'cols',
  'defaultValue',
  'dirName',
  'disabled',
  'form',
  'inputMode',
  'labels',
  'maxLength',
  'minLength',
  'name',
  'placeholder',
  'readOnly',
  'required',
  'rows',
  'selectionDirection',
  'selectionEnd',
  'selectionStart',
  'textLength',
  'type',
  'validationMessage',
  'validity',
  'value',
  'willValidate',
  'wrap'
]);
html.TextAreaElement = class TextAreaElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.TextAreaElement._check(html.document[dartx.createElement]("textarea"));
  }
  created() {
    this[dartx.autocapitalize] = null;
    this[dartx.autofocus] = null;
    this[dartx.cols] = null;
    this[dartx.defaultValue] = null;
    this[dartx.dirName] = null;
    this[dartx.disabled] = null;
    this[dartx.form] = null;
    this[dartx.inputMode] = null;
    this[dartx.labels] = null;
    this[dartx.maxLength] = null;
    this[dartx.minLength] = null;
    this[dartx.name] = null;
    this[dartx.placeholder] = null;
    this[dartx.readOnly] = null;
    this[dartx.required] = null;
    this[dartx.rows] = null;
    this[dartx.selectionDirection] = null;
    this[dartx.selectionEnd] = null;
    this[dartx.selectionStart] = null;
    this[dartx.textLength] = null;
    this[dartx.type] = null;
    this[dartx.validationMessage] = null;
    this[dartx.validity] = null;
    this[dartx.value] = null;
    this[dartx.willValidate] = null;
    this[dartx.wrap] = null;
    super.created();
  }
  get [dartx.autocapitalize]() {
    return this.autocapitalize;
  }
  set [dartx.autocapitalize](value) {
    this.autocapitalize = value;
  }
  get [dartx.autofocus]() {
    return this.autofocus;
  }
  set [dartx.autofocus](value) {
    this.autofocus = value;
  }
  get [dartx.cols]() {
    return this.cols;
  }
  set [dartx.cols](value) {
    this.cols = value;
  }
  get [dartx.defaultValue]() {
    return this.defaultValue;
  }
  set [dartx.defaultValue](value) {
    this.defaultValue = value;
  }
  get [dartx.dirName]() {
    return this.dirName;
  }
  set [dartx.dirName](value) {
    this.dirName = value;
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.form]() {
    return this.form;
  }
  get [dartx.inputMode]() {
    return this.inputMode;
  }
  set [dartx.inputMode](value) {
    this.inputMode = value;
  }
  get [dartx.labels]() {
    return this.labels;
  }
  get [dartx.maxLength]() {
    return this.maxLength;
  }
  set [dartx.maxLength](value) {
    this.maxLength = value;
  }
  get [dartx.minLength]() {
    return this.minLength;
  }
  set [dartx.minLength](value) {
    this.minLength = value;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.placeholder]() {
    return this.placeholder;
  }
  set [dartx.placeholder](value) {
    this.placeholder = value;
  }
  get [dartx.readOnly]() {
    return this.readOnly;
  }
  set [dartx.readOnly](value) {
    this.readOnly = value;
  }
  get [dartx.required]() {
    return this.required;
  }
  set [dartx.required](value) {
    this.required = value;
  }
  get [dartx.rows]() {
    return this.rows;
  }
  set [dartx.rows](value) {
    this.rows = value;
  }
  get [dartx.selectionDirection]() {
    return this.selectionDirection;
  }
  set [dartx.selectionDirection](value) {
    this.selectionDirection = value;
  }
  get [dartx.selectionEnd]() {
    return this.selectionEnd;
  }
  set [dartx.selectionEnd](value) {
    this.selectionEnd = value;
  }
  get [dartx.selectionStart]() {
    return this.selectionStart;
  }
  set [dartx.selectionStart](value) {
    this.selectionStart = value;
  }
  get [dartx.textLength]() {
    return this.textLength;
  }
  get [dartx.type]() {
    return this.type;
  }
  get [dartx.validationMessage]() {
    return this.validationMessage;
  }
  get [dartx.validity]() {
    return this.validity;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
  get [dartx.willValidate]() {
    return this.willValidate;
  }
  get [dartx.wrap]() {
    return this.wrap;
  }
  set [dartx.wrap](value) {
    this.wrap = value;
  }
  [dartx.checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [dartx.reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [dartx.select](...args) {
    return this.select.apply(this, args);
  }
  [dartx.setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
  [dartx.setRangeText](...args) {
    return this.setRangeText.apply(this, args);
  }
  [dartx.setSelectionRange](...args) {
    return this.setSelectionRange.apply(this, args);
  }
};
dart.defineNamedConstructor(html.TextAreaElement, 'created');
dart.setSignature(html.TextAreaElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TextAreaElement, []),
    new: dart.definiteFunctionType(html.TextAreaElement, []),
    created: dart.definiteFunctionType(html.TextAreaElement, [])
  }),
  fields: () => ({
    [dartx.autocapitalize]: core.String,
    [dartx.autofocus]: core.bool,
    [dartx.cols]: core.int,
    [dartx.defaultValue]: core.String,
    [dartx.dirName]: core.String,
    [dartx.disabled]: core.bool,
    [dartx.form]: html.FormElement,
    [dartx.inputMode]: core.String,
    [dartx.labels]: ListOfNode(),
    [dartx.maxLength]: core.int,
    [dartx.minLength]: core.int,
    [dartx.name]: core.String,
    [dartx.placeholder]: core.String,
    [dartx.readOnly]: core.bool,
    [dartx.required]: core.bool,
    [dartx.rows]: core.int,
    [dartx.selectionDirection]: core.String,
    [dartx.selectionEnd]: core.int,
    [dartx.selectionStart]: core.int,
    [dartx.textLength]: core.int,
    [dartx.type]: core.String,
    [dartx.validationMessage]: core.String,
    [dartx.validity]: html.ValidityState,
    [dartx.value]: core.String,
    [dartx.willValidate]: core.bool,
    [dartx.wrap]: core.String
  }),
  methods: () => ({
    [dartx.checkValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.reportValidity]: dart.definiteFunctionType(core.bool, []),
    [dartx.select]: dart.definiteFunctionType(dart.void, []),
    [dartx.setCustomValidity]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.setRangeText]: dart.definiteFunctionType(dart.void, [core.String], {start: core.int, end: core.int, selectionMode: core.String}),
    [dartx.setSelectionRange]: dart.definiteFunctionType(dart.void, [core.int, core.int], [core.String])
  })
});
dart.registerExtension(dart.global.HTMLTextAreaElement, html.TextAreaElement);
const _initTextEvent = Symbol('_initTextEvent');
dart.defineExtensionNames([
  'data'
]);
html.TextEvent = class TextEvent extends html.UIEvent {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : false;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : false;
    let view = opts && 'view' in opts ? opts.view : null;
    let data = opts && 'data' in opts ? opts.data : null;
    if (view == null) {
      view = html.window;
    }
    let e = html.TextEvent._check(html.document[_createEvent]("TextEvent"));
    e[_initTextEvent](type, canBubble, cancelable, view, data);
    return e;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.data]() {
    return this.data;
  }
  [_initTextEvent](...args) {
    return this.initTextEvent.apply(this, args);
  }
};
dart.setSignature(html.TextEvent, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.TextEvent, [core.String], {canBubble: core.bool, cancelable: core.bool, view: html.Window, data: core.String}),
    _: dart.definiteFunctionType(html.TextEvent, [])
  }),
  fields: () => ({[dartx.data]: core.String}),
  methods: () => ({[_initTextEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, html.Window, core.String])})
});
dart.registerExtension(dart.global.TextEvent, html.TextEvent);
dart.defineExtensionNames([
  'actualBoundingBoxAscent',
  'actualBoundingBoxDescent',
  'actualBoundingBoxLeft',
  'actualBoundingBoxRight',
  'alphabeticBaseline',
  'emHeightAscent',
  'emHeightDescent',
  'fontBoundingBoxAscent',
  'fontBoundingBoxDescent',
  'hangingBaseline',
  'ideographicBaseline',
  'width'
]);
html.TextMetrics = class TextMetrics extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.actualBoundingBoxAscent]() {
    return this.actualBoundingBoxAscent;
  }
  get [dartx.actualBoundingBoxDescent]() {
    return this.actualBoundingBoxDescent;
  }
  get [dartx.actualBoundingBoxLeft]() {
    return this.actualBoundingBoxLeft;
  }
  get [dartx.actualBoundingBoxRight]() {
    return this.actualBoundingBoxRight;
  }
  get [dartx.alphabeticBaseline]() {
    return this.alphabeticBaseline;
  }
  get [dartx.emHeightAscent]() {
    return this.emHeightAscent;
  }
  get [dartx.emHeightDescent]() {
    return this.emHeightDescent;
  }
  get [dartx.fontBoundingBoxAscent]() {
    return this.fontBoundingBoxAscent;
  }
  get [dartx.fontBoundingBoxDescent]() {
    return this.fontBoundingBoxDescent;
  }
  get [dartx.hangingBaseline]() {
    return this.hangingBaseline;
  }
  get [dartx.ideographicBaseline]() {
    return this.ideographicBaseline;
  }
  get [dartx.width]() {
    return this.width;
  }
};
dart.setSignature(html.TextMetrics, {
  constructors: () => ({_: dart.definiteFunctionType(html.TextMetrics, [])}),
  fields: () => ({
    [dartx.actualBoundingBoxAscent]: core.double,
    [dartx.actualBoundingBoxDescent]: core.double,
    [dartx.actualBoundingBoxLeft]: core.double,
    [dartx.actualBoundingBoxRight]: core.double,
    [dartx.alphabeticBaseline]: core.double,
    [dartx.emHeightAscent]: core.double,
    [dartx.emHeightDescent]: core.double,
    [dartx.fontBoundingBoxAscent]: core.double,
    [dartx.fontBoundingBoxDescent]: core.double,
    [dartx.hangingBaseline]: core.double,
    [dartx.ideographicBaseline]: core.double,
    [dartx.width]: core.double
  })
});
dart.registerExtension(dart.global.TextMetrics, html.TextMetrics);
dart.defineExtensionNames([
  'addCue',
  'addRegion',
  'removeCue',
  'removeRegion',
  'onCueChange',
  'activeCues',
  'cues',
  'id',
  'kind',
  'label',
  'language',
  'mode',
  'regions'
]);
html.TextTrack = class TextTrack extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.activeCues]() {
    return this.activeCues;
  }
  get [dartx.cues]() {
    return this.cues;
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.kind]() {
    return this.kind;
  }
  get [dartx.label]() {
    return this.label;
  }
  get [dartx.language]() {
    return this.language;
  }
  get [dartx.mode]() {
    return this.mode;
  }
  set [dartx.mode](value) {
    this.mode = value;
  }
  get [dartx.regions]() {
    return this.regions;
  }
  [dartx.addCue](...args) {
    return this.addCue.apply(this, args);
  }
  [dartx.addRegion](...args) {
    return this.addRegion.apply(this, args);
  }
  [dartx.removeCue](...args) {
    return this.removeCue.apply(this, args);
  }
  [dartx.removeRegion](...args) {
    return this.removeRegion.apply(this, args);
  }
  get [dartx.onCueChange]() {
    return html.TextTrack.cueChangeEvent.forTarget(this);
  }
};
dart.setSignature(html.TextTrack, {
  constructors: () => ({_: dart.definiteFunctionType(html.TextTrack, [])}),
  fields: () => ({
    [dartx.activeCues]: html.TextTrackCueList,
    [dartx.cues]: html.TextTrackCueList,
    [dartx.id]: core.String,
    [dartx.kind]: core.String,
    [dartx.label]: core.String,
    [dartx.language]: core.String,
    [dartx.mode]: core.String,
    [dartx.regions]: html.VttRegionList
  }),
  getters: () => ({[dartx.onCueChange]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  methods: () => ({
    [dartx.addCue]: dart.definiteFunctionType(dart.void, [html.TextTrackCue]),
    [dartx.addRegion]: dart.definiteFunctionType(dart.void, [html.VttRegion]),
    [dartx.removeCue]: dart.definiteFunctionType(dart.void, [html.TextTrackCue]),
    [dartx.removeRegion]: dart.definiteFunctionType(dart.void, [html.VttRegion])
  }),
  sfields: () => ({cueChangeEvent: EventStreamProviderOfEvent()})
});
dart.defineLazy(html.TextTrack, {
  get cueChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('cuechange'));
  }
});
dart.registerExtension(dart.global.TextTrack, html.TextTrack);
dart.defineExtensionNames([
  'onEnter',
  'onExit',
  'endTime',
  'id',
  'pauseOnExit',
  'startTime',
  'track'
]);
html.TextTrackCue = class TextTrackCue extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.endTime]() {
    return this.endTime;
  }
  set [dartx.endTime](value) {
    this.endTime = value;
  }
  get [dartx.id]() {
    return this.id;
  }
  set [dartx.id](value) {
    this.id = value;
  }
  get [dartx.pauseOnExit]() {
    return this.pauseOnExit;
  }
  set [dartx.pauseOnExit](value) {
    this.pauseOnExit = value;
  }
  get [dartx.startTime]() {
    return this.startTime;
  }
  set [dartx.startTime](value) {
    this.startTime = value;
  }
  get [dartx.track]() {
    return this.track;
  }
  get [dartx.onEnter]() {
    return html.TextTrackCue.enterEvent.forTarget(this);
  }
  get [dartx.onExit]() {
    return html.TextTrackCue.exitEvent.forTarget(this);
  }
};
dart.setSignature(html.TextTrackCue, {
  constructors: () => ({_: dart.definiteFunctionType(html.TextTrackCue, [])}),
  fields: () => ({
    [dartx.endTime]: core.num,
    [dartx.id]: core.String,
    [dartx.pauseOnExit]: core.bool,
    [dartx.startTime]: core.num,
    [dartx.track]: html.TextTrack
  }),
  getters: () => ({
    [dartx.onEnter]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onExit]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  sfields: () => ({
    enterEvent: EventStreamProviderOfEvent(),
    exitEvent: EventStreamProviderOfEvent()
  })
});
dart.defineLazy(html.TextTrackCue, {
  get enterEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('enter'));
  },
  get exitEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('exit'));
  }
});
dart.registerExtension(dart.global.TextTrackCue, html.TextTrackCue);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'getCueById',
  'item'
]);
html.TextTrackCueList = class TextTrackCueList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.TextTrackCue), html.ImmutableListMixin$(html.TextTrackCue)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.getCueById](...args) {
    return this.getCueById.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
html.TextTrackCueList[dart.implements] = () => [ListOfTextTrackCue(), _js_helper.JavaScriptIndexingBehavior];
dart.setSignature(html.TextTrackCueList, {
  constructors: () => ({_: dart.definiteFunctionType(html.TextTrackCueList, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.TextTrackCue, []),
    [dartx.last]: dart.definiteFunctionType(html.TextTrackCue, []),
    [dartx.single]: dart.definiteFunctionType(html.TextTrackCue, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.TextTrackCue, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.TextTrackCue]),
    [dartx.elementAt]: dart.definiteFunctionType(html.TextTrackCue, [core.int]),
    [dartx.getCueById]: dart.definiteFunctionType(html.TextTrackCue, [core.String]),
    [dartx.item]: dart.definiteFunctionType(html.TextTrackCue, [core.int])
  })
});
dart.registerExtension(dart.global.TextTrackCueList, html.TextTrackCueList);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'getTrackById',
  'item',
  'onAddTrack',
  'onChange'
]);
html.TextTrackList = class TextTrackList extends dart.mixin(html.EventTarget, collection.ListMixin$(html.TextTrack), html.ImmutableListMixin$(html.TextTrack)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.getTrackById](...args) {
    return this.getTrackById.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
  get [dartx.onAddTrack]() {
    return html.TextTrackList.addTrackEvent.forTarget(this);
  }
  get [dartx.onChange]() {
    return html.TextTrackList.changeEvent.forTarget(this);
  }
};
html.TextTrackList[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfTextTrack()];
dart.setSignature(html.TextTrackList, {
  constructors: () => ({_: dart.definiteFunctionType(html.TextTrackList, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.TextTrack, []),
    [dartx.last]: dart.definiteFunctionType(html.TextTrack, []),
    [dartx.single]: dart.definiteFunctionType(html.TextTrack, []),
    [dartx.onAddTrack]: dart.definiteFunctionType(async.Stream$(html.TrackEvent), []),
    [dartx.onChange]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.TextTrack, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.TextTrack]),
    [dartx.elementAt]: dart.definiteFunctionType(html.TextTrack, [core.int]),
    [dartx.getTrackById]: dart.definiteFunctionType(html.TextTrack, [core.String]),
    [dartx.item]: dart.definiteFunctionType(html.TextTrack, [core.int])
  }),
  sfields: () => ({
    addTrackEvent: EventStreamProviderOfTrackEvent(),
    changeEvent: EventStreamProviderOfEvent()
  })
});
dart.defineLazy(html.TextTrackList, {
  get addTrackEvent() {
    return dart.const(new (EventStreamProviderOfTrackEvent())('addtrack'));
  },
  get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('change'));
  }
});
dart.registerExtension(dart.global.TextTrackList, html.TextTrackList);
dart.defineExtensionNames([
  'end',
  'start',
  'length'
]);
html.TimeRanges = class TimeRanges extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx.end](...args) {
    return this.end.apply(this, args);
  }
  [dartx.start](...args) {
    return this.start.apply(this, args);
  }
};
dart.setSignature(html.TimeRanges, {
  constructors: () => ({_: dart.definiteFunctionType(html.TimeRanges, [])}),
  fields: () => ({[dartx.length]: core.int}),
  methods: () => ({
    [dartx.end]: dart.definiteFunctionType(core.double, [core.int]),
    [dartx.start]: dart.definiteFunctionType(core.double, [core.int])
  })
});
dart.registerExtension(dart.global.TimeRanges, html.TimeRanges);
html.TimeoutHandler = dart.typedef('TimeoutHandler', () => dart.functionType(dart.void, []));
html.TitleElement = class TitleElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.TitleElement._check(html.document[dartx.createElement]("title"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.TitleElement, 'created');
dart.setSignature(html.TitleElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TitleElement, []),
    new: dart.definiteFunctionType(html.TitleElement, []),
    created: dart.definiteFunctionType(html.TitleElement, [])
  })
});
dart.registerExtension(dart.global.HTMLTitleElement, html.TitleElement);
const _radiusX = Symbol('_radiusX');
const _radiusY = Symbol('_radiusY');
const __clientX = Symbol('__clientX');
const __clientY = Symbol('__clientY');
const __screenX = Symbol('__screenX');
const __screenY = Symbol('__screenY');
const __pageX = Symbol('__pageX');
const __pageY = Symbol('__pageY');
const __radiusX = Symbol('__radiusX');
const __radiusY = Symbol('__radiusY');
dart.defineExtensionNames([
  'target',
  'client',
  'page',
  'screen',
  'radiusX',
  'radiusY',
  'force',
  'identifier',
  'rotationAngle'
]);
html.Touch = class Touch extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [_clientX]() {
    return this.clientX;
  }
  get [_clientY]() {
    return this.clientY;
  }
  get [dartx.force]() {
    return this.force;
  }
  get [dartx.identifier]() {
    return this.identifier;
  }
  get [_pageX]() {
    return this.pageX;
  }
  get [_pageY]() {
    return this.pageY;
  }
  get [_radiusX]() {
    return this.radiusX;
  }
  get [_radiusY]() {
    return this.radiusY;
  }
  get [dartx.rotationAngle]() {
    return this.rotationAngle;
  }
  get [_screenX]() {
    return this.screenX;
  }
  get [_screenY]() {
    return this.screenY;
  }
  get [dartx.target]() {
    return html._convertNativeToDart_EventTarget(this[_get_target]);
  }
  get [_get_target]() {
    return this.target;
  }
  get [__clientX]() {
    return this.clientX[dartx.round]();
  }
  get [__clientY]() {
    return this.clientY[dartx.round]();
  }
  get [__screenX]() {
    return this.screenX[dartx.round]();
  }
  get [__screenY]() {
    return this.screenY[dartx.round]();
  }
  get [__pageX]() {
    return this.pageX[dartx.round]();
  }
  get [__pageY]() {
    return this.pageY[dartx.round]();
  }
  get [__radiusX]() {
    return this.radiusX[dartx.round]();
  }
  get [__radiusY]() {
    return this.radiusY[dartx.round]();
  }
  get [dartx.client]() {
    return new (PointOfnum())(this[__clientX], this[__clientY]);
  }
  get [dartx.page]() {
    return new (PointOfnum())(this[__pageX], this[__pageY]);
  }
  get [dartx.screen]() {
    return new (PointOfnum())(this[__screenX], this[__screenY]);
  }
  get [dartx.radiusX]() {
    return this[__radiusX];
  }
  get [dartx.radiusY]() {
    return this[__radiusY];
  }
};
dart.setSignature(html.Touch, {
  constructors: () => ({_: dart.definiteFunctionType(html.Touch, [])}),
  fields: () => ({
    [_clientX]: core.double,
    [_clientY]: core.double,
    [dartx.force]: core.double,
    [dartx.identifier]: core.int,
    [_pageX]: core.double,
    [_pageY]: core.double,
    [_radiusX]: core.double,
    [_radiusY]: core.double,
    [dartx.rotationAngle]: core.double,
    [_screenX]: core.double,
    [_screenY]: core.double,
    [_get_target]: dart.dynamic
  }),
  getters: () => ({
    [dartx.target]: dart.definiteFunctionType(html.EventTarget, []),
    [__clientX]: dart.definiteFunctionType(core.int, []),
    [__clientY]: dart.definiteFunctionType(core.int, []),
    [__screenX]: dart.definiteFunctionType(core.int, []),
    [__screenY]: dart.definiteFunctionType(core.int, []),
    [__pageX]: dart.definiteFunctionType(core.int, []),
    [__pageY]: dart.definiteFunctionType(core.int, []),
    [__radiusX]: dart.definiteFunctionType(core.int, []),
    [__radiusY]: dart.definiteFunctionType(core.int, []),
    [dartx.client]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.page]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.screen]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.radiusX]: dart.definiteFunctionType(core.int, []),
    [dartx.radiusY]: dart.definiteFunctionType(core.int, [])
  })
});
dart.registerExtension(dart.global.Touch, html.Touch);
const _initTouchEvent = Symbol('_initTouchEvent');
dart.defineExtensionNames([
  'altKey',
  'changedTouches',
  'ctrlKey',
  'metaKey',
  'shiftKey',
  'targetTouches',
  'touches'
]);
html.TouchEvent = class TouchEvent extends html.UIEvent {
  static new(touches, targetTouches, changedTouches, type, opts) {
    let view = opts && 'view' in opts ? opts.view : null;
    let screenX = opts && 'screenX' in opts ? opts.screenX : 0;
    let screenY = opts && 'screenY' in opts ? opts.screenY : 0;
    let clientX = opts && 'clientX' in opts ? opts.clientX : 0;
    let clientY = opts && 'clientY' in opts ? opts.clientY : 0;
    let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
    let altKey = opts && 'altKey' in opts ? opts.altKey : false;
    let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
    let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
    if (view == null) {
      view = html.window;
    }
    let e = html.TouchEvent._check(html.document[_createEvent]("TouchEvent"));
    e[_initTouchEvent](touches, targetTouches, changedTouches, type, view, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey);
    return e;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.altKey]() {
    return this.altKey;
  }
  get [dartx.changedTouches]() {
    return this.changedTouches;
  }
  get [dartx.ctrlKey]() {
    return this.ctrlKey;
  }
  get [dartx.metaKey]() {
    return this.metaKey;
  }
  get [dartx.shiftKey]() {
    return this.shiftKey;
  }
  get [dartx.targetTouches]() {
    return this.targetTouches;
  }
  get [dartx.touches]() {
    return this.touches;
  }
  [_initTouchEvent](...args) {
    return this.initTouchEvent.apply(this, args);
  }
  static get supported() {
    return html_common.Device.isEventTypeSupported('TouchEvent');
  }
};
dart.setSignature(html.TouchEvent, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.TouchEvent, [html.TouchList, html.TouchList, html.TouchList, core.String], {view: html.Window, screenX: core.int, screenY: core.int, clientX: core.int, clientY: core.int, ctrlKey: core.bool, altKey: core.bool, shiftKey: core.bool, metaKey: core.bool}),
    _: dart.definiteFunctionType(html.TouchEvent, [])
  }),
  fields: () => ({
    [dartx.altKey]: core.bool,
    [dartx.changedTouches]: html.TouchList,
    [dartx.ctrlKey]: core.bool,
    [dartx.metaKey]: core.bool,
    [dartx.shiftKey]: core.bool,
    [dartx.targetTouches]: html.TouchList,
    [dartx.touches]: html.TouchList
  }),
  methods: () => ({[_initTouchEvent]: dart.definiteFunctionType(dart.void, [html.TouchList, html.TouchList, html.TouchList, core.String, html.Window, core.int, core.int, core.int, core.int, core.bool, core.bool, core.bool, core.bool])}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.TouchEvent, html.TouchEvent);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item'
]);
html.TouchList = class TouchList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.Touch), html.ImmutableListMixin$(html.Touch)) {
  static new() {
    return null;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static get supported() {
    return !!document.createTouchList;
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
html.TouchList[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfTouch()];
dart.setSignature(html.TouchList, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.TouchList, []),
    _: dart.definiteFunctionType(html.TouchList, [])
  }),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.Touch, []),
    [dartx.last]: dart.definiteFunctionType(html.Touch, []),
    [dartx.single]: dart.definiteFunctionType(html.Touch, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.Touch, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.Touch]),
    [dartx.elementAt]: dart.definiteFunctionType(html.Touch, [core.int]),
    [dartx.item]: dart.definiteFunctionType(html.Touch, [core.int])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.TouchList, html.TouchList);
dart.defineExtensionNames([
  'byteStreamTrackID',
  'kinds',
  'label',
  'language',
  'type'
]);
html.TrackDefault = class TrackDefault extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, language, label, kinds, byteStreamTrackID) {
    if (byteStreamTrackID === void 0) byteStreamTrackID = null;
    if (byteStreamTrackID != null) {
      let kinds_1 = html_common.convertDartToNative_StringArray(kinds);
      return html.TrackDefault._create_1(type, language, label, kinds_1, byteStreamTrackID);
    }
    let kinds_1 = html_common.convertDartToNative_StringArray(kinds);
    return html.TrackDefault._create_2(type, language, label, kinds_1);
  }
  static _create_1(type, language, label, kinds, byteStreamTrackID) {
    return new TrackDefault(type, language, label, kinds, byteStreamTrackID);
  }
  static _create_2(type, language, label, kinds) {
    return new TrackDefault(type, language, label, kinds);
  }
  get [dartx.byteStreamTrackID]() {
    return this.byteStreamTrackID;
  }
  get [dartx.kinds]() {
    return this.kinds;
  }
  get [dartx.label]() {
    return this.label;
  }
  get [dartx.language]() {
    return this.language;
  }
  get [dartx.type]() {
    return this.type;
  }
};
dart.setSignature(html.TrackDefault, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TrackDefault, []),
    new: dart.definiteFunctionType(html.TrackDefault, [core.String, core.String, core.String, ListOfString()], [core.String])
  }),
  fields: () => ({
    [dartx.byteStreamTrackID]: core.String,
    [dartx.kinds]: ListOfString(),
    [dartx.label]: core.String,
    [dartx.language]: core.String,
    [dartx.type]: core.String
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.TrackDefault, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.TrackDefault, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.TrackDefault, html.TrackDefault);
dart.defineExtensionNames([
  'item',
  'length'
]);
html.TrackDefaultList = class TrackDefaultList extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(trackDefaults) {
    if (trackDefaults === void 0) trackDefaults = null;
    if (trackDefaults != null) {
      return html.TrackDefaultList._create_1(trackDefaults);
    }
    return html.TrackDefaultList._create_2();
  }
  static _create_1(trackDefaults) {
    return new TrackDefaultList(trackDefaults);
  }
  static _create_2() {
    return new TrackDefaultList();
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
dart.setSignature(html.TrackDefaultList, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TrackDefaultList, []),
    new: dart.definiteFunctionType(html.TrackDefaultList, [], [ListOfTrackDefault()])
  }),
  fields: () => ({[dartx.length]: core.int}),
  methods: () => ({[dartx.item]: dart.definiteFunctionType(html.TrackDefault, [core.int])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.TrackDefaultList, [dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.TrackDefaultList, [])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.TrackDefaultList, html.TrackDefaultList);
dart.defineExtensionNames([
  'defaultValue',
  'kind',
  'label',
  'readyState',
  'src',
  'srclang',
  'track'
]);
html.TrackElement = class TrackElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.TrackElement._check(html.document[dartx.createElement]("track"));
  }
  created() {
    this[dartx.defaultValue] = null;
    this[dartx.kind] = null;
    this[dartx.label] = null;
    this[dartx.readyState] = null;
    this[dartx.src] = null;
    this[dartx.srclang] = null;
    this[dartx.track] = null;
    super.created();
  }
  static get supported() {
    return html.Element.isTagSupported('track');
  }
  get [dartx.defaultValue]() {
    return this.default;
  }
  set [dartx.defaultValue](value) {
    this.default = value;
  }
  get [dartx.kind]() {
    return this.kind;
  }
  set [dartx.kind](value) {
    this.kind = value;
  }
  get [dartx.label]() {
    return this.label;
  }
  set [dartx.label](value) {
    this.label = value;
  }
  get [dartx.readyState]() {
    return this.readyState;
  }
  get [dartx.src]() {
    return this.src;
  }
  set [dartx.src](value) {
    this.src = value;
  }
  get [dartx.srclang]() {
    return this.srclang;
  }
  set [dartx.srclang](value) {
    this.srclang = value;
  }
  get [dartx.track]() {
    return this.track;
  }
};
dart.defineNamedConstructor(html.TrackElement, 'created');
dart.setSignature(html.TrackElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TrackElement, []),
    new: dart.definiteFunctionType(html.TrackElement, []),
    created: dart.definiteFunctionType(html.TrackElement, [])
  }),
  fields: () => ({
    [dartx.defaultValue]: core.bool,
    [dartx.kind]: core.String,
    [dartx.label]: core.String,
    [dartx.readyState]: core.int,
    [dartx.src]: core.String,
    [dartx.srclang]: core.String,
    [dartx.track]: html.TextTrack
  }),
  sfields: () => ({
    ERROR: core.int,
    LOADED: core.int,
    LOADING: core.int,
    NONE: core.int
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
html.TrackElement.ERROR = 3;
html.TrackElement.LOADED = 2;
html.TrackElement.LOADING = 1;
html.TrackElement.NONE = 0;
dart.registerExtension(dart.global.HTMLTrackElement, html.TrackElement);
dart.defineExtensionNames([
  'track'
]);
html.TrackEvent = class TrackEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.TrackEvent._create_1(type, eventInitDict_1);
    }
    return html.TrackEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new TrackEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new TrackEvent(type);
  }
  get [dartx.track]() {
    return this.track;
  }
};
dart.setSignature(html.TrackEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TrackEvent, []),
    new: dart.definiteFunctionType(html.TrackEvent, [core.String], [core.Map])
  }),
  fields: () => ({[dartx.track]: core.Object}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.TrackEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.TrackEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.TrackEvent, html.TrackEvent);
dart.defineExtensionNames([
  'elapsedTime',
  'propertyName',
  'pseudoElement'
]);
html.TransitionEvent = class TransitionEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.TransitionEvent._create_1(type, eventInitDict_1);
    }
    return html.TransitionEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new TransitionEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new TransitionEvent(type);
  }
  get [dartx.elapsedTime]() {
    return this.elapsedTime;
  }
  get [dartx.propertyName]() {
    return this.propertyName;
  }
  get [dartx.pseudoElement]() {
    return this.pseudoElement;
  }
};
dart.setSignature(html.TransitionEvent, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.TransitionEvent, []),
    new: dart.definiteFunctionType(html.TransitionEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [dartx.elapsedTime]: core.double,
    [dartx.propertyName]: core.String,
    [dartx.pseudoElement]: core.String
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.TransitionEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.TransitionEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.TransitionEvent, html.TransitionEvent);
dart.registerExtension(dart.global.WebKitTransitionEvent, html.TransitionEvent);
dart.defineExtensionNames([
  'firstChild',
  'lastChild',
  'nextNode',
  'nextSibling',
  'parentNode',
  'previousNode',
  'previousSibling',
  'currentNode',
  'filter',
  'root',
  'whatToShow'
]);
html.TreeWalker = class TreeWalker extends _interceptors.Interceptor {
  static new(root, whatToShow) {
    return html.document[_createTreeWalker](root, whatToShow, null);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.currentNode]() {
    return this.currentNode;
  }
  set [dartx.currentNode](value) {
    this.currentNode = value;
  }
  get [dartx.filter]() {
    return this.filter;
  }
  get [dartx.root]() {
    return this.root;
  }
  get [dartx.whatToShow]() {
    return this.whatToShow;
  }
  [dartx.firstChild](...args) {
    return this.firstChild.apply(this, args);
  }
  [dartx.lastChild](...args) {
    return this.lastChild.apply(this, args);
  }
  [dartx.nextNode](...args) {
    return this.nextNode.apply(this, args);
  }
  [dartx.nextSibling](...args) {
    return this.nextSibling.apply(this, args);
  }
  [dartx.parentNode](...args) {
    return this.parentNode.apply(this, args);
  }
  [dartx.previousNode](...args) {
    return this.previousNode.apply(this, args);
  }
  [dartx.previousSibling](...args) {
    return this.previousSibling.apply(this, args);
  }
};
dart.setSignature(html.TreeWalker, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.TreeWalker, [html.Node, core.int]),
    _: dart.definiteFunctionType(html.TreeWalker, [])
  }),
  fields: () => ({
    [dartx.currentNode]: html.Node,
    [dartx.filter]: html.NodeFilter,
    [dartx.root]: html.Node,
    [dartx.whatToShow]: core.int
  }),
  methods: () => ({
    [dartx.firstChild]: dart.definiteFunctionType(html.Node, []),
    [dartx.lastChild]: dart.definiteFunctionType(html.Node, []),
    [dartx.nextNode]: dart.definiteFunctionType(html.Node, []),
    [dartx.nextSibling]: dart.definiteFunctionType(html.Node, []),
    [dartx.parentNode]: dart.definiteFunctionType(html.Node, []),
    [dartx.previousNode]: dart.definiteFunctionType(html.Node, []),
    [dartx.previousSibling]: dart.definiteFunctionType(html.Node, [])
  })
});
dart.registerExtension(dart.global.TreeWalker, html.TreeWalker);
html.UListElement = class UListElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.UListElement._check(html.document[dartx.createElement]("ul"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.UListElement, 'created');
dart.setSignature(html.UListElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.UListElement, []),
    new: dart.definiteFunctionType(html.UListElement, []),
    created: dart.definiteFunctionType(html.UListElement, [])
  })
});
dart.registerExtension(dart.global.HTMLUListElement, html.UListElement);
html.UnknownElement = class UnknownElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html.UnknownElement, 'created');
dart.setSignature(html.UnknownElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.UnknownElement, []),
    created: dart.definiteFunctionType(html.UnknownElement, [])
  })
});
dart.registerExtension(dart.global.HTMLUnknownElement, html.UnknownElement);
dart.defineExtensionNames([
  'toString',
  'hash',
  'host',
  'hostname',
  'href',
  'origin',
  'password',
  'pathname',
  'port',
  'protocol',
  'search',
  'username'
]);
html.Url = class Url extends _interceptors.Interceptor {
  static createObjectUrl(blob_OR_source_OR_stream) {
    return (self.URL || self.webkitURL).createObjectURL(blob_OR_source_OR_stream);
  }
  static createObjectUrlFromSource(source) {
    return (self.URL || self.webkitURL).createObjectURL(source);
  }
  static createObjectUrlFromStream(stream) {
    return (self.URL || self.webkitURL).createObjectURL(stream);
  }
  static createObjectUrlFromBlob(blob) {
    return (self.URL || self.webkitURL).createObjectURL(blob);
  }
  static revokeObjectUrl(url) {
    return (self.URL || self.webkitURL).revokeObjectURL(url);
  }
  [dartx.toString]() {
    return String(this);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.hash]() {
    return this.hash;
  }
  set [dartx.hash](value) {
    this.hash = value;
  }
  get [dartx.host]() {
    return this.host;
  }
  set [dartx.host](value) {
    this.host = value;
  }
  get [dartx.hostname]() {
    return this.hostname;
  }
  set [dartx.hostname](value) {
    this.hostname = value;
  }
  get [dartx.href]() {
    return this.href;
  }
  set [dartx.href](value) {
    this.href = value;
  }
  get [dartx.origin]() {
    return this.origin;
  }
  get [dartx.password]() {
    return this.password;
  }
  set [dartx.password](value) {
    this.password = value;
  }
  get [dartx.pathname]() {
    return this.pathname;
  }
  set [dartx.pathname](value) {
    this.pathname = value;
  }
  get [dartx.port]() {
    return this.port;
  }
  set [dartx.port](value) {
    this.port = value;
  }
  get [dartx.protocol]() {
    return this.protocol;
  }
  set [dartx.protocol](value) {
    this.protocol = value;
  }
  get [dartx.search]() {
    return this.search;
  }
  set [dartx.search](value) {
    this.search = value;
  }
  get [dartx.username]() {
    return this.username;
  }
  set [dartx.username](value) {
    this.username = value;
  }
};
html.Url[dart.implements] = () => [html.UrlUtils];
dart.setSignature(html.Url, {
  constructors: () => ({_: dart.definiteFunctionType(html.Url, [])}),
  fields: () => ({
    [dartx.hash]: core.String,
    [dartx.host]: core.String,
    [dartx.hostname]: core.String,
    [dartx.href]: core.String,
    [dartx.origin]: core.String,
    [dartx.password]: core.String,
    [dartx.pathname]: core.String,
    [dartx.port]: core.String,
    [dartx.protocol]: core.String,
    [dartx.search]: core.String,
    [dartx.username]: core.String
  }),
  statics: () => ({
    createObjectUrl: dart.definiteFunctionType(core.String, [dart.dynamic]),
    createObjectUrlFromSource: dart.definiteFunctionType(core.String, [html.MediaSource]),
    createObjectUrlFromStream: dart.definiteFunctionType(core.String, [html.MediaStream]),
    createObjectUrlFromBlob: dart.definiteFunctionType(core.String, [html.Blob]),
    revokeObjectUrl: dart.definiteFunctionType(dart.void, [core.String])
  }),
  names: ['createObjectUrl', 'createObjectUrlFromSource', 'createObjectUrlFromStream', 'createObjectUrlFromBlob', 'revokeObjectUrl']
});
dart.registerExtension(dart.global.URL, html.Url);
dart.defineExtensionNames([
  'hash',
  'host',
  'hostname',
  'href',
  'origin',
  'password',
  'pathname',
  'port',
  'protocol',
  'search',
  'username'
]);
html.UrlUtils = class UrlUtils extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get hash() {
    return this[hash];
  }
  set hash(value) {
    this[hash] = value;
  }
  get host() {
    return this[host];
  }
  set host(value) {
    this[host] = value;
  }
  get hostname() {
    return this[hostname];
  }
  set hostname(value) {
    this[hostname] = value;
  }
  get href() {
    return this[href];
  }
  set href(value) {
    this[href] = value;
  }
  get origin() {
    return this[origin];
  }
  set origin(value) {
    super.origin = value;
  }
  get password() {
    return this[password];
  }
  set password(value) {
    this[password] = value;
  }
  get pathname() {
    return this[pathname];
  }
  set pathname(value) {
    this[pathname] = value;
  }
  get port() {
    return this[port];
  }
  set port(value) {
    this[port] = value;
  }
  get protocol() {
    return this[protocol];
  }
  set protocol(value) {
    this[protocol] = value;
  }
  get search() {
    return this[search];
  }
  set search(value) {
    this[search] = value;
  }
  get username() {
    return this[username];
  }
  set username(value) {
    this[username] = value;
  }
};
const hash = Symbol(html.UrlUtils.name + "." + 'hash'.toString());
const host = Symbol(html.UrlUtils.name + "." + 'host'.toString());
const hostname = Symbol(html.UrlUtils.name + "." + 'hostname'.toString());
const href = Symbol(html.UrlUtils.name + "." + 'href'.toString());
const origin = Symbol(html.UrlUtils.name + "." + 'origin'.toString());
const password = Symbol(html.UrlUtils.name + "." + 'password'.toString());
const pathname = Symbol(html.UrlUtils.name + "." + 'pathname'.toString());
const port = Symbol(html.UrlUtils.name + "." + 'port'.toString());
const protocol = Symbol(html.UrlUtils.name + "." + 'protocol'.toString());
const search = Symbol(html.UrlUtils.name + "." + 'search'.toString());
const username = Symbol(html.UrlUtils.name + "." + 'username'.toString());
dart.setSignature(html.UrlUtils, {
  constructors: () => ({_: dart.definiteFunctionType(html.UrlUtils, [])}),
  fields: () => ({
    hash: core.String,
    host: core.String,
    hostname: core.String,
    href: core.String,
    origin: core.String,
    password: core.String,
    pathname: core.String,
    port: core.String,
    protocol: core.String,
    search: core.String,
    username: core.String
  })
});
dart.defineExtensionMembers(html.UrlUtils, [
  'hash',
  'hash',
  'host',
  'host',
  'hostname',
  'hostname',
  'href',
  'href',
  'origin',
  'password',
  'password',
  'pathname',
  'pathname',
  'port',
  'port',
  'protocol',
  'protocol',
  'search',
  'search',
  'username',
  'username'
]);
dart.defineExtensionNames([
  'hash',
  'host',
  'hostname',
  'href',
  'origin',
  'pathname',
  'port',
  'protocol',
  'search'
]);
html.UrlUtilsReadOnly = class UrlUtilsReadOnly extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get hash() {
    return this[hash];
  }
  set hash(value) {
    super.hash = value;
  }
  get host() {
    return this[host];
  }
  set host(value) {
    super.host = value;
  }
  get hostname() {
    return this[hostname];
  }
  set hostname(value) {
    super.hostname = value;
  }
  get href() {
    return this[href];
  }
  set href(value) {
    super.href = value;
  }
  get origin() {
    return this[origin];
  }
  set origin(value) {
    super.origin = value;
  }
  get pathname() {
    return this[pathname];
  }
  set pathname(value) {
    super.pathname = value;
  }
  get port() {
    return this[port];
  }
  set port(value) {
    super.port = value;
  }
  get protocol() {
    return this[protocol];
  }
  set protocol(value) {
    super.protocol = value;
  }
  get search() {
    return this[search];
  }
  set search(value) {
    super.search = value;
  }
};
const hash = Symbol(html.UrlUtilsReadOnly.name + "." + 'hash'.toString());
const host = Symbol(html.UrlUtilsReadOnly.name + "." + 'host'.toString());
const hostname = Symbol(html.UrlUtilsReadOnly.name + "." + 'hostname'.toString());
const href = Symbol(html.UrlUtilsReadOnly.name + "." + 'href'.toString());
const origin = Symbol(html.UrlUtilsReadOnly.name + "." + 'origin'.toString());
const pathname = Symbol(html.UrlUtilsReadOnly.name + "." + 'pathname'.toString());
const port = Symbol(html.UrlUtilsReadOnly.name + "." + 'port'.toString());
const protocol = Symbol(html.UrlUtilsReadOnly.name + "." + 'protocol'.toString());
const search = Symbol(html.UrlUtilsReadOnly.name + "." + 'search'.toString());
dart.setSignature(html.UrlUtilsReadOnly, {
  constructors: () => ({_: dart.definiteFunctionType(html.UrlUtilsReadOnly, [])}),
  fields: () => ({
    hash: core.String,
    host: core.String,
    hostname: core.String,
    href: core.String,
    origin: core.String,
    pathname: core.String,
    port: core.String,
    protocol: core.String,
    search: core.String
  })
});
dart.defineExtensionMembers(html.UrlUtilsReadOnly, [
  'hash',
  'host',
  'hostname',
  'href',
  'origin',
  'pathname',
  'port',
  'protocol',
  'search'
]);
dart.defineExtensionNames([
  'currentFieldOfView',
  'eyeTranslation',
  'maximumFieldOfView',
  'minimumFieldOfView',
  'recommendedFieldOfView',
  'renderRect'
]);
html.VREyeParameters = class VREyeParameters extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.currentFieldOfView]() {
    return this.currentFieldOfView;
  }
  get [dartx.eyeTranslation]() {
    return this.eyeTranslation;
  }
  get [dartx.maximumFieldOfView]() {
    return this.maximumFieldOfView;
  }
  get [dartx.minimumFieldOfView]() {
    return this.minimumFieldOfView;
  }
  get [dartx.recommendedFieldOfView]() {
    return this.recommendedFieldOfView;
  }
  get [dartx.renderRect]() {
    return this.renderRect;
  }
};
dart.setSignature(html.VREyeParameters, {
  constructors: () => ({_: dart.definiteFunctionType(html.VREyeParameters, [])}),
  fields: () => ({
    [dartx.currentFieldOfView]: html.VRFieldOfView,
    [dartx.eyeTranslation]: html.DomPoint,
    [dartx.maximumFieldOfView]: html.VRFieldOfView,
    [dartx.minimumFieldOfView]: html.VRFieldOfView,
    [dartx.recommendedFieldOfView]: html.VRFieldOfView,
    [dartx.renderRect]: html._DomRect
  })
});
dart.registerExtension(dart.global.VREyeParameters, html.VREyeParameters);
dart.defineExtensionNames([
  'downDegrees',
  'leftDegrees',
  'rightDegrees',
  'upDegrees'
]);
html.VRFieldOfView = class VRFieldOfView extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(fov) {
    if (fov === void 0) fov = null;
    if (fov != null) {
      let fov_1 = html_common.convertDartToNative_Dictionary(fov);
      return html.VRFieldOfView._create_1(fov_1);
    }
    return html.VRFieldOfView._create_2();
  }
  static _create_1(fov) {
    return new VRFieldOfView(fov);
  }
  static _create_2() {
    return new VRFieldOfView();
  }
  get [dartx.downDegrees]() {
    return this.downDegrees;
  }
  set [dartx.downDegrees](value) {
    this.downDegrees = value;
  }
  get [dartx.leftDegrees]() {
    return this.leftDegrees;
  }
  set [dartx.leftDegrees](value) {
    this.leftDegrees = value;
  }
  get [dartx.rightDegrees]() {
    return this.rightDegrees;
  }
  set [dartx.rightDegrees](value) {
    this.rightDegrees = value;
  }
  get [dartx.upDegrees]() {
    return this.upDegrees;
  }
  set [dartx.upDegrees](value) {
    this.upDegrees = value;
  }
};
dart.setSignature(html.VRFieldOfView, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.VRFieldOfView, []),
    new: dart.definiteFunctionType(html.VRFieldOfView, [], [core.Map])
  }),
  fields: () => ({
    [dartx.downDegrees]: core.num,
    [dartx.leftDegrees]: core.num,
    [dartx.rightDegrees]: core.num,
    [dartx.upDegrees]: core.num
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.VRFieldOfView, [dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.VRFieldOfView, [])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.VRFieldOfView, html.VRFieldOfView);
dart.defineExtensionNames([
  'angularAcceleration',
  'angularVelocity',
  'linearAcceleration',
  'linearVelocity',
  'orientation',
  'position',
  'timeStamp'
]);
html.VRPositionState = class VRPositionState extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.angularAcceleration]() {
    return this.angularAcceleration;
  }
  get [dartx.angularVelocity]() {
    return this.angularVelocity;
  }
  get [dartx.linearAcceleration]() {
    return this.linearAcceleration;
  }
  get [dartx.linearVelocity]() {
    return this.linearVelocity;
  }
  get [dartx.orientation]() {
    return this.orientation;
  }
  get [dartx.position]() {
    return this.position;
  }
  get [dartx.timeStamp]() {
    return this.timeStamp;
  }
};
dart.setSignature(html.VRPositionState, {
  constructors: () => ({_: dart.definiteFunctionType(html.VRPositionState, [])}),
  fields: () => ({
    [dartx.angularAcceleration]: html.DomPoint,
    [dartx.angularVelocity]: html.DomPoint,
    [dartx.linearAcceleration]: html.DomPoint,
    [dartx.linearVelocity]: html.DomPoint,
    [dartx.orientation]: html.DomPoint,
    [dartx.position]: html.DomPoint,
    [dartx.timeStamp]: core.double
  })
});
dart.registerExtension(dart.global.VRPositionState, html.VRPositionState);
dart.defineExtensionNames([
  'badInput',
  'customError',
  'patternMismatch',
  'rangeOverflow',
  'rangeUnderflow',
  'stepMismatch',
  'tooLong',
  'tooShort',
  'typeMismatch',
  'valid',
  'valueMissing'
]);
html.ValidityState = class ValidityState extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.badInput]() {
    return this.badInput;
  }
  get [dartx.customError]() {
    return this.customError;
  }
  get [dartx.patternMismatch]() {
    return this.patternMismatch;
  }
  get [dartx.rangeOverflow]() {
    return this.rangeOverflow;
  }
  get [dartx.rangeUnderflow]() {
    return this.rangeUnderflow;
  }
  get [dartx.stepMismatch]() {
    return this.stepMismatch;
  }
  get [dartx.tooLong]() {
    return this.tooLong;
  }
  get [dartx.tooShort]() {
    return this.tooShort;
  }
  get [dartx.typeMismatch]() {
    return this.typeMismatch;
  }
  get [dartx.valid]() {
    return this.valid;
  }
  get [dartx.valueMissing]() {
    return this.valueMissing;
  }
};
dart.setSignature(html.ValidityState, {
  constructors: () => ({_: dart.definiteFunctionType(html.ValidityState, [])}),
  fields: () => ({
    [dartx.badInput]: core.bool,
    [dartx.customError]: core.bool,
    [dartx.patternMismatch]: core.bool,
    [dartx.rangeOverflow]: core.bool,
    [dartx.rangeUnderflow]: core.bool,
    [dartx.stepMismatch]: core.bool,
    [dartx.tooLong]: core.bool,
    [dartx.tooShort]: core.bool,
    [dartx.typeMismatch]: core.bool,
    [dartx.valid]: core.bool,
    [dartx.valueMissing]: core.bool
  })
});
dart.registerExtension(dart.global.ValidityState, html.ValidityState);
dart.defineExtensionNames([
  'getVideoPlaybackQuality',
  'enterFullscreen',
  'exitFullscreen',
  'height',
  'poster',
  'videoHeight',
  'videoWidth',
  'decodedFrameCount',
  'droppedFrameCount',
  'width'
]);
html.VideoElement = class VideoElement extends html.MediaElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.VideoElement._check(html.document[dartx.createElement]("video"));
  }
  created() {
    this[dartx.height] = null;
    this[dartx.poster] = null;
    this[dartx.videoHeight] = null;
    this[dartx.videoWidth] = null;
    this[dartx.decodedFrameCount] = null;
    this[dartx.droppedFrameCount] = null;
    this[dartx.width] = null;
    super.created();
  }
  get [dartx.height]() {
    return this.height;
  }
  set [dartx.height](value) {
    this.height = value;
  }
  get [dartx.poster]() {
    return this.poster;
  }
  set [dartx.poster](value) {
    this.poster = value;
  }
  get [dartx.videoHeight]() {
    return this.videoHeight;
  }
  get [dartx.videoWidth]() {
    return this.videoWidth;
  }
  get [dartx.decodedFrameCount]() {
    return this.webkitDecodedFrameCount;
  }
  get [dartx.droppedFrameCount]() {
    return this.webkitDroppedFrameCount;
  }
  get [dartx.width]() {
    return this.width;
  }
  set [dartx.width](value) {
    this.width = value;
  }
  [dartx.getVideoPlaybackQuality](...args) {
    return this.getVideoPlaybackQuality.apply(this, args);
  }
  [dartx.enterFullscreen](...args) {
    return this.webkitEnterFullscreen.apply(this, args);
  }
  [dartx.exitFullscreen](...args) {
    return this.webkitExitFullscreen.apply(this, args);
  }
};
dart.defineNamedConstructor(html.VideoElement, 'created');
html.VideoElement[dart.implements] = () => [html.CanvasImageSource];
dart.setSignature(html.VideoElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.VideoElement, []),
    new: dart.definiteFunctionType(html.VideoElement, []),
    created: dart.definiteFunctionType(html.VideoElement, [])
  }),
  fields: () => ({
    [dartx.height]: core.int,
    [dartx.poster]: core.String,
    [dartx.videoHeight]: core.int,
    [dartx.videoWidth]: core.int,
    [dartx.decodedFrameCount]: core.int,
    [dartx.droppedFrameCount]: core.int,
    [dartx.width]: core.int
  }),
  methods: () => ({
    [dartx.getVideoPlaybackQuality]: dart.definiteFunctionType(html.VideoPlaybackQuality, []),
    [dartx.enterFullscreen]: dart.definiteFunctionType(dart.void, []),
    [dartx.exitFullscreen]: dart.definiteFunctionType(dart.void, [])
  })
});
dart.registerExtension(dart.global.HTMLVideoElement, html.VideoElement);
dart.defineExtensionNames([
  'corruptedVideoFrames',
  'creationTime',
  'droppedVideoFrames',
  'totalVideoFrames'
]);
html.VideoPlaybackQuality = class VideoPlaybackQuality extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.corruptedVideoFrames]() {
    return this.corruptedVideoFrames;
  }
  get [dartx.creationTime]() {
    return this.creationTime;
  }
  get [dartx.droppedVideoFrames]() {
    return this.droppedVideoFrames;
  }
  get [dartx.totalVideoFrames]() {
    return this.totalVideoFrames;
  }
};
dart.setSignature(html.VideoPlaybackQuality, {
  constructors: () => ({_: dart.definiteFunctionType(html.VideoPlaybackQuality, [])}),
  fields: () => ({
    [dartx.corruptedVideoFrames]: core.int,
    [dartx.creationTime]: core.double,
    [dartx.droppedVideoFrames]: core.int,
    [dartx.totalVideoFrames]: core.int
  })
});
dart.registerExtension(dart.global.VideoPlaybackQuality, html.VideoPlaybackQuality);
dart.defineExtensionNames([
  'id',
  'kind',
  'label',
  'language',
  'selected'
]);
html.VideoTrack = class VideoTrack extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.id]() {
    return this.id;
  }
  get [dartx.kind]() {
    return this.kind;
  }
  get [dartx.label]() {
    return this.label;
  }
  get [dartx.language]() {
    return this.language;
  }
  get [dartx.selected]() {
    return this.selected;
  }
  set [dartx.selected](value) {
    this.selected = value;
  }
};
dart.setSignature(html.VideoTrack, {
  constructors: () => ({_: dart.definiteFunctionType(html.VideoTrack, [])}),
  fields: () => ({
    [dartx.id]: core.String,
    [dartx.kind]: core.String,
    [dartx.label]: core.String,
    [dartx.language]: core.String,
    [dartx.selected]: core.bool
  })
});
dart.registerExtension(dart.global.VideoTrack, html.VideoTrack);
dart.defineExtensionNames([
  'getTrackById',
  'onChange',
  'length',
  'selectedIndex'
]);
html.VideoTrackList = class VideoTrackList extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.selectedIndex]() {
    return this.selectedIndex;
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [dartx.getTrackById](...args) {
    return this.getTrackById.apply(this, args);
  }
  get [dartx.onChange]() {
    return html.VideoTrackList.changeEvent.forTarget(this);
  }
};
dart.setSignature(html.VideoTrackList, {
  constructors: () => ({_: dart.definiteFunctionType(html.VideoTrackList, [])}),
  fields: () => ({
    [dartx.length]: core.int,
    [dartx.selectedIndex]: core.int
  }),
  getters: () => ({[dartx.onChange]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  methods: () => ({
    [__getter__]: dart.definiteFunctionType(html.VideoTrack, [core.int]),
    [dartx.getTrackById]: dart.definiteFunctionType(html.VideoTrack, [core.String])
  }),
  sfields: () => ({changeEvent: EventStreamProviderOfEvent()})
});
dart.defineLazy(html.VideoTrackList, {
  get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('change'));
  }
});
dart.registerExtension(dart.global.VideoTrackList, html.VideoTrackList);
html.VoidCallback = dart.typedef('VoidCallback', () => dart.functionType(dart.void, []));
dart.defineExtensionNames([
  'getCueAsHtml',
  'align',
  'line',
  'position',
  'regionId',
  'size',
  'snapToLines',
  'text',
  'vertical'
]);
html.VttCue = class VttCue extends html.TextTrackCue {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(startTime, endTime, text) {
    return html.VttCue._create_1(startTime, endTime, text);
  }
  static _create_1(startTime, endTime, text) {
    return new VTTCue(startTime, endTime, text);
  }
  get [dartx.align]() {
    return this.align;
  }
  set [dartx.align](value) {
    this.align = value;
  }
  get [dartx.line]() {
    return this.line;
  }
  set [dartx.line](value) {
    this.line = value;
  }
  get [dartx.position]() {
    return this.position;
  }
  set [dartx.position](value) {
    this.position = value;
  }
  get [dartx.regionId]() {
    return this.regionId;
  }
  set [dartx.regionId](value) {
    this.regionId = value;
  }
  get [dartx.size]() {
    return this.size;
  }
  set [dartx.size](value) {
    this.size = value;
  }
  get [dartx.snapToLines]() {
    return this.snapToLines;
  }
  set [dartx.snapToLines](value) {
    this.snapToLines = value;
  }
  get [dartx.text]() {
    return this.text;
  }
  set [dartx.text](value) {
    this.text = value;
  }
  get [dartx.vertical]() {
    return this.vertical;
  }
  set [dartx.vertical](value) {
    this.vertical = value;
  }
  [dartx.getCueAsHtml](...args) {
    return this.getCueAsHTML.apply(this, args);
  }
};
dart.setSignature(html.VttCue, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.VttCue, []),
    new: dart.definiteFunctionType(html.VttCue, [core.num, core.num, core.String])
  }),
  fields: () => ({
    [dartx.align]: core.String,
    [dartx.line]: core.Object,
    [dartx.position]: core.Object,
    [dartx.regionId]: core.String,
    [dartx.size]: core.num,
    [dartx.snapToLines]: core.bool,
    [dartx.text]: core.String,
    [dartx.vertical]: core.String
  }),
  methods: () => ({[dartx.getCueAsHtml]: dart.definiteFunctionType(html.DocumentFragment, [])}),
  statics: () => ({_create_1: dart.definiteFunctionType(html.VttCue, [dart.dynamic, dart.dynamic, dart.dynamic])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.VTTCue, html.VttCue);
dart.defineExtensionNames([
  'height',
  'id',
  'regionAnchorX',
  'regionAnchorY',
  'scroll',
  'track',
  'viewportAnchorX',
  'viewportAnchorY',
  'width'
]);
html.VttRegion = class VttRegion extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.VttRegion._create_1();
  }
  static _create_1() {
    return new VTTRegion();
  }
  get [dartx.height]() {
    return this.height;
  }
  set [dartx.height](value) {
    this.height = value;
  }
  get [dartx.id]() {
    return this.id;
  }
  set [dartx.id](value) {
    this.id = value;
  }
  get [dartx.regionAnchorX]() {
    return this.regionAnchorX;
  }
  set [dartx.regionAnchorX](value) {
    this.regionAnchorX = value;
  }
  get [dartx.regionAnchorY]() {
    return this.regionAnchorY;
  }
  set [dartx.regionAnchorY](value) {
    this.regionAnchorY = value;
  }
  get [dartx.scroll]() {
    return this.scroll;
  }
  set [dartx.scroll](value) {
    this.scroll = value;
  }
  get [dartx.track]() {
    return this.track;
  }
  get [dartx.viewportAnchorX]() {
    return this.viewportAnchorX;
  }
  set [dartx.viewportAnchorX](value) {
    this.viewportAnchorX = value;
  }
  get [dartx.viewportAnchorY]() {
    return this.viewportAnchorY;
  }
  set [dartx.viewportAnchorY](value) {
    this.viewportAnchorY = value;
  }
  get [dartx.width]() {
    return this.width;
  }
  set [dartx.width](value) {
    this.width = value;
  }
};
dart.setSignature(html.VttRegion, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.VttRegion, []),
    new: dart.definiteFunctionType(html.VttRegion, [])
  }),
  fields: () => ({
    [dartx.height]: core.int,
    [dartx.id]: core.String,
    [dartx.regionAnchorX]: core.num,
    [dartx.regionAnchorY]: core.num,
    [dartx.scroll]: core.String,
    [dartx.track]: html.TextTrack,
    [dartx.viewportAnchorX]: core.num,
    [dartx.viewportAnchorY]: core.num,
    [dartx.width]: core.num
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.VttRegion, [])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.VTTRegion, html.VttRegion);
dart.defineExtensionNames([
  'getRegionById',
  'item',
  'length'
]);
html.VttRegionList = class VttRegionList extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx.getRegionById](...args) {
    return this.getRegionById.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
dart.setSignature(html.VttRegionList, {
  constructors: () => ({_: dart.definiteFunctionType(html.VttRegionList, [])}),
  fields: () => ({[dartx.length]: core.int}),
  methods: () => ({
    [dartx.getRegionById]: dart.definiteFunctionType(html.VttRegion, [core.String]),
    [dartx.item]: dart.definiteFunctionType(html.VttRegion, [core.int])
  })
});
dart.registerExtension(dart.global.VTTRegionList, html.VttRegionList);
dart.defineExtensionNames([
  'close',
  'send',
  'sendBlob',
  'sendByteBuffer',
  'sendString',
  'sendTypedData',
  'onClose',
  'onError',
  'onMessage',
  'onOpen',
  'binaryType',
  'bufferedAmount',
  'extensions',
  'protocol',
  'readyState',
  'url'
]);
html.WebSocket = class WebSocket extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(url, protocols) {
    if (protocols === void 0) protocols = null;
    if (protocols != null) {
      return html.WebSocket._create_1(url, protocols);
    }
    return html.WebSocket._create_2(url);
  }
  static _create_1(url, protocols) {
    return new WebSocket(url, protocols);
  }
  static _create_2(url) {
    return new WebSocket(url);
  }
  static get supported() {
    return typeof window.WebSocket != "undefined";
  }
  get [dartx.binaryType]() {
    return this.binaryType;
  }
  set [dartx.binaryType](value) {
    this.binaryType = value;
  }
  get [dartx.bufferedAmount]() {
    return this.bufferedAmount;
  }
  get [dartx.extensions]() {
    return this.extensions;
  }
  get [dartx.protocol]() {
    return this.protocol;
  }
  get [dartx.readyState]() {
    return this.readyState;
  }
  get [dartx.url]() {
    return this.url;
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [dartx.send](...args) {
    return this.send.apply(this, args);
  }
  [dartx.sendBlob](...args) {
    return this.send.apply(this, args);
  }
  [dartx.sendByteBuffer](...args) {
    return this.send.apply(this, args);
  }
  [dartx.sendString](...args) {
    return this.send.apply(this, args);
  }
  [dartx.sendTypedData](...args) {
    return this.send.apply(this, args);
  }
  get [dartx.onClose]() {
    return html.WebSocket.closeEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return html.WebSocket.errorEvent.forTarget(this);
  }
  get [dartx.onMessage]() {
    return html.WebSocket.messageEvent.forTarget(this);
  }
  get [dartx.onOpen]() {
    return html.WebSocket.openEvent.forTarget(this);
  }
};
dart.setSignature(html.WebSocket, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.WebSocket, []),
    new: dart.definiteFunctionType(html.WebSocket, [core.String], [core.Object])
  }),
  fields: () => ({
    [dartx.binaryType]: core.String,
    [dartx.bufferedAmount]: core.int,
    [dartx.extensions]: core.String,
    [dartx.protocol]: core.String,
    [dartx.readyState]: core.int,
    [dartx.url]: core.String
  }),
  getters: () => ({
    [dartx.onClose]: dart.definiteFunctionType(async.Stream$(html.CloseEvent), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), []),
    [dartx.onOpen]: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  methods: () => ({
    [dartx.close]: dart.definiteFunctionType(dart.void, [], [core.int, core.String]),
    [dartx.send]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [dartx.sendBlob]: dart.definiteFunctionType(dart.void, [html.Blob]),
    [dartx.sendByteBuffer]: dart.definiteFunctionType(dart.void, [typed_data.ByteBuffer]),
    [dartx.sendString]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.sendTypedData]: dart.definiteFunctionType(dart.void, [typed_data.TypedData])
  }),
  sfields: () => ({
    closeEvent: EventStreamProviderOfCloseEvent(),
    errorEvent: EventStreamProviderOfEvent(),
    messageEvent: EventStreamProviderOfMessageEvent(),
    openEvent: EventStreamProviderOfEvent(),
    CLOSED: core.int,
    CLOSING: core.int,
    CONNECTING: core.int,
    OPEN: core.int
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.WebSocket, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.WebSocket, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
html.WebSocket.CLOSED = 3;
html.WebSocket.CLOSING = 2;
html.WebSocket.CONNECTING = 0;
html.WebSocket.OPEN = 1;
dart.defineLazy(html.WebSocket, {
  get closeEvent() {
    return dart.const(new (EventStreamProviderOfCloseEvent())('close'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  },
  get openEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('open'));
  }
});
dart.registerExtension(dart.global.WebSocket, html.WebSocket);
const _deltaX = Symbol('_deltaX');
const _deltaY = Symbol('_deltaY');
const _wheelDelta = Symbol('_wheelDelta');
const _wheelDeltaX = Symbol('_wheelDeltaX');
const _hasInitMouseScrollEvent = Symbol('_hasInitMouseScrollEvent');
const _initMouseScrollEvent = Symbol('_initMouseScrollEvent');
const _hasInitWheelEvent = Symbol('_hasInitWheelEvent');
const _initWheelEvent = Symbol('_initWheelEvent');
dart.defineExtensionNames([
  'deltaY',
  'deltaX',
  'deltaMode',
  'deltaZ'
]);
html.WheelEvent = class WheelEvent extends html.MouseEvent {
  static new(type, opts) {
    let view = opts && 'view' in opts ? opts.view : null;
    let deltaX = opts && 'deltaX' in opts ? opts.deltaX : 0;
    let deltaY = opts && 'deltaY' in opts ? opts.deltaY : 0;
    let deltaZ = opts && 'deltaZ' in opts ? opts.deltaZ : 0;
    let deltaMode = opts && 'deltaMode' in opts ? opts.deltaMode : 0;
    let detail = opts && 'detail' in opts ? opts.detail : 0;
    let screenX = opts && 'screenX' in opts ? opts.screenX : 0;
    let screenY = opts && 'screenY' in opts ? opts.screenY : 0;
    let clientX = opts && 'clientX' in opts ? opts.clientX : 0;
    let clientY = opts && 'clientY' in opts ? opts.clientY : 0;
    let button = opts && 'button' in opts ? opts.button : 0;
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
    let altKey = opts && 'altKey' in opts ? opts.altKey : false;
    let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
    let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
    let relatedTarget = opts && 'relatedTarget' in opts ? opts.relatedTarget : null;
    let options = dart.map({view: view, deltaMode: deltaMode, deltaX: deltaX, deltaY: deltaY, deltaZ: deltaZ, detail: detail, screenX: screenX, screenY: screenY, clientX: clientX, clientY: clientY, button: button, bubbles: canBubble, cancelable: cancelable, ctrlKey: ctrlKey, altKey: altKey, shiftKey: shiftKey, metaKey: metaKey, relatedTarget: relatedTarget}, core.String, core.Object);
    if (view == null) {
      view = html.window;
    }
    return new WheelEvent(type, html_common.convertDartToNative_Dictionary(options));
  }
  static _(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html.WheelEvent._create_1(type, eventInitDict_1);
    }
    return html.WheelEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new WheelEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new WheelEvent(type);
  }
  get [_deltaX]() {
    return this.deltaX;
  }
  get [_deltaY]() {
    return this.deltaY;
  }
  get [dartx.deltaZ]() {
    return this.deltaZ;
  }
  get [dartx.deltaY]() {
    if (this.deltaY !== undefined) {
      return this[_deltaY];
    }
    dart.throw(new core.UnsupportedError('deltaY is not supported'));
  }
  get [dartx.deltaX]() {
    if (this.deltaX !== undefined) {
      return this[_deltaX];
    }
    dart.throw(new core.UnsupportedError('deltaX is not supported'));
  }
  get [dartx.deltaMode]() {
    if (!!this.deltaMode) {
      return this.deltaMode;
    }
    return 0;
  }
  get [_wheelDelta]() {
    return this.wheelDelta;
  }
  get [_wheelDeltaX]() {
    return this.wheelDeltaX;
  }
  get [_detail]() {
    return this.detail;
  }
  get [_hasInitMouseScrollEvent]() {
    return !!this.initMouseScrollEvent;
  }
  [_initMouseScrollEvent](...args) {
    return this.initMouseScrollEvent.apply(this, args);
  }
  get [_hasInitWheelEvent]() {
    return !!this.initWheelEvent;
  }
  [_initWheelEvent](...args) {
    return this.initWheelEvent.apply(this, args);
  }
};
dart.setSignature(html.WheelEvent, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.WheelEvent, [core.String], {view: html.Window, deltaX: core.num, deltaY: core.num, deltaZ: core.num, deltaMode: core.int, detail: core.int, screenX: core.int, screenY: core.int, clientX: core.int, clientY: core.int, button: core.int, canBubble: core.bool, cancelable: core.bool, ctrlKey: core.bool, altKey: core.bool, shiftKey: core.bool, metaKey: core.bool, relatedTarget: html.EventTarget}),
    _: dart.definiteFunctionType(html.WheelEvent, [core.String], [core.Map])
  }),
  fields: () => ({
    [_deltaX]: core.double,
    [_deltaY]: core.double,
    [dartx.deltaZ]: core.double
  }),
  getters: () => ({
    [dartx.deltaY]: dart.definiteFunctionType(core.num, []),
    [dartx.deltaX]: dart.definiteFunctionType(core.num, []),
    [dartx.deltaMode]: dart.definiteFunctionType(core.int, []),
    [_wheelDelta]: dart.definiteFunctionType(core.num, []),
    [_wheelDeltaX]: dart.definiteFunctionType(core.num, []),
    [_detail]: dart.definiteFunctionType(core.num, []),
    [_hasInitMouseScrollEvent]: dart.definiteFunctionType(core.bool, []),
    [_hasInitWheelEvent]: dart.definiteFunctionType(core.bool, [])
  }),
  methods: () => ({
    [_initMouseScrollEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, html.Window, core.int, core.int, core.int, core.int, core.int, core.bool, core.bool, core.bool, core.bool, core.int, html.EventTarget, core.int]),
    [_initWheelEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, html.Window, core.int, core.int, core.int, core.int, core.int, core.int, html.EventTarget, core.String, core.int, core.int, core.int, core.int])
  }),
  sfields: () => ({
    DOM_DELTA_LINE: core.int,
    DOM_DELTA_PAGE: core.int,
    DOM_DELTA_PIXEL: core.int
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html.WheelEvent, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html.WheelEvent, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
html.WheelEvent.DOM_DELTA_LINE = 1;
html.WheelEvent.DOM_DELTA_PAGE = 2;
html.WheelEvent.DOM_DELTA_PIXEL = 0;
dart.registerExtension(dart.global.WheelEvent, html.WheelEvent);
const _open2 = Symbol('_open2');
const _open3 = Symbol('_open3');
const _location = Symbol('_location');
const _ensureRequestAnimationFrame = Symbol('_ensureRequestAnimationFrame');
const _requestAnimationFrame = Symbol('_requestAnimationFrame');
const _cancelAnimationFrame = Symbol('_cancelAnimationFrame');
const _requestFileSystem = Symbol('_requestFileSystem');
const _get_opener = Symbol('_get_opener');
const _pageXOffset = Symbol('_pageXOffset');
const _pageYOffset = Symbol('_pageYOffset');
const _get_parent = Symbol('_get_parent');
const _get_self = Symbol('_get_self');
const _get_top = Symbol('_get_top');
const __getter___1 = Symbol('__getter___1');
const __getter___2 = Symbol('__getter___2');
const _scroll_4 = Symbol('_scroll_4');
const _scroll_5 = Symbol('_scroll_5');
const _scrollBy_4 = Symbol('_scrollBy_4');
const _scrollBy_5 = Symbol('_scrollBy_5');
const _scrollTo_4 = Symbol('_scrollTo_4');
const _scrollTo_5 = Symbol('_scrollTo_5');
const __requestFileSystem = Symbol('__requestFileSystem');
const _resolveLocalFileSystemUrl = Symbol('_resolveLocalFileSystemUrl');
dart.defineExtensionNames([
  'animationFrame',
  'document',
  'open',
  'location',
  'location',
  'requestAnimationFrame',
  'cancelAnimationFrame',
  'indexedDB',
  'console',
  'requestFileSystem',
  'opener',
  'opener',
  'parent',
  'self',
  'top',
  'window',
  'alert',
  'close',
  'confirm',
  'fetch',
  'find',
  'getMatchedCssRules',
  'getSelection',
  'matchMedia',
  'moveBy',
  'openDatabase',
  'postMessage',
  'print',
  'resizeBy',
  'resizeTo',
  'scroll',
  'scrollBy',
  'scrollTo',
  'stop',
  'resolveLocalFileSystemUrl',
  'atob',
  'btoa',
  'onContentLoaded',
  'onAbort',
  'onBlur',
  'onCanPlay',
  'onCanPlayThrough',
  'onChange',
  'onClick',
  'onContextMenu',
  'onDoubleClick',
  'onDeviceMotion',
  'onDeviceOrientation',
  'onDrag',
  'onDragEnd',
  'onDragEnter',
  'onDragLeave',
  'onDragOver',
  'onDragStart',
  'onDrop',
  'onDurationChange',
  'onEmptied',
  'onEnded',
  'onError',
  'onFocus',
  'onHashChange',
  'onInput',
  'onInvalid',
  'onKeyDown',
  'onKeyPress',
  'onKeyUp',
  'onLoad',
  'onLoadedData',
  'onLoadedMetadata',
  'onLoadStart',
  'onMessage',
  'onMouseDown',
  'onMouseEnter',
  'onMouseLeave',
  'onMouseMove',
  'onMouseOut',
  'onMouseOver',
  'onMouseUp',
  'onMouseWheel',
  'onOffline',
  'onOnline',
  'onPageHide',
  'onPageShow',
  'onPause',
  'onPlay',
  'onPlaying',
  'onPopState',
  'onProgress',
  'onRateChange',
  'onReset',
  'onResize',
  'onScroll',
  'onSearch',
  'onSeeked',
  'onSeeking',
  'onSelect',
  'onStalled',
  'onStorage',
  'onSubmit',
  'onSuspend',
  'onTimeUpdate',
  'onTouchCancel',
  'onTouchEnd',
  'onTouchMove',
  'onTouchStart',
  'onTransitionEnd',
  'onUnload',
  'onVolumeChange',
  'onWaiting',
  'onAnimationEnd',
  'onAnimationIteration',
  'onAnimationStart',
  'onBeforeUnload',
  'moveTo',
  'pageXOffset',
  'pageYOffset',
  'scrollX',
  'scrollY',
  'applicationCache',
  'caches',
  'closed',
  'crypto',
  'defaultStatus',
  'defaultstatus',
  'devicePixelRatio',
  'history',
  'innerHeight',
  'innerWidth',
  'localStorage',
  'locationbar',
  'menubar',
  'name',
  'navigator',
  'offscreenBuffering',
  'orientation',
  'outerHeight',
  'outerWidth',
  'performance',
  'screen',
  'screenLeft',
  'screenTop',
  'screenX',
  'screenY',
  'scrollbars',
  'sessionStorage',
  'speechSynthesis',
  'status',
  'statusbar',
  'styleMedia',
  'toolbar'
]);
html.Window = class Window extends html.EventTarget {
  get [dartx.animationFrame]() {
    let completer = CompleterOfnum().sync();
    this[dartx.requestAnimationFrame](dart.fn(time => {
      completer.complete(time);
    }, numTovoid()));
    return completer.future;
  }
  get [dartx.document]() {
    return this.document;
  }
  [_open2](url, name) {
    return this.open(url, name);
  }
  [_open3](url, name, options) {
    return this.open(url, name, options);
  }
  [dartx.open](url, name, options) {
    if (options === void 0) options = null;
    if (options == null) {
      return html._DOMWindowCrossFrame._createSafe(this[_open2](url, name));
    } else {
      return html._DOMWindowCrossFrame._createSafe(this[_open3](url, name, options));
    }
  }
  get [dartx.location]() {
    return html.Location._check(this[_location]);
  }
  set [dartx.location](value) {
    this[_location] = value;
  }
  get [_location]() {
    return this.location;
  }
  set [_location](value) {
    this.location = value;
  }
  [dartx.requestAnimationFrame](callback) {
    this[_ensureRequestAnimationFrame]();
    return this[_requestAnimationFrame](html._wrapZone(core.num, dart.dynamic)(callback));
  }
  [dartx.cancelAnimationFrame](id) {
    this[_ensureRequestAnimationFrame]();
    this[_cancelAnimationFrame](id);
  }
  [_requestAnimationFrame](...args) {
    return this.requestAnimationFrame.apply(this, args);
  }
  [_cancelAnimationFrame](...args) {
    return this.cancelAnimationFrame.apply(this, args);
  }
  [_ensureRequestAnimationFrame]() {
    if (!!(this.requestAnimationFrame && this.cancelAnimationFrame)) return;
    (function($this) {
      var vendors = ['ms', 'moz', 'webkit', 'o'];
      for (var i = 0; i < vendors.length && !$this.requestAnimationFrame; ++i) {
        $this.requestAnimationFrame = $this[vendors[i] + 'RequestAnimationFrame'];
        $this.cancelAnimationFrame = $this[vendors[i] + 'CancelAnimationFrame'] || $this[vendors[i] + 'CancelRequestAnimationFrame'];
      }
      if ($this.requestAnimationFrame && $this.cancelAnimationFrame) return;
      $this.requestAnimationFrame = function(callback) {
        return window.setTimeout(function() {
          callback(Date.now());
        }, 16);
      };
      $this.cancelAnimationFrame = function(id) {
        clearTimeout(id);
      };
    })(this);
  }
  get [dartx.indexedDB]() {
    return this.indexedDB || this.webkitIndexedDB || this.mozIndexedDB;
  }
  get [dartx.console]() {
    return html.Console._safeConsole;
  }
  [dartx.requestFileSystem](size, opts) {
    let persistent = opts && 'persistent' in opts ? opts.persistent : false;
    return this[_requestFileSystem](dart.test(persistent) ? 1 : 0, size);
  }
  static get supportsPointConversions() {
    return html.DomPoint.supported;
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.applicationCache]() {
    return this.applicationCache;
  }
  get [dartx.caches]() {
    return this.caches;
  }
  get [dartx.closed]() {
    return this.closed;
  }
  get [dartx.crypto]() {
    return this.crypto;
  }
  get [dartx.defaultStatus]() {
    return this.defaultStatus;
  }
  set [dartx.defaultStatus](value) {
    this.defaultStatus = value;
  }
  get [dartx.defaultstatus]() {
    return this.defaultstatus;
  }
  set [dartx.defaultstatus](value) {
    this.defaultstatus = value;
  }
  get [dartx.devicePixelRatio]() {
    return this.devicePixelRatio;
  }
  get [dartx.history]() {
    return this.history;
  }
  get [dartx.innerHeight]() {
    return this.innerHeight;
  }
  get [dartx.innerWidth]() {
    return this.innerWidth;
  }
  get [dartx.localStorage]() {
    return this.localStorage;
  }
  get [dartx.locationbar]() {
    return this.locationbar;
  }
  get [dartx.menubar]() {
    return this.menubar;
  }
  get [dartx.name]() {
    return this.name;
  }
  set [dartx.name](value) {
    this.name = value;
  }
  get [dartx.navigator]() {
    return this.navigator;
  }
  get [dartx.offscreenBuffering]() {
    return this.offscreenBuffering;
  }
  get [dartx.opener]() {
    return html._convertNativeToDart_Window(this[_get_opener]);
  }
  get [_get_opener]() {
    return this.opener;
  }
  set [dartx.opener](value) {
    this.opener = value;
  }
  get [dartx.orientation]() {
    return this.orientation;
  }
  get [dartx.outerHeight]() {
    return this.outerHeight;
  }
  get [dartx.outerWidth]() {
    return this.outerWidth;
  }
  get [_pageXOffset]() {
    return this.pageXOffset;
  }
  get [_pageYOffset]() {
    return this.pageYOffset;
  }
  get [dartx.parent]() {
    return html._convertNativeToDart_Window(this[_get_parent]);
  }
  get [_get_parent]() {
    return this.parent;
  }
  get [dartx.performance]() {
    return this.performance;
  }
  get [dartx.screen]() {
    return this.screen;
  }
  get [dartx.screenLeft]() {
    return this.screenLeft;
  }
  get [dartx.screenTop]() {
    return this.screenTop;
  }
  get [dartx.screenX]() {
    return this.screenX;
  }
  get [dartx.screenY]() {
    return this.screenY;
  }
  get [dartx.scrollbars]() {
    return this.scrollbars;
  }
  get [dartx.self]() {
    return html._convertNativeToDart_Window(this[_get_self]);
  }
  get [_get_self]() {
    return this.self;
  }
  get [dartx.sessionStorage]() {
    return this.sessionStorage;
  }
  get [dartx.speechSynthesis]() {
    return this.speechSynthesis;
  }
  get [dartx.status]() {
    return this.status;
  }
  set [dartx.status](value) {
    this.status = value;
  }
  get [dartx.statusbar]() {
    return this.statusbar;
  }
  get [dartx.styleMedia]() {
    return this.styleMedia;
  }
  get [dartx.toolbar]() {
    return this.toolbar;
  }
  get [dartx.top]() {
    return html._convertNativeToDart_Window(this[_get_top]);
  }
  get [_get_top]() {
    return this.top;
  }
  get [dartx.window]() {
    return html._convertNativeToDart_Window(this[_get_window]);
  }
  get [_get_window]() {
    return this.window;
  }
  [__getter__](index_OR_name) {
    if (typeof index_OR_name == 'number') {
      return html._convertNativeToDart_Window(this[__getter___1](index_OR_name));
    }
    if (typeof index_OR_name == 'string') {
      return html._convertNativeToDart_Window(this[__getter___2](index_OR_name));
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  [__getter___1](...args) {
    return this.__getter__.apply(this, args);
  }
  [__getter___2](...args) {
    return this.__getter__.apply(this, args);
  }
  [dartx.alert](...args) {
    return this.alert.apply(this, args);
  }
  [dartx.close](...args) {
    return this.close.apply(this, args);
  }
  [dartx.confirm](...args) {
    return this.confirm.apply(this, args);
  }
  [dartx.fetch](input, init) {
    if (init === void 0) init = null;
    if (init != null) {
      let init_1 = html_common.convertDartToNative_Dictionary(init);
      return this[_fetch_1](input, init_1);
    }
    return this[_fetch_2](input);
  }
  [_fetch_1](...args) {
    return this.fetch.apply(this, args);
  }
  [_fetch_2](...args) {
    return this.fetch.apply(this, args);
  }
  [dartx.find](...args) {
    return this.find.apply(this, args);
  }
  [_getComputedStyle](...args) {
    return this.getComputedStyle.apply(this, args);
  }
  [dartx.getMatchedCssRules](...args) {
    return this.getMatchedCSSRules.apply(this, args);
  }
  [dartx.getSelection](...args) {
    return this.getSelection.apply(this, args);
  }
  [dartx.matchMedia](...args) {
    return this.matchMedia.apply(this, args);
  }
  [dartx.moveBy](...args) {
    return this.moveBy.apply(this, args);
  }
  [_moveTo](...args) {
    return this.moveTo.apply(this, args);
  }
  [dartx.openDatabase](...args) {
    return this.openDatabase.apply(this, args);
  }
  [dartx.postMessage](message, targetOrigin, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, targetOrigin, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1, targetOrigin);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
  [dartx.print](...args) {
    return this.print.apply(this, args);
  }
  [dartx.resizeBy](...args) {
    return this.resizeBy.apply(this, args);
  }
  [dartx.resizeTo](...args) {
    return this.resizeTo.apply(this, args);
  }
  [dartx.scroll](options_OR_x, y, scrollOptions) {
    if (options_OR_x === void 0) options_OR_x = null;
    if (y === void 0) y = null;
    if (scrollOptions === void 0) scrollOptions = null;
    if (options_OR_x == null && y == null && scrollOptions == null) {
      this[_scroll_1]();
      return;
    }
    if (core.Map.is(options_OR_x) && y == null && scrollOptions == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
      this[_scroll_2](options_1);
      return;
    }
    if (typeof y == 'number' && typeof options_OR_x == 'number' && scrollOptions == null) {
      this[_scroll_3](options_OR_x, y);
      return;
    }
    if (typeof y == 'number' && typeof options_OR_x == 'number' && scrollOptions == null) {
      this[_scroll_4](options_OR_x, y);
      return;
    }
    if (scrollOptions != null && typeof y == 'number' && typeof options_OR_x == 'number') {
      let scrollOptions_1 = html_common.convertDartToNative_Dictionary(scrollOptions);
      this[_scroll_5](options_OR_x, y, scrollOptions_1);
      return;
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  [_scroll_1](...args) {
    return this.scroll.apply(this, args);
  }
  [_scroll_2](...args) {
    return this.scroll.apply(this, args);
  }
  [_scroll_3](...args) {
    return this.scroll.apply(this, args);
  }
  [_scroll_4](...args) {
    return this.scroll.apply(this, args);
  }
  [_scroll_5](...args) {
    return this.scroll.apply(this, args);
  }
  [dartx.scrollBy](options_OR_x, y, scrollOptions) {
    if (options_OR_x === void 0) options_OR_x = null;
    if (y === void 0) y = null;
    if (scrollOptions === void 0) scrollOptions = null;
    if (options_OR_x == null && y == null && scrollOptions == null) {
      this[_scrollBy_1]();
      return;
    }
    if (core.Map.is(options_OR_x) && y == null && scrollOptions == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
      this[_scrollBy_2](options_1);
      return;
    }
    if (typeof y == 'number' && typeof options_OR_x == 'number' && scrollOptions == null) {
      this[_scrollBy_3](options_OR_x, y);
      return;
    }
    if (typeof y == 'number' && typeof options_OR_x == 'number' && scrollOptions == null) {
      this[_scrollBy_4](options_OR_x, y);
      return;
    }
    if (scrollOptions != null && typeof y == 'number' && typeof options_OR_x == 'number') {
      let scrollOptions_1 = html_common.convertDartToNative_Dictionary(scrollOptions);
      this[_scrollBy_5](options_OR_x, y, scrollOptions_1);
      return;
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  [_scrollBy_1](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollBy_2](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollBy_3](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollBy_4](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollBy_5](...args) {
    return this.scrollBy.apply(this, args);
  }
  [dartx.scrollTo](options_OR_x, y, scrollOptions) {
    if (options_OR_x === void 0) options_OR_x = null;
    if (y === void 0) y = null;
    if (scrollOptions === void 0) scrollOptions = null;
    if (options_OR_x == null && y == null && scrollOptions == null) {
      this[_scrollTo_1]();
      return;
    }
    if (core.Map.is(options_OR_x) && y == null && scrollOptions == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
      this[_scrollTo_2](options_1);
      return;
    }
    if (typeof y == 'number' && typeof options_OR_x == 'number' && scrollOptions == null) {
      this[_scrollTo_3](options_OR_x, y);
      return;
    }
    if (typeof y == 'number' && typeof options_OR_x == 'number' && scrollOptions == null) {
      this[_scrollTo_4](options_OR_x, y);
      return;
    }
    if (scrollOptions != null && typeof y == 'number' && typeof options_OR_x == 'number') {
      let scrollOptions_1 = html_common.convertDartToNative_Dictionary(scrollOptions);
      this[_scrollTo_5](options_OR_x, y, scrollOptions_1);
      return;
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  [_scrollTo_1](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_scrollTo_2](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_scrollTo_3](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_scrollTo_4](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_scrollTo_5](...args) {
    return this.scrollTo.apply(this, args);
  }
  [dartx.stop](...args) {
    return this.stop.apply(this, args);
  }
  [__requestFileSystem](...args) {
    return this.webkitRequestFileSystem.apply(this, args);
  }
  [_requestFileSystem](type, size) {
    let completer = CompleterOfFileSystem().new();
    this[__requestFileSystem](type, size, dart.fn(value => {
      completer.complete(value);
    }, FileSystemTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, FileErrorTovoid()));
    return completer.future;
  }
  [_resolveLocalFileSystemUrl](...args) {
    return this.webkitResolveLocalFileSystemURL.apply(this, args);
  }
  [dartx.resolveLocalFileSystemUrl](url) {
    let completer = CompleterOfEntry().new();
    this[_resolveLocalFileSystemUrl](url, dart.fn(value => {
      completer.complete(value);
    }, EntryTovoid()), dart.fn(error => {
      completer.completeError(error);
    }, FileErrorTovoid()));
    return completer.future;
  }
  [dartx.atob](...args) {
    return this.atob.apply(this, args);
  }
  [dartx.btoa](...args) {
    return this.btoa.apply(this, args);
  }
  [_setInterval_String](...args) {
    return this.setInterval.apply(this, args);
  }
  [_setTimeout_String](...args) {
    return this.setTimeout.apply(this, args);
  }
  [_clearInterval](...args) {
    return this.clearInterval.apply(this, args);
  }
  [_clearTimeout](...args) {
    return this.clearTimeout.apply(this, args);
  }
  [_setInterval](...args) {
    return this.setInterval.apply(this, args);
  }
  [_setTimeout](...args) {
    return this.setTimeout.apply(this, args);
  }
  get [dartx.onContentLoaded]() {
    return html.Window.contentLoadedEvent.forTarget(this);
  }
  get [dartx.onAbort]() {
    return html.Element.abortEvent.forTarget(this);
  }
  get [dartx.onBlur]() {
    return html.Element.blurEvent.forTarget(this);
  }
  get [dartx.onCanPlay]() {
    return html.Element.canPlayEvent.forTarget(this);
  }
  get [dartx.onCanPlayThrough]() {
    return html.Element.canPlayThroughEvent.forTarget(this);
  }
  get [dartx.onChange]() {
    return html.Element.changeEvent.forTarget(this);
  }
  get [dartx.onClick]() {
    return html.Element.clickEvent.forTarget(this);
  }
  get [dartx.onContextMenu]() {
    return html.Element.contextMenuEvent.forTarget(this);
  }
  get [dartx.onDoubleClick]() {
    return html.Element.doubleClickEvent.forTarget(this);
  }
  get [dartx.onDeviceMotion]() {
    return html.Window.deviceMotionEvent.forTarget(this);
  }
  get [dartx.onDeviceOrientation]() {
    return html.Window.deviceOrientationEvent.forTarget(this);
  }
  get [dartx.onDrag]() {
    return html.Element.dragEvent.forTarget(this);
  }
  get [dartx.onDragEnd]() {
    return html.Element.dragEndEvent.forTarget(this);
  }
  get [dartx.onDragEnter]() {
    return html.Element.dragEnterEvent.forTarget(this);
  }
  get [dartx.onDragLeave]() {
    return html.Element.dragLeaveEvent.forTarget(this);
  }
  get [dartx.onDragOver]() {
    return html.Element.dragOverEvent.forTarget(this);
  }
  get [dartx.onDragStart]() {
    return html.Element.dragStartEvent.forTarget(this);
  }
  get [dartx.onDrop]() {
    return html.Element.dropEvent.forTarget(this);
  }
  get [dartx.onDurationChange]() {
    return html.Element.durationChangeEvent.forTarget(this);
  }
  get [dartx.onEmptied]() {
    return html.Element.emptiedEvent.forTarget(this);
  }
  get [dartx.onEnded]() {
    return html.Element.endedEvent.forTarget(this);
  }
  get [dartx.onError]() {
    return html.Element.errorEvent.forTarget(this);
  }
  get [dartx.onFocus]() {
    return html.Element.focusEvent.forTarget(this);
  }
  get [dartx.onHashChange]() {
    return html.Window.hashChangeEvent.forTarget(this);
  }
  get [dartx.onInput]() {
    return html.Element.inputEvent.forTarget(this);
  }
  get [dartx.onInvalid]() {
    return html.Element.invalidEvent.forTarget(this);
  }
  get [dartx.onKeyDown]() {
    return html.Element.keyDownEvent.forTarget(this);
  }
  get [dartx.onKeyPress]() {
    return html.Element.keyPressEvent.forTarget(this);
  }
  get [dartx.onKeyUp]() {
    return html.Element.keyUpEvent.forTarget(this);
  }
  get [dartx.onLoad]() {
    return html.Element.loadEvent.forTarget(this);
  }
  get [dartx.onLoadedData]() {
    return html.Element.loadedDataEvent.forTarget(this);
  }
  get [dartx.onLoadedMetadata]() {
    return html.Element.loadedMetadataEvent.forTarget(this);
  }
  get [dartx.onLoadStart]() {
    return html.Window.loadStartEvent.forTarget(this);
  }
  get [dartx.onMessage]() {
    return html.Window.messageEvent.forTarget(this);
  }
  get [dartx.onMouseDown]() {
    return html.Element.mouseDownEvent.forTarget(this);
  }
  get [dartx.onMouseEnter]() {
    return html.Element.mouseEnterEvent.forTarget(this);
  }
  get [dartx.onMouseLeave]() {
    return html.Element.mouseLeaveEvent.forTarget(this);
  }
  get [dartx.onMouseMove]() {
    return html.Element.mouseMoveEvent.forTarget(this);
  }
  get [dartx.onMouseOut]() {
    return html.Element.mouseOutEvent.forTarget(this);
  }
  get [dartx.onMouseOver]() {
    return html.Element.mouseOverEvent.forTarget(this);
  }
  get [dartx.onMouseUp]() {
    return html.Element.mouseUpEvent.forTarget(this);
  }
  get [dartx.onMouseWheel]() {
    return html.Element.mouseWheelEvent.forTarget(this);
  }
  get [dartx.onOffline]() {
    return html.Window.offlineEvent.forTarget(this);
  }
  get [dartx.onOnline]() {
    return html.Window.onlineEvent.forTarget(this);
  }
  get [dartx.onPageHide]() {
    return html.Window.pageHideEvent.forTarget(this);
  }
  get [dartx.onPageShow]() {
    return html.Window.pageShowEvent.forTarget(this);
  }
  get [dartx.onPause]() {
    return html.Element.pauseEvent.forTarget(this);
  }
  get [dartx.onPlay]() {
    return html.Element.playEvent.forTarget(this);
  }
  get [dartx.onPlaying]() {
    return html.Element.playingEvent.forTarget(this);
  }
  get [dartx.onPopState]() {
    return html.Window.popStateEvent.forTarget(this);
  }
  get [dartx.onProgress]() {
    return html.Window.progressEvent.forTarget(this);
  }
  get [dartx.onRateChange]() {
    return html.Element.rateChangeEvent.forTarget(this);
  }
  get [dartx.onReset]() {
    return html.Element.resetEvent.forTarget(this);
  }
  get [dartx.onResize]() {
    return html.Element.resizeEvent.forTarget(this);
  }
  get [dartx.onScroll]() {
    return html.Element.scrollEvent.forTarget(this);
  }
  get [dartx.onSearch]() {
    return html.Element.searchEvent.forTarget(this);
  }
  get [dartx.onSeeked]() {
    return html.Element.seekedEvent.forTarget(this);
  }
  get [dartx.onSeeking]() {
    return html.Element.seekingEvent.forTarget(this);
  }
  get [dartx.onSelect]() {
    return html.Element.selectEvent.forTarget(this);
  }
  get [dartx.onStalled]() {
    return html.Element.stalledEvent.forTarget(this);
  }
  get [dartx.onStorage]() {
    return html.Window.storageEvent.forTarget(this);
  }
  get [dartx.onSubmit]() {
    return html.Element.submitEvent.forTarget(this);
  }
  get [dartx.onSuspend]() {
    return html.Element.suspendEvent.forTarget(this);
  }
  get [dartx.onTimeUpdate]() {
    return html.Element.timeUpdateEvent.forTarget(this);
  }
  get [dartx.onTouchCancel]() {
    return html.Element.touchCancelEvent.forTarget(this);
  }
  get [dartx.onTouchEnd]() {
    return html.Element.touchEndEvent.forTarget(this);
  }
  get [dartx.onTouchMove]() {
    return html.Element.touchMoveEvent.forTarget(this);
  }
  get [dartx.onTouchStart]() {
    return html.Element.touchStartEvent.forTarget(this);
  }
  get [dartx.onTransitionEnd]() {
    return html.Element.transitionEndEvent.forTarget(this);
  }
  get [dartx.onUnload]() {
    return html.Window.unloadEvent.forTarget(this);
  }
  get [dartx.onVolumeChange]() {
    return html.Element.volumeChangeEvent.forTarget(this);
  }
  get [dartx.onWaiting]() {
    return html.Element.waitingEvent.forTarget(this);
  }
  get [dartx.onAnimationEnd]() {
    return html.Window.animationEndEvent.forTarget(this);
  }
  get [dartx.onAnimationIteration]() {
    return html.Window.animationIterationEvent.forTarget(this);
  }
  get [dartx.onAnimationStart]() {
    return html.Window.animationStartEvent.forTarget(this);
  }
  get [dartx.onBeforeUnload]() {
    return html.Window.beforeUnloadEvent.forTarget(this);
  }
  [dartx.moveTo](p) {
    this[_moveTo](dart.asInt(p.x), dart.asInt(p.y));
  }
  get [dartx.pageXOffset]() {
    return this.pageXOffset[dartx.round]();
  }
  get [dartx.pageYOffset]() {
    return this.pageYOffset[dartx.round]();
  }
  get [dartx.scrollX]() {
    return "scrollX" in this ? this.scrollX[dartx.round]() : this[dartx.document][dartx.documentElement][dartx.scrollLeft];
  }
  get [dartx.scrollY]() {
    return "scrollY" in this ? this.scrollY[dartx.round]() : this[dartx.document][dartx.documentElement][dartx.scrollTop];
  }
};
html.Window[dart.implements] = () => [html.WindowEventHandlers, html.WindowBase, html.GlobalEventHandlers, html._WindowTimers, html.WindowBase64];
dart.setSignature(html.Window, {
  constructors: () => ({_: dart.definiteFunctionType(html.Window, [])}),
  fields: () => ({
    [dartx.applicationCache]: html.ApplicationCache,
    [dartx.caches]: html.CacheStorage,
    [dartx.closed]: core.bool,
    [dartx.crypto]: html.Crypto,
    [dartx.defaultStatus]: core.String,
    [dartx.defaultstatus]: core.String,
    [dartx.devicePixelRatio]: core.double,
    [dartx.history]: html.History,
    [dartx.innerHeight]: core.int,
    [dartx.innerWidth]: core.int,
    [dartx.localStorage]: html.Storage,
    [dartx.locationbar]: html.BarProp,
    [dartx.menubar]: html.BarProp,
    [dartx.name]: core.String,
    [dartx.navigator]: html.Navigator,
    [dartx.offscreenBuffering]: core.bool,
    [_get_opener]: dart.dynamic,
    [dartx.orientation]: core.int,
    [dartx.outerHeight]: core.int,
    [dartx.outerWidth]: core.int,
    [_pageXOffset]: core.double,
    [_pageYOffset]: core.double,
    [_get_parent]: dart.dynamic,
    [dartx.performance]: html.Performance,
    [dartx.screen]: html.Screen,
    [dartx.screenLeft]: core.int,
    [dartx.screenTop]: core.int,
    [dartx.screenX]: core.int,
    [dartx.screenY]: core.int,
    [dartx.scrollbars]: html.BarProp,
    [_get_self]: dart.dynamic,
    [dartx.sessionStorage]: html.Storage,
    [dartx.speechSynthesis]: html.SpeechSynthesis,
    [dartx.status]: core.String,
    [dartx.statusbar]: html.BarProp,
    [dartx.styleMedia]: html.StyleMedia,
    [dartx.toolbar]: html.BarProp,
    [_get_top]: dart.dynamic,
    [_get_window]: dart.dynamic
  }),
  getters: () => ({
    [dartx.animationFrame]: dart.definiteFunctionType(async.Future$(core.num), []),
    [dartx.document]: dart.definiteFunctionType(html.Document, []),
    [dartx.location]: dart.definiteFunctionType(html.Location, []),
    [_location]: dart.definiteFunctionType(dart.dynamic, []),
    [dartx.indexedDB]: dart.definiteFunctionType(indexed_db.IdbFactory, []),
    [dartx.console]: dart.definiteFunctionType(html.Console, []),
    [dartx.opener]: dart.definiteFunctionType(html.WindowBase, []),
    [dartx.parent]: dart.definiteFunctionType(html.WindowBase, []),
    [dartx.self]: dart.definiteFunctionType(html.WindowBase, []),
    [dartx.top]: dart.definiteFunctionType(html.WindowBase, []),
    [dartx.window]: dart.definiteFunctionType(html.WindowBase, []),
    [dartx.onContentLoaded]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onAbort]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onBlur]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onCanPlay]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onCanPlayThrough]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onClick]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onContextMenu]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDoubleClick]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onDeviceMotion]: dart.definiteFunctionType(async.Stream$(html.DeviceMotionEvent), []),
    [dartx.onDeviceOrientation]: dart.definiteFunctionType(async.Stream$(html.DeviceOrientationEvent), []),
    [dartx.onDrag]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDragEnd]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDragEnter]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDragLeave]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDragOver]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDragStart]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDrop]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onDurationChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onEmptied]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onEnded]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onFocus]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onHashChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onInput]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onInvalid]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onKeyDown]: dart.definiteFunctionType(async.Stream$(html.KeyboardEvent), []),
    [dartx.onKeyPress]: dart.definiteFunctionType(async.Stream$(html.KeyboardEvent), []),
    [dartx.onKeyUp]: dart.definiteFunctionType(async.Stream$(html.KeyboardEvent), []),
    [dartx.onLoad]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onLoadedData]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onLoadedMetadata]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onLoadStart]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), []),
    [dartx.onMouseDown]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseEnter]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseLeave]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseMove]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseOut]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseOver]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseUp]: dart.definiteFunctionType(async.Stream$(html.MouseEvent), []),
    [dartx.onMouseWheel]: dart.definiteFunctionType(async.Stream$(html.WheelEvent), []),
    [dartx.onOffline]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onOnline]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onPageHide]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onPageShow]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onPause]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onPlay]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onPlaying]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onPopState]: dart.definiteFunctionType(async.Stream$(html.PopStateEvent), []),
    [dartx.onProgress]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onRateChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onReset]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onResize]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onScroll]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSearch]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSeeked]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSeeking]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSelect]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onStalled]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onStorage]: dart.definiteFunctionType(async.Stream$(html.StorageEvent), []),
    [dartx.onSubmit]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onSuspend]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onTimeUpdate]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onTouchCancel]: dart.definiteFunctionType(async.Stream$(html.TouchEvent), []),
    [dartx.onTouchEnd]: dart.definiteFunctionType(async.Stream$(html.TouchEvent), []),
    [dartx.onTouchMove]: dart.definiteFunctionType(async.Stream$(html.TouchEvent), []),
    [dartx.onTouchStart]: dart.definiteFunctionType(async.Stream$(html.TouchEvent), []),
    [dartx.onTransitionEnd]: dart.definiteFunctionType(async.Stream$(html.TransitionEvent), []),
    [dartx.onUnload]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onVolumeChange]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onWaiting]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onAnimationEnd]: dart.definiteFunctionType(async.Stream$(html.AnimationEvent), []),
    [dartx.onAnimationIteration]: dart.definiteFunctionType(async.Stream$(html.AnimationEvent), []),
    [dartx.onAnimationStart]: dart.definiteFunctionType(async.Stream$(html.AnimationEvent), []),
    [dartx.onBeforeUnload]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.pageXOffset]: dart.definiteFunctionType(core.int, []),
    [dartx.pageYOffset]: dart.definiteFunctionType(core.int, []),
    [dartx.scrollX]: dart.definiteFunctionType(core.int, []),
    [dartx.scrollY]: dart.definiteFunctionType(core.int, [])
  }),
  setters: () => ({
    [dartx.location]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [_location]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [dartx.opener]: dart.definiteFunctionType(dart.void, [html.Window])
  }),
  methods: () => ({
    [_open2]: dart.definiteFunctionType(html.WindowBase, [dart.dynamic, dart.dynamic]),
    [_open3]: dart.definiteFunctionType(html.WindowBase, [dart.dynamic, dart.dynamic, dart.dynamic]),
    [dartx.open]: dart.definiteFunctionType(html.WindowBase, [core.String, core.String], [core.String]),
    [dartx.requestAnimationFrame]: dart.definiteFunctionType(core.int, [html.FrameRequestCallback]),
    [dartx.cancelAnimationFrame]: dart.definiteFunctionType(dart.void, [core.int]),
    [_requestAnimationFrame]: dart.definiteFunctionType(core.int, [html.FrameRequestCallback]),
    [_cancelAnimationFrame]: dart.definiteFunctionType(dart.void, [core.int]),
    [_ensureRequestAnimationFrame]: dart.definiteFunctionType(dart.dynamic, []),
    [dartx.requestFileSystem]: dart.definiteFunctionType(async.Future$(html.FileSystem), [core.int], {persistent: core.bool}),
    [__getter__]: dart.definiteFunctionType(html.WindowBase, [dart.dynamic]),
    [__getter___1]: dart.definiteFunctionType(dart.dynamic, [core.int]),
    [__getter___2]: dart.definiteFunctionType(dart.dynamic, [core.String]),
    [dartx.alert]: dart.definiteFunctionType(dart.void, [], [core.String]),
    [dartx.close]: dart.definiteFunctionType(dart.void, []),
    [dartx.confirm]: dart.definiteFunctionType(core.bool, [], [core.String]),
    [dartx.fetch]: dart.definiteFunctionType(async.Future, [dart.dynamic], [core.Map]),
    [_fetch_1]: dart.definiteFunctionType(async.Future, [dart.dynamic, dart.dynamic]),
    [_fetch_2]: dart.definiteFunctionType(async.Future, [dart.dynamic]),
    [dartx.find]: dart.definiteFunctionType(core.bool, [core.String, core.bool, core.bool, core.bool, core.bool, core.bool, core.bool]),
    [_getComputedStyle]: dart.definiteFunctionType(html.CssStyleDeclaration, [html.Element, core.String]),
    [dartx.getMatchedCssRules]: dart.definiteFunctionType(core.List$(html.CssRule), [html.Element, core.String]),
    [dartx.getSelection]: dart.definiteFunctionType(html.Selection, []),
    [dartx.matchMedia]: dart.definiteFunctionType(html.MediaQueryList, [core.String]),
    [dartx.moveBy]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [_moveTo]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [dartx.openDatabase]: dart.definiteFunctionType(web_sql.SqlDatabase, [core.String, core.String, core.String, core.int], [html.DatabaseCallback]),
    [dartx.postMessage]: dart.definiteFunctionType(dart.void, [dart.dynamic, core.String], [ListOfMessagePort()]),
    [_postMessage_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, ListOfMessagePort()]),
    [_postMessage_2]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic]),
    [dartx.print]: dart.definiteFunctionType(dart.void, []),
    [dartx.resizeBy]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [dartx.resizeTo]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [dartx.scroll]: dart.definiteFunctionType(dart.void, [], [dart.dynamic, dart.dynamic, core.Map]),
    [_scroll_1]: dart.definiteFunctionType(dart.void, []),
    [_scroll_2]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [_scroll_3]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [_scroll_4]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [_scroll_5]: dart.definiteFunctionType(dart.void, [core.int, core.int, dart.dynamic]),
    [dartx.scrollBy]: dart.definiteFunctionType(dart.void, [], [dart.dynamic, dart.dynamic, core.Map]),
    [_scrollBy_1]: dart.definiteFunctionType(dart.void, []),
    [_scrollBy_2]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [_scrollBy_3]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [_scrollBy_4]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [_scrollBy_5]: dart.definiteFunctionType(dart.void, [core.int, core.int, dart.dynamic]),
    [dartx.scrollTo]: dart.definiteFunctionType(dart.void, [], [dart.dynamic, dart.dynamic, core.Map]),
    [_scrollTo_1]: dart.definiteFunctionType(dart.void, []),
    [_scrollTo_2]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [_scrollTo_3]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [_scrollTo_4]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [_scrollTo_5]: dart.definiteFunctionType(dart.void, [core.int, core.int, dart.dynamic]),
    [dartx.stop]: dart.definiteFunctionType(dart.void, []),
    [__requestFileSystem]: dart.definiteFunctionType(dart.void, [core.int, core.int, html._FileSystemCallback], [html._ErrorCallback]),
    [_requestFileSystem]: dart.definiteFunctionType(async.Future$(html.FileSystem), [core.int, core.int]),
    [_resolveLocalFileSystemUrl]: dart.definiteFunctionType(dart.void, [core.String, html._EntryCallback], [html._ErrorCallback]),
    [dartx.resolveLocalFileSystemUrl]: dart.definiteFunctionType(async.Future$(html.Entry), [core.String]),
    [dartx.atob]: dart.definiteFunctionType(core.String, [core.String]),
    [dartx.btoa]: dart.definiteFunctionType(core.String, [core.String]),
    [_setInterval_String]: dart.definiteFunctionType(core.int, [core.String], [core.int, core.Object]),
    [_setTimeout_String]: dart.definiteFunctionType(core.int, [core.String], [core.int, core.Object]),
    [_clearInterval]: dart.definiteFunctionType(dart.void, [], [core.int]),
    [_clearTimeout]: dart.definiteFunctionType(dart.void, [], [core.int]),
    [_setInterval]: dart.definiteFunctionType(core.int, [core.Object], [core.int]),
    [_setTimeout]: dart.definiteFunctionType(core.int, [core.Object], [core.int]),
    [dartx.moveTo]: dart.definiteFunctionType(dart.void, [PointOfnum()])
  }),
  sfields: () => ({
    contentLoadedEvent: EventStreamProviderOfEvent(),
    deviceMotionEvent: EventStreamProviderOfDeviceMotionEvent(),
    deviceOrientationEvent: EventStreamProviderOfDeviceOrientationEvent(),
    hashChangeEvent: EventStreamProviderOfEvent(),
    loadStartEvent: EventStreamProviderOfEvent(),
    messageEvent: EventStreamProviderOfMessageEvent(),
    offlineEvent: EventStreamProviderOfEvent(),
    onlineEvent: EventStreamProviderOfEvent(),
    pageHideEvent: EventStreamProviderOfEvent(),
    pageShowEvent: EventStreamProviderOfEvent(),
    popStateEvent: EventStreamProviderOfPopStateEvent(),
    progressEvent: EventStreamProviderOfEvent(),
    storageEvent: EventStreamProviderOfStorageEvent(),
    unloadEvent: EventStreamProviderOfEvent(),
    animationEndEvent: EventStreamProviderOfAnimationEvent(),
    animationIterationEvent: EventStreamProviderOfAnimationEvent(),
    animationStartEvent: EventStreamProviderOfAnimationEvent(),
    PERSISTENT: core.int,
    TEMPORARY: core.int,
    beforeUnloadEvent: EventStreamProviderOfBeforeUnloadEvent()
  }),
  sgetters: () => ({supportsPointConversions: dart.definiteFunctionType(core.bool, [])})
});
html.Window.PERSISTENT = 1;
html.Window.TEMPORARY = 0;
dart.defineLazy(html.Window, {
  get contentLoadedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('DOMContentLoaded'));
  },
  get deviceMotionEvent() {
    return dart.const(new (EventStreamProviderOfDeviceMotionEvent())('devicemotion'));
  },
  get deviceOrientationEvent() {
    return dart.const(new (EventStreamProviderOfDeviceOrientationEvent())('deviceorientation'));
  },
  get hashChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('hashchange'));
  },
  get loadStartEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('loadstart'));
  },
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  },
  get offlineEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('offline'));
  },
  get onlineEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('online'));
  },
  get pageHideEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('pagehide'));
  },
  get pageShowEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('pageshow'));
  },
  get popStateEvent() {
    return dart.const(new (EventStreamProviderOfPopStateEvent())('popstate'));
  },
  get progressEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('progress'));
  },
  get storageEvent() {
    return dart.const(new (EventStreamProviderOfStorageEvent())('storage'));
  },
  get unloadEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('unload'));
  },
  get animationEndEvent() {
    return dart.const(new (EventStreamProviderOfAnimationEvent())('webkitAnimationEnd'));
  },
  get animationIterationEvent() {
    return dart.const(new (EventStreamProviderOfAnimationEvent())('webkitAnimationIteration'));
  },
  get animationStartEvent() {
    return dart.const(new (EventStreamProviderOfAnimationEvent())('webkitAnimationStart'));
  },
  get beforeUnloadEvent() {
    return dart.const(new html._BeforeUnloadEventStreamProvider('beforeunload'));
  }
});
dart.registerExtension(dart.global.Window, html.Window);
dart.registerExtension(dart.global.DOMWindow, html.Window);
const _returnValue = Symbol('_returnValue');
html._WrappedEvent = class _WrappedEvent extends core.Object {
  new(wrapped) {
    this.wrapped = wrapped;
    this[_selector] = null;
  }
  get bubbles() {
    return this.wrapped[dartx.bubbles];
  }
  get cancelable() {
    return this.wrapped[dartx.cancelable];
  }
  get currentTarget() {
    return this.wrapped[dartx.currentTarget];
  }
  get defaultPrevented() {
    return this.wrapped[dartx.defaultPrevented];
  }
  get eventPhase() {
    return this.wrapped[dartx.eventPhase];
  }
  get target() {
    return this.wrapped[dartx.target];
  }
  get timeStamp() {
    return this.wrapped[dartx.timeStamp];
  }
  get type() {
    return this.wrapped[dartx.type];
  }
  [_initEvent](eventTypeArg, canBubbleArg, cancelableArg) {
    dart.throw(new core.UnsupportedError('Cannot initialize this Event.'));
  }
  preventDefault() {
    this.wrapped[dartx.preventDefault]();
  }
  stopImmediatePropagation() {
    this.wrapped[dartx.stopImmediatePropagation]();
  }
  stopPropagation() {
    this.wrapped[dartx.stopPropagation]();
  }
  get matchingTarget() {
    if (this[_selector] == null) {
      dart.throw(new core.UnsupportedError('Cannot call matchingTarget if this Event did' + ' not arise as a result of event delegation.'));
    }
    let currentTarget = html.Element._check(this.currentTarget);
    let target = html.Element._check(this.target);
    let matchedTarget = null;
    do {
      if (dart.test(target[dartx.matches](this[_selector]))) return target;
      target = target[dartx.parent];
    } while (target != null && !dart.equals(target, currentTarget[dartx.parent]));
    dart.throw(new core.StateError('No selector matched for populating matchedTarget.'));
  }
  get path() {
    return ListOfNode()._check(this.wrapped[dartx.path]);
  }
  get [_get_currentTarget]() {
    return this.wrapped[_get_currentTarget];
  }
  get [_get_target]() {
    return this.wrapped[_get_target];
  }
};
html._WrappedEvent[dart.implements] = () => [html.Event];
dart.setSignature(html._WrappedEvent, {
  constructors: () => ({new: dart.definiteFunctionType(html._WrappedEvent, [html.Event])}),
  fields: () => ({
    wrapped: html.Event,
    [_selector]: core.String
  }),
  getters: () => ({
    bubbles: dart.definiteFunctionType(core.bool, []),
    cancelable: dart.definiteFunctionType(core.bool, []),
    currentTarget: dart.definiteFunctionType(html.EventTarget, []),
    defaultPrevented: dart.definiteFunctionType(core.bool, []),
    eventPhase: dart.definiteFunctionType(core.int, []),
    target: dart.definiteFunctionType(html.EventTarget, []),
    timeStamp: dart.definiteFunctionType(core.int, []),
    type: dart.definiteFunctionType(core.String, []),
    matchingTarget: dart.definiteFunctionType(html.Element, []),
    path: dart.definiteFunctionType(core.List$(html.Node), []),
    [_get_currentTarget]: dart.definiteFunctionType(dart.dynamic, []),
    [_get_target]: dart.definiteFunctionType(dart.dynamic, [])
  }),
  methods: () => ({
    [_initEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool]),
    preventDefault: dart.definiteFunctionType(dart.void, []),
    stopImmediatePropagation: dart.definiteFunctionType(dart.void, []),
    stopPropagation: dart.definiteFunctionType(dart.void, [])
  })
});
html._BeforeUnloadEvent = class _BeforeUnloadEvent extends html._WrappedEvent {
  new(base) {
    this[_returnValue] = null;
    super.new(base);
  }
  get returnValue() {
    return this[_returnValue];
  }
  set returnValue(value) {
    this[_returnValue] = value;
    if ("returnValue" in this.wrapped) {
      this.wrapped.returnValue = value;
    }
  }
};
html._BeforeUnloadEvent[dart.implements] = () => [html.BeforeUnloadEvent];
dart.setSignature(html._BeforeUnloadEvent, {
  constructors: () => ({new: dart.definiteFunctionType(html._BeforeUnloadEvent, [html.Event])}),
  fields: () => ({[_returnValue]: core.String}),
  getters: () => ({returnValue: dart.definiteFunctionType(core.String, [])}),
  setters: () => ({returnValue: dart.definiteFunctionType(dart.void, [core.String])})
});
const _eventType = Symbol('_eventType');
html._BeforeUnloadEventStreamProvider = class _BeforeUnloadEventStreamProvider extends core.Object {
  new(eventType) {
    this[_eventType] = eventType;
  }
  forTarget(e, opts) {
    let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
    let stream = new (_EventStreamOfEvent())(e, this[_eventType], useCapture);
    let controller = StreamControllerOfBeforeUnloadEvent().new({sync: true});
    stream.listen(dart.fn(event => {
      let wrapped = new html._BeforeUnloadEvent(event);
      controller.add(wrapped);
    }, EventTovoid()));
    return controller.stream;
  }
  getEventType(target) {
    return this[_eventType];
  }
  forElement(e, opts) {
    let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
    return new (_ElementEventStreamImplOfBeforeUnloadEvent())(e, this[_eventType], useCapture);
  }
  [_forElementList](e, opts) {
    let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
    return new (_ElementListEventStreamImplOfBeforeUnloadEvent())(e, this[_eventType], useCapture);
  }
};
html._BeforeUnloadEventStreamProvider[dart.implements] = () => [EventStreamProviderOfBeforeUnloadEvent()];
dart.setSignature(html._BeforeUnloadEventStreamProvider, {
  constructors: () => ({new: dart.definiteFunctionType(html._BeforeUnloadEventStreamProvider, [core.String])}),
  fields: () => ({[_eventType]: core.String}),
  methods: () => ({
    forTarget: dart.definiteFunctionType(async.Stream$(html.BeforeUnloadEvent), [html.EventTarget], {useCapture: core.bool}),
    getEventType: dart.definiteFunctionType(core.String, [html.EventTarget]),
    forElement: dart.definiteFunctionType(html.ElementStream$(html.BeforeUnloadEvent), [html.Element], {useCapture: core.bool}),
    [_forElementList]: dart.definiteFunctionType(html.ElementStream$(html.BeforeUnloadEvent), [ElementListOfElement()], {useCapture: core.bool})
  })
});
html.WindowBase64 = class WindowBase64 extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.WindowBase64, {
  constructors: () => ({_: dart.definiteFunctionType(html.WindowBase64, [])})
});
dart.defineExtensionNames([
  'focus',
  'focused',
  'visibilityState'
]);
html.WindowClient = class WindowClient extends html.Client {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.focused]() {
    return this.focused;
  }
  get [dartx.visibilityState]() {
    return this.visibilityState;
  }
  [dartx.focus](...args) {
    return this.focus.apply(this, args);
  }
};
dart.setSignature(html.WindowClient, {
  constructors: () => ({_: dart.definiteFunctionType(html.WindowClient, [])}),
  fields: () => ({
    [dartx.focused]: core.bool,
    [dartx.visibilityState]: core.String
  }),
  methods: () => ({[dartx.focus]: dart.definiteFunctionType(async.Future, [])})
});
dart.registerExtension(dart.global.WindowClient, html.WindowClient);
dart.defineExtensionNames([
  'onHashChange',
  'onMessage',
  'onOffline',
  'onOnline',
  'onPopState',
  'onStorage',
  'onUnload'
]);
html.WindowEventHandlers = class WindowEventHandlers extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get onHashChange() {
    return html.WindowEventHandlers.hashChangeEvent.forTarget(this);
  }
  get onMessage() {
    return html.WindowEventHandlers.messageEvent.forTarget(this);
  }
  get onOffline() {
    return html.WindowEventHandlers.offlineEvent.forTarget(this);
  }
  get onOnline() {
    return html.WindowEventHandlers.onlineEvent.forTarget(this);
  }
  get onPopState() {
    return html.WindowEventHandlers.popStateEvent.forTarget(this);
  }
  get onStorage() {
    return html.WindowEventHandlers.storageEvent.forTarget(this);
  }
  get onUnload() {
    return html.WindowEventHandlers.unloadEvent.forTarget(this);
  }
};
dart.setSignature(html.WindowEventHandlers, {
  constructors: () => ({_: dart.definiteFunctionType(html.WindowEventHandlers, [])}),
  getters: () => ({
    onHashChange: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onMessage: dart.definiteFunctionType(async.Stream$(html.MessageEvent), []),
    onOffline: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onOnline: dart.definiteFunctionType(async.Stream$(html.Event), []),
    onPopState: dart.definiteFunctionType(async.Stream$(html.PopStateEvent), []),
    onStorage: dart.definiteFunctionType(async.Stream$(html.StorageEvent), []),
    onUnload: dart.definiteFunctionType(async.Stream$(html.Event), [])
  }),
  sfields: () => ({
    hashChangeEvent: EventStreamProviderOfEvent(),
    messageEvent: EventStreamProviderOfMessageEvent(),
    offlineEvent: EventStreamProviderOfEvent(),
    onlineEvent: EventStreamProviderOfEvent(),
    popStateEvent: EventStreamProviderOfPopStateEvent(),
    storageEvent: EventStreamProviderOfStorageEvent(),
    unloadEvent: EventStreamProviderOfEvent()
  })
});
dart.defineExtensionMembers(html.WindowEventHandlers, [
  'onHashChange',
  'onMessage',
  'onOffline',
  'onOnline',
  'onPopState',
  'onStorage',
  'onUnload'
]);
dart.defineLazy(html.WindowEventHandlers, {
  get hashChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('hashchange'));
  },
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  },
  get offlineEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('offline'));
  },
  get onlineEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('online'));
  },
  get popStateEvent() {
    return dart.const(new (EventStreamProviderOfPopStateEvent())('popstate'));
  },
  get storageEvent() {
    return dart.const(new (EventStreamProviderOfStorageEvent())('storage'));
  },
  get unloadEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('unload'));
  }
});
dart.defineExtensionNames([
  'postMessage',
  'terminate',
  'onError',
  'onMessage'
]);
html.Worker = class Worker extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(scriptUrl) {
    return html.Worker._create_1(scriptUrl);
  }
  static _create_1(scriptUrl) {
    return new Worker(scriptUrl);
  }
  static get supported() {
    return typeof window.Worker != "undefined";
  }
  [dartx.postMessage](message, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
  [dartx.terminate](...args) {
    return this.terminate.apply(this, args);
  }
  get [dartx.onError]() {
    return html.Worker.errorEvent.forTarget(this);
  }
  get [dartx.onMessage]() {
    return html.Worker.messageEvent.forTarget(this);
  }
};
html.Worker[dart.implements] = () => [html.AbstractWorker];
dart.setSignature(html.Worker, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.Worker, []),
    new: dart.definiteFunctionType(html.Worker, [core.String])
  }),
  getters: () => ({
    [dartx.onError]: dart.definiteFunctionType(async.Stream$(html.Event), []),
    [dartx.onMessage]: dart.definiteFunctionType(async.Stream$(html.MessageEvent), [])
  }),
  methods: () => ({
    [dartx.postMessage]: dart.definiteFunctionType(dart.void, [dart.dynamic], [ListOfMessagePort()]),
    [_postMessage_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, ListOfMessagePort()]),
    [_postMessage_2]: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    [dartx.terminate]: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({
    errorEvent: EventStreamProviderOfEvent(),
    messageEvent: EventStreamProviderOfMessageEvent()
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({_create_1: dart.definiteFunctionType(html.Worker, [dart.dynamic])}),
  names: ['_create_1']
});
dart.defineLazy(html.Worker, {
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent())('message'));
  }
});
dart.registerExtension(dart.global.Worker, html.Worker);
html.WorkerConsole = class WorkerConsole extends html.ConsoleBase {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.WorkerConsole, {
  constructors: () => ({_: dart.definiteFunctionType(html.WorkerConsole, [])})
});
dart.registerExtension(dart.global.WorkerConsole, html.WorkerConsole);
dart.defineExtensionNames([
  'clearMarks',
  'clearMeasures',
  'getEntries',
  'getEntriesByName',
  'getEntriesByType',
  'mark',
  'measure',
  'now',
  'clearResourceTimings',
  'setResourceTimingBufferSize',
  'memory'
]);
html.WorkerPerformance = class WorkerPerformance extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.memory]() {
    return this.memory;
  }
  [dartx.clearMarks](...args) {
    return this.clearMarks.apply(this, args);
  }
  [dartx.clearMeasures](...args) {
    return this.clearMeasures.apply(this, args);
  }
  [dartx.getEntries](...args) {
    return this.getEntries.apply(this, args);
  }
  [dartx.getEntriesByName](...args) {
    return this.getEntriesByName.apply(this, args);
  }
  [dartx.getEntriesByType](...args) {
    return this.getEntriesByType.apply(this, args);
  }
  [dartx.mark](...args) {
    return this.mark.apply(this, args);
  }
  [dartx.measure](...args) {
    return this.measure.apply(this, args);
  }
  [dartx.now](...args) {
    return this.now.apply(this, args);
  }
  [dartx.clearResourceTimings](...args) {
    return this.webkitClearResourceTimings.apply(this, args);
  }
  [dartx.setResourceTimingBufferSize](...args) {
    return this.webkitSetResourceTimingBufferSize.apply(this, args);
  }
};
dart.setSignature(html.WorkerPerformance, {
  constructors: () => ({_: dart.definiteFunctionType(html.WorkerPerformance, [])}),
  fields: () => ({[dartx.memory]: html.MemoryInfo}),
  methods: () => ({
    [dartx.clearMarks]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.clearMeasures]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.getEntries]: dart.definiteFunctionType(core.List$(html.PerformanceEntry), []),
    [dartx.getEntriesByName]: dart.definiteFunctionType(core.List$(html.PerformanceEntry), [core.String, core.String]),
    [dartx.getEntriesByType]: dart.definiteFunctionType(core.List$(html.PerformanceEntry), [core.String]),
    [dartx.mark]: dart.definiteFunctionType(dart.void, [core.String]),
    [dartx.measure]: dart.definiteFunctionType(dart.void, [core.String, core.String, core.String]),
    [dartx.now]: dart.definiteFunctionType(core.double, []),
    [dartx.clearResourceTimings]: dart.definiteFunctionType(dart.void, []),
    [dartx.setResourceTimingBufferSize]: dart.definiteFunctionType(dart.void, [core.int])
  })
});
dart.registerExtension(dart.global.WorkerPerformance, html.WorkerPerformance);
dart.defineExtensionNames([
  'createExpression',
  'createNSResolver',
  'evaluate'
]);
html.XPathEvaluator = class XPathEvaluator extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.XPathEvaluator._create_1();
  }
  static _create_1() {
    return new XPathEvaluator();
  }
  [dartx.createExpression](...args) {
    return this.createExpression.apply(this, args);
  }
  [dartx.createNSResolver](...args) {
    return this.createNSResolver.apply(this, args);
  }
  [dartx.evaluate](...args) {
    return this.evaluate.apply(this, args);
  }
};
dart.setSignature(html.XPathEvaluator, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.XPathEvaluator, []),
    new: dart.definiteFunctionType(html.XPathEvaluator, [])
  }),
  methods: () => ({
    [dartx.createExpression]: dart.definiteFunctionType(html.XPathExpression, [core.String, html.XPathNSResolver]),
    [dartx.createNSResolver]: dart.definiteFunctionType(html.XPathNSResolver, [html.Node]),
    [dartx.evaluate]: dart.definiteFunctionType(html.XPathResult, [core.String, html.Node, html.XPathNSResolver], [core.int, core.Object])
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html.XPathEvaluator, [])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.XPathEvaluator, html.XPathEvaluator);
dart.defineExtensionNames([
  'evaluate'
]);
html.XPathExpression = class XPathExpression extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.evaluate](...args) {
    return this.evaluate.apply(this, args);
  }
};
dart.setSignature(html.XPathExpression, {
  constructors: () => ({_: dart.definiteFunctionType(html.XPathExpression, [])}),
  methods: () => ({[dartx.evaluate]: dart.definiteFunctionType(html.XPathResult, [html.Node], [core.int, core.Object])})
});
dart.registerExtension(dart.global.XPathExpression, html.XPathExpression);
dart.defineExtensionNames([
  'lookupNamespaceUri'
]);
html.XPathNSResolver = class XPathNSResolver extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.lookupNamespaceUri](...args) {
    return this.lookupNamespaceURI.apply(this, args);
  }
};
dart.setSignature(html.XPathNSResolver, {
  constructors: () => ({_: dart.definiteFunctionType(html.XPathNSResolver, [])}),
  methods: () => ({[dartx.lookupNamespaceUri]: dart.definiteFunctionType(core.String, [core.String])})
});
dart.registerExtension(dart.global.XPathNSResolver, html.XPathNSResolver);
dart.defineExtensionNames([
  'iterateNext',
  'snapshotItem',
  'booleanValue',
  'invalidIteratorState',
  'numberValue',
  'resultType',
  'singleNodeValue',
  'snapshotLength',
  'stringValue'
]);
html.XPathResult = class XPathResult extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.booleanValue]() {
    return this.booleanValue;
  }
  get [dartx.invalidIteratorState]() {
    return this.invalidIteratorState;
  }
  get [dartx.numberValue]() {
    return this.numberValue;
  }
  get [dartx.resultType]() {
    return this.resultType;
  }
  get [dartx.singleNodeValue]() {
    return this.singleNodeValue;
  }
  get [dartx.snapshotLength]() {
    return this.snapshotLength;
  }
  get [dartx.stringValue]() {
    return this.stringValue;
  }
  [dartx.iterateNext](...args) {
    return this.iterateNext.apply(this, args);
  }
  [dartx.snapshotItem](...args) {
    return this.snapshotItem.apply(this, args);
  }
};
dart.setSignature(html.XPathResult, {
  constructors: () => ({_: dart.definiteFunctionType(html.XPathResult, [])}),
  fields: () => ({
    [dartx.booleanValue]: core.bool,
    [dartx.invalidIteratorState]: core.bool,
    [dartx.numberValue]: core.double,
    [dartx.resultType]: core.int,
    [dartx.singleNodeValue]: html.Node,
    [dartx.snapshotLength]: core.int,
    [dartx.stringValue]: core.String
  }),
  methods: () => ({
    [dartx.iterateNext]: dart.definiteFunctionType(html.Node, []),
    [dartx.snapshotItem]: dart.definiteFunctionType(html.Node, [core.int])
  }),
  sfields: () => ({
    ANY_TYPE: core.int,
    ANY_UNORDERED_NODE_TYPE: core.int,
    BOOLEAN_TYPE: core.int,
    FIRST_ORDERED_NODE_TYPE: core.int,
    NUMBER_TYPE: core.int,
    ORDERED_NODE_ITERATOR_TYPE: core.int,
    ORDERED_NODE_SNAPSHOT_TYPE: core.int,
    STRING_TYPE: core.int,
    UNORDERED_NODE_ITERATOR_TYPE: core.int,
    UNORDERED_NODE_SNAPSHOT_TYPE: core.int
  })
});
html.XPathResult.ANY_TYPE = 0;
html.XPathResult.ANY_UNORDERED_NODE_TYPE = 8;
html.XPathResult.BOOLEAN_TYPE = 3;
html.XPathResult.FIRST_ORDERED_NODE_TYPE = 9;
html.XPathResult.NUMBER_TYPE = 1;
html.XPathResult.ORDERED_NODE_ITERATOR_TYPE = 5;
html.XPathResult.ORDERED_NODE_SNAPSHOT_TYPE = 7;
html.XPathResult.STRING_TYPE = 2;
html.XPathResult.UNORDERED_NODE_ITERATOR_TYPE = 4;
html.XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE = 6;
dart.registerExtension(dart.global.XPathResult, html.XPathResult);
html.XmlDocument = class XmlDocument extends html.Document {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html.XmlDocument, {
  constructors: () => ({_: dart.definiteFunctionType(html.XmlDocument, [])})
});
dart.registerExtension(dart.global.XMLDocument, html.XmlDocument);
dart.defineExtensionNames([
  'serializeToString'
]);
html.XmlSerializer = class XmlSerializer extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.XmlSerializer._create_1();
  }
  static _create_1() {
    return new XMLSerializer();
  }
  [dartx.serializeToString](...args) {
    return this.serializeToString.apply(this, args);
  }
};
dart.setSignature(html.XmlSerializer, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.XmlSerializer, []),
    new: dart.definiteFunctionType(html.XmlSerializer, [])
  }),
  methods: () => ({[dartx.serializeToString]: dart.definiteFunctionType(core.String, [html.Node])}),
  statics: () => ({_create_1: dart.definiteFunctionType(html.XmlSerializer, [])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.XMLSerializer, html.XmlSerializer);
dart.defineExtensionNames([
  'clearParameters',
  'getParameter',
  'importStylesheet',
  'removeParameter',
  'reset',
  'setParameter',
  'transformToDocument',
  'transformToFragment'
]);
html.XsltProcessor = class XsltProcessor extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html.XsltProcessor._create_1();
  }
  static _create_1() {
    return new XSLTProcessor();
  }
  static get supported() {
    return !!window.XSLTProcessor;
  }
  [dartx.clearParameters](...args) {
    return this.clearParameters.apply(this, args);
  }
  [dartx.getParameter](...args) {
    return this.getParameter.apply(this, args);
  }
  [dartx.importStylesheet](...args) {
    return this.importStylesheet.apply(this, args);
  }
  [dartx.removeParameter](...args) {
    return this.removeParameter.apply(this, args);
  }
  [dartx.reset](...args) {
    return this.reset.apply(this, args);
  }
  [dartx.setParameter](...args) {
    return this.setParameter.apply(this, args);
  }
  [dartx.transformToDocument](...args) {
    return this.transformToDocument.apply(this, args);
  }
  [dartx.transformToFragment](...args) {
    return this.transformToFragment.apply(this, args);
  }
};
dart.setSignature(html.XsltProcessor, {
  constructors: () => ({
    _: dart.definiteFunctionType(html.XsltProcessor, []),
    new: dart.definiteFunctionType(html.XsltProcessor, [])
  }),
  methods: () => ({
    [dartx.clearParameters]: dart.definiteFunctionType(dart.void, []),
    [dartx.getParameter]: dart.definiteFunctionType(core.String, [core.String, core.String]),
    [dartx.importStylesheet]: dart.definiteFunctionType(dart.void, [html.Node]),
    [dartx.removeParameter]: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    [dartx.reset]: dart.definiteFunctionType(dart.void, []),
    [dartx.setParameter]: dart.definiteFunctionType(dart.void, [core.String, core.String, core.String]),
    [dartx.transformToDocument]: dart.definiteFunctionType(html.Document, [html.Node]),
    [dartx.transformToFragment]: dart.definiteFunctionType(html.DocumentFragment, [html.Node, html.Document])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({_create_1: dart.definiteFunctionType(html.XsltProcessor, [])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.XSLTProcessor, html.XsltProcessor);
dart.defineExtensionNames([
  'name',
  'value'
]);
html._Attr = class _Attr extends html.Node {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
};
dart.setSignature(html._Attr, {
  constructors: () => ({_: dart.definiteFunctionType(html._Attr, [])}),
  fields: () => ({
    [dartx.name]: core.String,
    [dartx.value]: core.String
  })
});
dart.registerExtension(dart.global.Attr, html._Attr);
html._Cache = class _Cache extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html._Cache, {
  constructors: () => ({_: dart.definiteFunctionType(html._Cache, [])})
});
dart.registerExtension(dart.global.Cache, html._Cache);
html._CanvasPathMethods = class _CanvasPathMethods extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html._CanvasPathMethods, {
  constructors: () => ({_: dart.definiteFunctionType(html._CanvasPathMethods, [])})
});
dart.defineExtensionNames([
  'toString',
  '==',
  'hashCode',
  'intersection',
  'intersects',
  'boundingBox',
  'containsRectangle',
  'containsPoint',
  'topLeft',
  'topRight',
  'bottomRight',
  'bottomLeft',
  'bottom',
  'height',
  'left',
  'right',
  'top',
  'width'
]);
html._ClientRect = class _ClientRect extends _interceptors.Interceptor {
  [dartx.toString]() {
    return dart.str`Rectangle (${this[dartx.left]}, ${this[dartx.top]}) ${this[dartx.width]} x ${this[dartx.height]}`;
  }
  [dartx['==']](other) {
    if (!RectangleOfnum().is(other)) return false;
    return dart.equals(this[dartx.left], dart.dload(other, 'left')) && dart.equals(this[dartx.top], dart.dload(other, 'top')) && dart.equals(this[dartx.width], dart.dload(other, 'width')) && dart.equals(this[dartx.height], dart.dload(other, 'height'));
  }
  get [dartx.hashCode]() {
    return html._JenkinsSmiHash.hash4(dart.hashCode(this[dartx.left]), dart.hashCode(this[dartx.top]), dart.hashCode(this[dartx.width]), dart.hashCode(this[dartx.height]));
  }
  [dartx.intersection](other) {
    let x0 = math.max(core.num)(this[dartx.left], other[dartx.left]);
    let x1 = math.min(core.num)(dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]), dart.notNull(other[dartx.left]) + dart.notNull(other[dartx.width]));
    if (dart.notNull(x0) <= dart.notNull(x1)) {
      let y0 = math.max(core.num)(this[dartx.top], other[dartx.top]);
      let y1 = math.min(core.num)(dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]), dart.notNull(other[dartx.top]) + dart.notNull(other[dartx.height]));
      if (dart.notNull(y0) <= dart.notNull(y1)) {
        return new (RectangleOfnum())(x0, y0, dart.notNull(x1) - dart.notNull(x0), dart.notNull(y1) - dart.notNull(y0));
      }
    }
    return null;
  }
  [dartx.intersects](other) {
    return dart.notNull(this[dartx.left]) <= dart.notNull(other[dartx.left]) + dart.notNull(other[dartx.width]) && dart.notNull(other[dartx.left]) <= dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]) && dart.notNull(this[dartx.top]) <= dart.notNull(other[dartx.top]) + dart.notNull(other[dartx.height]) && dart.notNull(other[dartx.top]) <= dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]);
  }
  [dartx.boundingBox](other) {
    let right = math.max(core.num)(dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]), dart.notNull(other[dartx.left]) + dart.notNull(other[dartx.width]));
    let bottom = math.max(core.num)(dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]), dart.notNull(other[dartx.top]) + dart.notNull(other[dartx.height]));
    let left = math.min(core.num)(this[dartx.left], other[dartx.left]);
    let top = math.min(core.num)(this[dartx.top], other[dartx.top]);
    return new (RectangleOfnum())(left, top, dart.notNull(right) - dart.notNull(left), dart.notNull(bottom) - dart.notNull(top));
  }
  [dartx.containsRectangle](another) {
    return dart.notNull(this[dartx.left]) <= dart.notNull(another[dartx.left]) && dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]) >= dart.notNull(another[dartx.left]) + dart.notNull(another[dartx.width]) && dart.notNull(this[dartx.top]) <= dart.notNull(another[dartx.top]) && dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]) >= dart.notNull(another[dartx.top]) + dart.notNull(another[dartx.height]);
  }
  [dartx.containsPoint](another) {
    return dart.notNull(another.x) >= dart.notNull(this[dartx.left]) && dart.notNull(another.x) <= dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]) && dart.notNull(another.y) >= dart.notNull(this[dartx.top]) && dart.notNull(another.y) <= dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]);
  }
  get [dartx.topLeft]() {
    return new (PointOfnum())(this[dartx.left], this[dartx.top]);
  }
  get [dartx.topRight]() {
    return new (PointOfnum())(dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]), this[dartx.top]);
  }
  get [dartx.bottomRight]() {
    return new (PointOfnum())(dart.notNull(this[dartx.left]) + dart.notNull(this[dartx.width]), dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]));
  }
  get [dartx.bottomLeft]() {
    return new (PointOfnum())(this[dartx.left], dart.notNull(this[dartx.top]) + dart.notNull(this[dartx.height]));
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.bottom]() {
    return this.bottom;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.left]() {
    return this.left;
  }
  get [dartx.right]() {
    return this.right;
  }
  get [dartx.top]() {
    return this.top;
  }
  get [dartx.width]() {
    return this.width;
  }
};
html._ClientRect[dart.implements] = () => [RectangleOfnum()];
dart.setSignature(html._ClientRect, {
  constructors: () => ({_: dart.definiteFunctionType(html._ClientRect, [])}),
  fields: () => ({
    [dartx.bottom]: core.double,
    [dartx.height]: core.double,
    [dartx.left]: core.double,
    [dartx.right]: core.double,
    [dartx.top]: core.double,
    [dartx.width]: core.double
  }),
  getters: () => ({
    [dartx.topLeft]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.topRight]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.bottomRight]: dart.definiteFunctionType(math.Point$(core.num), []),
    [dartx.bottomLeft]: dart.definiteFunctionType(math.Point$(core.num), [])
  }),
  methods: () => ({
    [dartx.intersection]: dart.definiteFunctionType(math.Rectangle$(core.num), [RectangleOfnum()]),
    [dartx.intersects]: dart.definiteFunctionType(core.bool, [RectangleOfnum()]),
    [dartx.boundingBox]: dart.definiteFunctionType(math.Rectangle$(core.num), [RectangleOfnum()]),
    [dartx.containsRectangle]: dart.definiteFunctionType(core.bool, [RectangleOfnum()]),
    [dartx.containsPoint]: dart.definiteFunctionType(core.bool, [PointOfnum()])
  })
});
dart.registerExtension(dart.global.ClientRect, html._ClientRect);
html._JenkinsSmiHash = class _JenkinsSmiHash extends core.Object {
  static combine(hash, value) {
    hash = 536870911 & dart.notNull(hash) + dart.notNull(value);
    hash = 536870911 & dart.notNull(hash) + ((524287 & dart.notNull(hash)) << 10);
    return (dart.notNull(hash) ^ hash[dartx['>>']](6)) >>> 0;
  }
  static finish(hash) {
    hash = 536870911 & dart.notNull(hash) + ((67108863 & dart.notNull(hash)) << 3);
    hash = (dart.notNull(hash) ^ hash[dartx['>>']](11)) >>> 0;
    return 536870911 & dart.notNull(hash) + ((16383 & dart.notNull(hash)) << 15);
  }
  static hash2(a, b) {
    return html._JenkinsSmiHash.finish(html._JenkinsSmiHash.combine(html._JenkinsSmiHash.combine(0, core.int._check(a)), core.int._check(b)));
  }
  static hash4(a, b, c, d) {
    return html._JenkinsSmiHash.finish(html._JenkinsSmiHash.combine(html._JenkinsSmiHash.combine(html._JenkinsSmiHash.combine(html._JenkinsSmiHash.combine(0, core.int._check(a)), core.int._check(b)), core.int._check(c)), core.int._check(d)));
  }
};
dart.setSignature(html._JenkinsSmiHash, {
  statics: () => ({
    combine: dart.definiteFunctionType(core.int, [core.int, core.int]),
    finish: dart.definiteFunctionType(core.int, [core.int]),
    hash2: dart.definiteFunctionType(core.int, [dart.dynamic, dart.dynamic]),
    hash4: dart.definiteFunctionType(core.int, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])
  }),
  names: ['combine', 'finish', 'hash2', 'hash4']
});
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item'
]);
html._ClientRectList = class _ClientRectList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(math.Rectangle$(core.num)), html.ImmutableListMixin$(math.Rectangle$(core.num))) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[dartx.item](index);
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
html._ClientRectList[dart.implements] = () => [ListOfRectangleOfnum()];
dart.setSignature(html._ClientRectList, {
  constructors: () => ({_: dart.definiteFunctionType(html._ClientRectList, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(math.Rectangle$(core.num), []),
    [dartx.last]: dart.definiteFunctionType(math.Rectangle$(core.num), []),
    [dartx.single]: dart.definiteFunctionType(math.Rectangle$(core.num), [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(math.Rectangle$(core.num), [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, RectangleOfnum()]),
    [dartx.elementAt]: dart.definiteFunctionType(math.Rectangle$(core.num), [core.int]),
    [__getter__]: dart.definiteFunctionType(math.Rectangle$(core.num), [core.int]),
    [dartx.item]: dart.definiteFunctionType(math.Rectangle$(core.num), [core.int])
  })
});
dart.registerExtension(dart.global.ClientRectList, html._ClientRectList);
dart.registerExtension(dart.global.DOMRectList, html._ClientRectList);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item'
]);
html._CssRuleList = class _CssRuleList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.CssRule), html.ImmutableListMixin$(html.CssRule)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
html._CssRuleList[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfCssRule()];
dart.setSignature(html._CssRuleList, {
  constructors: () => ({_: dart.definiteFunctionType(html._CssRuleList, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.CssRule, []),
    [dartx.last]: dart.definiteFunctionType(html.CssRule, []),
    [dartx.single]: dart.definiteFunctionType(html.CssRule, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.CssRule, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.CssRule]),
    [dartx.elementAt]: dart.definiteFunctionType(html.CssRule, [core.int]),
    [dartx.item]: dart.definiteFunctionType(html.CssRule, [core.int])
  })
});
dart.registerExtension(dart.global.CSSRuleList, html._CssRuleList);
html._DOMFileSystemSync = class _DOMFileSystemSync extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html._DOMFileSystemSync, {
  constructors: () => ({_: dart.definiteFunctionType(html._DOMFileSystemSync, [])})
});
dart.registerExtension(dart.global.DOMFileSystemSync, html._DOMFileSystemSync);
html._EntrySync = class _EntrySync extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html._EntrySync, {
  constructors: () => ({_: dart.definiteFunctionType(html._EntrySync, [])})
});
dart.registerExtension(dart.global.EntrySync, html._EntrySync);
html._DirectoryEntrySync = class _DirectoryEntrySync extends html._EntrySync {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html._DirectoryEntrySync, {
  constructors: () => ({_: dart.definiteFunctionType(html._DirectoryEntrySync, [])})
});
dart.registerExtension(dart.global.DirectoryEntrySync, html._DirectoryEntrySync);
html._DirectoryReaderSync = class _DirectoryReaderSync extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html._DirectoryReaderSync, {
  constructors: () => ({_: dart.definiteFunctionType(html._DirectoryReaderSync, [])})
});
dart.registerExtension(dart.global.DirectoryReaderSync, html._DirectoryReaderSync);
html._DocumentType = class _DocumentType extends html.Node {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
html._DocumentType[dart.implements] = () => [html.ChildNode];
dart.setSignature(html._DocumentType, {
  constructors: () => ({_: dart.definiteFunctionType(html._DocumentType, [])})
});
dart.registerExtension(dart.global.DocumentType, html._DocumentType);
dart.defineExtensionNames([
  'height',
  'height',
  'width',
  'width',
  'x',
  'x',
  'y',
  'y'
]);
html._DomRect = class _DomRect extends html.DomRectReadOnly {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(x, y, width, height) {
    if (x === void 0) x = null;
    if (y === void 0) y = null;
    if (width === void 0) width = null;
    if (height === void 0) height = null;
    if (height != null) {
      return html._DomRect._create_1(x, y, width, height);
    }
    if (width != null) {
      return html._DomRect._create_2(x, y, width);
    }
    if (y != null) {
      return html._DomRect._create_3(x, y);
    }
    if (x != null) {
      return html._DomRect._create_4(x);
    }
    return html._DomRect._create_5();
  }
  static _create_1(x, y, width, height) {
    return new DOMRect(x, y, width, height);
  }
  static _create_2(x, y, width) {
    return new DOMRect(x, y, width);
  }
  static _create_3(x, y) {
    return new DOMRect(x, y);
  }
  static _create_4(x) {
    return new DOMRect(x);
  }
  static _create_5() {
    return new DOMRect();
  }
  get [dartx.height]() {
    return this.height;
  }
  set [dartx.height](value) {
    this.height = value;
  }
  get [dartx.width]() {
    return this.width;
  }
  set [dartx.width](value) {
    this.width = value;
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
};
dart.setSignature(html._DomRect, {
  constructors: () => ({
    _: dart.definiteFunctionType(html._DomRect, []),
    new: dart.definiteFunctionType(html._DomRect, [], [core.num, core.num, core.num, core.num])
  }),
  setters: () => ({
    [dartx.height]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.width]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.x]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.y]: dart.definiteFunctionType(dart.void, [core.num])
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html._DomRect, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html._DomRect, [dart.dynamic, dart.dynamic, dart.dynamic]),
    _create_3: dart.definiteFunctionType(html._DomRect, [dart.dynamic, dart.dynamic]),
    _create_4: dart.definiteFunctionType(html._DomRect, [dart.dynamic]),
    _create_5: dart.definiteFunctionType(html._DomRect, [])
  }),
  names: ['_create_1', '_create_2', '_create_3', '_create_4', '_create_5']
});
dart.registerExtension(dart.global.DOMRect, html._DomRect);
html._FileEntrySync = class _FileEntrySync extends html._EntrySync {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html._FileEntrySync, {
  constructors: () => ({_: dart.definiteFunctionType(html._FileEntrySync, [])})
});
dart.registerExtension(dart.global.FileEntrySync, html._FileEntrySync);
html._FileReaderSync = class _FileReaderSync extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return html._FileReaderSync._create_1();
  }
  static _create_1() {
    return new FileReaderSync();
  }
};
dart.setSignature(html._FileReaderSync, {
  constructors: () => ({
    _: dart.definiteFunctionType(html._FileReaderSync, []),
    new: dart.definiteFunctionType(html._FileReaderSync, [])
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(html._FileReaderSync, [])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.FileReaderSync, html._FileReaderSync);
html._FileWriterSync = class _FileWriterSync extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html._FileWriterSync, {
  constructors: () => ({_: dart.definiteFunctionType(html._FileWriterSync, [])})
});
dart.registerExtension(dart.global.FileWriterSync, html._FileWriterSync);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item'
]);
html._GamepadList = class _GamepadList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.Gamepad), html.ImmutableListMixin$(html.Gamepad)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
html._GamepadList[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfGamepad()];
dart.setSignature(html._GamepadList, {
  constructors: () => ({_: dart.definiteFunctionType(html._GamepadList, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.Gamepad, []),
    [dartx.last]: dart.definiteFunctionType(html.Gamepad, []),
    [dartx.single]: dart.definiteFunctionType(html.Gamepad, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.Gamepad, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.Gamepad]),
    [dartx.elementAt]: dart.definiteFunctionType(html.Gamepad, [core.int]),
    [dartx.item]: dart.definiteFunctionType(html.Gamepad, [core.int])
  })
});
dart.registerExtension(dart.global.GamepadList, html._GamepadList);
html._HTMLAllCollection = class _HTMLAllCollection extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [_item](...args) {
    return this.item.apply(this, args);
  }
};
dart.setSignature(html._HTMLAllCollection, {
  constructors: () => ({_: dart.definiteFunctionType(html._HTMLAllCollection, [])}),
  methods: () => ({[_item]: dart.definiteFunctionType(html.Element, [core.int])})
});
dart.registerExtension(dart.global.HTMLAllCollection, html._HTMLAllCollection);
html._HTMLAppletElement = class _HTMLAppletElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html._HTMLAppletElement, 'created');
dart.setSignature(html._HTMLAppletElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html._HTMLAppletElement, []),
    created: dart.definiteFunctionType(html._HTMLAppletElement, [])
  })
});
dart.registerExtension(dart.global.HTMLAppletElement, html._HTMLAppletElement);
html._HTMLDirectoryElement = class _HTMLDirectoryElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html._HTMLDirectoryElement, 'created');
dart.setSignature(html._HTMLDirectoryElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html._HTMLDirectoryElement, []),
    created: dart.definiteFunctionType(html._HTMLDirectoryElement, [])
  })
});
dart.registerExtension(dart.global.HTMLDirectoryElement, html._HTMLDirectoryElement);
html._HTMLFontElement = class _HTMLFontElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html._HTMLFontElement, 'created');
dart.setSignature(html._HTMLFontElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html._HTMLFontElement, []),
    created: dart.definiteFunctionType(html._HTMLFontElement, [])
  })
});
dart.registerExtension(dart.global.HTMLFontElement, html._HTMLFontElement);
html._HTMLFrameElement = class _HTMLFrameElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html._HTMLFrameElement, 'created');
dart.setSignature(html._HTMLFrameElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html._HTMLFrameElement, []),
    created: dart.definiteFunctionType(html._HTMLFrameElement, [])
  })
});
dart.registerExtension(dart.global.HTMLFrameElement, html._HTMLFrameElement);
html._HTMLFrameSetElement = class _HTMLFrameSetElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html._HTMLFrameSetElement, 'created');
html._HTMLFrameSetElement[dart.implements] = () => [html.WindowEventHandlers];
dart.setSignature(html._HTMLFrameSetElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html._HTMLFrameSetElement, []),
    created: dart.definiteFunctionType(html._HTMLFrameSetElement, [])
  })
});
dart.registerExtension(dart.global.HTMLFrameSetElement, html._HTMLFrameSetElement);
html._HTMLMarqueeElement = class _HTMLMarqueeElement extends html.HtmlElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(html._HTMLMarqueeElement, 'created');
dart.setSignature(html._HTMLMarqueeElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(html._HTMLMarqueeElement, []),
    created: dart.definiteFunctionType(html._HTMLMarqueeElement, [])
  })
});
dart.registerExtension(dart.global.HTMLMarqueeElement, html._HTMLMarqueeElement);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'getNamedItem',
  'getNamedItemNS',
  'item',
  'removeNamedItem',
  'removeNamedItemNS',
  'setNamedItem',
  'setNamedItemNS'
]);
html._NamedNodeMap = class _NamedNodeMap extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.Node), html.ImmutableListMixin$(html.Node)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.getNamedItem](...args) {
    return this.getNamedItem.apply(this, args);
  }
  [dartx.getNamedItemNS](...args) {
    return this.getNamedItemNS.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
  [dartx.removeNamedItem](...args) {
    return this.removeNamedItem.apply(this, args);
  }
  [dartx.removeNamedItemNS](...args) {
    return this.removeNamedItemNS.apply(this, args);
  }
  [dartx.setNamedItem](...args) {
    return this.setNamedItem.apply(this, args);
  }
  [dartx.setNamedItemNS](...args) {
    return this.setNamedItemNS.apply(this, args);
  }
};
html._NamedNodeMap[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfNode()];
dart.setSignature(html._NamedNodeMap, {
  constructors: () => ({_: dart.definiteFunctionType(html._NamedNodeMap, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.Node, []),
    [dartx.last]: dart.definiteFunctionType(html.Node, []),
    [dartx.single]: dart.definiteFunctionType(html.Node, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.Node, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.Node]),
    [dartx.elementAt]: dart.definiteFunctionType(html.Node, [core.int]),
    [dartx.getNamedItem]: dart.definiteFunctionType(html._Attr, [core.String]),
    [dartx.getNamedItemNS]: dart.definiteFunctionType(html._Attr, [core.String, core.String]),
    [dartx.item]: dart.definiteFunctionType(html._Attr, [core.int]),
    [dartx.removeNamedItem]: dart.definiteFunctionType(html._Attr, [core.String]),
    [dartx.removeNamedItemNS]: dart.definiteFunctionType(html._Attr, [core.String, core.String]),
    [dartx.setNamedItem]: dart.definiteFunctionType(html._Attr, [html._Attr]),
    [dartx.setNamedItemNS]: dart.definiteFunctionType(html._Attr, [html._Attr])
  })
});
dart.registerExtension(dart.global.NamedNodeMap, html._NamedNodeMap);
dart.registerExtension(dart.global.MozNamedAttrMap, html._NamedNodeMap);
html._PagePopupController = class _PagePopupController extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html._PagePopupController, {
  constructors: () => ({_: dart.definiteFunctionType(html._PagePopupController, [])})
});
dart.registerExtension(dart.global.PagePopupController, html._PagePopupController);
dart.defineExtensionNames([
  'clone',
  'context',
  'credentials',
  'headers',
  'mode',
  'referrer',
  'url'
]);
html._Request = class _Request extends html.Body {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(input, requestInitDict) {
    if (requestInitDict === void 0) requestInitDict = null;
    if (requestInitDict != null) {
      let requestInitDict_1 = html_common.convertDartToNative_Dictionary(requestInitDict);
      return html._Request._create_1(input, requestInitDict_1);
    }
    return html._Request._create_2(input);
  }
  static _create_1(input, requestInitDict) {
    return new Request(input, requestInitDict);
  }
  static _create_2(input) {
    return new Request(input);
  }
  get [dartx.context]() {
    return this.context;
  }
  get [dartx.credentials]() {
    return this.credentials;
  }
  get [dartx.headers]() {
    return this.headers;
  }
  get [dartx.mode]() {
    return this.mode;
  }
  get [dartx.referrer]() {
    return this.referrer;
  }
  get [dartx.url]() {
    return this.url;
  }
  [dartx.clone](...args) {
    return this.clone.apply(this, args);
  }
};
dart.setSignature(html._Request, {
  constructors: () => ({
    _: dart.definiteFunctionType(html._Request, []),
    new: dart.definiteFunctionType(html._Request, [core.Object], [core.Map])
  }),
  fields: () => ({
    [dartx.context]: core.String,
    [dartx.credentials]: core.String,
    [dartx.headers]: html.Headers,
    [dartx.mode]: core.String,
    [dartx.referrer]: core.String,
    [dartx.url]: core.String
  }),
  methods: () => ({[dartx.clone]: dart.definiteFunctionType(html._Request, [])}),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html._Request, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html._Request, [dart.dynamic])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.Request, html._Request);
html._Response = class _Response extends html.Body {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(body, responseInitDict) {
    if (body === void 0) body = null;
    if (responseInitDict === void 0) responseInitDict = null;
    if (responseInitDict != null) {
      let responseInitDict_1 = html_common.convertDartToNative_Dictionary(responseInitDict);
      return html._Response._create_1(body, responseInitDict_1);
    }
    if (body != null) {
      return html._Response._create_2(body);
    }
    return html._Response._create_3();
  }
  static _create_1(body, responseInitDict) {
    return new Response(body, responseInitDict);
  }
  static _create_2(body) {
    return new Response(body);
  }
  static _create_3() {
    return new Response();
  }
};
dart.setSignature(html._Response, {
  constructors: () => ({
    _: dart.definiteFunctionType(html._Response, []),
    new: dart.definiteFunctionType(html._Response, [], [core.Object, core.Map])
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html._Response, [dart.dynamic, dart.dynamic]),
    _create_2: dart.definiteFunctionType(html._Response, [dart.dynamic]),
    _create_3: dart.definiteFunctionType(html._Response, [])
  }),
  names: ['_create_1', '_create_2', '_create_3']
});
dart.registerExtension(dart.global.Response, html._Response);
html._ServiceWorker = class _ServiceWorker extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
html._ServiceWorker[dart.implements] = () => [html.AbstractWorker];
dart.setSignature(html._ServiceWorker, {
  constructors: () => ({_: dart.definiteFunctionType(html._ServiceWorker, [])})
});
dart.registerExtension(dart.global.ServiceWorker, html._ServiceWorker);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item'
]);
html._SpeechRecognitionResultList = class _SpeechRecognitionResultList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.SpeechRecognitionResult), html.ImmutableListMixin$(html.SpeechRecognitionResult)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
html._SpeechRecognitionResultList[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfSpeechRecognitionResult()];
dart.setSignature(html._SpeechRecognitionResultList, {
  constructors: () => ({_: dart.definiteFunctionType(html._SpeechRecognitionResultList, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.SpeechRecognitionResult, []),
    [dartx.last]: dart.definiteFunctionType(html.SpeechRecognitionResult, []),
    [dartx.single]: dart.definiteFunctionType(html.SpeechRecognitionResult, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.SpeechRecognitionResult, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.SpeechRecognitionResult]),
    [dartx.elementAt]: dart.definiteFunctionType(html.SpeechRecognitionResult, [core.int]),
    [dartx.item]: dart.definiteFunctionType(html.SpeechRecognitionResult, [core.int])
  })
});
dart.registerExtension(dart.global.SpeechRecognitionResultList, html._SpeechRecognitionResultList);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item'
]);
html._StyleSheetList = class _StyleSheetList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(html.StyleSheet), html.ImmutableListMixin$(html.StyleSheet)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [dartx.item](...args) {
    return this.item.apply(this, args);
  }
};
html._StyleSheetList[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior, ListOfStyleSheet()];
dart.setSignature(html._StyleSheetList, {
  constructors: () => ({_: dart.definiteFunctionType(html._StyleSheetList, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(html.StyleSheet, []),
    [dartx.last]: dart.definiteFunctionType(html.StyleSheet, []),
    [dartx.single]: dart.definiteFunctionType(html.StyleSheet, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(html.StyleSheet, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, html.StyleSheet]),
    [dartx.elementAt]: dart.definiteFunctionType(html.StyleSheet, [core.int]),
    [__getter__]: dart.definiteFunctionType(html.CssStyleSheet, [core.String]),
    [dartx.item]: dart.definiteFunctionType(html.StyleSheet, [core.int])
  })
});
dart.registerExtension(dart.global.StyleSheetList, html._StyleSheetList);
html._SubtleCrypto = class _SubtleCrypto extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html._SubtleCrypto, {
  constructors: () => ({_: dart.definiteFunctionType(html._SubtleCrypto, [])})
});
dart.registerExtension(dart.global.SubtleCrypto, html._SubtleCrypto);
html._WebKitCSSMatrix = class _WebKitCSSMatrix extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(cssValue) {
    if (cssValue === void 0) cssValue = null;
    if (cssValue != null) {
      return html._WebKitCSSMatrix._create_1(cssValue);
    }
    return html._WebKitCSSMatrix._create_2();
  }
  static _create_1(cssValue) {
    return new WebKitCSSMatrix(cssValue);
  }
  static _create_2() {
    return new WebKitCSSMatrix();
  }
};
dart.setSignature(html._WebKitCSSMatrix, {
  constructors: () => ({
    _: dart.definiteFunctionType(html._WebKitCSSMatrix, []),
    new: dart.definiteFunctionType(html._WebKitCSSMatrix, [], [core.String])
  }),
  statics: () => ({
    _create_1: dart.definiteFunctionType(html._WebKitCSSMatrix, [dart.dynamic]),
    _create_2: dart.definiteFunctionType(html._WebKitCSSMatrix, [])
  }),
  names: ['_create_1', '_create_2']
});
dart.registerExtension(dart.global.WebKitCSSMatrix, html._WebKitCSSMatrix);
html._WindowTimers = class _WindowTimers extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html._WindowTimers, {
  constructors: () => ({_: dart.definiteFunctionType(html._WindowTimers, [])})
});
html._WorkerLocation = class _WorkerLocation extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
html._WorkerLocation[dart.implements] = () => [html.UrlUtilsReadOnly];
dart.setSignature(html._WorkerLocation, {
  constructors: () => ({_: dart.definiteFunctionType(html._WorkerLocation, [])})
});
dart.registerExtension(dart.global.WorkerLocation, html._WorkerLocation);
html._WorkerNavigator = class _WorkerNavigator extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
html._WorkerNavigator[dart.implements] = () => [html.NavigatorCpu, html.NavigatorOnLine, html.NavigatorID];
dart.setSignature(html._WorkerNavigator, {
  constructors: () => ({_: dart.definiteFunctionType(html._WorkerNavigator, [])})
});
dart.registerExtension(dart.global.WorkerNavigator, html._WorkerNavigator);
html._XMLHttpRequestProgressEvent = class _XMLHttpRequestProgressEvent extends html.ProgressEvent {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(html._XMLHttpRequestProgressEvent, {
  constructors: () => ({_: dart.definiteFunctionType(html._XMLHttpRequestProgressEvent, [])})
});
dart.registerExtension(dart.global.XMLHttpRequestProgressEvent, html._XMLHttpRequestProgressEvent);
const _matches = Symbol('_matches');
html._AttributeMap = class _AttributeMap extends core.Object {
  new(element) {
    this[_element] = element;
  }
  addAll(other) {
    other[dartx.forEach](dart.fn((k, v) => {
      this._set(k, v);
    }, StringAndStringTovoid()));
  }
  containsValue(value) {
    for (let v of this.values) {
      if (dart.equals(value, v)) {
        return true;
      }
    }
    return false;
  }
  putIfAbsent(key, ifAbsent) {
    if (!dart.test(this[dartx.containsKey](key))) {
      this._set(key, ifAbsent());
    }
    return this._get(key);
  }
  clear() {
    for (let key of this.keys) {
      this[dartx.remove](key);
    }
  }
  forEach(f) {
    for (let key of this.keys) {
      let value = this._get(key);
      f(key, value);
    }
  }
  get keys() {
    let attributes = this[_element][_attributes];
    let keys = JSArrayOfString().of([]);
    for (let i = 0, len = attributes[dartx.length]; i < dart.notNull(len); i++) {
      let attr = html._Attr._check(attributes[dartx._get](i));
      if (dart.test(this[_matches](attr))) {
        keys[dartx.add](attr[dartx.name]);
      }
    }
    return keys;
  }
  get values() {
    let attributes = this[_element][_attributes];
    let values = JSArrayOfString().of([]);
    for (let i = 0, len = attributes[dartx.length]; i < dart.notNull(len); i++) {
      let attr = html._Attr._check(attributes[dartx._get](i));
      if (dart.test(this[_matches](attr))) {
        values[dartx.add](attr[dartx.value]);
      }
    }
    return values;
  }
  get isEmpty() {
    return this[dartx.length] == 0;
  }
  get isNotEmpty() {
    return !dart.test(this.isEmpty);
  }
};
html._AttributeMap[dart.implements] = () => [MapOfString$String()];
dart.setSignature(html._AttributeMap, {
  constructors: () => ({new: dart.definiteFunctionType(html._AttributeMap, [html.Element])}),
  fields: () => ({[_element]: html.Element}),
  getters: () => ({
    keys: dart.definiteFunctionType(core.Iterable$(core.String), []),
    values: dart.definiteFunctionType(core.Iterable$(core.String), []),
    isEmpty: dart.definiteFunctionType(core.bool, []),
    isNotEmpty: dart.definiteFunctionType(core.bool, [])
  }),
  methods: () => ({
    addAll: dart.definiteFunctionType(dart.void, [MapOfString$String()]),
    containsValue: dart.definiteFunctionType(core.bool, [core.Object]),
    putIfAbsent: dart.definiteFunctionType(core.String, [core.String, VoidToString()]),
    clear: dart.definiteFunctionType(dart.void, []),
    forEach: dart.definiteFunctionType(dart.void, [StringAndStringTovoid()])
  })
});
dart.defineExtensionMembers(html._AttributeMap, [
  'addAll',
  'containsValue',
  'putIfAbsent',
  'clear',
  'forEach',
  'keys',
  'values',
  'isEmpty',
  'isNotEmpty'
]);
html._ElementAttributeMap = class _ElementAttributeMap extends html._AttributeMap {
  new(element) {
    super.new(element);
  }
  containsKey(key) {
    return this[_element][_hasAttribute](core.String._check(key));
  }
  _get(key) {
    return this[_element][dartx.getAttribute](core.String._check(key));
  }
  _set(key, value) {
    this[_element][dartx.setAttribute](key, value);
    return value;
  }
  remove(key) {
    let value = this[_element][dartx.getAttribute](core.String._check(key));
    this[_element][_removeAttribute](core.String._check(key));
    return value;
  }
  get length() {
    return this.keys[dartx.length];
  }
  [_matches](node) {
    return node[_namespaceUri] == null;
  }
};
dart.setSignature(html._ElementAttributeMap, {
  constructors: () => ({new: dart.definiteFunctionType(html._ElementAttributeMap, [html.Element])}),
  getters: () => ({length: dart.definiteFunctionType(core.int, [])}),
  methods: () => ({
    containsKey: dart.definiteFunctionType(core.bool, [core.Object]),
    _get: dart.definiteFunctionType(core.String, [core.Object]),
    _set: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    remove: dart.definiteFunctionType(core.String, [core.Object]),
    [_matches]: dart.definiteFunctionType(core.bool, [html.Node])
  })
});
dart.defineExtensionMembers(html._ElementAttributeMap, [
  'containsKey',
  '_get',
  '_set',
  'remove',
  'length'
]);
const _namespace = Symbol('_namespace');
html._NamespacedAttributeMap = class _NamespacedAttributeMap extends html._AttributeMap {
  new(element, namespace) {
    this[_namespace] = namespace;
    super.new(element);
  }
  containsKey(key) {
    return this[_element][_hasAttributeNS](this[_namespace], core.String._check(key));
  }
  _get(key) {
    return this[_element][dartx.getAttributeNS](this[_namespace], core.String._check(key));
  }
  _set(key, value) {
    this[_element][dartx.setAttributeNS](this[_namespace], key, value);
    return value;
  }
  remove(key) {
    let value = this._get(key);
    this[_element][_removeAttributeNS](this[_namespace], core.String._check(key));
    return value;
  }
  get length() {
    return this.keys[dartx.length];
  }
  [_matches](node) {
    return node[_namespaceUri] == this[_namespace];
  }
};
dart.setSignature(html._NamespacedAttributeMap, {
  constructors: () => ({new: dart.definiteFunctionType(html._NamespacedAttributeMap, [html.Element, core.String])}),
  fields: () => ({[_namespace]: core.String}),
  getters: () => ({length: dart.definiteFunctionType(core.int, [])}),
  methods: () => ({
    containsKey: dart.definiteFunctionType(core.bool, [core.Object]),
    _get: dart.definiteFunctionType(core.String, [core.Object]),
    _set: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    remove: dart.definiteFunctionType(core.String, [core.Object]),
    [_matches]: dart.definiteFunctionType(core.bool, [html.Node])
  })
});
dart.defineExtensionMembers(html._NamespacedAttributeMap, [
  'containsKey',
  '_get',
  '_set',
  'remove',
  'length'
]);
const _attr = Symbol('_attr');
const _strip = Symbol('_strip');
const _toHyphenedName = Symbol('_toHyphenedName');
const _toCamelCase = Symbol('_toCamelCase');
html._DataAttributeMap = class _DataAttributeMap extends core.Object {
  new(attributes) {
    this[_attributes] = attributes;
  }
  addAll(other) {
    other[dartx.forEach](dart.fn((k, v) => {
      this._set(k, v);
    }, StringAndStringTovoid()));
  }
  containsValue(value) {
    return this.values[dartx.any](dart.fn(v => dart.equals(v, value), StringTobool()));
  }
  containsKey(key) {
    return this[_attributes][dartx.containsKey](this[_attr](core.String._check(key)));
  }
  _get(key) {
    return this[_attributes][dartx._get](this[_attr](core.String._check(key)));
  }
  _set(key, value) {
    this[_attributes][dartx._set](this[_attr](key), value);
    return value;
  }
  putIfAbsent(key, ifAbsent) {
    return this[_attributes][dartx.putIfAbsent](this[_attr](key), ifAbsent);
  }
  remove(key) {
    return this[_attributes][dartx.remove](this[_attr](core.String._check(key)));
  }
  clear() {
    for (let key of this.keys) {
      this.remove(key);
    }
  }
  forEach(f) {
    this[_attributes][dartx.forEach](dart.fn((key, value) => {
      if (dart.test(this[_matches](key))) {
        f(this[_strip](key), value);
      }
    }, StringAndStringTovoid()));
  }
  get keys() {
    let keys = JSArrayOfString().of([]);
    this[_attributes][dartx.forEach](dart.fn((key, value) => {
      if (dart.test(this[_matches](key))) {
        keys[dartx.add](this[_strip](key));
      }
    }, StringAndStringTovoid()));
    return keys;
  }
  get values() {
    let values = JSArrayOfString().of([]);
    this[_attributes][dartx.forEach](dart.fn((key, value) => {
      if (dart.test(this[_matches](key))) {
        values[dartx.add](value);
      }
    }, StringAndStringTovoid()));
    return values;
  }
  get length() {
    return this.keys[dartx.length];
  }
  get isEmpty() {
    return this.length == 0;
  }
  get isNotEmpty() {
    return !dart.test(this.isEmpty);
  }
  [_attr](key) {
    return dart.str`data-${this[_toHyphenedName](key)}`;
  }
  [_matches](key) {
    return key[dartx.startsWith]('data-');
  }
  [_strip](key) {
    return this[_toCamelCase](key[dartx.substring](5));
  }
  [_toCamelCase](hyphenedName, opts) {
    let startUppercase = opts && 'startUppercase' in opts ? opts.startUppercase : false;
    let segments = hyphenedName[dartx.split]('-');
    let start = dart.test(startUppercase) ? 0 : 1;
    for (let i = start; i < dart.notNull(segments[dartx.length]); i++) {
      let segment = segments[dartx._get](i);
      if (dart.notNull(segment[dartx.length]) > 0) {
        segments[dartx._set](i, dart.str`${segment[dartx._get](0)[dartx.toUpperCase]()}${segment[dartx.substring](1)}`);
      }
    }
    return segments[dartx.join]('');
  }
  [_toHyphenedName](word) {
    let sb = new core.StringBuffer();
    for (let i = 0; i < dart.notNull(word[dartx.length]); i++) {
      let lower = word[dartx._get](i)[dartx.toLowerCase]();
      if (word[dartx._get](i) != lower && i > 0) sb.write('-');
      sb.write(lower);
    }
    return sb.toString();
  }
};
html._DataAttributeMap[dart.implements] = () => [MapOfString$String()];
dart.setSignature(html._DataAttributeMap, {
  constructors: () => ({new: dart.definiteFunctionType(html._DataAttributeMap, [MapOfString$String()])}),
  fields: () => ({[_attributes]: MapOfString$String()}),
  getters: () => ({
    keys: dart.definiteFunctionType(core.Iterable$(core.String), []),
    values: dart.definiteFunctionType(core.Iterable$(core.String), []),
    length: dart.definiteFunctionType(core.int, []),
    isEmpty: dart.definiteFunctionType(core.bool, []),
    isNotEmpty: dart.definiteFunctionType(core.bool, [])
  }),
  methods: () => ({
    addAll: dart.definiteFunctionType(dart.void, [MapOfString$String()]),
    containsValue: dart.definiteFunctionType(core.bool, [core.Object]),
    containsKey: dart.definiteFunctionType(core.bool, [core.Object]),
    _get: dart.definiteFunctionType(core.String, [core.Object]),
    _set: dart.definiteFunctionType(dart.void, [core.String, core.String]),
    putIfAbsent: dart.definiteFunctionType(core.String, [core.String, VoidToString()]),
    remove: dart.definiteFunctionType(core.String, [core.Object]),
    clear: dart.definiteFunctionType(dart.void, []),
    forEach: dart.definiteFunctionType(dart.void, [StringAndStringTovoid()]),
    [_attr]: dart.definiteFunctionType(core.String, [core.String]),
    [_matches]: dart.definiteFunctionType(core.bool, [core.String]),
    [_strip]: dart.definiteFunctionType(core.String, [core.String]),
    [_toCamelCase]: dart.definiteFunctionType(core.String, [core.String], {startUppercase: core.bool}),
    [_toHyphenedName]: dart.definiteFunctionType(core.String, [core.String])
  })
});
dart.defineExtensionMembers(html._DataAttributeMap, [
  'addAll',
  'containsValue',
  'containsKey',
  '_get',
  '_set',
  'putIfAbsent',
  'remove',
  'clear',
  'forEach',
  'keys',
  'values',
  'length',
  'isEmpty',
  'isNotEmpty'
]);
html.CanvasImageSource = class CanvasImageSource extends core.Object {};
html.WindowBase = class WindowBase extends core.Object {};
html.WindowBase[dart.implements] = () => [html.EventTarget];
html.LocationBase = class LocationBase extends core.Object {};
html.HistoryBase = class HistoryBase extends core.Object {};
html.CssClassSet = class CssClassSet extends core.Object {};
html.CssClassSet[dart.implements] = () => [SetOfString()];
const _addOrSubtractToBoxModel = Symbol('_addOrSubtractToBoxModel');
html.CssRect = class CssRect extends core.Object {
  new(element) {
    this[_element] = element;
  }
  set height(newHeight) {
    dart.throw(new core.UnsupportedError("Can only set height for content rect."));
  }
  set width(newWidth) {
    dart.throw(new core.UnsupportedError("Can only set width for content rect."));
  }
  [_addOrSubtractToBoxModel](dimensions, augmentingMeasurement) {
    let styles = this[_element][dartx.getComputedStyle]();
    let val = 0;
    for (let measurement of dimensions) {
      if (augmentingMeasurement == html._MARGIN) {
        val = dart.notNull(val) + dart.notNull(new html.Dimension.css(styles[dartx.getPropertyValue](dart.str`${augmentingMeasurement}-${measurement}`)).value);
      }
      if (augmentingMeasurement == html._CONTENT) {
        val = dart.notNull(val) - dart.notNull(new html.Dimension.css(styles[dartx.getPropertyValue](dart.str`${html._PADDING}-${measurement}`)).value);
      }
      if (augmentingMeasurement != html._MARGIN) {
        val = dart.notNull(val) - dart.notNull(new html.Dimension.css(styles[dartx.getPropertyValue](dart.str`border-${measurement}-width`)).value);
      }
    }
    return val;
  }
  get right() {
    return dart.notNull(this.left) + dart.notNull(this.width);
  }
  get bottom() {
    return dart.notNull(this.top) + dart.notNull(this.height);
  }
  toString() {
    return dart.str`Rectangle (${this.left}, ${this.top}) ${this.width} x ${this.height}`;
  }
  ['=='](other) {
    if (!RectangleOfnum().is(other)) return false;
    return dart.equals(this.left, dart.dload(other, 'left')) && dart.equals(this.top, dart.dload(other, 'top')) && dart.equals(this.right, dart.dload(other, 'right')) && dart.equals(this.bottom, dart.dload(other, 'bottom'));
  }
  get hashCode() {
    return html._JenkinsSmiHash.hash4(dart.hashCode(this.left), dart.hashCode(this.top), dart.hashCode(this.right), dart.hashCode(this.bottom));
  }
  intersection(other) {
    let x0 = math.max(core.num)(this.left, other[dartx.left]);
    let x1 = math.min(core.num)(dart.notNull(this.left) + dart.notNull(this.width), dart.notNull(other[dartx.left]) + dart.notNull(other[dartx.width]));
    if (dart.notNull(x0) <= dart.notNull(x1)) {
      let y0 = math.max(core.num)(this.top, other[dartx.top]);
      let y1 = math.min(core.num)(dart.notNull(this.top) + dart.notNull(this.height), dart.notNull(other[dartx.top]) + dart.notNull(other[dartx.height]));
      if (dart.notNull(y0) <= dart.notNull(y1)) {
        return new (RectangleOfnum())(x0, y0, dart.notNull(x1) - dart.notNull(x0), dart.notNull(y1) - dart.notNull(y0));
      }
    }
    return null;
  }
  intersects(other) {
    return dart.notNull(this.left) <= dart.notNull(other[dartx.left]) + dart.notNull(other[dartx.width]) && dart.notNull(other[dartx.left]) <= dart.notNull(this.left) + dart.notNull(this.width) && dart.notNull(this.top) <= dart.notNull(other[dartx.top]) + dart.notNull(other[dartx.height]) && dart.notNull(other[dartx.top]) <= dart.notNull(this.top) + dart.notNull(this.height);
  }
  boundingBox(other) {
    let right = math.max(core.num)(dart.notNull(this.left) + dart.notNull(this.width), dart.notNull(other[dartx.left]) + dart.notNull(other[dartx.width]));
    let bottom = math.max(core.num)(dart.notNull(this.top) + dart.notNull(this.height), dart.notNull(other[dartx.top]) + dart.notNull(other[dartx.height]));
    let left = math.min(core.num)(this.left, other[dartx.left]);
    let top = math.min(core.num)(this.top, other[dartx.top]);
    return new (RectangleOfnum())(left, top, dart.notNull(right) - dart.notNull(left), dart.notNull(bottom) - dart.notNull(top));
  }
  containsRectangle(another) {
    return dart.notNull(this.left) <= dart.notNull(another[dartx.left]) && dart.notNull(this.left) + dart.notNull(this.width) >= dart.notNull(another[dartx.left]) + dart.notNull(another[dartx.width]) && dart.notNull(this.top) <= dart.notNull(another[dartx.top]) && dart.notNull(this.top) + dart.notNull(this.height) >= dart.notNull(another[dartx.top]) + dart.notNull(another[dartx.height]);
  }
  containsPoint(another) {
    return dart.notNull(another.x) >= dart.notNull(this.left) && dart.notNull(another.x) <= dart.notNull(this.left) + dart.notNull(this.width) && dart.notNull(another.y) >= dart.notNull(this.top) && dart.notNull(another.y) <= dart.notNull(this.top) + dart.notNull(this.height);
  }
  get topLeft() {
    return new (PointOfnum())(this.left, this.top);
  }
  get topRight() {
    return new (PointOfnum())(dart.notNull(this.left) + dart.notNull(this.width), this.top);
  }
  get bottomRight() {
    return new (PointOfnum())(dart.notNull(this.left) + dart.notNull(this.width), dart.notNull(this.top) + dart.notNull(this.height));
  }
  get bottomLeft() {
    return new (PointOfnum())(this.left, dart.notNull(this.top) + dart.notNull(this.height));
  }
};
html.CssRect[dart.implements] = () => [RectangleOfnum()];
dart.setSignature(html.CssRect, {
  constructors: () => ({new: dart.definiteFunctionType(html.CssRect, [html.Element])}),
  fields: () => ({[_element]: html.Element}),
  getters: () => ({
    right: dart.definiteFunctionType(core.num, []),
    bottom: dart.definiteFunctionType(core.num, []),
    topLeft: dart.definiteFunctionType(math.Point$(core.num), []),
    topRight: dart.definiteFunctionType(math.Point$(core.num), []),
    bottomRight: dart.definiteFunctionType(math.Point$(core.num), []),
    bottomLeft: dart.definiteFunctionType(math.Point$(core.num), [])
  }),
  setters: () => ({
    height: dart.definiteFunctionType(dart.void, [dart.dynamic]),
    width: dart.definiteFunctionType(dart.void, [dart.dynamic])
  }),
  methods: () => ({
    [_addOrSubtractToBoxModel]: dart.definiteFunctionType(core.num, [ListOfString(), core.String]),
    intersection: dart.definiteFunctionType(math.Rectangle$(core.num), [RectangleOfnum()]),
    intersects: dart.definiteFunctionType(core.bool, [RectangleOfnum()]),
    boundingBox: dart.definiteFunctionType(math.Rectangle$(core.num), [RectangleOfnum()]),
    containsRectangle: dart.definiteFunctionType(core.bool, [RectangleOfnum()]),
    containsPoint: dart.definiteFunctionType(core.bool, [PointOfnum()])
  })
});
dart.defineExtensionMembers(html.CssRect, [
  'toString',
  '==',
  'intersection',
  'intersects',
  'boundingBox',
  'containsRectangle',
  'containsPoint',
  'right',
  'bottom',
  'hashCode',
  'topLeft',
  'topRight',
  'bottomRight',
  'bottomLeft'
]);
html._ContentCssRect = class _ContentCssRect extends html.CssRect {
  new(element) {
    super.new(element);
  }
  get height() {
    return dart.notNull(this[_element][dartx.offsetHeight]) + dart.notNull(this[_addOrSubtractToBoxModel](html._HEIGHT, html._CONTENT));
  }
  get width() {
    return dart.notNull(this[_element][dartx.offsetWidth]) + dart.notNull(this[_addOrSubtractToBoxModel](html._WIDTH, html._CONTENT));
  }
  set height(newHeight) {
    if (html.Dimension.is(newHeight)) {
      if (dart.test(dart.dsend(dart.dload(newHeight, 'value'), '<', 0))) newHeight = new html.Dimension.px(0);
      this[_element][dartx.style][dartx.height] = dart.toString(newHeight);
    } else if (typeof newHeight == 'number') {
      if (dart.test(dart.dsend(newHeight, '<', 0))) newHeight = 0;
      this[_element][dartx.style][dartx.height] = dart.str`${newHeight}px`;
    } else {
      dart.throw(new core.ArgumentError("newHeight is not a Dimension or num"));
    }
  }
  set width(newWidth) {
    if (html.Dimension.is(newWidth)) {
      if (dart.test(dart.dsend(dart.dload(newWidth, 'value'), '<', 0))) newWidth = new html.Dimension.px(0);
      this[_element][dartx.style][dartx.width] = dart.toString(newWidth);
    } else if (typeof newWidth == 'number') {
      if (dart.test(dart.dsend(newWidth, '<', 0))) newWidth = 0;
      this[_element][dartx.style][dartx.width] = dart.str`${newWidth}px`;
    } else {
      dart.throw(new core.ArgumentError("newWidth is not a Dimension or num"));
    }
  }
  get left() {
    return dart.notNull(this[_element][dartx.getBoundingClientRect]()[dartx.left]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(['left']), html._CONTENT));
  }
  get top() {
    return dart.notNull(this[_element][dartx.getBoundingClientRect]()[dartx.top]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(['top']), html._CONTENT));
  }
};
dart.setSignature(html._ContentCssRect, {
  constructors: () => ({new: dart.definiteFunctionType(html._ContentCssRect, [html.Element])}),
  getters: () => ({
    height: dart.definiteFunctionType(core.num, []),
    width: dart.definiteFunctionType(core.num, []),
    left: dart.definiteFunctionType(core.num, []),
    top: dart.definiteFunctionType(core.num, [])
  })
});
dart.defineExtensionMembers(html._ContentCssRect, ['height', 'width', 'left', 'top']);
const _elementList = Symbol('_elementList');
html._ContentCssListRect = class _ContentCssListRect extends html._ContentCssRect {
  new(elementList) {
    this[_elementList] = null;
    super.new(elementList[dartx.first]);
    this[_elementList] = elementList;
  }
  set height(newHeight) {
    this[_elementList][dartx.forEach](dart.fn(e => e[dartx.contentEdge].height = newHeight, ElementTovoid()));
  }
  get height() {
    return super.height;
  }
  set width(newWidth) {
    this[_elementList][dartx.forEach](dart.fn(e => e[dartx.contentEdge].width = newWidth, ElementTovoid()));
  }
  get width() {
    return super.width;
  }
};
dart.setSignature(html._ContentCssListRect, {
  constructors: () => ({new: dart.definiteFunctionType(html._ContentCssListRect, [ListOfElement()])}),
  fields: () => ({[_elementList]: ListOfElement()})
});
html._PaddingCssRect = class _PaddingCssRect extends html.CssRect {
  new(element) {
    super.new(html.Element._check(element));
  }
  get height() {
    return dart.notNull(this[_element][dartx.offsetHeight]) + dart.notNull(this[_addOrSubtractToBoxModel](html._HEIGHT, html._PADDING));
  }
  set height(value) {
    super.height = value;
  }
  get width() {
    return dart.notNull(this[_element][dartx.offsetWidth]) + dart.notNull(this[_addOrSubtractToBoxModel](html._WIDTH, html._PADDING));
  }
  set width(value) {
    super.width = value;
  }
  get left() {
    return dart.notNull(this[_element][dartx.getBoundingClientRect]()[dartx.left]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(['left']), html._PADDING));
  }
  get top() {
    return dart.notNull(this[_element][dartx.getBoundingClientRect]()[dartx.top]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(['top']), html._PADDING));
  }
};
dart.setSignature(html._PaddingCssRect, {
  constructors: () => ({new: dart.definiteFunctionType(html._PaddingCssRect, [dart.dynamic])}),
  getters: () => ({
    height: dart.definiteFunctionType(core.num, []),
    width: dart.definiteFunctionType(core.num, []),
    left: dart.definiteFunctionType(core.num, []),
    top: dart.definiteFunctionType(core.num, [])
  })
});
dart.defineExtensionMembers(html._PaddingCssRect, ['height', 'width', 'left', 'top']);
html._BorderCssRect = class _BorderCssRect extends html.CssRect {
  new(element) {
    super.new(html.Element._check(element));
  }
  get height() {
    return this[_element][dartx.offsetHeight];
  }
  set height(value) {
    super.height = value;
  }
  get width() {
    return this[_element][dartx.offsetWidth];
  }
  set width(value) {
    super.width = value;
  }
  get left() {
    return this[_element][dartx.getBoundingClientRect]()[dartx.left];
  }
  get top() {
    return this[_element][dartx.getBoundingClientRect]()[dartx.top];
  }
};
dart.setSignature(html._BorderCssRect, {
  constructors: () => ({new: dart.definiteFunctionType(html._BorderCssRect, [dart.dynamic])}),
  getters: () => ({
    height: dart.definiteFunctionType(core.num, []),
    width: dart.definiteFunctionType(core.num, []),
    left: dart.definiteFunctionType(core.num, []),
    top: dart.definiteFunctionType(core.num, [])
  })
});
dart.defineExtensionMembers(html._BorderCssRect, ['height', 'width', 'left', 'top']);
html._MarginCssRect = class _MarginCssRect extends html.CssRect {
  new(element) {
    super.new(html.Element._check(element));
  }
  get height() {
    return dart.notNull(this[_element][dartx.offsetHeight]) + dart.notNull(this[_addOrSubtractToBoxModel](html._HEIGHT, html._MARGIN));
  }
  set height(value) {
    super.height = value;
  }
  get width() {
    return dart.notNull(this[_element][dartx.offsetWidth]) + dart.notNull(this[_addOrSubtractToBoxModel](html._WIDTH, html._MARGIN));
  }
  set width(value) {
    super.width = value;
  }
  get left() {
    return dart.notNull(this[_element][dartx.getBoundingClientRect]()[dartx.left]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(['left']), html._MARGIN));
  }
  get top() {
    return dart.notNull(this[_element][dartx.getBoundingClientRect]()[dartx.top]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(['top']), html._MARGIN));
  }
};
dart.setSignature(html._MarginCssRect, {
  constructors: () => ({new: dart.definiteFunctionType(html._MarginCssRect, [dart.dynamic])}),
  getters: () => ({
    height: dart.definiteFunctionType(core.num, []),
    width: dart.definiteFunctionType(core.num, []),
    left: dart.definiteFunctionType(core.num, []),
    top: dart.definiteFunctionType(core.num, [])
  })
});
dart.defineExtensionMembers(html._MarginCssRect, ['height', 'width', 'left', 'top']);
dart.defineLazy(html, {
  get _HEIGHT() {
    return JSArrayOfString().of(['top', 'bottom']);
  }
});
dart.defineLazy(html, {
  get _WIDTH() {
    return JSArrayOfString().of(['right', 'left']);
  }
});
html._CONTENT = 'content';
html._PADDING = 'padding';
html._MARGIN = 'margin';
const _sets = Symbol('_sets');
const _validateToken = Symbol('_validateToken');
html_common.CssClassSetImpl = class CssClassSetImpl extends core.Object {
  [_validateToken](value) {
    if (dart.test(html_common.CssClassSetImpl._validTokenRE.hasMatch(value))) return value;
    dart.throw(new core.ArgumentError.value(value, 'value', 'Not a valid class token'));
  }
  toString() {
    return this.readClasses().join(' ');
  }
  toggle(value, shouldAdd) {
    if (shouldAdd === void 0) shouldAdd = null;
    this[_validateToken](value);
    let s = this.readClasses();
    let result = false;
    if (shouldAdd == null) shouldAdd = !dart.test(s.contains(value));
    if (dart.test(shouldAdd)) {
      s.add(value);
      result = true;
    } else {
      s.remove(value);
    }
    this.writeClasses(s);
    return result;
  }
  get frozen() {
    return false;
  }
  get iterator() {
    return this.readClasses().iterator;
  }
  [Symbol.iterator]() {
    return new dart.JsIterator(this.iterator);
  }
  forEach(f) {
    this.readClasses().forEach(f);
  }
  join(separator) {
    if (separator === void 0) separator = "";
    return this.readClasses().join(separator);
  }
  map(T) {
    return f => {
      return this.readClasses().map(T)(f);
    };
  }
  where(f) {
    return this.readClasses().where(f);
  }
  expand(T) {
    return f => {
      return this.readClasses().expand(T)(f);
    };
  }
  every(f) {
    return this.readClasses().every(f);
  }
  any(f) {
    return this.readClasses().any(f);
  }
  get isEmpty() {
    return this.readClasses().isEmpty;
  }
  get isNotEmpty() {
    return this.readClasses().isNotEmpty;
  }
  get length() {
    return this.readClasses().length;
  }
  reduce(combine) {
    return this.readClasses().reduce(combine);
  }
  fold(T) {
    return (initialValue, combine) => {
      return this.readClasses().fold(T)(initialValue, combine);
    };
  }
  contains(value) {
    if (!(typeof value == 'string')) return false;
    this[_validateToken](core.String._check(value));
    return this.readClasses().contains(value);
  }
  lookup(value) {
    return core.String._check(dart.test(this.contains(value)) ? value : null);
  }
  add(value) {
    this[_validateToken](value);
    return core.bool._check(this.modify(dart.fn(s => s.add(value), SetOfStringTobool())));
  }
  remove(value) {
    this[_validateToken](core.String._check(value));
    if (!(typeof value == 'string')) return false;
    let s = this.readClasses();
    let result = s.remove(value);
    this.writeClasses(s);
    return result;
  }
  addAll(iterable) {
    this.modify(dart.fn(s => s.addAll(iterable[dartx.map](core.String)(dart.bind(this, _validateToken))), SetOfStringTovoid()));
  }
  removeAll(iterable) {
    this.modify(dart.fn(s => s.removeAll(iterable), SetOfStringTovoid()));
  }
  toggleAll(iterable, shouldAdd) {
    if (shouldAdd === void 0) shouldAdd = null;
    iterable[dartx.forEach](dart.fn(e => this.toggle(e, shouldAdd), StringTobool()));
  }
  retainAll(iterable) {
    this.modify(dart.fn(s => s.retainAll(iterable), SetOfStringTovoid()));
  }
  removeWhere(test) {
    this.modify(dart.fn(s => s.removeWhere(test), SetOfStringTovoid()));
  }
  retainWhere(test) {
    this.modify(dart.fn(s => s.retainWhere(test), SetOfStringTovoid()));
  }
  containsAll(collection) {
    return this.readClasses().containsAll(collection);
  }
  intersection(other) {
    return this.readClasses().intersection(other);
  }
  union(other) {
    return this.readClasses().union(other);
  }
  difference(other) {
    return this.readClasses().difference(other);
  }
  get first() {
    return this.readClasses().first;
  }
  get last() {
    return this.readClasses().last;
  }
  get single() {
    return this.readClasses().single;
  }
  toList(opts) {
    let growable = opts && 'growable' in opts ? opts.growable : true;
    return this.readClasses().toList({growable: growable});
  }
  toSet() {
    return this.readClasses().toSet();
  }
  take(n) {
    return this.readClasses().take(n);
  }
  takeWhile(test) {
    return this.readClasses().takeWhile(test);
  }
  skip(n) {
    return this.readClasses().skip(n);
  }
  skipWhile(test) {
    return this.readClasses().skipWhile(test);
  }
  firstWhere(test, opts) {
    let orElse = opts && 'orElse' in opts ? opts.orElse : null;
    return this.readClasses().firstWhere(test, {orElse: orElse});
  }
  lastWhere(test, opts) {
    let orElse = opts && 'orElse' in opts ? opts.orElse : null;
    return this.readClasses().lastWhere(test, {orElse: orElse});
  }
  singleWhere(test) {
    return this.readClasses().singleWhere(test);
  }
  elementAt(index) {
    return this.readClasses().elementAt(index);
  }
  clear() {
    this.modify(dart.fn(s => s.clear(), SetOfStringTovoid()));
  }
  modify(f) {
    let s = this.readClasses();
    let ret = f(s);
    this.writeClasses(s);
    return ret;
  }
};
html_common.CssClassSetImpl[dart.implements] = () => [html.CssClassSet];
dart.setSignature(html_common.CssClassSetImpl, {
  getters: () => ({
    frozen: dart.definiteFunctionType(core.bool, []),
    iterator: dart.definiteFunctionType(core.Iterator$(core.String), []),
    isEmpty: dart.definiteFunctionType(core.bool, []),
    isNotEmpty: dart.definiteFunctionType(core.bool, []),
    length: dart.definiteFunctionType(core.int, []),
    first: dart.definiteFunctionType(core.String, []),
    last: dart.definiteFunctionType(core.String, []),
    single: dart.definiteFunctionType(core.String, [])
  }),
  methods: () => ({
    [_validateToken]: dart.definiteFunctionType(core.String, [core.String]),
    toggle: dart.definiteFunctionType(core.bool, [core.String], [core.bool]),
    forEach: dart.definiteFunctionType(dart.void, [StringTovoid()]),
    join: dart.definiteFunctionType(core.String, [], [core.String]),
    map: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(T, [core.String])]]),
    where: dart.definiteFunctionType(core.Iterable$(core.String), [StringTobool()]),
    expand: dart.definiteFunctionType(T => [core.Iterable$(T), [dart.functionType(core.Iterable$(T), [core.String])]]),
    every: dart.definiteFunctionType(core.bool, [StringTobool()]),
    any: dart.definiteFunctionType(core.bool, [StringTobool()]),
    reduce: dart.definiteFunctionType(core.String, [StringAndStringToString()]),
    fold: dart.definiteFunctionType(T => [T, [T, dart.functionType(T, [T, core.String])]]),
    contains: dart.definiteFunctionType(core.bool, [core.Object]),
    lookup: dart.definiteFunctionType(core.String, [core.Object]),
    add: dart.definiteFunctionType(core.bool, [core.String]),
    remove: dart.definiteFunctionType(core.bool, [core.Object]),
    addAll: dart.definiteFunctionType(dart.void, [IterableOfString()]),
    removeAll: dart.definiteFunctionType(dart.void, [IterableOfObject()]),
    toggleAll: dart.definiteFunctionType(dart.void, [IterableOfString()], [core.bool]),
    retainAll: dart.definiteFunctionType(dart.void, [IterableOfObject()]),
    removeWhere: dart.definiteFunctionType(dart.void, [StringTobool()]),
    retainWhere: dart.definiteFunctionType(dart.void, [StringTobool()]),
    containsAll: dart.definiteFunctionType(core.bool, [IterableOfObject()]),
    intersection: dart.definiteFunctionType(core.Set$(core.String), [SetOfObject()]),
    union: dart.definiteFunctionType(core.Set$(core.String), [SetOfString()]),
    difference: dart.definiteFunctionType(core.Set$(core.String), [SetOfObject()]),
    toList: dart.definiteFunctionType(core.List$(core.String), [], {growable: core.bool}),
    toSet: dart.definiteFunctionType(core.Set$(core.String), []),
    take: dart.definiteFunctionType(core.Iterable$(core.String), [core.int]),
    takeWhile: dart.definiteFunctionType(core.Iterable$(core.String), [StringTobool()]),
    skip: dart.definiteFunctionType(core.Iterable$(core.String), [core.int]),
    skipWhile: dart.definiteFunctionType(core.Iterable$(core.String), [StringTobool()]),
    firstWhere: dart.definiteFunctionType(core.String, [StringTobool()], {orElse: VoidToString()}),
    lastWhere: dart.definiteFunctionType(core.String, [StringTobool()], {orElse: VoidToString()}),
    singleWhere: dart.definiteFunctionType(core.String, [StringTobool()]),
    elementAt: dart.definiteFunctionType(core.String, [core.int]),
    clear: dart.definiteFunctionType(dart.void, []),
    modify: dart.definiteFunctionType(dart.dynamic, [SetOfStringTodynamic()])
  }),
  sfields: () => ({_validTokenRE: core.RegExp})
});
dart.defineExtensionMembers(html_common.CssClassSetImpl, [
  'toString',
  'forEach',
  'join',
  'map',
  'where',
  'expand',
  'every',
  'any',
  'reduce',
  'fold',
  'contains',
  'toList',
  'toSet',
  'take',
  'takeWhile',
  'skip',
  'skipWhile',
  'firstWhere',
  'lastWhere',
  'singleWhere',
  'elementAt',
  'iterator',
  'isEmpty',
  'isNotEmpty',
  'length',
  'first',
  'last',
  'single'
]);
dart.defineLazy(html_common.CssClassSetImpl, {
  get _validTokenRE() {
    return core.RegExp.new('^\\S+$');
  }
});
html._MultiElementCssClassSet = class _MultiElementCssClassSet extends html_common.CssClassSetImpl {
  static new(elements) {
    return new html._MultiElementCssClassSet._(elements, ListOfCssClassSetImpl()._check(elements[dartx.map](html.CssClassSet)(dart.fn(e => e[dartx.classes], ElementToCssClassSet()))[dartx.toList]()));
  }
  _(elementIterable, sets) {
    this[_elementIterable] = elementIterable;
    this[_sets] = sets;
  }
  readClasses() {
    let s = LinkedHashSetOfString().new();
    this[_sets][dartx.forEach](dart.fn(e => s.addAll(e.readClasses()), CssClassSetImplTovoid()));
    return s;
  }
  writeClasses(s) {
    let classes = s.join(' ');
    for (let e of this[_elementIterable]) {
      e[dartx.className] = classes;
    }
  }
  modify(f) {
    this[_sets][dartx.forEach](dart.fn(e => e.modify(f), CssClassSetImplTovoid()));
  }
  toggle(value, shouldAdd) {
    if (shouldAdd === void 0) shouldAdd = null;
    return this[_sets][dartx.fold](core.bool)(false, dart.fn((changed, e) => dart.test(e.toggle(value, shouldAdd)) || dart.test(changed), boolAndCssClassSetImplTobool()));
  }
  remove(value) {
    return this[_sets][dartx.fold](core.bool)(false, dart.fn((changed, e) => dart.test(e.remove(value)) || dart.test(changed), boolAndCssClassSetImplTobool()));
  }
};
dart.defineNamedConstructor(html._MultiElementCssClassSet, '_');
dart.setSignature(html._MultiElementCssClassSet, {
  constructors: () => ({
    new: dart.definiteFunctionType(html._MultiElementCssClassSet, [IterableOfElement()]),
    _: dart.definiteFunctionType(html._MultiElementCssClassSet, [IterableOfElement(), ListOfCssClassSetImpl()])
  }),
  fields: () => ({
    [_elementIterable]: IterableOfElement(),
    [_sets]: ListOfCssClassSetImpl()
  }),
  methods: () => ({
    readClasses: dart.definiteFunctionType(core.Set$(core.String), []),
    writeClasses: dart.definiteFunctionType(dart.void, [SetOfString()])
  })
});
html._ElementCssClassSet = class _ElementCssClassSet extends html_common.CssClassSetImpl {
  new(element) {
    this[_element] = element;
  }
  readClasses() {
    let s = LinkedHashSetOfString().new();
    let classname = this[_element][dartx.className];
    for (let name of classname[dartx.split](' ')) {
      let trimmed = name[dartx.trim]();
      if (!dart.test(trimmed[dartx.isEmpty])) {
        s.add(trimmed);
      }
    }
    return s;
  }
  writeClasses(s) {
    this[_element][dartx.className] = s.join(' ');
  }
  get length() {
    return html._ElementCssClassSet._classListLength(html._ElementCssClassSet._classListOf(this[_element]));
  }
  get isEmpty() {
    return this.length == 0;
  }
  get isNotEmpty() {
    return this.length != 0;
  }
  clear() {
    this[_element][dartx.className] = '';
  }
  contains(value) {
    return html._ElementCssClassSet._contains(this[_element], value);
  }
  add(value) {
    return html._ElementCssClassSet._add(this[_element], value);
  }
  remove(value) {
    return typeof value == 'string' && dart.test(html._ElementCssClassSet._remove(this[_element], value));
  }
  toggle(value, shouldAdd) {
    if (shouldAdd === void 0) shouldAdd = null;
    return html._ElementCssClassSet._toggle(this[_element], value, shouldAdd);
  }
  addAll(iterable) {
    html._ElementCssClassSet._addAll(this[_element], iterable);
  }
  removeAll(iterable) {
    html._ElementCssClassSet._removeAll(this[_element], IterableOfString()._check(iterable));
  }
  retainAll(iterable) {
    html._ElementCssClassSet._removeWhere(this[_element], dart.bind(iterable[dartx.toSet](), 'contains'), false);
  }
  removeWhere(test) {
    html._ElementCssClassSet._removeWhere(this[_element], test, true);
  }
  retainWhere(test) {
    html._ElementCssClassSet._removeWhere(this[_element], test, false);
  }
  static _contains(_element, value) {
    return typeof value == 'string' && dart.test(html._ElementCssClassSet._classListContains(html._ElementCssClassSet._classListOf(_element), value));
  }
  static _add(_element, value) {
    let list = html._ElementCssClassSet._classListOf(_element);
    let added = !dart.test(html._ElementCssClassSet._classListContainsBeforeAddOrRemove(list, value));
    html._ElementCssClassSet._classListAdd(list, value);
    return added;
  }
  static _remove(_element, value) {
    let list = html._ElementCssClassSet._classListOf(_element);
    let removed = html._ElementCssClassSet._classListContainsBeforeAddOrRemove(list, value);
    html._ElementCssClassSet._classListRemove(list, value);
    return removed;
  }
  static _toggle(_element, value, shouldAdd) {
    return shouldAdd == null ? html._ElementCssClassSet._toggleDefault(_element, value) : html._ElementCssClassSet._toggleOnOff(_element, value, shouldAdd);
  }
  static _toggleDefault(_element, value) {
    let list = html._ElementCssClassSet._classListOf(_element);
    return html._ElementCssClassSet._classListToggle1(list, value);
  }
  static _toggleOnOff(_element, value, shouldAdd) {
    let list = html._ElementCssClassSet._classListOf(_element);
    if (dart.test(shouldAdd)) {
      html._ElementCssClassSet._classListAdd(list, value);
      return true;
    } else {
      html._ElementCssClassSet._classListRemove(list, value);
      return false;
    }
  }
  static _addAll(_element, iterable) {
    let list = html._ElementCssClassSet._classListOf(_element);
    for (let value of iterable) {
      html._ElementCssClassSet._classListAdd(list, value);
    }
  }
  static _removeAll(_element, iterable) {
    let list = html._ElementCssClassSet._classListOf(_element);
    for (let value of iterable) {
      html._ElementCssClassSet._classListRemove(list, value);
    }
  }
  static _removeWhere(_element, test, doRemove) {
    let list = html._ElementCssClassSet._classListOf(_element);
    let i = 0;
    while (i < dart.notNull(html._ElementCssClassSet._classListLength(list))) {
      let item = list[dartx.item](i);
      if (doRemove == test(item)) {
        html._ElementCssClassSet._classListRemove(list, item);
      } else {
        ++i;
      }
    }
  }
  static _classListOf(e) {
    return e.classList;
  }
  static _classListLength(list) {
    return list.length;
  }
  static _classListContains(list, value) {
    return list.contains(value);
  }
  static _classListContainsBeforeAddOrRemove(list, value) {
    return list.contains(value);
  }
  static _classListAdd(list, value) {
    list.add(value);
  }
  static _classListRemove(list, value) {
    list.remove(value);
  }
  static _classListToggle1(list, value) {
    return list.toggle(value);
  }
  static _classListToggle2(list, value, shouldAdd) {
    return list.toggle(value, shouldAdd);
  }
};
dart.setSignature(html._ElementCssClassSet, {
  constructors: () => ({new: dart.definiteFunctionType(html._ElementCssClassSet, [html.Element])}),
  fields: () => ({[_element]: html.Element}),
  methods: () => ({
    readClasses: dart.definiteFunctionType(core.Set$(core.String), []),
    writeClasses: dart.definiteFunctionType(dart.void, [SetOfString()])
  }),
  statics: () => ({
    _contains: dart.definiteFunctionType(core.bool, [html.Element, core.Object]),
    _add: dart.definiteFunctionType(core.bool, [html.Element, core.String]),
    _remove: dart.definiteFunctionType(core.bool, [html.Element, core.String]),
    _toggle: dart.definiteFunctionType(core.bool, [html.Element, core.String, core.bool]),
    _toggleDefault: dart.definiteFunctionType(core.bool, [html.Element, core.String]),
    _toggleOnOff: dart.definiteFunctionType(core.bool, [html.Element, core.String, core.bool]),
    _addAll: dart.definiteFunctionType(dart.void, [html.Element, IterableOfString()]),
    _removeAll: dart.definiteFunctionType(dart.void, [html.Element, IterableOfString()]),
    _removeWhere: dart.definiteFunctionType(dart.void, [html.Element, StringTobool(), core.bool]),
    _classListOf: dart.definiteFunctionType(html.DomTokenList, [html.Element]),
    _classListLength: dart.definiteFunctionType(core.int, [html.DomTokenList]),
    _classListContains: dart.definiteFunctionType(core.bool, [html.DomTokenList, core.String]),
    _classListContainsBeforeAddOrRemove: dart.definiteFunctionType(core.bool, [html.DomTokenList, core.String]),
    _classListAdd: dart.definiteFunctionType(dart.void, [html.DomTokenList, core.String]),
    _classListRemove: dart.definiteFunctionType(dart.void, [html.DomTokenList, core.String]),
    _classListToggle1: dart.definiteFunctionType(core.bool, [html.DomTokenList, core.String]),
    _classListToggle2: dart.definiteFunctionType(core.bool, [html.DomTokenList, core.String, core.bool])
  }),
  names: ['_contains', '_add', '_remove', '_toggle', '_toggleDefault', '_toggleOnOff', '_addAll', '_removeAll', '_removeWhere', '_classListOf', '_classListLength', '_classListContains', '_classListContainsBeforeAddOrRemove', '_classListAdd', '_classListRemove', '_classListToggle1', '_classListToggle2']
});
dart.defineExtensionMembers(html._ElementCssClassSet, ['contains', 'length', 'isEmpty', 'isNotEmpty']);
const _unit = Symbol('_unit');
html.Dimension = class Dimension extends core.Object {
  percent(value) {
    this[_value] = value;
    this[_unit] = '%';
  }
  px(value) {
    this[_value] = value;
    this[_unit] = 'px';
  }
  pc(value) {
    this[_value] = value;
    this[_unit] = 'pc';
  }
  pt(value) {
    this[_value] = value;
    this[_unit] = 'pt';
  }
  inch(value) {
    this[_value] = value;
    this[_unit] = 'in';
  }
  cm(value) {
    this[_value] = value;
    this[_unit] = 'cm';
  }
  mm(value) {
    this[_value] = value;
    this[_unit] = 'mm';
  }
  em(value) {
    this[_value] = value;
    this[_unit] = 'em';
  }
  ex(value) {
    this[_value] = value;
    this[_unit] = 'ex';
  }
  css(cssValue) {
    this[_value] = null;
    this[_unit] = null;
    if (cssValue == '') cssValue = '0px';
    if (dart.test(cssValue[dartx.endsWith]('%'))) {
      this[_unit] = '%';
    } else {
      this[_unit] = cssValue[dartx.substring](dart.notNull(cssValue[dartx.length]) - 2);
    }
    if (dart.test(cssValue[dartx.contains]('.'))) {
      this[_value] = core.double.parse(cssValue[dartx.substring](0, dart.notNull(cssValue[dartx.length]) - dart.notNull(this[_unit][dartx.length])));
    } else {
      this[_value] = core.int.parse(cssValue[dartx.substring](0, dart.notNull(cssValue[dartx.length]) - dart.notNull(this[_unit][dartx.length])));
    }
  }
  toString() {
    return dart.str`${this[_value]}${this[_unit]}`;
  }
  get value() {
    return this[_value];
  }
};
dart.defineNamedConstructor(html.Dimension, 'percent');
dart.defineNamedConstructor(html.Dimension, 'px');
dart.defineNamedConstructor(html.Dimension, 'pc');
dart.defineNamedConstructor(html.Dimension, 'pt');
dart.defineNamedConstructor(html.Dimension, 'inch');
dart.defineNamedConstructor(html.Dimension, 'cm');
dart.defineNamedConstructor(html.Dimension, 'mm');
dart.defineNamedConstructor(html.Dimension, 'em');
dart.defineNamedConstructor(html.Dimension, 'ex');
dart.defineNamedConstructor(html.Dimension, 'css');
dart.setSignature(html.Dimension, {
  constructors: () => ({
    percent: dart.definiteFunctionType(html.Dimension, [core.num]),
    px: dart.definiteFunctionType(html.Dimension, [core.num]),
    pc: dart.definiteFunctionType(html.Dimension, [core.num]),
    pt: dart.definiteFunctionType(html.Dimension, [core.num]),
    inch: dart.definiteFunctionType(html.Dimension, [core.num]),
    cm: dart.definiteFunctionType(html.Dimension, [core.num]),
    mm: dart.definiteFunctionType(html.Dimension, [core.num]),
    em: dart.definiteFunctionType(html.Dimension, [core.num]),
    ex: dart.definiteFunctionType(html.Dimension, [core.num]),
    css: dart.definiteFunctionType(html.Dimension, [core.String])
  }),
  fields: () => ({
    [_value]: core.num,
    [_unit]: core.String
  }),
  getters: () => ({value: dart.definiteFunctionType(core.num, [])})
});
html.EventListener = dart.typedef('EventListener', () => dart.functionType(dart.dynamic, [html.Event]));
html.EventStreamProvider$ = dart.generic(T => {
  let _EventStreamOfT = () => (_EventStreamOfT = dart.constFn(html._EventStream$(T)))();
  let _ElementEventStreamImplOfT = () => (_ElementEventStreamImplOfT = dart.constFn(html._ElementEventStreamImpl$(T)))();
  let _ElementListEventStreamImplOfT = () => (_ElementListEventStreamImplOfT = dart.constFn(html._ElementListEventStreamImpl$(T)))();
  class EventStreamProvider extends core.Object {
    new(eventType) {
      this[_eventType] = eventType;
    }
    forTarget(e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_EventStreamOfT())(e, this[_eventType], useCapture);
    }
    forElement(e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_ElementEventStreamImplOfT())(e, this[_eventType], useCapture);
    }
    [_forElementList](e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_ElementListEventStreamImplOfT())(e, this[_eventType], useCapture);
    }
    getEventType(target) {
      return this[_eventType];
    }
  }
  dart.addTypeTests(EventStreamProvider);
  dart.setSignature(EventStreamProvider, {
    constructors: () => ({new: dart.definiteFunctionType(html.EventStreamProvider$(T), [core.String])}),
    fields: () => ({[_eventType]: core.String}),
    methods: () => ({
      forTarget: dart.definiteFunctionType(async.Stream$(T), [html.EventTarget], {useCapture: core.bool}),
      forElement: dart.definiteFunctionType(html.ElementStream$(T), [html.Element], {useCapture: core.bool}),
      [_forElementList]: dart.definiteFunctionType(html.ElementStream$(T), [ElementListOfElement()], {useCapture: core.bool}),
      getEventType: dart.definiteFunctionType(core.String, [html.EventTarget])
    })
  });
  return EventStreamProvider;
});
html.EventStreamProvider = EventStreamProvider();
html.ElementStream$ = dart.generic(T => {
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class ElementStream extends core.Object {}
  dart.addTypeTests(ElementStream);
  ElementStream[dart.implements] = () => [StreamOfT()];
  return ElementStream;
});
html.ElementStream = ElementStream();
const _target = Symbol('_target');
const _useCapture = Symbol('_useCapture');
html._EventStream$ = dart.generic(T => {
  let _EventStreamSubscriptionOfT = () => (_EventStreamSubscriptionOfT = dart.constFn(html._EventStreamSubscription$(T)))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let StreamSubscriptionOfTTovoid = () => (StreamSubscriptionOfTTovoid = dart.constFn(dart.functionType(dart.void, [StreamSubscriptionOfT()])))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _EventStream extends async.Stream$(T) {
    new(target, eventType, useCapture) {
      this[_target] = target;
      this[_eventType] = eventType;
      this[_useCapture] = useCapture;
      super.new();
    }
    asBroadcastStream(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      return this;
    }
    get isBroadcast() {
      return true;
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return new (_EventStreamSubscriptionOfT())(this[_target], this[_eventType], onData, this[_useCapture]);
    }
  }
  dart.setSignature(_EventStream, {
    constructors: () => ({new: dart.definiteFunctionType(html._EventStream$(T), [html.EventTarget, core.String, core.bool])}),
    fields: () => ({
      [_target]: html.EventTarget,
      [_eventType]: core.String,
      [_useCapture]: core.bool
    }),
    methods: () => ({
      asBroadcastStream: dart.definiteFunctionType(async.Stream$(T), [], {onListen: StreamSubscriptionOfTTovoid(), onCancel: StreamSubscriptionOfTTovoid()}),
      listen: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid()], {onError: core.Function, onDone: VoidTovoid(), cancelOnError: core.bool})
    })
  });
  return _EventStream;
});
html._EventStream = _EventStream();
html._matchesWithAncestors = function(event, selector) {
  let target = event[dartx.target];
  return html.Element.is(target) ? target[dartx.matchesWithAncestors](selector) : false;
};
dart.fn(html._matchesWithAncestors, EventAndStringTobool());
html._ElementEventStreamImpl$ = dart.generic(T => {
  let _EventStreamSubscriptionOfT = () => (_EventStreamSubscriptionOfT = dart.constFn(html._EventStreamSubscription$(T)))();
  let ElementStreamOfT = () => (ElementStreamOfT = dart.constFn(html.ElementStream$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  let TToT = () => (TToT = dart.constFn(dart.definiteFunctionType(T, [T])))();
  let TTobool = () => (TTobool = dart.constFn(dart.definiteFunctionType(core.bool, [T])))();
  class _ElementEventStreamImpl extends html._EventStream$(T) {
    new(target, eventType, useCapture) {
      super.new(html.EventTarget._check(target), core.String._check(eventType), core.bool._check(useCapture));
    }
    matches(selector) {
      return this.where(dart.fn(event => html._matchesWithAncestors(event, selector), TTobool())).map(T)(dart.fn(e => {
        e[_selector] = selector;
        return e;
      }, TToT()));
    }
    capture(onData) {
      return new (_EventStreamSubscriptionOfT())(this[_target], this[_eventType], onData, true);
    }
  }
  _ElementEventStreamImpl[dart.implements] = () => [ElementStreamOfT()];
  dart.setSignature(_ElementEventStreamImpl, {
    constructors: () => ({new: dart.definiteFunctionType(html._ElementEventStreamImpl$(T), [dart.dynamic, dart.dynamic, dart.dynamic])}),
    methods: () => ({
      matches: dart.definiteFunctionType(async.Stream$(T), [core.String]),
      capture: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid()])
    })
  });
  return _ElementEventStreamImpl;
});
html._ElementEventStreamImpl = _ElementEventStreamImpl();
const _targetList = Symbol('_targetList');
html._ElementListEventStreamImpl$ = dart.generic(T => {
  let _StreamPoolOfT = () => (_StreamPoolOfT = dart.constFn(html._StreamPool$(T)))();
  let _EventStreamOfT = () => (_EventStreamOfT = dart.constFn(html._EventStream$(T)))();
  let ElementStreamOfT = () => (ElementStreamOfT = dart.constFn(html.ElementStream$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let StreamSubscriptionOfTTovoid = () => (StreamSubscriptionOfTTovoid = dart.constFn(dart.functionType(dart.void, [StreamSubscriptionOfT()])))();
  let TToT = () => (TToT = dart.constFn(dart.definiteFunctionType(T, [T])))();
  let TTobool = () => (TTobool = dart.constFn(dart.definiteFunctionType(core.bool, [T])))();
  class _ElementListEventStreamImpl extends async.Stream$(T) {
    new(targetList, eventType, useCapture) {
      this[_targetList] = targetList;
      this[_eventType] = eventType;
      this[_useCapture] = useCapture;
      super.new();
    }
    matches(selector) {
      return this.where(dart.fn(event => html._matchesWithAncestors(event, selector), TTobool())).map(T)(dart.fn(e => {
        e[_selector] = selector;
        return e;
      }, TToT()));
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      let pool = new (_StreamPoolOfT()).broadcast();
      for (let target of this[_targetList]) {
        pool.add(new (_EventStreamOfT())(target, this[_eventType], this[_useCapture]));
      }
      return pool.stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    capture(onData) {
      let pool = new (_StreamPoolOfT()).broadcast();
      for (let target of this[_targetList]) {
        pool.add(new (_EventStreamOfT())(target, this[_eventType], true));
      }
      return pool.stream.listen(onData);
    }
    asBroadcastStream(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      return this;
    }
    get isBroadcast() {
      return true;
    }
  }
  _ElementListEventStreamImpl[dart.implements] = () => [ElementStreamOfT()];
  dart.setSignature(_ElementListEventStreamImpl, {
    constructors: () => ({new: dart.definiteFunctionType(html._ElementListEventStreamImpl$(T), [IterableOfElement(), core.String, core.bool])}),
    fields: () => ({
      [_targetList]: IterableOfElement(),
      [_useCapture]: core.bool,
      [_eventType]: core.String
    }),
    methods: () => ({
      matches: dart.definiteFunctionType(async.Stream$(T), [core.String]),
      listen: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid()], {onError: core.Function, onDone: VoidTovoid(), cancelOnError: core.bool}),
      capture: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid()]),
      asBroadcastStream: dart.definiteFunctionType(async.Stream$(T), [], {onListen: StreamSubscriptionOfTTovoid(), onCancel: StreamSubscriptionOfTTovoid()})
    })
  });
  return _ElementListEventStreamImpl;
});
html._ElementListEventStreamImpl = _ElementListEventStreamImpl();
html._EventListener$ = dart.generic(T => {
  const _EventListener = dart.typedef('_EventListener', () => dart.functionType(dart.dynamic, [T]));
  return _EventListener;
});
html._EventListener = _EventListener();
const _onData = Symbol('_onData');
const _pauseCount = Symbol('_pauseCount');
const _tryResume = Symbol('_tryResume');
const _canceled = Symbol('_canceled');
const _unlisten = Symbol('_unlisten');
html._EventStreamSubscription$ = dart.generic(T => {
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  class _EventStreamSubscription extends async.StreamSubscription$(T) {
    new(target, eventType, onData, useCapture) {
      this[_target] = target;
      this[_eventType] = eventType;
      this[_useCapture] = useCapture;
      this[_onData] = html._wrapZone(html.Event, dart.dynamic)(_wrapZoneCallbackOfEvent$dynamic()._check(onData));
      this[_pauseCount] = 0;
      this[_tryResume]();
    }
    cancel() {
      if (dart.test(this[_canceled])) return null;
      this[_unlisten]();
      this[_target] = null;
      this[_onData] = null;
      return null;
    }
    get [_canceled]() {
      return this[_target] == null;
    }
    onData(handleData) {
      if (dart.test(this[_canceled])) {
        dart.throw(new core.StateError("Subscription has been canceled."));
      }
      this[_unlisten]();
      this[_onData] = html._wrapZone(html.Event, dart.dynamic)(_wrapZoneCallbackOfEvent$dynamic()._check(handleData));
      this[_tryResume]();
    }
    onError(handleError) {}
    onDone(handleDone) {}
    pause(resumeSignal) {
      if (resumeSignal === void 0) resumeSignal = null;
      if (dart.test(this[_canceled])) return;
      this[_pauseCount] = dart.notNull(this[_pauseCount]) + 1;
      this[_unlisten]();
      if (resumeSignal != null) {
        resumeSignal.whenComplete(dart.bind(this, 'resume'));
      }
    }
    get isPaused() {
      return dart.notNull(this[_pauseCount]) > 0;
    }
    resume() {
      if (dart.test(this[_canceled]) || !dart.test(this.isPaused)) return;
      this[_pauseCount] = dart.notNull(this[_pauseCount]) - 1;
      this[_tryResume]();
    }
    [_tryResume]() {
      if (this[_onData] != null && !dart.test(this.isPaused)) {
        this[_target][dartx.addEventListener](this[_eventType], this[_onData], this[_useCapture]);
      }
    }
    [_unlisten]() {
      if (this[_onData] != null) {
        this[_target][dartx.removeEventListener](this[_eventType], this[_onData], this[_useCapture]);
      }
    }
    asFuture(futureValue) {
      if (futureValue === void 0) futureValue = null;
      let completer = async.Completer.new();
      return completer.future;
    }
  }
  dart.setSignature(_EventStreamSubscription, {
    constructors: () => ({new: dart.definiteFunctionType(html._EventStreamSubscription$(T), [html.EventTarget, core.String, TTovoid(), core.bool])}),
    fields: () => ({
      [_pauseCount]: core.int,
      [_target]: html.EventTarget,
      [_eventType]: core.String,
      [_onData]: html.EventListener,
      [_useCapture]: core.bool
    }),
    getters: () => ({
      [_canceled]: dart.definiteFunctionType(core.bool, []),
      isPaused: dart.definiteFunctionType(core.bool, [])
    }),
    methods: () => ({
      cancel: dart.definiteFunctionType(async.Future, []),
      onData: dart.definiteFunctionType(dart.void, [TTovoid()]),
      onError: dart.definiteFunctionType(dart.void, [core.Function]),
      onDone: dart.definiteFunctionType(dart.void, [VoidTovoid()]),
      pause: dart.definiteFunctionType(dart.void, [], [async.Future]),
      resume: dart.definiteFunctionType(dart.void, []),
      [_tryResume]: dart.definiteFunctionType(dart.void, []),
      [_unlisten]: dart.definiteFunctionType(dart.void, []),
      asFuture: dart.definiteFunctionType(async.Future, [], [dart.dynamic])
    })
  });
  return _EventStreamSubscription;
});
html._EventStreamSubscription = _EventStreamSubscription();
html.CustomStream$ = dart.generic(T => {
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class CustomStream extends core.Object {}
  dart.addTypeTests(CustomStream);
  CustomStream[dart.implements] = () => [StreamOfT()];
  return CustomStream;
});
html.CustomStream = CustomStream();
const _streamController = Symbol('_streamController');
const _type = Symbol('_type');
html._CustomEventStreamImpl$ = dart.generic(T => {
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  let CustomStreamOfT = () => (CustomStreamOfT = dart.constFn(html.CustomStream$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.functionType(dart.void, [T])))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let StreamSubscriptionOfTTovoid = () => (StreamSubscriptionOfTTovoid = dart.constFn(dart.functionType(dart.void, [StreamSubscriptionOfT()])))();
  class _CustomEventStreamImpl extends async.Stream$(T) {
    new(type) {
      this[_streamController] = null;
      this[_type] = null;
      super.new();
      this[_type] = type;
      this[_streamController] = StreamControllerOfT().broadcast({sync: true});
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return this[_streamController].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    asBroadcastStream(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      return this[_streamController].stream;
    }
    get isBroadcast() {
      return true;
    }
    add(event) {
      T._check(event);
      if (event[dartx.type] == this[_type]) this[_streamController].add(event);
    }
  }
  _CustomEventStreamImpl[dart.implements] = () => [CustomStreamOfT()];
  dart.setSignature(_CustomEventStreamImpl, {
    constructors: () => ({new: dart.definiteFunctionType(html._CustomEventStreamImpl$(T), [core.String])}),
    fields: () => ({
      [_streamController]: StreamControllerOfT(),
      [_type]: core.String
    }),
    methods: () => ({
      listen: dart.definiteFunctionType(async.StreamSubscription$(T), [TTovoid()], {onError: core.Function, onDone: VoidTovoid(), cancelOnError: core.bool}),
      asBroadcastStream: dart.definiteFunctionType(async.Stream$(T), [], {onListen: StreamSubscriptionOfTTovoid(), onCancel: StreamSubscriptionOfTTovoid()}),
      add: dart.definiteFunctionType(dart.void, [T])
    })
  });
  return _CustomEventStreamImpl;
});
html._CustomEventStreamImpl = _CustomEventStreamImpl();
const _parent = Symbol('_parent');
const _shadowKeyCode = Symbol('_shadowKeyCode');
const _shadowCharCode = Symbol('_shadowCharCode');
const _shadowAltKey = Symbol('_shadowAltKey');
const _realKeyCode = Symbol('_realKeyCode');
const _realCharCode = Symbol('_realCharCode');
const _realAltKey = Symbol('_realAltKey');
const _currentTarget = Symbol('_currentTarget');
const _shadowKeyIdentifier = Symbol('_shadowKeyIdentifier');
html.KeyEvent = class KeyEvent extends html._WrappedEvent {
  get keyCode() {
    return this[_shadowKeyCode];
  }
  get charCode() {
    return this.type == 'keypress' ? this[_shadowCharCode] : 0;
  }
  get altKey() {
    return this[_shadowAltKey];
  }
  get which() {
    return this.keyCode;
  }
  get [_realKeyCode]() {
    return this[_parent].keyCode;
  }
  get [_realCharCode]() {
    return this[_parent].charCode;
  }
  get [_realAltKey]() {
    return this[_parent].altKey;
  }
  static _makeRecord() {
    let interceptor = _foreign_helper.JS_INTERCEPTOR_CONSTANT(dart.wrapType(html.KeyboardEvent));
    return _js_helper.makeLeafDispatchRecord(interceptor);
  }
  wrap(parent) {
    this[_parent] = null;
    this[_shadowAltKey] = null;
    this[_shadowCharCode] = null;
    this[_shadowKeyCode] = null;
    this[_currentTarget] = null;
    super.new(parent);
    this[_parent] = parent;
    this[_shadowAltKey] = this[_realAltKey];
    this[_shadowCharCode] = this[_realCharCode];
    this[_shadowKeyCode] = this[_realKeyCode];
    this[_currentTarget] = this[_parent][dartx.currentTarget];
  }
  static new(type, opts) {
    let view = opts && 'view' in opts ? opts.view : null;
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let keyCode = opts && 'keyCode' in opts ? opts.keyCode : 0;
    let charCode = opts && 'charCode' in opts ? opts.charCode : 0;
    let keyLocation = opts && 'keyLocation' in opts ? opts.keyLocation : 1;
    let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
    let altKey = opts && 'altKey' in opts ? opts.altKey : false;
    let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
    let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
    let currentTarget = opts && 'currentTarget' in opts ? opts.currentTarget : null;
    if (view == null) {
      view = html.window;
    }
    let eventObj = null;
    if (dart.test(html.KeyEvent.canUseDispatchEvent)) {
      eventObj = html.Event.eventType('Event', type, {canBubble: canBubble, cancelable: cancelable});
      eventObj.keyCode = keyCode;
      eventObj.which = keyCode;
      eventObj.charCode = charCode;
      eventObj.keyLocation = keyLocation;
      eventObj.ctrlKey = ctrlKey;
      eventObj.altKey = altKey;
      eventObj.shiftKey = shiftKey;
      eventObj.metaKey = metaKey;
    } else {
      eventObj = html.Event.eventType('KeyboardEvent', type, {canBubble: canBubble, cancelable: cancelable});
      Object.defineProperty(eventObj, 'keyCode', {
        get: function() {
          return this.keyCodeVal;
        }
      });
      Object.defineProperty(eventObj, 'which', {
        get: function() {
          return this.keyCodeVal;
        }
      });
      Object.defineProperty(eventObj, 'charCode', {
        get: function() {
          return this.charCodeVal;
        }
      });
      let keyIdentifier = html.KeyEvent._convertToHexString(charCode, keyCode);
      dart.dsend(eventObj, _initKeyboardEvent, type, canBubble, cancelable, view, keyIdentifier, keyLocation, ctrlKey, altKey, shiftKey, metaKey);
      eventObj.keyCodeVal = keyCode;
      eventObj.charCodeVal = charCode;
    }
    _interceptors.setDispatchProperty(eventObj, html.KeyEvent._keyboardEventDispatchRecord);
    let keyEvent = new html.KeyEvent.wrap(html.KeyboardEvent._check(eventObj));
    if (keyEvent[_currentTarget] == null) {
      keyEvent[_currentTarget] = currentTarget == null ? html.window : currentTarget;
    }
    return keyEvent;
  }
  static get canUseDispatchEvent() {
    return typeof document.body.dispatchEvent == "function" && document.body.dispatchEvent.length > 0;
  }
  get currentTarget() {
    return this[_currentTarget];
  }
  static _convertToHexString(charCode, keyCode) {
    if (charCode != -1) {
      let hex = charCode[dartx.toRadixString](16);
      let sb = new core.StringBuffer('U+');
      for (let i = 0; i < 4 - dart.notNull(hex[dartx.length]); i++)
        sb.write('0');
      sb.write(hex);
      return sb.toString();
    } else {
      return html.KeyCode._convertKeyCodeToKeyName(keyCode);
    }
  }
  get code() {
    return this[_parent][dartx.code];
  }
  get ctrlKey() {
    return this[_parent][dartx.ctrlKey];
  }
  get detail() {
    return this[_parent][dartx.detail];
  }
  get key() {
    return this[_parent][dartx.key];
  }
  get keyLocation() {
    return this[_parent][dartx.keyLocation];
  }
  get metaKey() {
    return this[_parent][dartx.metaKey];
  }
  get shiftKey() {
    return this[_parent][dartx.shiftKey];
  }
  get sourceDevice() {
    return this[_parent][dartx.sourceDevice];
  }
  get view() {
    return html.Window._check(this[_parent][dartx.view]);
  }
  [_initUIEvent](type, canBubble, cancelable, view, detail) {
    dart.throw(new core.UnsupportedError("Cannot initialize a UI Event from a KeyEvent."));
  }
  get [_shadowKeyIdentifier]() {
    return this[_parent].keyIdentifier;
  }
  get [_charCode]() {
    return this.charCode;
  }
  get [_keyCode]() {
    return this.keyCode;
  }
  get [_which]() {
    return this.which;
  }
  get [_keyIdentifier]() {
    dart.throw(new core.UnsupportedError("keyIdentifier is unsupported."));
  }
  [_initKeyboardEvent](type, canBubble, cancelable, view, keyIdentifier, keyLocation, ctrlKey, altKey, shiftKey, metaKey) {
    dart.throw(new core.UnsupportedError("Cannot initialize a KeyboardEvent from a KeyEvent."));
  }
  getModifierState(keyArgument) {
    return dart.throw(new core.UnimplementedError());
  }
  get location() {
    return dart.throw(new core.UnimplementedError());
  }
  get repeat() {
    return dart.throw(new core.UnimplementedError());
  }
  get [_get_view]() {
    return dart.throw(new core.UnimplementedError());
  }
};
dart.defineNamedConstructor(html.KeyEvent, 'wrap');
html.KeyEvent[dart.implements] = () => [html.KeyboardEvent];
dart.setSignature(html.KeyEvent, {
  constructors: () => ({
    wrap: dart.definiteFunctionType(html.KeyEvent, [html.KeyboardEvent]),
    new: dart.definiteFunctionType(html.KeyEvent, [core.String], {view: html.Window, canBubble: core.bool, cancelable: core.bool, keyCode: core.int, charCode: core.int, keyLocation: core.int, ctrlKey: core.bool, altKey: core.bool, shiftKey: core.bool, metaKey: core.bool, currentTarget: html.EventTarget})
  }),
  fields: () => ({
    [_parent]: html.KeyboardEvent,
    [_shadowAltKey]: core.bool,
    [_shadowCharCode]: core.int,
    [_shadowKeyCode]: core.int,
    [_currentTarget]: html.EventTarget
  }),
  getters: () => ({
    keyCode: dart.definiteFunctionType(core.int, []),
    charCode: dart.definiteFunctionType(core.int, []),
    altKey: dart.definiteFunctionType(core.bool, []),
    which: dart.definiteFunctionType(core.int, []),
    [_realKeyCode]: dart.definiteFunctionType(core.int, []),
    [_realCharCode]: dart.definiteFunctionType(core.int, []),
    [_realAltKey]: dart.definiteFunctionType(core.bool, []),
    code: dart.definiteFunctionType(core.String, []),
    ctrlKey: dart.definiteFunctionType(core.bool, []),
    detail: dart.definiteFunctionType(core.int, []),
    key: dart.definiteFunctionType(core.String, []),
    keyLocation: dart.definiteFunctionType(core.int, []),
    metaKey: dart.definiteFunctionType(core.bool, []),
    shiftKey: dart.definiteFunctionType(core.bool, []),
    sourceDevice: dart.definiteFunctionType(html.InputDevice, []),
    view: dart.definiteFunctionType(html.Window, []),
    [_shadowKeyIdentifier]: dart.definiteFunctionType(core.String, []),
    [_charCode]: dart.definiteFunctionType(core.int, []),
    [_keyCode]: dart.definiteFunctionType(core.int, []),
    [_which]: dart.definiteFunctionType(core.int, []),
    [_keyIdentifier]: dart.definiteFunctionType(core.String, []),
    location: dart.definiteFunctionType(core.int, []),
    repeat: dart.definiteFunctionType(core.bool, []),
    [_get_view]: dart.definiteFunctionType(dart.dynamic, [])
  }),
  methods: () => ({
    [_initUIEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, html.Window, core.int]),
    [_initKeyboardEvent]: dart.definiteFunctionType(dart.void, [core.String, core.bool, core.bool, html.Window, core.String, core.int, core.bool, core.bool, core.bool, core.bool]),
    getModifierState: dart.definiteFunctionType(core.bool, [core.String])
  }),
  sfields: () => ({
    _keyboardEventDispatchRecord: dart.dynamic,
    keyDownEvent: EventStreamProviderOfKeyEvent(),
    keyUpEvent: EventStreamProviderOfKeyEvent(),
    keyPressEvent: EventStreamProviderOfKeyEvent()
  }),
  sgetters: () => ({canUseDispatchEvent: dart.definiteFunctionType(core.bool, [])}),
  statics: () => ({
    _makeRecord: dart.definiteFunctionType(dart.dynamic, []),
    _convertToHexString: dart.definiteFunctionType(core.String, [core.int, core.int])
  }),
  names: ['_makeRecord', '_convertToHexString']
});
dart.defineLazy(html.KeyEvent, {
  get _keyboardEventDispatchRecord() {
    return html.KeyEvent._makeRecord();
  },
  get keyDownEvent() {
    return new html._KeyboardEventHandler('keydown');
  },
  set keyDownEvent(_) {},
  get keyUpEvent() {
    return new html._KeyboardEventHandler('keyup');
  },
  set keyUpEvent(_) {},
  get keyPressEvent() {
    return new html._KeyboardEventHandler('keypress');
  },
  set keyPressEvent(_) {}
});
html._CustomKeyEventStreamImpl = class _CustomKeyEventStreamImpl extends html._CustomEventStreamImpl$(html.KeyEvent) {
  new(type) {
    super.new(type);
  }
  add(event) {
    if (event.type == this[_type]) {
      event.currentTarget[dartx.dispatchEvent](event[_parent]);
      this[_streamController].add(event);
    }
  }
};
dart.addSimpleTypeTests(html._CustomKeyEventStreamImpl);
html._CustomKeyEventStreamImpl[dart.implements] = () => [CustomStreamOfKeyEvent()];
dart.setSignature(html._CustomKeyEventStreamImpl, {
  constructors: () => ({new: dart.definiteFunctionType(html._CustomKeyEventStreamImpl, [core.String])}),
  methods: () => ({add: dart.definiteFunctionType(dart.void, [html.KeyEvent])})
});
const _subscriptions = Symbol('_subscriptions');
const _controller = Symbol('_controller');
html._StreamPool$ = dart.generic(T => {
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let MapOfStreamOfT$StreamSubscriptionOfT = () => (MapOfStreamOfT$StreamSubscriptionOfT = dart.constFn(core.Map$(StreamOfT(), StreamSubscriptionOfT())))();
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  class _StreamPool extends core.Object {
    broadcast() {
      this[_subscriptions] = MapOfStreamOfT$StreamSubscriptionOfT().new();
      this[_controller] = null;
      this[_controller] = StreamControllerOfT().broadcast({sync: true, onCancel: dart.bind(this, 'close')});
    }
    get stream() {
      return this[_controller].stream;
    }
    add(stream) {
      StreamOfT()._check(stream);
      if (dart.test(this[_subscriptions][dartx.containsKey](stream))) return;
      this[_subscriptions][dartx._set](stream, stream.listen(dart.bind(this[_controller], 'add'), {onError: dart.bind(this[_controller], 'addError'), onDone: dart.fn(() => this.remove(stream), VoidTovoid())}));
    }
    remove(stream) {
      StreamOfT()._check(stream);
      let subscription = this[_subscriptions][dartx.remove](stream);
      if (subscription != null) subscription.cancel();
    }
    close() {
      for (let subscription of this[_subscriptions][dartx.values]) {
        subscription.cancel();
      }
      this[_subscriptions][dartx.clear]();
      this[_controller].close();
    }
  }
  dart.addTypeTests(_StreamPool);
  dart.defineNamedConstructor(_StreamPool, 'broadcast');
  dart.setSignature(_StreamPool, {
    constructors: () => ({broadcast: dart.definiteFunctionType(html._StreamPool$(T), [])}),
    fields: () => ({
      [_controller]: StreamControllerOfT(),
      [_subscriptions]: MapOfStreamOfT$StreamSubscriptionOfT()
    }),
    getters: () => ({stream: dart.definiteFunctionType(async.Stream$(T), [])}),
    methods: () => ({
      add: dart.definiteFunctionType(dart.void, [StreamOfT()]),
      remove: dart.definiteFunctionType(dart.void, [StreamOfT()]),
      close: dart.definiteFunctionType(dart.void, [])
    })
  });
  return _StreamPool;
});
html._StreamPool = _StreamPool();
const _eventTypeGetter = Symbol('_eventTypeGetter');
html._CustomEventStreamProvider$ = dart.generic(T => {
  let _EventStreamOfT = () => (_EventStreamOfT = dart.constFn(html._EventStream$(T)))();
  let _ElementEventStreamImplOfT = () => (_ElementEventStreamImplOfT = dart.constFn(html._ElementEventStreamImpl$(T)))();
  let _ElementListEventStreamImplOfT = () => (_ElementListEventStreamImplOfT = dart.constFn(html._ElementListEventStreamImpl$(T)))();
  let EventStreamProviderOfT = () => (EventStreamProviderOfT = dart.constFn(html.EventStreamProvider$(T)))();
  class _CustomEventStreamProvider extends core.Object {
    new(eventTypeGetter) {
      this[_eventTypeGetter] = eventTypeGetter;
    }
    forTarget(e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_EventStreamOfT())(e, core.String._check(dart.dcall(this[_eventTypeGetter], e)), useCapture);
    }
    forElement(e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_ElementEventStreamImplOfT())(e, dart.dcall(this[_eventTypeGetter], e), useCapture);
    }
    [_forElementList](e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_ElementListEventStreamImplOfT())(e, core.String._check(dart.dcall(this[_eventTypeGetter], e)), useCapture);
    }
    getEventType(target) {
      return core.String._check(dart.dcall(this[_eventTypeGetter], target));
    }
    get [_eventType]() {
      return dart.throw(new core.UnsupportedError('Access type through getEventType method.'));
    }
  }
  dart.addTypeTests(_CustomEventStreamProvider);
  _CustomEventStreamProvider[dart.implements] = () => [EventStreamProviderOfT()];
  dart.setSignature(_CustomEventStreamProvider, {
    constructors: () => ({new: dart.definiteFunctionType(html._CustomEventStreamProvider$(T), [dart.dynamic])}),
    fields: () => ({[_eventTypeGetter]: dart.dynamic}),
    getters: () => ({[_eventType]: dart.definiteFunctionType(core.String, [])}),
    methods: () => ({
      forTarget: dart.definiteFunctionType(async.Stream$(T), [html.EventTarget], {useCapture: core.bool}),
      forElement: dart.definiteFunctionType(html.ElementStream$(T), [html.Element], {useCapture: core.bool}),
      [_forElementList]: dart.definiteFunctionType(html.ElementStream$(T), [ElementListOfElement()], {useCapture: core.bool}),
      getEventType: dart.definiteFunctionType(core.String, [html.EventTarget])
    })
  });
  return _CustomEventStreamProvider;
});
html._CustomEventStreamProvider = _CustomEventStreamProvider();
html._Html5NodeValidator = class _Html5NodeValidator extends core.Object {
  new(opts) {
    let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
    this.uriPolicy = uriPolicy != null ? uriPolicy : html.UriPolicy.new();
    if (dart.test(html._Html5NodeValidator._attributeValidators[dartx.isEmpty])) {
      for (let attr of html._Html5NodeValidator._standardAttributes) {
        html._Html5NodeValidator._attributeValidators[dartx._set](attr, html._Html5NodeValidator._standardAttributeValidator);
      }
      for (let attr of html._Html5NodeValidator._uriAttributes) {
        html._Html5NodeValidator._attributeValidators[dartx._set](attr, html._Html5NodeValidator._uriAttributeValidator);
      }
    }
  }
  allowsElement(element) {
    return html._Html5NodeValidator._allowedElements.contains(html.Element._safeTagName(element));
  }
  allowsAttribute(element, attributeName, value) {
    let tagName = html.Element._safeTagName(element);
    let validator = html._Html5NodeValidator._attributeValidators[dartx._get](dart.str`${tagName}::${attributeName}`);
    if (validator == null) {
      validator = html._Html5NodeValidator._attributeValidators[dartx._get](dart.str`*::${attributeName}`);
    }
    if (validator == null) {
      return false;
    }
    return core.bool._check(dart.dcall(validator, element, attributeName, value, this));
  }
  static _standardAttributeValidator(element, attributeName, value, context) {
    return true;
  }
  static _uriAttributeValidator(element, attributeName, value, context) {
    return context.uriPolicy.allowsUri(value);
  }
};
html._Html5NodeValidator[dart.implements] = () => [html.NodeValidator];
dart.setSignature(html._Html5NodeValidator, {
  constructors: () => ({new: dart.definiteFunctionType(html._Html5NodeValidator, [], {uriPolicy: html.UriPolicy})}),
  fields: () => ({uriPolicy: html.UriPolicy}),
  methods: () => ({
    allowsElement: dart.definiteFunctionType(core.bool, [html.Element]),
    allowsAttribute: dart.definiteFunctionType(core.bool, [html.Element, core.String, core.String])
  }),
  sfields: () => ({
    _allowedElements: SetOfString(),
    _standardAttributes: ListOfString(),
    _uriAttributes: ListOfString(),
    _attributeValidators: MapOfString$Function()
  }),
  statics: () => ({
    _standardAttributeValidator: dart.definiteFunctionType(core.bool, [html.Element, core.String, core.String, html._Html5NodeValidator]),
    _uriAttributeValidator: dart.definiteFunctionType(core.bool, [html.Element, core.String, core.String, html._Html5NodeValidator])
  }),
  names: ['_standardAttributeValidator', '_uriAttributeValidator']
});
html._Html5NodeValidator._standardAttributes = dart.constList(['*::class', '*::dir', '*::draggable', '*::hidden', '*::id', '*::inert', '*::itemprop', '*::itemref', '*::itemscope', '*::lang', '*::spellcheck', '*::title', '*::translate', 'A::accesskey', 'A::coords', 'A::hreflang', 'A::name', 'A::shape', 'A::tabindex', 'A::target', 'A::type', 'AREA::accesskey', 'AREA::alt', 'AREA::coords', 'AREA::nohref', 'AREA::shape', 'AREA::tabindex', 'AREA::target', 'AUDIO::controls', 'AUDIO::loop', 'AUDIO::mediagroup', 'AUDIO::muted', 'AUDIO::preload', 'BDO::dir', 'BODY::alink', 'BODY::bgcolor', 'BODY::link', 'BODY::text', 'BODY::vlink', 'BR::clear', 'BUTTON::accesskey', 'BUTTON::disabled', 'BUTTON::name', 'BUTTON::tabindex', 'BUTTON::type', 'BUTTON::value', 'CANVAS::height', 'CANVAS::width', 'CAPTION::align', 'COL::align', 'COL::char', 'COL::charoff', 'COL::span', 'COL::valign', 'COL::width', 'COLGROUP::align', 'COLGROUP::char', 'COLGROUP::charoff', 'COLGROUP::span', 'COLGROUP::valign', 'COLGROUP::width', 'COMMAND::checked', 'COMMAND::command', 'COMMAND::disabled', 'COMMAND::label', 'COMMAND::radiogroup', 'COMMAND::type', 'DATA::value', 'DEL::datetime', 'DETAILS::open', 'DIR::compact', 'DIV::align', 'DL::compact', 'FIELDSET::disabled', 'FONT::color', 'FONT::face', 'FONT::size', 'FORM::accept', 'FORM::autocomplete', 'FORM::enctype', 'FORM::method', 'FORM::name', 'FORM::novalidate', 'FORM::target', 'FRAME::name', 'H1::align', 'H2::align', 'H3::align', 'H4::align', 'H5::align', 'H6::align', 'HR::align', 'HR::noshade', 'HR::size', 'HR::width', 'HTML::version', 'IFRAME::align', 'IFRAME::frameborder', 'IFRAME::height', 'IFRAME::marginheight', 'IFRAME::marginwidth', 'IFRAME::width', 'IMG::align', 'IMG::alt', 'IMG::border', 'IMG::height', 'IMG::hspace', 'IMG::ismap', 'IMG::name', 'IMG::usemap', 'IMG::vspace', 'IMG::width', 'INPUT::accept', 'INPUT::accesskey', 'INPUT::align', 'INPUT::alt', 'INPUT::autocomplete', 'INPUT::autofocus', 'INPUT::checked', 'INPUT::disabled', 'INPUT::inputmode', 'INPUT::ismap', 'INPUT::list', 'INPUT::max', 'INPUT::maxlength', 'INPUT::min', 'INPUT::multiple', 'INPUT::name', 'INPUT::placeholder', 'INPUT::readonly', 'INPUT::required', 'INPUT::size', 'INPUT::step', 'INPUT::tabindex', 'INPUT::type', 'INPUT::usemap', 'INPUT::value', 'INS::datetime', 'KEYGEN::disabled', 'KEYGEN::keytype', 'KEYGEN::name', 'LABEL::accesskey', 'LABEL::for', 'LEGEND::accesskey', 'LEGEND::align', 'LI::type', 'LI::value', 'LINK::sizes', 'MAP::name', 'MENU::compact', 'MENU::label', 'MENU::type', 'METER::high', 'METER::low', 'METER::max', 'METER::min', 'METER::value', 'OBJECT::typemustmatch', 'OL::compact', 'OL::reversed', 'OL::start', 'OL::type', 'OPTGROUP::disabled', 'OPTGROUP::label', 'OPTION::disabled', 'OPTION::label', 'OPTION::selected', 'OPTION::value', 'OUTPUT::for', 'OUTPUT::name', 'P::align', 'PRE::width', 'PROGRESS::max', 'PROGRESS::min', 'PROGRESS::value', 'SELECT::autocomplete', 'SELECT::disabled', 'SELECT::multiple', 'SELECT::name', 'SELECT::required', 'SELECT::size', 'SELECT::tabindex', 'SOURCE::type', 'TABLE::align', 'TABLE::bgcolor', 'TABLE::border', 'TABLE::cellpadding', 'TABLE::cellspacing', 'TABLE::frame', 'TABLE::rules', 'TABLE::summary', 'TABLE::width', 'TBODY::align', 'TBODY::char', 'TBODY::charoff', 'TBODY::valign', 'TD::abbr', 'TD::align', 'TD::axis', 'TD::bgcolor', 'TD::char', 'TD::charoff', 'TD::colspan', 'TD::headers', 'TD::height', 'TD::nowrap', 'TD::rowspan', 'TD::scope', 'TD::valign', 'TD::width', 'TEXTAREA::accesskey', 'TEXTAREA::autocomplete', 'TEXTAREA::cols', 'TEXTAREA::disabled', 'TEXTAREA::inputmode', 'TEXTAREA::name', 'TEXTAREA::placeholder', 'TEXTAREA::readonly', 'TEXTAREA::required', 'TEXTAREA::rows', 'TEXTAREA::tabindex', 'TEXTAREA::wrap', 'TFOOT::align', 'TFOOT::char', 'TFOOT::charoff', 'TFOOT::valign', 'TH::abbr', 'TH::align', 'TH::axis', 'TH::bgcolor', 'TH::char', 'TH::charoff', 'TH::colspan', 'TH::headers', 'TH::height', 'TH::nowrap', 'TH::rowspan', 'TH::scope', 'TH::valign', 'TH::width', 'THEAD::align', 'THEAD::char', 'THEAD::charoff', 'THEAD::valign', 'TR::align', 'TR::bgcolor', 'TR::char', 'TR::charoff', 'TR::valign', 'TRACK::default', 'TRACK::kind', 'TRACK::label', 'TRACK::srclang', 'UL::compact', 'UL::type', 'VIDEO::controls', 'VIDEO::height', 'VIDEO::loop', 'VIDEO::mediagroup', 'VIDEO::muted', 'VIDEO::preload', 'VIDEO::width'], core.String);
html._Html5NodeValidator._uriAttributes = dart.constList(['A::href', 'AREA::href', 'BLOCKQUOTE::cite', 'BODY::background', 'COMMAND::icon', 'DEL::cite', 'FORM::action', 'IMG::src', 'INPUT::src', 'INS::cite', 'Q::cite', 'VIDEO::poster'], core.String);
dart.defineLazy(html._Html5NodeValidator, {
  get _allowedElements() {
    return SetOfString().from(JSArrayOfString().of(['A', 'ABBR', 'ACRONYM', 'ADDRESS', 'AREA', 'ARTICLE', 'ASIDE', 'AUDIO', 'B', 'BDI', 'BDO', 'BIG', 'BLOCKQUOTE', 'BR', 'BUTTON', 'CANVAS', 'CAPTION', 'CENTER', 'CITE', 'CODE', 'COL', 'COLGROUP', 'COMMAND', 'DATA', 'DATALIST', 'DD', 'DEL', 'DETAILS', 'DFN', 'DIR', 'DIV', 'DL', 'DT', 'EM', 'FIELDSET', 'FIGCAPTION', 'FIGURE', 'FONT', 'FOOTER', 'FORM', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEADER', 'HGROUP', 'HR', 'I', 'IFRAME', 'IMG', 'INPUT', 'INS', 'KBD', 'LABEL', 'LEGEND', 'LI', 'MAP', 'MARK', 'MENU', 'METER', 'NAV', 'NOBR', 'OL', 'OPTGROUP', 'OPTION', 'OUTPUT', 'P', 'PRE', 'PROGRESS', 'Q', 'S', 'SAMP', 'SECTION', 'SELECT', 'SMALL', 'SOURCE', 'SPAN', 'STRIKE', 'STRONG', 'SUB', 'SUMMARY', 'SUP', 'TABLE', 'TBODY', 'TD', 'TEXTAREA', 'TFOOT', 'TH', 'THEAD', 'TIME', 'TR', 'TRACK', 'TT', 'U', 'UL', 'VAR', 'VIDEO', 'WBR']));
  },
  get _attributeValidators() {
    return dart.map({}, core.String, core.Function);
  }
});
html.KeyCode = class KeyCode extends core.Object {
  static isCharacterKey(keyCode) {
    if (dart.notNull(keyCode) >= html.KeyCode.ZERO && dart.notNull(keyCode) <= html.KeyCode.NINE || dart.notNull(keyCode) >= html.KeyCode.NUM_ZERO && dart.notNull(keyCode) <= html.KeyCode.NUM_MULTIPLY || dart.notNull(keyCode) >= html.KeyCode.A && dart.notNull(keyCode) <= html.KeyCode.Z) {
      return true;
    }
    if (dart.test(html_common.Device.isWebKit) && keyCode == 0) {
      return true;
    }
    return keyCode == html.KeyCode.SPACE || keyCode == html.KeyCode.QUESTION_MARK || keyCode == html.KeyCode.NUM_PLUS || keyCode == html.KeyCode.NUM_MINUS || keyCode == html.KeyCode.NUM_PERIOD || keyCode == html.KeyCode.NUM_DIVISION || keyCode == html.KeyCode.SEMICOLON || keyCode == html.KeyCode.FF_SEMICOLON || keyCode == html.KeyCode.DASH || keyCode == html.KeyCode.EQUALS || keyCode == html.KeyCode.FF_EQUALS || keyCode == html.KeyCode.COMMA || keyCode == html.KeyCode.PERIOD || keyCode == html.KeyCode.SLASH || keyCode == html.KeyCode.APOSTROPHE || keyCode == html.KeyCode.SINGLE_QUOTE || keyCode == html.KeyCode.OPEN_SQUARE_BRACKET || keyCode == html.KeyCode.BACKSLASH || keyCode == html.KeyCode.CLOSE_SQUARE_BRACKET;
  }
  static _convertKeyCodeToKeyName(keyCode) {
    switch (keyCode) {
      case html.KeyCode.ALT:
      {
        return html._KeyName.ALT;
      }
      case html.KeyCode.BACKSPACE:
      {
        return html._KeyName.BACKSPACE;
      }
      case html.KeyCode.CAPS_LOCK:
      {
        return html._KeyName.CAPS_LOCK;
      }
      case html.KeyCode.CTRL:
      {
        return html._KeyName.CONTROL;
      }
      case html.KeyCode.DELETE:
      {
        return html._KeyName.DEL;
      }
      case html.KeyCode.DOWN:
      {
        return html._KeyName.DOWN;
      }
      case html.KeyCode.END:
      {
        return html._KeyName.END;
      }
      case html.KeyCode.ENTER:
      {
        return html._KeyName.ENTER;
      }
      case html.KeyCode.ESC:
      {
        return html._KeyName.ESC;
      }
      case html.KeyCode.F1:
      {
        return html._KeyName.F1;
      }
      case html.KeyCode.F2:
      {
        return html._KeyName.F2;
      }
      case html.KeyCode.F3:
      {
        return html._KeyName.F3;
      }
      case html.KeyCode.F4:
      {
        return html._KeyName.F4;
      }
      case html.KeyCode.F5:
      {
        return html._KeyName.F5;
      }
      case html.KeyCode.F6:
      {
        return html._KeyName.F6;
      }
      case html.KeyCode.F7:
      {
        return html._KeyName.F7;
      }
      case html.KeyCode.F8:
      {
        return html._KeyName.F8;
      }
      case html.KeyCode.F9:
      {
        return html._KeyName.F9;
      }
      case html.KeyCode.F10:
      {
        return html._KeyName.F10;
      }
      case html.KeyCode.F11:
      {
        return html._KeyName.F11;
      }
      case html.KeyCode.F12:
      {
        return html._KeyName.F12;
      }
      case html.KeyCode.HOME:
      {
        return html._KeyName.HOME;
      }
      case html.KeyCode.INSERT:
      {
        return html._KeyName.INSERT;
      }
      case html.KeyCode.LEFT:
      {
        return html._KeyName.LEFT;
      }
      case html.KeyCode.META:
      {
        return html._KeyName.META;
      }
      case html.KeyCode.NUMLOCK:
      {
        return html._KeyName.NUM_LOCK;
      }
      case html.KeyCode.PAGE_DOWN:
      {
        return html._KeyName.PAGE_DOWN;
      }
      case html.KeyCode.PAGE_UP:
      {
        return html._KeyName.PAGE_UP;
      }
      case html.KeyCode.PAUSE:
      {
        return html._KeyName.PAUSE;
      }
      case html.KeyCode.PRINT_SCREEN:
      {
        return html._KeyName.PRINT_SCREEN;
      }
      case html.KeyCode.RIGHT:
      {
        return html._KeyName.RIGHT;
      }
      case html.KeyCode.SCROLL_LOCK:
      {
        return html._KeyName.SCROLL;
      }
      case html.KeyCode.SHIFT:
      {
        return html._KeyName.SHIFT;
      }
      case html.KeyCode.SPACE:
      {
        return html._KeyName.SPACEBAR;
      }
      case html.KeyCode.TAB:
      {
        return html._KeyName.TAB;
      }
      case html.KeyCode.UP:
      {
        return html._KeyName.UP;
      }
      case html.KeyCode.WIN_IME:
      case html.KeyCode.WIN_KEY:
      case html.KeyCode.WIN_KEY_LEFT:
      case html.KeyCode.WIN_KEY_RIGHT:
      {
        return html._KeyName.WIN;
      }
      default:
      {
        return html._KeyName.UNIDENTIFIED;
      }
    }
    return html._KeyName.UNIDENTIFIED;
  }
};
dart.setSignature(html.KeyCode, {
  sfields: () => ({
    WIN_KEY_FF_LINUX: core.int,
    MAC_ENTER: core.int,
    BACKSPACE: core.int,
    TAB: core.int,
    NUM_CENTER: core.int,
    ENTER: core.int,
    SHIFT: core.int,
    CTRL: core.int,
    ALT: core.int,
    PAUSE: core.int,
    CAPS_LOCK: core.int,
    ESC: core.int,
    SPACE: core.int,
    PAGE_UP: core.int,
    PAGE_DOWN: core.int,
    END: core.int,
    HOME: core.int,
    LEFT: core.int,
    UP: core.int,
    RIGHT: core.int,
    DOWN: core.int,
    NUM_NORTH_EAST: core.int,
    NUM_SOUTH_EAST: core.int,
    NUM_SOUTH_WEST: core.int,
    NUM_NORTH_WEST: core.int,
    NUM_WEST: core.int,
    NUM_NORTH: core.int,
    NUM_EAST: core.int,
    NUM_SOUTH: core.int,
    PRINT_SCREEN: core.int,
    INSERT: core.int,
    NUM_INSERT: core.int,
    DELETE: core.int,
    NUM_DELETE: core.int,
    ZERO: core.int,
    ONE: core.int,
    TWO: core.int,
    THREE: core.int,
    FOUR: core.int,
    FIVE: core.int,
    SIX: core.int,
    SEVEN: core.int,
    EIGHT: core.int,
    NINE: core.int,
    FF_SEMICOLON: core.int,
    FF_EQUALS: core.int,
    QUESTION_MARK: core.int,
    A: core.int,
    B: core.int,
    C: core.int,
    D: core.int,
    E: core.int,
    F: core.int,
    G: core.int,
    H: core.int,
    I: core.int,
    J: core.int,
    K: core.int,
    L: core.int,
    M: core.int,
    N: core.int,
    O: core.int,
    P: core.int,
    Q: core.int,
    R: core.int,
    S: core.int,
    T: core.int,
    U: core.int,
    V: core.int,
    W: core.int,
    X: core.int,
    Y: core.int,
    Z: core.int,
    META: core.int,
    WIN_KEY_LEFT: core.int,
    WIN_KEY_RIGHT: core.int,
    CONTEXT_MENU: core.int,
    NUM_ZERO: core.int,
    NUM_ONE: core.int,
    NUM_TWO: core.int,
    NUM_THREE: core.int,
    NUM_FOUR: core.int,
    NUM_FIVE: core.int,
    NUM_SIX: core.int,
    NUM_SEVEN: core.int,
    NUM_EIGHT: core.int,
    NUM_NINE: core.int,
    NUM_MULTIPLY: core.int,
    NUM_PLUS: core.int,
    NUM_MINUS: core.int,
    NUM_PERIOD: core.int,
    NUM_DIVISION: core.int,
    F1: core.int,
    F2: core.int,
    F3: core.int,
    F4: core.int,
    F5: core.int,
    F6: core.int,
    F7: core.int,
    F8: core.int,
    F9: core.int,
    F10: core.int,
    F11: core.int,
    F12: core.int,
    NUMLOCK: core.int,
    SCROLL_LOCK: core.int,
    FIRST_MEDIA_KEY: core.int,
    LAST_MEDIA_KEY: core.int,
    SEMICOLON: core.int,
    DASH: core.int,
    EQUALS: core.int,
    COMMA: core.int,
    PERIOD: core.int,
    SLASH: core.int,
    APOSTROPHE: core.int,
    TILDE: core.int,
    SINGLE_QUOTE: core.int,
    OPEN_SQUARE_BRACKET: core.int,
    BACKSLASH: core.int,
    CLOSE_SQUARE_BRACKET: core.int,
    WIN_KEY: core.int,
    MAC_FF_META: core.int,
    WIN_IME: core.int,
    UNKNOWN: core.int
  }),
  statics: () => ({
    isCharacterKey: dart.definiteFunctionType(core.bool, [core.int]),
    _convertKeyCodeToKeyName: dart.definiteFunctionType(core.String, [core.int])
  }),
  names: ['isCharacterKey', '_convertKeyCodeToKeyName']
});
html.KeyCode.WIN_KEY_FF_LINUX = 0;
html.KeyCode.MAC_ENTER = 3;
html.KeyCode.BACKSPACE = 8;
html.KeyCode.TAB = 9;
html.KeyCode.NUM_CENTER = 12;
html.KeyCode.ENTER = 13;
html.KeyCode.SHIFT = 16;
html.KeyCode.CTRL = 17;
html.KeyCode.ALT = 18;
html.KeyCode.PAUSE = 19;
html.KeyCode.CAPS_LOCK = 20;
html.KeyCode.ESC = 27;
html.KeyCode.SPACE = 32;
html.KeyCode.PAGE_UP = 33;
html.KeyCode.PAGE_DOWN = 34;
html.KeyCode.END = 35;
html.KeyCode.HOME = 36;
html.KeyCode.LEFT = 37;
html.KeyCode.UP = 38;
html.KeyCode.RIGHT = 39;
html.KeyCode.DOWN = 40;
html.KeyCode.NUM_NORTH_EAST = 33;
html.KeyCode.NUM_SOUTH_EAST = 34;
html.KeyCode.NUM_SOUTH_WEST = 35;
html.KeyCode.NUM_NORTH_WEST = 36;
html.KeyCode.NUM_WEST = 37;
html.KeyCode.NUM_NORTH = 38;
html.KeyCode.NUM_EAST = 39;
html.KeyCode.NUM_SOUTH = 40;
html.KeyCode.PRINT_SCREEN = 44;
html.KeyCode.INSERT = 45;
html.KeyCode.NUM_INSERT = 45;
html.KeyCode.DELETE = 46;
html.KeyCode.NUM_DELETE = 46;
html.KeyCode.ZERO = 48;
html.KeyCode.ONE = 49;
html.KeyCode.TWO = 50;
html.KeyCode.THREE = 51;
html.KeyCode.FOUR = 52;
html.KeyCode.FIVE = 53;
html.KeyCode.SIX = 54;
html.KeyCode.SEVEN = 55;
html.KeyCode.EIGHT = 56;
html.KeyCode.NINE = 57;
html.KeyCode.FF_SEMICOLON = 59;
html.KeyCode.FF_EQUALS = 61;
html.KeyCode.QUESTION_MARK = 63;
html.KeyCode.A = 65;
html.KeyCode.B = 66;
html.KeyCode.C = 67;
html.KeyCode.D = 68;
html.KeyCode.E = 69;
html.KeyCode.F = 70;
html.KeyCode.G = 71;
html.KeyCode.H = 72;
html.KeyCode.I = 73;
html.KeyCode.J = 74;
html.KeyCode.K = 75;
html.KeyCode.L = 76;
html.KeyCode.M = 77;
html.KeyCode.N = 78;
html.KeyCode.O = 79;
html.KeyCode.P = 80;
html.KeyCode.Q = 81;
html.KeyCode.R = 82;
html.KeyCode.S = 83;
html.KeyCode.T = 84;
html.KeyCode.U = 85;
html.KeyCode.V = 86;
html.KeyCode.W = 87;
html.KeyCode.X = 88;
html.KeyCode.Y = 89;
html.KeyCode.Z = 90;
html.KeyCode.META = 91;
html.KeyCode.WIN_KEY_LEFT = 91;
html.KeyCode.WIN_KEY_RIGHT = 92;
html.KeyCode.CONTEXT_MENU = 93;
html.KeyCode.NUM_ZERO = 96;
html.KeyCode.NUM_ONE = 97;
html.KeyCode.NUM_TWO = 98;
html.KeyCode.NUM_THREE = 99;
html.KeyCode.NUM_FOUR = 100;
html.KeyCode.NUM_FIVE = 101;
html.KeyCode.NUM_SIX = 102;
html.KeyCode.NUM_SEVEN = 103;
html.KeyCode.NUM_EIGHT = 104;
html.KeyCode.NUM_NINE = 105;
html.KeyCode.NUM_MULTIPLY = 106;
html.KeyCode.NUM_PLUS = 107;
html.KeyCode.NUM_MINUS = 109;
html.KeyCode.NUM_PERIOD = 110;
html.KeyCode.NUM_DIVISION = 111;
html.KeyCode.F1 = 112;
html.KeyCode.F2 = 113;
html.KeyCode.F3 = 114;
html.KeyCode.F4 = 115;
html.KeyCode.F5 = 116;
html.KeyCode.F6 = 117;
html.KeyCode.F7 = 118;
html.KeyCode.F8 = 119;
html.KeyCode.F9 = 120;
html.KeyCode.F10 = 121;
html.KeyCode.F11 = 122;
html.KeyCode.F12 = 123;
html.KeyCode.NUMLOCK = 144;
html.KeyCode.SCROLL_LOCK = 145;
html.KeyCode.FIRST_MEDIA_KEY = 166;
html.KeyCode.LAST_MEDIA_KEY = 183;
html.KeyCode.SEMICOLON = 186;
html.KeyCode.DASH = 189;
html.KeyCode.EQUALS = 187;
html.KeyCode.COMMA = 188;
html.KeyCode.PERIOD = 190;
html.KeyCode.SLASH = 191;
html.KeyCode.APOSTROPHE = 192;
html.KeyCode.TILDE = 192;
html.KeyCode.SINGLE_QUOTE = 222;
html.KeyCode.OPEN_SQUARE_BRACKET = 219;
html.KeyCode.BACKSLASH = 220;
html.KeyCode.CLOSE_SQUARE_BRACKET = 221;
html.KeyCode.WIN_KEY = 224;
html.KeyCode.MAC_FF_META = 224;
html.KeyCode.WIN_IME = 229;
html.KeyCode.UNKNOWN = -1;
html.KeyLocation = class KeyLocation extends core.Object {};
dart.setSignature(html.KeyLocation, {
  sfields: () => ({
    STANDARD: core.int,
    LEFT: core.int,
    RIGHT: core.int,
    NUMPAD: core.int,
    MOBILE: core.int,
    JOYSTICK: core.int
  })
});
html.KeyLocation.STANDARD = 0;
html.KeyLocation.LEFT = 1;
html.KeyLocation.RIGHT = 2;
html.KeyLocation.NUMPAD = 3;
html.KeyLocation.MOBILE = 4;
html.KeyLocation.JOYSTICK = 5;
html._KeyName = class _KeyName extends core.Object {};
dart.setSignature(html._KeyName, {
  sfields: () => ({
    ACCEPT: core.String,
    ADD: core.String,
    AGAIN: core.String,
    ALL_CANDIDATES: core.String,
    ALPHANUMERIC: core.String,
    ALT: core.String,
    ALT_GRAPH: core.String,
    APPS: core.String,
    ATTN: core.String,
    BROWSER_BACK: core.String,
    BROWSER_FAVORTIES: core.String,
    BROWSER_FORWARD: core.String,
    BROWSER_NAME: core.String,
    BROWSER_REFRESH: core.String,
    BROWSER_SEARCH: core.String,
    BROWSER_STOP: core.String,
    CAMERA: core.String,
    CAPS_LOCK: core.String,
    CLEAR: core.String,
    CODE_INPUT: core.String,
    COMPOSE: core.String,
    CONTROL: core.String,
    CRSEL: core.String,
    CONVERT: core.String,
    COPY: core.String,
    CUT: core.String,
    DECIMAL: core.String,
    DIVIDE: core.String,
    DOWN: core.String,
    DOWN_LEFT: core.String,
    DOWN_RIGHT: core.String,
    EJECT: core.String,
    END: core.String,
    ENTER: core.String,
    ERASE_EOF: core.String,
    EXECUTE: core.String,
    EXSEL: core.String,
    FN: core.String,
    F1: core.String,
    F2: core.String,
    F3: core.String,
    F4: core.String,
    F5: core.String,
    F6: core.String,
    F7: core.String,
    F8: core.String,
    F9: core.String,
    F10: core.String,
    F11: core.String,
    F12: core.String,
    F13: core.String,
    F14: core.String,
    F15: core.String,
    F16: core.String,
    F17: core.String,
    F18: core.String,
    F19: core.String,
    F20: core.String,
    F21: core.String,
    F22: core.String,
    F23: core.String,
    F24: core.String,
    FINAL_MODE: core.String,
    FIND: core.String,
    FULL_WIDTH: core.String,
    HALF_WIDTH: core.String,
    HANGUL_MODE: core.String,
    HANJA_MODE: core.String,
    HELP: core.String,
    HIRAGANA: core.String,
    HOME: core.String,
    INSERT: core.String,
    JAPANESE_HIRAGANA: core.String,
    JAPANESE_KATAKANA: core.String,
    JAPANESE_ROMAJI: core.String,
    JUNJA_MODE: core.String,
    KANA_MODE: core.String,
    KANJI_MODE: core.String,
    KATAKANA: core.String,
    LAUNCH_APPLICATION_1: core.String,
    LAUNCH_APPLICATION_2: core.String,
    LAUNCH_MAIL: core.String,
    LEFT: core.String,
    MENU: core.String,
    META: core.String,
    MEDIA_NEXT_TRACK: core.String,
    MEDIA_PAUSE_PLAY: core.String,
    MEDIA_PREVIOUS_TRACK: core.String,
    MEDIA_STOP: core.String,
    MODE_CHANGE: core.String,
    NEXT_CANDIDATE: core.String,
    NON_CONVERT: core.String,
    NUM_LOCK: core.String,
    PAGE_DOWN: core.String,
    PAGE_UP: core.String,
    PASTE: core.String,
    PAUSE: core.String,
    PLAY: core.String,
    POWER: core.String,
    PREVIOUS_CANDIDATE: core.String,
    PRINT_SCREEN: core.String,
    PROCESS: core.String,
    PROPS: core.String,
    RIGHT: core.String,
    ROMAN_CHARACTERS: core.String,
    SCROLL: core.String,
    SELECT: core.String,
    SELECT_MEDIA: core.String,
    SEPARATOR: core.String,
    SHIFT: core.String,
    SOFT_1: core.String,
    SOFT_2: core.String,
    SOFT_3: core.String,
    SOFT_4: core.String,
    STOP: core.String,
    SUBTRACT: core.String,
    SYMBOL_LOCK: core.String,
    UP: core.String,
    UP_LEFT: core.String,
    UP_RIGHT: core.String,
    UNDO: core.String,
    VOLUME_DOWN: core.String,
    VOLUMN_MUTE: core.String,
    VOLUMN_UP: core.String,
    WIN: core.String,
    ZOOM: core.String,
    BACKSPACE: core.String,
    TAB: core.String,
    CANCEL: core.String,
    ESC: core.String,
    SPACEBAR: core.String,
    DEL: core.String,
    DEAD_GRAVE: core.String,
    DEAD_EACUTE: core.String,
    DEAD_CIRCUMFLEX: core.String,
    DEAD_TILDE: core.String,
    DEAD_MACRON: core.String,
    DEAD_BREVE: core.String,
    DEAD_ABOVE_DOT: core.String,
    DEAD_UMLAUT: core.String,
    DEAD_ABOVE_RING: core.String,
    DEAD_DOUBLEACUTE: core.String,
    DEAD_CARON: core.String,
    DEAD_CEDILLA: core.String,
    DEAD_OGONEK: core.String,
    DEAD_IOTA: core.String,
    DEAD_VOICED_SOUND: core.String,
    DEC_SEMIVOICED_SOUND: core.String,
    UNIDENTIFIED: core.String
  })
});
html._KeyName.ACCEPT = "Accept";
html._KeyName.ADD = "Add";
html._KeyName.AGAIN = "Again";
html._KeyName.ALL_CANDIDATES = "AllCandidates";
html._KeyName.ALPHANUMERIC = "Alphanumeric";
html._KeyName.ALT = "Alt";
html._KeyName.ALT_GRAPH = "AltGraph";
html._KeyName.APPS = "Apps";
html._KeyName.ATTN = "Attn";
html._KeyName.BROWSER_BACK = "BrowserBack";
html._KeyName.BROWSER_FAVORTIES = "BrowserFavorites";
html._KeyName.BROWSER_FORWARD = "BrowserForward";
html._KeyName.BROWSER_NAME = "BrowserHome";
html._KeyName.BROWSER_REFRESH = "BrowserRefresh";
html._KeyName.BROWSER_SEARCH = "BrowserSearch";
html._KeyName.BROWSER_STOP = "BrowserStop";
html._KeyName.CAMERA = "Camera";
html._KeyName.CAPS_LOCK = "CapsLock";
html._KeyName.CLEAR = "Clear";
html._KeyName.CODE_INPUT = "CodeInput";
html._KeyName.COMPOSE = "Compose";
html._KeyName.CONTROL = "Control";
html._KeyName.CRSEL = "Crsel";
html._KeyName.CONVERT = "Convert";
html._KeyName.COPY = "Copy";
html._KeyName.CUT = "Cut";
html._KeyName.DECIMAL = "Decimal";
html._KeyName.DIVIDE = "Divide";
html._KeyName.DOWN = "Down";
html._KeyName.DOWN_LEFT = "DownLeft";
html._KeyName.DOWN_RIGHT = "DownRight";
html._KeyName.EJECT = "Eject";
html._KeyName.END = "End";
html._KeyName.ENTER = "Enter";
html._KeyName.ERASE_EOF = "EraseEof";
html._KeyName.EXECUTE = "Execute";
html._KeyName.EXSEL = "Exsel";
html._KeyName.FN = "Fn";
html._KeyName.F1 = "F1";
html._KeyName.F2 = "F2";
html._KeyName.F3 = "F3";
html._KeyName.F4 = "F4";
html._KeyName.F5 = "F5";
html._KeyName.F6 = "F6";
html._KeyName.F7 = "F7";
html._KeyName.F8 = "F8";
html._KeyName.F9 = "F9";
html._KeyName.F10 = "F10";
html._KeyName.F11 = "F11";
html._KeyName.F12 = "F12";
html._KeyName.F13 = "F13";
html._KeyName.F14 = "F14";
html._KeyName.F15 = "F15";
html._KeyName.F16 = "F16";
html._KeyName.F17 = "F17";
html._KeyName.F18 = "F18";
html._KeyName.F19 = "F19";
html._KeyName.F20 = "F20";
html._KeyName.F21 = "F21";
html._KeyName.F22 = "F22";
html._KeyName.F23 = "F23";
html._KeyName.F24 = "F24";
html._KeyName.FINAL_MODE = "FinalMode";
html._KeyName.FIND = "Find";
html._KeyName.FULL_WIDTH = "FullWidth";
html._KeyName.HALF_WIDTH = "HalfWidth";
html._KeyName.HANGUL_MODE = "HangulMode";
html._KeyName.HANJA_MODE = "HanjaMode";
html._KeyName.HELP = "Help";
html._KeyName.HIRAGANA = "Hiragana";
html._KeyName.HOME = "Home";
html._KeyName.INSERT = "Insert";
html._KeyName.JAPANESE_HIRAGANA = "JapaneseHiragana";
html._KeyName.JAPANESE_KATAKANA = "JapaneseKatakana";
html._KeyName.JAPANESE_ROMAJI = "JapaneseRomaji";
html._KeyName.JUNJA_MODE = "JunjaMode";
html._KeyName.KANA_MODE = "KanaMode";
html._KeyName.KANJI_MODE = "KanjiMode";
html._KeyName.KATAKANA = "Katakana";
html._KeyName.LAUNCH_APPLICATION_1 = "LaunchApplication1";
html._KeyName.LAUNCH_APPLICATION_2 = "LaunchApplication2";
html._KeyName.LAUNCH_MAIL = "LaunchMail";
html._KeyName.LEFT = "Left";
html._KeyName.MENU = "Menu";
html._KeyName.META = "Meta";
html._KeyName.MEDIA_NEXT_TRACK = "MediaNextTrack";
html._KeyName.MEDIA_PAUSE_PLAY = "MediaPlayPause";
html._KeyName.MEDIA_PREVIOUS_TRACK = "MediaPreviousTrack";
html._KeyName.MEDIA_STOP = "MediaStop";
html._KeyName.MODE_CHANGE = "ModeChange";
html._KeyName.NEXT_CANDIDATE = "NextCandidate";
html._KeyName.NON_CONVERT = "Nonconvert";
html._KeyName.NUM_LOCK = "NumLock";
html._KeyName.PAGE_DOWN = "PageDown";
html._KeyName.PAGE_UP = "PageUp";
html._KeyName.PASTE = "Paste";
html._KeyName.PAUSE = "Pause";
html._KeyName.PLAY = "Play";
html._KeyName.POWER = "Power";
html._KeyName.PREVIOUS_CANDIDATE = "PreviousCandidate";
html._KeyName.PRINT_SCREEN = "PrintScreen";
html._KeyName.PROCESS = "Process";
html._KeyName.PROPS = "Props";
html._KeyName.RIGHT = "Right";
html._KeyName.ROMAN_CHARACTERS = "RomanCharacters";
html._KeyName.SCROLL = "Scroll";
html._KeyName.SELECT = "Select";
html._KeyName.SELECT_MEDIA = "SelectMedia";
html._KeyName.SEPARATOR = "Separator";
html._KeyName.SHIFT = "Shift";
html._KeyName.SOFT_1 = "Soft1";
html._KeyName.SOFT_2 = "Soft2";
html._KeyName.SOFT_3 = "Soft3";
html._KeyName.SOFT_4 = "Soft4";
html._KeyName.STOP = "Stop";
html._KeyName.SUBTRACT = "Subtract";
html._KeyName.SYMBOL_LOCK = "SymbolLock";
html._KeyName.UP = "Up";
html._KeyName.UP_LEFT = "UpLeft";
html._KeyName.UP_RIGHT = "UpRight";
html._KeyName.UNDO = "Undo";
html._KeyName.VOLUME_DOWN = "VolumeDown";
html._KeyName.VOLUMN_MUTE = "VolumeMute";
html._KeyName.VOLUMN_UP = "VolumeUp";
html._KeyName.WIN = "Win";
html._KeyName.ZOOM = "Zoom";
html._KeyName.BACKSPACE = "Backspace";
html._KeyName.TAB = "Tab";
html._KeyName.CANCEL = "Cancel";
html._KeyName.ESC = "Esc";
html._KeyName.SPACEBAR = "Spacebar";
html._KeyName.DEL = "Del";
html._KeyName.DEAD_GRAVE = "DeadGrave";
html._KeyName.DEAD_EACUTE = "DeadEacute";
html._KeyName.DEAD_CIRCUMFLEX = "DeadCircumflex";
html._KeyName.DEAD_TILDE = "DeadTilde";
html._KeyName.DEAD_MACRON = "DeadMacron";
html._KeyName.DEAD_BREVE = "DeadBreve";
html._KeyName.DEAD_ABOVE_DOT = "DeadAboveDot";
html._KeyName.DEAD_UMLAUT = "DeadUmlaut";
html._KeyName.DEAD_ABOVE_RING = "DeadAboveRing";
html._KeyName.DEAD_DOUBLEACUTE = "DeadDoubleacute";
html._KeyName.DEAD_CARON = "DeadCaron";
html._KeyName.DEAD_CEDILLA = "DeadCedilla";
html._KeyName.DEAD_OGONEK = "DeadOgonek";
html._KeyName.DEAD_IOTA = "DeadIota";
html._KeyName.DEAD_VOICED_SOUND = "DeadVoicedSound";
html._KeyName.DEC_SEMIVOICED_SOUND = "DeadSemivoicedSound";
html._KeyName.UNIDENTIFIED = "Unidentified";
const _stream = Symbol('_stream');
const _keyDownList = Symbol('_keyDownList');
const _capsLockOn = Symbol('_capsLockOn');
const _determineKeyCodeForKeypress = Symbol('_determineKeyCodeForKeypress');
const _findCharCodeKeyDown = Symbol('_findCharCodeKeyDown');
const _firesKeyPressEvent = Symbol('_firesKeyPressEvent');
const _normalizeKeyCodes = Symbol('_normalizeKeyCodes');
html._KeyboardEventHandler = class _KeyboardEventHandler extends html.EventStreamProvider$(html.KeyEvent) {
  forTarget(e, opts) {
    let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
    let handler = new html._KeyboardEventHandler.initializeAllEventListeners(this[_type], e);
    return handler[_stream];
  }
  new(type) {
    this[_keyDownList] = JSArrayOfKeyEvent().of([]);
    this[_type] = type;
    this[_stream] = new html._CustomKeyEventStreamImpl('event');
    this[_target] = null;
    super.new(html._KeyboardEventHandler._EVENT_TYPE);
  }
  initializeAllEventListeners(type, target) {
    this[_keyDownList] = JSArrayOfKeyEvent().of([]);
    this[_type] = type;
    this[_target] = target;
    this[_stream] = null;
    super.new(html._KeyboardEventHandler._EVENT_TYPE);
    html.Element.keyDownEvent.forTarget(this[_target], {useCapture: true}).listen(dart.bind(this, 'processKeyDown'));
    html.Element.keyPressEvent.forTarget(this[_target], {useCapture: true}).listen(dart.bind(this, 'processKeyPress'));
    html.Element.keyUpEvent.forTarget(this[_target], {useCapture: true}).listen(dart.bind(this, 'processKeyUp'));
    this[_stream] = new html._CustomKeyEventStreamImpl(this[_type]);
  }
  get [_capsLockOn]() {
    return this[_keyDownList][dartx.any](dart.fn(element => element.keyCode == html.KeyCode.CAPS_LOCK, KeyEventTobool()));
  }
  [_determineKeyCodeForKeypress](event) {
    for (let prevEvent of this[_keyDownList]) {
      if (prevEvent[_shadowCharCode] == event[dartx.charCode]) {
        return prevEvent.keyCode;
      }
      if ((dart.test(event[dartx.shiftKey]) || dart.test(this[_capsLockOn])) && dart.notNull(event[dartx.charCode]) >= dart.notNull("A"[dartx.codeUnits][dartx._get](0)) && dart.notNull(event[dartx.charCode]) <= dart.notNull("Z"[dartx.codeUnits][dartx._get](0)) && dart.notNull(event[dartx.charCode]) + dart.notNull(html._KeyboardEventHandler._ROMAN_ALPHABET_OFFSET) == prevEvent[_shadowCharCode]) {
        return prevEvent.keyCode;
      }
    }
    return html.KeyCode.UNKNOWN;
  }
  [_findCharCodeKeyDown](event) {
    if (event[dartx.keyLocation] == 3) {
      switch (event[dartx.keyCode]) {
        case html.KeyCode.NUM_ZERO:
        {
          return html.KeyCode.ZERO;
        }
        case html.KeyCode.NUM_ONE:
        {
          return html.KeyCode.ONE;
        }
        case html.KeyCode.NUM_TWO:
        {
          return html.KeyCode.TWO;
        }
        case html.KeyCode.NUM_THREE:
        {
          return html.KeyCode.THREE;
        }
        case html.KeyCode.NUM_FOUR:
        {
          return html.KeyCode.FOUR;
        }
        case html.KeyCode.NUM_FIVE:
        {
          return html.KeyCode.FIVE;
        }
        case html.KeyCode.NUM_SIX:
        {
          return html.KeyCode.SIX;
        }
        case html.KeyCode.NUM_SEVEN:
        {
          return html.KeyCode.SEVEN;
        }
        case html.KeyCode.NUM_EIGHT:
        {
          return html.KeyCode.EIGHT;
        }
        case html.KeyCode.NUM_NINE:
        {
          return html.KeyCode.NINE;
        }
        case html.KeyCode.NUM_MULTIPLY:
        {
          return 42;
        }
        case html.KeyCode.NUM_PLUS:
        {
          return 43;
        }
        case html.KeyCode.NUM_MINUS:
        {
          return 45;
        }
        case html.KeyCode.NUM_PERIOD:
        {
          return 46;
        }
        case html.KeyCode.NUM_DIVISION:
        {
          return 47;
        }
      }
    } else if (dart.notNull(event[dartx.keyCode]) >= 65 && dart.notNull(event[dartx.keyCode]) <= 90) {
      return dart.notNull(event[dartx.keyCode]) + dart.notNull(html._KeyboardEventHandler._ROMAN_ALPHABET_OFFSET);
    }
    switch (event[dartx.keyCode]) {
      case html.KeyCode.SEMICOLON:
      {
        return html.KeyCode.FF_SEMICOLON;
      }
      case html.KeyCode.EQUALS:
      {
        return html.KeyCode.FF_EQUALS;
      }
      case html.KeyCode.COMMA:
      {
        return 44;
      }
      case html.KeyCode.DASH:
      {
        return 45;
      }
      case html.KeyCode.PERIOD:
      {
        return 46;
      }
      case html.KeyCode.SLASH:
      {
        return 47;
      }
      case html.KeyCode.APOSTROPHE:
      {
        return 96;
      }
      case html.KeyCode.OPEN_SQUARE_BRACKET:
      {
        return 91;
      }
      case html.KeyCode.BACKSLASH:
      {
        return 92;
      }
      case html.KeyCode.CLOSE_SQUARE_BRACKET:
      {
        return 93;
      }
      case html.KeyCode.SINGLE_QUOTE:
      {
        return 39;
      }
    }
    return event[dartx.keyCode];
  }
  [_firesKeyPressEvent](event) {
    if (!dart.test(html_common.Device.isIE) && !dart.test(html_common.Device.isWebKit)) {
      return true;
    }
    if (dart.test(html_common.Device.userAgent[dartx.contains]('Mac')) && dart.test(event.altKey)) {
      return html.KeyCode.isCharacterKey(event.keyCode);
    }
    if (dart.test(event.altKey) && !dart.test(event.ctrlKey)) {
      return false;
    }
    if (!dart.test(event.shiftKey) && (this[_keyDownList][dartx.last].keyCode == html.KeyCode.CTRL || this[_keyDownList][dartx.last].keyCode == html.KeyCode.ALT || dart.test(html_common.Device.userAgent[dartx.contains]('Mac')) && this[_keyDownList][dartx.last].keyCode == html.KeyCode.META)) {
      return false;
    }
    if (dart.test(html_common.Device.isWebKit) && dart.test(event.ctrlKey) && dart.test(event.shiftKey) && (event.keyCode == html.KeyCode.BACKSLASH || event.keyCode == html.KeyCode.OPEN_SQUARE_BRACKET || event.keyCode == html.KeyCode.CLOSE_SQUARE_BRACKET || event.keyCode == html.KeyCode.TILDE || event.keyCode == html.KeyCode.SEMICOLON || event.keyCode == html.KeyCode.DASH || event.keyCode == html.KeyCode.EQUALS || event.keyCode == html.KeyCode.COMMA || event.keyCode == html.KeyCode.PERIOD || event.keyCode == html.KeyCode.SLASH || event.keyCode == html.KeyCode.APOSTROPHE || event.keyCode == html.KeyCode.SINGLE_QUOTE)) {
      return false;
    }
    switch (event.keyCode) {
      case html.KeyCode.ENTER:
      {
        return !dart.test(html_common.Device.isIE);
      }
      case html.KeyCode.ESC:
      {
        return !dart.test(html_common.Device.isWebKit);
      }
    }
    return html.KeyCode.isCharacterKey(event.keyCode);
  }
  [_normalizeKeyCodes](event) {
    if (dart.test(html_common.Device.isFirefox)) {
      switch (event[dartx.keyCode]) {
        case html.KeyCode.FF_EQUALS:
        {
          return html.KeyCode.EQUALS;
        }
        case html.KeyCode.FF_SEMICOLON:
        {
          return html.KeyCode.SEMICOLON;
        }
        case html.KeyCode.MAC_FF_META:
        {
          return html.KeyCode.META;
        }
        case html.KeyCode.WIN_KEY_FF_LINUX:
        {
          return html.KeyCode.WIN_KEY;
        }
      }
    }
    return event[dartx.keyCode];
  }
  processKeyDown(e) {
    if (dart.notNull(this[_keyDownList][dartx.length]) > 0 && (this[_keyDownList][dartx.last].keyCode == html.KeyCode.CTRL && !dart.test(e[dartx.ctrlKey]) || this[_keyDownList][dartx.last].keyCode == html.KeyCode.ALT && !dart.test(e[dartx.altKey]) || dart.test(html_common.Device.userAgent[dartx.contains]('Mac')) && this[_keyDownList][dartx.last].keyCode == html.KeyCode.META && !dart.test(e[dartx.metaKey]))) {
      this[_keyDownList][dartx.clear]();
    }
    let event = new html.KeyEvent.wrap(e);
    event[_shadowKeyCode] = this[_normalizeKeyCodes](event);
    event[_shadowCharCode] = this[_findCharCodeKeyDown](event);
    if (dart.notNull(this[_keyDownList][dartx.length]) > 0 && event.keyCode != this[_keyDownList][dartx.last].keyCode && !dart.test(this[_firesKeyPressEvent](event))) {
      this.processKeyPress(e);
    }
    this[_keyDownList][dartx.add](event);
    this[_stream].add(event);
  }
  processKeyPress(event) {
    let e = new html.KeyEvent.wrap(event);
    if (dart.test(html_common.Device.isIE)) {
      if (e.keyCode == html.KeyCode.ENTER || e.keyCode == html.KeyCode.ESC) {
        e[_shadowCharCode] = 0;
      } else {
        e[_shadowCharCode] = e.keyCode;
      }
    } else if (dart.test(html_common.Device.isOpera)) {
      e[_shadowCharCode] = dart.test(html.KeyCode.isCharacterKey(e.keyCode)) ? e.keyCode : 0;
    }
    e[_shadowKeyCode] = this[_determineKeyCodeForKeypress](e);
    if (e[_shadowKeyIdentifier] != null && dart.test(html._KeyboardEventHandler._keyIdentifier[dartx.containsKey](e[_shadowKeyIdentifier]))) {
      e[_shadowKeyCode] = html._KeyboardEventHandler._keyIdentifier[dartx._get](e[_shadowKeyIdentifier]);
    }
    e[_shadowAltKey] = this[_keyDownList][dartx.any](dart.fn(element => element.altKey, KeyEventTobool()));
    this[_stream].add(e);
  }
  processKeyUp(event) {
    let e = new html.KeyEvent.wrap(event);
    let toRemove = null;
    for (let key of this[_keyDownList]) {
      if (key.keyCode == e.keyCode) {
        toRemove = key;
      }
    }
    if (toRemove != null) {
      this[_keyDownList][dartx.removeWhere](dart.fn(element => dart.equals(element, toRemove), KeyEventTobool()));
    } else if (dart.notNull(this[_keyDownList][dartx.length]) > 0) {
      this[_keyDownList][dartx.removeLast]();
    }
    this[_stream].add(e);
  }
};
dart.addSimpleTypeTests(html._KeyboardEventHandler);
dart.defineNamedConstructor(html._KeyboardEventHandler, 'initializeAllEventListeners');
dart.setSignature(html._KeyboardEventHandler, {
  constructors: () => ({
    new: dart.definiteFunctionType(html._KeyboardEventHandler, [core.String]),
    initializeAllEventListeners: dart.definiteFunctionType(html._KeyboardEventHandler, [core.String, html.EventTarget])
  }),
  fields: () => ({
    [_keyDownList]: ListOfKeyEvent(),
    [_type]: core.String,
    [_target]: html.EventTarget,
    [_stream]: html._CustomKeyEventStreamImpl
  }),
  getters: () => ({[_capsLockOn]: dart.definiteFunctionType(core.bool, [])}),
  methods: () => ({
    forTarget: dart.definiteFunctionType(html.CustomStream$(html.KeyEvent), [html.EventTarget], {useCapture: core.bool}),
    [_determineKeyCodeForKeypress]: dart.definiteFunctionType(core.int, [html.KeyboardEvent]),
    [_findCharCodeKeyDown]: dart.definiteFunctionType(core.int, [html.KeyboardEvent]),
    [_firesKeyPressEvent]: dart.definiteFunctionType(core.bool, [html.KeyEvent]),
    [_normalizeKeyCodes]: dart.definiteFunctionType(core.int, [html.KeyboardEvent]),
    processKeyDown: dart.definiteFunctionType(dart.void, [html.KeyboardEvent]),
    processKeyPress: dart.definiteFunctionType(dart.void, [html.KeyboardEvent]),
    processKeyUp: dart.definiteFunctionType(dart.void, [html.KeyboardEvent])
  }),
  sfields: () => ({
    _ROMAN_ALPHABET_OFFSET: core.int,
    _EVENT_TYPE: core.String,
    _keyIdentifier: MapOfString$int()
  })
});
html._KeyboardEventHandler._EVENT_TYPE = 'KeyEvent';
html._KeyboardEventHandler._keyIdentifier = dart.const(dart.map({Up: html.KeyCode.UP, Down: html.KeyCode.DOWN, Left: html.KeyCode.LEFT, Right: html.KeyCode.RIGHT, Enter: html.KeyCode.ENTER, F1: html.KeyCode.F1, F2: html.KeyCode.F2, F3: html.KeyCode.F3, F4: html.KeyCode.F4, F5: html.KeyCode.F5, F6: html.KeyCode.F6, F7: html.KeyCode.F7, F8: html.KeyCode.F8, F9: html.KeyCode.F9, F10: html.KeyCode.F10, F11: html.KeyCode.F11, F12: html.KeyCode.F12, 'U+007F': html.KeyCode.DELETE, Home: html.KeyCode.HOME, End: html.KeyCode.END, PageUp: html.KeyCode.PAGE_UP, PageDown: html.KeyCode.PAGE_DOWN, Insert: html.KeyCode.INSERT}, core.String, core.int));
dart.defineLazy(html._KeyboardEventHandler, {
  get _ROMAN_ALPHABET_OFFSET() {
    return dart.notNull("a"[dartx.codeUnits][dartx._get](0)) - dart.notNull("A"[dartx.codeUnits][dartx._get](0));
  }
});
html.KeyboardEventStream = class KeyboardEventStream extends core.Object {
  static onKeyPress(target) {
    return new html._KeyboardEventHandler('keypress').forTarget(target);
  }
  static onKeyUp(target) {
    return new html._KeyboardEventHandler('keyup').forTarget(target);
  }
  static onKeyDown(target) {
    return new html._KeyboardEventHandler('keydown').forTarget(target);
  }
};
dart.setSignature(html.KeyboardEventStream, {
  statics: () => ({
    onKeyPress: dart.definiteFunctionType(html.CustomStream$(html.KeyEvent), [html.EventTarget]),
    onKeyUp: dart.definiteFunctionType(html.CustomStream$(html.KeyEvent), [html.EventTarget]),
    onKeyDown: dart.definiteFunctionType(html.CustomStream$(html.KeyEvent), [html.EventTarget])
  }),
  names: ['onKeyPress', 'onKeyUp', 'onKeyDown']
});
const _validators = Symbol('_validators');
html.NodeValidatorBuilder = class NodeValidatorBuilder extends core.Object {
  new() {
    this[_validators] = JSArrayOfNodeValidator().of([]);
  }
  common() {
    this[_validators] = JSArrayOfNodeValidator().of([]);
    this.allowHtml5();
    this.allowTemplating();
  }
  allowNavigation(uriPolicy) {
    if (uriPolicy === void 0) uriPolicy = null;
    if (uriPolicy == null) {
      uriPolicy = html.UriPolicy.new();
    }
    this.add(html._SimpleNodeValidator.allowNavigation(uriPolicy));
  }
  allowImages(uriPolicy) {
    if (uriPolicy === void 0) uriPolicy = null;
    if (uriPolicy == null) {
      uriPolicy = html.UriPolicy.new();
    }
    this.add(html._SimpleNodeValidator.allowImages(uriPolicy));
  }
  allowTextElements() {
    this.add(html._SimpleNodeValidator.allowTextElements());
  }
  allowInlineStyles(opts) {
    let tagName = opts && 'tagName' in opts ? opts.tagName : null;
    if (tagName == null) {
      tagName = '*';
    } else {
      tagName = tagName[dartx.toUpperCase]();
    }
    this.add(new html._SimpleNodeValidator(null, {allowedAttributes: JSArrayOfString().of([dart.str`${tagName}::style`])}));
  }
  allowHtml5(opts) {
    let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
    this.add(new html._Html5NodeValidator({uriPolicy: uriPolicy}));
  }
  allowSvg() {
    this.add(new html._SvgNodeValidator());
  }
  allowCustomElement(tagName, opts) {
    let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
    let attributes = opts && 'attributes' in opts ? opts.attributes : null;
    let uriAttributes = opts && 'uriAttributes' in opts ? opts.uriAttributes : null;
    let tagNameUpper = tagName[dartx.toUpperCase]();
    let attrs = dart.nullSafe(attributes, _ => _[dartx.map](core.String)(dart.fn(name => dart.str`${tagNameUpper}::${name[dartx.toLowerCase]()}`, StringToString())));
    let uriAttrs = dart.nullSafe(uriAttributes, _ => _[dartx.map](core.String)(dart.fn(name => dart.str`${tagNameUpper}::${name[dartx.toLowerCase]()}`, StringToString())));
    if (uriPolicy == null) {
      uriPolicy = html.UriPolicy.new();
    }
    this.add(new html._CustomElementNodeValidator(uriPolicy, JSArrayOfString().of([tagNameUpper]), attrs, uriAttrs, false, true));
  }
  allowTagExtension(tagName, baseName, opts) {
    let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
    let attributes = opts && 'attributes' in opts ? opts.attributes : null;
    let uriAttributes = opts && 'uriAttributes' in opts ? opts.uriAttributes : null;
    let baseNameUpper = baseName[dartx.toUpperCase]();
    let tagNameUpper = tagName[dartx.toUpperCase]();
    let attrs = dart.nullSafe(attributes, _ => _[dartx.map](core.String)(dart.fn(name => dart.str`${baseNameUpper}::${name[dartx.toLowerCase]()}`, StringToString())));
    let uriAttrs = dart.nullSafe(uriAttributes, _ => _[dartx.map](core.String)(dart.fn(name => dart.str`${baseNameUpper}::${name[dartx.toLowerCase]()}`, StringToString())));
    if (uriPolicy == null) {
      uriPolicy = html.UriPolicy.new();
    }
    this.add(new html._CustomElementNodeValidator(uriPolicy, JSArrayOfString().of([tagNameUpper, baseNameUpper]), attrs, uriAttrs, true, false));
  }
  allowElement(tagName, opts) {
    let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
    let attributes = opts && 'attributes' in opts ? opts.attributes : null;
    let uriAttributes = opts && 'uriAttributes' in opts ? opts.uriAttributes : null;
    this.allowCustomElement(tagName, {uriPolicy: uriPolicy, attributes: attributes, uriAttributes: uriAttributes});
  }
  allowTemplating() {
    this.add(new html._TemplatingNodeValidator());
  }
  add(validator) {
    this[_validators][dartx.add](validator);
  }
  allowsElement(element) {
    return this[_validators][dartx.any](dart.fn(v => v.allowsElement(element), NodeValidatorTobool()));
  }
  allowsAttribute(element, attributeName, value) {
    return this[_validators][dartx.any](dart.fn(v => v.allowsAttribute(element, attributeName, value), NodeValidatorTobool()));
  }
};
dart.defineNamedConstructor(html.NodeValidatorBuilder, 'common');
html.NodeValidatorBuilder[dart.implements] = () => [html.NodeValidator];
dart.setSignature(html.NodeValidatorBuilder, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.NodeValidatorBuilder, []),
    common: dart.definiteFunctionType(html.NodeValidatorBuilder, [])
  }),
  fields: () => ({[_validators]: ListOfNodeValidator()}),
  methods: () => ({
    allowNavigation: dart.definiteFunctionType(dart.void, [], [html.UriPolicy]),
    allowImages: dart.definiteFunctionType(dart.void, [], [html.UriPolicy]),
    allowTextElements: dart.definiteFunctionType(dart.void, []),
    allowInlineStyles: dart.definiteFunctionType(dart.void, [], {tagName: core.String}),
    allowHtml5: dart.definiteFunctionType(dart.void, [], {uriPolicy: html.UriPolicy}),
    allowSvg: dart.definiteFunctionType(dart.void, []),
    allowCustomElement: dart.definiteFunctionType(dart.void, [core.String], {uriPolicy: html.UriPolicy, attributes: IterableOfString(), uriAttributes: IterableOfString()}),
    allowTagExtension: dart.definiteFunctionType(dart.void, [core.String, core.String], {uriPolicy: html.UriPolicy, attributes: IterableOfString(), uriAttributes: IterableOfString()}),
    allowElement: dart.definiteFunctionType(dart.void, [core.String], {uriPolicy: html.UriPolicy, attributes: IterableOfString(), uriAttributes: IterableOfString()}),
    allowTemplating: dart.definiteFunctionType(dart.void, []),
    add: dart.definiteFunctionType(dart.void, [html.NodeValidator]),
    allowsElement: dart.definiteFunctionType(core.bool, [html.Element]),
    allowsAttribute: dart.definiteFunctionType(core.bool, [html.Element, core.String, core.String])
  })
});
let const;
let const;
let const;
let const;
let const;
let const;
let const;
let const;
let const;
let const;
html._SimpleNodeValidator = class _SimpleNodeValidator extends core.Object {
  static allowNavigation(uriPolicy) {
    return new html._SimpleNodeValidator(uriPolicy, {allowedElements: const || (const = dart.constList(['A', 'FORM'], core.String)), allowedAttributes: const || (const = dart.constList(['A::accesskey', 'A::coords', 'A::hreflang', 'A::name', 'A::shape', 'A::tabindex', 'A::target', 'A::type', 'FORM::accept', 'FORM::autocomplete', 'FORM::enctype', 'FORM::method', 'FORM::name', 'FORM::novalidate', 'FORM::target'], core.String)), allowedUriAttributes: const || (const = dart.constList(['A::href', 'FORM::action'], core.String))});
  }
  static allowImages(uriPolicy) {
    return new html._SimpleNodeValidator(uriPolicy, {allowedElements: const || (const = dart.constList(['IMG'], core.String)), allowedAttributes: const || (const = dart.constList(['IMG::align', 'IMG::alt', 'IMG::border', 'IMG::height', 'IMG::hspace', 'IMG::ismap', 'IMG::name', 'IMG::usemap', 'IMG::vspace', 'IMG::width'], core.String)), allowedUriAttributes: const || (const = dart.constList(['IMG::src'], core.String))});
  }
  static allowTextElements() {
    return new html._SimpleNodeValidator(null, {allowedElements: const || (const = dart.constList(['B', 'BLOCKQUOTE', 'BR', 'EM', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HR', 'I', 'LI', 'OL', 'P', 'SPAN', 'UL'], core.String))});
  }
  new(uriPolicy, opts) {
    let allowedElements = opts && 'allowedElements' in opts ? opts.allowedElements : null;
    let allowedAttributes = opts && 'allowedAttributes' in opts ? opts.allowedAttributes : null;
    let allowedUriAttributes = opts && 'allowedUriAttributes' in opts ? opts.allowedUriAttributes : null;
    this.allowedElements = SetOfString().new();
    this.allowedAttributes = SetOfString().new();
    this.allowedUriAttributes = SetOfString().new();
    this.uriPolicy = uriPolicy;
    this.allowedElements.addAll((allowedElements != null ? allowedElements : const || (const = dart.constList([], core.String))));
    allowedAttributes = allowedAttributes != null ? allowedAttributes : const || (const = dart.constList([], core.String));
    allowedUriAttributes = allowedUriAttributes != null ? allowedUriAttributes : const || (const = dart.constList([], core.String));
    let legalAttributes = allowedAttributes[dartx.where](dart.fn(x => !dart.test(html._Html5NodeValidator._uriAttributes[dartx.contains](x)), StringTobool()));
    let extraUriAttributes = allowedAttributes[dartx.where](dart.fn(x => html._Html5NodeValidator._uriAttributes[dartx.contains](x), StringTobool()));
    this.allowedAttributes.addAll(legalAttributes);
    this.allowedUriAttributes.addAll(allowedUriAttributes);
    this.allowedUriAttributes.addAll(extraUriAttributes);
  }
  allowsElement(element) {
    return this.allowedElements.contains(html.Element._safeTagName(element));
  }
  allowsAttribute(element, attributeName, value) {
    let tagName = html.Element._safeTagName(element);
    if (dart.test(this.allowedUriAttributes.contains(dart.str`${tagName}::${attributeName}`))) {
      return this.uriPolicy.allowsUri(value);
    } else if (dart.test(this.allowedUriAttributes.contains(dart.str`*::${attributeName}`))) {
      return this.uriPolicy.allowsUri(value);
    } else if (dart.test(this.allowedAttributes.contains(dart.str`${tagName}::${attributeName}`))) {
      return true;
    } else if (dart.test(this.allowedAttributes.contains(dart.str`*::${attributeName}`))) {
      return true;
    } else if (dart.test(this.allowedAttributes.contains(dart.str`${tagName}::*`))) {
      return true;
    } else if (dart.test(this.allowedAttributes.contains('*::*'))) {
      return true;
    }
    return false;
  }
};
html._SimpleNodeValidator[dart.implements] = () => [html.NodeValidator];
dart.setSignature(html._SimpleNodeValidator, {
  constructors: () => ({
    allowNavigation: dart.definiteFunctionType(html._SimpleNodeValidator, [html.UriPolicy]),
    allowImages: dart.definiteFunctionType(html._SimpleNodeValidator, [html.UriPolicy]),
    allowTextElements: dart.definiteFunctionType(html._SimpleNodeValidator, []),
    new: dart.definiteFunctionType(html._SimpleNodeValidator, [html.UriPolicy], {allowedElements: IterableOfString(), allowedAttributes: IterableOfString(), allowedUriAttributes: IterableOfString()})
  }),
  fields: () => ({
    allowedElements: SetOfString(),
    allowedAttributes: SetOfString(),
    allowedUriAttributes: SetOfString(),
    uriPolicy: html.UriPolicy
  }),
  methods: () => ({
    allowsElement: dart.definiteFunctionType(core.bool, [html.Element]),
    allowsAttribute: dart.definiteFunctionType(core.bool, [html.Element, core.String, core.String])
  })
});
html._CustomElementNodeValidator = class _CustomElementNodeValidator extends html._SimpleNodeValidator {
  new(uriPolicy, allowedElements, allowedAttributes, allowedUriAttributes, allowTypeExtension, allowCustomTag) {
    this.allowTypeExtension = allowTypeExtension == true;
    this.allowCustomTag = allowCustomTag == true;
    super.new(uriPolicy, {allowedElements: allowedElements, allowedAttributes: allowedAttributes, allowedUriAttributes: allowedUriAttributes});
  }
  allowsElement(element) {
    if (dart.test(this.allowTypeExtension)) {
      let isAttr = element[dartx.attributes][dartx._get]('is');
      if (isAttr != null) {
        return dart.test(this.allowedElements.contains(isAttr[dartx.toUpperCase]())) && dart.test(this.allowedElements.contains(html.Element._safeTagName(element)));
      }
    }
    return dart.test(this.allowCustomTag) && dart.test(this.allowedElements.contains(html.Element._safeTagName(element)));
  }
  allowsAttribute(element, attributeName, value) {
    if (dart.test(this.allowsElement(element))) {
      if (dart.test(this.allowTypeExtension) && attributeName == 'is' && dart.test(this.allowedElements.contains(value[dartx.toUpperCase]()))) {
        return true;
      }
      return super.allowsAttribute(element, attributeName, value);
    }
    return false;
  }
};
dart.setSignature(html._CustomElementNodeValidator, {
  constructors: () => ({new: dart.definiteFunctionType(html._CustomElementNodeValidator, [html.UriPolicy, IterableOfString(), IterableOfString(), IterableOfString(), core.bool, core.bool])}),
  fields: () => ({
    allowTypeExtension: core.bool,
    allowCustomTag: core.bool
  })
});
const _templateAttrs = Symbol('_templateAttrs');
html._TemplatingNodeValidator = class _TemplatingNodeValidator extends html._SimpleNodeValidator {
  new() {
    this[_templateAttrs] = SetOfString().from(html._TemplatingNodeValidator._TEMPLATE_ATTRS);
    super.new(null, {allowedElements: JSArrayOfString().of(['TEMPLATE']), allowedAttributes: html._TemplatingNodeValidator._TEMPLATE_ATTRS[dartx.map](core.String)(dart.fn(attr => dart.str`TEMPLATE::${attr}`, StringToString()))});
  }
  allowsAttribute(element, attributeName, value) {
    if (dart.test(super.allowsAttribute(element, attributeName, value))) {
      return true;
    }
    if (attributeName == 'template' && value == "") {
      return true;
    }
    if (element[dartx.attributes][dartx._get]('template') == "") {
      return this[_templateAttrs].contains(attributeName);
    }
    return false;
  }
};
dart.setSignature(html._TemplatingNodeValidator, {
  constructors: () => ({new: dart.definiteFunctionType(html._TemplatingNodeValidator, [])}),
  fields: () => ({[_templateAttrs]: SetOfString()}),
  sfields: () => ({_TEMPLATE_ATTRS: ListOfString()})
});
html._TemplatingNodeValidator._TEMPLATE_ATTRS = dart.constList(['bind', 'if', 'ref', 'repeat', 'syntax'], core.String);
html._SvgNodeValidator = class _SvgNodeValidator extends core.Object {
  allowsElement(element) {
    if (svg.ScriptElement.is(element)) {
      return false;
    }
    if (svg.SvgElement.is(element) && html.Element._safeTagName(element) == 'foreignObject') {
      return false;
    }
    if (svg.SvgElement.is(element)) {
      return true;
    }
    return false;
  }
  allowsAttribute(element, attributeName, value) {
    if (attributeName == 'is' || dart.test(attributeName[dartx.startsWith]('on'))) {
      return false;
    }
    return this.allowsElement(element);
  }
};
html._SvgNodeValidator[dart.implements] = () => [html.NodeValidator];
dart.setSignature(html._SvgNodeValidator, {
  methods: () => ({
    allowsElement: dart.definiteFunctionType(core.bool, [html.Element]),
    allowsAttribute: dart.definiteFunctionType(core.bool, [html.Element, core.String, core.String])
  })
});
html.ReadyState = class ReadyState extends core.Object {};
dart.setSignature(html.ReadyState, {
  sfields: () => ({
    LOADING: core.String,
    INTERACTIVE: core.String,
    COMPLETE: core.String
  })
});
html.ReadyState.LOADING = "loading";
html.ReadyState.INTERACTIVE = "interactive";
html.ReadyState.COMPLETE = "complete";
const _list = Symbol('_list');
html._WrappedList$ = dart.generic(E => {
  let _WrappedIteratorOfE = () => (_WrappedIteratorOfE = dart.constFn(html._WrappedIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let EAndEToint = () => (EAndEToint = dart.constFn(dart.functionType(core.int, [E, E])))();
  class _WrappedList extends collection.ListBase$(E) {
    new(list) {
      this[_list] = list;
    }
    get iterator() {
      return new (_WrappedIteratorOfE())(this[_list][dartx.iterator]);
    }
    get length() {
      return this[_list][dartx.length];
    }
    add(element) {
      E._check(element);
      this[_list][dartx.add](element);
    }
    remove(element) {
      return this[_list][dartx.remove](element);
    }
    clear() {
      this[_list][dartx.clear]();
    }
    _get(index) {
      return html._downcast(html.Node, E)(this[_list][dartx._get](index));
    }
    _set(index, value) {
      E._check(value);
      this[_list][dartx._set](index, value);
      return value;
    }
    set length(newLength) {
      this[_list][dartx.length] = newLength;
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      this[_list][dartx.sort](dart.fn((a, b) => compare(html._downcast(html.Node, E)(a), html._downcast(html.Node, E)(b)), NodeAndNodeToint()));
    }
    indexOf(element, start) {
      if (start === void 0) start = 0;
      return this[_list][dartx.indexOf](html.Node._check(element), start);
    }
    lastIndexOf(element, start) {
      if (start === void 0) start = null;
      return this[_list][dartx.lastIndexOf](html.Node._check(element), start);
    }
    insert(index, element) {
      E._check(element);
      return this[_list][dartx.insert](index, element);
    }
    removeAt(index) {
      return html._downcast(html.Node, E)(this[_list][dartx.removeAt](index));
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfE()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      this[_list][dartx.setRange](start, end, iterable, skipCount);
    }
    removeRange(start, end) {
      this[_list][dartx.removeRange](start, end);
    }
    replaceRange(start, end, iterable) {
      IterableOfE()._check(iterable);
      this[_list][dartx.replaceRange](start, end, iterable);
    }
    fillRange(start, end, fillValue) {
      if (fillValue === void 0) fillValue = null;
      E._check(fillValue);
      this[_list][dartx.fillRange](start, end, fillValue);
    }
    get rawList() {
      return this[_list];
    }
  }
  _WrappedList[dart.implements] = () => [html_common.NodeListWrapper];
  dart.setSignature(_WrappedList, {
    constructors: () => ({new: dart.definiteFunctionType(html._WrappedList$(E), [ListOfNode()])}),
    fields: () => ({[_list]: ListOfNode()}),
    getters: () => ({
      iterator: dart.definiteFunctionType(core.Iterator$(E), []),
      length: dart.definiteFunctionType(core.int, []),
      rawList: dart.definiteFunctionType(core.List$(html.Node), [])
    }),
    setters: () => ({length: dart.definiteFunctionType(dart.void, [core.int])}),
    methods: () => ({
      add: dart.definiteFunctionType(dart.void, [E]),
      _get: dart.definiteFunctionType(E, [core.int]),
      _set: dart.definiteFunctionType(dart.void, [core.int, E]),
      sort: dart.definiteFunctionType(dart.void, [], [EAndEToint()]),
      insert: dart.definiteFunctionType(dart.void, [core.int, E]),
      removeAt: dart.definiteFunctionType(E, [core.int]),
      setRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfE()], [core.int]),
      replaceRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfE()]),
      fillRange: dart.definiteFunctionType(dart.void, [core.int, core.int], [E])
    })
  });
  dart.defineExtensionMembers(_WrappedList, [
    'add',
    'remove',
    'clear',
    '_get',
    '_set',
    'sort',
    'indexOf',
    'lastIndexOf',
    'insert',
    'removeAt',
    'setRange',
    'removeRange',
    'replaceRange',
    'fillRange',
    'iterator',
    'length',
    'length'
  ]);
  return _WrappedList;
});
html._WrappedList = _WrappedList();
const _iterator = Symbol('_iterator');
html._WrappedIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class _WrappedIterator extends core.Object {
    new(iterator) {
      this[_iterator] = iterator;
    }
    moveNext() {
      return this[_iterator].moveNext();
    }
    get current() {
      return html._downcast(html.Node, E)(this[_iterator].current);
    }
  }
  dart.addTypeTests(_WrappedIterator);
  _WrappedIterator[dart.implements] = () => [IteratorOfE()];
  dart.setSignature(_WrappedIterator, {
    constructors: () => ({new: dart.definiteFunctionType(html._WrappedIterator$(E), [IteratorOfNode()])}),
    fields: () => ({[_iterator]: IteratorOfNode()}),
    getters: () => ({current: dart.definiteFunctionType(E, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return _WrappedIterator;
});
html._WrappedIterator = _WrappedIterator();
html._downcast = function(From, To) {
  return x => {
    return To._check(x);
  };
};
dart.fn(html._downcast, FromToTo());
html._HttpRequestUtils = class _HttpRequestUtils extends core.Object {
  static get(url, onComplete, withCredentials) {
    let request = html.HttpRequest.new();
    request[dartx.open]('GET', url, {async: true});
    request[dartx.withCredentials] = withCredentials;
    request[dartx.onReadyStateChange].listen(dart.fn(e => {
      if (request[dartx.readyState] == html.HttpRequest.DONE) {
        onComplete(request);
      }
    }, ProgressEventTovoid()));
    request[dartx.send]();
    return request;
  }
};
dart.setSignature(html._HttpRequestUtils, {
  statics: () => ({get: dart.definiteFunctionType(html.HttpRequest, [core.String, HttpRequestTodynamic(), core.bool])}),
  names: ['get']
});
const _array = Symbol('_array');
const _current = Symbol('_current');
html.FixedSizeListIterator$ = dart.generic(T => {
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
  class FixedSizeListIterator extends core.Object {
    new(array) {
      this[_array] = array;
      this[_position] = -1;
      this[_length] = array[dartx.length];
      this[_current] = null;
    }
    moveNext() {
      let nextPosition = dart.notNull(this[_position]) + 1;
      if (nextPosition < dart.notNull(this[_length])) {
        this[_current] = this[_array][dartx._get](nextPosition);
        this[_position] = nextPosition;
        return true;
      }
      this[_current] = null;
      this[_position] = this[_length];
      return false;
    }
    get current() {
      return this[_current];
    }
  }
  dart.addTypeTests(FixedSizeListIterator);
  FixedSizeListIterator[dart.implements] = () => [IteratorOfT()];
  dart.setSignature(FixedSizeListIterator, {
    constructors: () => ({new: dart.definiteFunctionType(html.FixedSizeListIterator$(T), [ListOfT()])}),
    fields: () => ({
      [_array]: ListOfT(),
      [_length]: core.int,
      [_position]: core.int,
      [_current]: T
    }),
    getters: () => ({current: dart.definiteFunctionType(T, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return FixedSizeListIterator;
});
html.FixedSizeListIterator = FixedSizeListIterator();
html._VariableSizeListIterator$ = dart.generic(T => {
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
  class _VariableSizeListIterator extends core.Object {
    new(array) {
      this[_array] = array;
      this[_position] = -1;
      this[_current] = null;
    }
    moveNext() {
      let nextPosition = dart.notNull(this[_position]) + 1;
      if (nextPosition < dart.notNull(this[_array][dartx.length])) {
        this[_current] = this[_array][dartx._get](nextPosition);
        this[_position] = nextPosition;
        return true;
      }
      this[_current] = null;
      this[_position] = this[_array][dartx.length];
      return false;
    }
    get current() {
      return this[_current];
    }
  }
  dart.addTypeTests(_VariableSizeListIterator);
  _VariableSizeListIterator[dart.implements] = () => [IteratorOfT()];
  dart.setSignature(_VariableSizeListIterator, {
    constructors: () => ({new: dart.definiteFunctionType(html._VariableSizeListIterator$(T), [ListOfT()])}),
    fields: () => ({
      [_array]: ListOfT(),
      [_position]: core.int,
      [_current]: T
    }),
    getters: () => ({current: dart.definiteFunctionType(T, [])}),
    methods: () => ({moveNext: dart.definiteFunctionType(core.bool, [])})
  });
  return _VariableSizeListIterator;
});
html._VariableSizeListIterator = _VariableSizeListIterator();
html._convertNativeToDart_Window = function(win) {
  if (win == null) return null;
  return html._DOMWindowCrossFrame._createSafe(win);
};
dart.fn(html._convertNativeToDart_Window, dynamicToWindowBase());
html._convertNativeToDart_EventTarget = function(e) {
  if (e == null) {
    return null;
  }
  if ("postMessage" in e) {
    let window = html._DOMWindowCrossFrame._createSafe(e);
    if (html.EventTarget.is(window)) {
      return window;
    }
    return null;
  } else
    return html.EventTarget._check(e);
};
dart.fn(html._convertNativeToDart_EventTarget, dynamicToEventTarget());
const _window = Symbol('_window');
html._convertDartToNative_EventTarget = function(e) {
  if (html._DOMWindowCrossFrame.is(e)) {
    return html.EventTarget._check(e[_window]);
  } else {
    return html.EventTarget._check(e);
  }
};
dart.fn(html._convertDartToNative_EventTarget, dynamicToEventTarget());
html._convertNativeToDart_XHR_Response = function(o) {
  if (html.Document.is(o)) {
    return o;
  }
  return html_common.convertNativeToDart_SerializedScriptValue(o);
};
dart.fn(html._convertNativeToDart_XHR_Response, dynamicTodynamic());
html._callConstructor = function(constructor, interceptor) {
  return dart.fn(receiver => {
    _js_helper.setNativeSubclassDispatchRecord(receiver, interceptor);
    receiver.constructor = receiver.__proto__.constructor;
    return constructor(receiver);
  }, dynamicTodynamic());
};
dart.fn(html._callConstructor, dynamicAnddynamicTodynamic());
html._callAttached = function(receiver) {
  return dart.dsend(receiver, 'attached');
};
dart.fn(html._callAttached, dynamicTodynamic());
html._callDetached = function(receiver) {
  return dart.dsend(receiver, 'detached');
};
dart.fn(html._callDetached, dynamicTodynamic());
html._callAttributeChanged = function(receiver, name, oldValue, newValue) {
  return dart.dsend(receiver, 'attributeChanged', name, oldValue, newValue);
};
dart.fn(html._callAttributeChanged, dynamicAnddynamicAnddynamic__Todynamic());
html._makeCallbackMethod = function(callback) {
  return (function(invokeCallback) {
    return function() {
      return invokeCallback(this);
    };
  })(_js_helper.convertDartClosureToJS(dart.dynamic)(callback, 1));
};
dart.fn(html._makeCallbackMethod, dynamicTodynamic());
html._makeCallbackMethod3 = function(callback) {
  return (function(invokeCallback) {
    return function(arg1, arg2, arg3) {
      return invokeCallback(this, arg1, arg2, arg3);
    };
  })(_js_helper.convertDartClosureToJS(dart.dynamic)(callback, 4));
};
dart.fn(html._makeCallbackMethod3, dynamicTodynamic());
html._registerCustomElement = function(context, document, tag, type, extendsTagName) {
  let interceptorClass = _interceptors.findInterceptorConstructorForType(type);
  if (interceptorClass == null) {
    dart.throw(new core.ArgumentError(type));
  }
  let interceptor = interceptorClass.prototype;
  let constructor = _interceptors.findConstructorForNativeSubclassType(type, 'created');
  if (constructor == null) {
    dart.throw(new core.ArgumentError(dart.str`${type} has no constructor called 'created'`));
  }
  _interceptors.getNativeInterceptor(html.Element.tag('article'));
  let baseClassName = core.String._check(_js_helper.findDispatchTagForInterceptorClass(interceptorClass));
  if (baseClassName == null) {
    dart.throw(new core.ArgumentError(type));
  }
  if (extendsTagName == null) {
    if (baseClassName != 'HTMLElement') {
      dart.throw(new core.UnsupportedError('Class must provide extendsTag if base ' + 'native class is not HtmlElement'));
    }
  } else {
    if (!(document.createElement(extendsTagName) instanceof window[baseClassName])) {
      dart.throw(new core.UnsupportedError('extendsTag does not match base native class'));
    }
  }
  let baseConstructor = context[baseClassName];
  let properties = {};
  properties.createdCallback = {value: html._makeCallbackMethod(html._callConstructor(constructor, interceptor))};
  properties.attachedCallback = {value: html._makeCallbackMethod(html._callAttached)};
  properties.detachedCallback = {value: html._makeCallbackMethod(html._callDetached)};
  properties.attributeChangedCallback = {value: html._makeCallbackMethod3(html._callAttributeChanged)};
  let baseProto = baseConstructor.prototype;
  let proto = Object.create(baseProto, properties);
  _js_helper.setNativeSubclassDispatchRecord(proto, interceptor);
  let options = {prototype: proto};
  if (extendsTagName != null) {
    options.extends = extendsTagName;
  }
  document.registerElement(tag, options);
};
dart.fn(html._registerCustomElement, dynamicAnddynamicAndString__Tovoid());
html._initializeCustomElement = function(e) {
};
dart.fn(html._initializeCustomElement, ElementTovoid());
const _interceptor = Symbol('_interceptor');
const _constructor = Symbol('_constructor');
const _nativeType = Symbol('_nativeType');
html._JSElementUpgrader = class _JSElementUpgrader extends core.Object {
  new(document, type, extendsTag) {
    this[_interceptor] = null;
    this[_constructor] = null;
    this[_nativeType] = null;
    let interceptorClass = _interceptors.findInterceptorConstructorForType(type);
    if (interceptorClass == null) {
      dart.throw(new core.ArgumentError(type));
    }
    this[_constructor] = _interceptors.findConstructorForNativeSubclassType(type, 'created');
    if (this[_constructor] == null) {
      dart.throw(new core.ArgumentError(dart.str`${type} has no constructor called 'created'`));
    }
    _interceptors.getNativeInterceptor(html.Element.tag('article'));
    let baseClassName = _js_helper.findDispatchTagForInterceptorClass(interceptorClass);
    if (baseClassName == null) {
      dart.throw(new core.ArgumentError(type));
    }
    if (extendsTag == null) {
      if (!dart.equals(baseClassName, 'HTMLElement')) {
        dart.throw(new core.UnsupportedError('Class must provide extendsTag if base ' + 'native class is not HtmlElement'));
      }
      this[_nativeType] = dart.wrapType(html.HtmlElement);
    } else {
      let element = document[dartx.createElement](extendsTag);
      if (!(element instanceof window[baseClassName])) {
        dart.throw(new core.UnsupportedError('extendsTag does not match base native class'));
      }
      this[_nativeType] = dart.runtimeType(element);
    }
    this[_interceptor] = interceptorClass.prototype;
  }
  upgrade(element) {
    if (!dart.equals(dart.runtimeType(element), this[_nativeType])) {
      dart.throw(new core.ArgumentError(dart.str`element is not subclass of ${this[_nativeType]}`));
    }
    _js_helper.setNativeSubclassDispatchRecord(element, this[_interceptor]);
    this[_constructor](element);
    return element;
  }
};
html._JSElementUpgrader[dart.implements] = () => [html.ElementUpgrader];
dart.setSignature(html._JSElementUpgrader, {
  constructors: () => ({new: dart.definiteFunctionType(html._JSElementUpgrader, [html.Document, core.Type, core.String])}),
  fields: () => ({
    [_interceptor]: dart.dynamic,
    [_constructor]: dart.dynamic,
    [_nativeType]: dart.dynamic
  }),
  methods: () => ({upgrade: dart.definiteFunctionType(html.Element, [html.Element])})
});
html._DOMWindowCrossFrame = class _DOMWindowCrossFrame extends core.Object {
  get history() {
    return html._HistoryCrossFrame._createSafe(this[_window].history);
  }
  get location() {
    return html._LocationCrossFrame._createSafe(this[_window].location);
  }
  get closed() {
    return this[_window].closed;
  }
  get opener() {
    return html._DOMWindowCrossFrame._createSafe(this[_window].opener);
  }
  get parent() {
    return html._DOMWindowCrossFrame._createSafe(this[_window].parent);
  }
  get top() {
    return html._DOMWindowCrossFrame._createSafe(this[_window].top);
  }
  close() {
    return this[_window].close();
  }
  postMessage(message, targetOrigin, messagePorts) {
    if (messagePorts === void 0) messagePorts = null;
    if (messagePorts == null) {
      this[_window].postMessage(html_common.convertDartToNative_SerializedScriptValue(message), targetOrigin);
    } else {
      this[_window].postMessage(html_common.convertDartToNative_SerializedScriptValue(message), targetOrigin, messagePorts);
    }
  }
  new(window) {
    this[_window] = window;
  }
  static _createSafe(w) {
    if (core.identical(w, html.window)) {
      return html.WindowBase._check(w);
    } else {
      return new html._DOMWindowCrossFrame(w);
    }
  }
  get on() {
    return dart.throw(new core.UnsupportedError('You can only attach EventListeners to your own window.'));
  }
  [_addEventListener](type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    return dart.throw(new core.UnsupportedError('You can only attach EventListeners to your own window.'));
  }
  addEventListener(type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    return dart.throw(new core.UnsupportedError('You can only attach EventListeners to your own window.'));
  }
  dispatchEvent(event) {
    return dart.throw(new core.UnsupportedError('You can only attach EventListeners to your own window.'));
  }
  [_removeEventListener](type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    return dart.throw(new core.UnsupportedError('You can only attach EventListeners to your own window.'));
  }
  removeEventListener(type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    return dart.throw(new core.UnsupportedError('You can only attach EventListeners to your own window.'));
  }
};
html._DOMWindowCrossFrame[dart.implements] = () => [html.WindowBase];
dart.setSignature(html._DOMWindowCrossFrame, {
  constructors: () => ({new: dart.definiteFunctionType(html._DOMWindowCrossFrame, [dart.dynamic])}),
  fields: () => ({[_window]: dart.dynamic}),
  getters: () => ({
    history: dart.definiteFunctionType(html.HistoryBase, []),
    location: dart.definiteFunctionType(html.LocationBase, []),
    closed: dart.definiteFunctionType(core.bool, []),
    opener: dart.definiteFunctionType(html.WindowBase, []),
    parent: dart.definiteFunctionType(html.WindowBase, []),
    top: dart.definiteFunctionType(html.WindowBase, []),
    on: dart.definiteFunctionType(html.Events, [])
  }),
  methods: () => ({
    close: dart.definiteFunctionType(dart.void, []),
    postMessage: dart.definiteFunctionType(dart.void, [dart.dynamic, core.String], [core.List]),
    [_addEventListener]: dart.definiteFunctionType(dart.void, [core.String, html.EventListener], [core.bool]),
    addEventListener: dart.definiteFunctionType(dart.void, [core.String, html.EventListener], [core.bool]),
    dispatchEvent: dart.definiteFunctionType(core.bool, [html.Event]),
    [_removeEventListener]: dart.definiteFunctionType(dart.void, [core.String, html.EventListener], [core.bool]),
    removeEventListener: dart.definiteFunctionType(dart.void, [core.String, html.EventListener], [core.bool])
  }),
  statics: () => ({_createSafe: dart.definiteFunctionType(html.WindowBase, [dart.dynamic])}),
  names: ['_createSafe']
});
dart.defineExtensionMembers(html._DOMWindowCrossFrame, [
  'close',
  'postMessage',
  'history',
  'location',
  'closed',
  'opener',
  'parent',
  'top'
]);
html._LocationCrossFrame = class _LocationCrossFrame extends core.Object {
  set href(val) {
    return html._LocationCrossFrame._setHref(this[_location], val);
  }
  static _setHref(location, val) {
    location.href = val;
  }
  new(location) {
    this[_location] = location;
  }
  static _createSafe(location) {
    if (core.identical(location, html.window[dartx.location])) {
      return html.LocationBase._check(location);
    } else {
      return new html._LocationCrossFrame(location);
    }
  }
};
html._LocationCrossFrame[dart.implements] = () => [html.LocationBase];
dart.setSignature(html._LocationCrossFrame, {
  constructors: () => ({new: dart.definiteFunctionType(html._LocationCrossFrame, [dart.dynamic])}),
  fields: () => ({[_location]: dart.dynamic}),
  setters: () => ({href: dart.definiteFunctionType(dart.void, [core.String])}),
  statics: () => ({
    _setHref: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic]),
    _createSafe: dart.definiteFunctionType(html.LocationBase, [dart.dynamic])
  }),
  names: ['_setHref', '_createSafe']
});
dart.defineExtensionMembers(html._LocationCrossFrame, ['href']);
const _history = Symbol('_history');
html._HistoryCrossFrame = class _HistoryCrossFrame extends core.Object {
  back() {
    return this[_history].back();
  }
  forward() {
    return this[_history].forward();
  }
  go(distance) {
    return this[_history].go(distance);
  }
  new(history) {
    this[_history] = history;
  }
  static _createSafe(h) {
    if (core.identical(h, html.window[dartx.history])) {
      return html.HistoryBase._check(h);
    } else {
      return new html._HistoryCrossFrame(h);
    }
  }
};
html._HistoryCrossFrame[dart.implements] = () => [html.HistoryBase];
dart.setSignature(html._HistoryCrossFrame, {
  constructors: () => ({new: dart.definiteFunctionType(html._HistoryCrossFrame, [dart.dynamic])}),
  fields: () => ({[_history]: dart.dynamic}),
  methods: () => ({
    back: dart.definiteFunctionType(dart.void, []),
    forward: dart.definiteFunctionType(dart.void, []),
    go: dart.definiteFunctionType(dart.void, [core.int])
  }),
  statics: () => ({_createSafe: dart.definiteFunctionType(html.HistoryBase, [dart.dynamic])}),
  names: ['_createSafe']
});
dart.defineExtensionMembers(html._HistoryCrossFrame, ['back', 'forward', 'go']);
html.Platform = class Platform extends core.Object {};
dart.setSignature(html.Platform, {
  sfields: () => ({
    supportsTypedData: core.bool,
    supportsSimd: core.bool
  })
});
html.Platform.supportsSimd = false;
dart.defineLazy(html.Platform, {
  get supportsTypedData() {
    return !!window.ArrayBuffer;
  }
});
html._wrapZoneCallback$ = dart.generic((A, R) => {
  const _wrapZoneCallback = dart.typedef('_wrapZoneCallback', () => dart.functionType(R, [A]));
  return _wrapZoneCallback;
});
html._wrapZoneCallback = _wrapZoneCallback();
html._wrapZoneBinaryCallback$ = dart.generic((A, B, R) => {
  const _wrapZoneBinaryCallback = dart.typedef('_wrapZoneBinaryCallback', () => dart.functionType(R, [A, B]));
  return _wrapZoneBinaryCallback;
});
html._wrapZoneBinaryCallback = _wrapZoneBinaryCallback();
html._wrapZone = function(A, R) {
  return callback => {
    if (dart.equals(async.Zone.current, async.Zone.ROOT)) return callback;
    if (callback == null) return null;
    return async.Zone.current.bindUnaryCallback(R, A)(callback, {runGuarded: true});
  };
};
dart.fn(html._wrapZone, _wrapZoneCallbackOfA$RTo_wrapZoneCallbackOfA$R());
html._wrapBinaryZone = function(A, B, R) {
  return callback => {
    if (dart.equals(async.Zone.current, async.Zone.ROOT)) return callback;
    if (callback == null) return null;
    return async.Zone.current.bindBinaryCallback(R, A, B)(callback, {runGuarded: true});
  };
};
dart.fn(html._wrapBinaryZone, _wrapZoneBinaryCallbackOfA$B$RTo_wrapZoneBinaryCallbackOfA$B$R());
html.query = function(relativeSelectors) {
  return html.document[dartx.query](relativeSelectors);
};
dart.fn(html.query, StringToElement());
html.queryAll = function(relativeSelectors) {
  return html.document[dartx.queryAll](html.Element)(relativeSelectors);
};
dart.fn(html.queryAll, StringToElementListOfElement());
html.querySelector = function(selectors) {
  return html.document[dartx.querySelector](selectors);
};
dart.fn(html.querySelector, StringToElement());
html.querySelectorAll = function(selectors) {
  return html.document[dartx.querySelectorAll](html.Element)(selectors);
};
dart.fn(html.querySelectorAll, StringToElementListOfElement());
html.ElementUpgrader = class ElementUpgrader extends core.Object {};
html.NodeValidator = class NodeValidator extends core.Object {
  static new(opts) {
    let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
    return new html._Html5NodeValidator({uriPolicy: uriPolicy});
  }
  static throws(base) {
    return new html._ThrowsNodeValidator(base);
  }
};
dart.setSignature(html.NodeValidator, {
  constructors: () => ({
    new: dart.definiteFunctionType(html.NodeValidator, [], {uriPolicy: html.UriPolicy}),
    throws: dart.definiteFunctionType(html.NodeValidator, [html.NodeValidator])
  })
});
html.NodeTreeSanitizer = class NodeTreeSanitizer extends core.Object {
  static new(validator) {
    return new html._ValidatingTreeSanitizer(validator);
  }
};
dart.setSignature(html.NodeTreeSanitizer, {
  constructors: () => ({new: dart.definiteFunctionType(html.NodeTreeSanitizer, [html.NodeValidator])}),
  sfields: () => ({trusted: html._TrustedHtmlTreeSanitizer})
});
dart.defineLazy(html.NodeTreeSanitizer, {
  get trusted() {
    return dart.const(new html._TrustedHtmlTreeSanitizer());
  }
});
html._TrustedHtmlTreeSanitizer = class _TrustedHtmlTreeSanitizer extends core.Object {
  new() {
  }
  sanitizeTree(node) {}
};
html._TrustedHtmlTreeSanitizer[dart.implements] = () => [html.NodeTreeSanitizer];
dart.setSignature(html._TrustedHtmlTreeSanitizer, {
  constructors: () => ({new: dart.definiteFunctionType(html._TrustedHtmlTreeSanitizer, [])}),
  methods: () => ({sanitizeTree: dart.definiteFunctionType(dart.void, [html.Node])})
});
html.UriPolicy = class UriPolicy extends core.Object {
  static new() {
    return new html._SameOriginUriPolicy();
  }
};
dart.setSignature(html.UriPolicy, {
  constructors: () => ({new: dart.definiteFunctionType(html.UriPolicy, [])})
});
const _hiddenAnchor = Symbol('_hiddenAnchor');
const _loc = Symbol('_loc');
html._SameOriginUriPolicy = class _SameOriginUriPolicy extends core.Object {
  new() {
    this[_hiddenAnchor] = html.AnchorElement.new();
    this[_loc] = html.window[dartx.location];
  }
  allowsUri(uri) {
    this[_hiddenAnchor][dartx.href] = uri;
    return this[_hiddenAnchor][dartx.hostname] == this[_loc][dartx.hostname] && this[_hiddenAnchor][dartx.port] == this[_loc][dartx.port] && this[_hiddenAnchor][dartx.protocol] == this[_loc][dartx.protocol] || this[_hiddenAnchor][dartx.hostname] == '' && this[_hiddenAnchor][dartx.port] == '' && (this[_hiddenAnchor][dartx.protocol] == ':' || this[_hiddenAnchor][dartx.protocol] == '');
  }
};
html._SameOriginUriPolicy[dart.implements] = () => [html.UriPolicy];
dart.setSignature(html._SameOriginUriPolicy, {
  fields: () => ({
    [_hiddenAnchor]: html.AnchorElement,
    [_loc]: html.Location
  }),
  methods: () => ({allowsUri: dart.definiteFunctionType(core.bool, [core.String])})
});
html._ThrowsNodeValidator = class _ThrowsNodeValidator extends core.Object {
  new(validator) {
    this.validator = validator;
  }
  allowsElement(element) {
    if (!dart.test(this.validator.allowsElement(element))) {
      dart.throw(new core.ArgumentError(html.Element._safeTagName(element)));
    }
    return true;
  }
  allowsAttribute(element, attributeName, value) {
    if (!dart.test(this.validator.allowsAttribute(element, attributeName, value))) {
      dart.throw(new core.ArgumentError(dart.str`${html.Element._safeTagName(element)}[${attributeName}="${value}"]`));
    }
  }
};
html._ThrowsNodeValidator[dart.implements] = () => [html.NodeValidator];
dart.setSignature(html._ThrowsNodeValidator, {
  constructors: () => ({new: dart.definiteFunctionType(html._ThrowsNodeValidator, [html.NodeValidator])}),
  fields: () => ({validator: html.NodeValidator}),
  methods: () => ({
    allowsElement: dart.definiteFunctionType(core.bool, [html.Element]),
    allowsAttribute: dart.definiteFunctionType(core.bool, [html.Element, core.String, core.String])
  })
});
const _removeNode = Symbol('_removeNode');
const _sanitizeElement = Symbol('_sanitizeElement');
const _sanitizeUntrustedElement = Symbol('_sanitizeUntrustedElement');
html._ValidatingTreeSanitizer = class _ValidatingTreeSanitizer extends core.Object {
  new(validator) {
    this.validator = validator;
  }
  sanitizeTree(node) {
    const walk = (function(node, parent) {
      this.sanitizeNode(node, parent);
      let child = node[dartx.lastChild];
      while (child != null) {
        let nextChild = child[dartx.previousNode];
        walk(child, node);
        child = nextChild;
      }
    }).bind(this);
    dart.fn(walk, NodeAndNodeTovoid());
    walk(node, null);
  }
  [_removeNode](node, parent) {
    if (parent == null) {
      node[dartx.remove]();
    } else {
      parent[_removeChild](node);
    }
  }
  [_sanitizeUntrustedElement](element, parent) {
    let corrupted = true;
    let attrs = null;
    let isAttr = null;
    try {
      attrs = dart.dload(element, 'attributes');
      isAttr = dart.dindex(attrs, 'is');
      let corruptedTest1 = html.Element._hasCorruptedAttributes(html.Element._check(element));
      corrupted = dart.test(corruptedTest1) ? true : html.Element._hasCorruptedAttributesAdditionalCheck(html.Element._check(element));
    } catch (e) {
    }

    let elementText = 'element unprintable';
    try {
      elementText = dart.toString(element);
    } catch (e) {
    }

    try {
      let elementTagName = html.Element._safeTagName(element);
      this[_sanitizeElement](html.Element._check(element), parent, corrupted, elementText, elementTagName, core.Map._check(attrs), core.String._check(isAttr));
    } catch (e$) {
      if (core.ArgumentError.is(e$)) {
        throw e$;
      } else {
        let e = e$;
        this[_removeNode](html.Node._check(element), parent);
        html.window[dartx.console].warn(dart.str`Removing corrupted element ${elementText}`);
      }
    }

  }
  [_sanitizeElement](element, parent, corrupted, text, tag, attrs, isAttr) {
    if (false != corrupted) {
      this[_removeNode](element, parent);
      html.window[dartx.console].warn(dart.str`Removing element due to corrupted attributes on <${text}>`);
      return;
    }
    if (!dart.test(this.validator.allowsElement(element))) {
      this[_removeNode](element, parent);
      html.window[dartx.console].warn(dart.str`Removing disallowed element <${tag}> from ${parent}`);
      return;
    }
    if (isAttr != null) {
      if (!dart.test(this.validator.allowsAttribute(element, 'is', isAttr))) {
        this[_removeNode](element, parent);
        html.window[dartx.console].warn('Removing disallowed type extension ' + dart.str`<${tag} is="${isAttr}">`);
        return;
      }
    }
    let keys = attrs[dartx.keys][dartx.toList]();
    for (let i = dart.notNull(attrs[dartx.length]) - 1; i >= 0; --i) {
      let name = keys[dartx._get](i);
      if (!dart.test(this.validator.allowsAttribute(element, core.String._check(dart.dsend(name, 'toLowerCase')), core.String._check(attrs[dartx._get](name))))) {
        html.window[dartx.console].warn('Removing disallowed attribute ' + dart.str`<${tag} ${name}="${attrs[dartx._get](name)}">`);
        attrs[dartx.remove](name);
      }
    }
    if (html.TemplateElement.is(element)) {
      let template = element;
      this.sanitizeTree(template[dartx.content]);
    }
  }
  sanitizeNode(node, parent) {
    switch (node[dartx.nodeType]) {
      case html.Node.ELEMENT_NODE:
      {
        this[_sanitizeUntrustedElement](node, parent);
        break;
      }
      case html.Node.COMMENT_NODE:
      case html.Node.DOCUMENT_FRAGMENT_NODE:
      case html.Node.TEXT_NODE:
      case html.Node.CDATA_SECTION_NODE:
      {
        break;
      }
      default:
      {
        this[_removeNode](node, parent);
      }
    }
  }
};
html._ValidatingTreeSanitizer[dart.implements] = () => [html.NodeTreeSanitizer];
dart.setSignature(html._ValidatingTreeSanitizer, {
  constructors: () => ({new: dart.definiteFunctionType(html._ValidatingTreeSanitizer, [html.NodeValidator])}),
  fields: () => ({validator: html.NodeValidator}),
  methods: () => ({
    sanitizeTree: dart.definiteFunctionType(dart.void, [html.Node]),
    [_removeNode]: dart.definiteFunctionType(dart.void, [html.Node, html.Node]),
    [_sanitizeUntrustedElement]: dart.definiteFunctionType(dart.void, [dart.dynamic, html.Node]),
    [_sanitizeElement]: dart.definiteFunctionType(dart.void, [html.Element, html.Node, core.bool, core.String, core.String, core.Map, core.String]),
    sanitizeNode: dart.definiteFunctionType(dart.void, [html.Node, html.Node])
  })
});
html_common.convertDartToNative_SerializedScriptValue = function(value) {
  return html_common.convertDartToNative_PrepareForStructuredClone(value);
};
dart.fn(html_common.convertDartToNative_SerializedScriptValue, dynamicTodynamic());
html_common.convertNativeToDart_SerializedScriptValue = function(object) {
  return html_common.convertNativeToDart_AcceptStructuredClone(object, {mustCopy: true});
};
dart.fn(html_common.convertNativeToDart_SerializedScriptValue, dynamicTodynamic());
html_common._StructuredClone = class _StructuredClone extends core.Object {
  new() {
    this.values = [];
    this.copies = [];
  }
  findSlot(value) {
    let length = this.values[dartx.length];
    for (let i = 0; i < dart.notNull(length); i++) {
      if (core.identical(this.values[dartx._get](i), value)) return i;
    }
    this.values[dartx.add](value);
    this.copies[dartx.add](null);
    return length;
  }
  readSlot(i) {
    return this.copies[dartx._get](i);
  }
  writeSlot(i, x) {
    this.copies[dartx._set](i, x);
  }
  cleanupSlots() {}
  walk(e) {
    if (e == null) return e;
    if (typeof e == 'boolean') return e;
    if (typeof e == 'number') return e;
    if (typeof e == 'string') return e;
    if (core.DateTime.is(e)) {
      return html_common.convertDartToNative_DateTime(e);
    }
    if (core.RegExp.is(e)) {
      dart.throw(new core.UnimplementedError('structured clone of RegExp'));
    }
    if (html.File.is(e)) return e;
    if (html.Blob.is(e)) return e;
    if (html.FileList.is(e)) return e;
    if (html.ImageData.is(e)) return e;
    if (dart.test(this.cloneNotRequired(e))) return e;
    if (core.Map.is(e)) {
      let slot = this.findSlot(e);
      let copy = this.readSlot(slot);
      if (copy != null) return copy;
      copy = this.newJsMap();
      this.writeSlot(slot, copy);
      e[dartx.forEach](dart.fn((key, value) => {
        this.putIntoMap(copy, key, this.walk(value));
      }, dynamicAnddynamicTovoid()));
      return copy;
    }
    if (core.List.is(e)) {
      let slot = this.findSlot(e);
      let copy = this.readSlot(slot);
      if (copy != null) return copy;
      copy = this.copyList(e, slot);
      return copy;
    }
    dart.throw(new core.UnimplementedError('structured clone of other type'));
  }
  copyList(e, slot) {
    let i = 0;
    let length = e[dartx.length];
    let copy = this.newJsList(length);
    this.writeSlot(slot, copy);
    for (; i < dart.notNull(length); i++) {
      dart.dsetindex(copy, i, this.walk(e[dartx._get](i)));
    }
    return copy;
  }
  convertDartToNative_PrepareForStructuredClone(value) {
    let copy = this.walk(value);
    this.cleanupSlots();
    return copy;
  }
};
dart.setSignature(html_common._StructuredClone, {
  fields: () => ({
    values: core.List,
    copies: core.List
  }),
  methods: () => ({
    findSlot: dart.definiteFunctionType(core.int, [dart.dynamic]),
    readSlot: dart.definiteFunctionType(dart.dynamic, [core.int]),
    writeSlot: dart.definiteFunctionType(dart.dynamic, [core.int, dart.dynamic]),
    cleanupSlots: dart.definiteFunctionType(dart.dynamic, []),
    walk: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    copyList: dart.definiteFunctionType(dart.dynamic, [core.List, core.int]),
    convertDartToNative_PrepareForStructuredClone: dart.definiteFunctionType(dart.dynamic, [dart.dynamic])
  })
});
html_common._AcceptStructuredClone = class _AcceptStructuredClone extends core.Object {
  new() {
    this.values = [];
    this.copies = [];
    this.mustCopy = false;
  }
  findSlot(value) {
    let length = this.values[dartx.length];
    for (let i = 0; i < dart.notNull(length); i++) {
      if (dart.test(this.identicalInJs(this.values[dartx._get](i), value))) return i;
    }
    this.values[dartx.add](value);
    this.copies[dartx.add](null);
    return length;
  }
  readSlot(i) {
    return this.copies[dartx._get](i);
  }
  writeSlot(i, x) {
    this.copies[dartx._set](i, x);
  }
  walk(e) {
    if (e == null) return e;
    if (typeof e == 'boolean') return e;
    if (typeof e == 'number') return e;
    if (typeof e == 'string') return e;
    if (dart.test(html_common.isJavaScriptDate(e))) {
      return html_common.convertNativeToDart_DateTime(e);
    }
    if (dart.test(html_common.isJavaScriptRegExp(e))) {
      dart.throw(new core.UnimplementedError('structured clone of RegExp'));
    }
    if (dart.test(html_common.isJavaScriptPromise(e))) {
      return html_common.convertNativePromiseToDartFuture(e);
    }
    if (dart.test(html_common.isJavaScriptSimpleObject(e))) {
      let slot = this.findSlot(e);
      let copy = this.readSlot(slot);
      if (copy != null) return copy;
      copy = dart.map();
      this.writeSlot(slot, copy);
      this.forEachJsField(e, dart.fn((key, value) => dart.dsetindex(copy, key, this.walk(value)), dynamicAnddynamicTodynamic()));
      return copy;
    }
    if (dart.test(html_common.isJavaScriptArray(e))) {
      let slot = this.findSlot(e);
      let copy = this.readSlot(slot);
      if (copy != null) return copy;
      let length = core.int._check(dart.dload(e, 'length'));
      copy = dart.test(this.mustCopy) ? this.newDartList(length) : e;
      this.writeSlot(slot, copy);
      for (let i = 0; i < dart.notNull(length); i++) {
        dart.dsetindex(copy, i, this.walk(dart.dindex(e, i)));
      }
      return copy;
    }
    return e;
  }
  convertNativeToDart_AcceptStructuredClone(object, opts) {
    let mustCopy = opts && 'mustCopy' in opts ? opts.mustCopy : false;
    this.mustCopy = core.bool._check(mustCopy);
    let copy = this.walk(object);
    return copy;
  }
};
dart.setSignature(html_common._AcceptStructuredClone, {
  fields: () => ({
    values: core.List,
    copies: core.List,
    mustCopy: core.bool
  }),
  methods: () => ({
    findSlot: dart.definiteFunctionType(core.int, [dart.dynamic]),
    readSlot: dart.definiteFunctionType(dart.dynamic, [core.int]),
    writeSlot: dart.definiteFunctionType(dart.dynamic, [core.int, dart.dynamic]),
    walk: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    convertNativeToDart_AcceptStructuredClone: dart.definiteFunctionType(dart.dynamic, [dart.dynamic], {mustCopy: dart.dynamic})
  })
});
html_common.ContextAttributes = class ContextAttributes extends core.Object {
  new(alpha, antialias, depth, failIfMajorPerformanceCaveat, premultipliedAlpha, preserveDrawingBuffer, stencil) {
    this.alpha = alpha;
    this.antialias = antialias;
    this.depth = depth;
    this.failIfMajorPerformanceCaveat = failIfMajorPerformanceCaveat;
    this.premultipliedAlpha = premultipliedAlpha;
    this.preserveDrawingBuffer = preserveDrawingBuffer;
    this.stencil = stencil;
  }
};
dart.setSignature(html_common.ContextAttributes, {
  constructors: () => ({new: dart.definiteFunctionType(html_common.ContextAttributes, [core.bool, core.bool, core.bool, core.bool, core.bool, core.bool, core.bool])}),
  fields: () => ({
    alpha: core.bool,
    antialias: core.bool,
    depth: core.bool,
    premultipliedAlpha: core.bool,
    preserveDrawingBuffer: core.bool,
    stencil: core.bool,
    failIfMajorPerformanceCaveat: core.bool
  })
});
html_common.convertNativeToDart_ContextAttributes = function(nativeContextAttributes) {
  return new html_common.ContextAttributes(nativeContextAttributes.alpha, nativeContextAttributes.antialias, nativeContextAttributes.depth, nativeContextAttributes.failIfMajorPerformanceCaveat, nativeContextAttributes.premultipliedAlpha, nativeContextAttributes.preserveDrawingBuffer, nativeContextAttributes.stencil);
};
dart.fn(html_common.convertNativeToDart_ContextAttributes, dynamicTodynamic());
html_common._TypedImageData = class _TypedImageData extends core.Object {
  new(data, height, width) {
    this.data = data;
    this.height = height;
    this.width = width;
  }
};
html_common._TypedImageData[dart.implements] = () => [html.ImageData];
dart.setSignature(html_common._TypedImageData, {
  constructors: () => ({new: dart.definiteFunctionType(html_common._TypedImageData, [typed_data.Uint8ClampedList, core.int, core.int])}),
  fields: () => ({
    data: typed_data.Uint8ClampedList,
    height: core.int,
    width: core.int
  })
});
html_common.convertNativeToDart_ImageData = function(nativeImageData) {
  0;
  if (html.ImageData.is(nativeImageData)) {
    let data = nativeImageData[dartx.data];
    if (data.constructor === Array) {
      if (typeof CanvasPixelArray !== "undefined") {
        data.constructor = CanvasPixelArray;
        data.BYTES_PER_ELEMENT = 1;
      }
    }
    return nativeImageData;
  }
  return new html_common._TypedImageData(nativeImageData.data, nativeImageData.height, nativeImageData.width);
};
dart.fn(html_common.convertNativeToDart_ImageData, dynamicToImageData());
html_common.convertDartToNative_ImageData = function(imageData) {
  if (html_common._TypedImageData.is(imageData)) {
    return {data: imageData.data, height: imageData.height, width: imageData.width};
  }
  return imageData;
};
dart.fn(html_common.convertDartToNative_ImageData, ImageDataTodynamic());
html_common._serializedScriptValue = 'num|String|bool|' + 'JSExtendableArray|=Object|' + 'Blob|File|NativeByteBuffer|NativeTypedData';
html_common.annotation_Creates_SerializedScriptValue = dart.const(new _js_helper.Creates(html_common._serializedScriptValue));
html_common.annotation_Returns_SerializedScriptValue = dart.const(new _js_helper.Returns(html_common._serializedScriptValue));
html_common.convertNativeToDart_Dictionary = function(object) {
  if (object == null) return null;
  let dict = dart.map();
  let keys = Object.getOwnPropertyNames(object);
  for (let key of core.Iterable._check(keys)) {
    dict[dartx._set](key, object[key]);
  }
  return dict;
};
dart.fn(html_common.convertNativeToDart_Dictionary, dynamicToMap());
html_common.convertDartToNative_Dictionary = function(dict, postCreate) {
  if (postCreate === void 0) postCreate = null;
  if (dict == null) return null;
  let object = {};
  if (postCreate != null) {
    dart.dcall(postCreate, object);
  }
  dict[dartx.forEach](dart.fn((key, value) => {
    object[key] = value;
  }, StringAnddynamicTovoid()));
  return object;
};
dart.fn(html_common.convertDartToNative_Dictionary, Map__Todynamic());
html_common.convertDartToNative_StringArray = function(input) {
  return input;
};
dart.fn(html_common.convertDartToNative_StringArray, ListOfStringToList());
html_common.convertNativeToDart_DateTime = function(date) {
  let millisSinceEpoch = date.getTime();
  return new core.DateTime.fromMillisecondsSinceEpoch(millisSinceEpoch, {isUtc: true});
};
dart.fn(html_common.convertNativeToDart_DateTime, dynamicToDateTime());
html_common.convertDartToNative_DateTime = function(date) {
  return new Date(date.millisecondsSinceEpoch);
};
dart.fn(html_common.convertDartToNative_DateTime, DateTimeTodynamic());
html_common.convertDartToNative_PrepareForStructuredClone = function(value) {
  return new html_common._StructuredCloneDart2Js().convertDartToNative_PrepareForStructuredClone(value);
};
dart.fn(html_common.convertDartToNative_PrepareForStructuredClone, dynamicTodynamic());
html_common.convertNativeToDart_AcceptStructuredClone = function(object, opts) {
  let mustCopy = opts && 'mustCopy' in opts ? opts.mustCopy : false;
  return new html_common._AcceptStructuredCloneDart2Js().convertNativeToDart_AcceptStructuredClone(object, {mustCopy: mustCopy});
};
dart.fn(html_common.convertNativeToDart_AcceptStructuredClone, dynamic__Todynamic());
html_common._StructuredCloneDart2Js = class _StructuredCloneDart2Js extends html_common._StructuredClone {
  new() {
    super.new();
  }
  newJsMap() {
    return {};
  }
  putIntoMap(map, key, value) {
    return map[key] = value;
  }
  newJsList(length) {
    return new Array(length);
  }
  cloneNotRequired(e) {
    return _native_typed_data.NativeByteBuffer.is(e) || _native_typed_data.NativeTypedData.is(e);
  }
};
dart.setSignature(html_common._StructuredCloneDart2Js, {
  methods: () => ({
    newJsMap: dart.definiteFunctionType(dart.dynamic, []),
    putIntoMap: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
    newJsList: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    cloneNotRequired: dart.definiteFunctionType(core.bool, [dart.dynamic])
  })
});
html_common._AcceptStructuredCloneDart2Js = class _AcceptStructuredCloneDart2Js extends html_common._AcceptStructuredClone {
  new() {
    super.new();
  }
  newJsList(length) {
    return new Array(length);
  }
  newDartList(length) {
    return this.newJsList(length);
  }
  identicalInJs(a, b) {
    return core.identical(a, b);
  }
  forEachJsField(object, action) {
    for (let key of Object.keys(object)) {
      dart.dcall(action, key, object[key]);
    }
  }
};
dart.setSignature(html_common._AcceptStructuredCloneDart2Js, {
  methods: () => ({
    newJsList: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    newDartList: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]),
    identicalInJs: dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic]),
    forEachJsField: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic])
  })
});
html_common.isJavaScriptDate = function(value) {
  return value instanceof Date;
};
dart.fn(html_common.isJavaScriptDate, dynamicTobool());
html_common.isJavaScriptRegExp = function(value) {
  return value instanceof RegExp;
};
dart.fn(html_common.isJavaScriptRegExp, dynamicTobool());
html_common.isJavaScriptArray = function(value) {
  return value instanceof Array;
};
dart.fn(html_common.isJavaScriptArray, dynamicTobool());
html_common.isJavaScriptSimpleObject = function(value) {
  let proto = Object.getPrototypeOf(value);
  return proto === Object.prototype || proto === null;
};
dart.fn(html_common.isJavaScriptSimpleObject, dynamicTobool());
html_common.isImmutableJavaScriptArray = function(value) {
  return !!value.immutable$list;
};
dart.fn(html_common.isImmutableJavaScriptArray, dynamicTobool());
html_common.isJavaScriptPromise = function(value) {
  return typeof Promise != "undefined" && value instanceof Promise;
};
dart.fn(html_common.isJavaScriptPromise, dynamicTobool());
html_common.convertNativePromiseToDartFuture = function(promise) {
  let completer = async.Completer.new();
  let then = _js_helper.convertDartClosureToJS(dynamicTovoid())(dart.fn(result => completer.complete(result), dynamicTovoid()), 1);
  let error = _js_helper.convertDartClosureToJS(dynamicTovoid())(dart.fn(result => completer.completeError(result), dynamicTovoid()), 1);
  let newPromise = promise.then(then).catch(error);
  return completer.future;
};
dart.fn(html_common.convertNativePromiseToDartFuture, dynamicToFuture());
html_common.Device = class Device extends core.Object {
  static get userAgent() {
    return html.window[dartx.navigator][dartx.userAgent];
  }
  static get isOpera() {
    if (html_common.Device._isOpera == null) {
      html_common.Device._isOpera = html_common.Device.userAgent[dartx.contains]("Opera", 0);
    }
    return html_common.Device._isOpera;
  }
  static get isIE() {
    if (html_common.Device._isIE == null) {
      html_common.Device._isIE = !dart.test(html_common.Device.isOpera) && dart.test(html_common.Device.userAgent[dartx.contains]("Trident/", 0));
    }
    return html_common.Device._isIE;
  }
  static get isFirefox() {
    if (html_common.Device._isFirefox == null) {
      html_common.Device._isFirefox = html_common.Device.userAgent[dartx.contains]("Firefox", 0);
    }
    return html_common.Device._isFirefox;
  }
  static get isWebKit() {
    if (html_common.Device._isWebKit == null) {
      html_common.Device._isWebKit = !dart.test(html_common.Device.isOpera) && dart.test(html_common.Device.userAgent[dartx.contains]("WebKit", 0));
    }
    return html_common.Device._isWebKit;
  }
  static get cssPrefix() {
    let prefix = html_common.Device._cachedCssPrefix;
    if (prefix != null) return prefix;
    if (dart.test(html_common.Device.isFirefox)) {
      prefix = '-moz-';
    } else if (dart.test(html_common.Device.isIE)) {
      prefix = '-ms-';
    } else if (dart.test(html_common.Device.isOpera)) {
      prefix = '-o-';
    } else {
      prefix = '-webkit-';
    }
    return html_common.Device._cachedCssPrefix = prefix;
  }
  static get propertyPrefix() {
    let prefix = html_common.Device._cachedPropertyPrefix;
    if (prefix != null) return prefix;
    if (dart.test(html_common.Device.isFirefox)) {
      prefix = 'moz';
    } else if (dart.test(html_common.Device.isIE)) {
      prefix = 'ms';
    } else if (dart.test(html_common.Device.isOpera)) {
      prefix = 'o';
    } else {
      prefix = 'webkit';
    }
    return html_common.Device._cachedPropertyPrefix = prefix;
  }
  static isEventTypeSupported(eventType) {
    try {
      let e = html.Event.eventType(eventType, '');
      return html.Event.is(e);
    } catch (_) {
    }

    return false;
  }
};
dart.setSignature(html_common.Device, {
  sfields: () => ({
    _isOpera: core.bool,
    _isIE: core.bool,
    _isFirefox: core.bool,
    _isWebKit: core.bool,
    _cachedCssPrefix: core.String,
    _cachedPropertyPrefix: core.String
  }),
  sgetters: () => ({
    userAgent: dart.definiteFunctionType(core.String, []),
    isOpera: dart.definiteFunctionType(core.bool, []),
    isIE: dart.definiteFunctionType(core.bool, []),
    isFirefox: dart.definiteFunctionType(core.bool, []),
    isWebKit: dart.definiteFunctionType(core.bool, []),
    cssPrefix: dart.definiteFunctionType(core.String, []),
    propertyPrefix: dart.definiteFunctionType(core.String, [])
  }),
  statics: () => ({isEventTypeSupported: dart.definiteFunctionType(core.bool, [core.String])}),
  names: ['isEventTypeSupported']
});
html_common.Device._isOpera = null;
html_common.Device._isIE = null;
html_common.Device._isFirefox = null;
html_common.Device._isWebKit = null;
html_common.Device._cachedCssPrefix = null;
html_common.Device._cachedPropertyPrefix = null;
const _childNodes = Symbol('_childNodes');
const _node = Symbol('_node');
const _iterable = Symbol('_iterable');
const _filtered = Symbol('_filtered');
html_common.FilteredElementList = class FilteredElementList extends collection.ListBase$(html.Element) {
  new(node) {
    this[_childNodes] = node[dartx.nodes];
    this[_node] = node;
  }
  get [_iterable]() {
    return this[_childNodes][dartx.where](dart.fn(n => html.Element.is(n), NodeTobool()))[dartx.map](html.Element)(dart.fn(n => html.Element.as(n), NodeToElement()));
  }
  get [_filtered]() {
    return ListOfElement().from(this[_iterable], {growable: false});
  }
  forEach(f) {
    this[_filtered][dartx.forEach](f);
  }
  _set(index, value) {
    this._get(index)[dartx.replaceWith](value);
    return value;
  }
  set length(newLength) {
    let len = this.length;
    if (dart.notNull(newLength) >= dart.notNull(len)) {
      return;
    } else if (dart.notNull(newLength) < 0) {
      dart.throw(new core.ArgumentError("Invalid list length"));
    }
    this.removeRange(newLength, len);
  }
  add(value) {
    this[_childNodes][dartx.add](value);
  }
  addAll(iterable) {
    for (let element of iterable) {
      this.add(element);
    }
  }
  contains(needle) {
    if (!html.Element.is(needle)) return false;
    let element = html.Element._check(needle);
    return dart.equals(element[dartx.parentNode], this[_node]);
  }
  get reversed() {
    return this[_filtered][dartx.reversed];
  }
  sort(compare) {
    if (compare === void 0) compare = null;
    dart.throw(new core.UnsupportedError('Cannot sort filtered list'));
  }
  setRange(start, end, iterable, skipCount) {
    if (skipCount === void 0) skipCount = 0;
    dart.throw(new core.UnsupportedError('Cannot setRange on filtered list'));
  }
  fillRange(start, end, fillValue) {
    if (fillValue === void 0) fillValue = null;
    dart.throw(new core.UnsupportedError('Cannot fillRange on filtered list'));
  }
  replaceRange(start, end, iterable) {
    dart.throw(new core.UnsupportedError('Cannot replaceRange on filtered list'));
  }
  removeRange(start, end) {
    core.List.from(this[_iterable][dartx.skip](start)[dartx.take](dart.notNull(end) - dart.notNull(start)))[dartx.forEach](dart.fn(el => dart.dsend(el, 'remove'), dynamicTovoid()));
  }
  clear() {
    this[_childNodes][dartx.clear]();
  }
  removeLast() {
    let result = this[_iterable][dartx.last];
    if (result != null) {
      result[dartx.remove]();
    }
    return result;
  }
  insert(index, value) {
    if (index == this.length) {
      this.add(value);
    } else {
      let element = this[_iterable][dartx.elementAt](index);
      element[dartx.parentNode][dartx.insertBefore](value, element);
    }
  }
  insertAll(index, iterable) {
    if (index == this.length) {
      this.addAll(iterable);
    } else {
      let element = this[_iterable][dartx.elementAt](index);
      element[dartx.parentNode][dartx.insertAllBefore](iterable, element);
    }
  }
  removeAt(index) {
    let result = this._get(index);
    result[dartx.remove]();
    return result;
  }
  remove(element) {
    if (!html.Element.is(element)) return false;
    if (dart.test(this.contains(element))) {
      html.Element.as(element)[dartx.remove]();
      return true;
    } else {
      return false;
    }
  }
  get length() {
    return this[_iterable][dartx.length];
  }
  _get(index) {
    return this[_iterable][dartx.elementAt](index);
  }
  get iterator() {
    return this[_filtered][dartx.iterator];
  }
  get rawList() {
    return this[_node][dartx.childNodes];
  }
};
dart.addSimpleTypeTests(html_common.FilteredElementList);
html_common.FilteredElementList[dart.implements] = () => [html_common.NodeListWrapper];
dart.setSignature(html_common.FilteredElementList, {
  constructors: () => ({new: dart.definiteFunctionType(html_common.FilteredElementList, [html.Node])}),
  fields: () => ({
    [_node]: html.Node,
    [_childNodes]: ListOfNode()
  }),
  getters: () => ({
    [_iterable]: dart.definiteFunctionType(core.Iterable$(html.Element), []),
    [_filtered]: dart.definiteFunctionType(core.List$(html.Element), []),
    reversed: dart.definiteFunctionType(core.Iterable$(html.Element), []),
    length: dart.definiteFunctionType(core.int, []),
    iterator: dart.definiteFunctionType(core.Iterator$(html.Element), []),
    rawList: dart.definiteFunctionType(core.List$(html.Node), [])
  }),
  setters: () => ({length: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    forEach: dart.definiteFunctionType(dart.void, [ElementTovoid()]),
    _set: dart.definiteFunctionType(dart.void, [core.int, html.Element]),
    add: dart.definiteFunctionType(dart.void, [html.Element]),
    addAll: dart.definiteFunctionType(dart.void, [IterableOfElement()]),
    sort: dart.definiteFunctionType(dart.void, [], [ElementAndElementToint()]),
    setRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfElement()], [core.int]),
    fillRange: dart.definiteFunctionType(dart.void, [core.int, core.int], [html.Element]),
    replaceRange: dart.definiteFunctionType(dart.void, [core.int, core.int, IterableOfElement()]),
    removeLast: dart.definiteFunctionType(html.Element, []),
    insert: dart.definiteFunctionType(dart.void, [core.int, html.Element]),
    insertAll: dart.definiteFunctionType(dart.void, [core.int, IterableOfElement()]),
    removeAt: dart.definiteFunctionType(html.Element, [core.int]),
    _get: dart.definiteFunctionType(html.Element, [core.int])
  })
});
dart.defineExtensionMembers(html_common.FilteredElementList, [
  'forEach',
  '_set',
  'add',
  'addAll',
  'contains',
  'sort',
  'setRange',
  'fillRange',
  'replaceRange',
  'removeRange',
  'clear',
  'removeLast',
  'insert',
  'insertAll',
  'removeAt',
  'remove',
  '_get',
  'length',
  'reversed',
  'length',
  'iterator'
]);
html_common.Lists = class Lists extends core.Object {
  static indexOf(a, element, startIndex, endIndex) {
    if (dart.notNull(startIndex) >= dart.notNull(a[dartx.length])) {
      return -1;
    }
    if (dart.notNull(startIndex) < 0) {
      startIndex = 0;
    }
    for (let i = startIndex; dart.notNull(i) < dart.notNull(endIndex); i = dart.notNull(i) + 1) {
      if (dart.equals(a[dartx._get](i), element)) {
        return i;
      }
    }
    return -1;
  }
  static lastIndexOf(a, element, startIndex) {
    if (dart.notNull(startIndex) < 0) {
      return -1;
    }
    if (dart.notNull(startIndex) >= dart.notNull(a[dartx.length])) {
      startIndex = dart.notNull(a[dartx.length]) - 1;
    }
    for (let i = startIndex; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
      if (dart.equals(a[dartx._get](i), element)) {
        return i;
      }
    }
    return -1;
  }
  static getRange(a, start, end, accumulator) {
    if (dart.notNull(start) < 0) dart.throw(new core.RangeError.value(start));
    if (dart.notNull(end) < dart.notNull(start)) dart.throw(new core.RangeError.value(end));
    if (dart.notNull(end) > dart.notNull(a[dartx.length])) dart.throw(new core.RangeError.value(end));
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      accumulator[dartx.add](a[dartx._get](i));
    }
    return accumulator;
  }
};
dart.setSignature(html_common.Lists, {
  statics: () => ({
    indexOf: dart.definiteFunctionType(core.int, [core.List, core.Object, core.int, core.int]),
    lastIndexOf: dart.definiteFunctionType(core.int, [core.List, core.Object, core.int]),
    getRange: dart.definiteFunctionType(core.List, [core.List, core.int, core.int, core.List])
  }),
  names: ['indexOf', 'lastIndexOf', 'getRange']
});
html_common.NodeListWrapper = class NodeListWrapper extends core.Object {};
svg._SvgElementFactoryProvider = class _SvgElementFactoryProvider extends core.Object {
  static createSvgElement_tag(tag) {
    let temp = html.document[dartx.createElementNS]("http://www.w3.org/2000/svg", tag);
    return svg.SvgElement._check(temp);
  }
};
dart.setSignature(svg._SvgElementFactoryProvider, {
  statics: () => ({createSvgElement_tag: dart.definiteFunctionType(svg.SvgElement, [core.String])}),
  names: ['createSvgElement_tag']
});
const _children = Symbol('_children');
const _svgClassName = Symbol('_svgClassName');
dart.defineExtensionNames([
  'classes',
  'children',
  'children',
  'outerHtml',
  'innerHtml',
  'innerHtml',
  'createFragment',
  'insertAdjacentText',
  'insertAdjacentHtml',
  'insertAdjacentElement',
  'isContentEditable',
  'click',
  'blur',
  'focus',
  'onAbort',
  'onBlur',
  'onCanPlay',
  'onCanPlayThrough',
  'onChange',
  'onClick',
  'onContextMenu',
  'onDoubleClick',
  'onDrag',
  'onDragEnd',
  'onDragEnter',
  'onDragLeave',
  'onDragOver',
  'onDragStart',
  'onDrop',
  'onDurationChange',
  'onEmptied',
  'onEnded',
  'onError',
  'onFocus',
  'onInput',
  'onInvalid',
  'onKeyDown',
  'onKeyPress',
  'onKeyUp',
  'onLoad',
  'onLoadedData',
  'onLoadedMetadata',
  'onMouseDown',
  'onMouseEnter',
  'onMouseLeave',
  'onMouseMove',
  'onMouseOut',
  'onMouseOver',
  'onMouseUp',
  'onMouseWheel',
  'onPause',
  'onPlay',
  'onPlaying',
  'onRateChange',
  'onReset',
  'onResize',
  'onScroll',
  'onSeeked',
  'onSeeking',
  'onSelect',
  'onStalled',
  'onSubmit',
  'onSuspend',
  'onTimeUpdate',
  'onVolumeChange',
  'onWaiting',
  'ownerSvgElement',
  'viewportElement'
]);
svg.SvgElement = class SvgElement extends html.Element {
  static tag(tag) {
    return svg.SvgElement._check(html.document[dartx.createElementNS]("http://www.w3.org/2000/svg", tag));
  }
  static svg(svg, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (validator == null && treeSanitizer == null) {
      validator = new html.NodeValidatorBuilder.common();
      validator.allowSvg();
    }
    let match = svg.SvgElement._START_TAG_REGEXP.firstMatch(svg);
    let parentElement = null;
    if (match != null && match.group(1)[dartx.toLowerCase]() == 'svg') {
      parentElement = html.document[dartx.body];
    } else {
      parentElement = svg.SvgSvgElement.new();
    }
    let fragment = dart.dsend(parentElement, 'createFragment', svg, {validator: validator, treeSanitizer: treeSanitizer});
    return svg.SvgElement._check(dart.dload(dart.dsend(dart.dload(fragment, 'nodes'), 'where', dart.fn(e => svg.SvgElement.is(e), dynamicTobool())), 'single'));
  }
  get [dartx.classes]() {
    return new svg._AttributeClassSet(this);
  }
  set [dartx.classes](value) {
    super[dartx.classes] = value;
  }
  get [dartx.children]() {
    return new html_common.FilteredElementList(this);
  }
  set [dartx.children](value) {
    let children = this[dartx.children];
    children[dartx.clear]();
    children[dartx.addAll](value);
  }
  get [dartx.outerHtml]() {
    let container = html.Element.tag("div");
    let cloned = svg.SvgElement._check(this[dartx.clone](true));
    container[dartx.children][dartx.add](cloned);
    return container[dartx.innerHtml];
  }
  get [dartx.innerHtml]() {
    let container = html.Element.tag("div");
    let cloned = svg.SvgElement._check(this[dartx.clone](true));
    container[dartx.children][dartx.addAll](cloned[dartx.children]);
    return container[dartx.innerHtml];
  }
  set [dartx.innerHtml](value) {
    this[dartx.setInnerHtml](value);
  }
  [dartx.createFragment](svg, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (treeSanitizer == null) {
      if (validator == null) {
        validator = new html.NodeValidatorBuilder.common();
        validator.allowSvg();
      }
      treeSanitizer = html.NodeTreeSanitizer.new(validator);
    }
    let html = dart.str`<svg version="1.1">${svg}</svg>`;
    let fragment = html.document[dartx.body][dartx.createFragment](html, {treeSanitizer: treeSanitizer});
    let svgFragment = html.DocumentFragment.new();
    let root = fragment[dartx.nodes][dartx.single];
    while (root[dartx.firstChild] != null) {
      svgFragment[dartx.append](root[dartx.firstChild]);
    }
    return svgFragment;
  }
  [dartx.insertAdjacentText](where, text) {
    dart.throw(new core.UnsupportedError("Cannot invoke insertAdjacentText on SVG."));
  }
  [dartx.insertAdjacentHtml](where, text, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    dart.throw(new core.UnsupportedError("Cannot invoke insertAdjacentHtml on SVG."));
  }
  [dartx.insertAdjacentElement](where, element) {
    dart.throw(new core.UnsupportedError("Cannot invoke insertAdjacentElement on SVG."));
  }
  get [_children]() {
    dart.throw(new core.UnsupportedError("Cannot get _children on SVG."));
  }
  get [dartx.isContentEditable]() {
    return false;
  }
  [dartx.click]() {
    dart.throw(new core.UnsupportedError("Cannot invoke click SVG."));
  }
  static isTagSupported(tag) {
    let e = svg.SvgElement.tag(tag);
    return svg.SvgElement.is(e) && !html.UnknownElement.is(e);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.ownerSvgElement] = null;
    this[dartx.viewportElement] = null;
    super.created();
  }
  get [_svgClassName]() {
    return this.className;
  }
  get [dartx.ownerSvgElement]() {
    return this.ownerSVGElement;
  }
  get [dartx.viewportElement]() {
    return this.viewportElement;
  }
  [dartx.blur](...args) {
    return this.blur.apply(this, args);
  }
  [dartx.focus](...args) {
    return this.focus.apply(this, args);
  }
  get [dartx.onAbort]() {
    return svg.SvgElement.abortEvent.forElement(this);
  }
  get [dartx.onBlur]() {
    return svg.SvgElement.blurEvent.forElement(this);
  }
  get [dartx.onCanPlay]() {
    return svg.SvgElement.canPlayEvent.forElement(this);
  }
  get [dartx.onCanPlayThrough]() {
    return svg.SvgElement.canPlayThroughEvent.forElement(this);
  }
  get [dartx.onChange]() {
    return svg.SvgElement.changeEvent.forElement(this);
  }
  get [dartx.onClick]() {
    return svg.SvgElement.clickEvent.forElement(this);
  }
  get [dartx.onContextMenu]() {
    return svg.SvgElement.contextMenuEvent.forElement(this);
  }
  get [dartx.onDoubleClick]() {
    return svg.SvgElement.doubleClickEvent.forElement(this);
  }
  get [dartx.onDrag]() {
    return svg.SvgElement.dragEvent.forElement(this);
  }
  get [dartx.onDragEnd]() {
    return svg.SvgElement.dragEndEvent.forElement(this);
  }
  get [dartx.onDragEnter]() {
    return svg.SvgElement.dragEnterEvent.forElement(this);
  }
  get [dartx.onDragLeave]() {
    return svg.SvgElement.dragLeaveEvent.forElement(this);
  }
  get [dartx.onDragOver]() {
    return svg.SvgElement.dragOverEvent.forElement(this);
  }
  get [dartx.onDragStart]() {
    return svg.SvgElement.dragStartEvent.forElement(this);
  }
  get [dartx.onDrop]() {
    return svg.SvgElement.dropEvent.forElement(this);
  }
  get [dartx.onDurationChange]() {
    return svg.SvgElement.durationChangeEvent.forElement(this);
  }
  get [dartx.onEmptied]() {
    return svg.SvgElement.emptiedEvent.forElement(this);
  }
  get [dartx.onEnded]() {
    return svg.SvgElement.endedEvent.forElement(this);
  }
  get [dartx.onError]() {
    return svg.SvgElement.errorEvent.forElement(this);
  }
  get [dartx.onFocus]() {
    return svg.SvgElement.focusEvent.forElement(this);
  }
  get [dartx.onInput]() {
    return svg.SvgElement.inputEvent.forElement(this);
  }
  get [dartx.onInvalid]() {
    return svg.SvgElement.invalidEvent.forElement(this);
  }
  get [dartx.onKeyDown]() {
    return svg.SvgElement.keyDownEvent.forElement(this);
  }
  get [dartx.onKeyPress]() {
    return svg.SvgElement.keyPressEvent.forElement(this);
  }
  get [dartx.onKeyUp]() {
    return svg.SvgElement.keyUpEvent.forElement(this);
  }
  get [dartx.onLoad]() {
    return svg.SvgElement.loadEvent.forElement(this);
  }
  get [dartx.onLoadedData]() {
    return svg.SvgElement.loadedDataEvent.forElement(this);
  }
  get [dartx.onLoadedMetadata]() {
    return svg.SvgElement.loadedMetadataEvent.forElement(this);
  }
  get [dartx.onMouseDown]() {
    return svg.SvgElement.mouseDownEvent.forElement(this);
  }
  get [dartx.onMouseEnter]() {
    return svg.SvgElement.mouseEnterEvent.forElement(this);
  }
  get [dartx.onMouseLeave]() {
    return svg.SvgElement.mouseLeaveEvent.forElement(this);
  }
  get [dartx.onMouseMove]() {
    return svg.SvgElement.mouseMoveEvent.forElement(this);
  }
  get [dartx.onMouseOut]() {
    return svg.SvgElement.mouseOutEvent.forElement(this);
  }
  get [dartx.onMouseOver]() {
    return svg.SvgElement.mouseOverEvent.forElement(this);
  }
  get [dartx.onMouseUp]() {
    return svg.SvgElement.mouseUpEvent.forElement(this);
  }
  get [dartx.onMouseWheel]() {
    return svg.SvgElement.mouseWheelEvent.forElement(this);
  }
  get [dartx.onPause]() {
    return svg.SvgElement.pauseEvent.forElement(this);
  }
  get [dartx.onPlay]() {
    return svg.SvgElement.playEvent.forElement(this);
  }
  get [dartx.onPlaying]() {
    return svg.SvgElement.playingEvent.forElement(this);
  }
  get [dartx.onRateChange]() {
    return svg.SvgElement.rateChangeEvent.forElement(this);
  }
  get [dartx.onReset]() {
    return svg.SvgElement.resetEvent.forElement(this);
  }
  get [dartx.onResize]() {
    return svg.SvgElement.resizeEvent.forElement(this);
  }
  get [dartx.onScroll]() {
    return svg.SvgElement.scrollEvent.forElement(this);
  }
  get [dartx.onSeeked]() {
    return svg.SvgElement.seekedEvent.forElement(this);
  }
  get [dartx.onSeeking]() {
    return svg.SvgElement.seekingEvent.forElement(this);
  }
  get [dartx.onSelect]() {
    return svg.SvgElement.selectEvent.forElement(this);
  }
  get [dartx.onStalled]() {
    return svg.SvgElement.stalledEvent.forElement(this);
  }
  get [dartx.onSubmit]() {
    return svg.SvgElement.submitEvent.forElement(this);
  }
  get [dartx.onSuspend]() {
    return svg.SvgElement.suspendEvent.forElement(this);
  }
  get [dartx.onTimeUpdate]() {
    return svg.SvgElement.timeUpdateEvent.forElement(this);
  }
  get [dartx.onVolumeChange]() {
    return svg.SvgElement.volumeChangeEvent.forElement(this);
  }
  get [dartx.onWaiting]() {
    return svg.SvgElement.waitingEvent.forElement(this);
  }
};
dart.defineNamedConstructor(svg.SvgElement, 'created');
svg.SvgElement[dart.implements] = () => [html.GlobalEventHandlers];
dart.setSignature(svg.SvgElement, {
  constructors: () => ({
    tag: dart.definiteFunctionType(svg.SvgElement, [core.String]),
    svg: dart.definiteFunctionType(svg.SvgElement, [core.String], {validator: html.NodeValidator, treeSanitizer: html.NodeTreeSanitizer}),
    _: dart.definiteFunctionType(svg.SvgElement, []),
    created: dart.definiteFunctionType(svg.SvgElement, [])
  }),
  fields: () => ({
    [dartx.ownerSvgElement]: svg.SvgSvgElement,
    [dartx.viewportElement]: svg.SvgElement
  }),
  getters: () => ({
    [_children]: dart.definiteFunctionType(html.HtmlCollection, []),
    [_svgClassName]: dart.definiteFunctionType(svg.AnimatedString, [])
  }),
  sfields: () => ({
    _START_TAG_REGEXP: core.RegExp,
    abortEvent: EventStreamProviderOfEvent(),
    blurEvent: EventStreamProviderOfEvent(),
    canPlayEvent: EventStreamProviderOfEvent(),
    canPlayThroughEvent: EventStreamProviderOfEvent(),
    changeEvent: EventStreamProviderOfEvent(),
    clickEvent: EventStreamProviderOfMouseEvent(),
    contextMenuEvent: EventStreamProviderOfMouseEvent(),
    doubleClickEvent: EventStreamProviderOfEvent(),
    dragEvent: EventStreamProviderOfMouseEvent(),
    dragEndEvent: EventStreamProviderOfMouseEvent(),
    dragEnterEvent: EventStreamProviderOfMouseEvent(),
    dragLeaveEvent: EventStreamProviderOfMouseEvent(),
    dragOverEvent: EventStreamProviderOfMouseEvent(),
    dragStartEvent: EventStreamProviderOfMouseEvent(),
    dropEvent: EventStreamProviderOfMouseEvent(),
    durationChangeEvent: EventStreamProviderOfEvent(),
    emptiedEvent: EventStreamProviderOfEvent(),
    endedEvent: EventStreamProviderOfEvent(),
    errorEvent: EventStreamProviderOfEvent(),
    focusEvent: EventStreamProviderOfEvent(),
    inputEvent: EventStreamProviderOfEvent(),
    invalidEvent: EventStreamProviderOfEvent(),
    keyDownEvent: EventStreamProviderOfKeyboardEvent(),
    keyPressEvent: EventStreamProviderOfKeyboardEvent(),
    keyUpEvent: EventStreamProviderOfKeyboardEvent(),
    loadEvent: EventStreamProviderOfEvent(),
    loadedDataEvent: EventStreamProviderOfEvent(),
    loadedMetadataEvent: EventStreamProviderOfEvent(),
    mouseDownEvent: EventStreamProviderOfMouseEvent(),
    mouseEnterEvent: EventStreamProviderOfMouseEvent(),
    mouseLeaveEvent: EventStreamProviderOfMouseEvent(),
    mouseMoveEvent: EventStreamProviderOfMouseEvent(),
    mouseOutEvent: EventStreamProviderOfMouseEvent(),
    mouseOverEvent: EventStreamProviderOfMouseEvent(),
    mouseUpEvent: EventStreamProviderOfMouseEvent(),
    mouseWheelEvent: EventStreamProviderOfWheelEvent(),
    pauseEvent: EventStreamProviderOfEvent(),
    playEvent: EventStreamProviderOfEvent(),
    playingEvent: EventStreamProviderOfEvent(),
    rateChangeEvent: EventStreamProviderOfEvent(),
    resetEvent: EventStreamProviderOfEvent(),
    resizeEvent: EventStreamProviderOfEvent(),
    scrollEvent: EventStreamProviderOfEvent(),
    seekedEvent: EventStreamProviderOfEvent(),
    seekingEvent: EventStreamProviderOfEvent(),
    selectEvent: EventStreamProviderOfEvent(),
    stalledEvent: EventStreamProviderOfEvent(),
    submitEvent: EventStreamProviderOfEvent(),
    suspendEvent: EventStreamProviderOfEvent(),
    timeUpdateEvent: EventStreamProviderOfEvent(),
    volumeChangeEvent: EventStreamProviderOfEvent(),
    waitingEvent: EventStreamProviderOfEvent()
  })
});
dart.defineLazy(svg.SvgElement, {
  get _START_TAG_REGEXP() {
    return core.RegExp.new('<(\\w+)');
  },
  get abortEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('abort'));
  },
  get blurEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('blur'));
  },
  get canPlayEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('canplay'));
  },
  get canPlayThroughEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('canplaythrough'));
  },
  get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('change'));
  },
  get clickEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('click'));
  },
  get contextMenuEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('contextmenu'));
  },
  get doubleClickEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('dblclick'));
  },
  get dragEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('drag'));
  },
  get dragEndEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragend'));
  },
  get dragEnterEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragenter'));
  },
  get dragLeaveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragleave'));
  },
  get dragOverEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragover'));
  },
  get dragStartEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('dragstart'));
  },
  get dropEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('drop'));
  },
  get durationChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('durationchange'));
  },
  get emptiedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('emptied'));
  },
  get endedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('ended'));
  },
  get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('error'));
  },
  get focusEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('focus'));
  },
  get inputEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('input'));
  },
  get invalidEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('invalid'));
  },
  get keyDownEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent())('keydown'));
  },
  get keyPressEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent())('keypress'));
  },
  get keyUpEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent())('keyup'));
  },
  get loadEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('load'));
  },
  get loadedDataEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('loadeddata'));
  },
  get loadedMetadataEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('loadedmetadata'));
  },
  get mouseDownEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mousedown'));
  },
  get mouseEnterEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseenter'));
  },
  get mouseLeaveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseleave'));
  },
  get mouseMoveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mousemove'));
  },
  get mouseOutEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseout'));
  },
  get mouseOverEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseover'));
  },
  get mouseUpEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent())('mouseup'));
  },
  get mouseWheelEvent() {
    return dart.const(new (EventStreamProviderOfWheelEvent())('mousewheel'));
  },
  get pauseEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('pause'));
  },
  get playEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('play'));
  },
  get playingEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('playing'));
  },
  get rateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('ratechange'));
  },
  get resetEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('reset'));
  },
  get resizeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('resize'));
  },
  get scrollEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('scroll'));
  },
  get seekedEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('seeked'));
  },
  get seekingEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('seeking'));
  },
  get selectEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('select'));
  },
  get stalledEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('stalled'));
  },
  get submitEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('submit'));
  },
  get suspendEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('suspend'));
  },
  get timeUpdateEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('timeupdate'));
  },
  get volumeChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('volumechange'));
  },
  get waitingEvent() {
    return dart.const(new (EventStreamProviderOfEvent())('waiting'));
  }
});
dart.registerExtension(dart.global.SVGElement, svg.SvgElement);
dart.defineExtensionNames([
  'getBBox',
  'getCtm',
  'getScreenCtm',
  'getTransformToElement',
  'hasExtension',
  'farthestViewportElement',
  'nearestViewportElement',
  'transform',
  'requiredExtensions',
  'requiredFeatures',
  'systemLanguage'
]);
svg.GraphicsElement = class GraphicsElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.farthestViewportElement] = null;
    this[dartx.nearestViewportElement] = null;
    this[dartx.transform] = null;
    this[dartx.requiredExtensions] = null;
    this[dartx.requiredFeatures] = null;
    this[dartx.systemLanguage] = null;
    super.created();
  }
  get [dartx.farthestViewportElement]() {
    return this.farthestViewportElement;
  }
  get [dartx.nearestViewportElement]() {
    return this.nearestViewportElement;
  }
  get [dartx.transform]() {
    return this.transform;
  }
  [dartx.getBBox](...args) {
    return this.getBBox.apply(this, args);
  }
  [dartx.getCtm](...args) {
    return this.getCTM.apply(this, args);
  }
  [dartx.getScreenCtm](...args) {
    return this.getScreenCTM.apply(this, args);
  }
  [dartx.getTransformToElement](...args) {
    return this.getTransformToElement.apply(this, args);
  }
  get [dartx.requiredExtensions]() {
    return this.requiredExtensions;
  }
  get [dartx.requiredFeatures]() {
    return this.requiredFeatures;
  }
  get [dartx.systemLanguage]() {
    return this.systemLanguage;
  }
  [dartx.hasExtension](...args) {
    return this.hasExtension.apply(this, args);
  }
};
dart.defineNamedConstructor(svg.GraphicsElement, 'created');
svg.GraphicsElement[dart.implements] = () => [svg.Tests];
dart.setSignature(svg.GraphicsElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.GraphicsElement, []),
    created: dart.definiteFunctionType(svg.GraphicsElement, [])
  }),
  fields: () => ({
    [dartx.farthestViewportElement]: svg.SvgElement,
    [dartx.nearestViewportElement]: svg.SvgElement,
    [dartx.transform]: svg.AnimatedTransformList,
    [dartx.requiredExtensions]: svg.StringList,
    [dartx.requiredFeatures]: svg.StringList,
    [dartx.systemLanguage]: svg.StringList
  }),
  methods: () => ({
    [dartx.getBBox]: dart.definiteFunctionType(svg.Rect, []),
    [dartx.getCtm]: dart.definiteFunctionType(svg.Matrix, []),
    [dartx.getScreenCtm]: dart.definiteFunctionType(svg.Matrix, []),
    [dartx.getTransformToElement]: dart.definiteFunctionType(svg.Matrix, [svg.SvgElement]),
    [dartx.hasExtension]: dart.definiteFunctionType(core.bool, [core.String])
  })
});
dart.registerExtension(dart.global.SVGGraphicsElement, svg.GraphicsElement);
dart.defineExtensionNames([
  'target',
  'href'
]);
svg.AElement = class AElement extends svg.GraphicsElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.AElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("a"));
  }
  created() {
    this[dartx.target] = null;
    this[dartx.href] = null;
    super.created();
  }
  get [dartx.target]() {
    return this.target;
  }
  get [dartx.href]() {
    return this.href;
  }
};
dart.defineNamedConstructor(svg.AElement, 'created');
svg.AElement[dart.implements] = () => [svg.UriReference];
dart.setSignature(svg.AElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.AElement, []),
    new: dart.definiteFunctionType(svg.AElement, []),
    created: dart.definiteFunctionType(svg.AElement, [])
  }),
  fields: () => ({
    [dartx.target]: svg.AnimatedString,
    [dartx.href]: svg.AnimatedString
  })
});
dart.registerExtension(dart.global.SVGAElement, svg.AElement);
dart.defineExtensionNames([
  'convertToSpecifiedUnits',
  'newValueSpecifiedUnits',
  'unitType',
  'value',
  'valueAsString',
  'valueInSpecifiedUnits'
]);
svg.Angle = class Angle extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.unitType]() {
    return this.unitType;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
  get [dartx.valueAsString]() {
    return this.valueAsString;
  }
  set [dartx.valueAsString](value) {
    this.valueAsString = value;
  }
  get [dartx.valueInSpecifiedUnits]() {
    return this.valueInSpecifiedUnits;
  }
  set [dartx.valueInSpecifiedUnits](value) {
    this.valueInSpecifiedUnits = value;
  }
  [dartx.convertToSpecifiedUnits](...args) {
    return this.convertToSpecifiedUnits.apply(this, args);
  }
  [dartx.newValueSpecifiedUnits](...args) {
    return this.newValueSpecifiedUnits.apply(this, args);
  }
};
dart.setSignature(svg.Angle, {
  constructors: () => ({_: dart.definiteFunctionType(svg.Angle, [])}),
  fields: () => ({
    [dartx.unitType]: core.int,
    [dartx.value]: core.num,
    [dartx.valueAsString]: core.String,
    [dartx.valueInSpecifiedUnits]: core.num
  }),
  methods: () => ({
    [dartx.convertToSpecifiedUnits]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.newValueSpecifiedUnits]: dart.definiteFunctionType(dart.void, [core.int, core.num])
  }),
  sfields: () => ({
    SVG_ANGLETYPE_DEG: core.int,
    SVG_ANGLETYPE_GRAD: core.int,
    SVG_ANGLETYPE_RAD: core.int,
    SVG_ANGLETYPE_UNKNOWN: core.int,
    SVG_ANGLETYPE_UNSPECIFIED: core.int
  })
});
svg.Angle.SVG_ANGLETYPE_DEG = 2;
svg.Angle.SVG_ANGLETYPE_GRAD = 4;
svg.Angle.SVG_ANGLETYPE_RAD = 3;
svg.Angle.SVG_ANGLETYPE_UNKNOWN = 0;
svg.Angle.SVG_ANGLETYPE_UNSPECIFIED = 1;
dart.registerExtension(dart.global.SVGAngle, svg.Angle);
dart.defineExtensionNames([
  'beginElement',
  'beginElementAt',
  'endElement',
  'endElementAt',
  'getCurrentTime',
  'getSimpleDuration',
  'getStartTime',
  'hasExtension',
  'targetElement',
  'requiredExtensions',
  'requiredFeatures',
  'systemLanguage'
]);
svg.AnimationElement = class AnimationElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.AnimationElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("animation"));
  }
  created() {
    this[dartx.targetElement] = null;
    this[dartx.requiredExtensions] = null;
    this[dartx.requiredFeatures] = null;
    this[dartx.systemLanguage] = null;
    super.created();
  }
  get [dartx.targetElement]() {
    return this.targetElement;
  }
  [dartx.beginElement](...args) {
    return this.beginElement.apply(this, args);
  }
  [dartx.beginElementAt](...args) {
    return this.beginElementAt.apply(this, args);
  }
  [dartx.endElement](...args) {
    return this.endElement.apply(this, args);
  }
  [dartx.endElementAt](...args) {
    return this.endElementAt.apply(this, args);
  }
  [dartx.getCurrentTime](...args) {
    return this.getCurrentTime.apply(this, args);
  }
  [dartx.getSimpleDuration](...args) {
    return this.getSimpleDuration.apply(this, args);
  }
  [dartx.getStartTime](...args) {
    return this.getStartTime.apply(this, args);
  }
  get [dartx.requiredExtensions]() {
    return this.requiredExtensions;
  }
  get [dartx.requiredFeatures]() {
    return this.requiredFeatures;
  }
  get [dartx.systemLanguage]() {
    return this.systemLanguage;
  }
  [dartx.hasExtension](...args) {
    return this.hasExtension.apply(this, args);
  }
};
dart.defineNamedConstructor(svg.AnimationElement, 'created');
svg.AnimationElement[dart.implements] = () => [svg.Tests];
dart.setSignature(svg.AnimationElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.AnimationElement, []),
    new: dart.definiteFunctionType(svg.AnimationElement, []),
    created: dart.definiteFunctionType(svg.AnimationElement, [])
  }),
  fields: () => ({
    [dartx.targetElement]: svg.SvgElement,
    [dartx.requiredExtensions]: svg.StringList,
    [dartx.requiredFeatures]: svg.StringList,
    [dartx.systemLanguage]: svg.StringList
  }),
  methods: () => ({
    [dartx.beginElement]: dart.definiteFunctionType(dart.void, []),
    [dartx.beginElementAt]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.endElement]: dart.definiteFunctionType(dart.void, []),
    [dartx.endElementAt]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.getCurrentTime]: dart.definiteFunctionType(core.double, []),
    [dartx.getSimpleDuration]: dart.definiteFunctionType(core.double, []),
    [dartx.getStartTime]: dart.definiteFunctionType(core.double, []),
    [dartx.hasExtension]: dart.definiteFunctionType(core.bool, [core.String])
  })
});
dart.registerExtension(dart.global.SVGAnimationElement, svg.AnimationElement);
svg.AnimateElement = class AnimateElement extends svg.AnimationElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.AnimateElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("animate"));
  }
  created() {
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('animate')) && svg.AnimateElement.is(svg.SvgElement.tag('animate'));
  }
};
dart.defineNamedConstructor(svg.AnimateElement, 'created');
dart.setSignature(svg.AnimateElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.AnimateElement, []),
    new: dart.definiteFunctionType(svg.AnimateElement, []),
    created: dart.definiteFunctionType(svg.AnimateElement, [])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGAnimateElement, svg.AnimateElement);
svg.AnimateMotionElement = class AnimateMotionElement extends svg.AnimationElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.AnimateMotionElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("animateMotion"));
  }
  created() {
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('animateMotion')) && svg.AnimateMotionElement.is(svg.SvgElement.tag('animateMotion'));
  }
};
dart.defineNamedConstructor(svg.AnimateMotionElement, 'created');
dart.setSignature(svg.AnimateMotionElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.AnimateMotionElement, []),
    new: dart.definiteFunctionType(svg.AnimateMotionElement, []),
    created: dart.definiteFunctionType(svg.AnimateMotionElement, [])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGAnimateMotionElement, svg.AnimateMotionElement);
svg.AnimateTransformElement = class AnimateTransformElement extends svg.AnimationElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.AnimateTransformElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("animateTransform"));
  }
  created() {
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('animateTransform')) && svg.AnimateTransformElement.is(svg.SvgElement.tag('animateTransform'));
  }
};
dart.defineNamedConstructor(svg.AnimateTransformElement, 'created');
dart.setSignature(svg.AnimateTransformElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.AnimateTransformElement, []),
    new: dart.definiteFunctionType(svg.AnimateTransformElement, []),
    created: dart.definiteFunctionType(svg.AnimateTransformElement, [])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGAnimateTransformElement, svg.AnimateTransformElement);
dart.defineExtensionNames([
  'animVal',
  'baseVal'
]);
svg.AnimatedAngle = class AnimatedAngle extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.animVal]() {
    return this.animVal;
  }
  get [dartx.baseVal]() {
    return this.baseVal;
  }
};
dart.setSignature(svg.AnimatedAngle, {
  constructors: () => ({_: dart.definiteFunctionType(svg.AnimatedAngle, [])}),
  fields: () => ({
    [dartx.animVal]: svg.Angle,
    [dartx.baseVal]: svg.Angle
  })
});
dart.registerExtension(dart.global.SVGAnimatedAngle, svg.AnimatedAngle);
dart.defineExtensionNames([
  'animVal',
  'baseVal'
]);
svg.AnimatedBoolean = class AnimatedBoolean extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.animVal]() {
    return this.animVal;
  }
  get [dartx.baseVal]() {
    return this.baseVal;
  }
  set [dartx.baseVal](value) {
    this.baseVal = value;
  }
};
dart.setSignature(svg.AnimatedBoolean, {
  constructors: () => ({_: dart.definiteFunctionType(svg.AnimatedBoolean, [])}),
  fields: () => ({
    [dartx.animVal]: core.bool,
    [dartx.baseVal]: core.bool
  })
});
dart.registerExtension(dart.global.SVGAnimatedBoolean, svg.AnimatedBoolean);
dart.defineExtensionNames([
  'animVal',
  'baseVal'
]);
svg.AnimatedEnumeration = class AnimatedEnumeration extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.animVal]() {
    return this.animVal;
  }
  get [dartx.baseVal]() {
    return this.baseVal;
  }
  set [dartx.baseVal](value) {
    this.baseVal = value;
  }
};
dart.setSignature(svg.AnimatedEnumeration, {
  constructors: () => ({_: dart.definiteFunctionType(svg.AnimatedEnumeration, [])}),
  fields: () => ({
    [dartx.animVal]: core.int,
    [dartx.baseVal]: core.int
  })
});
dart.registerExtension(dart.global.SVGAnimatedEnumeration, svg.AnimatedEnumeration);
dart.defineExtensionNames([
  'animVal',
  'baseVal'
]);
svg.AnimatedInteger = class AnimatedInteger extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.animVal]() {
    return this.animVal;
  }
  get [dartx.baseVal]() {
    return this.baseVal;
  }
  set [dartx.baseVal](value) {
    this.baseVal = value;
  }
};
dart.setSignature(svg.AnimatedInteger, {
  constructors: () => ({_: dart.definiteFunctionType(svg.AnimatedInteger, [])}),
  fields: () => ({
    [dartx.animVal]: core.int,
    [dartx.baseVal]: core.int
  })
});
dart.registerExtension(dart.global.SVGAnimatedInteger, svg.AnimatedInteger);
dart.defineExtensionNames([
  'animVal',
  'baseVal'
]);
svg.AnimatedLength = class AnimatedLength extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.animVal]() {
    return this.animVal;
  }
  get [dartx.baseVal]() {
    return this.baseVal;
  }
};
dart.setSignature(svg.AnimatedLength, {
  constructors: () => ({_: dart.definiteFunctionType(svg.AnimatedLength, [])}),
  fields: () => ({
    [dartx.animVal]: svg.Length,
    [dartx.baseVal]: svg.Length
  })
});
dart.registerExtension(dart.global.SVGAnimatedLength, svg.AnimatedLength);
dart.defineExtensionNames([
  'animVal',
  'baseVal'
]);
svg.AnimatedLengthList = class AnimatedLengthList extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.animVal]() {
    return this.animVal;
  }
  get [dartx.baseVal]() {
    return this.baseVal;
  }
};
dart.setSignature(svg.AnimatedLengthList, {
  constructors: () => ({_: dart.definiteFunctionType(svg.AnimatedLengthList, [])}),
  fields: () => ({
    [dartx.animVal]: svg.LengthList,
    [dartx.baseVal]: svg.LengthList
  })
});
dart.registerExtension(dart.global.SVGAnimatedLengthList, svg.AnimatedLengthList);
dart.defineExtensionNames([
  'animVal',
  'baseVal'
]);
svg.AnimatedNumber = class AnimatedNumber extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.animVal]() {
    return this.animVal;
  }
  get [dartx.baseVal]() {
    return this.baseVal;
  }
  set [dartx.baseVal](value) {
    this.baseVal = value;
  }
};
dart.setSignature(svg.AnimatedNumber, {
  constructors: () => ({_: dart.definiteFunctionType(svg.AnimatedNumber, [])}),
  fields: () => ({
    [dartx.animVal]: core.double,
    [dartx.baseVal]: core.num
  })
});
dart.registerExtension(dart.global.SVGAnimatedNumber, svg.AnimatedNumber);
dart.defineExtensionNames([
  'animVal',
  'baseVal'
]);
svg.AnimatedNumberList = class AnimatedNumberList extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.animVal]() {
    return this.animVal;
  }
  get [dartx.baseVal]() {
    return this.baseVal;
  }
};
dart.setSignature(svg.AnimatedNumberList, {
  constructors: () => ({_: dart.definiteFunctionType(svg.AnimatedNumberList, [])}),
  fields: () => ({
    [dartx.animVal]: svg.NumberList,
    [dartx.baseVal]: svg.NumberList
  })
});
dart.registerExtension(dart.global.SVGAnimatedNumberList, svg.AnimatedNumberList);
dart.defineExtensionNames([
  'animVal',
  'baseVal'
]);
svg.AnimatedPreserveAspectRatio = class AnimatedPreserveAspectRatio extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.animVal]() {
    return this.animVal;
  }
  get [dartx.baseVal]() {
    return this.baseVal;
  }
};
dart.setSignature(svg.AnimatedPreserveAspectRatio, {
  constructors: () => ({_: dart.definiteFunctionType(svg.AnimatedPreserveAspectRatio, [])}),
  fields: () => ({
    [dartx.animVal]: svg.PreserveAspectRatio,
    [dartx.baseVal]: svg.PreserveAspectRatio
  })
});
dart.registerExtension(dart.global.SVGAnimatedPreserveAspectRatio, svg.AnimatedPreserveAspectRatio);
dart.defineExtensionNames([
  'animVal',
  'baseVal'
]);
svg.AnimatedRect = class AnimatedRect extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.animVal]() {
    return this.animVal;
  }
  get [dartx.baseVal]() {
    return this.baseVal;
  }
};
dart.setSignature(svg.AnimatedRect, {
  constructors: () => ({_: dart.definiteFunctionType(svg.AnimatedRect, [])}),
  fields: () => ({
    [dartx.animVal]: svg.Rect,
    [dartx.baseVal]: svg.Rect
  })
});
dart.registerExtension(dart.global.SVGAnimatedRect, svg.AnimatedRect);
dart.defineExtensionNames([
  'animVal',
  'baseVal'
]);
svg.AnimatedString = class AnimatedString extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.animVal]() {
    return this.animVal;
  }
  get [dartx.baseVal]() {
    return this.baseVal;
  }
  set [dartx.baseVal](value) {
    this.baseVal = value;
  }
};
dart.setSignature(svg.AnimatedString, {
  constructors: () => ({_: dart.definiteFunctionType(svg.AnimatedString, [])}),
  fields: () => ({
    [dartx.animVal]: core.String,
    [dartx.baseVal]: core.String
  })
});
dart.registerExtension(dart.global.SVGAnimatedString, svg.AnimatedString);
dart.defineExtensionNames([
  'animVal',
  'baseVal'
]);
svg.AnimatedTransformList = class AnimatedTransformList extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.animVal]() {
    return this.animVal;
  }
  get [dartx.baseVal]() {
    return this.baseVal;
  }
};
dart.setSignature(svg.AnimatedTransformList, {
  constructors: () => ({_: dart.definiteFunctionType(svg.AnimatedTransformList, [])}),
  fields: () => ({
    [dartx.animVal]: svg.TransformList,
    [dartx.baseVal]: svg.TransformList
  })
});
dart.registerExtension(dart.global.SVGAnimatedTransformList, svg.AnimatedTransformList);
dart.defineExtensionNames([
  'isPointInFill',
  'isPointInStroke'
]);
svg.GeometryElement = class GeometryElement extends svg.GraphicsElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
  [dartx.isPointInFill](...args) {
    return this.isPointInFill.apply(this, args);
  }
  [dartx.isPointInStroke](...args) {
    return this.isPointInStroke.apply(this, args);
  }
};
dart.defineNamedConstructor(svg.GeometryElement, 'created');
dart.setSignature(svg.GeometryElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.GeometryElement, []),
    created: dart.definiteFunctionType(svg.GeometryElement, [])
  }),
  methods: () => ({
    [dartx.isPointInFill]: dart.definiteFunctionType(core.bool, [svg.Point]),
    [dartx.isPointInStroke]: dart.definiteFunctionType(core.bool, [svg.Point])
  })
});
dart.registerExtension(dart.global.SVGGeometryElement, svg.GeometryElement);
dart.defineExtensionNames([
  'cx',
  'cy',
  'r'
]);
svg.CircleElement = class CircleElement extends svg.GeometryElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.CircleElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("circle"));
  }
  created() {
    this[dartx.cx] = null;
    this[dartx.cy] = null;
    this[dartx.r] = null;
    super.created();
  }
  get [dartx.cx]() {
    return this.cx;
  }
  get [dartx.cy]() {
    return this.cy;
  }
  get [dartx.r]() {
    return this.r;
  }
};
dart.defineNamedConstructor(svg.CircleElement, 'created');
dart.setSignature(svg.CircleElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.CircleElement, []),
    new: dart.definiteFunctionType(svg.CircleElement, []),
    created: dart.definiteFunctionType(svg.CircleElement, [])
  }),
  fields: () => ({
    [dartx.cx]: svg.AnimatedLength,
    [dartx.cy]: svg.AnimatedLength,
    [dartx.r]: svg.AnimatedLength
  })
});
dart.registerExtension(dart.global.SVGCircleElement, svg.CircleElement);
dart.defineExtensionNames([
  'clipPathUnits'
]);
svg.ClipPathElement = class ClipPathElement extends svg.GraphicsElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.ClipPathElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("clipPath"));
  }
  created() {
    this[dartx.clipPathUnits] = null;
    super.created();
  }
  get [dartx.clipPathUnits]() {
    return this.clipPathUnits;
  }
};
dart.defineNamedConstructor(svg.ClipPathElement, 'created');
dart.setSignature(svg.ClipPathElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.ClipPathElement, []),
    new: dart.definiteFunctionType(svg.ClipPathElement, []),
    created: dart.definiteFunctionType(svg.ClipPathElement, [])
  }),
  fields: () => ({[dartx.clipPathUnits]: svg.AnimatedEnumeration})
});
dart.registerExtension(dart.global.SVGClipPathElement, svg.ClipPathElement);
svg.DefsElement = class DefsElement extends svg.GraphicsElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.DefsElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("defs"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(svg.DefsElement, 'created');
dart.setSignature(svg.DefsElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.DefsElement, []),
    new: dart.definiteFunctionType(svg.DefsElement, []),
    created: dart.definiteFunctionType(svg.DefsElement, [])
  })
});
dart.registerExtension(dart.global.SVGDefsElement, svg.DefsElement);
svg.DescElement = class DescElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.DescElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("desc"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(svg.DescElement, 'created');
dart.setSignature(svg.DescElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.DescElement, []),
    new: dart.definiteFunctionType(svg.DescElement, []),
    created: dart.definiteFunctionType(svg.DescElement, [])
  })
});
dart.registerExtension(dart.global.SVGDescElement, svg.DescElement);
svg.DiscardElement = class DiscardElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(svg.DiscardElement, 'created');
dart.setSignature(svg.DiscardElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.DiscardElement, []),
    created: dart.definiteFunctionType(svg.DiscardElement, [])
  })
});
dart.registerExtension(dart.global.SVGDiscardElement, svg.DiscardElement);
dart.defineExtensionNames([
  'cx',
  'cy',
  'rx',
  'ry'
]);
svg.EllipseElement = class EllipseElement extends svg.GeometryElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.EllipseElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("ellipse"));
  }
  created() {
    this[dartx.cx] = null;
    this[dartx.cy] = null;
    this[dartx.rx] = null;
    this[dartx.ry] = null;
    super.created();
  }
  get [dartx.cx]() {
    return this.cx;
  }
  get [dartx.cy]() {
    return this.cy;
  }
  get [dartx.rx]() {
    return this.rx;
  }
  get [dartx.ry]() {
    return this.ry;
  }
};
dart.defineNamedConstructor(svg.EllipseElement, 'created');
dart.setSignature(svg.EllipseElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.EllipseElement, []),
    new: dart.definiteFunctionType(svg.EllipseElement, []),
    created: dart.definiteFunctionType(svg.EllipseElement, [])
  }),
  fields: () => ({
    [dartx.cx]: svg.AnimatedLength,
    [dartx.cy]: svg.AnimatedLength,
    [dartx.rx]: svg.AnimatedLength,
    [dartx.ry]: svg.AnimatedLength
  })
});
dart.registerExtension(dart.global.SVGEllipseElement, svg.EllipseElement);
dart.defineExtensionNames([
  'in1',
  'in2',
  'mode',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FEBlendElement = class FEBlendElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEBlendElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feBlend"));
  }
  created() {
    this[dartx.in1] = null;
    this[dartx.in2] = null;
    this[dartx.mode] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feBlend')) && svg.FEBlendElement.is(svg.SvgElement.tag('feBlend'));
  }
  get [dartx.in1]() {
    return this.in1;
  }
  get [dartx.in2]() {
    return this.in2;
  }
  get [dartx.mode]() {
    return this.mode;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FEBlendElement, 'created');
svg.FEBlendElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FEBlendElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEBlendElement, []),
    new: dart.definiteFunctionType(svg.FEBlendElement, []),
    created: dart.definiteFunctionType(svg.FEBlendElement, [])
  }),
  fields: () => ({
    [dartx.in1]: svg.AnimatedString,
    [dartx.in2]: svg.AnimatedString,
    [dartx.mode]: svg.AnimatedEnumeration,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sfields: () => ({
    SVG_FEBLEND_MODE_DARKEN: core.int,
    SVG_FEBLEND_MODE_LIGHTEN: core.int,
    SVG_FEBLEND_MODE_MULTIPLY: core.int,
    SVG_FEBLEND_MODE_NORMAL: core.int,
    SVG_FEBLEND_MODE_SCREEN: core.int,
    SVG_FEBLEND_MODE_UNKNOWN: core.int
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
svg.FEBlendElement.SVG_FEBLEND_MODE_DARKEN = 4;
svg.FEBlendElement.SVG_FEBLEND_MODE_LIGHTEN = 5;
svg.FEBlendElement.SVG_FEBLEND_MODE_MULTIPLY = 2;
svg.FEBlendElement.SVG_FEBLEND_MODE_NORMAL = 1;
svg.FEBlendElement.SVG_FEBLEND_MODE_SCREEN = 3;
svg.FEBlendElement.SVG_FEBLEND_MODE_UNKNOWN = 0;
dart.registerExtension(dart.global.SVGFEBlendElement, svg.FEBlendElement);
dart.defineExtensionNames([
  'in1',
  'type',
  'values',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FEColorMatrixElement = class FEColorMatrixElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEColorMatrixElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feColorMatrix"));
  }
  created() {
    this[dartx.in1] = null;
    this[dartx.type] = null;
    this[dartx.values] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feColorMatrix')) && svg.FEColorMatrixElement.is(svg.SvgElement.tag('feColorMatrix'));
  }
  get [dartx.in1]() {
    return this.in1;
  }
  get [dartx.type]() {
    return this.type;
  }
  get [dartx.values]() {
    return this.values;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FEColorMatrixElement, 'created');
svg.FEColorMatrixElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FEColorMatrixElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEColorMatrixElement, []),
    new: dart.definiteFunctionType(svg.FEColorMatrixElement, []),
    created: dart.definiteFunctionType(svg.FEColorMatrixElement, [])
  }),
  fields: () => ({
    [dartx.in1]: svg.AnimatedString,
    [dartx.type]: svg.AnimatedEnumeration,
    [dartx.values]: svg.AnimatedNumberList,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sfields: () => ({
    SVG_FECOLORMATRIX_TYPE_HUEROTATE: core.int,
    SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: core.int,
    SVG_FECOLORMATRIX_TYPE_MATRIX: core.int,
    SVG_FECOLORMATRIX_TYPE_SATURATE: core.int,
    SVG_FECOLORMATRIX_TYPE_UNKNOWN: core.int
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
svg.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3;
svg.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4;
svg.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_MATRIX = 1;
svg.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE = 2;
svg.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0;
dart.registerExtension(dart.global.SVGFEColorMatrixElement, svg.FEColorMatrixElement);
dart.defineExtensionNames([
  'in1',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FEComponentTransferElement = class FEComponentTransferElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEComponentTransferElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feComponentTransfer"));
  }
  created() {
    this[dartx.in1] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feComponentTransfer')) && svg.FEComponentTransferElement.is(svg.SvgElement.tag('feComponentTransfer'));
  }
  get [dartx.in1]() {
    return this.in1;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FEComponentTransferElement, 'created');
svg.FEComponentTransferElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FEComponentTransferElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEComponentTransferElement, []),
    new: dart.definiteFunctionType(svg.FEComponentTransferElement, []),
    created: dart.definiteFunctionType(svg.FEComponentTransferElement, [])
  }),
  fields: () => ({
    [dartx.in1]: svg.AnimatedString,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEComponentTransferElement, svg.FEComponentTransferElement);
dart.defineExtensionNames([
  'in1',
  'in2',
  'k1',
  'k2',
  'k3',
  'k4',
  'operator',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FECompositeElement = class FECompositeElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.in1] = null;
    this[dartx.in2] = null;
    this[dartx.k1] = null;
    this[dartx.k2] = null;
    this[dartx.k3] = null;
    this[dartx.k4] = null;
    this[dartx.operator] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  get [dartx.in1]() {
    return this.in1;
  }
  get [dartx.in2]() {
    return this.in2;
  }
  get [dartx.k1]() {
    return this.k1;
  }
  get [dartx.k2]() {
    return this.k2;
  }
  get [dartx.k3]() {
    return this.k3;
  }
  get [dartx.k4]() {
    return this.k4;
  }
  get [dartx.operator]() {
    return this.operator;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FECompositeElement, 'created');
svg.FECompositeElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FECompositeElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FECompositeElement, []),
    created: dart.definiteFunctionType(svg.FECompositeElement, [])
  }),
  fields: () => ({
    [dartx.in1]: svg.AnimatedString,
    [dartx.in2]: svg.AnimatedString,
    [dartx.k1]: svg.AnimatedNumber,
    [dartx.k2]: svg.AnimatedNumber,
    [dartx.k3]: svg.AnimatedNumber,
    [dartx.k4]: svg.AnimatedNumber,
    [dartx.operator]: svg.AnimatedEnumeration,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sfields: () => ({
    SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: core.int,
    SVG_FECOMPOSITE_OPERATOR_ATOP: core.int,
    SVG_FECOMPOSITE_OPERATOR_IN: core.int,
    SVG_FECOMPOSITE_OPERATOR_OUT: core.int,
    SVG_FECOMPOSITE_OPERATOR_OVER: core.int,
    SVG_FECOMPOSITE_OPERATOR_UNKNOWN: core.int,
    SVG_FECOMPOSITE_OPERATOR_XOR: core.int
  })
});
svg.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6;
svg.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_ATOP = 4;
svg.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_IN = 2;
svg.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_OUT = 3;
svg.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_OVER = 1;
svg.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0;
svg.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_XOR = 5;
dart.registerExtension(dart.global.SVGFECompositeElement, svg.FECompositeElement);
dart.defineExtensionNames([
  'bias',
  'divisor',
  'edgeMode',
  'in1',
  'kernelMatrix',
  'kernelUnitLengthX',
  'kernelUnitLengthY',
  'orderX',
  'orderY',
  'preserveAlpha',
  'targetX',
  'targetY',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FEConvolveMatrixElement = class FEConvolveMatrixElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEConvolveMatrixElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feConvolveMatrix"));
  }
  created() {
    this[dartx.bias] = null;
    this[dartx.divisor] = null;
    this[dartx.edgeMode] = null;
    this[dartx.in1] = null;
    this[dartx.kernelMatrix] = null;
    this[dartx.kernelUnitLengthX] = null;
    this[dartx.kernelUnitLengthY] = null;
    this[dartx.orderX] = null;
    this[dartx.orderY] = null;
    this[dartx.preserveAlpha] = null;
    this[dartx.targetX] = null;
    this[dartx.targetY] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feConvolveMatrix')) && svg.FEConvolveMatrixElement.is(svg.SvgElement.tag('feConvolveMatrix'));
  }
  get [dartx.bias]() {
    return this.bias;
  }
  get [dartx.divisor]() {
    return this.divisor;
  }
  get [dartx.edgeMode]() {
    return this.edgeMode;
  }
  get [dartx.in1]() {
    return this.in1;
  }
  get [dartx.kernelMatrix]() {
    return this.kernelMatrix;
  }
  get [dartx.kernelUnitLengthX]() {
    return this.kernelUnitLengthX;
  }
  get [dartx.kernelUnitLengthY]() {
    return this.kernelUnitLengthY;
  }
  get [dartx.orderX]() {
    return this.orderX;
  }
  get [dartx.orderY]() {
    return this.orderY;
  }
  get [dartx.preserveAlpha]() {
    return this.preserveAlpha;
  }
  get [dartx.targetX]() {
    return this.targetX;
  }
  get [dartx.targetY]() {
    return this.targetY;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FEConvolveMatrixElement, 'created');
svg.FEConvolveMatrixElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FEConvolveMatrixElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEConvolveMatrixElement, []),
    new: dart.definiteFunctionType(svg.FEConvolveMatrixElement, []),
    created: dart.definiteFunctionType(svg.FEConvolveMatrixElement, [])
  }),
  fields: () => ({
    [dartx.bias]: svg.AnimatedNumber,
    [dartx.divisor]: svg.AnimatedNumber,
    [dartx.edgeMode]: svg.AnimatedEnumeration,
    [dartx.in1]: svg.AnimatedString,
    [dartx.kernelMatrix]: svg.AnimatedNumberList,
    [dartx.kernelUnitLengthX]: svg.AnimatedNumber,
    [dartx.kernelUnitLengthY]: svg.AnimatedNumber,
    [dartx.orderX]: svg.AnimatedInteger,
    [dartx.orderY]: svg.AnimatedInteger,
    [dartx.preserveAlpha]: svg.AnimatedBoolean,
    [dartx.targetX]: svg.AnimatedInteger,
    [dartx.targetY]: svg.AnimatedInteger,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sfields: () => ({
    SVG_EDGEMODE_DUPLICATE: core.int,
    SVG_EDGEMODE_NONE: core.int,
    SVG_EDGEMODE_UNKNOWN: core.int,
    SVG_EDGEMODE_WRAP: core.int
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
svg.FEConvolveMatrixElement.SVG_EDGEMODE_DUPLICATE = 1;
svg.FEConvolveMatrixElement.SVG_EDGEMODE_NONE = 3;
svg.FEConvolveMatrixElement.SVG_EDGEMODE_UNKNOWN = 0;
svg.FEConvolveMatrixElement.SVG_EDGEMODE_WRAP = 2;
dart.registerExtension(dart.global.SVGFEConvolveMatrixElement, svg.FEConvolveMatrixElement);
dart.defineExtensionNames([
  'diffuseConstant',
  'in1',
  'kernelUnitLengthX',
  'kernelUnitLengthY',
  'surfaceScale',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FEDiffuseLightingElement = class FEDiffuseLightingElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEDiffuseLightingElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feDiffuseLighting"));
  }
  created() {
    this[dartx.diffuseConstant] = null;
    this[dartx.in1] = null;
    this[dartx.kernelUnitLengthX] = null;
    this[dartx.kernelUnitLengthY] = null;
    this[dartx.surfaceScale] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feDiffuseLighting')) && svg.FEDiffuseLightingElement.is(svg.SvgElement.tag('feDiffuseLighting'));
  }
  get [dartx.diffuseConstant]() {
    return this.diffuseConstant;
  }
  get [dartx.in1]() {
    return this.in1;
  }
  get [dartx.kernelUnitLengthX]() {
    return this.kernelUnitLengthX;
  }
  get [dartx.kernelUnitLengthY]() {
    return this.kernelUnitLengthY;
  }
  get [dartx.surfaceScale]() {
    return this.surfaceScale;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FEDiffuseLightingElement, 'created');
svg.FEDiffuseLightingElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FEDiffuseLightingElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEDiffuseLightingElement, []),
    new: dart.definiteFunctionType(svg.FEDiffuseLightingElement, []),
    created: dart.definiteFunctionType(svg.FEDiffuseLightingElement, [])
  }),
  fields: () => ({
    [dartx.diffuseConstant]: svg.AnimatedNumber,
    [dartx.in1]: svg.AnimatedString,
    [dartx.kernelUnitLengthX]: svg.AnimatedNumber,
    [dartx.kernelUnitLengthY]: svg.AnimatedNumber,
    [dartx.surfaceScale]: svg.AnimatedNumber,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEDiffuseLightingElement, svg.FEDiffuseLightingElement);
dart.defineExtensionNames([
  'in1',
  'in2',
  'scale',
  'xChannelSelector',
  'yChannelSelector',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FEDisplacementMapElement = class FEDisplacementMapElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEDisplacementMapElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feDisplacementMap"));
  }
  created() {
    this[dartx.in1] = null;
    this[dartx.in2] = null;
    this[dartx.scale] = null;
    this[dartx.xChannelSelector] = null;
    this[dartx.yChannelSelector] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feDisplacementMap')) && svg.FEDisplacementMapElement.is(svg.SvgElement.tag('feDisplacementMap'));
  }
  get [dartx.in1]() {
    return this.in1;
  }
  get [dartx.in2]() {
    return this.in2;
  }
  get [dartx.scale]() {
    return this.scale;
  }
  get [dartx.xChannelSelector]() {
    return this.xChannelSelector;
  }
  get [dartx.yChannelSelector]() {
    return this.yChannelSelector;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FEDisplacementMapElement, 'created');
svg.FEDisplacementMapElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FEDisplacementMapElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEDisplacementMapElement, []),
    new: dart.definiteFunctionType(svg.FEDisplacementMapElement, []),
    created: dart.definiteFunctionType(svg.FEDisplacementMapElement, [])
  }),
  fields: () => ({
    [dartx.in1]: svg.AnimatedString,
    [dartx.in2]: svg.AnimatedString,
    [dartx.scale]: svg.AnimatedNumber,
    [dartx.xChannelSelector]: svg.AnimatedEnumeration,
    [dartx.yChannelSelector]: svg.AnimatedEnumeration,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sfields: () => ({
    SVG_CHANNEL_A: core.int,
    SVG_CHANNEL_B: core.int,
    SVG_CHANNEL_G: core.int,
    SVG_CHANNEL_R: core.int,
    SVG_CHANNEL_UNKNOWN: core.int
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
svg.FEDisplacementMapElement.SVG_CHANNEL_A = 4;
svg.FEDisplacementMapElement.SVG_CHANNEL_B = 3;
svg.FEDisplacementMapElement.SVG_CHANNEL_G = 2;
svg.FEDisplacementMapElement.SVG_CHANNEL_R = 1;
svg.FEDisplacementMapElement.SVG_CHANNEL_UNKNOWN = 0;
dart.registerExtension(dart.global.SVGFEDisplacementMapElement, svg.FEDisplacementMapElement);
dart.defineExtensionNames([
  'azimuth',
  'elevation'
]);
svg.FEDistantLightElement = class FEDistantLightElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEDistantLightElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feDistantLight"));
  }
  created() {
    this[dartx.azimuth] = null;
    this[dartx.elevation] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feDistantLight')) && svg.FEDistantLightElement.is(svg.SvgElement.tag('feDistantLight'));
  }
  get [dartx.azimuth]() {
    return this.azimuth;
  }
  get [dartx.elevation]() {
    return this.elevation;
  }
};
dart.defineNamedConstructor(svg.FEDistantLightElement, 'created');
dart.setSignature(svg.FEDistantLightElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEDistantLightElement, []),
    new: dart.definiteFunctionType(svg.FEDistantLightElement, []),
    created: dart.definiteFunctionType(svg.FEDistantLightElement, [])
  }),
  fields: () => ({
    [dartx.azimuth]: svg.AnimatedNumber,
    [dartx.elevation]: svg.AnimatedNumber
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEDistantLightElement, svg.FEDistantLightElement);
dart.defineExtensionNames([
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FEFloodElement = class FEFloodElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEFloodElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feFlood"));
  }
  created() {
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feFlood')) && svg.FEFloodElement.is(svg.SvgElement.tag('feFlood'));
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FEFloodElement, 'created');
svg.FEFloodElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FEFloodElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEFloodElement, []),
    new: dart.definiteFunctionType(svg.FEFloodElement, []),
    created: dart.definiteFunctionType(svg.FEFloodElement, [])
  }),
  fields: () => ({
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEFloodElement, svg.FEFloodElement);
svg._SVGComponentTransferFunctionElement = class _SVGComponentTransferFunctionElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(svg._SVGComponentTransferFunctionElement, 'created');
dart.setSignature(svg._SVGComponentTransferFunctionElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg._SVGComponentTransferFunctionElement, []),
    created: dart.definiteFunctionType(svg._SVGComponentTransferFunctionElement, [])
  })
});
dart.registerExtension(dart.global.SVGComponentTransferFunctionElement, svg._SVGComponentTransferFunctionElement);
svg.FEFuncAElement = class FEFuncAElement extends svg._SVGComponentTransferFunctionElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEFuncAElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feFuncA"));
  }
  created() {
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feFuncA')) && svg.FEFuncAElement.is(svg.SvgElement.tag('feFuncA'));
  }
};
dart.defineNamedConstructor(svg.FEFuncAElement, 'created');
dart.setSignature(svg.FEFuncAElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEFuncAElement, []),
    new: dart.definiteFunctionType(svg.FEFuncAElement, []),
    created: dart.definiteFunctionType(svg.FEFuncAElement, [])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEFuncAElement, svg.FEFuncAElement);
svg.FEFuncBElement = class FEFuncBElement extends svg._SVGComponentTransferFunctionElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEFuncBElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feFuncB"));
  }
  created() {
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feFuncB')) && svg.FEFuncBElement.is(svg.SvgElement.tag('feFuncB'));
  }
};
dart.defineNamedConstructor(svg.FEFuncBElement, 'created');
dart.setSignature(svg.FEFuncBElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEFuncBElement, []),
    new: dart.definiteFunctionType(svg.FEFuncBElement, []),
    created: dart.definiteFunctionType(svg.FEFuncBElement, [])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEFuncBElement, svg.FEFuncBElement);
svg.FEFuncGElement = class FEFuncGElement extends svg._SVGComponentTransferFunctionElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEFuncGElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feFuncG"));
  }
  created() {
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feFuncG')) && svg.FEFuncGElement.is(svg.SvgElement.tag('feFuncG'));
  }
};
dart.defineNamedConstructor(svg.FEFuncGElement, 'created');
dart.setSignature(svg.FEFuncGElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEFuncGElement, []),
    new: dart.definiteFunctionType(svg.FEFuncGElement, []),
    created: dart.definiteFunctionType(svg.FEFuncGElement, [])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEFuncGElement, svg.FEFuncGElement);
svg.FEFuncRElement = class FEFuncRElement extends svg._SVGComponentTransferFunctionElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEFuncRElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feFuncR"));
  }
  created() {
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feFuncR')) && svg.FEFuncRElement.is(svg.SvgElement.tag('feFuncR'));
  }
};
dart.defineNamedConstructor(svg.FEFuncRElement, 'created');
dart.setSignature(svg.FEFuncRElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEFuncRElement, []),
    new: dart.definiteFunctionType(svg.FEFuncRElement, []),
    created: dart.definiteFunctionType(svg.FEFuncRElement, [])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEFuncRElement, svg.FEFuncRElement);
dart.defineExtensionNames([
  'setStdDeviation',
  'in1',
  'stdDeviationX',
  'stdDeviationY',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FEGaussianBlurElement = class FEGaussianBlurElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEGaussianBlurElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feGaussianBlur"));
  }
  created() {
    this[dartx.in1] = null;
    this[dartx.stdDeviationX] = null;
    this[dartx.stdDeviationY] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feGaussianBlur')) && svg.FEGaussianBlurElement.is(svg.SvgElement.tag('feGaussianBlur'));
  }
  get [dartx.in1]() {
    return this.in1;
  }
  get [dartx.stdDeviationX]() {
    return this.stdDeviationX;
  }
  get [dartx.stdDeviationY]() {
    return this.stdDeviationY;
  }
  [dartx.setStdDeviation](...args) {
    return this.setStdDeviation.apply(this, args);
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FEGaussianBlurElement, 'created');
svg.FEGaussianBlurElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FEGaussianBlurElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEGaussianBlurElement, []),
    new: dart.definiteFunctionType(svg.FEGaussianBlurElement, []),
    created: dart.definiteFunctionType(svg.FEGaussianBlurElement, [])
  }),
  fields: () => ({
    [dartx.in1]: svg.AnimatedString,
    [dartx.stdDeviationX]: svg.AnimatedNumber,
    [dartx.stdDeviationY]: svg.AnimatedNumber,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  methods: () => ({[dartx.setStdDeviation]: dart.definiteFunctionType(dart.void, [core.num, core.num])}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEGaussianBlurElement, svg.FEGaussianBlurElement);
dart.defineExtensionNames([
  'preserveAspectRatio',
  'height',
  'result',
  'width',
  'x',
  'y',
  'href'
]);
svg.FEImageElement = class FEImageElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEImageElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feImage"));
  }
  created() {
    this[dartx.preserveAspectRatio] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    this[dartx.href] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feImage')) && svg.FEImageElement.is(svg.SvgElement.tag('feImage'));
  }
  get [dartx.preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
  get [dartx.href]() {
    return this.href;
  }
};
dart.defineNamedConstructor(svg.FEImageElement, 'created');
svg.FEImageElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes, svg.UriReference];
dart.setSignature(svg.FEImageElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEImageElement, []),
    new: dart.definiteFunctionType(svg.FEImageElement, []),
    created: dart.definiteFunctionType(svg.FEImageElement, [])
  }),
  fields: () => ({
    [dartx.preserveAspectRatio]: svg.AnimatedPreserveAspectRatio,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength,
    [dartx.href]: svg.AnimatedString
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEImageElement, svg.FEImageElement);
dart.defineExtensionNames([
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FEMergeElement = class FEMergeElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEMergeElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feMerge"));
  }
  created() {
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feMerge')) && svg.FEMergeElement.is(svg.SvgElement.tag('feMerge'));
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FEMergeElement, 'created');
svg.FEMergeElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FEMergeElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEMergeElement, []),
    new: dart.definiteFunctionType(svg.FEMergeElement, []),
    created: dart.definiteFunctionType(svg.FEMergeElement, [])
  }),
  fields: () => ({
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEMergeElement, svg.FEMergeElement);
dart.defineExtensionNames([
  'in1'
]);
svg.FEMergeNodeElement = class FEMergeNodeElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEMergeNodeElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feMergeNode"));
  }
  created() {
    this[dartx.in1] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feMergeNode')) && svg.FEMergeNodeElement.is(svg.SvgElement.tag('feMergeNode'));
  }
  get [dartx.in1]() {
    return this.in1;
  }
};
dart.defineNamedConstructor(svg.FEMergeNodeElement, 'created');
dart.setSignature(svg.FEMergeNodeElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEMergeNodeElement, []),
    new: dart.definiteFunctionType(svg.FEMergeNodeElement, []),
    created: dart.definiteFunctionType(svg.FEMergeNodeElement, [])
  }),
  fields: () => ({[dartx.in1]: svg.AnimatedString}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEMergeNodeElement, svg.FEMergeNodeElement);
dart.defineExtensionNames([
  'in1',
  'operator',
  'radiusX',
  'radiusY',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FEMorphologyElement = class FEMorphologyElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.in1] = null;
    this[dartx.operator] = null;
    this[dartx.radiusX] = null;
    this[dartx.radiusY] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  get [dartx.in1]() {
    return this.in1;
  }
  get [dartx.operator]() {
    return this.operator;
  }
  get [dartx.radiusX]() {
    return this.radiusX;
  }
  get [dartx.radiusY]() {
    return this.radiusY;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FEMorphologyElement, 'created');
svg.FEMorphologyElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FEMorphologyElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEMorphologyElement, []),
    created: dart.definiteFunctionType(svg.FEMorphologyElement, [])
  }),
  fields: () => ({
    [dartx.in1]: svg.AnimatedString,
    [dartx.operator]: svg.AnimatedEnumeration,
    [dartx.radiusX]: svg.AnimatedNumber,
    [dartx.radiusY]: svg.AnimatedNumber,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sfields: () => ({
    SVG_MORPHOLOGY_OPERATOR_DILATE: core.int,
    SVG_MORPHOLOGY_OPERATOR_ERODE: core.int,
    SVG_MORPHOLOGY_OPERATOR_UNKNOWN: core.int
  })
});
svg.FEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_DILATE = 2;
svg.FEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_ERODE = 1;
svg.FEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0;
dart.registerExtension(dart.global.SVGFEMorphologyElement, svg.FEMorphologyElement);
dart.defineExtensionNames([
  'dx',
  'dy',
  'in1',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FEOffsetElement = class FEOffsetElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEOffsetElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feOffset"));
  }
  created() {
    this[dartx.dx] = null;
    this[dartx.dy] = null;
    this[dartx.in1] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feOffset')) && svg.FEOffsetElement.is(svg.SvgElement.tag('feOffset'));
  }
  get [dartx.dx]() {
    return this.dx;
  }
  get [dartx.dy]() {
    return this.dy;
  }
  get [dartx.in1]() {
    return this.in1;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FEOffsetElement, 'created');
svg.FEOffsetElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FEOffsetElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEOffsetElement, []),
    new: dart.definiteFunctionType(svg.FEOffsetElement, []),
    created: dart.definiteFunctionType(svg.FEOffsetElement, [])
  }),
  fields: () => ({
    [dartx.dx]: svg.AnimatedNumber,
    [dartx.dy]: svg.AnimatedNumber,
    [dartx.in1]: svg.AnimatedString,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEOffsetElement, svg.FEOffsetElement);
dart.defineExtensionNames([
  'x',
  'y',
  'z'
]);
svg.FEPointLightElement = class FEPointLightElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FEPointLightElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("fePointLight"));
  }
  created() {
    this[dartx.x] = null;
    this[dartx.y] = null;
    this[dartx.z] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('fePointLight')) && svg.FEPointLightElement.is(svg.SvgElement.tag('fePointLight'));
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
  get [dartx.z]() {
    return this.z;
  }
};
dart.defineNamedConstructor(svg.FEPointLightElement, 'created');
dart.setSignature(svg.FEPointLightElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FEPointLightElement, []),
    new: dart.definiteFunctionType(svg.FEPointLightElement, []),
    created: dart.definiteFunctionType(svg.FEPointLightElement, [])
  }),
  fields: () => ({
    [dartx.x]: svg.AnimatedNumber,
    [dartx.y]: svg.AnimatedNumber,
    [dartx.z]: svg.AnimatedNumber
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFEPointLightElement, svg.FEPointLightElement);
dart.defineExtensionNames([
  'in1',
  'kernelUnitLengthX',
  'kernelUnitLengthY',
  'specularConstant',
  'specularExponent',
  'surfaceScale',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FESpecularLightingElement = class FESpecularLightingElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FESpecularLightingElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feSpecularLighting"));
  }
  created() {
    this[dartx.in1] = null;
    this[dartx.kernelUnitLengthX] = null;
    this[dartx.kernelUnitLengthY] = null;
    this[dartx.specularConstant] = null;
    this[dartx.specularExponent] = null;
    this[dartx.surfaceScale] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feSpecularLighting')) && svg.FESpecularLightingElement.is(svg.SvgElement.tag('feSpecularLighting'));
  }
  get [dartx.in1]() {
    return this.in1;
  }
  get [dartx.kernelUnitLengthX]() {
    return this.kernelUnitLengthX;
  }
  get [dartx.kernelUnitLengthY]() {
    return this.kernelUnitLengthY;
  }
  get [dartx.specularConstant]() {
    return this.specularConstant;
  }
  get [dartx.specularExponent]() {
    return this.specularExponent;
  }
  get [dartx.surfaceScale]() {
    return this.surfaceScale;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FESpecularLightingElement, 'created');
svg.FESpecularLightingElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FESpecularLightingElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FESpecularLightingElement, []),
    new: dart.definiteFunctionType(svg.FESpecularLightingElement, []),
    created: dart.definiteFunctionType(svg.FESpecularLightingElement, [])
  }),
  fields: () => ({
    [dartx.in1]: svg.AnimatedString,
    [dartx.kernelUnitLengthX]: svg.AnimatedNumber,
    [dartx.kernelUnitLengthY]: svg.AnimatedNumber,
    [dartx.specularConstant]: svg.AnimatedNumber,
    [dartx.specularExponent]: svg.AnimatedNumber,
    [dartx.surfaceScale]: svg.AnimatedNumber,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFESpecularLightingElement, svg.FESpecularLightingElement);
dart.defineExtensionNames([
  'limitingConeAngle',
  'pointsAtX',
  'pointsAtY',
  'pointsAtZ',
  'specularExponent',
  'x',
  'y',
  'z'
]);
svg.FESpotLightElement = class FESpotLightElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FESpotLightElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feSpotLight"));
  }
  created() {
    this[dartx.limitingConeAngle] = null;
    this[dartx.pointsAtX] = null;
    this[dartx.pointsAtY] = null;
    this[dartx.pointsAtZ] = null;
    this[dartx.specularExponent] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    this[dartx.z] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feSpotLight')) && svg.FESpotLightElement.is(svg.SvgElement.tag('feSpotLight'));
  }
  get [dartx.limitingConeAngle]() {
    return this.limitingConeAngle;
  }
  get [dartx.pointsAtX]() {
    return this.pointsAtX;
  }
  get [dartx.pointsAtY]() {
    return this.pointsAtY;
  }
  get [dartx.pointsAtZ]() {
    return this.pointsAtZ;
  }
  get [dartx.specularExponent]() {
    return this.specularExponent;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
  get [dartx.z]() {
    return this.z;
  }
};
dart.defineNamedConstructor(svg.FESpotLightElement, 'created');
dart.setSignature(svg.FESpotLightElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FESpotLightElement, []),
    new: dart.definiteFunctionType(svg.FESpotLightElement, []),
    created: dart.definiteFunctionType(svg.FESpotLightElement, [])
  }),
  fields: () => ({
    [dartx.limitingConeAngle]: svg.AnimatedNumber,
    [dartx.pointsAtX]: svg.AnimatedNumber,
    [dartx.pointsAtY]: svg.AnimatedNumber,
    [dartx.pointsAtZ]: svg.AnimatedNumber,
    [dartx.specularExponent]: svg.AnimatedNumber,
    [dartx.x]: svg.AnimatedNumber,
    [dartx.y]: svg.AnimatedNumber,
    [dartx.z]: svg.AnimatedNumber
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFESpotLightElement, svg.FESpotLightElement);
dart.defineExtensionNames([
  'in1',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FETileElement = class FETileElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FETileElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feTile"));
  }
  created() {
    this[dartx.in1] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feTile')) && svg.FETileElement.is(svg.SvgElement.tag('feTile'));
  }
  get [dartx.in1]() {
    return this.in1;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FETileElement, 'created');
svg.FETileElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FETileElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FETileElement, []),
    new: dart.definiteFunctionType(svg.FETileElement, []),
    created: dart.definiteFunctionType(svg.FETileElement, [])
  }),
  fields: () => ({
    [dartx.in1]: svg.AnimatedString,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFETileElement, svg.FETileElement);
dart.defineExtensionNames([
  'baseFrequencyX',
  'baseFrequencyY',
  'numOctaves',
  'seed',
  'stitchTiles',
  'type',
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FETurbulenceElement = class FETurbulenceElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FETurbulenceElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("feTurbulence"));
  }
  created() {
    this[dartx.baseFrequencyX] = null;
    this[dartx.baseFrequencyY] = null;
    this[dartx.numOctaves] = null;
    this[dartx.seed] = null;
    this[dartx.stitchTiles] = null;
    this[dartx.type] = null;
    this[dartx.height] = null;
    this[dartx.result] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('feTurbulence')) && svg.FETurbulenceElement.is(svg.SvgElement.tag('feTurbulence'));
  }
  get [dartx.baseFrequencyX]() {
    return this.baseFrequencyX;
  }
  get [dartx.baseFrequencyY]() {
    return this.baseFrequencyY;
  }
  get [dartx.numOctaves]() {
    return this.numOctaves;
  }
  get [dartx.seed]() {
    return this.seed;
  }
  get [dartx.stitchTiles]() {
    return this.stitchTiles;
  }
  get [dartx.type]() {
    return this.type;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.result]() {
    return this.result;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.FETurbulenceElement, 'created');
svg.FETurbulenceElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg.FETurbulenceElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FETurbulenceElement, []),
    new: dart.definiteFunctionType(svg.FETurbulenceElement, []),
    created: dart.definiteFunctionType(svg.FETurbulenceElement, [])
  }),
  fields: () => ({
    [dartx.baseFrequencyX]: svg.AnimatedNumber,
    [dartx.baseFrequencyY]: svg.AnimatedNumber,
    [dartx.numOctaves]: svg.AnimatedInteger,
    [dartx.seed]: svg.AnimatedNumber,
    [dartx.stitchTiles]: svg.AnimatedEnumeration,
    [dartx.type]: svg.AnimatedEnumeration,
    [dartx.height]: svg.AnimatedLength,
    [dartx.result]: svg.AnimatedString,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sfields: () => ({
    SVG_STITCHTYPE_NOSTITCH: core.int,
    SVG_STITCHTYPE_STITCH: core.int,
    SVG_STITCHTYPE_UNKNOWN: core.int,
    SVG_TURBULENCE_TYPE_FRACTALNOISE: core.int,
    SVG_TURBULENCE_TYPE_TURBULENCE: core.int,
    SVG_TURBULENCE_TYPE_UNKNOWN: core.int
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
svg.FETurbulenceElement.SVG_STITCHTYPE_NOSTITCH = 2;
svg.FETurbulenceElement.SVG_STITCHTYPE_STITCH = 1;
svg.FETurbulenceElement.SVG_STITCHTYPE_UNKNOWN = 0;
svg.FETurbulenceElement.SVG_TURBULENCE_TYPE_FRACTALNOISE = 1;
svg.FETurbulenceElement.SVG_TURBULENCE_TYPE_TURBULENCE = 2;
svg.FETurbulenceElement.SVG_TURBULENCE_TYPE_UNKNOWN = 0;
dart.registerExtension(dart.global.SVGFETurbulenceElement, svg.FETurbulenceElement);
dart.defineExtensionNames([
  'filterUnits',
  'height',
  'primitiveUnits',
  'width',
  'x',
  'y',
  'href'
]);
svg.FilterElement = class FilterElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.FilterElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("filter"));
  }
  created() {
    this[dartx.filterUnits] = null;
    this[dartx.height] = null;
    this[dartx.primitiveUnits] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    this[dartx.href] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('filter')) && svg.FilterElement.is(svg.SvgElement.tag('filter'));
  }
  get [dartx.filterUnits]() {
    return this.filterUnits;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.primitiveUnits]() {
    return this.primitiveUnits;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
  get [dartx.href]() {
    return this.href;
  }
};
dart.defineNamedConstructor(svg.FilterElement, 'created');
svg.FilterElement[dart.implements] = () => [svg.UriReference];
dart.setSignature(svg.FilterElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.FilterElement, []),
    new: dart.definiteFunctionType(svg.FilterElement, []),
    created: dart.definiteFunctionType(svg.FilterElement, [])
  }),
  fields: () => ({
    [dartx.filterUnits]: svg.AnimatedEnumeration,
    [dartx.height]: svg.AnimatedLength,
    [dartx.primitiveUnits]: svg.AnimatedEnumeration,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength,
    [dartx.href]: svg.AnimatedString
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGFilterElement, svg.FilterElement);
dart.defineExtensionNames([
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg.FilterPrimitiveStandardAttributes = class FilterPrimitiveStandardAttributes extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get height() {
    return this[height];
  }
  set height(value) {
    super.height = value;
  }
  get result() {
    return this[result];
  }
  set result(value) {
    super.result = value;
  }
  get width() {
    return this[width];
  }
  set width(value) {
    super.width = value;
  }
  get x() {
    return this[x];
  }
  set x(value) {
    super.x = value;
  }
  get y() {
    return this[y];
  }
  set y(value) {
    super.y = value;
  }
};
const height = Symbol(svg.FilterPrimitiveStandardAttributes.name + "." + 'height'.toString());
const result = Symbol(svg.FilterPrimitiveStandardAttributes.name + "." + 'result'.toString());
const width = Symbol(svg.FilterPrimitiveStandardAttributes.name + "." + 'width'.toString());
const x = Symbol(svg.FilterPrimitiveStandardAttributes.name + "." + 'x'.toString());
const y = Symbol(svg.FilterPrimitiveStandardAttributes.name + "." + 'y'.toString());
dart.setSignature(svg.FilterPrimitiveStandardAttributes, {
  constructors: () => ({_: dart.definiteFunctionType(svg.FilterPrimitiveStandardAttributes, [])}),
  fields: () => ({
    height: svg.AnimatedLength,
    result: svg.AnimatedString,
    width: svg.AnimatedLength,
    x: svg.AnimatedLength,
    y: svg.AnimatedLength
  })
});
dart.defineExtensionMembers(svg.FilterPrimitiveStandardAttributes, [
  'height',
  'result',
  'width',
  'x',
  'y'
]);
dart.defineExtensionNames([
  'preserveAspectRatio',
  'viewBox'
]);
svg.FitToViewBox = class FitToViewBox extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get preserveAspectRatio() {
    return this[preserveAspectRatio];
  }
  set preserveAspectRatio(value) {
    super.preserveAspectRatio = value;
  }
  get viewBox() {
    return this[viewBox];
  }
  set viewBox(value) {
    super.viewBox = value;
  }
};
const preserveAspectRatio = Symbol(svg.FitToViewBox.name + "." + 'preserveAspectRatio'.toString());
const viewBox = Symbol(svg.FitToViewBox.name + "." + 'viewBox'.toString());
dart.setSignature(svg.FitToViewBox, {
  constructors: () => ({_: dart.definiteFunctionType(svg.FitToViewBox, [])}),
  fields: () => ({
    preserveAspectRatio: svg.AnimatedPreserveAspectRatio,
    viewBox: svg.AnimatedRect
  })
});
dart.defineExtensionMembers(svg.FitToViewBox, ['preserveAspectRatio', 'viewBox']);
dart.defineExtensionNames([
  'height',
  'width',
  'x',
  'y'
]);
svg.ForeignObjectElement = class ForeignObjectElement extends svg.GraphicsElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.ForeignObjectElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("foreignObject"));
  }
  created() {
    this[dartx.height] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('foreignObject')) && svg.ForeignObjectElement.is(svg.SvgElement.tag('foreignObject'));
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.ForeignObjectElement, 'created');
dart.setSignature(svg.ForeignObjectElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.ForeignObjectElement, []),
    new: dart.definiteFunctionType(svg.ForeignObjectElement, []),
    created: dart.definiteFunctionType(svg.ForeignObjectElement, [])
  }),
  fields: () => ({
    [dartx.height]: svg.AnimatedLength,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGForeignObjectElement, svg.ForeignObjectElement);
svg.GElement = class GElement extends svg.GraphicsElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.GElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("g"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(svg.GElement, 'created');
dart.setSignature(svg.GElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.GElement, []),
    new: dart.definiteFunctionType(svg.GElement, []),
    created: dart.definiteFunctionType(svg.GElement, [])
  })
});
dart.registerExtension(dart.global.SVGGElement, svg.GElement);
dart.defineExtensionNames([
  'height',
  'preserveAspectRatio',
  'width',
  'x',
  'y',
  'href'
]);
svg.ImageElement = class ImageElement extends svg.GraphicsElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.ImageElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("image"));
  }
  created() {
    this[dartx.height] = null;
    this[dartx.preserveAspectRatio] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    this[dartx.href] = null;
    super.created();
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
  get [dartx.href]() {
    return this.href;
  }
};
dart.defineNamedConstructor(svg.ImageElement, 'created');
svg.ImageElement[dart.implements] = () => [svg.UriReference];
dart.setSignature(svg.ImageElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.ImageElement, []),
    new: dart.definiteFunctionType(svg.ImageElement, []),
    created: dart.definiteFunctionType(svg.ImageElement, [])
  }),
  fields: () => ({
    [dartx.height]: svg.AnimatedLength,
    [dartx.preserveAspectRatio]: svg.AnimatedPreserveAspectRatio,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength,
    [dartx.href]: svg.AnimatedString
  })
});
dart.registerExtension(dart.global.SVGImageElement, svg.ImageElement);
dart.defineExtensionNames([
  'convertToSpecifiedUnits',
  'newValueSpecifiedUnits',
  'unitType',
  'value',
  'valueAsString',
  'valueInSpecifiedUnits'
]);
svg.Length = class Length extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.unitType]() {
    return this.unitType;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
  get [dartx.valueAsString]() {
    return this.valueAsString;
  }
  set [dartx.valueAsString](value) {
    this.valueAsString = value;
  }
  get [dartx.valueInSpecifiedUnits]() {
    return this.valueInSpecifiedUnits;
  }
  set [dartx.valueInSpecifiedUnits](value) {
    this.valueInSpecifiedUnits = value;
  }
  [dartx.convertToSpecifiedUnits](...args) {
    return this.convertToSpecifiedUnits.apply(this, args);
  }
  [dartx.newValueSpecifiedUnits](...args) {
    return this.newValueSpecifiedUnits.apply(this, args);
  }
};
dart.setSignature(svg.Length, {
  constructors: () => ({_: dart.definiteFunctionType(svg.Length, [])}),
  fields: () => ({
    [dartx.unitType]: core.int,
    [dartx.value]: core.num,
    [dartx.valueAsString]: core.String,
    [dartx.valueInSpecifiedUnits]: core.num
  }),
  methods: () => ({
    [dartx.convertToSpecifiedUnits]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.newValueSpecifiedUnits]: dart.definiteFunctionType(dart.void, [core.int, core.num])
  }),
  sfields: () => ({
    SVG_LENGTHTYPE_CM: core.int,
    SVG_LENGTHTYPE_EMS: core.int,
    SVG_LENGTHTYPE_EXS: core.int,
    SVG_LENGTHTYPE_IN: core.int,
    SVG_LENGTHTYPE_MM: core.int,
    SVG_LENGTHTYPE_NUMBER: core.int,
    SVG_LENGTHTYPE_PC: core.int,
    SVG_LENGTHTYPE_PERCENTAGE: core.int,
    SVG_LENGTHTYPE_PT: core.int,
    SVG_LENGTHTYPE_PX: core.int,
    SVG_LENGTHTYPE_UNKNOWN: core.int
  })
});
svg.Length.SVG_LENGTHTYPE_CM = 6;
svg.Length.SVG_LENGTHTYPE_EMS = 3;
svg.Length.SVG_LENGTHTYPE_EXS = 4;
svg.Length.SVG_LENGTHTYPE_IN = 8;
svg.Length.SVG_LENGTHTYPE_MM = 7;
svg.Length.SVG_LENGTHTYPE_NUMBER = 1;
svg.Length.SVG_LENGTHTYPE_PC = 10;
svg.Length.SVG_LENGTHTYPE_PERCENTAGE = 2;
svg.Length.SVG_LENGTHTYPE_PT = 9;
svg.Length.SVG_LENGTHTYPE_PX = 5;
svg.Length.SVG_LENGTHTYPE_UNKNOWN = 0;
dart.registerExtension(dart.global.SVGLength, svg.Length);
const __setter__ = Symbol('__setter__');
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'appendItem',
  'clear',
  'getItem',
  'initialize',
  'insertItemBefore',
  'removeItem',
  'replaceItem',
  'numberOfItems'
]);
svg.LengthList = class LengthList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(svg.Length), html.ImmutableListMixin$(svg.Length)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.numberOfItems]() {
    return this.numberOfItems;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[dartx.getItem](index);
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [dartx.appendItem](...args) {
    return this.appendItem.apply(this, args);
  }
  [dartx.clear](...args) {
    return this.clear.apply(this, args);
  }
  [dartx.getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [dartx.initialize](...args) {
    return this.initialize.apply(this, args);
  }
  [dartx.insertItemBefore](...args) {
    return this.insertItemBefore.apply(this, args);
  }
  [dartx.removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [dartx.replaceItem](...args) {
    return this.replaceItem.apply(this, args);
  }
};
svg.LengthList[dart.implements] = () => [ListOfLength()];
dart.setSignature(svg.LengthList, {
  constructors: () => ({_: dart.definiteFunctionType(svg.LengthList, [])}),
  fields: () => ({[dartx.numberOfItems]: core.int}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(svg.Length, []),
    [dartx.last]: dart.definiteFunctionType(svg.Length, []),
    [dartx.single]: dart.definiteFunctionType(svg.Length, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(svg.Length, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, svg.Length]),
    [dartx.elementAt]: dart.definiteFunctionType(svg.Length, [core.int]),
    [__setter__]: dart.definiteFunctionType(dart.void, [core.int, svg.Length]),
    [dartx.appendItem]: dart.definiteFunctionType(svg.Length, [svg.Length]),
    [dartx.getItem]: dart.definiteFunctionType(svg.Length, [core.int]),
    [dartx.initialize]: dart.definiteFunctionType(svg.Length, [svg.Length]),
    [dartx.insertItemBefore]: dart.definiteFunctionType(svg.Length, [svg.Length, core.int]),
    [dartx.removeItem]: dart.definiteFunctionType(svg.Length, [core.int]),
    [dartx.replaceItem]: dart.definiteFunctionType(svg.Length, [svg.Length, core.int])
  })
});
dart.registerExtension(dart.global.SVGLengthList, svg.LengthList);
dart.defineExtensionNames([
  'x1',
  'x2',
  'y1',
  'y2'
]);
svg.LineElement = class LineElement extends svg.GeometryElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.LineElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("line"));
  }
  created() {
    this[dartx.x1] = null;
    this[dartx.x2] = null;
    this[dartx.y1] = null;
    this[dartx.y2] = null;
    super.created();
  }
  get [dartx.x1]() {
    return this.x1;
  }
  get [dartx.x2]() {
    return this.x2;
  }
  get [dartx.y1]() {
    return this.y1;
  }
  get [dartx.y2]() {
    return this.y2;
  }
};
dart.defineNamedConstructor(svg.LineElement, 'created');
dart.setSignature(svg.LineElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.LineElement, []),
    new: dart.definiteFunctionType(svg.LineElement, []),
    created: dart.definiteFunctionType(svg.LineElement, [])
  }),
  fields: () => ({
    [dartx.x1]: svg.AnimatedLength,
    [dartx.x2]: svg.AnimatedLength,
    [dartx.y1]: svg.AnimatedLength,
    [dartx.y2]: svg.AnimatedLength
  })
});
dart.registerExtension(dart.global.SVGLineElement, svg.LineElement);
dart.defineExtensionNames([
  'gradientTransform',
  'gradientUnits',
  'spreadMethod',
  'href'
]);
svg._GradientElement = class _GradientElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.gradientTransform] = null;
    this[dartx.gradientUnits] = null;
    this[dartx.spreadMethod] = null;
    this[dartx.href] = null;
    super.created();
  }
  get [dartx.gradientTransform]() {
    return this.gradientTransform;
  }
  get [dartx.gradientUnits]() {
    return this.gradientUnits;
  }
  get [dartx.spreadMethod]() {
    return this.spreadMethod;
  }
  get [dartx.href]() {
    return this.href;
  }
};
dart.defineNamedConstructor(svg._GradientElement, 'created');
svg._GradientElement[dart.implements] = () => [svg.UriReference];
dart.setSignature(svg._GradientElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg._GradientElement, []),
    created: dart.definiteFunctionType(svg._GradientElement, [])
  }),
  fields: () => ({
    [dartx.gradientTransform]: svg.AnimatedTransformList,
    [dartx.gradientUnits]: svg.AnimatedEnumeration,
    [dartx.spreadMethod]: svg.AnimatedEnumeration,
    [dartx.href]: svg.AnimatedString
  }),
  sfields: () => ({
    SVG_SPREADMETHOD_PAD: core.int,
    SVG_SPREADMETHOD_REFLECT: core.int,
    SVG_SPREADMETHOD_REPEAT: core.int,
    SVG_SPREADMETHOD_UNKNOWN: core.int
  })
});
svg._GradientElement.SVG_SPREADMETHOD_PAD = 1;
svg._GradientElement.SVG_SPREADMETHOD_REFLECT = 2;
svg._GradientElement.SVG_SPREADMETHOD_REPEAT = 3;
svg._GradientElement.SVG_SPREADMETHOD_UNKNOWN = 0;
dart.registerExtension(dart.global.SVGGradientElement, svg._GradientElement);
dart.defineExtensionNames([
  'x1',
  'x2',
  'y1',
  'y2'
]);
svg.LinearGradientElement = class LinearGradientElement extends svg._GradientElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.LinearGradientElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("linearGradient"));
  }
  created() {
    this[dartx.x1] = null;
    this[dartx.x2] = null;
    this[dartx.y1] = null;
    this[dartx.y2] = null;
    super.created();
  }
  get [dartx.x1]() {
    return this.x1;
  }
  get [dartx.x2]() {
    return this.x2;
  }
  get [dartx.y1]() {
    return this.y1;
  }
  get [dartx.y2]() {
    return this.y2;
  }
};
dart.defineNamedConstructor(svg.LinearGradientElement, 'created');
dart.setSignature(svg.LinearGradientElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.LinearGradientElement, []),
    new: dart.definiteFunctionType(svg.LinearGradientElement, []),
    created: dart.definiteFunctionType(svg.LinearGradientElement, [])
  }),
  fields: () => ({
    [dartx.x1]: svg.AnimatedLength,
    [dartx.x2]: svg.AnimatedLength,
    [dartx.y1]: svg.AnimatedLength,
    [dartx.y2]: svg.AnimatedLength
  })
});
dart.registerExtension(dart.global.SVGLinearGradientElement, svg.LinearGradientElement);
dart.defineExtensionNames([
  'setOrientToAngle',
  'setOrientToAuto',
  'markerHeight',
  'markerUnits',
  'markerWidth',
  'orientAngle',
  'orientType',
  'refX',
  'refY',
  'preserveAspectRatio',
  'viewBox'
]);
svg.MarkerElement = class MarkerElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.MarkerElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("marker"));
  }
  created() {
    this[dartx.markerHeight] = null;
    this[dartx.markerUnits] = null;
    this[dartx.markerWidth] = null;
    this[dartx.orientAngle] = null;
    this[dartx.orientType] = null;
    this[dartx.refX] = null;
    this[dartx.refY] = null;
    this[dartx.preserveAspectRatio] = null;
    this[dartx.viewBox] = null;
    super.created();
  }
  get [dartx.markerHeight]() {
    return this.markerHeight;
  }
  get [dartx.markerUnits]() {
    return this.markerUnits;
  }
  get [dartx.markerWidth]() {
    return this.markerWidth;
  }
  get [dartx.orientAngle]() {
    return this.orientAngle;
  }
  get [dartx.orientType]() {
    return this.orientType;
  }
  get [dartx.refX]() {
    return this.refX;
  }
  get [dartx.refY]() {
    return this.refY;
  }
  [dartx.setOrientToAngle](...args) {
    return this.setOrientToAngle.apply(this, args);
  }
  [dartx.setOrientToAuto](...args) {
    return this.setOrientToAuto.apply(this, args);
  }
  get [dartx.preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [dartx.viewBox]() {
    return this.viewBox;
  }
};
dart.defineNamedConstructor(svg.MarkerElement, 'created');
svg.MarkerElement[dart.implements] = () => [svg.FitToViewBox];
dart.setSignature(svg.MarkerElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.MarkerElement, []),
    new: dart.definiteFunctionType(svg.MarkerElement, []),
    created: dart.definiteFunctionType(svg.MarkerElement, [])
  }),
  fields: () => ({
    [dartx.markerHeight]: svg.AnimatedLength,
    [dartx.markerUnits]: svg.AnimatedEnumeration,
    [dartx.markerWidth]: svg.AnimatedLength,
    [dartx.orientAngle]: svg.AnimatedAngle,
    [dartx.orientType]: svg.AnimatedEnumeration,
    [dartx.refX]: svg.AnimatedLength,
    [dartx.refY]: svg.AnimatedLength,
    [dartx.preserveAspectRatio]: svg.AnimatedPreserveAspectRatio,
    [dartx.viewBox]: svg.AnimatedRect
  }),
  methods: () => ({
    [dartx.setOrientToAngle]: dart.definiteFunctionType(dart.void, [svg.Angle]),
    [dartx.setOrientToAuto]: dart.definiteFunctionType(dart.void, [])
  }),
  sfields: () => ({
    SVG_MARKERUNITS_STROKEWIDTH: core.int,
    SVG_MARKERUNITS_UNKNOWN: core.int,
    SVG_MARKERUNITS_USERSPACEONUSE: core.int,
    SVG_MARKER_ORIENT_ANGLE: core.int,
    SVG_MARKER_ORIENT_AUTO: core.int,
    SVG_MARKER_ORIENT_UNKNOWN: core.int
  })
});
svg.MarkerElement.SVG_MARKERUNITS_STROKEWIDTH = 2;
svg.MarkerElement.SVG_MARKERUNITS_UNKNOWN = 0;
svg.MarkerElement.SVG_MARKERUNITS_USERSPACEONUSE = 1;
svg.MarkerElement.SVG_MARKER_ORIENT_ANGLE = 2;
svg.MarkerElement.SVG_MARKER_ORIENT_AUTO = 1;
svg.MarkerElement.SVG_MARKER_ORIENT_UNKNOWN = 0;
dart.registerExtension(dart.global.SVGMarkerElement, svg.MarkerElement);
dart.defineExtensionNames([
  'hasExtension',
  'height',
  'maskContentUnits',
  'maskUnits',
  'width',
  'x',
  'y',
  'requiredExtensions',
  'requiredFeatures',
  'systemLanguage'
]);
svg.MaskElement = class MaskElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.MaskElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("mask"));
  }
  created() {
    this[dartx.height] = null;
    this[dartx.maskContentUnits] = null;
    this[dartx.maskUnits] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    this[dartx.requiredExtensions] = null;
    this[dartx.requiredFeatures] = null;
    this[dartx.systemLanguage] = null;
    super.created();
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.maskContentUnits]() {
    return this.maskContentUnits;
  }
  get [dartx.maskUnits]() {
    return this.maskUnits;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
  get [dartx.requiredExtensions]() {
    return this.requiredExtensions;
  }
  get [dartx.requiredFeatures]() {
    return this.requiredFeatures;
  }
  get [dartx.systemLanguage]() {
    return this.systemLanguage;
  }
  [dartx.hasExtension](...args) {
    return this.hasExtension.apply(this, args);
  }
};
dart.defineNamedConstructor(svg.MaskElement, 'created');
svg.MaskElement[dart.implements] = () => [svg.Tests];
dart.setSignature(svg.MaskElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.MaskElement, []),
    new: dart.definiteFunctionType(svg.MaskElement, []),
    created: dart.definiteFunctionType(svg.MaskElement, [])
  }),
  fields: () => ({
    [dartx.height]: svg.AnimatedLength,
    [dartx.maskContentUnits]: svg.AnimatedEnumeration,
    [dartx.maskUnits]: svg.AnimatedEnumeration,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength,
    [dartx.requiredExtensions]: svg.StringList,
    [dartx.requiredFeatures]: svg.StringList,
    [dartx.systemLanguage]: svg.StringList
  }),
  methods: () => ({[dartx.hasExtension]: dart.definiteFunctionType(core.bool, [core.String])})
});
dart.registerExtension(dart.global.SVGMaskElement, svg.MaskElement);
dart.defineExtensionNames([
  'flipX',
  'flipY',
  'inverse',
  'multiply',
  'rotate',
  'rotateFromVector',
  'scale',
  'scaleNonUniform',
  'skewX',
  'skewY',
  'translate',
  'a',
  'b',
  'c',
  'd',
  'e',
  'f'
]);
svg.Matrix = class Matrix extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.a]() {
    return this.a;
  }
  set [dartx.a](value) {
    this.a = value;
  }
  get [dartx.b]() {
    return this.b;
  }
  set [dartx.b](value) {
    this.b = value;
  }
  get [dartx.c]() {
    return this.c;
  }
  set [dartx.c](value) {
    this.c = value;
  }
  get [dartx.d]() {
    return this.d;
  }
  set [dartx.d](value) {
    this.d = value;
  }
  get [dartx.e]() {
    return this.e;
  }
  set [dartx.e](value) {
    this.e = value;
  }
  get [dartx.f]() {
    return this.f;
  }
  set [dartx.f](value) {
    this.f = value;
  }
  [dartx.flipX](...args) {
    return this.flipX.apply(this, args);
  }
  [dartx.flipY](...args) {
    return this.flipY.apply(this, args);
  }
  [dartx.inverse](...args) {
    return this.inverse.apply(this, args);
  }
  [dartx.multiply](...args) {
    return this.multiply.apply(this, args);
  }
  [dartx.rotate](...args) {
    return this.rotate.apply(this, args);
  }
  [dartx.rotateFromVector](...args) {
    return this.rotateFromVector.apply(this, args);
  }
  [dartx.scale](...args) {
    return this.scale.apply(this, args);
  }
  [dartx.scaleNonUniform](...args) {
    return this.scaleNonUniform.apply(this, args);
  }
  [dartx.skewX](...args) {
    return this.skewX.apply(this, args);
  }
  [dartx.skewY](...args) {
    return this.skewY.apply(this, args);
  }
  [dartx.translate](...args) {
    return this.translate.apply(this, args);
  }
};
dart.setSignature(svg.Matrix, {
  constructors: () => ({_: dart.definiteFunctionType(svg.Matrix, [])}),
  fields: () => ({
    [dartx.a]: core.num,
    [dartx.b]: core.num,
    [dartx.c]: core.num,
    [dartx.d]: core.num,
    [dartx.e]: core.num,
    [dartx.f]: core.num
  }),
  methods: () => ({
    [dartx.flipX]: dart.definiteFunctionType(svg.Matrix, []),
    [dartx.flipY]: dart.definiteFunctionType(svg.Matrix, []),
    [dartx.inverse]: dart.definiteFunctionType(svg.Matrix, []),
    [dartx.multiply]: dart.definiteFunctionType(svg.Matrix, [svg.Matrix]),
    [dartx.rotate]: dart.definiteFunctionType(svg.Matrix, [core.num]),
    [dartx.rotateFromVector]: dart.definiteFunctionType(svg.Matrix, [core.num, core.num]),
    [dartx.scale]: dart.definiteFunctionType(svg.Matrix, [core.num]),
    [dartx.scaleNonUniform]: dart.definiteFunctionType(svg.Matrix, [core.num, core.num]),
    [dartx.skewX]: dart.definiteFunctionType(svg.Matrix, [core.num]),
    [dartx.skewY]: dart.definiteFunctionType(svg.Matrix, [core.num]),
    [dartx.translate]: dart.definiteFunctionType(svg.Matrix, [core.num, core.num])
  })
});
dart.registerExtension(dart.global.SVGMatrix, svg.Matrix);
svg.MetadataElement = class MetadataElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(svg.MetadataElement, 'created');
dart.setSignature(svg.MetadataElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.MetadataElement, []),
    created: dart.definiteFunctionType(svg.MetadataElement, [])
  })
});
dart.registerExtension(dart.global.SVGMetadataElement, svg.MetadataElement);
dart.defineExtensionNames([
  'value'
]);
svg.Number = class Number extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
};
dart.setSignature(svg.Number, {
  constructors: () => ({_: dart.definiteFunctionType(svg.Number, [])}),
  fields: () => ({[dartx.value]: core.num})
});
dart.registerExtension(dart.global.SVGNumber, svg.Number);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'appendItem',
  'clear',
  'getItem',
  'initialize',
  'insertItemBefore',
  'removeItem',
  'replaceItem',
  'numberOfItems'
]);
svg.NumberList = class NumberList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(svg.Number), html.ImmutableListMixin$(svg.Number)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.numberOfItems]() {
    return this.numberOfItems;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[dartx.getItem](index);
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [dartx.appendItem](...args) {
    return this.appendItem.apply(this, args);
  }
  [dartx.clear](...args) {
    return this.clear.apply(this, args);
  }
  [dartx.getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [dartx.initialize](...args) {
    return this.initialize.apply(this, args);
  }
  [dartx.insertItemBefore](...args) {
    return this.insertItemBefore.apply(this, args);
  }
  [dartx.removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [dartx.replaceItem](...args) {
    return this.replaceItem.apply(this, args);
  }
};
svg.NumberList[dart.implements] = () => [ListOfNumber()];
dart.setSignature(svg.NumberList, {
  constructors: () => ({_: dart.definiteFunctionType(svg.NumberList, [])}),
  fields: () => ({[dartx.numberOfItems]: core.int}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(svg.Number, []),
    [dartx.last]: dart.definiteFunctionType(svg.Number, []),
    [dartx.single]: dart.definiteFunctionType(svg.Number, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(svg.Number, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, svg.Number]),
    [dartx.elementAt]: dart.definiteFunctionType(svg.Number, [core.int]),
    [__setter__]: dart.definiteFunctionType(dart.void, [core.int, svg.Number]),
    [dartx.appendItem]: dart.definiteFunctionType(svg.Number, [svg.Number]),
    [dartx.getItem]: dart.definiteFunctionType(svg.Number, [core.int]),
    [dartx.initialize]: dart.definiteFunctionType(svg.Number, [svg.Number]),
    [dartx.insertItemBefore]: dart.definiteFunctionType(svg.Number, [svg.Number, core.int]),
    [dartx.removeItem]: dart.definiteFunctionType(svg.Number, [core.int]),
    [dartx.replaceItem]: dart.definiteFunctionType(svg.Number, [svg.Number, core.int])
  })
});
dart.registerExtension(dart.global.SVGNumberList, svg.NumberList);
dart.defineExtensionNames([
  'createSvgPathSegArcAbs',
  'createSvgPathSegArcRel',
  'createSvgPathSegClosePath',
  'createSvgPathSegCurvetoCubicAbs',
  'createSvgPathSegCurvetoCubicRel',
  'createSvgPathSegCurvetoCubicSmoothAbs',
  'createSvgPathSegCurvetoCubicSmoothRel',
  'createSvgPathSegCurvetoQuadraticAbs',
  'createSvgPathSegCurvetoQuadraticRel',
  'createSvgPathSegCurvetoQuadraticSmoothAbs',
  'createSvgPathSegCurvetoQuadraticSmoothRel',
  'createSvgPathSegLinetoAbs',
  'createSvgPathSegLinetoHorizontalAbs',
  'createSvgPathSegLinetoHorizontalRel',
  'createSvgPathSegLinetoRel',
  'createSvgPathSegLinetoVerticalAbs',
  'createSvgPathSegLinetoVerticalRel',
  'createSvgPathSegMovetoAbs',
  'createSvgPathSegMovetoRel',
  'getPathSegAtLength',
  'getPointAtLength',
  'getTotalLength',
  'animatedNormalizedPathSegList',
  'animatedPathSegList',
  'normalizedPathSegList',
  'pathLength',
  'pathSegList'
]);
svg.PathElement = class PathElement extends svg.GeometryElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.PathElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("path"));
  }
  created() {
    this[dartx.animatedNormalizedPathSegList] = null;
    this[dartx.animatedPathSegList] = null;
    this[dartx.normalizedPathSegList] = null;
    this[dartx.pathLength] = null;
    this[dartx.pathSegList] = null;
    super.created();
  }
  get [dartx.animatedNormalizedPathSegList]() {
    return this.animatedNormalizedPathSegList;
  }
  get [dartx.animatedPathSegList]() {
    return this.animatedPathSegList;
  }
  get [dartx.normalizedPathSegList]() {
    return this.normalizedPathSegList;
  }
  get [dartx.pathLength]() {
    return this.pathLength;
  }
  get [dartx.pathSegList]() {
    return this.pathSegList;
  }
  [dartx.createSvgPathSegArcAbs](...args) {
    return this.createSVGPathSegArcAbs.apply(this, args);
  }
  [dartx.createSvgPathSegArcRel](...args) {
    return this.createSVGPathSegArcRel.apply(this, args);
  }
  [dartx.createSvgPathSegClosePath](...args) {
    return this.createSVGPathSegClosePath.apply(this, args);
  }
  [dartx.createSvgPathSegCurvetoCubicAbs](...args) {
    return this.createSVGPathSegCurvetoCubicAbs.apply(this, args);
  }
  [dartx.createSvgPathSegCurvetoCubicRel](...args) {
    return this.createSVGPathSegCurvetoCubicRel.apply(this, args);
  }
  [dartx.createSvgPathSegCurvetoCubicSmoothAbs](...args) {
    return this.createSVGPathSegCurvetoCubicSmoothAbs.apply(this, args);
  }
  [dartx.createSvgPathSegCurvetoCubicSmoothRel](...args) {
    return this.createSVGPathSegCurvetoCubicSmoothRel.apply(this, args);
  }
  [dartx.createSvgPathSegCurvetoQuadraticAbs](...args) {
    return this.createSVGPathSegCurvetoQuadraticAbs.apply(this, args);
  }
  [dartx.createSvgPathSegCurvetoQuadraticRel](...args) {
    return this.createSVGPathSegCurvetoQuadraticRel.apply(this, args);
  }
  [dartx.createSvgPathSegCurvetoQuadraticSmoothAbs](...args) {
    return this.createSVGPathSegCurvetoQuadraticSmoothAbs.apply(this, args);
  }
  [dartx.createSvgPathSegCurvetoQuadraticSmoothRel](...args) {
    return this.createSVGPathSegCurvetoQuadraticSmoothRel.apply(this, args);
  }
  [dartx.createSvgPathSegLinetoAbs](...args) {
    return this.createSVGPathSegLinetoAbs.apply(this, args);
  }
  [dartx.createSvgPathSegLinetoHorizontalAbs](...args) {
    return this.createSVGPathSegLinetoHorizontalAbs.apply(this, args);
  }
  [dartx.createSvgPathSegLinetoHorizontalRel](...args) {
    return this.createSVGPathSegLinetoHorizontalRel.apply(this, args);
  }
  [dartx.createSvgPathSegLinetoRel](...args) {
    return this.createSVGPathSegLinetoRel.apply(this, args);
  }
  [dartx.createSvgPathSegLinetoVerticalAbs](...args) {
    return this.createSVGPathSegLinetoVerticalAbs.apply(this, args);
  }
  [dartx.createSvgPathSegLinetoVerticalRel](...args) {
    return this.createSVGPathSegLinetoVerticalRel.apply(this, args);
  }
  [dartx.createSvgPathSegMovetoAbs](...args) {
    return this.createSVGPathSegMovetoAbs.apply(this, args);
  }
  [dartx.createSvgPathSegMovetoRel](...args) {
    return this.createSVGPathSegMovetoRel.apply(this, args);
  }
  [dartx.getPathSegAtLength](...args) {
    return this.getPathSegAtLength.apply(this, args);
  }
  [dartx.getPointAtLength](...args) {
    return this.getPointAtLength.apply(this, args);
  }
  [dartx.getTotalLength](...args) {
    return this.getTotalLength.apply(this, args);
  }
};
dart.defineNamedConstructor(svg.PathElement, 'created');
dart.setSignature(svg.PathElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.PathElement, []),
    new: dart.definiteFunctionType(svg.PathElement, []),
    created: dart.definiteFunctionType(svg.PathElement, [])
  }),
  fields: () => ({
    [dartx.animatedNormalizedPathSegList]: svg.PathSegList,
    [dartx.animatedPathSegList]: svg.PathSegList,
    [dartx.normalizedPathSegList]: svg.PathSegList,
    [dartx.pathLength]: svg.AnimatedNumber,
    [dartx.pathSegList]: svg.PathSegList
  }),
  methods: () => ({
    [dartx.createSvgPathSegArcAbs]: dart.definiteFunctionType(svg.PathSegArcAbs, [core.num, core.num, core.num, core.num, core.num, core.bool, core.bool]),
    [dartx.createSvgPathSegArcRel]: dart.definiteFunctionType(svg.PathSegArcRel, [core.num, core.num, core.num, core.num, core.num, core.bool, core.bool]),
    [dartx.createSvgPathSegClosePath]: dart.definiteFunctionType(svg.PathSegClosePath, []),
    [dartx.createSvgPathSegCurvetoCubicAbs]: dart.definiteFunctionType(svg.PathSegCurvetoCubicAbs, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [dartx.createSvgPathSegCurvetoCubicRel]: dart.definiteFunctionType(svg.PathSegCurvetoCubicRel, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [dartx.createSvgPathSegCurvetoCubicSmoothAbs]: dart.definiteFunctionType(svg.PathSegCurvetoCubicSmoothAbs, [core.num, core.num, core.num, core.num]),
    [dartx.createSvgPathSegCurvetoCubicSmoothRel]: dart.definiteFunctionType(svg.PathSegCurvetoCubicSmoothRel, [core.num, core.num, core.num, core.num]),
    [dartx.createSvgPathSegCurvetoQuadraticAbs]: dart.definiteFunctionType(svg.PathSegCurvetoQuadraticAbs, [core.num, core.num, core.num, core.num]),
    [dartx.createSvgPathSegCurvetoQuadraticRel]: dart.definiteFunctionType(svg.PathSegCurvetoQuadraticRel, [core.num, core.num, core.num, core.num]),
    [dartx.createSvgPathSegCurvetoQuadraticSmoothAbs]: dart.definiteFunctionType(svg.PathSegCurvetoQuadraticSmoothAbs, [core.num, core.num]),
    [dartx.createSvgPathSegCurvetoQuadraticSmoothRel]: dart.definiteFunctionType(svg.PathSegCurvetoQuadraticSmoothRel, [core.num, core.num]),
    [dartx.createSvgPathSegLinetoAbs]: dart.definiteFunctionType(svg.PathSegLinetoAbs, [core.num, core.num]),
    [dartx.createSvgPathSegLinetoHorizontalAbs]: dart.definiteFunctionType(svg.PathSegLinetoHorizontalAbs, [core.num]),
    [dartx.createSvgPathSegLinetoHorizontalRel]: dart.definiteFunctionType(svg.PathSegLinetoHorizontalRel, [core.num]),
    [dartx.createSvgPathSegLinetoRel]: dart.definiteFunctionType(svg.PathSegLinetoRel, [core.num, core.num]),
    [dartx.createSvgPathSegLinetoVerticalAbs]: dart.definiteFunctionType(svg.PathSegLinetoVerticalAbs, [core.num]),
    [dartx.createSvgPathSegLinetoVerticalRel]: dart.definiteFunctionType(svg.PathSegLinetoVerticalRel, [core.num]),
    [dartx.createSvgPathSegMovetoAbs]: dart.definiteFunctionType(svg.PathSegMovetoAbs, [core.num, core.num]),
    [dartx.createSvgPathSegMovetoRel]: dart.definiteFunctionType(svg.PathSegMovetoRel, [core.num, core.num]),
    [dartx.getPathSegAtLength]: dart.definiteFunctionType(core.int, [core.num]),
    [dartx.getPointAtLength]: dart.definiteFunctionType(svg.Point, [core.num]),
    [dartx.getTotalLength]: dart.definiteFunctionType(core.double, [])
  })
});
dart.registerExtension(dart.global.SVGPathElement, svg.PathElement);
dart.defineExtensionNames([
  'pathSegType',
  'pathSegTypeAsLetter'
]);
svg.PathSeg = class PathSeg extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.pathSegType]() {
    return this.pathSegType;
  }
  get [dartx.pathSegTypeAsLetter]() {
    return this.pathSegTypeAsLetter;
  }
};
dart.setSignature(svg.PathSeg, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSeg, [])}),
  fields: () => ({
    [dartx.pathSegType]: core.int,
    [dartx.pathSegTypeAsLetter]: core.String
  }),
  sfields: () => ({
    PATHSEG_ARC_ABS: core.int,
    PATHSEG_ARC_REL: core.int,
    PATHSEG_CLOSEPATH: core.int,
    PATHSEG_CURVETO_CUBIC_ABS: core.int,
    PATHSEG_CURVETO_CUBIC_REL: core.int,
    PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: core.int,
    PATHSEG_CURVETO_CUBIC_SMOOTH_REL: core.int,
    PATHSEG_CURVETO_QUADRATIC_ABS: core.int,
    PATHSEG_CURVETO_QUADRATIC_REL: core.int,
    PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: core.int,
    PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: core.int,
    PATHSEG_LINETO_ABS: core.int,
    PATHSEG_LINETO_HORIZONTAL_ABS: core.int,
    PATHSEG_LINETO_HORIZONTAL_REL: core.int,
    PATHSEG_LINETO_REL: core.int,
    PATHSEG_LINETO_VERTICAL_ABS: core.int,
    PATHSEG_LINETO_VERTICAL_REL: core.int,
    PATHSEG_MOVETO_ABS: core.int,
    PATHSEG_MOVETO_REL: core.int,
    PATHSEG_UNKNOWN: core.int
  })
});
svg.PathSeg.PATHSEG_ARC_ABS = 10;
svg.PathSeg.PATHSEG_ARC_REL = 11;
svg.PathSeg.PATHSEG_CLOSEPATH = 1;
svg.PathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;
svg.PathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;
svg.PathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;
svg.PathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;
svg.PathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;
svg.PathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;
svg.PathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;
svg.PathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;
svg.PathSeg.PATHSEG_LINETO_ABS = 4;
svg.PathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;
svg.PathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;
svg.PathSeg.PATHSEG_LINETO_REL = 5;
svg.PathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;
svg.PathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;
svg.PathSeg.PATHSEG_MOVETO_ABS = 2;
svg.PathSeg.PATHSEG_MOVETO_REL = 3;
svg.PathSeg.PATHSEG_UNKNOWN = 0;
dart.registerExtension(dart.global.SVGPathSeg, svg.PathSeg);
dart.defineExtensionNames([
  'angle',
  'largeArcFlag',
  'r1',
  'r2',
  'sweepFlag',
  'x',
  'y'
]);
svg.PathSegArcAbs = class PathSegArcAbs extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.angle]() {
    return this.angle;
  }
  set [dartx.angle](value) {
    this.angle = value;
  }
  get [dartx.largeArcFlag]() {
    return this.largeArcFlag;
  }
  set [dartx.largeArcFlag](value) {
    this.largeArcFlag = value;
  }
  get [dartx.r1]() {
    return this.r1;
  }
  set [dartx.r1](value) {
    this.r1 = value;
  }
  get [dartx.r2]() {
    return this.r2;
  }
  set [dartx.r2](value) {
    this.r2 = value;
  }
  get [dartx.sweepFlag]() {
    return this.sweepFlag;
  }
  set [dartx.sweepFlag](value) {
    this.sweepFlag = value;
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
};
dart.setSignature(svg.PathSegArcAbs, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegArcAbs, [])}),
  fields: () => ({
    [dartx.angle]: core.num,
    [dartx.largeArcFlag]: core.bool,
    [dartx.r1]: core.num,
    [dartx.r2]: core.num,
    [dartx.sweepFlag]: core.bool,
    [dartx.x]: core.num,
    [dartx.y]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegArcAbs, svg.PathSegArcAbs);
dart.defineExtensionNames([
  'angle',
  'largeArcFlag',
  'r1',
  'r2',
  'sweepFlag',
  'x',
  'y'
]);
svg.PathSegArcRel = class PathSegArcRel extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.angle]() {
    return this.angle;
  }
  set [dartx.angle](value) {
    this.angle = value;
  }
  get [dartx.largeArcFlag]() {
    return this.largeArcFlag;
  }
  set [dartx.largeArcFlag](value) {
    this.largeArcFlag = value;
  }
  get [dartx.r1]() {
    return this.r1;
  }
  set [dartx.r1](value) {
    this.r1 = value;
  }
  get [dartx.r2]() {
    return this.r2;
  }
  set [dartx.r2](value) {
    this.r2 = value;
  }
  get [dartx.sweepFlag]() {
    return this.sweepFlag;
  }
  set [dartx.sweepFlag](value) {
    this.sweepFlag = value;
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
};
dart.setSignature(svg.PathSegArcRel, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegArcRel, [])}),
  fields: () => ({
    [dartx.angle]: core.num,
    [dartx.largeArcFlag]: core.bool,
    [dartx.r1]: core.num,
    [dartx.r2]: core.num,
    [dartx.sweepFlag]: core.bool,
    [dartx.x]: core.num,
    [dartx.y]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegArcRel, svg.PathSegArcRel);
svg.PathSegClosePath = class PathSegClosePath extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(svg.PathSegClosePath, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegClosePath, [])})
});
dart.registerExtension(dart.global.SVGPathSegClosePath, svg.PathSegClosePath);
dart.defineExtensionNames([
  'x',
  'x1',
  'x2',
  'y',
  'y1',
  'y2'
]);
svg.PathSegCurvetoCubicAbs = class PathSegCurvetoCubicAbs extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.x1]() {
    return this.x1;
  }
  set [dartx.x1](value) {
    this.x1 = value;
  }
  get [dartx.x2]() {
    return this.x2;
  }
  set [dartx.x2](value) {
    this.x2 = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
  get [dartx.y1]() {
    return this.y1;
  }
  set [dartx.y1](value) {
    this.y1 = value;
  }
  get [dartx.y2]() {
    return this.y2;
  }
  set [dartx.y2](value) {
    this.y2 = value;
  }
};
dart.setSignature(svg.PathSegCurvetoCubicAbs, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegCurvetoCubicAbs, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.x1]: core.num,
    [dartx.x2]: core.num,
    [dartx.y]: core.num,
    [dartx.y1]: core.num,
    [dartx.y2]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegCurvetoCubicAbs, svg.PathSegCurvetoCubicAbs);
dart.defineExtensionNames([
  'x',
  'x1',
  'x2',
  'y',
  'y1',
  'y2'
]);
svg.PathSegCurvetoCubicRel = class PathSegCurvetoCubicRel extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.x1]() {
    return this.x1;
  }
  set [dartx.x1](value) {
    this.x1 = value;
  }
  get [dartx.x2]() {
    return this.x2;
  }
  set [dartx.x2](value) {
    this.x2 = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
  get [dartx.y1]() {
    return this.y1;
  }
  set [dartx.y1](value) {
    this.y1 = value;
  }
  get [dartx.y2]() {
    return this.y2;
  }
  set [dartx.y2](value) {
    this.y2 = value;
  }
};
dart.setSignature(svg.PathSegCurvetoCubicRel, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegCurvetoCubicRel, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.x1]: core.num,
    [dartx.x2]: core.num,
    [dartx.y]: core.num,
    [dartx.y1]: core.num,
    [dartx.y2]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegCurvetoCubicRel, svg.PathSegCurvetoCubicRel);
dart.defineExtensionNames([
  'x',
  'x2',
  'y',
  'y2'
]);
svg.PathSegCurvetoCubicSmoothAbs = class PathSegCurvetoCubicSmoothAbs extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.x2]() {
    return this.x2;
  }
  set [dartx.x2](value) {
    this.x2 = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
  get [dartx.y2]() {
    return this.y2;
  }
  set [dartx.y2](value) {
    this.y2 = value;
  }
};
dart.setSignature(svg.PathSegCurvetoCubicSmoothAbs, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegCurvetoCubicSmoothAbs, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.x2]: core.num,
    [dartx.y]: core.num,
    [dartx.y2]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegCurvetoCubicSmoothAbs, svg.PathSegCurvetoCubicSmoothAbs);
dart.defineExtensionNames([
  'x',
  'x2',
  'y',
  'y2'
]);
svg.PathSegCurvetoCubicSmoothRel = class PathSegCurvetoCubicSmoothRel extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.x2]() {
    return this.x2;
  }
  set [dartx.x2](value) {
    this.x2 = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
  get [dartx.y2]() {
    return this.y2;
  }
  set [dartx.y2](value) {
    this.y2 = value;
  }
};
dart.setSignature(svg.PathSegCurvetoCubicSmoothRel, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegCurvetoCubicSmoothRel, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.x2]: core.num,
    [dartx.y]: core.num,
    [dartx.y2]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegCurvetoCubicSmoothRel, svg.PathSegCurvetoCubicSmoothRel);
dart.defineExtensionNames([
  'x',
  'x1',
  'y',
  'y1'
]);
svg.PathSegCurvetoQuadraticAbs = class PathSegCurvetoQuadraticAbs extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.x1]() {
    return this.x1;
  }
  set [dartx.x1](value) {
    this.x1 = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
  get [dartx.y1]() {
    return this.y1;
  }
  set [dartx.y1](value) {
    this.y1 = value;
  }
};
dart.setSignature(svg.PathSegCurvetoQuadraticAbs, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegCurvetoQuadraticAbs, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.x1]: core.num,
    [dartx.y]: core.num,
    [dartx.y1]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegCurvetoQuadraticAbs, svg.PathSegCurvetoQuadraticAbs);
dart.defineExtensionNames([
  'x',
  'x1',
  'y',
  'y1'
]);
svg.PathSegCurvetoQuadraticRel = class PathSegCurvetoQuadraticRel extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.x1]() {
    return this.x1;
  }
  set [dartx.x1](value) {
    this.x1 = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
  get [dartx.y1]() {
    return this.y1;
  }
  set [dartx.y1](value) {
    this.y1 = value;
  }
};
dart.setSignature(svg.PathSegCurvetoQuadraticRel, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegCurvetoQuadraticRel, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.x1]: core.num,
    [dartx.y]: core.num,
    [dartx.y1]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegCurvetoQuadraticRel, svg.PathSegCurvetoQuadraticRel);
dart.defineExtensionNames([
  'x',
  'y'
]);
svg.PathSegCurvetoQuadraticSmoothAbs = class PathSegCurvetoQuadraticSmoothAbs extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
};
dart.setSignature(svg.PathSegCurvetoQuadraticSmoothAbs, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegCurvetoQuadraticSmoothAbs, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.y]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegCurvetoQuadraticSmoothAbs, svg.PathSegCurvetoQuadraticSmoothAbs);
dart.defineExtensionNames([
  'x',
  'y'
]);
svg.PathSegCurvetoQuadraticSmoothRel = class PathSegCurvetoQuadraticSmoothRel extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
};
dart.setSignature(svg.PathSegCurvetoQuadraticSmoothRel, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegCurvetoQuadraticSmoothRel, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.y]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegCurvetoQuadraticSmoothRel, svg.PathSegCurvetoQuadraticSmoothRel);
dart.defineExtensionNames([
  'x',
  'y'
]);
svg.PathSegLinetoAbs = class PathSegLinetoAbs extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
};
dart.setSignature(svg.PathSegLinetoAbs, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegLinetoAbs, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.y]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegLinetoAbs, svg.PathSegLinetoAbs);
dart.defineExtensionNames([
  'x'
]);
svg.PathSegLinetoHorizontalAbs = class PathSegLinetoHorizontalAbs extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
};
dart.setSignature(svg.PathSegLinetoHorizontalAbs, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegLinetoHorizontalAbs, [])}),
  fields: () => ({[dartx.x]: core.num})
});
dart.registerExtension(dart.global.SVGPathSegLinetoHorizontalAbs, svg.PathSegLinetoHorizontalAbs);
dart.defineExtensionNames([
  'x'
]);
svg.PathSegLinetoHorizontalRel = class PathSegLinetoHorizontalRel extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
};
dart.setSignature(svg.PathSegLinetoHorizontalRel, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegLinetoHorizontalRel, [])}),
  fields: () => ({[dartx.x]: core.num})
});
dart.registerExtension(dart.global.SVGPathSegLinetoHorizontalRel, svg.PathSegLinetoHorizontalRel);
dart.defineExtensionNames([
  'x',
  'y'
]);
svg.PathSegLinetoRel = class PathSegLinetoRel extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
};
dart.setSignature(svg.PathSegLinetoRel, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegLinetoRel, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.y]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegLinetoRel, svg.PathSegLinetoRel);
dart.defineExtensionNames([
  'y'
]);
svg.PathSegLinetoVerticalAbs = class PathSegLinetoVerticalAbs extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
};
dart.setSignature(svg.PathSegLinetoVerticalAbs, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegLinetoVerticalAbs, [])}),
  fields: () => ({[dartx.y]: core.num})
});
dart.registerExtension(dart.global.SVGPathSegLinetoVerticalAbs, svg.PathSegLinetoVerticalAbs);
dart.defineExtensionNames([
  'y'
]);
svg.PathSegLinetoVerticalRel = class PathSegLinetoVerticalRel extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
};
dart.setSignature(svg.PathSegLinetoVerticalRel, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegLinetoVerticalRel, [])}),
  fields: () => ({[dartx.y]: core.num})
});
dart.registerExtension(dart.global.SVGPathSegLinetoVerticalRel, svg.PathSegLinetoVerticalRel);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'appendItem',
  'clear',
  'getItem',
  'initialize',
  'insertItemBefore',
  'removeItem',
  'replaceItem',
  'numberOfItems'
]);
svg.PathSegList = class PathSegList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(svg.PathSeg), html.ImmutableListMixin$(svg.PathSeg)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.numberOfItems]() {
    return this.numberOfItems;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[dartx.getItem](index);
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [dartx.appendItem](...args) {
    return this.appendItem.apply(this, args);
  }
  [dartx.clear](...args) {
    return this.clear.apply(this, args);
  }
  [dartx.getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [dartx.initialize](...args) {
    return this.initialize.apply(this, args);
  }
  [dartx.insertItemBefore](...args) {
    return this.insertItemBefore.apply(this, args);
  }
  [dartx.removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [dartx.replaceItem](...args) {
    return this.replaceItem.apply(this, args);
  }
};
svg.PathSegList[dart.implements] = () => [ListOfPathSeg()];
dart.setSignature(svg.PathSegList, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegList, [])}),
  fields: () => ({[dartx.numberOfItems]: core.int}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(svg.PathSeg, []),
    [dartx.last]: dart.definiteFunctionType(svg.PathSeg, []),
    [dartx.single]: dart.definiteFunctionType(svg.PathSeg, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(svg.PathSeg, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, svg.PathSeg]),
    [dartx.elementAt]: dart.definiteFunctionType(svg.PathSeg, [core.int]),
    [__setter__]: dart.definiteFunctionType(dart.void, [core.int, svg.PathSeg]),
    [dartx.appendItem]: dart.definiteFunctionType(svg.PathSeg, [svg.PathSeg]),
    [dartx.getItem]: dart.definiteFunctionType(svg.PathSeg, [core.int]),
    [dartx.initialize]: dart.definiteFunctionType(svg.PathSeg, [svg.PathSeg]),
    [dartx.insertItemBefore]: dart.definiteFunctionType(svg.PathSeg, [svg.PathSeg, core.int]),
    [dartx.removeItem]: dart.definiteFunctionType(svg.PathSeg, [core.int]),
    [dartx.replaceItem]: dart.definiteFunctionType(svg.PathSeg, [svg.PathSeg, core.int])
  })
});
dart.registerExtension(dart.global.SVGPathSegList, svg.PathSegList);
dart.defineExtensionNames([
  'x',
  'y'
]);
svg.PathSegMovetoAbs = class PathSegMovetoAbs extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
};
dart.setSignature(svg.PathSegMovetoAbs, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegMovetoAbs, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.y]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegMovetoAbs, svg.PathSegMovetoAbs);
dart.defineExtensionNames([
  'x',
  'y'
]);
svg.PathSegMovetoRel = class PathSegMovetoRel extends svg.PathSeg {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
};
dart.setSignature(svg.PathSegMovetoRel, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PathSegMovetoRel, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.y]: core.num
  })
});
dart.registerExtension(dart.global.SVGPathSegMovetoRel, svg.PathSegMovetoRel);
dart.defineExtensionNames([
  'hasExtension',
  'height',
  'patternContentUnits',
  'patternTransform',
  'patternUnits',
  'width',
  'x',
  'y',
  'preserveAspectRatio',
  'viewBox',
  'requiredExtensions',
  'requiredFeatures',
  'systemLanguage',
  'href'
]);
svg.PatternElement = class PatternElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.PatternElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("pattern"));
  }
  created() {
    this[dartx.height] = null;
    this[dartx.patternContentUnits] = null;
    this[dartx.patternTransform] = null;
    this[dartx.patternUnits] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    this[dartx.preserveAspectRatio] = null;
    this[dartx.viewBox] = null;
    this[dartx.requiredExtensions] = null;
    this[dartx.requiredFeatures] = null;
    this[dartx.systemLanguage] = null;
    this[dartx.href] = null;
    super.created();
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.patternContentUnits]() {
    return this.patternContentUnits;
  }
  get [dartx.patternTransform]() {
    return this.patternTransform;
  }
  get [dartx.patternUnits]() {
    return this.patternUnits;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
  get [dartx.preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [dartx.viewBox]() {
    return this.viewBox;
  }
  get [dartx.requiredExtensions]() {
    return this.requiredExtensions;
  }
  get [dartx.requiredFeatures]() {
    return this.requiredFeatures;
  }
  get [dartx.systemLanguage]() {
    return this.systemLanguage;
  }
  [dartx.hasExtension](...args) {
    return this.hasExtension.apply(this, args);
  }
  get [dartx.href]() {
    return this.href;
  }
};
dart.defineNamedConstructor(svg.PatternElement, 'created');
svg.PatternElement[dart.implements] = () => [svg.FitToViewBox, svg.UriReference, svg.Tests];
dart.setSignature(svg.PatternElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.PatternElement, []),
    new: dart.definiteFunctionType(svg.PatternElement, []),
    created: dart.definiteFunctionType(svg.PatternElement, [])
  }),
  fields: () => ({
    [dartx.height]: svg.AnimatedLength,
    [dartx.patternContentUnits]: svg.AnimatedEnumeration,
    [dartx.patternTransform]: svg.AnimatedTransformList,
    [dartx.patternUnits]: svg.AnimatedEnumeration,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength,
    [dartx.preserveAspectRatio]: svg.AnimatedPreserveAspectRatio,
    [dartx.viewBox]: svg.AnimatedRect,
    [dartx.requiredExtensions]: svg.StringList,
    [dartx.requiredFeatures]: svg.StringList,
    [dartx.systemLanguage]: svg.StringList,
    [dartx.href]: svg.AnimatedString
  }),
  methods: () => ({[dartx.hasExtension]: dart.definiteFunctionType(core.bool, [core.String])})
});
dart.registerExtension(dart.global.SVGPatternElement, svg.PatternElement);
dart.defineExtensionNames([
  'matrixTransform',
  'x',
  'y'
]);
svg.Point = class Point extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
  [dartx.matrixTransform](...args) {
    return this.matrixTransform.apply(this, args);
  }
};
dart.setSignature(svg.Point, {
  constructors: () => ({_: dart.definiteFunctionType(svg.Point, [])}),
  fields: () => ({
    [dartx.x]: core.num,
    [dartx.y]: core.num
  }),
  methods: () => ({[dartx.matrixTransform]: dart.definiteFunctionType(svg.Point, [svg.Matrix])})
});
dart.registerExtension(dart.global.SVGPoint, svg.Point);
dart.defineExtensionNames([
  'appendItem',
  'clear',
  'getItem',
  'initialize',
  'insertItemBefore',
  'removeItem',
  'replaceItem',
  'length',
  'numberOfItems'
]);
svg.PointList = class PointList extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.numberOfItems]() {
    return this.numberOfItems;
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [dartx.appendItem](...args) {
    return this.appendItem.apply(this, args);
  }
  [dartx.clear](...args) {
    return this.clear.apply(this, args);
  }
  [dartx.getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [dartx.initialize](...args) {
    return this.initialize.apply(this, args);
  }
  [dartx.insertItemBefore](...args) {
    return this.insertItemBefore.apply(this, args);
  }
  [dartx.removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [dartx.replaceItem](...args) {
    return this.replaceItem.apply(this, args);
  }
};
dart.setSignature(svg.PointList, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PointList, [])}),
  fields: () => ({
    [dartx.length]: core.int,
    [dartx.numberOfItems]: core.int
  }),
  methods: () => ({
    [__setter__]: dart.definiteFunctionType(dart.void, [core.int, svg.Point]),
    [dartx.appendItem]: dart.definiteFunctionType(svg.Point, [svg.Point]),
    [dartx.clear]: dart.definiteFunctionType(dart.void, []),
    [dartx.getItem]: dart.definiteFunctionType(svg.Point, [core.int]),
    [dartx.initialize]: dart.definiteFunctionType(svg.Point, [svg.Point]),
    [dartx.insertItemBefore]: dart.definiteFunctionType(svg.Point, [svg.Point, core.int]),
    [dartx.removeItem]: dart.definiteFunctionType(svg.Point, [core.int]),
    [dartx.replaceItem]: dart.definiteFunctionType(svg.Point, [svg.Point, core.int])
  })
});
dart.registerExtension(dart.global.SVGPointList, svg.PointList);
dart.defineExtensionNames([
  'animatedPoints',
  'points'
]);
svg.PolygonElement = class PolygonElement extends svg.GeometryElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.PolygonElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("polygon"));
  }
  created() {
    this[dartx.animatedPoints] = null;
    this[dartx.points] = null;
    super.created();
  }
  get [dartx.animatedPoints]() {
    return this.animatedPoints;
  }
  get [dartx.points]() {
    return this.points;
  }
};
dart.defineNamedConstructor(svg.PolygonElement, 'created');
dart.setSignature(svg.PolygonElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.PolygonElement, []),
    new: dart.definiteFunctionType(svg.PolygonElement, []),
    created: dart.definiteFunctionType(svg.PolygonElement, [])
  }),
  fields: () => ({
    [dartx.animatedPoints]: svg.PointList,
    [dartx.points]: svg.PointList
  })
});
dart.registerExtension(dart.global.SVGPolygonElement, svg.PolygonElement);
dart.defineExtensionNames([
  'animatedPoints',
  'points'
]);
svg.PolylineElement = class PolylineElement extends svg.GeometryElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.PolylineElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("polyline"));
  }
  created() {
    this[dartx.animatedPoints] = null;
    this[dartx.points] = null;
    super.created();
  }
  get [dartx.animatedPoints]() {
    return this.animatedPoints;
  }
  get [dartx.points]() {
    return this.points;
  }
};
dart.defineNamedConstructor(svg.PolylineElement, 'created');
dart.setSignature(svg.PolylineElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.PolylineElement, []),
    new: dart.definiteFunctionType(svg.PolylineElement, []),
    created: dart.definiteFunctionType(svg.PolylineElement, [])
  }),
  fields: () => ({
    [dartx.animatedPoints]: svg.PointList,
    [dartx.points]: svg.PointList
  })
});
dart.registerExtension(dart.global.SVGPolylineElement, svg.PolylineElement);
dart.defineExtensionNames([
  'align',
  'meetOrSlice'
]);
svg.PreserveAspectRatio = class PreserveAspectRatio extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.align]() {
    return this.align;
  }
  set [dartx.align](value) {
    this.align = value;
  }
  get [dartx.meetOrSlice]() {
    return this.meetOrSlice;
  }
  set [dartx.meetOrSlice](value) {
    this.meetOrSlice = value;
  }
};
dart.setSignature(svg.PreserveAspectRatio, {
  constructors: () => ({_: dart.definiteFunctionType(svg.PreserveAspectRatio, [])}),
  fields: () => ({
    [dartx.align]: core.int,
    [dartx.meetOrSlice]: core.int
  }),
  sfields: () => ({
    SVG_MEETORSLICE_MEET: core.int,
    SVG_MEETORSLICE_SLICE: core.int,
    SVG_MEETORSLICE_UNKNOWN: core.int,
    SVG_PRESERVEASPECTRATIO_NONE: core.int,
    SVG_PRESERVEASPECTRATIO_UNKNOWN: core.int,
    SVG_PRESERVEASPECTRATIO_XMAXYMAX: core.int,
    SVG_PRESERVEASPECTRATIO_XMAXYMID: core.int,
    SVG_PRESERVEASPECTRATIO_XMAXYMIN: core.int,
    SVG_PRESERVEASPECTRATIO_XMIDYMAX: core.int,
    SVG_PRESERVEASPECTRATIO_XMIDYMID: core.int,
    SVG_PRESERVEASPECTRATIO_XMIDYMIN: core.int,
    SVG_PRESERVEASPECTRATIO_XMINYMAX: core.int,
    SVG_PRESERVEASPECTRATIO_XMINYMID: core.int,
    SVG_PRESERVEASPECTRATIO_XMINYMIN: core.int
  })
});
svg.PreserveAspectRatio.SVG_MEETORSLICE_MEET = 1;
svg.PreserveAspectRatio.SVG_MEETORSLICE_SLICE = 2;
svg.PreserveAspectRatio.SVG_MEETORSLICE_UNKNOWN = 0;
svg.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE = 1;
svg.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_UNKNOWN = 0;
svg.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10;
svg.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMID = 7;
svg.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4;
svg.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9;
svg.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMID = 6;
svg.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3;
svg.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMAX = 8;
svg.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMID = 5;
svg.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMIN = 2;
dart.registerExtension(dart.global.SVGPreserveAspectRatio, svg.PreserveAspectRatio);
dart.defineExtensionNames([
  'cx',
  'cy',
  'fr',
  'fx',
  'fy',
  'r'
]);
svg.RadialGradientElement = class RadialGradientElement extends svg._GradientElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.RadialGradientElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("radialGradient"));
  }
  created() {
    this[dartx.cx] = null;
    this[dartx.cy] = null;
    this[dartx.fr] = null;
    this[dartx.fx] = null;
    this[dartx.fy] = null;
    this[dartx.r] = null;
    super.created();
  }
  get [dartx.cx]() {
    return this.cx;
  }
  get [dartx.cy]() {
    return this.cy;
  }
  get [dartx.fr]() {
    return this.fr;
  }
  get [dartx.fx]() {
    return this.fx;
  }
  get [dartx.fy]() {
    return this.fy;
  }
  get [dartx.r]() {
    return this.r;
  }
};
dart.defineNamedConstructor(svg.RadialGradientElement, 'created');
dart.setSignature(svg.RadialGradientElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.RadialGradientElement, []),
    new: dart.definiteFunctionType(svg.RadialGradientElement, []),
    created: dart.definiteFunctionType(svg.RadialGradientElement, [])
  }),
  fields: () => ({
    [dartx.cx]: svg.AnimatedLength,
    [dartx.cy]: svg.AnimatedLength,
    [dartx.fr]: svg.AnimatedLength,
    [dartx.fx]: svg.AnimatedLength,
    [dartx.fy]: svg.AnimatedLength,
    [dartx.r]: svg.AnimatedLength
  })
});
dart.registerExtension(dart.global.SVGRadialGradientElement, svg.RadialGradientElement);
dart.defineExtensionNames([
  'height',
  'width',
  'x',
  'y'
]);
svg.Rect = class Rect extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.height]() {
    return this.height;
  }
  set [dartx.height](value) {
    this.height = value;
  }
  get [dartx.width]() {
    return this.width;
  }
  set [dartx.width](value) {
    this.width = value;
  }
  get [dartx.x]() {
    return this.x;
  }
  set [dartx.x](value) {
    this.x = value;
  }
  get [dartx.y]() {
    return this.y;
  }
  set [dartx.y](value) {
    this.y = value;
  }
};
dart.setSignature(svg.Rect, {
  constructors: () => ({_: dart.definiteFunctionType(svg.Rect, [])}),
  fields: () => ({
    [dartx.height]: core.num,
    [dartx.width]: core.num,
    [dartx.x]: core.num,
    [dartx.y]: core.num
  })
});
dart.registerExtension(dart.global.SVGRect, svg.Rect);
dart.defineExtensionNames([
  'height',
  'rx',
  'ry',
  'width',
  'x',
  'y'
]);
svg.RectElement = class RectElement extends svg.GeometryElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.RectElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("rect"));
  }
  created() {
    this[dartx.height] = null;
    this[dartx.rx] = null;
    this[dartx.ry] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.rx]() {
    return this.rx;
  }
  get [dartx.ry]() {
    return this.ry;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.RectElement, 'created');
dart.setSignature(svg.RectElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.RectElement, []),
    new: dart.definiteFunctionType(svg.RectElement, []),
    created: dart.definiteFunctionType(svg.RectElement, [])
  }),
  fields: () => ({
    [dartx.height]: svg.AnimatedLength,
    [dartx.rx]: svg.AnimatedLength,
    [dartx.ry]: svg.AnimatedLength,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength
  })
});
dart.registerExtension(dart.global.SVGRectElement, svg.RectElement);
dart.defineExtensionNames([
  'type',
  'href'
]);
svg.ScriptElement = class ScriptElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.ScriptElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("script"));
  }
  created() {
    this[dartx.type] = null;
    this[dartx.href] = null;
    super.created();
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
  get [dartx.href]() {
    return this.href;
  }
};
dart.defineNamedConstructor(svg.ScriptElement, 'created');
svg.ScriptElement[dart.implements] = () => [svg.UriReference];
dart.setSignature(svg.ScriptElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.ScriptElement, []),
    new: dart.definiteFunctionType(svg.ScriptElement, []),
    created: dart.definiteFunctionType(svg.ScriptElement, [])
  }),
  fields: () => ({
    [dartx.type]: core.String,
    [dartx.href]: svg.AnimatedString
  })
});
dart.registerExtension(dart.global.SVGScriptElement, svg.ScriptElement);
svg.SetElement = class SetElement extends svg.AnimationElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.SetElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("set"));
  }
  created() {
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('set')) && svg.SetElement.is(svg.SvgElement.tag('set'));
  }
};
dart.defineNamedConstructor(svg.SetElement, 'created');
dart.setSignature(svg.SetElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.SetElement, []),
    new: dart.definiteFunctionType(svg.SetElement, []),
    created: dart.definiteFunctionType(svg.SetElement, [])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGSetElement, svg.SetElement);
dart.defineExtensionNames([
  'gradientOffset'
]);
svg.StopElement = class StopElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.StopElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("stop"));
  }
  created() {
    this[dartx.gradientOffset] = null;
    super.created();
  }
  get [dartx.gradientOffset]() {
    return this.offset;
  }
};
dart.defineNamedConstructor(svg.StopElement, 'created');
dart.setSignature(svg.StopElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.StopElement, []),
    new: dart.definiteFunctionType(svg.StopElement, []),
    created: dart.definiteFunctionType(svg.StopElement, [])
  }),
  fields: () => ({[dartx.gradientOffset]: svg.AnimatedNumber})
});
dart.registerExtension(dart.global.SVGStopElement, svg.StopElement);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'appendItem',
  'clear',
  'getItem',
  'initialize',
  'insertItemBefore',
  'removeItem',
  'replaceItem',
  'numberOfItems'
]);
svg.StringList = class StringList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(core.String), html.ImmutableListMixin$(core.String)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.numberOfItems]() {
    return this.numberOfItems;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[dartx.getItem](index);
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [dartx.appendItem](...args) {
    return this.appendItem.apply(this, args);
  }
  [dartx.clear](...args) {
    return this.clear.apply(this, args);
  }
  [dartx.getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [dartx.initialize](...args) {
    return this.initialize.apply(this, args);
  }
  [dartx.insertItemBefore](...args) {
    return this.insertItemBefore.apply(this, args);
  }
  [dartx.removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [dartx.replaceItem](...args) {
    return this.replaceItem.apply(this, args);
  }
};
svg.StringList[dart.implements] = () => [ListOfString()];
dart.setSignature(svg.StringList, {
  constructors: () => ({_: dart.definiteFunctionType(svg.StringList, [])}),
  fields: () => ({[dartx.numberOfItems]: core.int}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(core.String, []),
    [dartx.last]: dart.definiteFunctionType(core.String, []),
    [dartx.single]: dart.definiteFunctionType(core.String, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(core.String, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, core.String]),
    [dartx.elementAt]: dart.definiteFunctionType(core.String, [core.int]),
    [__setter__]: dart.definiteFunctionType(dart.void, [core.int, core.String]),
    [dartx.appendItem]: dart.definiteFunctionType(core.String, [core.String]),
    [dartx.getItem]: dart.definiteFunctionType(core.String, [core.int]),
    [dartx.initialize]: dart.definiteFunctionType(core.String, [core.String]),
    [dartx.insertItemBefore]: dart.definiteFunctionType(core.String, [core.String, core.int]),
    [dartx.removeItem]: dart.definiteFunctionType(core.String, [core.int]),
    [dartx.replaceItem]: dart.definiteFunctionType(core.String, [core.String, core.int])
  })
});
dart.registerExtension(dart.global.SVGStringList, svg.StringList);
dart.defineExtensionNames([
  'disabled',
  'media',
  'sheet',
  'type'
]);
svg.StyleElement = class StyleElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.StyleElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("style"));
  }
  created() {
    this[dartx.disabled] = null;
    this[dartx.media] = null;
    this[dartx.sheet] = null;
    this[dartx.type] = null;
    super.created();
  }
  get [dartx.disabled]() {
    return this.disabled;
  }
  set [dartx.disabled](value) {
    this.disabled = value;
  }
  get [dartx.media]() {
    return this.media;
  }
  set [dartx.media](value) {
    this.media = value;
  }
  get [dartx.sheet]() {
    return this.sheet;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
};
dart.defineNamedConstructor(svg.StyleElement, 'created');
dart.setSignature(svg.StyleElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.StyleElement, []),
    new: dart.definiteFunctionType(svg.StyleElement, []),
    created: dart.definiteFunctionType(svg.StyleElement, [])
  }),
  fields: () => ({
    [dartx.disabled]: core.bool,
    [dartx.media]: core.String,
    [dartx.sheet]: html.StyleSheet,
    [dartx.type]: core.String
  })
});
dart.registerExtension(dart.global.SVGStyleElement, svg.StyleElement);
const _element = Symbol('_element');
svg._AttributeClassSet = class _AttributeClassSet extends html_common.CssClassSetImpl {
  new(element) {
    this[_element] = element;
  }
  readClasses() {
    let classname = this[_element][dartx.attributes][dartx._get]('class');
    let s = LinkedHashSetOfString().new();
    if (classname == null) {
      return s;
    }
    for (let name of classname[dartx.split](' ')) {
      let trimmed = name[dartx.trim]();
      if (!dart.test(trimmed[dartx.isEmpty])) {
        s.add(trimmed);
      }
    }
    return s;
  }
  writeClasses(s) {
    this[_element][dartx.attributes][dartx._set]('class', s.join(' '));
  }
};
dart.setSignature(svg._AttributeClassSet, {
  constructors: () => ({new: dart.definiteFunctionType(svg._AttributeClassSet, [html.Element])}),
  fields: () => ({[_element]: html.Element}),
  methods: () => ({
    readClasses: dart.definiteFunctionType(core.Set$(core.String), []),
    writeClasses: dart.definiteFunctionType(dart.void, [core.Set])
  })
});
dart.defineExtensionNames([
  'animationsPaused',
  'checkEnclosure',
  'checkIntersection',
  'createSvgAngle',
  'createSvgLength',
  'createSvgMatrix',
  'createSvgNumber',
  'createSvgPoint',
  'createSvgRect',
  'createSvgTransform',
  'createSvgTransformFromMatrix',
  'deselectAll',
  'forceRedraw',
  'getCurrentTime',
  'getElementById',
  'getEnclosureList',
  'getIntersectionList',
  'pauseAnimations',
  'setCurrentTime',
  'suspendRedraw',
  'unpauseAnimations',
  'unsuspendRedraw',
  'unsuspendRedrawAll',
  'currentScale',
  'currentTranslate',
  'currentView',
  'height',
  'pixelUnitToMillimeterX',
  'pixelUnitToMillimeterY',
  'screenPixelToMillimeterX',
  'screenPixelToMillimeterY',
  'useCurrentView',
  'viewport',
  'width',
  'x',
  'y',
  'preserveAspectRatio',
  'viewBox',
  'zoomAndPan'
]);
svg.SvgSvgElement = class SvgSvgElement extends svg.GraphicsElement {
  static new() {
    let el = svg.SvgElement.tag("svg");
    el[dartx.attributes][dartx._set]('version', "1.1");
    return svg.SvgSvgElement._check(el);
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.currentScale] = null;
    this[dartx.currentTranslate] = null;
    this[dartx.currentView] = null;
    this[dartx.height] = null;
    this[dartx.pixelUnitToMillimeterX] = null;
    this[dartx.pixelUnitToMillimeterY] = null;
    this[dartx.screenPixelToMillimeterX] = null;
    this[dartx.screenPixelToMillimeterY] = null;
    this[dartx.useCurrentView] = null;
    this[dartx.viewport] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    this[dartx.preserveAspectRatio] = null;
    this[dartx.viewBox] = null;
    this[dartx.zoomAndPan] = null;
    super.created();
  }
  get [dartx.currentScale]() {
    return this.currentScale;
  }
  set [dartx.currentScale](value) {
    this.currentScale = value;
  }
  get [dartx.currentTranslate]() {
    return this.currentTranslate;
  }
  get [dartx.currentView]() {
    return this.currentView;
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.pixelUnitToMillimeterX]() {
    return this.pixelUnitToMillimeterX;
  }
  get [dartx.pixelUnitToMillimeterY]() {
    return this.pixelUnitToMillimeterY;
  }
  get [dartx.screenPixelToMillimeterX]() {
    return this.screenPixelToMillimeterX;
  }
  get [dartx.screenPixelToMillimeterY]() {
    return this.screenPixelToMillimeterY;
  }
  get [dartx.useCurrentView]() {
    return this.useCurrentView;
  }
  get [dartx.viewport]() {
    return this.viewport;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
  [dartx.animationsPaused](...args) {
    return this.animationsPaused.apply(this, args);
  }
  [dartx.checkEnclosure](...args) {
    return this.checkEnclosure.apply(this, args);
  }
  [dartx.checkIntersection](...args) {
    return this.checkIntersection.apply(this, args);
  }
  [dartx.createSvgAngle](...args) {
    return this.createSVGAngle.apply(this, args);
  }
  [dartx.createSvgLength](...args) {
    return this.createSVGLength.apply(this, args);
  }
  [dartx.createSvgMatrix](...args) {
    return this.createSVGMatrix.apply(this, args);
  }
  [dartx.createSvgNumber](...args) {
    return this.createSVGNumber.apply(this, args);
  }
  [dartx.createSvgPoint](...args) {
    return this.createSVGPoint.apply(this, args);
  }
  [dartx.createSvgRect](...args) {
    return this.createSVGRect.apply(this, args);
  }
  [dartx.createSvgTransform](...args) {
    return this.createSVGTransform.apply(this, args);
  }
  [dartx.createSvgTransformFromMatrix](...args) {
    return this.createSVGTransformFromMatrix.apply(this, args);
  }
  [dartx.deselectAll](...args) {
    return this.deselectAll.apply(this, args);
  }
  [dartx.forceRedraw](...args) {
    return this.forceRedraw.apply(this, args);
  }
  [dartx.getCurrentTime](...args) {
    return this.getCurrentTime.apply(this, args);
  }
  [dartx.getElementById](...args) {
    return this.getElementById.apply(this, args);
  }
  [dartx.getEnclosureList](...args) {
    return this.getEnclosureList.apply(this, args);
  }
  [dartx.getIntersectionList](...args) {
    return this.getIntersectionList.apply(this, args);
  }
  [dartx.pauseAnimations](...args) {
    return this.pauseAnimations.apply(this, args);
  }
  [dartx.setCurrentTime](...args) {
    return this.setCurrentTime.apply(this, args);
  }
  [dartx.suspendRedraw](...args) {
    return this.suspendRedraw.apply(this, args);
  }
  [dartx.unpauseAnimations](...args) {
    return this.unpauseAnimations.apply(this, args);
  }
  [dartx.unsuspendRedraw](...args) {
    return this.unsuspendRedraw.apply(this, args);
  }
  [dartx.unsuspendRedrawAll](...args) {
    return this.unsuspendRedrawAll.apply(this, args);
  }
  get [dartx.preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [dartx.viewBox]() {
    return this.viewBox;
  }
  get [dartx.zoomAndPan]() {
    return this.zoomAndPan;
  }
  set [dartx.zoomAndPan](value) {
    this.zoomAndPan = value;
  }
};
dart.defineNamedConstructor(svg.SvgSvgElement, 'created');
svg.SvgSvgElement[dart.implements] = () => [svg.FitToViewBox, svg.ZoomAndPan];
dart.setSignature(svg.SvgSvgElement, {
  constructors: () => ({
    new: dart.definiteFunctionType(svg.SvgSvgElement, []),
    _: dart.definiteFunctionType(svg.SvgSvgElement, []),
    created: dart.definiteFunctionType(svg.SvgSvgElement, [])
  }),
  fields: () => ({
    [dartx.currentScale]: core.num,
    [dartx.currentTranslate]: svg.Point,
    [dartx.currentView]: svg.ViewSpec,
    [dartx.height]: svg.AnimatedLength,
    [dartx.pixelUnitToMillimeterX]: core.double,
    [dartx.pixelUnitToMillimeterY]: core.double,
    [dartx.screenPixelToMillimeterX]: core.double,
    [dartx.screenPixelToMillimeterY]: core.double,
    [dartx.useCurrentView]: core.bool,
    [dartx.viewport]: svg.Rect,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength,
    [dartx.preserveAspectRatio]: svg.AnimatedPreserveAspectRatio,
    [dartx.viewBox]: svg.AnimatedRect,
    [dartx.zoomAndPan]: core.int
  }),
  methods: () => ({
    [dartx.animationsPaused]: dart.definiteFunctionType(core.bool, []),
    [dartx.checkEnclosure]: dart.definiteFunctionType(core.bool, [svg.SvgElement, svg.Rect]),
    [dartx.checkIntersection]: dart.definiteFunctionType(core.bool, [svg.SvgElement, svg.Rect]),
    [dartx.createSvgAngle]: dart.definiteFunctionType(svg.Angle, []),
    [dartx.createSvgLength]: dart.definiteFunctionType(svg.Length, []),
    [dartx.createSvgMatrix]: dart.definiteFunctionType(svg.Matrix, []),
    [dartx.createSvgNumber]: dart.definiteFunctionType(svg.Number, []),
    [dartx.createSvgPoint]: dart.definiteFunctionType(svg.Point, []),
    [dartx.createSvgRect]: dart.definiteFunctionType(svg.Rect, []),
    [dartx.createSvgTransform]: dart.definiteFunctionType(svg.Transform, []),
    [dartx.createSvgTransformFromMatrix]: dart.definiteFunctionType(svg.Transform, [svg.Matrix]),
    [dartx.deselectAll]: dart.definiteFunctionType(dart.void, []),
    [dartx.forceRedraw]: dart.definiteFunctionType(dart.void, []),
    [dartx.getCurrentTime]: dart.definiteFunctionType(core.double, []),
    [dartx.getElementById]: dart.definiteFunctionType(html.Element, [core.String]),
    [dartx.getEnclosureList]: dart.definiteFunctionType(core.List$(html.Node), [svg.Rect, svg.SvgElement]),
    [dartx.getIntersectionList]: dart.definiteFunctionType(core.List$(html.Node), [svg.Rect, svg.SvgElement]),
    [dartx.pauseAnimations]: dart.definiteFunctionType(dart.void, []),
    [dartx.setCurrentTime]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.suspendRedraw]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.unpauseAnimations]: dart.definiteFunctionType(dart.void, []),
    [dartx.unsuspendRedraw]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.unsuspendRedrawAll]: dart.definiteFunctionType(dart.void, [])
  })
});
dart.registerExtension(dart.global.SVGSVGElement, svg.SvgSvgElement);
svg.SwitchElement = class SwitchElement extends svg.GraphicsElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.SwitchElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("switch"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(svg.SwitchElement, 'created');
dart.setSignature(svg.SwitchElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.SwitchElement, []),
    new: dart.definiteFunctionType(svg.SwitchElement, []),
    created: dart.definiteFunctionType(svg.SwitchElement, [])
  })
});
dart.registerExtension(dart.global.SVGSwitchElement, svg.SwitchElement);
dart.defineExtensionNames([
  'preserveAspectRatio',
  'viewBox'
]);
svg.SymbolElement = class SymbolElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.SymbolElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("symbol"));
  }
  created() {
    this[dartx.preserveAspectRatio] = null;
    this[dartx.viewBox] = null;
    super.created();
  }
  get [dartx.preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [dartx.viewBox]() {
    return this.viewBox;
  }
};
dart.defineNamedConstructor(svg.SymbolElement, 'created');
svg.SymbolElement[dart.implements] = () => [svg.FitToViewBox];
dart.setSignature(svg.SymbolElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.SymbolElement, []),
    new: dart.definiteFunctionType(svg.SymbolElement, []),
    created: dart.definiteFunctionType(svg.SymbolElement, [])
  }),
  fields: () => ({
    [dartx.preserveAspectRatio]: svg.AnimatedPreserveAspectRatio,
    [dartx.viewBox]: svg.AnimatedRect
  })
});
dart.registerExtension(dart.global.SVGSymbolElement, svg.SymbolElement);
dart.defineExtensionNames([
  'getCharNumAtPosition',
  'getComputedTextLength',
  'getEndPositionOfChar',
  'getExtentOfChar',
  'getNumberOfChars',
  'getRotationOfChar',
  'getStartPositionOfChar',
  'getSubStringLength',
  'selectSubString',
  'lengthAdjust',
  'textLength'
]);
svg.TextContentElement = class TextContentElement extends svg.GraphicsElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.lengthAdjust] = null;
    this[dartx.textLength] = null;
    super.created();
  }
  get [dartx.lengthAdjust]() {
    return this.lengthAdjust;
  }
  get [dartx.textLength]() {
    return this.textLength;
  }
  [dartx.getCharNumAtPosition](...args) {
    return this.getCharNumAtPosition.apply(this, args);
  }
  [dartx.getComputedTextLength](...args) {
    return this.getComputedTextLength.apply(this, args);
  }
  [dartx.getEndPositionOfChar](...args) {
    return this.getEndPositionOfChar.apply(this, args);
  }
  [dartx.getExtentOfChar](...args) {
    return this.getExtentOfChar.apply(this, args);
  }
  [dartx.getNumberOfChars](...args) {
    return this.getNumberOfChars.apply(this, args);
  }
  [dartx.getRotationOfChar](...args) {
    return this.getRotationOfChar.apply(this, args);
  }
  [dartx.getStartPositionOfChar](...args) {
    return this.getStartPositionOfChar.apply(this, args);
  }
  [dartx.getSubStringLength](...args) {
    return this.getSubStringLength.apply(this, args);
  }
  [dartx.selectSubString](...args) {
    return this.selectSubString.apply(this, args);
  }
};
dart.defineNamedConstructor(svg.TextContentElement, 'created');
dart.setSignature(svg.TextContentElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.TextContentElement, []),
    created: dart.definiteFunctionType(svg.TextContentElement, [])
  }),
  fields: () => ({
    [dartx.lengthAdjust]: svg.AnimatedEnumeration,
    [dartx.textLength]: svg.AnimatedLength
  }),
  methods: () => ({
    [dartx.getCharNumAtPosition]: dart.definiteFunctionType(core.int, [svg.Point]),
    [dartx.getComputedTextLength]: dart.definiteFunctionType(core.double, []),
    [dartx.getEndPositionOfChar]: dart.definiteFunctionType(svg.Point, [core.int]),
    [dartx.getExtentOfChar]: dart.definiteFunctionType(svg.Rect, [core.int]),
    [dartx.getNumberOfChars]: dart.definiteFunctionType(core.int, []),
    [dartx.getRotationOfChar]: dart.definiteFunctionType(core.double, [core.int]),
    [dartx.getStartPositionOfChar]: dart.definiteFunctionType(svg.Point, [core.int]),
    [dartx.getSubStringLength]: dart.definiteFunctionType(core.double, [core.int, core.int]),
    [dartx.selectSubString]: dart.definiteFunctionType(dart.void, [core.int, core.int])
  }),
  sfields: () => ({
    LENGTHADJUST_SPACING: core.int,
    LENGTHADJUST_SPACINGANDGLYPHS: core.int,
    LENGTHADJUST_UNKNOWN: core.int
  })
});
svg.TextContentElement.LENGTHADJUST_SPACING = 1;
svg.TextContentElement.LENGTHADJUST_SPACINGANDGLYPHS = 2;
svg.TextContentElement.LENGTHADJUST_UNKNOWN = 0;
dart.registerExtension(dart.global.SVGTextContentElement, svg.TextContentElement);
dart.defineExtensionNames([
  'dx',
  'dy',
  'rotate',
  'x',
  'y'
]);
svg.TextPositioningElement = class TextPositioningElement extends svg.TextContentElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.dx] = null;
    this[dartx.dy] = null;
    this[dartx.rotate] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    super.created();
  }
  get [dartx.dx]() {
    return this.dx;
  }
  get [dartx.dy]() {
    return this.dy;
  }
  get [dartx.rotate]() {
    return this.rotate;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
};
dart.defineNamedConstructor(svg.TextPositioningElement, 'created');
dart.setSignature(svg.TextPositioningElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.TextPositioningElement, []),
    created: dart.definiteFunctionType(svg.TextPositioningElement, [])
  }),
  fields: () => ({
    [dartx.dx]: svg.AnimatedLengthList,
    [dartx.dy]: svg.AnimatedLengthList,
    [dartx.rotate]: svg.AnimatedNumberList,
    [dartx.x]: svg.AnimatedLengthList,
    [dartx.y]: svg.AnimatedLengthList
  })
});
dart.registerExtension(dart.global.SVGTextPositioningElement, svg.TextPositioningElement);
svg.TSpanElement = class TSpanElement extends svg.TextPositioningElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.TSpanElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("tspan"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(svg.TSpanElement, 'created');
dart.setSignature(svg.TSpanElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.TSpanElement, []),
    new: dart.definiteFunctionType(svg.TSpanElement, []),
    created: dart.definiteFunctionType(svg.TSpanElement, [])
  })
});
dart.registerExtension(dart.global.SVGTSpanElement, svg.TSpanElement);
dart.defineExtensionNames([
  'requiredExtensions',
  'requiredFeatures',
  'systemLanguage'
]);
svg.Tests = class Tests extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get requiredExtensions() {
    return this[requiredExtensions];
  }
  set requiredExtensions(value) {
    super.requiredExtensions = value;
  }
  get requiredFeatures() {
    return this[requiredFeatures];
  }
  set requiredFeatures(value) {
    super.requiredFeatures = value;
  }
  get systemLanguage() {
    return this[systemLanguage];
  }
  set systemLanguage(value) {
    super.systemLanguage = value;
  }
};
const requiredExtensions = Symbol(svg.Tests.name + "." + 'requiredExtensions'.toString());
const requiredFeatures = Symbol(svg.Tests.name + "." + 'requiredFeatures'.toString());
const systemLanguage = Symbol(svg.Tests.name + "." + 'systemLanguage'.toString());
dart.setSignature(svg.Tests, {
  constructors: () => ({_: dart.definiteFunctionType(svg.Tests, [])}),
  fields: () => ({
    requiredExtensions: svg.StringList,
    requiredFeatures: svg.StringList,
    systemLanguage: svg.StringList
  })
});
dart.defineExtensionMembers(svg.Tests, ['requiredExtensions', 'requiredFeatures', 'systemLanguage']);
svg.TextElement = class TextElement extends svg.TextPositioningElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.TextElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("text"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(svg.TextElement, 'created');
dart.setSignature(svg.TextElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.TextElement, []),
    new: dart.definiteFunctionType(svg.TextElement, []),
    created: dart.definiteFunctionType(svg.TextElement, [])
  })
});
dart.registerExtension(dart.global.SVGTextElement, svg.TextElement);
dart.defineExtensionNames([
  'method',
  'spacing',
  'startOffset',
  'href'
]);
svg.TextPathElement = class TextPathElement extends svg.TextContentElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    this[dartx.method] = null;
    this[dartx.spacing] = null;
    this[dartx.startOffset] = null;
    this[dartx.href] = null;
    super.created();
  }
  get [dartx.method]() {
    return this.method;
  }
  get [dartx.spacing]() {
    return this.spacing;
  }
  get [dartx.startOffset]() {
    return this.startOffset;
  }
  get [dartx.href]() {
    return this.href;
  }
};
dart.defineNamedConstructor(svg.TextPathElement, 'created');
svg.TextPathElement[dart.implements] = () => [svg.UriReference];
dart.setSignature(svg.TextPathElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.TextPathElement, []),
    created: dart.definiteFunctionType(svg.TextPathElement, [])
  }),
  fields: () => ({
    [dartx.method]: svg.AnimatedEnumeration,
    [dartx.spacing]: svg.AnimatedEnumeration,
    [dartx.startOffset]: svg.AnimatedLength,
    [dartx.href]: svg.AnimatedString
  }),
  sfields: () => ({
    TEXTPATH_METHODTYPE_ALIGN: core.int,
    TEXTPATH_METHODTYPE_STRETCH: core.int,
    TEXTPATH_METHODTYPE_UNKNOWN: core.int,
    TEXTPATH_SPACINGTYPE_AUTO: core.int,
    TEXTPATH_SPACINGTYPE_EXACT: core.int,
    TEXTPATH_SPACINGTYPE_UNKNOWN: core.int
  })
});
svg.TextPathElement.TEXTPATH_METHODTYPE_ALIGN = 1;
svg.TextPathElement.TEXTPATH_METHODTYPE_STRETCH = 2;
svg.TextPathElement.TEXTPATH_METHODTYPE_UNKNOWN = 0;
svg.TextPathElement.TEXTPATH_SPACINGTYPE_AUTO = 1;
svg.TextPathElement.TEXTPATH_SPACINGTYPE_EXACT = 2;
svg.TextPathElement.TEXTPATH_SPACINGTYPE_UNKNOWN = 0;
dart.registerExtension(dart.global.SVGTextPathElement, svg.TextPathElement);
svg.TitleElement = class TitleElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.TitleElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("title"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(svg.TitleElement, 'created');
dart.setSignature(svg.TitleElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.TitleElement, []),
    new: dart.definiteFunctionType(svg.TitleElement, []),
    created: dart.definiteFunctionType(svg.TitleElement, [])
  })
});
dart.registerExtension(dart.global.SVGTitleElement, svg.TitleElement);
dart.defineExtensionNames([
  'setMatrix',
  'setRotate',
  'setScale',
  'setSkewX',
  'setSkewY',
  'setTranslate',
  'angle',
  'matrix',
  'type'
]);
svg.Transform = class Transform extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.angle]() {
    return this.angle;
  }
  get [dartx.matrix]() {
    return this.matrix;
  }
  get [dartx.type]() {
    return this.type;
  }
  [dartx.setMatrix](...args) {
    return this.setMatrix.apply(this, args);
  }
  [dartx.setRotate](...args) {
    return this.setRotate.apply(this, args);
  }
  [dartx.setScale](...args) {
    return this.setScale.apply(this, args);
  }
  [dartx.setSkewX](...args) {
    return this.setSkewX.apply(this, args);
  }
  [dartx.setSkewY](...args) {
    return this.setSkewY.apply(this, args);
  }
  [dartx.setTranslate](...args) {
    return this.setTranslate.apply(this, args);
  }
};
dart.setSignature(svg.Transform, {
  constructors: () => ({_: dart.definiteFunctionType(svg.Transform, [])}),
  fields: () => ({
    [dartx.angle]: core.double,
    [dartx.matrix]: svg.Matrix,
    [dartx.type]: core.int
  }),
  methods: () => ({
    [dartx.setMatrix]: dart.definiteFunctionType(dart.void, [svg.Matrix]),
    [dartx.setRotate]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num]),
    [dartx.setScale]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [dartx.setSkewX]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.setSkewY]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.setTranslate]: dart.definiteFunctionType(dart.void, [core.num, core.num])
  }),
  sfields: () => ({
    SVG_TRANSFORM_MATRIX: core.int,
    SVG_TRANSFORM_ROTATE: core.int,
    SVG_TRANSFORM_SCALE: core.int,
    SVG_TRANSFORM_SKEWX: core.int,
    SVG_TRANSFORM_SKEWY: core.int,
    SVG_TRANSFORM_TRANSLATE: core.int,
    SVG_TRANSFORM_UNKNOWN: core.int
  })
});
svg.Transform.SVG_TRANSFORM_MATRIX = 1;
svg.Transform.SVG_TRANSFORM_ROTATE = 4;
svg.Transform.SVG_TRANSFORM_SCALE = 3;
svg.Transform.SVG_TRANSFORM_SKEWX = 5;
svg.Transform.SVG_TRANSFORM_SKEWY = 6;
svg.Transform.SVG_TRANSFORM_TRANSLATE = 2;
svg.Transform.SVG_TRANSFORM_UNKNOWN = 0;
dart.registerExtension(dart.global.SVGTransform, svg.Transform);
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'appendItem',
  'clear',
  'consolidate',
  'createSvgTransformFromMatrix',
  'getItem',
  'initialize',
  'insertItemBefore',
  'removeItem',
  'replaceItem',
  'numberOfItems'
]);
svg.TransformList = class TransformList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(svg.Transform), html.ImmutableListMixin$(svg.Transform)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.numberOfItems]() {
    return this.numberOfItems;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[dartx.getItem](index);
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [dartx.appendItem](...args) {
    return this.appendItem.apply(this, args);
  }
  [dartx.clear](...args) {
    return this.clear.apply(this, args);
  }
  [dartx.consolidate](...args) {
    return this.consolidate.apply(this, args);
  }
  [dartx.createSvgTransformFromMatrix](...args) {
    return this.createSVGTransformFromMatrix.apply(this, args);
  }
  [dartx.getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [dartx.initialize](...args) {
    return this.initialize.apply(this, args);
  }
  [dartx.insertItemBefore](...args) {
    return this.insertItemBefore.apply(this, args);
  }
  [dartx.removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [dartx.replaceItem](...args) {
    return this.replaceItem.apply(this, args);
  }
};
svg.TransformList[dart.implements] = () => [ListOfTransform()];
dart.setSignature(svg.TransformList, {
  constructors: () => ({_: dart.definiteFunctionType(svg.TransformList, [])}),
  fields: () => ({[dartx.numberOfItems]: core.int}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(svg.Transform, []),
    [dartx.last]: dart.definiteFunctionType(svg.Transform, []),
    [dartx.single]: dart.definiteFunctionType(svg.Transform, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(svg.Transform, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, svg.Transform]),
    [dartx.elementAt]: dart.definiteFunctionType(svg.Transform, [core.int]),
    [__setter__]: dart.definiteFunctionType(dart.void, [core.int, svg.Transform]),
    [dartx.appendItem]: dart.definiteFunctionType(svg.Transform, [svg.Transform]),
    [dartx.consolidate]: dart.definiteFunctionType(svg.Transform, []),
    [dartx.createSvgTransformFromMatrix]: dart.definiteFunctionType(svg.Transform, [svg.Matrix]),
    [dartx.getItem]: dart.definiteFunctionType(svg.Transform, [core.int]),
    [dartx.initialize]: dart.definiteFunctionType(svg.Transform, [svg.Transform]),
    [dartx.insertItemBefore]: dart.definiteFunctionType(svg.Transform, [svg.Transform, core.int]),
    [dartx.removeItem]: dart.definiteFunctionType(svg.Transform, [core.int]),
    [dartx.replaceItem]: dart.definiteFunctionType(svg.Transform, [svg.Transform, core.int])
  })
});
dart.registerExtension(dart.global.SVGTransformList, svg.TransformList);
svg.UnitTypes = class UnitTypes extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(svg.UnitTypes, {
  constructors: () => ({_: dart.definiteFunctionType(svg.UnitTypes, [])}),
  sfields: () => ({
    SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: core.int,
    SVG_UNIT_TYPE_UNKNOWN: core.int,
    SVG_UNIT_TYPE_USERSPACEONUSE: core.int
  })
});
svg.UnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2;
svg.UnitTypes.SVG_UNIT_TYPE_UNKNOWN = 0;
svg.UnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE = 1;
dart.registerExtension(dart.global.SVGUnitTypes, svg.UnitTypes);
dart.defineExtensionNames([
  'href'
]);
svg.UriReference = class UriReference extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get href() {
    return this[href];
  }
  set href(value) {
    super.href = value;
  }
};
const href = Symbol(svg.UriReference.name + "." + 'href'.toString());
dart.setSignature(svg.UriReference, {
  constructors: () => ({_: dart.definiteFunctionType(svg.UriReference, [])}),
  fields: () => ({href: svg.AnimatedString})
});
dart.defineExtensionMembers(svg.UriReference, ['href']);
dart.defineExtensionNames([
  'height',
  'width',
  'x',
  'y',
  'href'
]);
svg.UseElement = class UseElement extends svg.GraphicsElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.UseElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("use"));
  }
  created() {
    this[dartx.height] = null;
    this[dartx.width] = null;
    this[dartx.x] = null;
    this[dartx.y] = null;
    this[dartx.href] = null;
    super.created();
  }
  get [dartx.height]() {
    return this.height;
  }
  get [dartx.width]() {
    return this.width;
  }
  get [dartx.x]() {
    return this.x;
  }
  get [dartx.y]() {
    return this.y;
  }
  get [dartx.href]() {
    return this.href;
  }
};
dart.defineNamedConstructor(svg.UseElement, 'created');
svg.UseElement[dart.implements] = () => [svg.UriReference];
dart.setSignature(svg.UseElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.UseElement, []),
    new: dart.definiteFunctionType(svg.UseElement, []),
    created: dart.definiteFunctionType(svg.UseElement, [])
  }),
  fields: () => ({
    [dartx.height]: svg.AnimatedLength,
    [dartx.width]: svg.AnimatedLength,
    [dartx.x]: svg.AnimatedLength,
    [dartx.y]: svg.AnimatedLength,
    [dartx.href]: svg.AnimatedString
  })
});
dart.registerExtension(dart.global.SVGUseElement, svg.UseElement);
dart.defineExtensionNames([
  'viewTarget',
  'preserveAspectRatio',
  'viewBox',
  'zoomAndPan'
]);
svg.ViewElement = class ViewElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg.ViewElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("view"));
  }
  created() {
    this[dartx.viewTarget] = null;
    this[dartx.preserveAspectRatio] = null;
    this[dartx.viewBox] = null;
    this[dartx.zoomAndPan] = null;
    super.created();
  }
  get [dartx.viewTarget]() {
    return this.viewTarget;
  }
  get [dartx.preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [dartx.viewBox]() {
    return this.viewBox;
  }
  get [dartx.zoomAndPan]() {
    return this.zoomAndPan;
  }
  set [dartx.zoomAndPan](value) {
    this.zoomAndPan = value;
  }
};
dart.defineNamedConstructor(svg.ViewElement, 'created');
svg.ViewElement[dart.implements] = () => [svg.FitToViewBox, svg.ZoomAndPan];
dart.setSignature(svg.ViewElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg.ViewElement, []),
    new: dart.definiteFunctionType(svg.ViewElement, []),
    created: dart.definiteFunctionType(svg.ViewElement, [])
  }),
  fields: () => ({
    [dartx.viewTarget]: svg.StringList,
    [dartx.preserveAspectRatio]: svg.AnimatedPreserveAspectRatio,
    [dartx.viewBox]: svg.AnimatedRect,
    [dartx.zoomAndPan]: core.int
  })
});
dart.registerExtension(dart.global.SVGViewElement, svg.ViewElement);
dart.defineExtensionNames([
  'preserveAspectRatioString',
  'transform',
  'transformString',
  'viewBoxString',
  'viewTarget',
  'viewTargetString',
  'preserveAspectRatio',
  'viewBox',
  'zoomAndPan'
]);
svg.ViewSpec = class ViewSpec extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.preserveAspectRatioString]() {
    return this.preserveAspectRatioString;
  }
  get [dartx.transform]() {
    return this.transform;
  }
  get [dartx.transformString]() {
    return this.transformString;
  }
  get [dartx.viewBoxString]() {
    return this.viewBoxString;
  }
  get [dartx.viewTarget]() {
    return this.viewTarget;
  }
  get [dartx.viewTargetString]() {
    return this.viewTargetString;
  }
  get [dartx.preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [dartx.viewBox]() {
    return this.viewBox;
  }
  get [dartx.zoomAndPan]() {
    return this.zoomAndPan;
  }
  set [dartx.zoomAndPan](value) {
    this.zoomAndPan = value;
  }
};
svg.ViewSpec[dart.implements] = () => [svg.FitToViewBox, svg.ZoomAndPan];
dart.setSignature(svg.ViewSpec, {
  constructors: () => ({_: dart.definiteFunctionType(svg.ViewSpec, [])}),
  fields: () => ({
    [dartx.preserveAspectRatioString]: core.String,
    [dartx.transform]: svg.TransformList,
    [dartx.transformString]: core.String,
    [dartx.viewBoxString]: core.String,
    [dartx.viewTarget]: svg.SvgElement,
    [dartx.viewTargetString]: core.String,
    [dartx.preserveAspectRatio]: svg.AnimatedPreserveAspectRatio,
    [dartx.viewBox]: svg.AnimatedRect,
    [dartx.zoomAndPan]: core.int
  })
});
dart.registerExtension(dart.global.SVGViewSpec, svg.ViewSpec);
dart.defineExtensionNames([
  'zoomAndPan'
]);
svg.ZoomAndPan = class ZoomAndPan extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get zoomAndPan() {
    return this[zoomAndPan];
  }
  set zoomAndPan(value) {
    this[zoomAndPan] = value;
  }
};
const zoomAndPan = Symbol(svg.ZoomAndPan.name + "." + 'zoomAndPan'.toString());
dart.setSignature(svg.ZoomAndPan, {
  constructors: () => ({_: dart.definiteFunctionType(svg.ZoomAndPan, [])}),
  fields: () => ({zoomAndPan: core.int}),
  sfields: () => ({
    SVG_ZOOMANDPAN_DISABLE: core.int,
    SVG_ZOOMANDPAN_MAGNIFY: core.int,
    SVG_ZOOMANDPAN_UNKNOWN: core.int
  })
});
dart.defineExtensionMembers(svg.ZoomAndPan, ['zoomAndPan', 'zoomAndPan']);
svg.ZoomAndPan.SVG_ZOOMANDPAN_DISABLE = 1;
svg.ZoomAndPan.SVG_ZOOMANDPAN_MAGNIFY = 2;
svg.ZoomAndPan.SVG_ZOOMANDPAN_UNKNOWN = 0;
dart.defineExtensionNames([
  'newScale',
  'newTranslate',
  'previousScale',
  'previousTranslate',
  'zoomRectScreen'
]);
svg.ZoomEvent = class ZoomEvent extends html.UIEvent {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.newScale]() {
    return this.newScale;
  }
  get [dartx.newTranslate]() {
    return this.newTranslate;
  }
  get [dartx.previousScale]() {
    return this.previousScale;
  }
  get [dartx.previousTranslate]() {
    return this.previousTranslate;
  }
  get [dartx.zoomRectScreen]() {
    return this.zoomRectScreen;
  }
};
dart.setSignature(svg.ZoomEvent, {
  constructors: () => ({_: dart.definiteFunctionType(svg.ZoomEvent, [])}),
  fields: () => ({
    [dartx.newScale]: core.double,
    [dartx.newTranslate]: svg.Point,
    [dartx.previousScale]: core.double,
    [dartx.previousTranslate]: svg.Point,
    [dartx.zoomRectScreen]: svg.Rect
  })
});
dart.registerExtension(dart.global.SVGZoomEvent, svg.ZoomEvent);
svg._SVGCursorElement = class _SVGCursorElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg._SVGCursorElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("cursor"));
  }
  created() {
    super.created();
  }
  static get supported() {
    return dart.test(svg.SvgElement.isTagSupported('cursor')) && svg._SVGCursorElement.is(svg.SvgElement.tag('cursor'));
  }
};
dart.defineNamedConstructor(svg._SVGCursorElement, 'created');
svg._SVGCursorElement[dart.implements] = () => [svg.UriReference, svg.Tests];
dart.setSignature(svg._SVGCursorElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg._SVGCursorElement, []),
    new: dart.definiteFunctionType(svg._SVGCursorElement, []),
    created: dart.definiteFunctionType(svg._SVGCursorElement, [])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.SVGCursorElement, svg._SVGCursorElement);
svg._SVGFEDropShadowElement = class _SVGFEDropShadowElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(svg._SVGFEDropShadowElement, 'created');
svg._SVGFEDropShadowElement[dart.implements] = () => [svg.FilterPrimitiveStandardAttributes];
dart.setSignature(svg._SVGFEDropShadowElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg._SVGFEDropShadowElement, []),
    created: dart.definiteFunctionType(svg._SVGFEDropShadowElement, [])
  })
});
dart.registerExtension(dart.global.SVGFEDropShadowElement, svg._SVGFEDropShadowElement);
svg._SVGMPathElement = class _SVGMPathElement extends svg.SvgElement {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new() {
    return svg._SVGMPathElement._check(svg._SvgElementFactoryProvider.createSvgElement_tag("mpath"));
  }
  created() {
    super.created();
  }
};
dart.defineNamedConstructor(svg._SVGMPathElement, 'created');
svg._SVGMPathElement[dart.implements] = () => [svg.UriReference];
dart.setSignature(svg._SVGMPathElement, {
  constructors: () => ({
    _: dart.definiteFunctionType(svg._SVGMPathElement, []),
    new: dart.definiteFunctionType(svg._SVGMPathElement, []),
    created: dart.definiteFunctionType(svg._SVGMPathElement, [])
  })
});
dart.registerExtension(dart.global.SVGMPathElement, svg._SVGMPathElement);
const _connect = Symbol('_connect');
dart.defineExtensionNames([
  'disconnect',
  'connectNode',
  'connectParam',
  'channelCount',
  'channelCountMode',
  'channelInterpretation',
  'context',
  'numberOfInputs',
  'numberOfOutputs'
]);
web_audio.AudioNode = class AudioNode extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.channelCount]() {
    return this.channelCount;
  }
  set [dartx.channelCount](value) {
    this.channelCount = value;
  }
  get [dartx.channelCountMode]() {
    return this.channelCountMode;
  }
  set [dartx.channelCountMode](value) {
    this.channelCountMode = value;
  }
  get [dartx.channelInterpretation]() {
    return this.channelInterpretation;
  }
  set [dartx.channelInterpretation](value) {
    this.channelInterpretation = value;
  }
  get [dartx.context]() {
    return this.context;
  }
  get [dartx.numberOfInputs]() {
    return this.numberOfInputs;
  }
  get [dartx.numberOfOutputs]() {
    return this.numberOfOutputs;
  }
  [_connect](...args) {
    return this.connect.apply(this, args);
  }
  [dartx.disconnect](...args) {
    return this.disconnect.apply(this, args);
  }
  [dartx.connectNode](destination, output, input) {
    if (output === void 0) output = 0;
    if (input === void 0) input = 0;
    return this[_connect](destination, output, input);
  }
  [dartx.connectParam](destination, output) {
    if (output === void 0) output = 0;
    return this[_connect](destination, output);
  }
};
dart.setSignature(web_audio.AudioNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.AudioNode, [])}),
  fields: () => ({
    [dartx.channelCount]: core.int,
    [dartx.channelCountMode]: core.String,
    [dartx.channelInterpretation]: core.String,
    [dartx.context]: web_audio.AudioContext,
    [dartx.numberOfInputs]: core.int,
    [dartx.numberOfOutputs]: core.int
  }),
  methods: () => ({
    [_connect]: dart.definiteFunctionType(dart.void, [dart.dynamic, core.int], [core.int]),
    [dartx.disconnect]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.connectNode]: dart.definiteFunctionType(dart.void, [web_audio.AudioNode], [core.int, core.int]),
    [dartx.connectParam]: dart.definiteFunctionType(dart.void, [web_audio.AudioParam], [core.int])
  })
});
dart.registerExtension(dart.global.AudioNode, web_audio.AudioNode);
dart.defineExtensionNames([
  'getByteFrequencyData',
  'getByteTimeDomainData',
  'getFloatFrequencyData',
  'getFloatTimeDomainData',
  'fftSize',
  'frequencyBinCount',
  'maxDecibels',
  'minDecibels',
  'smoothingTimeConstant'
]);
web_audio.AnalyserNode = class AnalyserNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.fftSize]() {
    return this.fftSize;
  }
  set [dartx.fftSize](value) {
    this.fftSize = value;
  }
  get [dartx.frequencyBinCount]() {
    return this.frequencyBinCount;
  }
  get [dartx.maxDecibels]() {
    return this.maxDecibels;
  }
  set [dartx.maxDecibels](value) {
    this.maxDecibels = value;
  }
  get [dartx.minDecibels]() {
    return this.minDecibels;
  }
  set [dartx.minDecibels](value) {
    this.minDecibels = value;
  }
  get [dartx.smoothingTimeConstant]() {
    return this.smoothingTimeConstant;
  }
  set [dartx.smoothingTimeConstant](value) {
    this.smoothingTimeConstant = value;
  }
  [dartx.getByteFrequencyData](...args) {
    return this.getByteFrequencyData.apply(this, args);
  }
  [dartx.getByteTimeDomainData](...args) {
    return this.getByteTimeDomainData.apply(this, args);
  }
  [dartx.getFloatFrequencyData](...args) {
    return this.getFloatFrequencyData.apply(this, args);
  }
  [dartx.getFloatTimeDomainData](...args) {
    return this.getFloatTimeDomainData.apply(this, args);
  }
};
dart.setSignature(web_audio.AnalyserNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.AnalyserNode, [])}),
  fields: () => ({
    [dartx.fftSize]: core.int,
    [dartx.frequencyBinCount]: core.int,
    [dartx.maxDecibels]: core.num,
    [dartx.minDecibels]: core.num,
    [dartx.smoothingTimeConstant]: core.num
  }),
  methods: () => ({
    [dartx.getByteFrequencyData]: dart.definiteFunctionType(dart.void, [typed_data.Uint8List]),
    [dartx.getByteTimeDomainData]: dart.definiteFunctionType(dart.void, [typed_data.Uint8List]),
    [dartx.getFloatFrequencyData]: dart.definiteFunctionType(dart.void, [typed_data.Float32List]),
    [dartx.getFloatTimeDomainData]: dart.definiteFunctionType(dart.void, [typed_data.Float32List])
  })
});
dart.registerExtension(dart.global.AnalyserNode, web_audio.AnalyserNode);
dart.registerExtension(dart.global.RealtimeAnalyserNode, web_audio.AnalyserNode);
dart.defineExtensionNames([
  'getChannelData',
  'duration',
  'length',
  'numberOfChannels',
  'sampleRate'
]);
web_audio.AudioBuffer = class AudioBuffer extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.duration]() {
    return this.duration;
  }
  get [dartx.length]() {
    return this.length;
  }
  get [dartx.numberOfChannels]() {
    return this.numberOfChannels;
  }
  get [dartx.sampleRate]() {
    return this.sampleRate;
  }
  [dartx.getChannelData](...args) {
    return this.getChannelData.apply(this, args);
  }
};
dart.setSignature(web_audio.AudioBuffer, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.AudioBuffer, [])}),
  fields: () => ({
    [dartx.duration]: core.double,
    [dartx.length]: core.int,
    [dartx.numberOfChannels]: core.int,
    [dartx.sampleRate]: core.double
  }),
  methods: () => ({[dartx.getChannelData]: dart.definiteFunctionType(typed_data.Float32List, [core.int])})
});
dart.registerExtension(dart.global.AudioBuffer, web_audio.AudioBuffer);
web_audio.AudioBufferCallback = dart.typedef('AudioBufferCallback', () => dart.functionType(dart.void, [web_audio.AudioBuffer]));
web_audio.AudioSourceNode = class AudioSourceNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_audio.AudioSourceNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.AudioSourceNode, [])})
});
dart.registerExtension(dart.global.AudioSourceNode, web_audio.AudioSourceNode);
dart.defineExtensionNames([
  'start',
  'stop',
  'onEnded',
  'buffer',
  'loop',
  'loopEnd',
  'loopStart',
  'playbackRate'
]);
web_audio.AudioBufferSourceNode = class AudioBufferSourceNode extends web_audio.AudioSourceNode {
  [dartx.start](when, grainOffset, grainDuration) {
    if (grainOffset === void 0) grainOffset = null;
    if (grainDuration === void 0) grainDuration = null;
    if (!!this.start) {
      if (grainDuration != null) {
        this.start(when, grainOffset, grainDuration);
      } else if (grainOffset != null) {
        this.start(when, grainOffset);
      } else {
        this.start(when);
      }
    } else {
      if (grainDuration != null) {
        this.noteOn(when, grainOffset, grainDuration);
      } else if (grainOffset != null) {
        this.noteOn(when, grainOffset);
      } else {
        this.noteOn(when);
      }
    }
  }
  [dartx.stop](when) {
    if (!!this.stop) {
      this.stop(when);
    } else {
      this.noteOff(when);
    }
  }
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.buffer]() {
    return this.buffer;
  }
  set [dartx.buffer](value) {
    this.buffer = value;
  }
  get [dartx.loop]() {
    return this.loop;
  }
  set [dartx.loop](value) {
    this.loop = value;
  }
  get [dartx.loopEnd]() {
    return this.loopEnd;
  }
  set [dartx.loopEnd](value) {
    this.loopEnd = value;
  }
  get [dartx.loopStart]() {
    return this.loopStart;
  }
  set [dartx.loopStart](value) {
    this.loopStart = value;
  }
  get [dartx.playbackRate]() {
    return this.playbackRate;
  }
  get [dartx.onEnded]() {
    return web_audio.AudioBufferSourceNode.endedEvent.forTarget(this);
  }
};
dart.setSignature(web_audio.AudioBufferSourceNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.AudioBufferSourceNode, [])}),
  fields: () => ({
    [dartx.buffer]: web_audio.AudioBuffer,
    [dartx.loop]: core.bool,
    [dartx.loopEnd]: core.num,
    [dartx.loopStart]: core.num,
    [dartx.playbackRate]: web_audio.AudioParam
  }),
  getters: () => ({[dartx.onEnded]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  methods: () => ({
    [dartx.start]: dart.definiteFunctionType(dart.void, [core.num], [core.num, core.num]),
    [dartx.stop]: dart.definiteFunctionType(dart.void, [core.num])
  }),
  sfields: () => ({endedEvent: EventStreamProviderOfEvent()})
});
web_audio.AudioBufferSourceNode.endedEvent = dart.const(new (EventStreamProviderOfEvent())('ended'));
dart.registerExtension(dart.global.AudioBufferSourceNode, web_audio.AudioBufferSourceNode);
const _decodeAudioData = Symbol('_decodeAudioData');
dart.defineExtensionNames([
  'createAnalyser',
  'createBiquadFilter',
  'createBuffer',
  'createBufferSource',
  'createChannelMerger',
  'createChannelSplitter',
  'createConvolver',
  'createDelay',
  'createDynamicsCompressor',
  'createMediaElementSource',
  'createMediaStreamDestination',
  'createMediaStreamSource',
  'createOscillator',
  'createPanner',
  'createPeriodicWave',
  'createWaveShaper',
  'startRendering',
  'onComplete',
  'createGain',
  'createScriptProcessor',
  'decodeAudioData',
  'currentTime',
  'destination',
  'listener',
  'sampleRate'
]);
web_audio.AudioContext = class AudioContext extends html.EventTarget {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static get supported() {
    return !!(window.AudioContext || window.webkitAudioContext);
  }
  get [dartx.currentTime]() {
    return this.currentTime;
  }
  get [dartx.destination]() {
    return this.destination;
  }
  get [dartx.listener]() {
    return this.listener;
  }
  get [dartx.sampleRate]() {
    return this.sampleRate;
  }
  [dartx.createAnalyser](...args) {
    return this.createAnalyser.apply(this, args);
  }
  [dartx.createBiquadFilter](...args) {
    return this.createBiquadFilter.apply(this, args);
  }
  [dartx.createBuffer](...args) {
    return this.createBuffer.apply(this, args);
  }
  [dartx.createBufferSource](...args) {
    return this.createBufferSource.apply(this, args);
  }
  [dartx.createChannelMerger](...args) {
    return this.createChannelMerger.apply(this, args);
  }
  [dartx.createChannelSplitter](...args) {
    return this.createChannelSplitter.apply(this, args);
  }
  [dartx.createConvolver](...args) {
    return this.createConvolver.apply(this, args);
  }
  [dartx.createDelay](...args) {
    return this.createDelay.apply(this, args);
  }
  [dartx.createDynamicsCompressor](...args) {
    return this.createDynamicsCompressor.apply(this, args);
  }
  [dartx.createMediaElementSource](...args) {
    return this.createMediaElementSource.apply(this, args);
  }
  [dartx.createMediaStreamDestination](...args) {
    return this.createMediaStreamDestination.apply(this, args);
  }
  [dartx.createMediaStreamSource](...args) {
    return this.createMediaStreamSource.apply(this, args);
  }
  [dartx.createOscillator](...args) {
    return this.createOscillator.apply(this, args);
  }
  [dartx.createPanner](...args) {
    return this.createPanner.apply(this, args);
  }
  [dartx.createPeriodicWave](...args) {
    return this.createPeriodicWave.apply(this, args);
  }
  [dartx.createWaveShaper](...args) {
    return this.createWaveShaper.apply(this, args);
  }
  [_decodeAudioData](...args) {
    return this.decodeAudioData.apply(this, args);
  }
  [dartx.startRendering](...args) {
    return this.startRendering.apply(this, args);
  }
  get [dartx.onComplete]() {
    return web_audio.AudioContext.completeEvent.forTarget(this);
  }
  static new() {
    return new (window.AudioContext || window.webkitAudioContext)();
  }
  [dartx.createGain]() {
    if (this.createGain !== undefined) {
      return this.createGain();
    } else {
      return this.createGainNode();
    }
  }
  [dartx.createScriptProcessor](bufferSize, numberOfInputChannels, numberOfOutputChannels) {
    if (numberOfInputChannels === void 0) numberOfInputChannels = null;
    if (numberOfOutputChannels === void 0) numberOfOutputChannels = null;
    let func = this.createScriptProcessor || this.createJavaScriptNode;
    if (numberOfOutputChannels != null) {
      return func.call(this, bufferSize, numberOfInputChannels, numberOfOutputChannels);
    } else if (numberOfInputChannels != null) {
      return func.call(this, bufferSize, numberOfInputChannels);
    } else {
      return func.call(this, bufferSize);
    }
  }
  [dartx.decodeAudioData](audioData) {
    let completer = CompleterOfAudioBuffer().new();
    this[_decodeAudioData](audioData, dart.fn(value => {
      completer.complete(value);
    }, AudioBufferTovoid()), dart.fn(error => {
      if (error == null) {
        completer.completeError('');
      } else {
        completer.completeError(error);
      }
    }, AudioBufferTovoid()));
    return completer.future;
  }
};
dart.setSignature(web_audio.AudioContext, {
  constructors: () => ({
    _: dart.definiteFunctionType(web_audio.AudioContext, []),
    new: dart.definiteFunctionType(web_audio.AudioContext, [])
  }),
  fields: () => ({
    [dartx.currentTime]: core.double,
    [dartx.destination]: web_audio.AudioDestinationNode,
    [dartx.listener]: web_audio.AudioListener,
    [dartx.sampleRate]: core.double
  }),
  getters: () => ({[dartx.onComplete]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  methods: () => ({
    [dartx.createAnalyser]: dart.definiteFunctionType(web_audio.AnalyserNode, []),
    [dartx.createBiquadFilter]: dart.definiteFunctionType(web_audio.BiquadFilterNode, []),
    [dartx.createBuffer]: dart.definiteFunctionType(web_audio.AudioBuffer, [core.int, core.int, core.num]),
    [dartx.createBufferSource]: dart.definiteFunctionType(web_audio.AudioBufferSourceNode, []),
    [dartx.createChannelMerger]: dart.definiteFunctionType(web_audio.ChannelMergerNode, [], [core.int]),
    [dartx.createChannelSplitter]: dart.definiteFunctionType(web_audio.ChannelSplitterNode, [], [core.int]),
    [dartx.createConvolver]: dart.definiteFunctionType(web_audio.ConvolverNode, []),
    [dartx.createDelay]: dart.definiteFunctionType(web_audio.DelayNode, [], [core.num]),
    [dartx.createDynamicsCompressor]: dart.definiteFunctionType(web_audio.DynamicsCompressorNode, []),
    [dartx.createMediaElementSource]: dart.definiteFunctionType(web_audio.MediaElementAudioSourceNode, [html.MediaElement]),
    [dartx.createMediaStreamDestination]: dart.definiteFunctionType(web_audio.MediaStreamAudioDestinationNode, []),
    [dartx.createMediaStreamSource]: dart.definiteFunctionType(web_audio.MediaStreamAudioSourceNode, [html.MediaStream]),
    [dartx.createOscillator]: dart.definiteFunctionType(web_audio.OscillatorNode, []),
    [dartx.createPanner]: dart.definiteFunctionType(web_audio.PannerNode, []),
    [dartx.createPeriodicWave]: dart.definiteFunctionType(web_audio.PeriodicWave, [typed_data.Float32List, typed_data.Float32List]),
    [dartx.createWaveShaper]: dart.definiteFunctionType(web_audio.WaveShaperNode, []),
    [_decodeAudioData]: dart.definiteFunctionType(dart.void, [typed_data.ByteBuffer, web_audio.AudioBufferCallback], [web_audio.AudioBufferCallback]),
    [dartx.startRendering]: dart.definiteFunctionType(dart.void, []),
    [dartx.createGain]: dart.definiteFunctionType(web_audio.GainNode, []),
    [dartx.createScriptProcessor]: dart.definiteFunctionType(web_audio.ScriptProcessorNode, [core.int], [core.int, core.int]),
    [dartx.decodeAudioData]: dart.definiteFunctionType(async.Future$(web_audio.AudioBuffer), [typed_data.ByteBuffer])
  }),
  sfields: () => ({completeEvent: EventStreamProviderOfEvent()}),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
web_audio.AudioContext.completeEvent = dart.const(new (EventStreamProviderOfEvent())('complete'));
dart.registerExtension(dart.global.AudioContext, web_audio.AudioContext);
dart.registerExtension(dart.global.webkitAudioContext, web_audio.AudioContext);
dart.defineExtensionNames([
  'maxChannelCount'
]);
web_audio.AudioDestinationNode = class AudioDestinationNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.maxChannelCount]() {
    return this.maxChannelCount;
  }
};
dart.setSignature(web_audio.AudioDestinationNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.AudioDestinationNode, [])}),
  fields: () => ({[dartx.maxChannelCount]: core.int})
});
dart.registerExtension(dart.global.AudioDestinationNode, web_audio.AudioDestinationNode);
dart.defineExtensionNames([
  'setOrientation',
  'setPosition',
  'setVelocity',
  'dopplerFactor',
  'speedOfSound'
]);
web_audio.AudioListener = class AudioListener extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.dopplerFactor]() {
    return this.dopplerFactor;
  }
  set [dartx.dopplerFactor](value) {
    this.dopplerFactor = value;
  }
  get [dartx.speedOfSound]() {
    return this.speedOfSound;
  }
  set [dartx.speedOfSound](value) {
    this.speedOfSound = value;
  }
  [dartx.setOrientation](...args) {
    return this.setOrientation.apply(this, args);
  }
  [dartx.setPosition](...args) {
    return this.setPosition.apply(this, args);
  }
  [dartx.setVelocity](...args) {
    return this.setVelocity.apply(this, args);
  }
};
dart.setSignature(web_audio.AudioListener, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.AudioListener, [])}),
  fields: () => ({
    [dartx.dopplerFactor]: core.num,
    [dartx.speedOfSound]: core.num
  }),
  methods: () => ({
    [dartx.setOrientation]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [dartx.setPosition]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num]),
    [dartx.setVelocity]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num])
  })
});
dart.registerExtension(dart.global.AudioListener, web_audio.AudioListener);
dart.defineExtensionNames([
  'cancelScheduledValues',
  'exponentialRampToValueAtTime',
  'linearRampToValueAtTime',
  'setTargetAtTime',
  'setValueAtTime',
  'setValueCurveAtTime',
  'defaultValue',
  'value'
]);
web_audio.AudioParam = class AudioParam extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.defaultValue]() {
    return this.defaultValue;
  }
  get [dartx.value]() {
    return this.value;
  }
  set [dartx.value](value) {
    this.value = value;
  }
  [dartx.cancelScheduledValues](...args) {
    return this.cancelScheduledValues.apply(this, args);
  }
  [dartx.exponentialRampToValueAtTime](...args) {
    return this.exponentialRampToValueAtTime.apply(this, args);
  }
  [dartx.linearRampToValueAtTime](...args) {
    return this.linearRampToValueAtTime.apply(this, args);
  }
  [dartx.setTargetAtTime](...args) {
    return this.setTargetAtTime.apply(this, args);
  }
  [dartx.setValueAtTime](...args) {
    return this.setValueAtTime.apply(this, args);
  }
  [dartx.setValueCurveAtTime](...args) {
    return this.setValueCurveAtTime.apply(this, args);
  }
};
dart.setSignature(web_audio.AudioParam, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.AudioParam, [])}),
  fields: () => ({
    [dartx.defaultValue]: core.double,
    [dartx.value]: core.num
  }),
  methods: () => ({
    [dartx.cancelScheduledValues]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.exponentialRampToValueAtTime]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [dartx.linearRampToValueAtTime]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [dartx.setTargetAtTime]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num]),
    [dartx.setValueAtTime]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [dartx.setValueCurveAtTime]: dart.definiteFunctionType(dart.void, [typed_data.Float32List, core.num, core.num])
  })
});
dart.registerExtension(dart.global.AudioParam, web_audio.AudioParam);
dart.defineExtensionNames([
  'inputBuffer',
  'outputBuffer',
  'playbackTime'
]);
web_audio.AudioProcessingEvent = class AudioProcessingEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.inputBuffer]() {
    return this.inputBuffer;
  }
  get [dartx.outputBuffer]() {
    return this.outputBuffer;
  }
  get [dartx.playbackTime]() {
    return this.playbackTime;
  }
};
dart.setSignature(web_audio.AudioProcessingEvent, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.AudioProcessingEvent, [])}),
  fields: () => ({
    [dartx.inputBuffer]: web_audio.AudioBuffer,
    [dartx.outputBuffer]: web_audio.AudioBuffer,
    [dartx.playbackTime]: core.double
  })
});
dart.registerExtension(dart.global.AudioProcessingEvent, web_audio.AudioProcessingEvent);
dart.defineExtensionNames([
  'getFrequencyResponse',
  'Q',
  'detune',
  'frequency',
  'gain',
  'type'
]);
web_audio.BiquadFilterNode = class BiquadFilterNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.Q]() {
    return this.Q;
  }
  get [dartx.detune]() {
    return this.detune;
  }
  get [dartx.frequency]() {
    return this.frequency;
  }
  get [dartx.gain]() {
    return this.gain;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
  [dartx.getFrequencyResponse](...args) {
    return this.getFrequencyResponse.apply(this, args);
  }
};
dart.setSignature(web_audio.BiquadFilterNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.BiquadFilterNode, [])}),
  fields: () => ({
    [dartx.Q]: web_audio.AudioParam,
    [dartx.detune]: web_audio.AudioParam,
    [dartx.frequency]: web_audio.AudioParam,
    [dartx.gain]: web_audio.AudioParam,
    [dartx.type]: core.String
  }),
  methods: () => ({[dartx.getFrequencyResponse]: dart.definiteFunctionType(dart.void, [typed_data.Float32List, typed_data.Float32List, typed_data.Float32List])})
});
dart.registerExtension(dart.global.BiquadFilterNode, web_audio.BiquadFilterNode);
web_audio.ChannelMergerNode = class ChannelMergerNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_audio.ChannelMergerNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.ChannelMergerNode, [])})
});
dart.registerExtension(dart.global.ChannelMergerNode, web_audio.ChannelMergerNode);
dart.registerExtension(dart.global.AudioChannelMerger, web_audio.ChannelMergerNode);
web_audio.ChannelSplitterNode = class ChannelSplitterNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_audio.ChannelSplitterNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.ChannelSplitterNode, [])})
});
dart.registerExtension(dart.global.ChannelSplitterNode, web_audio.ChannelSplitterNode);
dart.registerExtension(dart.global.AudioChannelSplitter, web_audio.ChannelSplitterNode);
dart.defineExtensionNames([
  'buffer',
  'normalize'
]);
web_audio.ConvolverNode = class ConvolverNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.buffer]() {
    return this.buffer;
  }
  set [dartx.buffer](value) {
    this.buffer = value;
  }
  get [dartx.normalize]() {
    return this.normalize;
  }
  set [dartx.normalize](value) {
    this.normalize = value;
  }
};
dart.setSignature(web_audio.ConvolverNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.ConvolverNode, [])}),
  fields: () => ({
    [dartx.buffer]: web_audio.AudioBuffer,
    [dartx.normalize]: core.bool
  })
});
dart.registerExtension(dart.global.ConvolverNode, web_audio.ConvolverNode);
dart.defineExtensionNames([
  'delayTime'
]);
web_audio.DelayNode = class DelayNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.delayTime]() {
    return this.delayTime;
  }
};
dart.setSignature(web_audio.DelayNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.DelayNode, [])}),
  fields: () => ({[dartx.delayTime]: web_audio.AudioParam})
});
dart.registerExtension(dart.global.DelayNode, web_audio.DelayNode);
dart.defineExtensionNames([
  'attack',
  'knee',
  'ratio',
  'reduction',
  'release',
  'threshold'
]);
web_audio.DynamicsCompressorNode = class DynamicsCompressorNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.attack]() {
    return this.attack;
  }
  get [dartx.knee]() {
    return this.knee;
  }
  get [dartx.ratio]() {
    return this.ratio;
  }
  get [dartx.reduction]() {
    return this.reduction;
  }
  get [dartx.release]() {
    return this.release;
  }
  get [dartx.threshold]() {
    return this.threshold;
  }
};
dart.setSignature(web_audio.DynamicsCompressorNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.DynamicsCompressorNode, [])}),
  fields: () => ({
    [dartx.attack]: web_audio.AudioParam,
    [dartx.knee]: web_audio.AudioParam,
    [dartx.ratio]: web_audio.AudioParam,
    [dartx.reduction]: web_audio.AudioParam,
    [dartx.release]: web_audio.AudioParam,
    [dartx.threshold]: web_audio.AudioParam
  })
});
dart.registerExtension(dart.global.DynamicsCompressorNode, web_audio.DynamicsCompressorNode);
dart.defineExtensionNames([
  'gain'
]);
web_audio.GainNode = class GainNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.gain]() {
    return this.gain;
  }
};
dart.setSignature(web_audio.GainNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.GainNode, [])}),
  fields: () => ({[dartx.gain]: web_audio.AudioParam})
});
dart.registerExtension(dart.global.GainNode, web_audio.GainNode);
dart.registerExtension(dart.global.AudioGainNode, web_audio.GainNode);
dart.defineExtensionNames([
  'mediaElement'
]);
web_audio.MediaElementAudioSourceNode = class MediaElementAudioSourceNode extends web_audio.AudioSourceNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.mediaElement]() {
    return this.mediaElement;
  }
};
dart.setSignature(web_audio.MediaElementAudioSourceNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.MediaElementAudioSourceNode, [])}),
  fields: () => ({[dartx.mediaElement]: html.MediaElement})
});
dart.registerExtension(dart.global.MediaElementAudioSourceNode, web_audio.MediaElementAudioSourceNode);
dart.defineExtensionNames([
  'stream'
]);
web_audio.MediaStreamAudioDestinationNode = class MediaStreamAudioDestinationNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.stream]() {
    return this.stream;
  }
};
dart.setSignature(web_audio.MediaStreamAudioDestinationNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.MediaStreamAudioDestinationNode, [])}),
  fields: () => ({[dartx.stream]: html.MediaStream})
});
dart.registerExtension(dart.global.MediaStreamAudioDestinationNode, web_audio.MediaStreamAudioDestinationNode);
dart.defineExtensionNames([
  'mediaStream'
]);
web_audio.MediaStreamAudioSourceNode = class MediaStreamAudioSourceNode extends web_audio.AudioSourceNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.mediaStream]() {
    return this.mediaStream;
  }
};
dart.setSignature(web_audio.MediaStreamAudioSourceNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.MediaStreamAudioSourceNode, [])}),
  fields: () => ({[dartx.mediaStream]: html.MediaStream})
});
dart.registerExtension(dart.global.MediaStreamAudioSourceNode, web_audio.MediaStreamAudioSourceNode);
dart.defineExtensionNames([
  'renderedBuffer'
]);
web_audio.OfflineAudioCompletionEvent = class OfflineAudioCompletionEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.renderedBuffer]() {
    return this.renderedBuffer;
  }
};
dart.setSignature(web_audio.OfflineAudioCompletionEvent, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.OfflineAudioCompletionEvent, [])}),
  fields: () => ({[dartx.renderedBuffer]: web_audio.AudioBuffer})
});
dart.registerExtension(dart.global.OfflineAudioCompletionEvent, web_audio.OfflineAudioCompletionEvent);
web_audio.OfflineAudioContext = class OfflineAudioContext extends web_audio.AudioContext {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static new(numberOfChannels, numberOfFrames, sampleRate) {
    return web_audio.OfflineAudioContext._create_1(numberOfChannels, numberOfFrames, sampleRate);
  }
  static _create_1(numberOfChannels, numberOfFrames, sampleRate) {
    return new OfflineAudioContext(numberOfChannels, numberOfFrames, sampleRate);
  }
};
dart.setSignature(web_audio.OfflineAudioContext, {
  constructors: () => ({
    _: dart.definiteFunctionType(web_audio.OfflineAudioContext, []),
    new: dart.definiteFunctionType(web_audio.OfflineAudioContext, [core.int, core.int, core.num])
  }),
  statics: () => ({_create_1: dart.definiteFunctionType(web_audio.OfflineAudioContext, [dart.dynamic, dart.dynamic, dart.dynamic])}),
  names: ['_create_1']
});
dart.registerExtension(dart.global.OfflineAudioContext, web_audio.OfflineAudioContext);
dart.defineExtensionNames([
  'noteOff',
  'noteOn',
  'setPeriodicWave',
  'start',
  'stop',
  'onEnded',
  'detune',
  'frequency',
  'type'
]);
web_audio.OscillatorNode = class OscillatorNode extends web_audio.AudioSourceNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.detune]() {
    return this.detune;
  }
  get [dartx.frequency]() {
    return this.frequency;
  }
  get [dartx.type]() {
    return this.type;
  }
  set [dartx.type](value) {
    this.type = value;
  }
  [dartx.noteOff](...args) {
    return this.noteOff.apply(this, args);
  }
  [dartx.noteOn](...args) {
    return this.noteOn.apply(this, args);
  }
  [dartx.setPeriodicWave](...args) {
    return this.setPeriodicWave.apply(this, args);
  }
  [dartx.start](...args) {
    return this.start.apply(this, args);
  }
  [dartx.stop](...args) {
    return this.stop.apply(this, args);
  }
  get [dartx.onEnded]() {
    return web_audio.OscillatorNode.endedEvent.forTarget(this);
  }
};
dart.setSignature(web_audio.OscillatorNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.OscillatorNode, [])}),
  fields: () => ({
    [dartx.detune]: web_audio.AudioParam,
    [dartx.frequency]: web_audio.AudioParam,
    [dartx.type]: core.String
  }),
  getters: () => ({[dartx.onEnded]: dart.definiteFunctionType(async.Stream$(html.Event), [])}),
  methods: () => ({
    [dartx.noteOff]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.noteOn]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.setPeriodicWave]: dart.definiteFunctionType(dart.void, [web_audio.PeriodicWave]),
    [dartx.start]: dart.definiteFunctionType(dart.void, [], [core.num]),
    [dartx.stop]: dart.definiteFunctionType(dart.void, [], [core.num])
  }),
  sfields: () => ({endedEvent: EventStreamProviderOfEvent()})
});
web_audio.OscillatorNode.endedEvent = dart.const(new (EventStreamProviderOfEvent())('ended'));
dart.registerExtension(dart.global.OscillatorNode, web_audio.OscillatorNode);
dart.registerExtension(dart.global.Oscillator, web_audio.OscillatorNode);
dart.defineExtensionNames([
  'setOrientation',
  'setPosition',
  'setVelocity',
  'coneInnerAngle',
  'coneOuterAngle',
  'coneOuterGain',
  'distanceModel',
  'maxDistance',
  'panningModel',
  'refDistance',
  'rolloffFactor'
]);
web_audio.PannerNode = class PannerNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.coneInnerAngle]() {
    return this.coneInnerAngle;
  }
  set [dartx.coneInnerAngle](value) {
    this.coneInnerAngle = value;
  }
  get [dartx.coneOuterAngle]() {
    return this.coneOuterAngle;
  }
  set [dartx.coneOuterAngle](value) {
    this.coneOuterAngle = value;
  }
  get [dartx.coneOuterGain]() {
    return this.coneOuterGain;
  }
  set [dartx.coneOuterGain](value) {
    this.coneOuterGain = value;
  }
  get [dartx.distanceModel]() {
    return this.distanceModel;
  }
  set [dartx.distanceModel](value) {
    this.distanceModel = value;
  }
  get [dartx.maxDistance]() {
    return this.maxDistance;
  }
  set [dartx.maxDistance](value) {
    this.maxDistance = value;
  }
  get [dartx.panningModel]() {
    return this.panningModel;
  }
  set [dartx.panningModel](value) {
    this.panningModel = value;
  }
  get [dartx.refDistance]() {
    return this.refDistance;
  }
  set [dartx.refDistance](value) {
    this.refDistance = value;
  }
  get [dartx.rolloffFactor]() {
    return this.rolloffFactor;
  }
  set [dartx.rolloffFactor](value) {
    this.rolloffFactor = value;
  }
  [dartx.setOrientation](...args) {
    return this.setOrientation.apply(this, args);
  }
  [dartx.setPosition](...args) {
    return this.setPosition.apply(this, args);
  }
  [dartx.setVelocity](...args) {
    return this.setVelocity.apply(this, args);
  }
};
dart.setSignature(web_audio.PannerNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.PannerNode, [])}),
  fields: () => ({
    [dartx.coneInnerAngle]: core.num,
    [dartx.coneOuterAngle]: core.num,
    [dartx.coneOuterGain]: core.num,
    [dartx.distanceModel]: core.String,
    [dartx.maxDistance]: core.num,
    [dartx.panningModel]: core.String,
    [dartx.refDistance]: core.num,
    [dartx.rolloffFactor]: core.num
  }),
  methods: () => ({
    [dartx.setOrientation]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num]),
    [dartx.setPosition]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num]),
    [dartx.setVelocity]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num])
  })
});
dart.registerExtension(dart.global.PannerNode, web_audio.PannerNode);
dart.registerExtension(dart.global.AudioPannerNode, web_audio.PannerNode);
dart.registerExtension(dart.global.webkitAudioPannerNode, web_audio.PannerNode);
web_audio.PeriodicWave = class PeriodicWave extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_audio.PeriodicWave, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.PeriodicWave, [])})
});
dart.registerExtension(dart.global.PeriodicWave, web_audio.PeriodicWave);
dart.defineExtensionNames([
  'setEventListener',
  'onAudioProcess',
  'bufferSize'
]);
web_audio.ScriptProcessorNode = class ScriptProcessorNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.bufferSize]() {
    return this.bufferSize;
  }
  [dartx.setEventListener](...args) {
    return this.setEventListener.apply(this, args);
  }
  get [dartx.onAudioProcess]() {
    return web_audio.ScriptProcessorNode.audioProcessEvent.forTarget(this);
  }
};
dart.setSignature(web_audio.ScriptProcessorNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.ScriptProcessorNode, [])}),
  fields: () => ({[dartx.bufferSize]: core.int}),
  getters: () => ({[dartx.onAudioProcess]: dart.definiteFunctionType(async.Stream$(web_audio.AudioProcessingEvent), [])}),
  methods: () => ({[dartx.setEventListener]: dart.definiteFunctionType(dart.void, [html.EventListener])}),
  sfields: () => ({audioProcessEvent: EventStreamProviderOfAudioProcessingEvent()})
});
web_audio.ScriptProcessorNode.audioProcessEvent = dart.const(new (EventStreamProviderOfAudioProcessingEvent())('audioprocess'));
dart.registerExtension(dart.global.ScriptProcessorNode, web_audio.ScriptProcessorNode);
dart.registerExtension(dart.global.JavaScriptAudioNode, web_audio.ScriptProcessorNode);
dart.defineExtensionNames([
  'curve',
  'oversample'
]);
web_audio.WaveShaperNode = class WaveShaperNode extends web_audio.AudioNode {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.curve]() {
    return this.curve;
  }
  set [dartx.curve](value) {
    this.curve = value;
  }
  get [dartx.oversample]() {
    return this.oversample;
  }
  set [dartx.oversample](value) {
    this.oversample = value;
  }
};
dart.setSignature(web_audio.WaveShaperNode, {
  constructors: () => ({_: dart.definiteFunctionType(web_audio.WaveShaperNode, [])}),
  fields: () => ({
    [dartx.curve]: typed_data.Float32List,
    [dartx.oversample]: core.String
  })
});
dart.registerExtension(dart.global.WaveShaperNode, web_audio.WaveShaperNode);
const _getContextAttributes_1 = Symbol('_getContextAttributes_1');
const _texImage2D_1 = Symbol('_texImage2D_1');
const _texImage2D_2 = Symbol('_texImage2D_2');
const _texImage2D_3 = Symbol('_texImage2D_3');
const _texImage2D_4 = Symbol('_texImage2D_4');
const _texImage2D_5 = Symbol('_texImage2D_5');
const _texImage2DImageData_1 = Symbol('_texImage2DImageData_1');
const _texSubImage2D_1 = Symbol('_texSubImage2D_1');
const _texSubImage2D_2 = Symbol('_texSubImage2D_2');
const _texSubImage2D_3 = Symbol('_texSubImage2D_3');
const _texSubImage2D_4 = Symbol('_texSubImage2D_4');
const _texSubImage2D_5 = Symbol('_texSubImage2D_5');
const _texSubImage2DImageData_1 = Symbol('_texSubImage2DImageData_1');
dart.defineExtensionNames([
  'activeTexture',
  'attachShader',
  'bindAttribLocation',
  'bindBuffer',
  'bindFramebuffer',
  'bindRenderbuffer',
  'bindTexture',
  'blendColor',
  'blendEquation',
  'blendEquationSeparate',
  'blendFunc',
  'blendFuncSeparate',
  'bufferByteData',
  'bufferData',
  'bufferDataTyped',
  'bufferSubByteData',
  'bufferSubData',
  'bufferSubDataTyped',
  'checkFramebufferStatus',
  'clear',
  'clearColor',
  'clearDepth',
  'clearStencil',
  'colorMask',
  'compileShader',
  'compressedTexImage2D',
  'compressedTexSubImage2D',
  'copyTexImage2D',
  'copyTexSubImage2D',
  'createBuffer',
  'createFramebuffer',
  'createProgram',
  'createRenderbuffer',
  'createShader',
  'createTexture',
  'cullFace',
  'deleteBuffer',
  'deleteFramebuffer',
  'deleteProgram',
  'deleteRenderbuffer',
  'deleteShader',
  'deleteTexture',
  'depthFunc',
  'depthMask',
  'depthRange',
  'detachShader',
  'disable',
  'disableVertexAttribArray',
  'drawArrays',
  'drawElements',
  'enable',
  'enableVertexAttribArray',
  'finish',
  'flush',
  'framebufferRenderbuffer',
  'framebufferTexture2D',
  'frontFace',
  'generateMipmap',
  'getActiveAttrib',
  'getActiveUniform',
  'getAttachedShaders',
  'getAttribLocation',
  'getBufferParameter',
  'getContextAttributes',
  'getError',
  'getExtension',
  'getFramebufferAttachmentParameter',
  'getParameter',
  'getProgramInfoLog',
  'getProgramParameter',
  'getRenderbufferParameter',
  'getShaderInfoLog',
  'getShaderParameter',
  'getShaderPrecisionFormat',
  'getShaderSource',
  'getSupportedExtensions',
  'getTexParameter',
  'getUniform',
  'getUniformLocation',
  'getVertexAttrib',
  'getVertexAttribOffset',
  'hint',
  'isBuffer',
  'isContextLost',
  'isEnabled',
  'isFramebuffer',
  'isProgram',
  'isRenderbuffer',
  'isShader',
  'isTexture',
  'lineWidth',
  'linkProgram',
  'pixelStorei',
  'polygonOffset',
  'readPixels',
  'renderbufferStorage',
  'sampleCoverage',
  'scissor',
  'shaderSource',
  'stencilFunc',
  'stencilFuncSeparate',
  'stencilMask',
  'stencilMaskSeparate',
  'stencilOp',
  'stencilOpSeparate',
  'texImage2D',
  'texImage2DCanvas',
  'texImage2DImage',
  'texImage2DImageData',
  'texImage2DVideo',
  'texParameterf',
  'texParameteri',
  'texSubImage2D',
  'texSubImage2DCanvas',
  'texSubImage2DImage',
  'texSubImage2DImageData',
  'texSubImage2DVideo',
  'uniform1f',
  'uniform1fv',
  'uniform1i',
  'uniform1iv',
  'uniform2f',
  'uniform2fv',
  'uniform2i',
  'uniform2iv',
  'uniform3f',
  'uniform3fv',
  'uniform3i',
  'uniform3iv',
  'uniform4f',
  'uniform4fv',
  'uniform4i',
  'uniform4iv',
  'uniformMatrix2fv',
  'uniformMatrix3fv',
  'uniformMatrix4fv',
  'useProgram',
  'validateProgram',
  'vertexAttrib1f',
  'vertexAttrib1fv',
  'vertexAttrib2f',
  'vertexAttrib2fv',
  'vertexAttrib3f',
  'vertexAttrib3fv',
  'vertexAttrib4f',
  'vertexAttrib4fv',
  'vertexAttribPointer',
  'viewport',
  'texImage2DUntyped',
  'texImage2DTyped',
  'texSubImage2DUntyped',
  'texSubImage2DTyped',
  'canvas',
  'drawingBufferHeight',
  'drawingBufferWidth'
]);
web_gl.RenderingContext = class RenderingContext extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static get supported() {
    return !!window.WebGLRenderingContext;
  }
  get [dartx.canvas]() {
    return this.canvas;
  }
  get [dartx.drawingBufferHeight]() {
    return this.drawingBufferHeight;
  }
  get [dartx.drawingBufferWidth]() {
    return this.drawingBufferWidth;
  }
  [dartx.activeTexture](...args) {
    return this.activeTexture.apply(this, args);
  }
  [dartx.attachShader](...args) {
    return this.attachShader.apply(this, args);
  }
  [dartx.bindAttribLocation](...args) {
    return this.bindAttribLocation.apply(this, args);
  }
  [dartx.bindBuffer](...args) {
    return this.bindBuffer.apply(this, args);
  }
  [dartx.bindFramebuffer](...args) {
    return this.bindFramebuffer.apply(this, args);
  }
  [dartx.bindRenderbuffer](...args) {
    return this.bindRenderbuffer.apply(this, args);
  }
  [dartx.bindTexture](...args) {
    return this.bindTexture.apply(this, args);
  }
  [dartx.blendColor](...args) {
    return this.blendColor.apply(this, args);
  }
  [dartx.blendEquation](...args) {
    return this.blendEquation.apply(this, args);
  }
  [dartx.blendEquationSeparate](...args) {
    return this.blendEquationSeparate.apply(this, args);
  }
  [dartx.blendFunc](...args) {
    return this.blendFunc.apply(this, args);
  }
  [dartx.blendFuncSeparate](...args) {
    return this.blendFuncSeparate.apply(this, args);
  }
  [dartx.bufferByteData](...args) {
    return this.bufferData.apply(this, args);
  }
  [dartx.bufferData](...args) {
    return this.bufferData.apply(this, args);
  }
  [dartx.bufferDataTyped](...args) {
    return this.bufferData.apply(this, args);
  }
  [dartx.bufferSubByteData](...args) {
    return this.bufferSubData.apply(this, args);
  }
  [dartx.bufferSubData](...args) {
    return this.bufferSubData.apply(this, args);
  }
  [dartx.bufferSubDataTyped](...args) {
    return this.bufferSubData.apply(this, args);
  }
  [dartx.checkFramebufferStatus](...args) {
    return this.checkFramebufferStatus.apply(this, args);
  }
  [dartx.clear](...args) {
    return this.clear.apply(this, args);
  }
  [dartx.clearColor](...args) {
    return this.clearColor.apply(this, args);
  }
  [dartx.clearDepth](...args) {
    return this.clearDepth.apply(this, args);
  }
  [dartx.clearStencil](...args) {
    return this.clearStencil.apply(this, args);
  }
  [dartx.colorMask](...args) {
    return this.colorMask.apply(this, args);
  }
  [dartx.compileShader](...args) {
    return this.compileShader.apply(this, args);
  }
  [dartx.compressedTexImage2D](...args) {
    return this.compressedTexImage2D.apply(this, args);
  }
  [dartx.compressedTexSubImage2D](...args) {
    return this.compressedTexSubImage2D.apply(this, args);
  }
  [dartx.copyTexImage2D](...args) {
    return this.copyTexImage2D.apply(this, args);
  }
  [dartx.copyTexSubImage2D](...args) {
    return this.copyTexSubImage2D.apply(this, args);
  }
  [dartx.createBuffer](...args) {
    return this.createBuffer.apply(this, args);
  }
  [dartx.createFramebuffer](...args) {
    return this.createFramebuffer.apply(this, args);
  }
  [dartx.createProgram](...args) {
    return this.createProgram.apply(this, args);
  }
  [dartx.createRenderbuffer](...args) {
    return this.createRenderbuffer.apply(this, args);
  }
  [dartx.createShader](...args) {
    return this.createShader.apply(this, args);
  }
  [dartx.createTexture](...args) {
    return this.createTexture.apply(this, args);
  }
  [dartx.cullFace](...args) {
    return this.cullFace.apply(this, args);
  }
  [dartx.deleteBuffer](...args) {
    return this.deleteBuffer.apply(this, args);
  }
  [dartx.deleteFramebuffer](...args) {
    return this.deleteFramebuffer.apply(this, args);
  }
  [dartx.deleteProgram](...args) {
    return this.deleteProgram.apply(this, args);
  }
  [dartx.deleteRenderbuffer](...args) {
    return this.deleteRenderbuffer.apply(this, args);
  }
  [dartx.deleteShader](...args) {
    return this.deleteShader.apply(this, args);
  }
  [dartx.deleteTexture](...args) {
    return this.deleteTexture.apply(this, args);
  }
  [dartx.depthFunc](...args) {
    return this.depthFunc.apply(this, args);
  }
  [dartx.depthMask](...args) {
    return this.depthMask.apply(this, args);
  }
  [dartx.depthRange](...args) {
    return this.depthRange.apply(this, args);
  }
  [dartx.detachShader](...args) {
    return this.detachShader.apply(this, args);
  }
  [dartx.disable](...args) {
    return this.disable.apply(this, args);
  }
  [dartx.disableVertexAttribArray](...args) {
    return this.disableVertexAttribArray.apply(this, args);
  }
  [dartx.drawArrays](...args) {
    return this.drawArrays.apply(this, args);
  }
  [dartx.drawElements](...args) {
    return this.drawElements.apply(this, args);
  }
  [dartx.enable](...args) {
    return this.enable.apply(this, args);
  }
  [dartx.enableVertexAttribArray](...args) {
    return this.enableVertexAttribArray.apply(this, args);
  }
  [dartx.finish](...args) {
    return this.finish.apply(this, args);
  }
  [dartx.flush](...args) {
    return this.flush.apply(this, args);
  }
  [dartx.framebufferRenderbuffer](...args) {
    return this.framebufferRenderbuffer.apply(this, args);
  }
  [dartx.framebufferTexture2D](...args) {
    return this.framebufferTexture2D.apply(this, args);
  }
  [dartx.frontFace](...args) {
    return this.frontFace.apply(this, args);
  }
  [dartx.generateMipmap](...args) {
    return this.generateMipmap.apply(this, args);
  }
  [dartx.getActiveAttrib](...args) {
    return this.getActiveAttrib.apply(this, args);
  }
  [dartx.getActiveUniform](...args) {
    return this.getActiveUniform.apply(this, args);
  }
  [dartx.getAttachedShaders](...args) {
    return this.getAttachedShaders.apply(this, args);
  }
  [dartx.getAttribLocation](...args) {
    return this.getAttribLocation.apply(this, args);
  }
  [dartx.getBufferParameter](...args) {
    return this.getBufferParameter.apply(this, args);
  }
  [dartx.getContextAttributes]() {
    return web_gl.ContextAttributes._check(html_common.convertNativeToDart_ContextAttributes(this[_getContextAttributes_1]()));
  }
  [_getContextAttributes_1](...args) {
    return this.getContextAttributes.apply(this, args);
  }
  [dartx.getError](...args) {
    return this.getError.apply(this, args);
  }
  [dartx.getExtension](...args) {
    return this.getExtension.apply(this, args);
  }
  [dartx.getFramebufferAttachmentParameter](...args) {
    return this.getFramebufferAttachmentParameter.apply(this, args);
  }
  [dartx.getParameter](...args) {
    return this.getParameter.apply(this, args);
  }
  [dartx.getProgramInfoLog](...args) {
    return this.getProgramInfoLog.apply(this, args);
  }
  [dartx.getProgramParameter](...args) {
    return this.getProgramParameter.apply(this, args);
  }
  [dartx.getRenderbufferParameter](...args) {
    return this.getRenderbufferParameter.apply(this, args);
  }
  [dartx.getShaderInfoLog](...args) {
    return this.getShaderInfoLog.apply(this, args);
  }
  [dartx.getShaderParameter](...args) {
    return this.getShaderParameter.apply(this, args);
  }
  [dartx.getShaderPrecisionFormat](...args) {
    return this.getShaderPrecisionFormat.apply(this, args);
  }
  [dartx.getShaderSource](...args) {
    return this.getShaderSource.apply(this, args);
  }
  [dartx.getSupportedExtensions](...args) {
    return this.getSupportedExtensions.apply(this, args);
  }
  [dartx.getTexParameter](...args) {
    return this.getTexParameter.apply(this, args);
  }
  [dartx.getUniform](...args) {
    return this.getUniform.apply(this, args);
  }
  [dartx.getUniformLocation](...args) {
    return this.getUniformLocation.apply(this, args);
  }
  [dartx.getVertexAttrib](...args) {
    return this.getVertexAttrib.apply(this, args);
  }
  [dartx.getVertexAttribOffset](...args) {
    return this.getVertexAttribOffset.apply(this, args);
  }
  [dartx.hint](...args) {
    return this.hint.apply(this, args);
  }
  [dartx.isBuffer](...args) {
    return this.isBuffer.apply(this, args);
  }
  [dartx.isContextLost](...args) {
    return this.isContextLost.apply(this, args);
  }
  [dartx.isEnabled](...args) {
    return this.isEnabled.apply(this, args);
  }
  [dartx.isFramebuffer](...args) {
    return this.isFramebuffer.apply(this, args);
  }
  [dartx.isProgram](...args) {
    return this.isProgram.apply(this, args);
  }
  [dartx.isRenderbuffer](...args) {
    return this.isRenderbuffer.apply(this, args);
  }
  [dartx.isShader](...args) {
    return this.isShader.apply(this, args);
  }
  [dartx.isTexture](...args) {
    return this.isTexture.apply(this, args);
  }
  [dartx.lineWidth](...args) {
    return this.lineWidth.apply(this, args);
  }
  [dartx.linkProgram](...args) {
    return this.linkProgram.apply(this, args);
  }
  [dartx.pixelStorei](...args) {
    return this.pixelStorei.apply(this, args);
  }
  [dartx.polygonOffset](...args) {
    return this.polygonOffset.apply(this, args);
  }
  [dartx.readPixels](...args) {
    return this.readPixels.apply(this, args);
  }
  [dartx.renderbufferStorage](...args) {
    return this.renderbufferStorage.apply(this, args);
  }
  [dartx.sampleCoverage](...args) {
    return this.sampleCoverage.apply(this, args);
  }
  [dartx.scissor](...args) {
    return this.scissor.apply(this, args);
  }
  [dartx.shaderSource](...args) {
    return this.shaderSource.apply(this, args);
  }
  [dartx.stencilFunc](...args) {
    return this.stencilFunc.apply(this, args);
  }
  [dartx.stencilFuncSeparate](...args) {
    return this.stencilFuncSeparate.apply(this, args);
  }
  [dartx.stencilMask](...args) {
    return this.stencilMask.apply(this, args);
  }
  [dartx.stencilMaskSeparate](...args) {
    return this.stencilMaskSeparate.apply(this, args);
  }
  [dartx.stencilOp](...args) {
    return this.stencilOp.apply(this, args);
  }
  [dartx.stencilOpSeparate](...args) {
    return this.stencilOpSeparate.apply(this, args);
  }
  [dartx.texImage2D](target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels) {
    if (format === void 0) format = null;
    if (type === void 0) type = null;
    if (pixels === void 0) pixels = null;
    if (pixels != null && type != null && format != null && typeof border_OR_canvas_OR_image_OR_pixels_OR_video == 'number') {
      this[_texImage2D_1](target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels);
      return;
    }
    if ((html.ImageData.is(border_OR_canvas_OR_image_OR_pixels_OR_video) || border_OR_canvas_OR_image_OR_pixels_OR_video == null) && format == null && type == null && pixels == null) {
      let pixels_1 = html_common.convertDartToNative_ImageData(html.ImageData._check(border_OR_canvas_OR_image_OR_pixels_OR_video));
      this[_texImage2D_2](target, level, internalformat, format_OR_width, height_OR_type, pixels_1);
      return;
    }
    if (html.ImageElement.is(border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      this[_texImage2D_3](target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html.CanvasElement.is(border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      this[_texImage2D_4](target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html.VideoElement.is(border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      this[_texImage2D_5](target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video);
      return;
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  [_texImage2D_1](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_2](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_3](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_4](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_5](...args) {
    return this.texImage2D.apply(this, args);
  }
  [dartx.texImage2DCanvas](...args) {
    return this.texImage2D.apply(this, args);
  }
  [dartx.texImage2DImage](...args) {
    return this.texImage2D.apply(this, args);
  }
  [dartx.texImage2DImageData](target, level, internalformat, format, type, pixels) {
    let pixels_1 = html_common.convertDartToNative_ImageData(pixels);
    this[_texImage2DImageData_1](target, level, internalformat, format, type, pixels_1);
    return;
  }
  [_texImage2DImageData_1](...args) {
    return this.texImage2D.apply(this, args);
  }
  [dartx.texImage2DVideo](...args) {
    return this.texImage2D.apply(this, args);
  }
  [dartx.texParameterf](...args) {
    return this.texParameterf.apply(this, args);
  }
  [dartx.texParameteri](...args) {
    return this.texParameteri.apply(this, args);
  }
  [dartx.texSubImage2D](target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels) {
    if (type === void 0) type = null;
    if (pixels === void 0) pixels = null;
    if (pixels != null && type != null && typeof canvas_OR_format_OR_image_OR_pixels_OR_video == 'number') {
      this[_texSubImage2D_1](target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels);
      return;
    }
    if ((html.ImageData.is(canvas_OR_format_OR_image_OR_pixels_OR_video) || canvas_OR_format_OR_image_OR_pixels_OR_video == null) && type == null && pixels == null) {
      let pixels_1 = html_common.convertDartToNative_ImageData(html.ImageData._check(canvas_OR_format_OR_image_OR_pixels_OR_video));
      this[_texSubImage2D_2](target, level, xoffset, yoffset, format_OR_width, height_OR_type, pixels_1);
      return;
    }
    if (html.ImageElement.is(canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      this[_texSubImage2D_3](target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html.CanvasElement.is(canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      this[_texSubImage2D_4](target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html.VideoElement.is(canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      this[_texSubImage2D_5](target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video);
      return;
    }
    dart.throw(new core.ArgumentError("Incorrect number or type of arguments"));
  }
  [_texSubImage2D_1](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_2](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_3](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_4](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_5](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [dartx.texSubImage2DCanvas](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [dartx.texSubImage2DImage](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [dartx.texSubImage2DImageData](target, level, xoffset, yoffset, format, type, pixels) {
    let pixels_1 = html_common.convertDartToNative_ImageData(pixels);
    this[_texSubImage2DImageData_1](target, level, xoffset, yoffset, format, type, pixels_1);
    return;
  }
  [_texSubImage2DImageData_1](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [dartx.texSubImage2DVideo](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [dartx.uniform1f](...args) {
    return this.uniform1f.apply(this, args);
  }
  [dartx.uniform1fv](...args) {
    return this.uniform1fv.apply(this, args);
  }
  [dartx.uniform1i](...args) {
    return this.uniform1i.apply(this, args);
  }
  [dartx.uniform1iv](...args) {
    return this.uniform1iv.apply(this, args);
  }
  [dartx.uniform2f](...args) {
    return this.uniform2f.apply(this, args);
  }
  [dartx.uniform2fv](...args) {
    return this.uniform2fv.apply(this, args);
  }
  [dartx.uniform2i](...args) {
    return this.uniform2i.apply(this, args);
  }
  [dartx.uniform2iv](...args) {
    return this.uniform2iv.apply(this, args);
  }
  [dartx.uniform3f](...args) {
    return this.uniform3f.apply(this, args);
  }
  [dartx.uniform3fv](...args) {
    return this.uniform3fv.apply(this, args);
  }
  [dartx.uniform3i](...args) {
    return this.uniform3i.apply(this, args);
  }
  [dartx.uniform3iv](...args) {
    return this.uniform3iv.apply(this, args);
  }
  [dartx.uniform4f](...args) {
    return this.uniform4f.apply(this, args);
  }
  [dartx.uniform4fv](...args) {
    return this.uniform4fv.apply(this, args);
  }
  [dartx.uniform4i](...args) {
    return this.uniform4i.apply(this, args);
  }
  [dartx.uniform4iv](...args) {
    return this.uniform4iv.apply(this, args);
  }
  [dartx.uniformMatrix2fv](...args) {
    return this.uniformMatrix2fv.apply(this, args);
  }
  [dartx.uniformMatrix3fv](...args) {
    return this.uniformMatrix3fv.apply(this, args);
  }
  [dartx.uniformMatrix4fv](...args) {
    return this.uniformMatrix4fv.apply(this, args);
  }
  [dartx.useProgram](...args) {
    return this.useProgram.apply(this, args);
  }
  [dartx.validateProgram](...args) {
    return this.validateProgram.apply(this, args);
  }
  [dartx.vertexAttrib1f](...args) {
    return this.vertexAttrib1f.apply(this, args);
  }
  [dartx.vertexAttrib1fv](...args) {
    return this.vertexAttrib1fv.apply(this, args);
  }
  [dartx.vertexAttrib2f](...args) {
    return this.vertexAttrib2f.apply(this, args);
  }
  [dartx.vertexAttrib2fv](...args) {
    return this.vertexAttrib2fv.apply(this, args);
  }
  [dartx.vertexAttrib3f](...args) {
    return this.vertexAttrib3f.apply(this, args);
  }
  [dartx.vertexAttrib3fv](...args) {
    return this.vertexAttrib3fv.apply(this, args);
  }
  [dartx.vertexAttrib4f](...args) {
    return this.vertexAttrib4f.apply(this, args);
  }
  [dartx.vertexAttrib4fv](...args) {
    return this.vertexAttrib4fv.apply(this, args);
  }
  [dartx.vertexAttribPointer](...args) {
    return this.vertexAttribPointer.apply(this, args);
  }
  [dartx.viewport](...args) {
    return this.viewport.apply(this, args);
  }
  [dartx.texImage2DUntyped](...args) {
    return this.texImage2D.apply(this, args);
  }
  [dartx.texImage2DTyped](...args) {
    return this.texImage2D.apply(this, args);
  }
  [dartx.texSubImage2DUntyped](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [dartx.texSubImage2DTyped](...args) {
    return this.texSubImage2D.apply(this, args);
  }
};
web_gl.RenderingContext[dart.implements] = () => [html.CanvasRenderingContext];
dart.setSignature(web_gl.RenderingContext, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.RenderingContext, [])}),
  fields: () => ({
    [dartx.canvas]: html.CanvasElement,
    [dartx.drawingBufferHeight]: core.int,
    [dartx.drawingBufferWidth]: core.int
  }),
  methods: () => ({
    [dartx.activeTexture]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.attachShader]: dart.definiteFunctionType(dart.void, [web_gl.Program, web_gl.Shader]),
    [dartx.bindAttribLocation]: dart.definiteFunctionType(dart.void, [web_gl.Program, core.int, core.String]),
    [dartx.bindBuffer]: dart.definiteFunctionType(dart.void, [core.int, web_gl.Buffer]),
    [dartx.bindFramebuffer]: dart.definiteFunctionType(dart.void, [core.int, web_gl.Framebuffer]),
    [dartx.bindRenderbuffer]: dart.definiteFunctionType(dart.void, [core.int, web_gl.Renderbuffer]),
    [dartx.bindTexture]: dart.definiteFunctionType(dart.void, [core.int, web_gl.Texture]),
    [dartx.blendColor]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num]),
    [dartx.blendEquation]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.blendEquationSeparate]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [dartx.blendFunc]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [dartx.blendFuncSeparate]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int]),
    [dartx.bufferByteData]: dart.definiteFunctionType(dart.void, [core.int, typed_data.ByteBuffer, core.int]),
    [dartx.bufferData]: dart.definiteFunctionType(dart.void, [core.int, dart.dynamic, core.int]),
    [dartx.bufferDataTyped]: dart.definiteFunctionType(dart.void, [core.int, typed_data.TypedData, core.int]),
    [dartx.bufferSubByteData]: dart.definiteFunctionType(dart.void, [core.int, core.int, typed_data.ByteBuffer]),
    [dartx.bufferSubData]: dart.definiteFunctionType(dart.void, [core.int, core.int, dart.dynamic]),
    [dartx.bufferSubDataTyped]: dart.definiteFunctionType(dart.void, [core.int, core.int, typed_data.TypedData]),
    [dartx.checkFramebufferStatus]: dart.definiteFunctionType(core.int, [core.int]),
    [dartx.clear]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.clearColor]: dart.definiteFunctionType(dart.void, [core.num, core.num, core.num, core.num]),
    [dartx.clearDepth]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.clearStencil]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.colorMask]: dart.definiteFunctionType(dart.void, [core.bool, core.bool, core.bool, core.bool]),
    [dartx.compileShader]: dart.definiteFunctionType(dart.void, [web_gl.Shader]),
    [dartx.compressedTexImage2D]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [dartx.compressedTexSubImage2D]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [dartx.copyTexImage2D]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    [dartx.copyTexSubImage2D]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    [dartx.createBuffer]: dart.definiteFunctionType(web_gl.Buffer, []),
    [dartx.createFramebuffer]: dart.definiteFunctionType(web_gl.Framebuffer, []),
    [dartx.createProgram]: dart.definiteFunctionType(web_gl.Program, []),
    [dartx.createRenderbuffer]: dart.definiteFunctionType(web_gl.Renderbuffer, []),
    [dartx.createShader]: dart.definiteFunctionType(web_gl.Shader, [core.int]),
    [dartx.createTexture]: dart.definiteFunctionType(web_gl.Texture, []),
    [dartx.cullFace]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.deleteBuffer]: dart.definiteFunctionType(dart.void, [web_gl.Buffer]),
    [dartx.deleteFramebuffer]: dart.definiteFunctionType(dart.void, [web_gl.Framebuffer]),
    [dartx.deleteProgram]: dart.definiteFunctionType(dart.void, [web_gl.Program]),
    [dartx.deleteRenderbuffer]: dart.definiteFunctionType(dart.void, [web_gl.Renderbuffer]),
    [dartx.deleteShader]: dart.definiteFunctionType(dart.void, [web_gl.Shader]),
    [dartx.deleteTexture]: dart.definiteFunctionType(dart.void, [web_gl.Texture]),
    [dartx.depthFunc]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.depthMask]: dart.definiteFunctionType(dart.void, [core.bool]),
    [dartx.depthRange]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [dartx.detachShader]: dart.definiteFunctionType(dart.void, [web_gl.Program, web_gl.Shader]),
    [dartx.disable]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.disableVertexAttribArray]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.drawArrays]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int]),
    [dartx.drawElements]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int]),
    [dartx.enable]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.enableVertexAttribArray]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.finish]: dart.definiteFunctionType(dart.void, []),
    [dartx.flush]: dart.definiteFunctionType(dart.void, []),
    [dartx.framebufferRenderbuffer]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, web_gl.Renderbuffer]),
    [dartx.framebufferTexture2D]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, web_gl.Texture, core.int]),
    [dartx.frontFace]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.generateMipmap]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.getActiveAttrib]: dart.definiteFunctionType(web_gl.ActiveInfo, [web_gl.Program, core.int]),
    [dartx.getActiveUniform]: dart.definiteFunctionType(web_gl.ActiveInfo, [web_gl.Program, core.int]),
    [dartx.getAttachedShaders]: dart.definiteFunctionType(core.List$(web_gl.Shader), [web_gl.Program]),
    [dartx.getAttribLocation]: dart.definiteFunctionType(core.int, [web_gl.Program, core.String]),
    [dartx.getBufferParameter]: dart.definiteFunctionType(core.Object, [core.int, core.int]),
    [dartx.getContextAttributes]: dart.definiteFunctionType(web_gl.ContextAttributes, []),
    [_getContextAttributes_1]: dart.definiteFunctionType(dart.dynamic, []),
    [dartx.getError]: dart.definiteFunctionType(core.int, []),
    [dartx.getExtension]: dart.definiteFunctionType(core.Object, [core.String]),
    [dartx.getFramebufferAttachmentParameter]: dart.definiteFunctionType(core.Object, [core.int, core.int, core.int]),
    [dartx.getParameter]: dart.definiteFunctionType(core.Object, [core.int]),
    [dartx.getProgramInfoLog]: dart.definiteFunctionType(core.String, [web_gl.Program]),
    [dartx.getProgramParameter]: dart.definiteFunctionType(core.Object, [web_gl.Program, core.int]),
    [dartx.getRenderbufferParameter]: dart.definiteFunctionType(core.Object, [core.int, core.int]),
    [dartx.getShaderInfoLog]: dart.definiteFunctionType(core.String, [web_gl.Shader]),
    [dartx.getShaderParameter]: dart.definiteFunctionType(core.Object, [web_gl.Shader, core.int]),
    [dartx.getShaderPrecisionFormat]: dart.definiteFunctionType(web_gl.ShaderPrecisionFormat, [core.int, core.int]),
    [dartx.getShaderSource]: dart.definiteFunctionType(core.String, [web_gl.Shader]),
    [dartx.getSupportedExtensions]: dart.definiteFunctionType(core.List$(core.String), []),
    [dartx.getTexParameter]: dart.definiteFunctionType(core.Object, [core.int, core.int]),
    [dartx.getUniform]: dart.definiteFunctionType(core.Object, [web_gl.Program, web_gl.UniformLocation]),
    [dartx.getUniformLocation]: dart.definiteFunctionType(web_gl.UniformLocation, [web_gl.Program, core.String]),
    [dartx.getVertexAttrib]: dart.definiteFunctionType(core.Object, [core.int, core.int]),
    [dartx.getVertexAttribOffset]: dart.definiteFunctionType(core.int, [core.int, core.int]),
    [dartx.hint]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [dartx.isBuffer]: dart.definiteFunctionType(core.bool, [web_gl.Buffer]),
    [dartx.isContextLost]: dart.definiteFunctionType(core.bool, []),
    [dartx.isEnabled]: dart.definiteFunctionType(core.bool, [core.int]),
    [dartx.isFramebuffer]: dart.definiteFunctionType(core.bool, [web_gl.Framebuffer]),
    [dartx.isProgram]: dart.definiteFunctionType(core.bool, [web_gl.Program]),
    [dartx.isRenderbuffer]: dart.definiteFunctionType(core.bool, [web_gl.Renderbuffer]),
    [dartx.isShader]: dart.definiteFunctionType(core.bool, [web_gl.Shader]),
    [dartx.isTexture]: dart.definiteFunctionType(core.bool, [web_gl.Texture]),
    [dartx.lineWidth]: dart.definiteFunctionType(dart.void, [core.num]),
    [dartx.linkProgram]: dart.definiteFunctionType(dart.void, [web_gl.Program]),
    [dartx.pixelStorei]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [dartx.polygonOffset]: dart.definiteFunctionType(dart.void, [core.num, core.num]),
    [dartx.readPixels]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [dartx.renderbufferStorage]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int]),
    [dartx.sampleCoverage]: dart.definiteFunctionType(dart.void, [core.num, core.bool]),
    [dartx.scissor]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int]),
    [dartx.shaderSource]: dart.definiteFunctionType(dart.void, [web_gl.Shader, core.String]),
    [dartx.stencilFunc]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int]),
    [dartx.stencilFuncSeparate]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int]),
    [dartx.stencilMask]: dart.definiteFunctionType(dart.void, [core.int]),
    [dartx.stencilMaskSeparate]: dart.definiteFunctionType(dart.void, [core.int, core.int]),
    [dartx.stencilOp]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int]),
    [dartx.stencilOpSeparate]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int]),
    [dartx.texImage2D]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int, core.int, typed_data.TypedData]),
    [_texImage2D_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int, dart.dynamic, dart.dynamic, typed_data.TypedData]),
    [_texImage2D_2]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_texImage2D_3]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html.ImageElement]),
    [_texImage2D_4]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html.CanvasElement]),
    [_texImage2D_5]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html.VideoElement]),
    [dartx.texImage2DCanvas]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, html.CanvasElement]),
    [dartx.texImage2DImage]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, html.ImageElement]),
    [dartx.texImage2DImageData]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, html.ImageData]),
    [_texImage2DImageData_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [dartx.texImage2DVideo]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, html.VideoElement]),
    [dartx.texParameterf]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.num]),
    [dartx.texParameteri]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int]),
    [dartx.texSubImage2D]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int, typed_data.TypedData]),
    [_texSubImage2D_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int, dart.dynamic, typed_data.TypedData]),
    [_texSubImage2D_2]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_texSubImage2D_3]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html.ImageElement]),
    [_texSubImage2D_4]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html.CanvasElement]),
    [_texSubImage2D_5]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html.VideoElement]),
    [dartx.texSubImage2DCanvas]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, html.CanvasElement]),
    [dartx.texSubImage2DImage]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, html.ImageElement]),
    [dartx.texSubImage2DImageData]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, html.ImageData]),
    [_texSubImage2DImageData_1]: dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [dartx.texSubImage2DVideo]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, html.VideoElement]),
    [dartx.uniform1f]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, core.num]),
    [dartx.uniform1fv]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, typed_data.Float32List]),
    [dartx.uniform1i]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, core.int]),
    [dartx.uniform1iv]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, typed_data.Int32List]),
    [dartx.uniform2f]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, core.num, core.num]),
    [dartx.uniform2fv]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, typed_data.Float32List]),
    [dartx.uniform2i]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, core.int, core.int]),
    [dartx.uniform2iv]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, typed_data.Int32List]),
    [dartx.uniform3f]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, core.num, core.num, core.num]),
    [dartx.uniform3fv]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, typed_data.Float32List]),
    [dartx.uniform3i]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int]),
    [dartx.uniform3iv]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, typed_data.Int32List]),
    [dartx.uniform4f]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, core.num, core.num, core.num, core.num]),
    [dartx.uniform4fv]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, typed_data.Float32List]),
    [dartx.uniform4i]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int, core.int]),
    [dartx.uniform4iv]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, typed_data.Int32List]),
    [dartx.uniformMatrix2fv]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, core.bool, typed_data.Float32List]),
    [dartx.uniformMatrix3fv]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, core.bool, typed_data.Float32List]),
    [dartx.uniformMatrix4fv]: dart.definiteFunctionType(dart.void, [web_gl.UniformLocation, core.bool, typed_data.Float32List]),
    [dartx.useProgram]: dart.definiteFunctionType(dart.void, [web_gl.Program]),
    [dartx.validateProgram]: dart.definiteFunctionType(dart.void, [web_gl.Program]),
    [dartx.vertexAttrib1f]: dart.definiteFunctionType(dart.void, [core.int, core.num]),
    [dartx.vertexAttrib1fv]: dart.definiteFunctionType(dart.void, [core.int, typed_data.Float32List]),
    [dartx.vertexAttrib2f]: dart.definiteFunctionType(dart.void, [core.int, core.num, core.num]),
    [dartx.vertexAttrib2fv]: dart.definiteFunctionType(dart.void, [core.int, typed_data.Float32List]),
    [dartx.vertexAttrib3f]: dart.definiteFunctionType(dart.void, [core.int, core.num, core.num, core.num]),
    [dartx.vertexAttrib3fv]: dart.definiteFunctionType(dart.void, [core.int, typed_data.Float32List]),
    [dartx.vertexAttrib4f]: dart.definiteFunctionType(dart.void, [core.int, core.num, core.num, core.num, core.num]),
    [dartx.vertexAttrib4fv]: dart.definiteFunctionType(dart.void, [core.int, typed_data.Float32List]),
    [dartx.vertexAttribPointer]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.bool, core.int, core.int]),
    [dartx.viewport]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int]),
    [dartx.texImage2DUntyped]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, dart.dynamic]),
    [dartx.texImage2DTyped]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [dartx.texSubImage2DUntyped]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic]),
    [dartx.texSubImage2DTyped]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData])
  }),
  sfields: () => ({
    ACTIVE_ATTRIBUTES: core.int,
    ACTIVE_TEXTURE: core.int,
    ACTIVE_UNIFORMS: core.int,
    ALIASED_LINE_WIDTH_RANGE: core.int,
    ALIASED_POINT_SIZE_RANGE: core.int,
    ALPHA: core.int,
    ALPHA_BITS: core.int,
    ALWAYS: core.int,
    ARRAY_BUFFER: core.int,
    ARRAY_BUFFER_BINDING: core.int,
    ATTACHED_SHADERS: core.int,
    BACK: core.int,
    BLEND: core.int,
    BLEND_COLOR: core.int,
    BLEND_DST_ALPHA: core.int,
    BLEND_DST_RGB: core.int,
    BLEND_EQUATION: core.int,
    BLEND_EQUATION_ALPHA: core.int,
    BLEND_EQUATION_RGB: core.int,
    BLEND_SRC_ALPHA: core.int,
    BLEND_SRC_RGB: core.int,
    BLUE_BITS: core.int,
    BOOL: core.int,
    BOOL_VEC2: core.int,
    BOOL_VEC3: core.int,
    BOOL_VEC4: core.int,
    BROWSER_DEFAULT_WEBGL: core.int,
    BUFFER_SIZE: core.int,
    BUFFER_USAGE: core.int,
    BYTE: core.int,
    CCW: core.int,
    CLAMP_TO_EDGE: core.int,
    COLOR_ATTACHMENT0: core.int,
    COLOR_BUFFER_BIT: core.int,
    COLOR_CLEAR_VALUE: core.int,
    COLOR_WRITEMASK: core.int,
    COMPILE_STATUS: core.int,
    COMPRESSED_TEXTURE_FORMATS: core.int,
    CONSTANT_ALPHA: core.int,
    CONSTANT_COLOR: core.int,
    CONTEXT_LOST_WEBGL: core.int,
    CULL_FACE: core.int,
    CULL_FACE_MODE: core.int,
    CURRENT_PROGRAM: core.int,
    CURRENT_VERTEX_ATTRIB: core.int,
    CW: core.int,
    DECR: core.int,
    DECR_WRAP: core.int,
    DELETE_STATUS: core.int,
    DEPTH_ATTACHMENT: core.int,
    DEPTH_BITS: core.int,
    DEPTH_BUFFER_BIT: core.int,
    DEPTH_CLEAR_VALUE: core.int,
    DEPTH_COMPONENT: core.int,
    DEPTH_COMPONENT16: core.int,
    DEPTH_FUNC: core.int,
    DEPTH_RANGE: core.int,
    DEPTH_STENCIL: core.int,
    DEPTH_STENCIL_ATTACHMENT: core.int,
    DEPTH_TEST: core.int,
    DEPTH_WRITEMASK: core.int,
    DITHER: core.int,
    DONT_CARE: core.int,
    DST_ALPHA: core.int,
    DST_COLOR: core.int,
    DYNAMIC_DRAW: core.int,
    ELEMENT_ARRAY_BUFFER: core.int,
    ELEMENT_ARRAY_BUFFER_BINDING: core.int,
    EQUAL: core.int,
    FASTEST: core.int,
    FLOAT: core.int,
    FLOAT_MAT2: core.int,
    FLOAT_MAT3: core.int,
    FLOAT_MAT4: core.int,
    FLOAT_VEC2: core.int,
    FLOAT_VEC3: core.int,
    FLOAT_VEC4: core.int,
    FRAGMENT_SHADER: core.int,
    FRAMEBUFFER: core.int,
    FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: core.int,
    FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: core.int,
    FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: core.int,
    FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: core.int,
    FRAMEBUFFER_BINDING: core.int,
    FRAMEBUFFER_COMPLETE: core.int,
    FRAMEBUFFER_INCOMPLETE_ATTACHMENT: core.int,
    FRAMEBUFFER_INCOMPLETE_DIMENSIONS: core.int,
    FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: core.int,
    FRAMEBUFFER_UNSUPPORTED: core.int,
    FRONT: core.int,
    FRONT_AND_BACK: core.int,
    FRONT_FACE: core.int,
    FUNC_ADD: core.int,
    FUNC_REVERSE_SUBTRACT: core.int,
    FUNC_SUBTRACT: core.int,
    GENERATE_MIPMAP_HINT: core.int,
    GEQUAL: core.int,
    GREATER: core.int,
    GREEN_BITS: core.int,
    HIGH_FLOAT: core.int,
    HIGH_INT: core.int,
    IMPLEMENTATION_COLOR_READ_FORMAT: core.int,
    IMPLEMENTATION_COLOR_READ_TYPE: core.int,
    INCR: core.int,
    INCR_WRAP: core.int,
    INT: core.int,
    INT_VEC2: core.int,
    INT_VEC3: core.int,
    INT_VEC4: core.int,
    INVALID_ENUM: core.int,
    INVALID_FRAMEBUFFER_OPERATION: core.int,
    INVALID_OPERATION: core.int,
    INVALID_VALUE: core.int,
    INVERT: core.int,
    KEEP: core.int,
    LEQUAL: core.int,
    LESS: core.int,
    LINEAR: core.int,
    LINEAR_MIPMAP_LINEAR: core.int,
    LINEAR_MIPMAP_NEAREST: core.int,
    LINES: core.int,
    LINE_LOOP: core.int,
    LINE_STRIP: core.int,
    LINE_WIDTH: core.int,
    LINK_STATUS: core.int,
    LOW_FLOAT: core.int,
    LOW_INT: core.int,
    LUMINANCE: core.int,
    LUMINANCE_ALPHA: core.int,
    MAX_COMBINED_TEXTURE_IMAGE_UNITS: core.int,
    MAX_CUBE_MAP_TEXTURE_SIZE: core.int,
    MAX_FRAGMENT_UNIFORM_VECTORS: core.int,
    MAX_RENDERBUFFER_SIZE: core.int,
    MAX_TEXTURE_IMAGE_UNITS: core.int,
    MAX_TEXTURE_SIZE: core.int,
    MAX_VARYING_VECTORS: core.int,
    MAX_VERTEX_ATTRIBS: core.int,
    MAX_VERTEX_TEXTURE_IMAGE_UNITS: core.int,
    MAX_VERTEX_UNIFORM_VECTORS: core.int,
    MAX_VIEWPORT_DIMS: core.int,
    MEDIUM_FLOAT: core.int,
    MEDIUM_INT: core.int,
    MIRRORED_REPEAT: core.int,
    NEAREST: core.int,
    NEAREST_MIPMAP_LINEAR: core.int,
    NEAREST_MIPMAP_NEAREST: core.int,
    NEVER: core.int,
    NICEST: core.int,
    NONE: core.int,
    NOTEQUAL: core.int,
    NO_ERROR: core.int,
    ONE: core.int,
    ONE_MINUS_CONSTANT_ALPHA: core.int,
    ONE_MINUS_CONSTANT_COLOR: core.int,
    ONE_MINUS_DST_ALPHA: core.int,
    ONE_MINUS_DST_COLOR: core.int,
    ONE_MINUS_SRC_ALPHA: core.int,
    ONE_MINUS_SRC_COLOR: core.int,
    OUT_OF_MEMORY: core.int,
    PACK_ALIGNMENT: core.int,
    POINTS: core.int,
    POLYGON_OFFSET_FACTOR: core.int,
    POLYGON_OFFSET_FILL: core.int,
    POLYGON_OFFSET_UNITS: core.int,
    RED_BITS: core.int,
    RENDERBUFFER: core.int,
    RENDERBUFFER_ALPHA_SIZE: core.int,
    RENDERBUFFER_BINDING: core.int,
    RENDERBUFFER_BLUE_SIZE: core.int,
    RENDERBUFFER_DEPTH_SIZE: core.int,
    RENDERBUFFER_GREEN_SIZE: core.int,
    RENDERBUFFER_HEIGHT: core.int,
    RENDERBUFFER_INTERNAL_FORMAT: core.int,
    RENDERBUFFER_RED_SIZE: core.int,
    RENDERBUFFER_STENCIL_SIZE: core.int,
    RENDERBUFFER_WIDTH: core.int,
    RENDERER: core.int,
    REPEAT: core.int,
    REPLACE: core.int,
    RGB: core.int,
    RGB565: core.int,
    RGB5_A1: core.int,
    RGBA: core.int,
    RGBA4: core.int,
    SAMPLER_2D: core.int,
    SAMPLER_CUBE: core.int,
    SAMPLES: core.int,
    SAMPLE_ALPHA_TO_COVERAGE: core.int,
    SAMPLE_BUFFERS: core.int,
    SAMPLE_COVERAGE: core.int,
    SAMPLE_COVERAGE_INVERT: core.int,
    SAMPLE_COVERAGE_VALUE: core.int,
    SCISSOR_BOX: core.int,
    SCISSOR_TEST: core.int,
    SHADER_TYPE: core.int,
    SHADING_LANGUAGE_VERSION: core.int,
    SHORT: core.int,
    SRC_ALPHA: core.int,
    SRC_ALPHA_SATURATE: core.int,
    SRC_COLOR: core.int,
    STATIC_DRAW: core.int,
    STENCIL_ATTACHMENT: core.int,
    STENCIL_BACK_FAIL: core.int,
    STENCIL_BACK_FUNC: core.int,
    STENCIL_BACK_PASS_DEPTH_FAIL: core.int,
    STENCIL_BACK_PASS_DEPTH_PASS: core.int,
    STENCIL_BACK_REF: core.int,
    STENCIL_BACK_VALUE_MASK: core.int,
    STENCIL_BACK_WRITEMASK: core.int,
    STENCIL_BITS: core.int,
    STENCIL_BUFFER_BIT: core.int,
    STENCIL_CLEAR_VALUE: core.int,
    STENCIL_FAIL: core.int,
    STENCIL_FUNC: core.int,
    STENCIL_INDEX: core.int,
    STENCIL_INDEX8: core.int,
    STENCIL_PASS_DEPTH_FAIL: core.int,
    STENCIL_PASS_DEPTH_PASS: core.int,
    STENCIL_REF: core.int,
    STENCIL_TEST: core.int,
    STENCIL_VALUE_MASK: core.int,
    STENCIL_WRITEMASK: core.int,
    STREAM_DRAW: core.int,
    SUBPIXEL_BITS: core.int,
    TEXTURE: core.int,
    TEXTURE0: core.int,
    TEXTURE1: core.int,
    TEXTURE10: core.int,
    TEXTURE11: core.int,
    TEXTURE12: core.int,
    TEXTURE13: core.int,
    TEXTURE14: core.int,
    TEXTURE15: core.int,
    TEXTURE16: core.int,
    TEXTURE17: core.int,
    TEXTURE18: core.int,
    TEXTURE19: core.int,
    TEXTURE2: core.int,
    TEXTURE20: core.int,
    TEXTURE21: core.int,
    TEXTURE22: core.int,
    TEXTURE23: core.int,
    TEXTURE24: core.int,
    TEXTURE25: core.int,
    TEXTURE26: core.int,
    TEXTURE27: core.int,
    TEXTURE28: core.int,
    TEXTURE29: core.int,
    TEXTURE3: core.int,
    TEXTURE30: core.int,
    TEXTURE31: core.int,
    TEXTURE4: core.int,
    TEXTURE5: core.int,
    TEXTURE6: core.int,
    TEXTURE7: core.int,
    TEXTURE8: core.int,
    TEXTURE9: core.int,
    TEXTURE_2D: core.int,
    TEXTURE_BINDING_2D: core.int,
    TEXTURE_BINDING_CUBE_MAP: core.int,
    TEXTURE_CUBE_MAP: core.int,
    TEXTURE_CUBE_MAP_NEGATIVE_X: core.int,
    TEXTURE_CUBE_MAP_NEGATIVE_Y: core.int,
    TEXTURE_CUBE_MAP_NEGATIVE_Z: core.int,
    TEXTURE_CUBE_MAP_POSITIVE_X: core.int,
    TEXTURE_CUBE_MAP_POSITIVE_Y: core.int,
    TEXTURE_CUBE_MAP_POSITIVE_Z: core.int,
    TEXTURE_MAG_FILTER: core.int,
    TEXTURE_MIN_FILTER: core.int,
    TEXTURE_WRAP_S: core.int,
    TEXTURE_WRAP_T: core.int,
    TRIANGLES: core.int,
    TRIANGLE_FAN: core.int,
    TRIANGLE_STRIP: core.int,
    UNPACK_ALIGNMENT: core.int,
    UNPACK_COLORSPACE_CONVERSION_WEBGL: core.int,
    UNPACK_FLIP_Y_WEBGL: core.int,
    UNPACK_PREMULTIPLY_ALPHA_WEBGL: core.int,
    UNSIGNED_BYTE: core.int,
    UNSIGNED_INT: core.int,
    UNSIGNED_SHORT: core.int,
    UNSIGNED_SHORT_4_4_4_4: core.int,
    UNSIGNED_SHORT_5_5_5_1: core.int,
    UNSIGNED_SHORT_5_6_5: core.int,
    VALIDATE_STATUS: core.int,
    VENDOR: core.int,
    VERSION: core.int,
    VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: core.int,
    VERTEX_ATTRIB_ARRAY_ENABLED: core.int,
    VERTEX_ATTRIB_ARRAY_NORMALIZED: core.int,
    VERTEX_ATTRIB_ARRAY_POINTER: core.int,
    VERTEX_ATTRIB_ARRAY_SIZE: core.int,
    VERTEX_ATTRIB_ARRAY_STRIDE: core.int,
    VERTEX_ATTRIB_ARRAY_TYPE: core.int,
    VERTEX_SHADER: core.int,
    VIEWPORT: core.int,
    ZERO: core.int
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
web_gl.RenderingContext.ACTIVE_ATTRIBUTES = 35721;
web_gl.RenderingContext.ACTIVE_TEXTURE = 34016;
web_gl.RenderingContext.ACTIVE_UNIFORMS = 35718;
web_gl.RenderingContext.ALIASED_LINE_WIDTH_RANGE = 33902;
web_gl.RenderingContext.ALIASED_POINT_SIZE_RANGE = 33901;
web_gl.RenderingContext.ALPHA = 6406;
web_gl.RenderingContext.ALPHA_BITS = 3413;
web_gl.RenderingContext.ALWAYS = 519;
web_gl.RenderingContext.ARRAY_BUFFER = 34962;
web_gl.RenderingContext.ARRAY_BUFFER_BINDING = 34964;
web_gl.RenderingContext.ATTACHED_SHADERS = 35717;
web_gl.RenderingContext.BACK = 1029;
web_gl.RenderingContext.BLEND = 3042;
web_gl.RenderingContext.BLEND_COLOR = 32773;
web_gl.RenderingContext.BLEND_DST_ALPHA = 32970;
web_gl.RenderingContext.BLEND_DST_RGB = 32968;
web_gl.RenderingContext.BLEND_EQUATION = 32777;
web_gl.RenderingContext.BLEND_EQUATION_ALPHA = 34877;
web_gl.RenderingContext.BLEND_EQUATION_RGB = 32777;
web_gl.RenderingContext.BLEND_SRC_ALPHA = 32971;
web_gl.RenderingContext.BLEND_SRC_RGB = 32969;
web_gl.RenderingContext.BLUE_BITS = 3412;
web_gl.RenderingContext.BOOL = 35670;
web_gl.RenderingContext.BOOL_VEC2 = 35671;
web_gl.RenderingContext.BOOL_VEC3 = 35672;
web_gl.RenderingContext.BOOL_VEC4 = 35673;
web_gl.RenderingContext.BROWSER_DEFAULT_WEBGL = 37444;
web_gl.RenderingContext.BUFFER_SIZE = 34660;
web_gl.RenderingContext.BUFFER_USAGE = 34661;
web_gl.RenderingContext.BYTE = 5120;
web_gl.RenderingContext.CCW = 2305;
web_gl.RenderingContext.CLAMP_TO_EDGE = 33071;
web_gl.RenderingContext.COLOR_ATTACHMENT0 = 36064;
web_gl.RenderingContext.COLOR_BUFFER_BIT = 16384;
web_gl.RenderingContext.COLOR_CLEAR_VALUE = 3106;
web_gl.RenderingContext.COLOR_WRITEMASK = 3107;
web_gl.RenderingContext.COMPILE_STATUS = 35713;
web_gl.RenderingContext.COMPRESSED_TEXTURE_FORMATS = 34467;
web_gl.RenderingContext.CONSTANT_ALPHA = 32771;
web_gl.RenderingContext.CONSTANT_COLOR = 32769;
web_gl.RenderingContext.CONTEXT_LOST_WEBGL = 37442;
web_gl.RenderingContext.CULL_FACE = 2884;
web_gl.RenderingContext.CULL_FACE_MODE = 2885;
web_gl.RenderingContext.CURRENT_PROGRAM = 35725;
web_gl.RenderingContext.CURRENT_VERTEX_ATTRIB = 34342;
web_gl.RenderingContext.CW = 2304;
web_gl.RenderingContext.DECR = 7683;
web_gl.RenderingContext.DECR_WRAP = 34056;
web_gl.RenderingContext.DELETE_STATUS = 35712;
web_gl.RenderingContext.DEPTH_ATTACHMENT = 36096;
web_gl.RenderingContext.DEPTH_BITS = 3414;
web_gl.RenderingContext.DEPTH_BUFFER_BIT = 256;
web_gl.RenderingContext.DEPTH_CLEAR_VALUE = 2931;
web_gl.RenderingContext.DEPTH_COMPONENT = 6402;
web_gl.RenderingContext.DEPTH_COMPONENT16 = 33189;
web_gl.RenderingContext.DEPTH_FUNC = 2932;
web_gl.RenderingContext.DEPTH_RANGE = 2928;
web_gl.RenderingContext.DEPTH_STENCIL = 34041;
web_gl.RenderingContext.DEPTH_STENCIL_ATTACHMENT = 33306;
web_gl.RenderingContext.DEPTH_TEST = 2929;
web_gl.RenderingContext.DEPTH_WRITEMASK = 2930;
web_gl.RenderingContext.DITHER = 3024;
web_gl.RenderingContext.DONT_CARE = 4352;
web_gl.RenderingContext.DST_ALPHA = 772;
web_gl.RenderingContext.DST_COLOR = 774;
web_gl.RenderingContext.DYNAMIC_DRAW = 35048;
web_gl.RenderingContext.ELEMENT_ARRAY_BUFFER = 34963;
web_gl.RenderingContext.ELEMENT_ARRAY_BUFFER_BINDING = 34965;
web_gl.RenderingContext.EQUAL = 514;
web_gl.RenderingContext.FASTEST = 4353;
web_gl.RenderingContext.FLOAT = 5126;
web_gl.RenderingContext.FLOAT_MAT2 = 35674;
web_gl.RenderingContext.FLOAT_MAT3 = 35675;
web_gl.RenderingContext.FLOAT_MAT4 = 35676;
web_gl.RenderingContext.FLOAT_VEC2 = 35664;
web_gl.RenderingContext.FLOAT_VEC3 = 35665;
web_gl.RenderingContext.FLOAT_VEC4 = 35666;
web_gl.RenderingContext.FRAGMENT_SHADER = 35632;
web_gl.RenderingContext.FRAMEBUFFER = 36160;
web_gl.RenderingContext.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049;
web_gl.RenderingContext.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048;
web_gl.RenderingContext.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051;
web_gl.RenderingContext.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050;
web_gl.RenderingContext.FRAMEBUFFER_BINDING = 36006;
web_gl.RenderingContext.FRAMEBUFFER_COMPLETE = 36053;
web_gl.RenderingContext.FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054;
web_gl.RenderingContext.FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057;
web_gl.RenderingContext.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055;
web_gl.RenderingContext.FRAMEBUFFER_UNSUPPORTED = 36061;
web_gl.RenderingContext.FRONT = 1028;
web_gl.RenderingContext.FRONT_AND_BACK = 1032;
web_gl.RenderingContext.FRONT_FACE = 2886;
web_gl.RenderingContext.FUNC_ADD = 32774;
web_gl.RenderingContext.FUNC_REVERSE_SUBTRACT = 32779;
web_gl.RenderingContext.FUNC_SUBTRACT = 32778;
web_gl.RenderingContext.GENERATE_MIPMAP_HINT = 33170;
web_gl.RenderingContext.GEQUAL = 518;
web_gl.RenderingContext.GREATER = 516;
web_gl.RenderingContext.GREEN_BITS = 3411;
web_gl.RenderingContext.HIGH_FLOAT = 36338;
web_gl.RenderingContext.HIGH_INT = 36341;
web_gl.RenderingContext.IMPLEMENTATION_COLOR_READ_FORMAT = 35739;
web_gl.RenderingContext.IMPLEMENTATION_COLOR_READ_TYPE = 35738;
web_gl.RenderingContext.INCR = 7682;
web_gl.RenderingContext.INCR_WRAP = 34055;
web_gl.RenderingContext.INT = 5124;
web_gl.RenderingContext.INT_VEC2 = 35667;
web_gl.RenderingContext.INT_VEC3 = 35668;
web_gl.RenderingContext.INT_VEC4 = 35669;
web_gl.RenderingContext.INVALID_ENUM = 1280;
web_gl.RenderingContext.INVALID_FRAMEBUFFER_OPERATION = 1286;
web_gl.RenderingContext.INVALID_OPERATION = 1282;
web_gl.RenderingContext.INVALID_VALUE = 1281;
web_gl.RenderingContext.INVERT = 5386;
web_gl.RenderingContext.KEEP = 7680;
web_gl.RenderingContext.LEQUAL = 515;
web_gl.RenderingContext.LESS = 513;
web_gl.RenderingContext.LINEAR = 9729;
web_gl.RenderingContext.LINEAR_MIPMAP_LINEAR = 9987;
web_gl.RenderingContext.LINEAR_MIPMAP_NEAREST = 9985;
web_gl.RenderingContext.LINES = 1;
web_gl.RenderingContext.LINE_LOOP = 2;
web_gl.RenderingContext.LINE_STRIP = 3;
web_gl.RenderingContext.LINE_WIDTH = 2849;
web_gl.RenderingContext.LINK_STATUS = 35714;
web_gl.RenderingContext.LOW_FLOAT = 36336;
web_gl.RenderingContext.LOW_INT = 36339;
web_gl.RenderingContext.LUMINANCE = 6409;
web_gl.RenderingContext.LUMINANCE_ALPHA = 6410;
web_gl.RenderingContext.MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661;
web_gl.RenderingContext.MAX_CUBE_MAP_TEXTURE_SIZE = 34076;
web_gl.RenderingContext.MAX_FRAGMENT_UNIFORM_VECTORS = 36349;
web_gl.RenderingContext.MAX_RENDERBUFFER_SIZE = 34024;
web_gl.RenderingContext.MAX_TEXTURE_IMAGE_UNITS = 34930;
web_gl.RenderingContext.MAX_TEXTURE_SIZE = 3379;
web_gl.RenderingContext.MAX_VARYING_VECTORS = 36348;
web_gl.RenderingContext.MAX_VERTEX_ATTRIBS = 34921;
web_gl.RenderingContext.MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660;
web_gl.RenderingContext.MAX_VERTEX_UNIFORM_VECTORS = 36347;
web_gl.RenderingContext.MAX_VIEWPORT_DIMS = 3386;
web_gl.RenderingContext.MEDIUM_FLOAT = 36337;
web_gl.RenderingContext.MEDIUM_INT = 36340;
web_gl.RenderingContext.MIRRORED_REPEAT = 33648;
web_gl.RenderingContext.NEAREST = 9728;
web_gl.RenderingContext.NEAREST_MIPMAP_LINEAR = 9986;
web_gl.RenderingContext.NEAREST_MIPMAP_NEAREST = 9984;
web_gl.RenderingContext.NEVER = 512;
web_gl.RenderingContext.NICEST = 4354;
web_gl.RenderingContext.NONE = 0;
web_gl.RenderingContext.NOTEQUAL = 517;
web_gl.RenderingContext.NO_ERROR = 0;
web_gl.RenderingContext.ONE = 1;
web_gl.RenderingContext.ONE_MINUS_CONSTANT_ALPHA = 32772;
web_gl.RenderingContext.ONE_MINUS_CONSTANT_COLOR = 32770;
web_gl.RenderingContext.ONE_MINUS_DST_ALPHA = 773;
web_gl.RenderingContext.ONE_MINUS_DST_COLOR = 775;
web_gl.RenderingContext.ONE_MINUS_SRC_ALPHA = 771;
web_gl.RenderingContext.ONE_MINUS_SRC_COLOR = 769;
web_gl.RenderingContext.OUT_OF_MEMORY = 1285;
web_gl.RenderingContext.PACK_ALIGNMENT = 3333;
web_gl.RenderingContext.POINTS = 0;
web_gl.RenderingContext.POLYGON_OFFSET_FACTOR = 32824;
web_gl.RenderingContext.POLYGON_OFFSET_FILL = 32823;
web_gl.RenderingContext.POLYGON_OFFSET_UNITS = 10752;
web_gl.RenderingContext.RED_BITS = 3410;
web_gl.RenderingContext.RENDERBUFFER = 36161;
web_gl.RenderingContext.RENDERBUFFER_ALPHA_SIZE = 36179;
web_gl.RenderingContext.RENDERBUFFER_BINDING = 36007;
web_gl.RenderingContext.RENDERBUFFER_BLUE_SIZE = 36178;
web_gl.RenderingContext.RENDERBUFFER_DEPTH_SIZE = 36180;
web_gl.RenderingContext.RENDERBUFFER_GREEN_SIZE = 36177;
web_gl.RenderingContext.RENDERBUFFER_HEIGHT = 36163;
web_gl.RenderingContext.RENDERBUFFER_INTERNAL_FORMAT = 36164;
web_gl.RenderingContext.RENDERBUFFER_RED_SIZE = 36176;
web_gl.RenderingContext.RENDERBUFFER_STENCIL_SIZE = 36181;
web_gl.RenderingContext.RENDERBUFFER_WIDTH = 36162;
web_gl.RenderingContext.RENDERER = 7937;
web_gl.RenderingContext.REPEAT = 10497;
web_gl.RenderingContext.REPLACE = 7681;
web_gl.RenderingContext.RGB = 6407;
web_gl.RenderingContext.RGB565 = 36194;
web_gl.RenderingContext.RGB5_A1 = 32855;
web_gl.RenderingContext.RGBA = 6408;
web_gl.RenderingContext.RGBA4 = 32854;
web_gl.RenderingContext.SAMPLER_2D = 35678;
web_gl.RenderingContext.SAMPLER_CUBE = 35680;
web_gl.RenderingContext.SAMPLES = 32937;
web_gl.RenderingContext.SAMPLE_ALPHA_TO_COVERAGE = 32926;
web_gl.RenderingContext.SAMPLE_BUFFERS = 32936;
web_gl.RenderingContext.SAMPLE_COVERAGE = 32928;
web_gl.RenderingContext.SAMPLE_COVERAGE_INVERT = 32939;
web_gl.RenderingContext.SAMPLE_COVERAGE_VALUE = 32938;
web_gl.RenderingContext.SCISSOR_BOX = 3088;
web_gl.RenderingContext.SCISSOR_TEST = 3089;
web_gl.RenderingContext.SHADER_TYPE = 35663;
web_gl.RenderingContext.SHADING_LANGUAGE_VERSION = 35724;
web_gl.RenderingContext.SHORT = 5122;
web_gl.RenderingContext.SRC_ALPHA = 770;
web_gl.RenderingContext.SRC_ALPHA_SATURATE = 776;
web_gl.RenderingContext.SRC_COLOR = 768;
web_gl.RenderingContext.STATIC_DRAW = 35044;
web_gl.RenderingContext.STENCIL_ATTACHMENT = 36128;
web_gl.RenderingContext.STENCIL_BACK_FAIL = 34817;
web_gl.RenderingContext.STENCIL_BACK_FUNC = 34816;
web_gl.RenderingContext.STENCIL_BACK_PASS_DEPTH_FAIL = 34818;
web_gl.RenderingContext.STENCIL_BACK_PASS_DEPTH_PASS = 34819;
web_gl.RenderingContext.STENCIL_BACK_REF = 36003;
web_gl.RenderingContext.STENCIL_BACK_VALUE_MASK = 36004;
web_gl.RenderingContext.STENCIL_BACK_WRITEMASK = 36005;
web_gl.RenderingContext.STENCIL_BITS = 3415;
web_gl.RenderingContext.STENCIL_BUFFER_BIT = 1024;
web_gl.RenderingContext.STENCIL_CLEAR_VALUE = 2961;
web_gl.RenderingContext.STENCIL_FAIL = 2964;
web_gl.RenderingContext.STENCIL_FUNC = 2962;
web_gl.RenderingContext.STENCIL_INDEX = 6401;
web_gl.RenderingContext.STENCIL_INDEX8 = 36168;
web_gl.RenderingContext.STENCIL_PASS_DEPTH_FAIL = 2965;
web_gl.RenderingContext.STENCIL_PASS_DEPTH_PASS = 2966;
web_gl.RenderingContext.STENCIL_REF = 2967;
web_gl.RenderingContext.STENCIL_TEST = 2960;
web_gl.RenderingContext.STENCIL_VALUE_MASK = 2963;
web_gl.RenderingContext.STENCIL_WRITEMASK = 2968;
web_gl.RenderingContext.STREAM_DRAW = 35040;
web_gl.RenderingContext.SUBPIXEL_BITS = 3408;
web_gl.RenderingContext.TEXTURE = 5890;
web_gl.RenderingContext.TEXTURE0 = 33984;
web_gl.RenderingContext.TEXTURE1 = 33985;
web_gl.RenderingContext.TEXTURE10 = 33994;
web_gl.RenderingContext.TEXTURE11 = 33995;
web_gl.RenderingContext.TEXTURE12 = 33996;
web_gl.RenderingContext.TEXTURE13 = 33997;
web_gl.RenderingContext.TEXTURE14 = 33998;
web_gl.RenderingContext.TEXTURE15 = 33999;
web_gl.RenderingContext.TEXTURE16 = 34000;
web_gl.RenderingContext.TEXTURE17 = 34001;
web_gl.RenderingContext.TEXTURE18 = 34002;
web_gl.RenderingContext.TEXTURE19 = 34003;
web_gl.RenderingContext.TEXTURE2 = 33986;
web_gl.RenderingContext.TEXTURE20 = 34004;
web_gl.RenderingContext.TEXTURE21 = 34005;
web_gl.RenderingContext.TEXTURE22 = 34006;
web_gl.RenderingContext.TEXTURE23 = 34007;
web_gl.RenderingContext.TEXTURE24 = 34008;
web_gl.RenderingContext.TEXTURE25 = 34009;
web_gl.RenderingContext.TEXTURE26 = 34010;
web_gl.RenderingContext.TEXTURE27 = 34011;
web_gl.RenderingContext.TEXTURE28 = 34012;
web_gl.RenderingContext.TEXTURE29 = 34013;
web_gl.RenderingContext.TEXTURE3 = 33987;
web_gl.RenderingContext.TEXTURE30 = 34014;
web_gl.RenderingContext.TEXTURE31 = 34015;
web_gl.RenderingContext.TEXTURE4 = 33988;
web_gl.RenderingContext.TEXTURE5 = 33989;
web_gl.RenderingContext.TEXTURE6 = 33990;
web_gl.RenderingContext.TEXTURE7 = 33991;
web_gl.RenderingContext.TEXTURE8 = 33992;
web_gl.RenderingContext.TEXTURE9 = 33993;
web_gl.RenderingContext.TEXTURE_2D = 3553;
web_gl.RenderingContext.TEXTURE_BINDING_2D = 32873;
web_gl.RenderingContext.TEXTURE_BINDING_CUBE_MAP = 34068;
web_gl.RenderingContext.TEXTURE_CUBE_MAP = 34067;
web_gl.RenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070;
web_gl.RenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072;
web_gl.RenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074;
web_gl.RenderingContext.TEXTURE_CUBE_MAP_POSITIVE_X = 34069;
web_gl.RenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071;
web_gl.RenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073;
web_gl.RenderingContext.TEXTURE_MAG_FILTER = 10240;
web_gl.RenderingContext.TEXTURE_MIN_FILTER = 10241;
web_gl.RenderingContext.TEXTURE_WRAP_S = 10242;
web_gl.RenderingContext.TEXTURE_WRAP_T = 10243;
web_gl.RenderingContext.TRIANGLES = 4;
web_gl.RenderingContext.TRIANGLE_FAN = 6;
web_gl.RenderingContext.TRIANGLE_STRIP = 5;
web_gl.RenderingContext.UNPACK_ALIGNMENT = 3317;
web_gl.RenderingContext.UNPACK_COLORSPACE_CONVERSION_WEBGL = 37443;
web_gl.RenderingContext.UNPACK_FLIP_Y_WEBGL = 37440;
web_gl.RenderingContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL = 37441;
web_gl.RenderingContext.UNSIGNED_BYTE = 5121;
web_gl.RenderingContext.UNSIGNED_INT = 5125;
web_gl.RenderingContext.UNSIGNED_SHORT = 5123;
web_gl.RenderingContext.UNSIGNED_SHORT_4_4_4_4 = 32819;
web_gl.RenderingContext.UNSIGNED_SHORT_5_5_5_1 = 32820;
web_gl.RenderingContext.UNSIGNED_SHORT_5_6_5 = 33635;
web_gl.RenderingContext.VALIDATE_STATUS = 35715;
web_gl.RenderingContext.VENDOR = 7936;
web_gl.RenderingContext.VERSION = 7938;
web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975;
web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_ENABLED = 34338;
web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922;
web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_POINTER = 34373;
web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_SIZE = 34339;
web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_STRIDE = 34340;
web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_TYPE = 34341;
web_gl.RenderingContext.VERTEX_SHADER = 35633;
web_gl.RenderingContext.VIEWPORT = 2978;
web_gl.RenderingContext.ZERO = 0;
dart.registerExtension(dart.global.WebGLRenderingContext, web_gl.RenderingContext);
web_gl.ACTIVE_ATTRIBUTES = web_gl.RenderingContext.ACTIVE_ATTRIBUTES;
web_gl.ACTIVE_TEXTURE = web_gl.RenderingContext.ACTIVE_TEXTURE;
web_gl.ACTIVE_UNIFORMS = web_gl.RenderingContext.ACTIVE_UNIFORMS;
web_gl.ALIASED_LINE_WIDTH_RANGE = web_gl.RenderingContext.ALIASED_LINE_WIDTH_RANGE;
web_gl.ALIASED_POINT_SIZE_RANGE = web_gl.RenderingContext.ALIASED_POINT_SIZE_RANGE;
web_gl.ALPHA = web_gl.RenderingContext.ALPHA;
web_gl.ALPHA_BITS = web_gl.RenderingContext.ALPHA_BITS;
web_gl.ALWAYS = web_gl.RenderingContext.ALWAYS;
web_gl.ARRAY_BUFFER = web_gl.RenderingContext.ARRAY_BUFFER;
web_gl.ARRAY_BUFFER_BINDING = web_gl.RenderingContext.ARRAY_BUFFER_BINDING;
web_gl.ATTACHED_SHADERS = web_gl.RenderingContext.ATTACHED_SHADERS;
web_gl.BACK = web_gl.RenderingContext.BACK;
web_gl.BLEND = web_gl.RenderingContext.BLEND;
web_gl.BLEND_COLOR = web_gl.RenderingContext.BLEND_COLOR;
web_gl.BLEND_DST_ALPHA = web_gl.RenderingContext.BLEND_DST_ALPHA;
web_gl.BLEND_DST_RGB = web_gl.RenderingContext.BLEND_DST_RGB;
web_gl.BLEND_EQUATION = web_gl.RenderingContext.BLEND_EQUATION;
web_gl.BLEND_EQUATION_ALPHA = web_gl.RenderingContext.BLEND_EQUATION_ALPHA;
web_gl.BLEND_EQUATION_RGB = web_gl.RenderingContext.BLEND_EQUATION_RGB;
web_gl.BLEND_SRC_ALPHA = web_gl.RenderingContext.BLEND_SRC_ALPHA;
web_gl.BLEND_SRC_RGB = web_gl.RenderingContext.BLEND_SRC_RGB;
web_gl.BLUE_BITS = web_gl.RenderingContext.BLUE_BITS;
web_gl.BOOL = web_gl.RenderingContext.BOOL;
web_gl.BOOL_VEC2 = web_gl.RenderingContext.BOOL_VEC2;
web_gl.BOOL_VEC3 = web_gl.RenderingContext.BOOL_VEC3;
web_gl.BOOL_VEC4 = web_gl.RenderingContext.BOOL_VEC4;
web_gl.BROWSER_DEFAULT_WEBGL = web_gl.RenderingContext.BROWSER_DEFAULT_WEBGL;
web_gl.BUFFER_SIZE = web_gl.RenderingContext.BUFFER_SIZE;
web_gl.BUFFER_USAGE = web_gl.RenderingContext.BUFFER_USAGE;
web_gl.BYTE = web_gl.RenderingContext.BYTE;
web_gl.CCW = web_gl.RenderingContext.CCW;
web_gl.CLAMP_TO_EDGE = web_gl.RenderingContext.CLAMP_TO_EDGE;
web_gl.COLOR_ATTACHMENT0 = web_gl.RenderingContext.COLOR_ATTACHMENT0;
web_gl.COLOR_BUFFER_BIT = web_gl.RenderingContext.COLOR_BUFFER_BIT;
web_gl.COLOR_CLEAR_VALUE = web_gl.RenderingContext.COLOR_CLEAR_VALUE;
web_gl.COLOR_WRITEMASK = web_gl.RenderingContext.COLOR_WRITEMASK;
web_gl.COMPILE_STATUS = web_gl.RenderingContext.COMPILE_STATUS;
web_gl.COMPRESSED_TEXTURE_FORMATS = web_gl.RenderingContext.COMPRESSED_TEXTURE_FORMATS;
web_gl.CONSTANT_ALPHA = web_gl.RenderingContext.CONSTANT_ALPHA;
web_gl.CONSTANT_COLOR = web_gl.RenderingContext.CONSTANT_COLOR;
web_gl.CONTEXT_LOST_WEBGL = web_gl.RenderingContext.CONTEXT_LOST_WEBGL;
web_gl.CULL_FACE = web_gl.RenderingContext.CULL_FACE;
web_gl.CULL_FACE_MODE = web_gl.RenderingContext.CULL_FACE_MODE;
web_gl.CURRENT_PROGRAM = web_gl.RenderingContext.CURRENT_PROGRAM;
web_gl.CURRENT_VERTEX_ATTRIB = web_gl.RenderingContext.CURRENT_VERTEX_ATTRIB;
web_gl.CW = web_gl.RenderingContext.CW;
web_gl.DECR = web_gl.RenderingContext.DECR;
web_gl.DECR_WRAP = web_gl.RenderingContext.DECR_WRAP;
web_gl.DELETE_STATUS = web_gl.RenderingContext.DELETE_STATUS;
web_gl.DEPTH_ATTACHMENT = web_gl.RenderingContext.DEPTH_ATTACHMENT;
web_gl.DEPTH_BITS = web_gl.RenderingContext.DEPTH_BITS;
web_gl.DEPTH_BUFFER_BIT = web_gl.RenderingContext.DEPTH_BUFFER_BIT;
web_gl.DEPTH_CLEAR_VALUE = web_gl.RenderingContext.DEPTH_CLEAR_VALUE;
web_gl.DEPTH_COMPONENT = web_gl.RenderingContext.DEPTH_COMPONENT;
web_gl.DEPTH_COMPONENT16 = web_gl.RenderingContext.DEPTH_COMPONENT16;
web_gl.DEPTH_FUNC = web_gl.RenderingContext.DEPTH_FUNC;
web_gl.DEPTH_RANGE = web_gl.RenderingContext.DEPTH_RANGE;
web_gl.DEPTH_STENCIL = web_gl.RenderingContext.DEPTH_STENCIL;
web_gl.DEPTH_STENCIL_ATTACHMENT = web_gl.RenderingContext.DEPTH_STENCIL_ATTACHMENT;
web_gl.DEPTH_TEST = web_gl.RenderingContext.DEPTH_TEST;
web_gl.DEPTH_WRITEMASK = web_gl.RenderingContext.DEPTH_WRITEMASK;
web_gl.DITHER = web_gl.RenderingContext.DITHER;
web_gl.DONT_CARE = web_gl.RenderingContext.DONT_CARE;
web_gl.DST_ALPHA = web_gl.RenderingContext.DST_ALPHA;
web_gl.DST_COLOR = web_gl.RenderingContext.DST_COLOR;
web_gl.DYNAMIC_DRAW = web_gl.RenderingContext.DYNAMIC_DRAW;
web_gl.ELEMENT_ARRAY_BUFFER = web_gl.RenderingContext.ELEMENT_ARRAY_BUFFER;
web_gl.ELEMENT_ARRAY_BUFFER_BINDING = web_gl.RenderingContext.ELEMENT_ARRAY_BUFFER_BINDING;
web_gl.EQUAL = web_gl.RenderingContext.EQUAL;
web_gl.FASTEST = web_gl.RenderingContext.FASTEST;
web_gl.FLOAT = web_gl.RenderingContext.FLOAT;
web_gl.FLOAT_MAT2 = web_gl.RenderingContext.FLOAT_MAT2;
web_gl.FLOAT_MAT3 = web_gl.RenderingContext.FLOAT_MAT3;
web_gl.FLOAT_MAT4 = web_gl.RenderingContext.FLOAT_MAT4;
web_gl.FLOAT_VEC2 = web_gl.RenderingContext.FLOAT_VEC2;
web_gl.FLOAT_VEC3 = web_gl.RenderingContext.FLOAT_VEC3;
web_gl.FLOAT_VEC4 = web_gl.RenderingContext.FLOAT_VEC4;
web_gl.FRAGMENT_SHADER = web_gl.RenderingContext.FRAGMENT_SHADER;
web_gl.FRAMEBUFFER = web_gl.RenderingContext.FRAMEBUFFER;
web_gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = web_gl.RenderingContext.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME;
web_gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = web_gl.RenderingContext.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE;
web_gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = web_gl.RenderingContext.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE;
web_gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = web_gl.RenderingContext.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL;
web_gl.FRAMEBUFFER_BINDING = web_gl.RenderingContext.FRAMEBUFFER_BINDING;
web_gl.FRAMEBUFFER_COMPLETE = web_gl.RenderingContext.FRAMEBUFFER_COMPLETE;
web_gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT = web_gl.RenderingContext.FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
web_gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS = web_gl.RenderingContext.FRAMEBUFFER_INCOMPLETE_DIMENSIONS;
web_gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = web_gl.RenderingContext.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT;
web_gl.FRAMEBUFFER_UNSUPPORTED = web_gl.RenderingContext.FRAMEBUFFER_UNSUPPORTED;
web_gl.FRONT = web_gl.RenderingContext.FRONT;
web_gl.FRONT_AND_BACK = web_gl.RenderingContext.FRONT_AND_BACK;
web_gl.FRONT_FACE = web_gl.RenderingContext.FRONT_FACE;
web_gl.FUNC_ADD = web_gl.RenderingContext.FUNC_ADD;
web_gl.FUNC_REVERSE_SUBTRACT = web_gl.RenderingContext.FUNC_REVERSE_SUBTRACT;
web_gl.FUNC_SUBTRACT = web_gl.RenderingContext.FUNC_SUBTRACT;
web_gl.GENERATE_MIPMAP_HINT = web_gl.RenderingContext.GENERATE_MIPMAP_HINT;
web_gl.GEQUAL = web_gl.RenderingContext.GEQUAL;
web_gl.GREATER = web_gl.RenderingContext.GREATER;
web_gl.GREEN_BITS = web_gl.RenderingContext.GREEN_BITS;
web_gl.OesTextureHalfFloat = class OesTextureHalfFloat extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.OesTextureHalfFloat, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.OesTextureHalfFloat, [])}),
  sfields: () => ({HALF_FLOAT_OES: core.int})
});
web_gl.OesTextureHalfFloat.HALF_FLOAT_OES = 36193;
dart.registerExtension(dart.global.OESTextureHalfFloat, web_gl.OesTextureHalfFloat);
web_gl.HALF_FLOAT_OES = web_gl.OesTextureHalfFloat.HALF_FLOAT_OES;
web_gl.HIGH_FLOAT = web_gl.RenderingContext.HIGH_FLOAT;
web_gl.HIGH_INT = web_gl.RenderingContext.HIGH_INT;
web_gl.INCR = web_gl.RenderingContext.INCR;
web_gl.INCR_WRAP = web_gl.RenderingContext.INCR_WRAP;
web_gl.INT = web_gl.RenderingContext.INT;
web_gl.INT_VEC2 = web_gl.RenderingContext.INT_VEC2;
web_gl.INT_VEC3 = web_gl.RenderingContext.INT_VEC3;
web_gl.INT_VEC4 = web_gl.RenderingContext.INT_VEC4;
web_gl.INVALID_ENUM = web_gl.RenderingContext.INVALID_ENUM;
web_gl.INVALID_FRAMEBUFFER_OPERATION = web_gl.RenderingContext.INVALID_FRAMEBUFFER_OPERATION;
web_gl.INVALID_OPERATION = web_gl.RenderingContext.INVALID_OPERATION;
web_gl.INVALID_VALUE = web_gl.RenderingContext.INVALID_VALUE;
web_gl.INVERT = web_gl.RenderingContext.INVERT;
web_gl.KEEP = web_gl.RenderingContext.KEEP;
web_gl.LEQUAL = web_gl.RenderingContext.LEQUAL;
web_gl.LESS = web_gl.RenderingContext.LESS;
web_gl.LINEAR = web_gl.RenderingContext.LINEAR;
web_gl.LINEAR_MIPMAP_LINEAR = web_gl.RenderingContext.LINEAR_MIPMAP_LINEAR;
web_gl.LINEAR_MIPMAP_NEAREST = web_gl.RenderingContext.LINEAR_MIPMAP_NEAREST;
web_gl.LINES = web_gl.RenderingContext.LINES;
web_gl.LINE_LOOP = web_gl.RenderingContext.LINE_LOOP;
web_gl.LINE_STRIP = web_gl.RenderingContext.LINE_STRIP;
web_gl.LINE_WIDTH = web_gl.RenderingContext.LINE_WIDTH;
web_gl.LINK_STATUS = web_gl.RenderingContext.LINK_STATUS;
web_gl.LOW_FLOAT = web_gl.RenderingContext.LOW_FLOAT;
web_gl.LOW_INT = web_gl.RenderingContext.LOW_INT;
web_gl.LUMINANCE = web_gl.RenderingContext.LUMINANCE;
web_gl.LUMINANCE_ALPHA = web_gl.RenderingContext.LUMINANCE_ALPHA;
web_gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS = web_gl.RenderingContext.MAX_COMBINED_TEXTURE_IMAGE_UNITS;
web_gl.MAX_CUBE_MAP_TEXTURE_SIZE = web_gl.RenderingContext.MAX_CUBE_MAP_TEXTURE_SIZE;
web_gl.MAX_FRAGMENT_UNIFORM_VECTORS = web_gl.RenderingContext.MAX_FRAGMENT_UNIFORM_VECTORS;
web_gl.MAX_RENDERBUFFER_SIZE = web_gl.RenderingContext.MAX_RENDERBUFFER_SIZE;
web_gl.MAX_TEXTURE_IMAGE_UNITS = web_gl.RenderingContext.MAX_TEXTURE_IMAGE_UNITS;
web_gl.MAX_TEXTURE_SIZE = web_gl.RenderingContext.MAX_TEXTURE_SIZE;
web_gl.MAX_VARYING_VECTORS = web_gl.RenderingContext.MAX_VARYING_VECTORS;
web_gl.MAX_VERTEX_ATTRIBS = web_gl.RenderingContext.MAX_VERTEX_ATTRIBS;
web_gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS = web_gl.RenderingContext.MAX_VERTEX_TEXTURE_IMAGE_UNITS;
web_gl.MAX_VERTEX_UNIFORM_VECTORS = web_gl.RenderingContext.MAX_VERTEX_UNIFORM_VECTORS;
web_gl.MAX_VIEWPORT_DIMS = web_gl.RenderingContext.MAX_VIEWPORT_DIMS;
web_gl.MEDIUM_FLOAT = web_gl.RenderingContext.MEDIUM_FLOAT;
web_gl.MEDIUM_INT = web_gl.RenderingContext.MEDIUM_INT;
web_gl.MIRRORED_REPEAT = web_gl.RenderingContext.MIRRORED_REPEAT;
web_gl.NEAREST = web_gl.RenderingContext.NEAREST;
web_gl.NEAREST_MIPMAP_LINEAR = web_gl.RenderingContext.NEAREST_MIPMAP_LINEAR;
web_gl.NEAREST_MIPMAP_NEAREST = web_gl.RenderingContext.NEAREST_MIPMAP_NEAREST;
web_gl.NEVER = web_gl.RenderingContext.NEVER;
web_gl.NICEST = web_gl.RenderingContext.NICEST;
web_gl.NONE = web_gl.RenderingContext.NONE;
web_gl.NOTEQUAL = web_gl.RenderingContext.NOTEQUAL;
web_gl.NO_ERROR = web_gl.RenderingContext.NO_ERROR;
web_gl.ONE = web_gl.RenderingContext.ONE;
web_gl.ONE_MINUS_CONSTANT_ALPHA = web_gl.RenderingContext.ONE_MINUS_CONSTANT_ALPHA;
web_gl.ONE_MINUS_CONSTANT_COLOR = web_gl.RenderingContext.ONE_MINUS_CONSTANT_COLOR;
web_gl.ONE_MINUS_DST_ALPHA = web_gl.RenderingContext.ONE_MINUS_DST_ALPHA;
web_gl.ONE_MINUS_DST_COLOR = web_gl.RenderingContext.ONE_MINUS_DST_COLOR;
web_gl.ONE_MINUS_SRC_ALPHA = web_gl.RenderingContext.ONE_MINUS_SRC_ALPHA;
web_gl.ONE_MINUS_SRC_COLOR = web_gl.RenderingContext.ONE_MINUS_SRC_COLOR;
web_gl.OUT_OF_MEMORY = web_gl.RenderingContext.OUT_OF_MEMORY;
web_gl.PACK_ALIGNMENT = web_gl.RenderingContext.PACK_ALIGNMENT;
web_gl.POINTS = web_gl.RenderingContext.POINTS;
web_gl.POLYGON_OFFSET_FACTOR = web_gl.RenderingContext.POLYGON_OFFSET_FACTOR;
web_gl.POLYGON_OFFSET_FILL = web_gl.RenderingContext.POLYGON_OFFSET_FILL;
web_gl.POLYGON_OFFSET_UNITS = web_gl.RenderingContext.POLYGON_OFFSET_UNITS;
web_gl.RED_BITS = web_gl.RenderingContext.RED_BITS;
web_gl.RENDERBUFFER = web_gl.RenderingContext.RENDERBUFFER;
web_gl.RENDERBUFFER_ALPHA_SIZE = web_gl.RenderingContext.RENDERBUFFER_ALPHA_SIZE;
web_gl.RENDERBUFFER_BINDING = web_gl.RenderingContext.RENDERBUFFER_BINDING;
web_gl.RENDERBUFFER_BLUE_SIZE = web_gl.RenderingContext.RENDERBUFFER_BLUE_SIZE;
web_gl.RENDERBUFFER_DEPTH_SIZE = web_gl.RenderingContext.RENDERBUFFER_DEPTH_SIZE;
web_gl.RENDERBUFFER_GREEN_SIZE = web_gl.RenderingContext.RENDERBUFFER_GREEN_SIZE;
web_gl.RENDERBUFFER_HEIGHT = web_gl.RenderingContext.RENDERBUFFER_HEIGHT;
web_gl.RENDERBUFFER_INTERNAL_FORMAT = web_gl.RenderingContext.RENDERBUFFER_INTERNAL_FORMAT;
web_gl.RENDERBUFFER_RED_SIZE = web_gl.RenderingContext.RENDERBUFFER_RED_SIZE;
web_gl.RENDERBUFFER_STENCIL_SIZE = web_gl.RenderingContext.RENDERBUFFER_STENCIL_SIZE;
web_gl.RENDERBUFFER_WIDTH = web_gl.RenderingContext.RENDERBUFFER_WIDTH;
web_gl.RENDERER = web_gl.RenderingContext.RENDERER;
web_gl.REPEAT = web_gl.RenderingContext.REPEAT;
web_gl.REPLACE = web_gl.RenderingContext.REPLACE;
web_gl.RGB = web_gl.RenderingContext.RGB;
web_gl.RGB565 = web_gl.RenderingContext.RGB565;
web_gl.RGB5_A1 = web_gl.RenderingContext.RGB5_A1;
web_gl.RGBA = web_gl.RenderingContext.RGBA;
web_gl.RGBA4 = web_gl.RenderingContext.RGBA4;
web_gl.SAMPLER_2D = web_gl.RenderingContext.SAMPLER_2D;
web_gl.SAMPLER_CUBE = web_gl.RenderingContext.SAMPLER_CUBE;
web_gl.SAMPLES = web_gl.RenderingContext.SAMPLES;
web_gl.SAMPLE_ALPHA_TO_COVERAGE = web_gl.RenderingContext.SAMPLE_ALPHA_TO_COVERAGE;
web_gl.SAMPLE_BUFFERS = web_gl.RenderingContext.SAMPLE_BUFFERS;
web_gl.SAMPLE_COVERAGE = web_gl.RenderingContext.SAMPLE_COVERAGE;
web_gl.SAMPLE_COVERAGE_INVERT = web_gl.RenderingContext.SAMPLE_COVERAGE_INVERT;
web_gl.SAMPLE_COVERAGE_VALUE = web_gl.RenderingContext.SAMPLE_COVERAGE_VALUE;
web_gl.SCISSOR_BOX = web_gl.RenderingContext.SCISSOR_BOX;
web_gl.SCISSOR_TEST = web_gl.RenderingContext.SCISSOR_TEST;
web_gl.SHADER_TYPE = web_gl.RenderingContext.SHADER_TYPE;
web_gl.SHADING_LANGUAGE_VERSION = web_gl.RenderingContext.SHADING_LANGUAGE_VERSION;
web_gl.SHORT = web_gl.RenderingContext.SHORT;
web_gl.SRC_ALPHA = web_gl.RenderingContext.SRC_ALPHA;
web_gl.SRC_ALPHA_SATURATE = web_gl.RenderingContext.SRC_ALPHA_SATURATE;
web_gl.SRC_COLOR = web_gl.RenderingContext.SRC_COLOR;
web_gl.STATIC_DRAW = web_gl.RenderingContext.STATIC_DRAW;
web_gl.STENCIL_ATTACHMENT = web_gl.RenderingContext.STENCIL_ATTACHMENT;
web_gl.STENCIL_BACK_FAIL = web_gl.RenderingContext.STENCIL_BACK_FAIL;
web_gl.STENCIL_BACK_FUNC = web_gl.RenderingContext.STENCIL_BACK_FUNC;
web_gl.STENCIL_BACK_PASS_DEPTH_FAIL = web_gl.RenderingContext.STENCIL_BACK_PASS_DEPTH_FAIL;
web_gl.STENCIL_BACK_PASS_DEPTH_PASS = web_gl.RenderingContext.STENCIL_BACK_PASS_DEPTH_PASS;
web_gl.STENCIL_BACK_REF = web_gl.RenderingContext.STENCIL_BACK_REF;
web_gl.STENCIL_BACK_VALUE_MASK = web_gl.RenderingContext.STENCIL_BACK_VALUE_MASK;
web_gl.STENCIL_BACK_WRITEMASK = web_gl.RenderingContext.STENCIL_BACK_WRITEMASK;
web_gl.STENCIL_BITS = web_gl.RenderingContext.STENCIL_BITS;
web_gl.STENCIL_BUFFER_BIT = web_gl.RenderingContext.STENCIL_BUFFER_BIT;
web_gl.STENCIL_CLEAR_VALUE = web_gl.RenderingContext.STENCIL_CLEAR_VALUE;
web_gl.STENCIL_FAIL = web_gl.RenderingContext.STENCIL_FAIL;
web_gl.STENCIL_FUNC = web_gl.RenderingContext.STENCIL_FUNC;
web_gl.STENCIL_INDEX = web_gl.RenderingContext.STENCIL_INDEX;
web_gl.STENCIL_INDEX8 = web_gl.RenderingContext.STENCIL_INDEX8;
web_gl.STENCIL_PASS_DEPTH_FAIL = web_gl.RenderingContext.STENCIL_PASS_DEPTH_FAIL;
web_gl.STENCIL_PASS_DEPTH_PASS = web_gl.RenderingContext.STENCIL_PASS_DEPTH_PASS;
web_gl.STENCIL_REF = web_gl.RenderingContext.STENCIL_REF;
web_gl.STENCIL_TEST = web_gl.RenderingContext.STENCIL_TEST;
web_gl.STENCIL_VALUE_MASK = web_gl.RenderingContext.STENCIL_VALUE_MASK;
web_gl.STENCIL_WRITEMASK = web_gl.RenderingContext.STENCIL_WRITEMASK;
web_gl.STREAM_DRAW = web_gl.RenderingContext.STREAM_DRAW;
web_gl.SUBPIXEL_BITS = web_gl.RenderingContext.SUBPIXEL_BITS;
web_gl.TEXTURE = web_gl.RenderingContext.TEXTURE;
web_gl.TEXTURE0 = web_gl.RenderingContext.TEXTURE0;
web_gl.TEXTURE1 = web_gl.RenderingContext.TEXTURE1;
web_gl.TEXTURE10 = web_gl.RenderingContext.TEXTURE10;
web_gl.TEXTURE11 = web_gl.RenderingContext.TEXTURE11;
web_gl.TEXTURE12 = web_gl.RenderingContext.TEXTURE12;
web_gl.TEXTURE13 = web_gl.RenderingContext.TEXTURE13;
web_gl.TEXTURE14 = web_gl.RenderingContext.TEXTURE14;
web_gl.TEXTURE15 = web_gl.RenderingContext.TEXTURE15;
web_gl.TEXTURE16 = web_gl.RenderingContext.TEXTURE16;
web_gl.TEXTURE17 = web_gl.RenderingContext.TEXTURE17;
web_gl.TEXTURE18 = web_gl.RenderingContext.TEXTURE18;
web_gl.TEXTURE19 = web_gl.RenderingContext.TEXTURE19;
web_gl.TEXTURE2 = web_gl.RenderingContext.TEXTURE2;
web_gl.TEXTURE20 = web_gl.RenderingContext.TEXTURE20;
web_gl.TEXTURE21 = web_gl.RenderingContext.TEXTURE21;
web_gl.TEXTURE22 = web_gl.RenderingContext.TEXTURE22;
web_gl.TEXTURE23 = web_gl.RenderingContext.TEXTURE23;
web_gl.TEXTURE24 = web_gl.RenderingContext.TEXTURE24;
web_gl.TEXTURE25 = web_gl.RenderingContext.TEXTURE25;
web_gl.TEXTURE26 = web_gl.RenderingContext.TEXTURE26;
web_gl.TEXTURE27 = web_gl.RenderingContext.TEXTURE27;
web_gl.TEXTURE28 = web_gl.RenderingContext.TEXTURE28;
web_gl.TEXTURE29 = web_gl.RenderingContext.TEXTURE29;
web_gl.TEXTURE3 = web_gl.RenderingContext.TEXTURE3;
web_gl.TEXTURE30 = web_gl.RenderingContext.TEXTURE30;
web_gl.TEXTURE31 = web_gl.RenderingContext.TEXTURE31;
web_gl.TEXTURE4 = web_gl.RenderingContext.TEXTURE4;
web_gl.TEXTURE5 = web_gl.RenderingContext.TEXTURE5;
web_gl.TEXTURE6 = web_gl.RenderingContext.TEXTURE6;
web_gl.TEXTURE7 = web_gl.RenderingContext.TEXTURE7;
web_gl.TEXTURE8 = web_gl.RenderingContext.TEXTURE8;
web_gl.TEXTURE9 = web_gl.RenderingContext.TEXTURE9;
web_gl.TEXTURE_2D = web_gl.RenderingContext.TEXTURE_2D;
web_gl.TEXTURE_BINDING_2D = web_gl.RenderingContext.TEXTURE_BINDING_2D;
web_gl.TEXTURE_BINDING_CUBE_MAP = web_gl.RenderingContext.TEXTURE_BINDING_CUBE_MAP;
web_gl.TEXTURE_CUBE_MAP = web_gl.RenderingContext.TEXTURE_CUBE_MAP;
web_gl.TEXTURE_CUBE_MAP_NEGATIVE_X = web_gl.RenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_X;
web_gl.TEXTURE_CUBE_MAP_NEGATIVE_Y = web_gl.RenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Y;
web_gl.TEXTURE_CUBE_MAP_NEGATIVE_Z = web_gl.RenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Z;
web_gl.TEXTURE_CUBE_MAP_POSITIVE_X = web_gl.RenderingContext.TEXTURE_CUBE_MAP_POSITIVE_X;
web_gl.TEXTURE_CUBE_MAP_POSITIVE_Y = web_gl.RenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Y;
web_gl.TEXTURE_CUBE_MAP_POSITIVE_Z = web_gl.RenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Z;
web_gl.TEXTURE_MAG_FILTER = web_gl.RenderingContext.TEXTURE_MAG_FILTER;
web_gl.TEXTURE_MIN_FILTER = web_gl.RenderingContext.TEXTURE_MIN_FILTER;
web_gl.TEXTURE_WRAP_S = web_gl.RenderingContext.TEXTURE_WRAP_S;
web_gl.TEXTURE_WRAP_T = web_gl.RenderingContext.TEXTURE_WRAP_T;
web_gl.TRIANGLES = web_gl.RenderingContext.TRIANGLES;
web_gl.TRIANGLE_FAN = web_gl.RenderingContext.TRIANGLE_FAN;
web_gl.TRIANGLE_STRIP = web_gl.RenderingContext.TRIANGLE_STRIP;
web_gl.UNPACK_ALIGNMENT = web_gl.RenderingContext.UNPACK_ALIGNMENT;
web_gl.UNPACK_COLORSPACE_CONVERSION_WEBGL = web_gl.RenderingContext.UNPACK_COLORSPACE_CONVERSION_WEBGL;
web_gl.UNPACK_FLIP_Y_WEBGL = web_gl.RenderingContext.UNPACK_FLIP_Y_WEBGL;
web_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL = web_gl.RenderingContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL;
web_gl.UNSIGNED_BYTE = web_gl.RenderingContext.UNSIGNED_BYTE;
web_gl.UNSIGNED_INT = web_gl.RenderingContext.UNSIGNED_INT;
web_gl.UNSIGNED_SHORT = web_gl.RenderingContext.UNSIGNED_SHORT;
web_gl.UNSIGNED_SHORT_4_4_4_4 = web_gl.RenderingContext.UNSIGNED_SHORT_4_4_4_4;
web_gl.UNSIGNED_SHORT_5_5_5_1 = web_gl.RenderingContext.UNSIGNED_SHORT_5_5_5_1;
web_gl.UNSIGNED_SHORT_5_6_5 = web_gl.RenderingContext.UNSIGNED_SHORT_5_6_5;
web_gl.VALIDATE_STATUS = web_gl.RenderingContext.VALIDATE_STATUS;
web_gl.VENDOR = web_gl.RenderingContext.VENDOR;
web_gl.VERSION = web_gl.RenderingContext.VERSION;
web_gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING;
web_gl.VERTEX_ATTRIB_ARRAY_ENABLED = web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_ENABLED;
web_gl.VERTEX_ATTRIB_ARRAY_NORMALIZED = web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_NORMALIZED;
web_gl.VERTEX_ATTRIB_ARRAY_POINTER = web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_POINTER;
web_gl.VERTEX_ATTRIB_ARRAY_SIZE = web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_SIZE;
web_gl.VERTEX_ATTRIB_ARRAY_STRIDE = web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_STRIDE;
web_gl.VERTEX_ATTRIB_ARRAY_TYPE = web_gl.RenderingContext.VERTEX_ATTRIB_ARRAY_TYPE;
web_gl.VERTEX_SHADER = web_gl.RenderingContext.VERTEX_SHADER;
web_gl.VIEWPORT = web_gl.RenderingContext.VIEWPORT;
web_gl.ZERO = web_gl.RenderingContext.ZERO;
dart.defineExtensionNames([
  'name',
  'size',
  'type'
]);
web_gl.ActiveInfo = class ActiveInfo extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.name]() {
    return this.name;
  }
  get [dartx.size]() {
    return this.size;
  }
  get [dartx.type]() {
    return this.type;
  }
};
dart.setSignature(web_gl.ActiveInfo, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.ActiveInfo, [])}),
  fields: () => ({
    [dartx.name]: core.String,
    [dartx.size]: core.int,
    [dartx.type]: core.int
  })
});
dart.registerExtension(dart.global.WebGLActiveInfo, web_gl.ActiveInfo);
dart.defineExtensionNames([
  'drawArraysInstancedAngle',
  'drawElementsInstancedAngle',
  'vertexAttribDivisorAngle'
]);
web_gl.AngleInstancedArrays = class AngleInstancedArrays extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.drawArraysInstancedAngle](...args) {
    return this.drawArraysInstancedANGLE.apply(this, args);
  }
  [dartx.drawElementsInstancedAngle](...args) {
    return this.drawElementsInstancedANGLE.apply(this, args);
  }
  [dartx.vertexAttribDivisorAngle](...args) {
    return this.vertexAttribDivisorANGLE.apply(this, args);
  }
};
dart.setSignature(web_gl.AngleInstancedArrays, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.AngleInstancedArrays, [])}),
  methods: () => ({
    [dartx.drawArraysInstancedAngle]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int]),
    [dartx.drawElementsInstancedAngle]: dart.definiteFunctionType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
    [dartx.vertexAttribDivisorAngle]: dart.definiteFunctionType(dart.void, [core.int, core.int])
  }),
  sfields: () => ({VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: core.int})
});
web_gl.AngleInstancedArrays.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 35070;
dart.registerExtension(dart.global.ANGLEInstancedArrays, web_gl.AngleInstancedArrays);
web_gl.Buffer = class Buffer extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.Buffer, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.Buffer, [])})
});
dart.registerExtension(dart.global.WebGLBuffer, web_gl.Buffer);
web_gl.CompressedTextureAtc = class CompressedTextureAtc extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.CompressedTextureAtc, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.CompressedTextureAtc, [])}),
  sfields: () => ({
    COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: core.int,
    COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: core.int,
    COMPRESSED_RGB_ATC_WEBGL: core.int
  })
});
web_gl.CompressedTextureAtc.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35987;
web_gl.CompressedTextureAtc.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798;
web_gl.CompressedTextureAtc.COMPRESSED_RGB_ATC_WEBGL = 35986;
dart.registerExtension(dart.global.WebGLCompressedTextureATC, web_gl.CompressedTextureAtc);
web_gl.CompressedTextureETC1 = class CompressedTextureETC1 extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.CompressedTextureETC1, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.CompressedTextureETC1, [])}),
  sfields: () => ({COMPRESSED_RGB_ETC1_WEBGL: core.int})
});
web_gl.CompressedTextureETC1.COMPRESSED_RGB_ETC1_WEBGL = 36196;
dart.registerExtension(dart.global.WebGLCompressedTextureETC1, web_gl.CompressedTextureETC1);
web_gl.CompressedTexturePvrtc = class CompressedTexturePvrtc extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.CompressedTexturePvrtc, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.CompressedTexturePvrtc, [])}),
  sfields: () => ({
    COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: core.int,
    COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: core.int,
    COMPRESSED_RGB_PVRTC_2BPPV1_IMG: core.int,
    COMPRESSED_RGB_PVRTC_4BPPV1_IMG: core.int
  })
});
web_gl.CompressedTexturePvrtc.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843;
web_gl.CompressedTexturePvrtc.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842;
web_gl.CompressedTexturePvrtc.COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841;
web_gl.CompressedTexturePvrtc.COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840;
dart.registerExtension(dart.global.WebGLCompressedTexturePVRTC, web_gl.CompressedTexturePvrtc);
web_gl.CompressedTextureS3TC = class CompressedTextureS3TC extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.CompressedTextureS3TC, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.CompressedTextureS3TC, [])}),
  sfields: () => ({
    COMPRESSED_RGBA_S3TC_DXT1_EXT: core.int,
    COMPRESSED_RGBA_S3TC_DXT3_EXT: core.int,
    COMPRESSED_RGBA_S3TC_DXT5_EXT: core.int,
    COMPRESSED_RGB_S3TC_DXT1_EXT: core.int
  })
});
web_gl.CompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777;
web_gl.CompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778;
web_gl.CompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779;
web_gl.CompressedTextureS3TC.COMPRESSED_RGB_S3TC_DXT1_EXT = 33776;
dart.registerExtension(dart.global.WebGLCompressedTextureS3TC, web_gl.CompressedTextureS3TC);
dart.defineExtensionNames([
  'alpha',
  'antialias',
  'depth',
  'failIfMajorPerformanceCaveat',
  'premultipliedAlpha',
  'preserveDrawingBuffer',
  'stencil'
]);
web_gl.ContextAttributes = class ContextAttributes extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.alpha]() {
    return this.alpha;
  }
  set [dartx.alpha](value) {
    this.alpha = value;
  }
  get [dartx.antialias]() {
    return this.antialias;
  }
  set [dartx.antialias](value) {
    this.antialias = value;
  }
  get [dartx.depth]() {
    return this.depth;
  }
  set [dartx.depth](value) {
    this.depth = value;
  }
  get [dartx.failIfMajorPerformanceCaveat]() {
    return this.failIfMajorPerformanceCaveat;
  }
  set [dartx.failIfMajorPerformanceCaveat](value) {
    this.failIfMajorPerformanceCaveat = value;
  }
  get [dartx.premultipliedAlpha]() {
    return this.premultipliedAlpha;
  }
  set [dartx.premultipliedAlpha](value) {
    this.premultipliedAlpha = value;
  }
  get [dartx.preserveDrawingBuffer]() {
    return this.preserveDrawingBuffer;
  }
  set [dartx.preserveDrawingBuffer](value) {
    this.preserveDrawingBuffer = value;
  }
  get [dartx.stencil]() {
    return this.stencil;
  }
  set [dartx.stencil](value) {
    this.stencil = value;
  }
};
dart.setSignature(web_gl.ContextAttributes, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.ContextAttributes, [])}),
  fields: () => ({
    [dartx.alpha]: core.bool,
    [dartx.antialias]: core.bool,
    [dartx.depth]: core.bool,
    [dartx.failIfMajorPerformanceCaveat]: core.bool,
    [dartx.premultipliedAlpha]: core.bool,
    [dartx.preserveDrawingBuffer]: core.bool,
    [dartx.stencil]: core.bool
  })
});
dart.registerExtension(dart.global.WebGLContextAttributes, web_gl.ContextAttributes);
dart.defineExtensionNames([
  'statusMessage'
]);
web_gl.ContextEvent = class ContextEvent extends html.Event {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.statusMessage]() {
    return this.statusMessage;
  }
};
dart.setSignature(web_gl.ContextEvent, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.ContextEvent, [])}),
  fields: () => ({[dartx.statusMessage]: core.String})
});
dart.registerExtension(dart.global.WebGLContextEvent, web_gl.ContextEvent);
web_gl.DebugRendererInfo = class DebugRendererInfo extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.DebugRendererInfo, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.DebugRendererInfo, [])}),
  sfields: () => ({
    UNMASKED_RENDERER_WEBGL: core.int,
    UNMASKED_VENDOR_WEBGL: core.int
  })
});
web_gl.DebugRendererInfo.UNMASKED_RENDERER_WEBGL = 37446;
web_gl.DebugRendererInfo.UNMASKED_VENDOR_WEBGL = 37445;
dart.registerExtension(dart.global.WebGLDebugRendererInfo, web_gl.DebugRendererInfo);
dart.defineExtensionNames([
  'getTranslatedShaderSource'
]);
web_gl.DebugShaders = class DebugShaders extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.getTranslatedShaderSource](...args) {
    return this.getTranslatedShaderSource.apply(this, args);
  }
};
dart.setSignature(web_gl.DebugShaders, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.DebugShaders, [])}),
  methods: () => ({[dartx.getTranslatedShaderSource]: dart.definiteFunctionType(core.String, [web_gl.Shader])})
});
dart.registerExtension(dart.global.WebGLDebugShaders, web_gl.DebugShaders);
web_gl.DepthTexture = class DepthTexture extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.DepthTexture, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.DepthTexture, [])}),
  sfields: () => ({UNSIGNED_INT_24_8_WEBGL: core.int})
});
web_gl.DepthTexture.UNSIGNED_INT_24_8_WEBGL = 34042;
dart.registerExtension(dart.global.WebGLDepthTexture, web_gl.DepthTexture);
dart.defineExtensionNames([
  'drawBuffersWebgl'
]);
web_gl.DrawBuffers = class DrawBuffers extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.drawBuffersWebgl](...args) {
    return this.drawBuffersWEBGL.apply(this, args);
  }
};
dart.setSignature(web_gl.DrawBuffers, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.DrawBuffers, [])}),
  methods: () => ({[dartx.drawBuffersWebgl]: dart.definiteFunctionType(dart.void, [ListOfint()])}),
  sfields: () => ({
    COLOR_ATTACHMENT0_WEBGL: core.int,
    COLOR_ATTACHMENT10_WEBGL: core.int,
    COLOR_ATTACHMENT11_WEBGL: core.int,
    COLOR_ATTACHMENT12_WEBGL: core.int,
    COLOR_ATTACHMENT13_WEBGL: core.int,
    COLOR_ATTACHMENT14_WEBGL: core.int,
    COLOR_ATTACHMENT15_WEBGL: core.int,
    COLOR_ATTACHMENT1_WEBGL: core.int,
    COLOR_ATTACHMENT2_WEBGL: core.int,
    COLOR_ATTACHMENT3_WEBGL: core.int,
    COLOR_ATTACHMENT4_WEBGL: core.int,
    COLOR_ATTACHMENT5_WEBGL: core.int,
    COLOR_ATTACHMENT6_WEBGL: core.int,
    COLOR_ATTACHMENT7_WEBGL: core.int,
    COLOR_ATTACHMENT8_WEBGL: core.int,
    COLOR_ATTACHMENT9_WEBGL: core.int,
    DRAW_BUFFER0_WEBGL: core.int,
    DRAW_BUFFER10_WEBGL: core.int,
    DRAW_BUFFER11_WEBGL: core.int,
    DRAW_BUFFER12_WEBGL: core.int,
    DRAW_BUFFER13_WEBGL: core.int,
    DRAW_BUFFER14_WEBGL: core.int,
    DRAW_BUFFER15_WEBGL: core.int,
    DRAW_BUFFER1_WEBGL: core.int,
    DRAW_BUFFER2_WEBGL: core.int,
    DRAW_BUFFER3_WEBGL: core.int,
    DRAW_BUFFER4_WEBGL: core.int,
    DRAW_BUFFER5_WEBGL: core.int,
    DRAW_BUFFER6_WEBGL: core.int,
    DRAW_BUFFER7_WEBGL: core.int,
    DRAW_BUFFER8_WEBGL: core.int,
    DRAW_BUFFER9_WEBGL: core.int,
    MAX_COLOR_ATTACHMENTS_WEBGL: core.int,
    MAX_DRAW_BUFFERS_WEBGL: core.int
  })
});
web_gl.DrawBuffers.COLOR_ATTACHMENT0_WEBGL = 36064;
web_gl.DrawBuffers.COLOR_ATTACHMENT10_WEBGL = 36074;
web_gl.DrawBuffers.COLOR_ATTACHMENT11_WEBGL = 36075;
web_gl.DrawBuffers.COLOR_ATTACHMENT12_WEBGL = 36076;
web_gl.DrawBuffers.COLOR_ATTACHMENT13_WEBGL = 36077;
web_gl.DrawBuffers.COLOR_ATTACHMENT14_WEBGL = 36078;
web_gl.DrawBuffers.COLOR_ATTACHMENT15_WEBGL = 36079;
web_gl.DrawBuffers.COLOR_ATTACHMENT1_WEBGL = 36065;
web_gl.DrawBuffers.COLOR_ATTACHMENT2_WEBGL = 36066;
web_gl.DrawBuffers.COLOR_ATTACHMENT3_WEBGL = 36067;
web_gl.DrawBuffers.COLOR_ATTACHMENT4_WEBGL = 36068;
web_gl.DrawBuffers.COLOR_ATTACHMENT5_WEBGL = 36069;
web_gl.DrawBuffers.COLOR_ATTACHMENT6_WEBGL = 36070;
web_gl.DrawBuffers.COLOR_ATTACHMENT7_WEBGL = 36071;
web_gl.DrawBuffers.COLOR_ATTACHMENT8_WEBGL = 36072;
web_gl.DrawBuffers.COLOR_ATTACHMENT9_WEBGL = 36073;
web_gl.DrawBuffers.DRAW_BUFFER0_WEBGL = 34853;
web_gl.DrawBuffers.DRAW_BUFFER10_WEBGL = 34863;
web_gl.DrawBuffers.DRAW_BUFFER11_WEBGL = 34864;
web_gl.DrawBuffers.DRAW_BUFFER12_WEBGL = 34865;
web_gl.DrawBuffers.DRAW_BUFFER13_WEBGL = 34866;
web_gl.DrawBuffers.DRAW_BUFFER14_WEBGL = 34867;
web_gl.DrawBuffers.DRAW_BUFFER15_WEBGL = 34868;
web_gl.DrawBuffers.DRAW_BUFFER1_WEBGL = 34854;
web_gl.DrawBuffers.DRAW_BUFFER2_WEBGL = 34855;
web_gl.DrawBuffers.DRAW_BUFFER3_WEBGL = 34856;
web_gl.DrawBuffers.DRAW_BUFFER4_WEBGL = 34857;
web_gl.DrawBuffers.DRAW_BUFFER5_WEBGL = 34858;
web_gl.DrawBuffers.DRAW_BUFFER6_WEBGL = 34859;
web_gl.DrawBuffers.DRAW_BUFFER7_WEBGL = 34860;
web_gl.DrawBuffers.DRAW_BUFFER8_WEBGL = 34861;
web_gl.DrawBuffers.DRAW_BUFFER9_WEBGL = 34862;
web_gl.DrawBuffers.MAX_COLOR_ATTACHMENTS_WEBGL = 36063;
web_gl.DrawBuffers.MAX_DRAW_BUFFERS_WEBGL = 34852;
dart.registerExtension(dart.global.WebGLDrawBuffers, web_gl.DrawBuffers);
web_gl.ExtBlendMinMax = class ExtBlendMinMax extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.ExtBlendMinMax, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.ExtBlendMinMax, [])}),
  sfields: () => ({
    MAX_EXT: core.int,
    MIN_EXT: core.int
  })
});
web_gl.ExtBlendMinMax.MAX_EXT = 32776;
web_gl.ExtBlendMinMax.MIN_EXT = 32775;
dart.registerExtension(dart.global.EXTBlendMinMax, web_gl.ExtBlendMinMax);
web_gl.ExtFragDepth = class ExtFragDepth extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.ExtFragDepth, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.ExtFragDepth, [])})
});
dart.registerExtension(dart.global.EXTFragDepth, web_gl.ExtFragDepth);
web_gl.ExtShaderTextureLod = class ExtShaderTextureLod extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.ExtShaderTextureLod, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.ExtShaderTextureLod, [])})
});
dart.registerExtension(dart.global.EXTShaderTextureLOD, web_gl.ExtShaderTextureLod);
web_gl.ExtTextureFilterAnisotropic = class ExtTextureFilterAnisotropic extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.ExtTextureFilterAnisotropic, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.ExtTextureFilterAnisotropic, [])}),
  sfields: () => ({
    MAX_TEXTURE_MAX_ANISOTROPY_EXT: core.int,
    TEXTURE_MAX_ANISOTROPY_EXT: core.int
  })
});
web_gl.ExtTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047;
web_gl.ExtTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT = 34046;
dart.registerExtension(dart.global.EXTTextureFilterAnisotropic, web_gl.ExtTextureFilterAnisotropic);
web_gl.Framebuffer = class Framebuffer extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.Framebuffer, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.Framebuffer, [])})
});
dart.registerExtension(dart.global.WebGLFramebuffer, web_gl.Framebuffer);
dart.defineExtensionNames([
  'loseContext',
  'restoreContext'
]);
web_gl.LoseContext = class LoseContext extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.loseContext](...args) {
    return this.loseContext.apply(this, args);
  }
  [dartx.restoreContext](...args) {
    return this.restoreContext.apply(this, args);
  }
};
dart.setSignature(web_gl.LoseContext, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.LoseContext, [])}),
  methods: () => ({
    [dartx.loseContext]: dart.definiteFunctionType(dart.void, []),
    [dartx.restoreContext]: dart.definiteFunctionType(dart.void, [])
  })
});
dart.registerExtension(dart.global.WebGLLoseContext, web_gl.LoseContext);
dart.registerExtension(dart.global.WebGLExtensionLoseContext, web_gl.LoseContext);
web_gl.OesElementIndexUint = class OesElementIndexUint extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.OesElementIndexUint, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.OesElementIndexUint, [])})
});
dart.registerExtension(dart.global.OESElementIndexUint, web_gl.OesElementIndexUint);
web_gl.OesStandardDerivatives = class OesStandardDerivatives extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.OesStandardDerivatives, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.OesStandardDerivatives, [])}),
  sfields: () => ({FRAGMENT_SHADER_DERIVATIVE_HINT_OES: core.int})
});
web_gl.OesStandardDerivatives.FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 35723;
dart.registerExtension(dart.global.OESStandardDerivatives, web_gl.OesStandardDerivatives);
web_gl.OesTextureFloat = class OesTextureFloat extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.OesTextureFloat, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.OesTextureFloat, [])})
});
dart.registerExtension(dart.global.OESTextureFloat, web_gl.OesTextureFloat);
web_gl.OesTextureFloatLinear = class OesTextureFloatLinear extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.OesTextureFloatLinear, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.OesTextureFloatLinear, [])})
});
dart.registerExtension(dart.global.OESTextureFloatLinear, web_gl.OesTextureFloatLinear);
web_gl.OesTextureHalfFloatLinear = class OesTextureHalfFloatLinear extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.OesTextureHalfFloatLinear, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.OesTextureHalfFloatLinear, [])})
});
dart.registerExtension(dart.global.OESTextureHalfFloatLinear, web_gl.OesTextureHalfFloatLinear);
dart.defineExtensionNames([
  'bindVertexArray',
  'createVertexArray',
  'deleteVertexArray',
  'isVertexArray'
]);
web_gl.OesVertexArrayObject = class OesVertexArrayObject extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.bindVertexArray](...args) {
    return this.bindVertexArrayOES.apply(this, args);
  }
  [dartx.createVertexArray](...args) {
    return this.createVertexArrayOES.apply(this, args);
  }
  [dartx.deleteVertexArray](...args) {
    return this.deleteVertexArrayOES.apply(this, args);
  }
  [dartx.isVertexArray](...args) {
    return this.isVertexArrayOES.apply(this, args);
  }
};
dart.setSignature(web_gl.OesVertexArrayObject, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.OesVertexArrayObject, [])}),
  methods: () => ({
    [dartx.bindVertexArray]: dart.definiteFunctionType(dart.void, [web_gl.VertexArrayObject]),
    [dartx.createVertexArray]: dart.definiteFunctionType(web_gl.VertexArrayObject, []),
    [dartx.deleteVertexArray]: dart.definiteFunctionType(dart.void, [web_gl.VertexArrayObject]),
    [dartx.isVertexArray]: dart.definiteFunctionType(core.bool, [web_gl.VertexArrayObject])
  }),
  sfields: () => ({VERTEX_ARRAY_BINDING_OES: core.int})
});
web_gl.OesVertexArrayObject.VERTEX_ARRAY_BINDING_OES = 34229;
dart.registerExtension(dart.global.OESVertexArrayObject, web_gl.OesVertexArrayObject);
web_gl.Program = class Program extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.Program, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.Program, [])})
});
dart.registerExtension(dart.global.WebGLProgram, web_gl.Program);
web_gl.Renderbuffer = class Renderbuffer extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.Renderbuffer, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.Renderbuffer, [])})
});
dart.registerExtension(dart.global.WebGLRenderbuffer, web_gl.Renderbuffer);
web_gl.Shader = class Shader extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.Shader, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.Shader, [])})
});
dart.registerExtension(dart.global.WebGLShader, web_gl.Shader);
dart.defineExtensionNames([
  'precision',
  'rangeMax',
  'rangeMin'
]);
web_gl.ShaderPrecisionFormat = class ShaderPrecisionFormat extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.precision]() {
    return this.precision;
  }
  get [dartx.rangeMax]() {
    return this.rangeMax;
  }
  get [dartx.rangeMin]() {
    return this.rangeMin;
  }
};
dart.setSignature(web_gl.ShaderPrecisionFormat, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.ShaderPrecisionFormat, [])}),
  fields: () => ({
    [dartx.precision]: core.int,
    [dartx.rangeMax]: core.int,
    [dartx.rangeMin]: core.int
  })
});
dart.registerExtension(dart.global.WebGLShaderPrecisionFormat, web_gl.ShaderPrecisionFormat);
web_gl.Texture = class Texture extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.Texture, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.Texture, [])})
});
dart.registerExtension(dart.global.WebGLTexture, web_gl.Texture);
web_gl.UniformLocation = class UniformLocation extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.UniformLocation, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.UniformLocation, [])})
});
dart.registerExtension(dart.global.WebGLUniformLocation, web_gl.UniformLocation);
web_gl.VertexArrayObject = class VertexArrayObject extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl.VertexArrayObject, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl.VertexArrayObject, [])})
});
dart.registerExtension(dart.global.WebGLVertexArrayObjectOES, web_gl.VertexArrayObject);
web_gl._WebGLRenderingContextBase = class _WebGLRenderingContextBase extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
};
dart.setSignature(web_gl._WebGLRenderingContextBase, {
  constructors: () => ({_: dart.definiteFunctionType(web_gl._WebGLRenderingContextBase, [])})
});
web_sql.SqlStatementCallback = dart.typedef('SqlStatementCallback', () => dart.functionType(dart.void, [web_sql.SqlTransaction, web_sql.SqlResultSet]));
web_sql.SqlStatementErrorCallback = dart.typedef('SqlStatementErrorCallback', () => dart.functionType(dart.void, [web_sql.SqlTransaction, web_sql.SqlError]));
web_sql.SqlTransactionCallback = dart.typedef('SqlTransactionCallback', () => dart.functionType(dart.void, [web_sql.SqlTransaction]));
web_sql.SqlTransactionErrorCallback = dart.typedef('SqlTransactionErrorCallback', () => dart.functionType(dart.void, [web_sql.SqlError]));
dart.defineExtensionNames([
  'changeVersion',
  'readTransaction',
  'transaction',
  'version'
]);
web_sql.SqlDatabase = class SqlDatabase extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  static get supported() {
    return !!window.openDatabase;
  }
  get [dartx.version]() {
    return this.version;
  }
  [dartx.changeVersion](...args) {
    return this.changeVersion.apply(this, args);
  }
  [dartx.readTransaction](...args) {
    return this.readTransaction.apply(this, args);
  }
  [dartx.transaction](...args) {
    return this.transaction.apply(this, args);
  }
};
dart.setSignature(web_sql.SqlDatabase, {
  constructors: () => ({_: dart.definiteFunctionType(web_sql.SqlDatabase, [])}),
  fields: () => ({[dartx.version]: core.String}),
  methods: () => ({
    [dartx.changeVersion]: dart.definiteFunctionType(dart.void, [core.String, core.String], [web_sql.SqlTransactionCallback, web_sql.SqlTransactionErrorCallback, html.VoidCallback]),
    [dartx.readTransaction]: dart.definiteFunctionType(dart.void, [web_sql.SqlTransactionCallback], [web_sql.SqlTransactionErrorCallback, html.VoidCallback]),
    [dartx.transaction]: dart.definiteFunctionType(dart.void, [web_sql.SqlTransactionCallback], [web_sql.SqlTransactionErrorCallback, html.VoidCallback])
  }),
  sgetters: () => ({supported: dart.definiteFunctionType(core.bool, [])})
});
dart.registerExtension(dart.global.Database, web_sql.SqlDatabase);
dart.defineExtensionNames([
  'code',
  'message'
]);
web_sql.SqlError = class SqlError extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.code]() {
    return this.code;
  }
  get [dartx.message]() {
    return this.message;
  }
};
dart.setSignature(web_sql.SqlError, {
  constructors: () => ({_: dart.definiteFunctionType(web_sql.SqlError, [])}),
  fields: () => ({
    [dartx.code]: core.int,
    [dartx.message]: core.String
  }),
  sfields: () => ({
    CONSTRAINT_ERR: core.int,
    DATABASE_ERR: core.int,
    QUOTA_ERR: core.int,
    SYNTAX_ERR: core.int,
    TIMEOUT_ERR: core.int,
    TOO_LARGE_ERR: core.int,
    UNKNOWN_ERR: core.int,
    VERSION_ERR: core.int
  })
});
web_sql.SqlError.CONSTRAINT_ERR = 6;
web_sql.SqlError.DATABASE_ERR = 1;
web_sql.SqlError.QUOTA_ERR = 4;
web_sql.SqlError.SYNTAX_ERR = 5;
web_sql.SqlError.TIMEOUT_ERR = 7;
web_sql.SqlError.TOO_LARGE_ERR = 3;
web_sql.SqlError.UNKNOWN_ERR = 0;
web_sql.SqlError.VERSION_ERR = 2;
dart.registerExtension(dart.global.SQLError, web_sql.SqlError);
dart.defineExtensionNames([
  'insertId',
  'rows',
  'rowsAffected'
]);
web_sql.SqlResultSet = class SqlResultSet extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.insertId]() {
    return this.insertId;
  }
  get [dartx.rows]() {
    return this.rows;
  }
  get [dartx.rowsAffected]() {
    return this.rowsAffected;
  }
};
dart.setSignature(web_sql.SqlResultSet, {
  constructors: () => ({_: dart.definiteFunctionType(web_sql.SqlResultSet, [])}),
  fields: () => ({
    [dartx.insertId]: core.int,
    [dartx.rows]: web_sql.SqlResultSetRowList,
    [dartx.rowsAffected]: core.int
  })
});
dart.registerExtension(dart.global.SQLResultSet, web_sql.SqlResultSet);
const _item_1 = Symbol('_item_1');
dart.defineExtensionNames([
  'length',
  '_get',
  '_set',
  'length',
  'first',
  'last',
  'single',
  'elementAt',
  'item'
]);
web_sql.SqlResultSetRowList = class SqlResultSetRowList extends dart.mixin(_interceptors.Interceptor, collection.ListMixin$(core.Map), html.ImmutableListMixin$(core.Map)) {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  get [dartx.length]() {
    return this.length;
  }
  [dartx._get](index) {
    if (index >>> 0 !== index || index >= this[dartx.length]) dart.throw(core.RangeError.index(index, this));
    return this[dartx.item](index);
  }
  [dartx._set](index, value) {
    dart.throw(new core.UnsupportedError("Cannot assign element of immutable List."));
    return value;
  }
  set [dartx.length](value) {
    dart.throw(new core.UnsupportedError("Cannot resize immutable List."));
  }
  get [dartx.first]() {
    if (dart.notNull(this[dartx.length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.last]() {
    let len = this[dartx.length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError("No elements"));
  }
  get [dartx.single]() {
    let len = this[dartx.length];
    if (len == 1) {
      return this[0];
    }
    if (len == 0) dart.throw(new core.StateError("No elements"));
    dart.throw(new core.StateError("More than one element"));
  }
  [dartx.elementAt](index) {
    return this[dartx._get](index);
  }
  [dartx.item](index) {
    return html_common.convertNativeToDart_Dictionary(this[_item_1](index));
  }
  [_item_1](...args) {
    return this.item.apply(this, args);
  }
};
web_sql.SqlResultSetRowList[dart.implements] = () => [ListOfMap()];
dart.setSignature(web_sql.SqlResultSetRowList, {
  constructors: () => ({_: dart.definiteFunctionType(web_sql.SqlResultSetRowList, [])}),
  getters: () => ({
    [dartx.length]: dart.definiteFunctionType(core.int, []),
    [dartx.first]: dart.definiteFunctionType(core.Map, []),
    [dartx.last]: dart.definiteFunctionType(core.Map, []),
    [dartx.single]: dart.definiteFunctionType(core.Map, [])
  }),
  setters: () => ({[dartx.length]: dart.definiteFunctionType(dart.void, [core.int])}),
  methods: () => ({
    [dartx._get]: dart.definiteFunctionType(core.Map, [core.int]),
    [dartx._set]: dart.definiteFunctionType(dart.void, [core.int, core.Map]),
    [dartx.elementAt]: dart.definiteFunctionType(core.Map, [core.int]),
    [dartx.item]: dart.definiteFunctionType(core.Map, [core.int]),
    [_item_1]: dart.definiteFunctionType(dart.dynamic, [dart.dynamic])
  })
});
dart.registerExtension(dart.global.SQLResultSetRowList, web_sql.SqlResultSetRowList);
dart.defineExtensionNames([
  'executeSql'
]);
web_sql.SqlTransaction = class SqlTransaction extends _interceptors.Interceptor {
  static _() {
    dart.throw(new core.UnsupportedError("Not supported"));
  }
  [dartx.executeSql](...args) {
    return this.executeSql.apply(this, args);
  }
};
dart.setSignature(web_sql.SqlTransaction, {
  constructors: () => ({_: dart.definiteFunctionType(web_sql.SqlTransaction, [])}),
  methods: () => ({[dartx.executeSql]: dart.definiteFunctionType(dart.void, [core.String, ListOfObject()], [web_sql.SqlStatementCallback, web_sql.SqlStatementErrorCallback])})
});
dart.registerExtension(dart.global.SQLTransaction, web_sql.SqlTransaction);
