Enable and fix latest lints (dart-lang/sse#91)

* bump min sdk, rebuild js file
diff --git a/pkgs/sse/.github/workflows/test-package.yml b/pkgs/sse/.github/workflows/test-package.yml
index c24b475..0b1fbec 100644
--- a/pkgs/sse/.github/workflows/test-package.yml
+++ b/pkgs/sse/.github/workflows/test-package.yml
@@ -47,7 +47,7 @@
       matrix:
         # Add macos-latest and/or windows-latest if relevant for this package.
         os: [ubuntu-latest]
-        sdk: [2.19.0, dev]
+        sdk: [3.1.0, dev]
     steps:
       - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
       - uses: dart-lang/setup-dart@8a4b97ea2017cc079571daec46542f76189836b1
diff --git a/pkgs/sse/CHANGELOG.md b/pkgs/sse/CHANGELOG.md
index f51e580..36822cf 100644
--- a/pkgs/sse/CHANGELOG.md
+++ b/pkgs/sse/CHANGELOG.md
@@ -1,6 +1,6 @@
 ## 4.1.3-dev
 
-- Update the minimum Dart SDK version to `2.19.0`.
+- Update the minimum Dart SDK version to `3.1.0`.
 
 ## 4.1.2
 
diff --git a/pkgs/sse/analysis_options.yaml b/pkgs/sse/analysis_options.yaml
index f432f0c..e04ca55 100644
--- a/pkgs/sse/analysis_options.yaml
+++ b/pkgs/sse/analysis_options.yaml
@@ -10,9 +10,6 @@
     - avoid_returning_null
     - avoid_unused_constructor_parameters
     - cancel_subscriptions
-    - comment_references
     - literal_only_boolean_expressions
     - no_adjacent_strings_in_list
     - package_api_docs
-    - prefer_const_constructors
-    - test_types_in_equals
diff --git a/pkgs/sse/lib/client/sse_client.dart b/pkgs/sse/lib/client/sse_client.dart
index c9f20e8..86dac10 100644
--- a/pkgs/sse/lib/client/sse_client.dart
+++ b/pkgs/sse/lib/client/sse_client.dart
@@ -34,7 +34,7 @@
 
   final _logger = Logger('SseClient');
 
-  final _onConnected = Completer();
+  final _onConnected = Completer<void>();
 
   int _lastMessageId = -1;
 
@@ -97,7 +97,7 @@
     _eventSource.close();
     // If the initial connection was never established. Add a listener so close
     // adds a done event to [sink].
-    if (!_onConnected.isCompleted) _outgoingController.stream.drain();
+    if (!_onConnected.isCompleted) _outgoingController.stream.drain<void>();
     _incomingController.close();
     _outgoingController.close();
   }
diff --git a/pkgs/sse/lib/src/server/sse_handler.dart b/pkgs/sse/lib/src/server/sse_handler.dart
index fbf8f61..d4b7e06 100644
--- a/pkgs/sse/lib/src/server/sse_handler.dart
+++ b/pkgs/sse/lib/src/server/sse_handler.dart
@@ -81,7 +81,7 @@
       // If we're in a KeepAlive timeout, there's nowhere to send messages so
       // wait a short period and check again.
       if (isInKeepAlivePeriod) {
-        await Future.delayed(const Duration(milliseconds: 200));
+        await Future<void>.delayed(const Duration(milliseconds: 200));
         continue;
       }
 
diff --git a/pkgs/sse/pubspec.yaml b/pkgs/sse/pubspec.yaml
index 73f4236..1258266 100644
--- a/pkgs/sse/pubspec.yaml
+++ b/pkgs/sse/pubspec.yaml
@@ -7,7 +7,7 @@
 repository: https://github.com/dart-lang/sse
 
 environment:
-  sdk: '>=2.19.0 <3.0.0'
+  sdk: ^3.1.0
 
 dependencies:
   async: ^2.0.8
@@ -19,7 +19,7 @@
   stream_channel: ^2.0.0
 
 dev_dependencies:
-  dart_flutter_team_lints: ^1.0.0
+  dart_flutter_team_lints: ^2.0.0
   shelf_static: ^1.0.0
   test: ^1.5.3
   webdriver: ^3.0.0
diff --git a/pkgs/sse/test/sse_test.dart b/pkgs/sse/test/sse_test.dart
index dc89508..0455baa 100644
--- a/pkgs/sse/test/sse_test.dart
+++ b/pkgs/sse/test/sse_test.dart
@@ -76,7 +76,7 @@
       for (var i = 0; i < limit; i++) {
         connection.sink.add('$i');
       }
-      await connection.stream.take(limit).drain();
+      await connection.stream.take(limit).drain<void>();
     });
 
     test('messages arrive in-order', () async {
@@ -149,7 +149,7 @@
       await closeButton.click();
 
       // Should complete since the connection is closed.
-      await connection.stream.drain();
+      await connection.stream.drain<void>();
       expect(handler.numberOfClients, 0);
     });
 
diff --git a/pkgs/sse/test/web/index.dart.js b/pkgs/sse/test/web/index.dart.js
index d3554da..7a680ba 100644
--- a/pkgs/sse/test/web/index.dart.js
+++ b/pkgs/sse/test/web/index.dart.js
@@ -1,4 +1,4 @@
-// Generated by dart2js (fast startup emitter, strong), the Dart to JavaScript compiler version: 2.13.0.
+// Generated by dart2js (NullSafetyMode.sound, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.3.0-16.0.dev.
 // The code supports the following hooks:
 // dartPrint(message):
 //    if this function is defined it is called instead of the Dart [print]
@@ -9,11 +9,14 @@
 //    directly. Instead, a closure that will invoke [main], and its arguments
 //    [args] is passed to [dartMainRunner].
 //
-// dartDeferredLibraryLoader(uri, successCallback, errorCallback):
+// dartDeferredLibraryLoader(uri, successCallback, errorCallback, loadId, loadPriority):
 //    if this function is defined, it will be called when a deferred library
 //    is loaded. It should load and eval the javascript of `uri`, and call
 //    successCallback. If it fails to do so, it should call errorCallback with
-//    an error.
+//    an error. The loadId argument is the deferred import that resulted in
+//    this uri being loaded. The loadPriority argument is the priority the
+//    library should be loaded with as specified in the code via the
+//    load-priority annotation (0: normal, 1: high).
 //
 // dartCallInstrumentation(id, qualifiedName):
 //    if this function is defined, it will be called at each entry of a
@@ -27,7 +30,7 @@
       to[key] = from[key];
     }
   }
-  function mixinProperties(from, to) {
+  function mixinPropertiesHard(from, to) {
     var keys = Object.keys(from);
     for (var i = 0; i < keys.length; i++) {
       var key = keys[i];
@@ -35,12 +38,15 @@
         to[key] = from[key];
     }
   }
+  function mixinPropertiesEasy(from, to) {
+    Object.assign(to, from);
+  }
   var supportsDirectProtoAccess = function() {
     var cls = function() {
     };
     cls.prototype = {p: {}};
     var object = new cls();
-    if (!(object.__proto__ && object.__proto__.p === cls.prototype.p))
+    if (!(Object.getPrototypeOf(object) && Object.getPrototypeOf(object).p === cls.prototype.p))
       return false;
     try {
       if (typeof navigator != "undefined" && typeof navigator.userAgent == "string" && navigator.userAgent.indexOf("Chrome/") >= 0)
@@ -54,29 +60,12 @@
     }
     return false;
   }();
-  function setFunctionNamesIfNecessary(holders) {
-    function t() {
-    }
-    ;
-    if (typeof t.name == "string")
-      return;
-    for (var i = 0; i < holders.length; i++) {
-      var holder = holders[i];
-      var keys = Object.keys(holder);
-      for (var j = 0; j < keys.length; j++) {
-        var key = keys[j];
-        var f = holder[key];
-        if (typeof f == "function")
-          f.name = key;
-      }
-    }
-  }
   function inherit(cls, sup) {
     cls.prototype.constructor = cls;
     cls.prototype["$is" + cls.name] = cls;
     if (sup != null) {
       if (supportsDirectProtoAccess) {
-        cls.prototype.__proto__ = sup.prototype;
+        Object.setPrototypeOf(cls.prototype, sup.prototype);
         return;
       }
       var clsPrototype = Object.create(sup.prototype);
@@ -88,8 +77,12 @@
     for (var i = 0; i < classes.length; i++)
       inherit(classes[i], sup);
   }
-  function mixin(cls, mixin) {
-    mixinProperties(mixin.prototype, cls.prototype);
+  function mixinEasy(cls, mixin) {
+    mixinPropertiesEasy(mixin.prototype, cls.prototype);
+    cls.prototype.constructor = cls;
+  }
+  function mixinHard(cls, mixin) {
+    mixinPropertiesHard(mixin.prototype, cls.prototype);
     cls.prototype.constructor = cls;
   }
   function lazyOld(holder, name, getterName, initializer) {
@@ -97,7 +90,7 @@
     holder[name] = uninitializedSentinel;
     holder[getterName] = function() {
       holder[getterName] = function() {
-        H.throwCyclicInit(name);
+        A.throwCyclicInit(name);
       };
       var result;
       var sentinelInProgress = initializer;
@@ -136,13 +129,14 @@
       if (holder[name] === uninitializedSentinel) {
         var value = initializer();
         if (holder[name] !== uninitializedSentinel)
-          H.throwLateInitializationError(name);
+          A.throwLateFieldADI(name);
         holder[name] = value;
       }
+      var finalValue = holder[name];
       holder[getterName] = function() {
-        return this[name];
+        return finalValue;
       };
-      return holder[name];
+      return finalValue;
     };
   }
   function makeConstList(list) {
@@ -162,45 +156,42 @@
       convertToFastObject(arrayOfObjects[i]);
   }
   var functionCounter = 0;
-  function tearOffGetter(funcs, applyTrampolineIndex, reflectionInfo, name, isIntercepted) {
-    return isIntercepted ? new Function("funcs", "applyTrampolineIndex", "reflectionInfo", "name", "H", "c", "return function tearOff_" + name + functionCounter++ + "(receiver) {" + "if (c === null) c = " + "H.closureFromTearOff" + "(" + "this, funcs, applyTrampolineIndex, reflectionInfo, false, true, name);" + "return new c(this, funcs[0], receiver, name);" + "}")(funcs, applyTrampolineIndex, reflectionInfo, name, H, null) : new Function("funcs", "applyTrampolineIndex", "reflectionInfo", "name", "H", "c", "return function tearOff_" + name + functionCounter++ + "() {" + "if (c === null) c = " + "H.closureFromTearOff" + "(" + "this, funcs, applyTrampolineIndex, reflectionInfo, false, false, name);" + "return new c(this, funcs[0], null, name);" + "}")(funcs, applyTrampolineIndex, reflectionInfo, name, H, null);
-  }
-  function tearOff(funcs, applyTrampolineIndex, reflectionInfo, isStatic, name, isIntercepted) {
+  function instanceTearOffGetter(isIntercepted, parameters) {
     var cache = null;
-    return isStatic ? function() {
+    return isIntercepted ? function(receiver) {
       if (cache === null)
-        cache = H.closureFromTearOff(this, funcs, applyTrampolineIndex, reflectionInfo, true, false, name).prototype;
+        cache = A.closureFromTearOff(parameters);
+      return new cache(receiver, this);
+    } : function() {
+      if (cache === null)
+        cache = A.closureFromTearOff(parameters);
+      return new cache(this, null);
+    };
+  }
+  function staticTearOffGetter(parameters) {
+    var cache = null;
+    return function() {
+      if (cache === null)
+        cache = A.closureFromTearOff(parameters).prototype;
       return cache;
-    } : tearOffGetter(funcs, applyTrampolineIndex, reflectionInfo, name, isIntercepted);
+    };
   }
   var typesOffset = 0;
-  function installTearOff(container, getterName, isStatic, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) {
-    var funs = [];
-    for (var i = 0; i < funsOrNames.length; i++) {
-      var fun = funsOrNames[i];
-      if (typeof fun == "string")
-        fun = container[fun];
-      fun.$callName = callNames[i];
-      funs.push(fun);
-    }
-    var fun = funs[0];
-    fun.$requiredArgCount = requiredParameterCount;
-    fun.$defaultValues = optionalParameterDefaultValues;
-    var reflectionInfo = funType;
-    if (typeof reflectionInfo == "number")
-      reflectionInfo += typesOffset;
-    var name = funsOrNames[0];
-    fun.$stubName = name;
-    var getterFunction = tearOff(funs, applyIndex || 0, reflectionInfo, isStatic, name, isIntercepted);
-    container[getterName] = getterFunction;
-    if (isStatic)
-      fun.$tearOff = getterFunction;
+  function tearOffParameters(container, isStatic, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, needsDirectAccess) {
+    if (typeof funType == "number")
+      funType += typesOffset;
+    return {co: container, iS: isStatic, iI: isIntercepted, rC: requiredParameterCount, dV: optionalParameterDefaultValues, cs: callNames, fs: funsOrNames, fT: funType, aI: applyIndex || 0, nDA: needsDirectAccess};
   }
-  function installStaticTearOff(container, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) {
-    return installTearOff(container, getterName, true, false, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex);
+  function installStaticTearOff(holder, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) {
+    var parameters = tearOffParameters(holder, true, false, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, false);
+    var getterFunction = staticTearOffGetter(parameters);
+    holder[getterName] = getterFunction;
   }
-  function installInstanceTearOff(container, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) {
-    return installTearOff(container, getterName, false, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex);
+  function installInstanceTearOff(prototype, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, needsDirectAccess) {
+    isIntercepted = !!isIntercepted;
+    var parameters = tearOffParameters(prototype, false, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, !!needsDirectAccess);
+    var getterFunction = instanceTearOffGetter(isIntercepted, parameters);
+    prototype[getterName] = getterFunction;
   }
   function setOrUpdateInterceptorsByTag(newTags) {
     var tags = init.interceptorsByTag;
@@ -231,7 +222,7 @@
   var hunkHelpers = function() {
     var mkInstance = function(isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, applyIndex) {
         return function(container, getterName, name, funType) {
-          return installInstanceTearOff(container, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex);
+          return installInstanceTearOff(container, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex, false);
         };
       },
       mkStatic = function(requiredParameterCount, optionalParameterDefaultValues, callNames, applyIndex) {
@@ -239,34 +230,283 @@
           return installStaticTearOff(container, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex);
         };
       };
-    return {inherit: inherit, inheritMany: inheritMany, mixin: mixin, installStaticTearOff: installStaticTearOff, installInstanceTearOff: installInstanceTearOff, _instance_0u: mkInstance(0, 0, null, ["call$0"], 0), _instance_1u: mkInstance(0, 1, null, ["call$1"], 0), _instance_2u: mkInstance(0, 2, null, ["call$2"], 0), _instance_0i: mkInstance(1, 0, null, ["call$0"], 0), _instance_1i: mkInstance(1, 1, null, ["call$1"], 0), _instance_2i: mkInstance(1, 2, null, ["call$2"], 0), _static_0: mkStatic(0, null, ["call$0"], 0), _static_1: mkStatic(1, null, ["call$1"], 0), _static_2: mkStatic(2, null, ["call$2"], 0), makeConstList: makeConstList, lazy: lazy, lazyFinal: lazyFinal, lazyOld: lazyOld, updateHolder: updateHolder, convertToFastObject: convertToFastObject, setFunctionNamesIfNecessary: setFunctionNamesIfNecessary, updateTypes: updateTypes, setOrUpdateInterceptorsByTag: setOrUpdateInterceptorsByTag, setOrUpdateLeafTags: setOrUpdateLeafTags};
+    return {inherit: inherit, inheritMany: inheritMany, mixin: mixinEasy, mixinHard: mixinHard, installStaticTearOff: installStaticTearOff, installInstanceTearOff: installInstanceTearOff, _instance_0u: mkInstance(0, 0, null, ["call$0"], 0), _instance_1u: mkInstance(0, 1, null, ["call$1"], 0), _instance_2u: mkInstance(0, 2, null, ["call$2"], 0), _instance_0i: mkInstance(1, 0, null, ["call$0"], 0), _instance_1i: mkInstance(1, 1, null, ["call$1"], 0), _instance_2i: mkInstance(1, 2, null, ["call$2"], 0), _static_0: mkStatic(0, null, ["call$0"], 0), _static_1: mkStatic(1, null, ["call$1"], 0), _static_2: mkStatic(2, null, ["call$2"], 0), makeConstList: makeConstList, lazy: lazy, lazyFinal: lazyFinal, lazyOld: lazyOld, updateHolder: updateHolder, convertToFastObject: convertToFastObject, updateTypes: updateTypes, setOrUpdateInterceptorsByTag: setOrUpdateInterceptorsByTag, setOrUpdateLeafTags: setOrUpdateLeafTags};
   }();
   function initializeDeferredHunk(hunk) {
     typesOffset = init.types.length;
     hunk(hunkHelpers, init, holders, $);
   }
-  function getGlobalFromName(name) {
-    for (var i = 0; i < holders.length; i++) {
-      if (holders[i] == C)
-        continue;
-      if (holders[i][name])
-        return holders[i][name];
+  var J = {
+    makeDispatchRecord(interceptor, proto, extension, indexability) {
+      return {i: interceptor, p: proto, e: extension, x: indexability};
+    },
+    getNativeInterceptor(object) {
+      var proto, objectProto, $constructor, interceptor, t1,
+        record = object[init.dispatchPropertyName];
+      if (record == null)
+        if ($.initNativeDispatchFlag == null) {
+          A.initNativeDispatch();
+          record = object[init.dispatchPropertyName];
+        }
+      if (record != null) {
+        proto = record.p;
+        if (false === proto)
+          return record.i;
+        if (true === proto)
+          return object;
+        objectProto = Object.getPrototypeOf(object);
+        if (proto === objectProto)
+          return record.i;
+        if (record.e === objectProto)
+          throw A.wrapException(A.UnimplementedError$("Return interceptor for " + A.S(proto(object, record))));
+      }
+      $constructor = object.constructor;
+      if ($constructor == null)
+        interceptor = null;
+      else {
+        t1 = $._JS_INTEROP_INTERCEPTOR_TAG;
+        if (t1 == null)
+          t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js");
+        interceptor = $constructor[t1];
+      }
+      if (interceptor != null)
+        return interceptor;
+      interceptor = A.lookupAndCacheInterceptor(object);
+      if (interceptor != null)
+        return interceptor;
+      if (typeof object == "function")
+        return B.JavaScriptFunction_methods;
+      proto = Object.getPrototypeOf(object);
+      if (proto == null)
+        return B.PlainJavaScriptObject_methods;
+      if (proto === Object.prototype)
+        return B.PlainJavaScriptObject_methods;
+      if (typeof $constructor == "function") {
+        t1 = $._JS_INTEROP_INTERCEPTOR_TAG;
+        if (t1 == null)
+          t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js");
+        Object.defineProperty($constructor, t1, {value: B.UnknownJavaScriptObject_methods, enumerable: false, writable: true, configurable: true});
+        return B.UnknownJavaScriptObject_methods;
+      }
+      return B.UnknownJavaScriptObject_methods;
+    },
+    JSArray_JSArray$fixed($length, $E) {
+      if ($length < 0 || $length > 4294967295)
+        throw A.wrapException(A.RangeError$range($length, 0, 4294967295, "length", null));
+      return J.JSArray_JSArray$markFixed(new Array($length), $E);
+    },
+    JSArray_JSArray$growable($length, $E) {
+      if ($length < 0)
+        throw A.wrapException(A.ArgumentError$("Length must be a non-negative integer: " + $length, null));
+      return A._setArrayType(new Array($length), $E._eval$1("JSArray<0>"));
+    },
+    JSArray_JSArray$markFixed(allocation, $E) {
+      return J.JSArray_markFixedList(A._setArrayType(allocation, $E._eval$1("JSArray<0>")), $E);
+    },
+    JSArray_markFixedList(list, $T) {
+      list.fixed$length = Array;
+      return list;
+    },
+    getInterceptor$(receiver) {
+      if (typeof receiver == "number") {
+        if (Math.floor(receiver) == receiver)
+          return J.JSInt.prototype;
+        return J.JSNumNotInt.prototype;
+      }
+      if (typeof receiver == "string")
+        return J.JSString.prototype;
+      if (receiver == null)
+        return J.JSNull.prototype;
+      if (typeof receiver == "boolean")
+        return J.JSBool.prototype;
+      if (Array.isArray(receiver))
+        return J.JSArray.prototype;
+      if (typeof receiver != "object") {
+        if (typeof receiver == "function")
+          return J.JavaScriptFunction.prototype;
+        if (typeof receiver == "symbol")
+          return J.JavaScriptSymbol.prototype;
+        if (typeof receiver == "bigint")
+          return J.JavaScriptBigInt.prototype;
+        return receiver;
+      }
+      if (receiver instanceof A.Object)
+        return receiver;
+      return J.getNativeInterceptor(receiver);
+    },
+    getInterceptor$asx(receiver) {
+      if (typeof receiver == "string")
+        return J.JSString.prototype;
+      if (receiver == null)
+        return receiver;
+      if (Array.isArray(receiver))
+        return J.JSArray.prototype;
+      if (typeof receiver != "object") {
+        if (typeof receiver == "function")
+          return J.JavaScriptFunction.prototype;
+        if (typeof receiver == "symbol")
+          return J.JavaScriptSymbol.prototype;
+        if (typeof receiver == "bigint")
+          return J.JavaScriptBigInt.prototype;
+        return receiver;
+      }
+      if (receiver instanceof A.Object)
+        return receiver;
+      return J.getNativeInterceptor(receiver);
+    },
+    getInterceptor$ax(receiver) {
+      if (receiver == null)
+        return receiver;
+      if (Array.isArray(receiver))
+        return J.JSArray.prototype;
+      if (typeof receiver != "object") {
+        if (typeof receiver == "function")
+          return J.JavaScriptFunction.prototype;
+        if (typeof receiver == "symbol")
+          return J.JavaScriptSymbol.prototype;
+        if (typeof receiver == "bigint")
+          return J.JavaScriptBigInt.prototype;
+        return receiver;
+      }
+      if (receiver instanceof A.Object)
+        return receiver;
+      return J.getNativeInterceptor(receiver);
+    },
+    getInterceptor$s(receiver) {
+      if (typeof receiver == "string")
+        return J.JSString.prototype;
+      if (receiver == null)
+        return receiver;
+      if (!(receiver instanceof A.Object))
+        return J.UnknownJavaScriptObject.prototype;
+      return receiver;
+    },
+    getInterceptor$x(receiver) {
+      if (receiver == null)
+        return receiver;
+      if (typeof receiver != "object") {
+        if (typeof receiver == "function")
+          return J.JavaScriptFunction.prototype;
+        if (typeof receiver == "symbol")
+          return J.JavaScriptSymbol.prototype;
+        if (typeof receiver == "bigint")
+          return J.JavaScriptBigInt.prototype;
+        return receiver;
+      }
+      if (receiver instanceof A.Object)
+        return receiver;
+      return J.getNativeInterceptor(receiver);
+    },
+    getInterceptor$z(receiver) {
+      if (receiver == null)
+        return receiver;
+      if (!(receiver instanceof A.Object))
+        return J.UnknownJavaScriptObject.prototype;
+      return receiver;
+    },
+    get$error$z(receiver) {
+      return J.getInterceptor$z(receiver).get$error(receiver);
+    },
+    get$hashCode$(receiver) {
+      return J.getInterceptor$(receiver).get$hashCode(receiver);
+    },
+    get$iterator$ax(receiver) {
+      return J.getInterceptor$ax(receiver).get$iterator(receiver);
+    },
+    get$length$asx(receiver) {
+      return J.getInterceptor$asx(receiver).get$length(receiver);
+    },
+    get$onClick$x(receiver) {
+      return J.getInterceptor$x(receiver).get$onClick(receiver);
+    },
+    get$runtimeType$(receiver) {
+      return J.getInterceptor$(receiver).get$runtimeType(receiver);
+    },
+    $eq$(receiver, a0) {
+      if (receiver == null)
+        return a0 == null;
+      if (typeof receiver != "object")
+        return a0 != null && receiver === a0;
+      return J.getInterceptor$(receiver).$eq(receiver, a0);
+    },
+    _removeEventListener$3$x(receiver, a0, a1, a2) {
+      return J.getInterceptor$x(receiver)._removeEventListener$3(receiver, a0, a1, a2);
+    },
+    addEventListener$3$x(receiver, a0, a1, a2) {
+      return J.getInterceptor$x(receiver).addEventListener$3(receiver, a0, a1, a2);
+    },
+    complete$1$z(receiver, a0) {
+      return J.getInterceptor$z(receiver).complete$1(receiver, a0);
+    },
+    forEach$1$ax(receiver, a0) {
+      return J.getInterceptor$ax(receiver).forEach$1(receiver, a0);
+    },
+    matchAsPrefix$2$s(receiver, a0, a1) {
+      return J.getInterceptor$s(receiver).matchAsPrefix$2(receiver, a0, a1);
+    },
+    toString$0$(receiver) {
+      return J.getInterceptor$(receiver).toString$0(receiver);
+    },
+    Interceptor: function Interceptor() {
+    },
+    JSBool: function JSBool() {
+    },
+    JSNull: function JSNull() {
+    },
+    JavaScriptObject: function JavaScriptObject() {
+    },
+    LegacyJavaScriptObject: function LegacyJavaScriptObject() {
+    },
+    PlainJavaScriptObject: function PlainJavaScriptObject() {
+    },
+    UnknownJavaScriptObject: function UnknownJavaScriptObject() {
+    },
+    JavaScriptFunction: function JavaScriptFunction() {
+    },
+    JavaScriptBigInt: function JavaScriptBigInt() {
+    },
+    JavaScriptSymbol: function JavaScriptSymbol() {
+    },
+    JSArray: function JSArray(t0) {
+      this.$ti = t0;
+    },
+    JSUnmodifiableArray: function JSUnmodifiableArray(t0) {
+      this.$ti = t0;
+    },
+    ArrayIterator: function ArrayIterator(t0, t1, t2) {
+      var _ = this;
+      _._iterable = t0;
+      _._length = t1;
+      _._index = 0;
+      _._current = null;
+      _.$ti = t2;
+    },
+    JSNumber: function JSNumber() {
+    },
+    JSInt: function JSInt() {
+    },
+    JSNumNotInt: function JSNumNotInt() {
+    },
+    JSString: function JSString() {
     }
-  }
-  var C = {},
-  H = {JS_CONST: function JS_CONST() {
+  },
+  A = {JS_CONST: function JS_CONST() {
     },
-    LateError$fieldNI: function(fieldName) {
-      return new H.LateError("Field '" + fieldName + "' has not been initialized.");
-    },
-    checkNotNullable: function(value, $name, $T) {
+    checkNotNullable(value, $name, $T) {
       return value;
     },
-    IterableElementError_noElement: function() {
-      return new P.StateError("No element");
+    isToStringVisiting(object) {
+      var t1, i;
+      for (t1 = $.toStringVisiting.length, i = 0; i < t1; ++i)
+        if (object === $.toStringVisiting[i])
+          return true;
+      return false;
     },
-    IterableElementError_tooFew: function() {
-      return new P.StateError("Too few elements");
+    IterableElementError_noElement() {
+      return new A.StateError("No element");
+    },
+    IterableElementError_tooFew() {
+      return new A.StateError("Too few elements");
     },
     LateError: function LateError(t0) {
       this._message = t0;
@@ -287,13 +527,13 @@
     },
     FixedLengthListMixin: function FixedLengthListMixin() {
     },
-    unminifyOrTag: function(rawClassName) {
-      var preserved = H.unmangleGlobalNameIfPreservedAnyways(rawClassName);
+    unminifyOrTag(rawClassName) {
+      var preserved = init.mangledGlobalNames[rawClassName];
       if (preserved != null)
         return preserved;
       return rawClassName;
     },
-    isJsIndexable: function(object, record) {
+    isJsIndexable(object, record) {
       var result;
       if (record != null) {
         result = record.x;
@@ -302,8 +542,8 @@
       }
       return type$.JavaScriptIndexingBehavior_dynamic._is(object);
     },
-    S: function(value) {
-      var res;
+    S(value) {
+      var result;
       if (typeof value == "string")
         return value;
       if (typeof value == "number") {
@@ -315,24 +555,28 @@
         return "false";
       else if (value == null)
         return "null";
-      res = J.toString$0$(value);
-      return res;
+      result = J.toString$0$(value);
+      return result;
     },
-    Primitives_objectHashCode: function(object) {
-      var hash = object.$identityHash;
+    Primitives_objectHashCode(object) {
+      var hash,
+        property = $.Primitives__identityHashCodeProperty;
+      if (property == null)
+        property = $.Primitives__identityHashCodeProperty = Symbol("identityHashCode");
+      hash = object[property];
       if (hash == null) {
         hash = Math.random() * 0x3fffffff | 0;
-        object.$identityHash = hash;
+        object[property] = hash;
       }
       return hash;
     },
-    Primitives_parseInt: function(source, radix) {
+    Primitives_parseInt(source, radix) {
       var decimalMatch, maxCharCode, digitsPart, t1, i, _null = null,
         match = /^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(source);
       if (match == null)
         return _null;
       if (3 >= match.length)
-        return H.ioore(match, 3);
+        return A.ioore(match, 3);
       decimalMatch = match[3];
       if (radix == null) {
         if (decimalMatch != null)
@@ -342,102 +586,109 @@
         return _null;
       }
       if (radix < 2 || radix > 36)
-        throw H.wrapException(P.RangeError$range(radix, 2, 36, "radix", _null));
+        throw A.wrapException(A.RangeError$range(radix, 2, 36, "radix", _null));
       if (radix === 10 && decimalMatch != null)
         return parseInt(source, 10);
       if (radix < 10 || decimalMatch == null) {
         maxCharCode = radix <= 10 ? 47 + radix : 86 + radix;
         digitsPart = match[1];
         for (t1 = digitsPart.length, i = 0; i < t1; ++i)
-          if ((C.JSString_methods._codeUnitAt$1(digitsPart, i) | 32) > maxCharCode)
+          if ((digitsPart.charCodeAt(i) | 32) > maxCharCode)
             return _null;
       }
       return parseInt(source, radix);
     },
-    Primitives_objectTypeName: function(object) {
-      return H.Primitives__objectTypeNameNewRti(object);
+    Primitives_objectTypeName(object) {
+      return A.Primitives__objectTypeNameNewRti(object);
     },
-    Primitives__objectTypeNameNewRti: function(object) {
-      var dispatchName, t1, $constructor, constructorName;
-      if (object instanceof P.Object)
-        return H._rtiToString(H.instanceType(object), null);
-      if (J.getInterceptor$(object) === C.Interceptor_methods || type$.UnknownJavaScriptObject._is(object)) {
-        dispatchName = C.C_JS_CONST(object);
-        t1 = dispatchName !== "Object" && dispatchName !== "";
-        if (t1)
+    Primitives__objectTypeNameNewRti(object) {
+      var interceptor, dispatchName, $constructor, constructorName;
+      if (object instanceof A.Object)
+        return A._rtiToString(A.instanceType(object), null);
+      interceptor = J.getInterceptor$(object);
+      if (interceptor === B.Interceptor_methods || interceptor === B.JavaScriptObject_methods || type$.UnknownJavaScriptObject._is(object)) {
+        dispatchName = B.C_JS_CONST(object);
+        if (dispatchName !== "Object" && dispatchName !== "")
           return dispatchName;
         $constructor = object.constructor;
         if (typeof $constructor == "function") {
           constructorName = $constructor.name;
-          if (typeof constructorName == "string")
-            t1 = constructorName !== "Object" && constructorName !== "";
-          else
-            t1 = false;
-          if (t1)
+          if (typeof constructorName == "string" && constructorName !== "Object" && constructorName !== "")
             return constructorName;
         }
       }
-      return H._rtiToString(H.instanceType(object), null);
+      return A._rtiToString(A.instanceType(object), null);
     },
-    Primitives_stringFromCharCode: function(charCode) {
+    Primitives_safeToString(object) {
+      if (typeof object == "number" || A._isBool(object))
+        return J.toString$0$(object);
+      if (typeof object == "string")
+        return JSON.stringify(object);
+      if (object instanceof A.Closure)
+        return object.toString$0(0);
+      return "Instance of '" + A.Primitives_objectTypeName(object) + "'";
+    },
+    Primitives_stringFromCharCode(charCode) {
       var bits;
       if (0 <= charCode) {
         if (charCode <= 65535)
           return String.fromCharCode(charCode);
         if (charCode <= 1114111) {
           bits = charCode - 65536;
-          return String.fromCharCode((C.JSInt_methods._shrOtherPositive$1(bits, 10) | 55296) >>> 0, bits & 1023 | 56320);
+          return String.fromCharCode((B.JSInt_methods._shrOtherPositive$1(bits, 10) | 55296) >>> 0, bits & 1023 | 56320);
         }
       }
-      throw H.wrapException(P.RangeError$range(charCode, 0, 1114111, null, null));
+      throw A.wrapException(A.RangeError$range(charCode, 0, 1114111, null, null));
     },
-    Primitives_lazyAsJsDate: function(receiver) {
+    Primitives_lazyAsJsDate(receiver) {
       if (receiver.date === void 0)
         receiver.date = new Date(receiver._value);
       return receiver.date;
     },
-    Primitives_getYear: function(receiver) {
-      return receiver.isUtc ? H.Primitives_lazyAsJsDate(receiver).getUTCFullYear() + 0 : H.Primitives_lazyAsJsDate(receiver).getFullYear() + 0;
+    Primitives_getYear(receiver) {
+      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCFullYear() + 0 : A.Primitives_lazyAsJsDate(receiver).getFullYear() + 0;
     },
-    Primitives_getMonth: function(receiver) {
-      return receiver.isUtc ? H.Primitives_lazyAsJsDate(receiver).getUTCMonth() + 1 : H.Primitives_lazyAsJsDate(receiver).getMonth() + 1;
+    Primitives_getMonth(receiver) {
+      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMonth() + 1 : A.Primitives_lazyAsJsDate(receiver).getMonth() + 1;
     },
-    Primitives_getDay: function(receiver) {
-      return receiver.isUtc ? H.Primitives_lazyAsJsDate(receiver).getUTCDate() + 0 : H.Primitives_lazyAsJsDate(receiver).getDate() + 0;
+    Primitives_getDay(receiver) {
+      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCDate() + 0 : A.Primitives_lazyAsJsDate(receiver).getDate() + 0;
     },
-    Primitives_getHours: function(receiver) {
-      return receiver.isUtc ? H.Primitives_lazyAsJsDate(receiver).getUTCHours() + 0 : H.Primitives_lazyAsJsDate(receiver).getHours() + 0;
+    Primitives_getHours(receiver) {
+      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCHours() + 0 : A.Primitives_lazyAsJsDate(receiver).getHours() + 0;
     },
-    Primitives_getMinutes: function(receiver) {
-      return receiver.isUtc ? H.Primitives_lazyAsJsDate(receiver).getUTCMinutes() + 0 : H.Primitives_lazyAsJsDate(receiver).getMinutes() + 0;
+    Primitives_getMinutes(receiver) {
+      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMinutes() + 0 : A.Primitives_lazyAsJsDate(receiver).getMinutes() + 0;
     },
-    Primitives_getSeconds: function(receiver) {
-      return receiver.isUtc ? H.Primitives_lazyAsJsDate(receiver).getUTCSeconds() + 0 : H.Primitives_lazyAsJsDate(receiver).getSeconds() + 0;
+    Primitives_getSeconds(receiver) {
+      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCSeconds() + 0 : A.Primitives_lazyAsJsDate(receiver).getSeconds() + 0;
     },
-    Primitives_getMilliseconds: function(receiver) {
-      return receiver.isUtc ? H.Primitives_lazyAsJsDate(receiver).getUTCMilliseconds() + 0 : H.Primitives_lazyAsJsDate(receiver).getMilliseconds() + 0;
+    Primitives_getMilliseconds(receiver) {
+      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMilliseconds() + 0 : A.Primitives_lazyAsJsDate(receiver).getMilliseconds() + 0;
     },
-    ioore: function(receiver, index) {
+    ioore(receiver, index) {
       if (receiver == null)
         J.get$length$asx(receiver);
-      throw H.wrapException(H.diagnoseIndexError(receiver, index));
+      throw A.wrapException(A.diagnoseIndexError(receiver, index));
     },
-    diagnoseIndexError: function(indexable, index) {
+    diagnoseIndexError(indexable, index) {
       var $length, _s5_ = "index";
-      if (!H._isInt(index))
-        return new P.ArgumentError(true, index, _s5_, null);
-      $length = H._asInt(J.get$length$asx(indexable));
+      if (!A._isInt(index))
+        return new A.ArgumentError(true, index, _s5_, null);
+      $length = A._asInt(J.get$length$asx(indexable));
       if (index < 0 || index >= $length)
-        return P.IndexError$(index, indexable, _s5_, null, $length);
-      return P.RangeError$value(index, _s5_);
+        return A.IndexError$withLength(index, $length, indexable, null, _s5_);
+      return A.RangeError$value(index, _s5_);
     },
-    wrapException: function(ex) {
-      var wrapper, t1;
+    wrapException(ex) {
+      return A.initializeExceptionWrapper(new Error(), ex);
+    },
+    initializeExceptionWrapper(wrapper, ex) {
+      var t1;
       if (ex == null)
-        ex = new P.NullThrownError();
-      wrapper = new Error();
+        ex = new A.TypeError();
       wrapper.dartException = ex;
-      t1 = H.toStringWrapper;
+      t1 = A.toStringWrapper;
       if ("defineProperty" in Object) {
         Object.defineProperty(wrapper, "message", {get: t1});
         wrapper.name = "";
@@ -445,29 +696,32 @@
         wrapper.toString = t1;
       return wrapper;
     },
-    toStringWrapper: function() {
+    toStringWrapper() {
       return J.toString$0$(this.dartException);
     },
-    throwExpression: function(ex) {
-      throw H.wrapException(ex);
+    throwExpression(ex) {
+      throw A.wrapException(ex);
     },
-    throwConcurrentModificationError: function(collection) {
-      throw H.wrapException(P.ConcurrentModificationError$(collection));
+    throwExpressionWithWrapper(ex, wrapper) {
+      throw A.initializeExceptionWrapper(wrapper, ex);
     },
-    TypeErrorDecoder_extractPattern: function(message) {
+    throwConcurrentModificationError(collection) {
+      throw A.wrapException(A.ConcurrentModificationError$(collection));
+    },
+    TypeErrorDecoder_extractPattern(message) {
       var match, $arguments, argumentsExpr, expr, method, receiver;
-      message = H.quoteStringForRegExp(message.replace(String({}), "$receiver$"));
+      message = A.quoteStringForRegExp(message.replace(String({}), "$receiver$"));
       match = message.match(/\\\$[a-zA-Z]+\\\$/g);
       if (match == null)
-        match = H.setRuntimeTypeInfo([], type$.JSArray_String);
+        match = A._setArrayType([], type$.JSArray_String);
       $arguments = match.indexOf("\\$arguments\\$");
       argumentsExpr = match.indexOf("\\$argumentsExpr\\$");
       expr = match.indexOf("\\$expr\\$");
       method = match.indexOf("\\$method\\$");
       receiver = match.indexOf("\\$receiver\\$");
-      return new H.TypeErrorDecoder(message.replace(new RegExp("\\\\\\$arguments\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$", "g"), "((?:x|[^x])*)"), $arguments, argumentsExpr, expr, method, receiver);
+      return new A.TypeErrorDecoder(message.replace(new RegExp("\\\\\\$arguments\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$", "g"), "((?:x|[^x])*)"), $arguments, argumentsExpr, expr, method, receiver);
     },
-    TypeErrorDecoder_provokeCallErrorOn: function(expression) {
+    TypeErrorDecoder_provokeCallErrorOn(expression) {
       return function($expr$) {
         var $argumentsExpr$ = "$arguments$";
         try {
@@ -477,7 +731,7 @@
         }
       }(expression);
     },
-    TypeErrorDecoder_provokePropertyErrorOn: function(expression) {
+    TypeErrorDecoder_provokePropertyErrorOn(expression) {
       return function($expr$) {
         try {
           $expr$.$method$;
@@ -486,44 +740,47 @@
         }
       }(expression);
     },
-    JsNoSuchMethodError$: function(_message, match) {
+    JsNoSuchMethodError$(_message, match) {
       var t1 = match == null,
         t2 = t1 ? null : match.method;
-      return new H.JsNoSuchMethodError(_message, t2, t1 ? null : match.receiver);
+      return new A.JsNoSuchMethodError(_message, t2, t1 ? null : match.receiver);
     },
-    unwrapException: function(ex) {
+    unwrapException(ex) {
+      var t1;
       if (ex == null)
-        return new H.NullThrownFromJavaScriptException(ex);
-      if (ex instanceof H.ExceptionAndStackTrace)
-        return H.saveStackTrace(ex, type$.Object._as(ex.dartException));
+        return new A.NullThrownFromJavaScriptException(ex);
+      if (ex instanceof A.ExceptionAndStackTrace) {
+        t1 = ex.dartException;
+        return A.saveStackTrace(ex, t1 == null ? type$.Object._as(t1) : t1);
+      }
       if (typeof ex !== "object")
         return ex;
       if ("dartException" in ex)
-        return H.saveStackTrace(ex, ex.dartException);
-      return H._unwrapNonDartException(ex);
+        return A.saveStackTrace(ex, ex.dartException);
+      return A._unwrapNonDartException(ex);
     },
-    saveStackTrace: function(ex, error) {
+    saveStackTrace(ex, error) {
       if (type$.Error._is(error))
         if (error.$thrownJsError == null)
           error.$thrownJsError = ex;
       return error;
     },
-    _unwrapNonDartException: function(ex) {
-      var message, number, ieErrorCode, t1, nsme, notClosure, nullCall, nullLiteralCall, undefCall, undefLiteralCall, nullProperty, undefProperty, undefLiteralProperty, match, _null = null;
+    _unwrapNonDartException(ex) {
+      var message, number, ieErrorCode, nsme, notClosure, nullCall, nullLiteralCall, undefCall, undefLiteralCall, nullProperty, undefProperty, undefLiteralProperty, match;
       if (!("message" in ex))
         return ex;
       message = ex.message;
       if ("number" in ex && typeof ex.number == "number") {
         number = ex.number;
         ieErrorCode = number & 65535;
-        if ((C.JSInt_methods._shrOtherPositive$1(number, 16) & 8191) === 10)
+        if ((B.JSInt_methods._shrOtherPositive$1(number, 16) & 8191) === 10)
           switch (ieErrorCode) {
             case 438:
-              return H.saveStackTrace(ex, H.JsNoSuchMethodError$(H.S(message) + " (Error " + ieErrorCode + ")", _null));
+              return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A.S(message) + " (Error " + ieErrorCode + ")", null));
             case 445:
             case 5007:
-              t1 = H.S(message) + " (Error " + ieErrorCode + ")";
-              return H.saveStackTrace(ex, new H.NullError(t1, _null));
+              A.S(message);
+              return A.saveStackTrace(ex, new A.NullError());
           }
       }
       if (ex instanceof TypeError) {
@@ -539,54 +796,22 @@
         undefLiteralProperty = $.$get$TypeErrorDecoder_undefinedLiteralPropertyPattern();
         match = nsme.matchTypeError$1(message);
         if (match != null)
-          return H.saveStackTrace(ex, H.JsNoSuchMethodError$(H._asString(message), match));
+          return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A._asString(message), match));
         else {
           match = notClosure.matchTypeError$1(message);
           if (match != null) {
             match.method = "call";
-            return H.saveStackTrace(ex, H.JsNoSuchMethodError$(H._asString(message), match));
-          } else {
-            match = nullCall.matchTypeError$1(message);
-            if (match == null) {
-              match = nullLiteralCall.matchTypeError$1(message);
-              if (match == null) {
-                match = undefCall.matchTypeError$1(message);
-                if (match == null) {
-                  match = undefLiteralCall.matchTypeError$1(message);
-                  if (match == null) {
-                    match = nullProperty.matchTypeError$1(message);
-                    if (match == null) {
-                      match = nullLiteralCall.matchTypeError$1(message);
-                      if (match == null) {
-                        match = undefProperty.matchTypeError$1(message);
-                        if (match == null) {
-                          match = undefLiteralProperty.matchTypeError$1(message);
-                          t1 = match != null;
-                        } else
-                          t1 = true;
-                      } else
-                        t1 = true;
-                    } else
-                      t1 = true;
-                  } else
-                    t1 = true;
-                } else
-                  t1 = true;
-              } else
-                t1 = true;
-            } else
-              t1 = true;
-            if (t1) {
-              H._asString(message);
-              return H.saveStackTrace(ex, new H.NullError(message, match == null ? _null : match.method));
-            }
+            return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A._asString(message), match));
+          } else if (nullCall.matchTypeError$1(message) != null || nullLiteralCall.matchTypeError$1(message) != null || undefCall.matchTypeError$1(message) != null || undefLiteralCall.matchTypeError$1(message) != null || nullProperty.matchTypeError$1(message) != null || nullLiteralCall.matchTypeError$1(message) != null || undefProperty.matchTypeError$1(message) != null || undefLiteralProperty.matchTypeError$1(message) != null) {
+            A._asString(message);
+            return A.saveStackTrace(ex, new A.NullError());
           }
         }
-        return H.saveStackTrace(ex, new H.UnknownJsTypeError(typeof message == "string" ? message : ""));
+        return A.saveStackTrace(ex, new A.UnknownJsTypeError(typeof message == "string" ? message : ""));
       }
       if (ex instanceof RangeError) {
         if (typeof message == "string" && message.indexOf("call stack") !== -1)
-          return new P.StackOverflowError();
+          return new A.StackOverflowError();
         message = function(ex) {
           try {
             return String(ex);
@@ -594,25 +819,35 @@
           }
           return null;
         }(ex);
-        return H.saveStackTrace(ex, new P.ArgumentError(false, _null, _null, typeof message == "string" ? message.replace(/^RangeError:\s*/, "") : message));
+        return A.saveStackTrace(ex, new A.ArgumentError(false, null, null, typeof message == "string" ? message.replace(/^RangeError:\s*/, "") : message));
       }
       if (typeof InternalError == "function" && ex instanceof InternalError)
         if (typeof message == "string" && message === "too much recursion")
-          return new P.StackOverflowError();
+          return new A.StackOverflowError();
       return ex;
     },
-    getTraceFromException: function(exception) {
+    getTraceFromException(exception) {
       var trace;
-      if (exception instanceof H.ExceptionAndStackTrace)
+      if (exception instanceof A.ExceptionAndStackTrace)
         return exception.stackTrace;
       if (exception == null)
-        return new H._StackTrace(exception);
+        return new A._StackTrace(exception);
       trace = exception.$cachedTrace;
       if (trace != null)
         return trace;
-      return exception.$cachedTrace = new H._StackTrace(exception);
+      trace = new A._StackTrace(exception);
+      if (typeof exception === "object")
+        exception.$cachedTrace = trace;
+      return trace;
     },
-    fillLiteralMap: function(keyValuePairs, result) {
+    objectHashCode(object) {
+      if (object == null)
+        return J.get$hashCode$(object);
+      if (typeof object == "object")
+        return A.Primitives_objectHashCode(object);
+      return J.get$hashCode$(object);
+    },
+    fillLiteralMap(keyValuePairs, result) {
       var index, index0, index1,
         $length = keyValuePairs.length;
       for (index = 0; index < $length; index = index1) {
@@ -622,9 +857,9 @@
       }
       return result;
     },
-    invokeClosure: function(closure, numberOfArguments, arg1, arg2, arg3, arg4) {
+    _invokeClosure(closure, numberOfArguments, arg1, arg2, arg3, arg4) {
       type$.Function._as(closure);
-      switch (H._asInt(numberOfArguments)) {
+      switch (A._asInt(numberOfArguments)) {
         case 0:
           return closure.call$0();
         case 1:
@@ -636,300 +871,273 @@
         case 4:
           return closure.call$4(arg1, arg2, arg3, arg4);
       }
-      throw H.wrapException(new P._Exception("Unsupported number of arguments for wrapped closure"));
+      throw A.wrapException(new A._Exception("Unsupported number of arguments for wrapped closure"));
     },
-    convertDartClosureToJS: function(closure, arity) {
+    convertDartClosureToJS(closure, arity) {
       var $function;
       if (closure == null)
         return null;
       $function = closure.$identity;
       if (!!$function)
         return $function;
-      $function = function(closure, arity, invoke) {
-        return function(a1, a2, a3, a4) {
-          return invoke(closure, arity, a1, a2, a3, a4);
-        };
-      }(closure, arity, H.invokeClosure);
+      $function = A.convertDartClosureToJSUncached(closure, arity);
       closure.$identity = $function;
       return $function;
     },
-    Closure_fromTearOff: function(receiver, functions, applyTrampolineIndex, reflectionInfo, isStatic, isIntercepted, propertyName) {
-      var $constructor, t1, trampoline, applyTrampoline, i, stub, stubCallName,
-        $function = functions[0],
-        callName = $function.$callName,
-        $prototype = isStatic ? Object.create(new H.StaticClosure().constructor.prototype) : Object.create(new H.BoundClosure(null, null, null, "").constructor.prototype);
+    convertDartClosureToJSUncached(closure, arity) {
+      var entry;
+      switch (arity) {
+        case 0:
+          entry = closure.call$0;
+          break;
+        case 1:
+          entry = closure.call$1;
+          break;
+        case 2:
+          entry = closure.call$2;
+          break;
+        case 3:
+          entry = closure.call$3;
+          break;
+        case 4:
+          entry = closure.call$4;
+          break;
+        default:
+          entry = null;
+      }
+      if (entry != null)
+        return entry.bind(closure);
+      return function(closure, arity, invoke) {
+        return function(a1, a2, a3, a4) {
+          return invoke(closure, arity, a1, a2, a3, a4);
+        };
+      }(closure, arity, A._invokeClosure);
+    },
+    Closure_fromTearOff(parameters) {
+      var $prototype, $constructor, t2, trampoline, applyTrampoline, i, stub, stub0, stubName, stubCallName,
+        container = parameters.co,
+        isStatic = parameters.iS,
+        isIntercepted = parameters.iI,
+        needsDirectAccess = parameters.nDA,
+        applyTrampolineIndex = parameters.aI,
+        funsOrNames = parameters.fs,
+        callNames = parameters.cs,
+        $name = funsOrNames[0],
+        callName = callNames[0],
+        $function = container[$name],
+        t1 = parameters.fT;
+      t1.toString;
+      $prototype = isStatic ? Object.create(new A.StaticClosure().constructor.prototype) : Object.create(new A.BoundClosure(null, null).constructor.prototype);
       $prototype.$initialize = $prototype.constructor;
       if (isStatic)
         $constructor = function static_tear_off() {
           this.$initialize();
         };
-      else {
-        t1 = $.Closure_functionCounter;
-        if (typeof t1 !== "number")
-          return t1.$add();
-        $.Closure_functionCounter = t1 + 1;
-        t1 = new Function("a,b,c,d" + t1, "this.$initialize(a,b,c,d" + t1 + ")");
-        $constructor = t1;
-      }
+      else
+        $constructor = function tear_off(a, b) {
+          this.$initialize(a, b);
+        };
       $prototype.constructor = $constructor;
       $constructor.prototype = $prototype;
-      if (!isStatic) {
-        trampoline = H.Closure_forwardCallTo(receiver, $function, isIntercepted);
-        trampoline.$reflectionInfo = reflectionInfo;
-      } else {
-        $prototype.$static_name = propertyName;
+      $prototype.$_name = $name;
+      $prototype.$_target = $function;
+      t2 = !isStatic;
+      if (t2)
+        trampoline = A.Closure_forwardCallTo($name, $function, isIntercepted, needsDirectAccess);
+      else {
+        $prototype.$static_name = $name;
         trampoline = $function;
       }
-      type$.Object._as(reflectionInfo);
-      $prototype.$signature = H.Closure__computeSignatureFunctionNewRti(reflectionInfo, isStatic, isIntercepted);
+      $prototype.$signature = A.Closure__computeSignatureFunctionNewRti(t1, isStatic, isIntercepted);
       $prototype[callName] = trampoline;
-      for (applyTrampoline = trampoline, i = 1; i < functions.length; ++i) {
-        stub = functions[i];
-        stubCallName = stub.$callName;
+      for (applyTrampoline = trampoline, i = 1; i < funsOrNames.length; ++i) {
+        stub = funsOrNames[i];
+        if (typeof stub == "string") {
+          stub0 = container[stub];
+          stubName = stub;
+          stub = stub0;
+        } else
+          stubName = "";
+        stubCallName = callNames[i];
         if (stubCallName != null) {
-          stub = isStatic ? stub : H.Closure_forwardCallTo(receiver, stub, isIntercepted);
+          if (t2)
+            stub = A.Closure_forwardCallTo(stubName, stub, isIntercepted, needsDirectAccess);
           $prototype[stubCallName] = stub;
         }
-        if (i === applyTrampolineIndex) {
-          stub.$reflectionInfo = reflectionInfo;
+        if (i === applyTrampolineIndex)
           applyTrampoline = stub;
-        }
       }
       $prototype["call*"] = applyTrampoline;
-      $prototype.$requiredArgCount = $function.$requiredArgCount;
-      $prototype.$defaultValues = $function.$defaultValues;
+      $prototype.$requiredArgCount = parameters.rC;
+      $prototype.$defaultValues = parameters.dV;
       return $constructor;
     },
-    Closure__computeSignatureFunctionNewRti: function(functionType, isStatic, isIntercepted) {
-      var typeEvalMethod;
+    Closure__computeSignatureFunctionNewRti(functionType, isStatic, isIntercepted) {
       if (typeof functionType == "number")
-        return function(getType, t) {
-          return function() {
-            return getType(t);
-          };
-        }(H.getTypeFromTypesTable, functionType);
+        return functionType;
       if (typeof functionType == "string") {
         if (isStatic)
-          throw H.wrapException("Cannot compute signature for static tearoff.");
-        typeEvalMethod = isIntercepted ? H.BoundClosure_evalRecipeIntercepted : H.BoundClosure_evalRecipe;
+          throw A.wrapException("Cannot compute signature for static tearoff.");
         return function(recipe, evalOnReceiver) {
           return function() {
             return evalOnReceiver(this, recipe);
           };
-        }(functionType, typeEvalMethod);
+        }(functionType, A.BoundClosure_evalRecipe);
       }
-      throw H.wrapException("Error in functionType of tearoff");
+      throw A.wrapException("Error in functionType of tearoff");
     },
-    Closure_cspForwardCall: function(arity, isSuperCall, stubName, $function) {
-      var getSelf = H.BoundClosure_selfOf;
-      switch (isSuperCall ? -1 : arity) {
+    Closure_cspForwardCall(arity, needsDirectAccess, stubName, $function) {
+      var getReceiver = A.BoundClosure_receiverOf;
+      switch (needsDirectAccess ? -1 : arity) {
         case 0:
-          return function(n, S) {
+          return function(entry, receiverOf) {
             return function() {
-              return S(this)[n]();
+              return receiverOf(this)[entry]();
             };
-          }(stubName, getSelf);
+          }(stubName, getReceiver);
         case 1:
-          return function(n, S) {
+          return function(entry, receiverOf) {
             return function(a) {
-              return S(this)[n](a);
+              return receiverOf(this)[entry](a);
             };
-          }(stubName, getSelf);
+          }(stubName, getReceiver);
         case 2:
-          return function(n, S) {
+          return function(entry, receiverOf) {
             return function(a, b) {
-              return S(this)[n](a, b);
+              return receiverOf(this)[entry](a, b);
             };
-          }(stubName, getSelf);
+          }(stubName, getReceiver);
         case 3:
-          return function(n, S) {
+          return function(entry, receiverOf) {
             return function(a, b, c) {
-              return S(this)[n](a, b, c);
+              return receiverOf(this)[entry](a, b, c);
             };
-          }(stubName, getSelf);
+          }(stubName, getReceiver);
         case 4:
-          return function(n, S) {
+          return function(entry, receiverOf) {
             return function(a, b, c, d) {
-              return S(this)[n](a, b, c, d);
+              return receiverOf(this)[entry](a, b, c, d);
             };
-          }(stubName, getSelf);
+          }(stubName, getReceiver);
         case 5:
-          return function(n, S) {
+          return function(entry, receiverOf) {
             return function(a, b, c, d, e) {
-              return S(this)[n](a, b, c, d, e);
+              return receiverOf(this)[entry](a, b, c, d, e);
             };
-          }(stubName, getSelf);
+          }(stubName, getReceiver);
         default:
-          return function(f, s) {
+          return function(f, receiverOf) {
             return function() {
-              return f.apply(s(this), arguments);
+              return f.apply(receiverOf(this), arguments);
             };
-          }($function, getSelf);
+          }($function, getReceiver);
       }
     },
-    Closure_forwardCallTo: function(receiver, $function, isIntercepted) {
-      var stubName, arity, lookedUpFunction, t1, t2, selfName, $arguments;
+    Closure_forwardCallTo(stubName, $function, isIntercepted, needsDirectAccess) {
+      var arity, t1;
       if (isIntercepted)
-        return H.Closure_forwardInterceptedCallTo(receiver, $function);
-      stubName = $function.$stubName;
+        return A.Closure_forwardInterceptedCallTo(stubName, $function, needsDirectAccess);
       arity = $function.length;
-      lookedUpFunction = receiver[stubName];
-      t1 = $function == null ? lookedUpFunction == null : $function === lookedUpFunction;
-      t2 = !t1 || arity >= 27;
-      if (t2)
-        return H.Closure_cspForwardCall(arity, !t1, stubName, $function);
-      if (arity === 0) {
-        t1 = $.Closure_functionCounter;
-        if (typeof t1 !== "number")
-          return t1.$add();
-        $.Closure_functionCounter = t1 + 1;
-        selfName = "self" + t1;
-        t1 = "return function(){var " + selfName + " = this.";
-        t2 = $.BoundClosure_selfFieldNameCache;
-        return new Function(t1 + (t2 == null ? $.BoundClosure_selfFieldNameCache = H.BoundClosure_computeFieldNamed("self") : t2) + ";return " + selfName + "." + H.S(stubName) + "();}")();
-      }
-      $arguments = "abcdefghijklmnopqrstuvwxyz".split("").splice(0, arity).join(",");
-      t1 = $.Closure_functionCounter;
-      if (typeof t1 !== "number")
-        return t1.$add();
-      $.Closure_functionCounter = t1 + 1;
-      $arguments += t1;
-      t1 = "return function(" + $arguments + "){return this.";
-      t2 = $.BoundClosure_selfFieldNameCache;
-      return new Function(t1 + (t2 == null ? $.BoundClosure_selfFieldNameCache = H.BoundClosure_computeFieldNamed("self") : t2) + "." + H.S(stubName) + "(" + $arguments + ");}")();
+      t1 = A.Closure_cspForwardCall(arity, needsDirectAccess, stubName, $function);
+      return t1;
     },
-    Closure_cspForwardInterceptedCall: function(arity, isSuperCall, $name, $function) {
-      var getSelf = H.BoundClosure_selfOf,
-        getReceiver = H.BoundClosure_receiverOf;
-      switch (isSuperCall ? -1 : arity) {
+    Closure_cspForwardInterceptedCall(arity, needsDirectAccess, stubName, $function) {
+      var getReceiver = A.BoundClosure_receiverOf,
+        getInterceptor = A.BoundClosure_interceptorOf;
+      switch (needsDirectAccess ? -1 : arity) {
         case 0:
-          throw H.wrapException(new H.RuntimeError("Intercepted function with no arguments."));
+          throw A.wrapException(new A.RuntimeError("Intercepted function with no arguments."));
         case 1:
-          return function(n, s, r) {
+          return function(entry, interceptorOf, receiverOf) {
             return function() {
-              return s(this)[n](r(this));
+              return interceptorOf(this)[entry](receiverOf(this));
             };
-          }($name, getSelf, getReceiver);
+          }(stubName, getInterceptor, getReceiver);
         case 2:
-          return function(n, s, r) {
+          return function(entry, interceptorOf, receiverOf) {
             return function(a) {
-              return s(this)[n](r(this), a);
+              return interceptorOf(this)[entry](receiverOf(this), a);
             };
-          }($name, getSelf, getReceiver);
+          }(stubName, getInterceptor, getReceiver);
         case 3:
-          return function(n, s, r) {
+          return function(entry, interceptorOf, receiverOf) {
             return function(a, b) {
-              return s(this)[n](r(this), a, b);
+              return interceptorOf(this)[entry](receiverOf(this), a, b);
             };
-          }($name, getSelf, getReceiver);
+          }(stubName, getInterceptor, getReceiver);
         case 4:
-          return function(n, s, r) {
+          return function(entry, interceptorOf, receiverOf) {
             return function(a, b, c) {
-              return s(this)[n](r(this), a, b, c);
+              return interceptorOf(this)[entry](receiverOf(this), a, b, c);
             };
-          }($name, getSelf, getReceiver);
+          }(stubName, getInterceptor, getReceiver);
         case 5:
-          return function(n, s, r) {
+          return function(entry, interceptorOf, receiverOf) {
             return function(a, b, c, d) {
-              return s(this)[n](r(this), a, b, c, d);
+              return interceptorOf(this)[entry](receiverOf(this), a, b, c, d);
             };
-          }($name, getSelf, getReceiver);
+          }(stubName, getInterceptor, getReceiver);
         case 6:
-          return function(n, s, r) {
+          return function(entry, interceptorOf, receiverOf) {
             return function(a, b, c, d, e) {
-              return s(this)[n](r(this), a, b, c, d, e);
+              return interceptorOf(this)[entry](receiverOf(this), a, b, c, d, e);
             };
-          }($name, getSelf, getReceiver);
+          }(stubName, getInterceptor, getReceiver);
         default:
-          return function(f, s, r, a) {
+          return function(f, interceptorOf, receiverOf) {
             return function() {
-              a = [r(this)];
+              var a = [receiverOf(this)];
               Array.prototype.push.apply(a, arguments);
-              return f.apply(s(this), a);
+              return f.apply(interceptorOf(this), a);
             };
-          }($function, getSelf, getReceiver);
+          }($function, getInterceptor, getReceiver);
       }
     },
-    Closure_forwardInterceptedCallTo: function(receiver, $function) {
-      var receiverField, stubName, arity, lookedUpFunction, t1, t2, $arguments,
-        selfField = $.BoundClosure_selfFieldNameCache;
-      if (selfField == null)
-        selfField = $.BoundClosure_selfFieldNameCache = H.BoundClosure_computeFieldNamed("self");
-      receiverField = $.BoundClosure_receiverFieldNameCache;
-      if (receiverField == null)
-        receiverField = $.BoundClosure_receiverFieldNameCache = H.BoundClosure_computeFieldNamed("receiver");
-      stubName = $function.$stubName;
+    Closure_forwardInterceptedCallTo(stubName, $function, needsDirectAccess) {
+      var arity, t1;
+      if ($.BoundClosure__interceptorFieldNameCache == null)
+        $.BoundClosure__interceptorFieldNameCache = A.BoundClosure__computeFieldNamed("interceptor");
+      if ($.BoundClosure__receiverFieldNameCache == null)
+        $.BoundClosure__receiverFieldNameCache = A.BoundClosure__computeFieldNamed("receiver");
       arity = $function.length;
-      lookedUpFunction = receiver[stubName];
-      t1 = $function == null ? lookedUpFunction == null : $function === lookedUpFunction;
-      t2 = !t1 || arity >= 28;
-      if (t2)
-        return H.Closure_cspForwardInterceptedCall(arity, !t1, stubName, $function);
-      if (arity === 1) {
-        t1 = "return function(){return this." + selfField + "." + H.S(stubName) + "(this." + receiverField + ");";
-        t2 = $.Closure_functionCounter;
-        if (typeof t2 !== "number")
-          return t2.$add();
-        $.Closure_functionCounter = t2 + 1;
-        return new Function(t1 + t2 + "}")();
-      }
-      $arguments = "abcdefghijklmnopqrstuvwxyz".split("").splice(0, arity - 1).join(",");
-      t1 = "return function(" + $arguments + "){return this." + selfField + "." + H.S(stubName) + "(this." + receiverField + ", " + $arguments + ");";
-      t2 = $.Closure_functionCounter;
-      if (typeof t2 !== "number")
-        return t2.$add();
-      $.Closure_functionCounter = t2 + 1;
-      return new Function(t1 + t2 + "}")();
+      t1 = A.Closure_cspForwardInterceptedCall(arity, needsDirectAccess, stubName, $function);
+      return t1;
     },
-    closureFromTearOff: function(receiver, functions, applyTrampolineIndex, reflectionInfo, isStatic, isIntercepted, $name) {
-      return H.Closure_fromTearOff(receiver, functions, applyTrampolineIndex, reflectionInfo, !!isStatic, !!isIntercepted, $name);
+    closureFromTearOff(parameters) {
+      return A.Closure_fromTearOff(parameters);
     },
-    BoundClosure_evalRecipe: function(closure, recipe) {
-      return H._Universe_evalInEnvironment(init.typeUniverse, H.instanceType(closure._self), recipe);
+    BoundClosure_evalRecipe(closure, recipe) {
+      return A._Universe_evalInEnvironment(init.typeUniverse, A.instanceType(closure._receiver), recipe);
     },
-    BoundClosure_evalRecipeIntercepted: function(closure, recipe) {
-      return H._Universe_evalInEnvironment(init.typeUniverse, H.instanceType(closure._receiver), recipe);
-    },
-    BoundClosure_selfOf: function(closure) {
-      return closure._self;
-    },
-    BoundClosure_receiverOf: function(closure) {
+    BoundClosure_receiverOf(closure) {
       return closure._receiver;
     },
-    BoundClosure_computeFieldNamed: function(fieldName) {
+    BoundClosure_interceptorOf(closure) {
+      return closure._interceptor;
+    },
+    BoundClosure__computeFieldNamed(fieldName) {
       var t1, i, $name,
-        template = new H.BoundClosure("self", "target", "receiver", "name"),
+        template = new A.BoundClosure("receiver", "interceptor"),
         names = J.JSArray_markFixedList(Object.getOwnPropertyNames(template), type$.nullable_Object);
       for (t1 = names.length, i = 0; i < t1; ++i) {
         $name = names[i];
         if (template[$name] === fieldName)
           return $name;
       }
-      throw H.wrapException(P.ArgumentError$("Field name " + fieldName + " not found."));
+      throw A.wrapException(A.ArgumentError$("Field name " + fieldName + " not found.", null));
     },
-    boolConversionCheck: function(value) {
-      if (value == null)
-        H.assertThrow("boolean expression must not be null");
-      return value;
+    throwCyclicInit(staticName) {
+      throw A.wrapException(new A._CyclicInitializationError(staticName));
     },
-    assertThrow: function(message) {
-      throw H.wrapException(new H._AssertionError(message));
-    },
-    throwCyclicInit: function(staticName) {
-      throw H.wrapException(new P.CyclicInitializationError(staticName));
-    },
-    getIsolateAffinityTag: function($name) {
+    getIsolateAffinityTag($name) {
       return init.getIsolateTag($name);
     },
-    throwLateInitializationError: function($name) {
-      return H.throwExpression(new H.LateError($name));
-    },
-    defineProperty: function(obj, property, value) {
+    defineProperty(obj, property, value) {
       Object.defineProperty(obj, property, {value: value, enumerable: false, writable: true, configurable: true});
     },
-    lookupAndCacheInterceptor: function(obj) {
+    lookupAndCacheInterceptor(obj) {
       var interceptor, interceptorClass, altTag, mark, t1,
-        tag = H._asString($.getTagFunction.call$1(obj)),
+        tag = A._asString($.getTagFunction.call$1(obj)),
         record = $.dispatchRecordsForInstanceTags[tag];
       if (record != null) {
         Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
@@ -940,7 +1148,7 @@
         return interceptor;
       interceptorClass = init.interceptorsByTag[tag];
       if (interceptorClass == null) {
-        altTag = H._asStringQ($.alternateTagFunction.call$2(obj, tag));
+        altTag = A._asStringQ($.alternateTagFunction.call$2(obj, tag));
         if (altTag != null) {
           record = $.dispatchRecordsForInstanceTags[altTag];
           if (record != null) {
@@ -959,7 +1167,7 @@
       interceptor = interceptorClass.prototype;
       mark = tag[0];
       if (mark === "!") {
-        record = H.makeLeafDispatchRecord(interceptor);
+        record = A.makeLeafDispatchRecord(interceptor);
         $.dispatchRecordsForInstanceTags[tag] = record;
         Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
         return record.i;
@@ -969,47 +1177,47 @@
         return interceptor;
       }
       if (mark === "-") {
-        t1 = H.makeLeafDispatchRecord(interceptor);
+        t1 = A.makeLeafDispatchRecord(interceptor);
         Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});
         return t1.i;
       }
       if (mark === "+")
-        return H.patchInteriorProto(obj, interceptor);
+        return A.patchInteriorProto(obj, interceptor);
       if (mark === "*")
-        throw H.wrapException(P.UnimplementedError$(tag));
+        throw A.wrapException(A.UnimplementedError$(tag));
       if (init.leafTags[tag] === true) {
-        t1 = H.makeLeafDispatchRecord(interceptor);
+        t1 = A.makeLeafDispatchRecord(interceptor);
         Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});
         return t1.i;
       } else
-        return H.patchInteriorProto(obj, interceptor);
+        return A.patchInteriorProto(obj, interceptor);
     },
-    patchInteriorProto: function(obj, interceptor) {
+    patchInteriorProto(obj, interceptor) {
       var proto = Object.getPrototypeOf(obj);
       Object.defineProperty(proto, init.dispatchPropertyName, {value: J.makeDispatchRecord(interceptor, proto, null, null), enumerable: false, writable: true, configurable: true});
       return interceptor;
     },
-    makeLeafDispatchRecord: function(interceptor) {
+    makeLeafDispatchRecord(interceptor) {
       return J.makeDispatchRecord(interceptor, false, null, !!interceptor.$isJavaScriptIndexingBehavior);
     },
-    makeDefaultDispatchRecord: function(tag, interceptorClass, proto) {
+    makeDefaultDispatchRecord(tag, interceptorClass, proto) {
       var interceptor = interceptorClass.prototype;
       if (init.leafTags[tag] === true)
-        return H.makeLeafDispatchRecord(interceptor);
+        return A.makeLeafDispatchRecord(interceptor);
       else
         return J.makeDispatchRecord(interceptor, proto, null, null);
     },
-    initNativeDispatch: function() {
+    initNativeDispatch() {
       if (true === $.initNativeDispatchFlag)
         return;
       $.initNativeDispatchFlag = true;
-      H.initNativeDispatchContinue();
+      A.initNativeDispatchContinue();
     },
-    initNativeDispatchContinue: function() {
+    initNativeDispatchContinue() {
       var map, tags, fun, i, tag, proto, record, interceptorClass;
       $.dispatchRecordsForInstanceTags = Object.create(null);
       $.interceptorsForUncacheableTags = Object.create(null);
-      H.initHooks();
+      A.initHooks();
       map = init.interceptorsByTag;
       tags = Object.getOwnPropertyNames(map);
       if (typeof window != "undefined") {
@@ -1020,7 +1228,7 @@
           tag = tags[i];
           proto = $.prototypeForTagFunction.call$1(tag);
           if (proto != null) {
-            record = H.makeDefaultDispatchRecord(tag, map[tag], proto);
+            record = A.makeDefaultDispatchRecord(tag, map[tag], proto);
             if (record != null) {
               Object.defineProperty(proto, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
               fun.prototype = proto;
@@ -1040,15 +1248,15 @@
         }
       }
     },
-    initHooks: function() {
+    initHooks() {
       var transformers, i, transformer, getTag, getUnknownTag, prototypeForTag,
-        hooks = C.C_JS_CONST0();
-      hooks = H.applyHooksTransformer(C.C_JS_CONST1, H.applyHooksTransformer(C.C_JS_CONST2, H.applyHooksTransformer(C.C_JS_CONST3, H.applyHooksTransformer(C.C_JS_CONST3, H.applyHooksTransformer(C.C_JS_CONST4, H.applyHooksTransformer(C.C_JS_CONST5, H.applyHooksTransformer(C.C_JS_CONST6(C.C_JS_CONST), hooks)))))));
+        hooks = B.C_JS_CONST0();
+      hooks = A.applyHooksTransformer(B.C_JS_CONST1, A.applyHooksTransformer(B.C_JS_CONST2, A.applyHooksTransformer(B.C_JS_CONST3, A.applyHooksTransformer(B.C_JS_CONST3, A.applyHooksTransformer(B.C_JS_CONST4, A.applyHooksTransformer(B.C_JS_CONST5, A.applyHooksTransformer(B.C_JS_CONST6(B.C_JS_CONST), hooks)))))));
       if (typeof dartNativeDispatchHooksTransformer != "undefined") {
         transformers = dartNativeDispatchHooksTransformer;
         if (typeof transformers == "function")
           transformers = [transformers];
-        if (transformers.constructor == Array)
+        if (Array.isArray(transformers))
           for (i = 0; i < transformers.length; ++i) {
             transformer = transformers[i];
             if (typeof transformer == "function")
@@ -1058,14 +1266,25 @@
       getTag = hooks.getTag;
       getUnknownTag = hooks.getUnknownTag;
       prototypeForTag = hooks.prototypeForTag;
-      $.getTagFunction = new H.initHooks_closure(getTag);
-      $.alternateTagFunction = new H.initHooks_closure0(getUnknownTag);
-      $.prototypeForTagFunction = new H.initHooks_closure1(prototypeForTag);
+      $.getTagFunction = new A.initHooks_closure(getTag);
+      $.alternateTagFunction = new A.initHooks_closure0(getUnknownTag);
+      $.prototypeForTagFunction = new A.initHooks_closure1(prototypeForTag);
     },
-    applyHooksTransformer: function(transformer, hooks) {
+    applyHooksTransformer(transformer, hooks) {
       return transformer(hooks) || hooks;
     },
-    quoteStringForRegExp: function(string) {
+    createRecordTypePredicate(shape, fieldRtis) {
+      var $length = fieldRtis.length,
+        $function = init.rttc["" + $length + ";" + shape];
+      if ($function == null)
+        return null;
+      if ($length === 0)
+        return $function;
+      if ($length === $function.length)
+        return $function.apply(null, fieldRtis);
+      return $function(fieldRtis);
+    },
+    quoteStringForRegExp(string) {
       if (/[[\]{}()*+?.\\^$|]/.test(string))
         return string.replace(/[[\]{}()*+?.\\^$|]/g, "\\$&");
       return string;
@@ -1079,9 +1298,7 @@
       _._method = t4;
       _._receiver = t5;
     },
-    NullError: function NullError(t0, t1) {
-      this.__js_helper$_message = t0;
-      this._method = t1;
+    NullError: function NullError() {
     },
     JsNoSuchMethodError: function JsNoSuchMethodError(t0, t1, t2) {
       this.__js_helper$_message = t0;
@@ -1104,23 +1321,24 @@
     },
     Closure: function Closure() {
     },
+    Closure0Args: function Closure0Args() {
+    },
+    Closure2Args: function Closure2Args() {
+    },
     TearOffClosure: function TearOffClosure() {
     },
     StaticClosure: function StaticClosure() {
     },
-    BoundClosure: function BoundClosure(t0, t1, t2, t3) {
-      var _ = this;
-      _._self = t0;
-      _.__js_helper$_target = t1;
-      _._receiver = t2;
-      _._name = t3;
+    BoundClosure: function BoundClosure(t0, t1) {
+      this._receiver = t0;
+      this._interceptor = t1;
+    },
+    _CyclicInitializationError: function _CyclicInitializationError(t0) {
+      this.variableName = t0;
     },
     RuntimeError: function RuntimeError(t0) {
       this.message = t0;
     },
-    _AssertionError: function _AssertionError(t0) {
-      this.message = t0;
-    },
     JsLinkedHashMap: function JsLinkedHashMap(t0) {
       var _ = this;
       _.__js_helper$_length = 0;
@@ -1157,18 +1375,26 @@
       this.start = t0;
       this.pattern = t1;
     },
-    _checkValidIndex: function(index, list, $length) {
+    _checkValidIndex(index, list, $length) {
       if (index >>> 0 !== index || index >= $length)
-        throw H.wrapException(H.diagnoseIndexError(list, index));
+        throw A.wrapException(A.diagnoseIndexError(list, index));
+    },
+    NativeByteBuffer: function NativeByteBuffer() {
     },
     NativeTypedData: function NativeTypedData() {
     },
+    NativeByteData: function NativeByteData() {
+    },
     NativeTypedArray: function NativeTypedArray() {
     },
     NativeTypedArrayOfDouble: function NativeTypedArrayOfDouble() {
     },
     NativeTypedArrayOfInt: function NativeTypedArrayOfInt() {
     },
+    NativeFloat32List: function NativeFloat32List() {
+    },
+    NativeFloat64List: function NativeFloat64List() {
+    },
     NativeInt16List: function NativeInt16List() {
     },
     NativeInt32List: function NativeInt32List() {
@@ -1191,27 +1417,33 @@
     },
     _NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin: function _NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin() {
     },
-    Rti__getQuestionFromStar: function(universe, rti) {
+    Rti__getQuestionFromStar(universe, rti) {
       var question = rti._precomputed1;
-      return question == null ? rti._precomputed1 = H._Universe__lookupQuestionRti(universe, rti._primary, true) : question;
+      return question == null ? rti._precomputed1 = A._Universe__lookupQuestionRti(universe, rti._primary, true) : question;
     },
-    Rti__getFutureFromFutureOr: function(universe, rti) {
+    Rti__getFutureFromFutureOr(universe, rti) {
       var future = rti._precomputed1;
-      return future == null ? rti._precomputed1 = H._Universe__lookupInterfaceRti(universe, "Future", [rti._primary]) : future;
+      return future == null ? rti._precomputed1 = A._Universe__lookupInterfaceRti(universe, "Future", [rti._primary]) : future;
     },
-    Rti__isUnionOfFunctionType: function(rti) {
+    Rti__getIsSubtypeCache(rti) {
+      var probe = rti._isSubtypeCache;
+      if (probe != null)
+        return probe;
+      return rti._isSubtypeCache = new Map();
+    },
+    Rti__isUnionOfFunctionType(rti) {
       var kind = rti._kind;
       if (kind === 6 || kind === 7 || kind === 8)
-        return H.Rti__isUnionOfFunctionType(rti._primary);
-      return kind === 11 || kind === 12;
+        return A.Rti__isUnionOfFunctionType(rti._primary);
+      return kind === 12 || kind === 13;
     },
-    Rti__getCanonicalRecipe: function(rti) {
+    Rti__getCanonicalRecipe(rti) {
       return rti._canonicalRecipe;
     },
-    findType: function(recipe) {
-      return H._Universe_eval(init.typeUniverse, recipe, false);
+    findType(recipe) {
+      return A._Universe_eval(init.typeUniverse, recipe, false);
     },
-    _substitute: function(universe, rti, typeArguments, depth) {
+    _substitute(universe, rti, typeArguments, depth) {
       var baseType, substitutedBaseType, interfaceTypeArguments, substitutedInterfaceTypeArguments, base, substitutedBase, $arguments, substitutedArguments, returnType, substitutedReturnType, functionParameters, substitutedFunctionParameters, bounds, substitutedBounds, index, argument,
         kind = rti._kind;
       switch (kind) {
@@ -1223,54 +1455,54 @@
           return rti;
         case 6:
           baseType = rti._primary;
-          substitutedBaseType = H._substitute(universe, baseType, typeArguments, depth);
+          substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth);
           if (substitutedBaseType === baseType)
             return rti;
-          return H._Universe__lookupStarRti(universe, substitutedBaseType, true);
+          return A._Universe__lookupStarRti(universe, substitutedBaseType, true);
         case 7:
           baseType = rti._primary;
-          substitutedBaseType = H._substitute(universe, baseType, typeArguments, depth);
+          substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth);
           if (substitutedBaseType === baseType)
             return rti;
-          return H._Universe__lookupQuestionRti(universe, substitutedBaseType, true);
+          return A._Universe__lookupQuestionRti(universe, substitutedBaseType, true);
         case 8:
           baseType = rti._primary;
-          substitutedBaseType = H._substitute(universe, baseType, typeArguments, depth);
+          substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth);
           if (substitutedBaseType === baseType)
             return rti;
-          return H._Universe__lookupFutureOrRti(universe, substitutedBaseType, true);
+          return A._Universe__lookupFutureOrRti(universe, substitutedBaseType, true);
         case 9:
           interfaceTypeArguments = rti._rest;
-          substitutedInterfaceTypeArguments = H._substituteArray(universe, interfaceTypeArguments, typeArguments, depth);
+          substitutedInterfaceTypeArguments = A._substituteArray(universe, interfaceTypeArguments, typeArguments, depth);
           if (substitutedInterfaceTypeArguments === interfaceTypeArguments)
             return rti;
-          return H._Universe__lookupInterfaceRti(universe, rti._primary, substitutedInterfaceTypeArguments);
+          return A._Universe__lookupInterfaceRti(universe, rti._primary, substitutedInterfaceTypeArguments);
         case 10:
           base = rti._primary;
-          substitutedBase = H._substitute(universe, base, typeArguments, depth);
+          substitutedBase = A._substitute(universe, base, typeArguments, depth);
           $arguments = rti._rest;
-          substitutedArguments = H._substituteArray(universe, $arguments, typeArguments, depth);
+          substitutedArguments = A._substituteArray(universe, $arguments, typeArguments, depth);
           if (substitutedBase === base && substitutedArguments === $arguments)
             return rti;
-          return H._Universe__lookupBindingRti(universe, substitutedBase, substitutedArguments);
-        case 11:
+          return A._Universe__lookupBindingRti(universe, substitutedBase, substitutedArguments);
+        case 12:
           returnType = rti._primary;
-          substitutedReturnType = H._substitute(universe, returnType, typeArguments, depth);
+          substitutedReturnType = A._substitute(universe, returnType, typeArguments, depth);
           functionParameters = rti._rest;
-          substitutedFunctionParameters = H._substituteFunctionParameters(universe, functionParameters, typeArguments, depth);
+          substitutedFunctionParameters = A._substituteFunctionParameters(universe, functionParameters, typeArguments, depth);
           if (substitutedReturnType === returnType && substitutedFunctionParameters === functionParameters)
             return rti;
-          return H._Universe__lookupFunctionRti(universe, substitutedReturnType, substitutedFunctionParameters);
-        case 12:
+          return A._Universe__lookupFunctionRti(universe, substitutedReturnType, substitutedFunctionParameters);
+        case 13:
           bounds = rti._rest;
           depth += bounds.length;
-          substitutedBounds = H._substituteArray(universe, bounds, typeArguments, depth);
+          substitutedBounds = A._substituteArray(universe, bounds, typeArguments, depth);
           base = rti._primary;
-          substitutedBase = H._substitute(universe, base, typeArguments, depth);
+          substitutedBase = A._substitute(universe, base, typeArguments, depth);
           if (substitutedBounds === bounds && substitutedBase === base)
             return rti;
-          return H._Universe__lookupGenericFunctionRti(universe, substitutedBase, substitutedBounds, true);
-        case 13:
+          return A._Universe__lookupGenericFunctionRti(universe, substitutedBase, substitutedBounds, true);
+        case 14:
           index = rti._primary;
           if (index < depth)
             return rti;
@@ -1279,89 +1511,86 @@
             return rti;
           return argument;
         default:
-          throw H.wrapException(P.AssertionError$("Attempted to substitute unexpected RTI kind " + kind));
+          throw A.wrapException(A.AssertionError$("Attempted to substitute unexpected RTI kind " + kind));
       }
     },
-    _substituteArray: function(universe, rtiArray, typeArguments, depth) {
+    _substituteArray(universe, rtiArray, typeArguments, depth) {
       var changed, i, rti, substitutedRti,
         $length = rtiArray.length,
-        result = [];
+        result = A._Utils_newArrayOrEmpty($length);
       for (changed = false, i = 0; i < $length; ++i) {
         rti = rtiArray[i];
-        substitutedRti = H._substitute(universe, rti, typeArguments, depth);
+        substitutedRti = A._substitute(universe, rti, typeArguments, depth);
         if (substitutedRti !== rti)
           changed = true;
-        result.push(substitutedRti);
+        result[i] = substitutedRti;
       }
       return changed ? result : rtiArray;
     },
-    _substituteNamed: function(universe, namedArray, typeArguments, depth) {
+    _substituteNamed(universe, namedArray, typeArguments, depth) {
       var changed, i, t1, t2, rti, substitutedRti,
         $length = namedArray.length,
-        result = [];
+        result = A._Utils_newArrayOrEmpty($length);
       for (changed = false, i = 0; i < $length; i += 3) {
         t1 = namedArray[i];
         t2 = namedArray[i + 1];
         rti = namedArray[i + 2];
-        substitutedRti = H._substitute(universe, rti, typeArguments, depth);
+        substitutedRti = A._substitute(universe, rti, typeArguments, depth);
         if (substitutedRti !== rti)
           changed = true;
-        result.push(t1);
-        result.push(t2);
-        result.push(substitutedRti);
+        result.splice(i, 3, t1, t2, substitutedRti);
       }
       return changed ? result : namedArray;
     },
-    _substituteFunctionParameters: function(universe, functionParameters, typeArguments, depth) {
+    _substituteFunctionParameters(universe, functionParameters, typeArguments, depth) {
       var result,
         requiredPositional = functionParameters._requiredPositional,
-        substitutedRequiredPositional = H._substituteArray(universe, requiredPositional, typeArguments, depth),
+        substitutedRequiredPositional = A._substituteArray(universe, requiredPositional, typeArguments, depth),
         optionalPositional = functionParameters._optionalPositional,
-        substitutedOptionalPositional = H._substituteArray(universe, optionalPositional, typeArguments, depth),
+        substitutedOptionalPositional = A._substituteArray(universe, optionalPositional, typeArguments, depth),
         named = functionParameters._named,
-        substitutedNamed = H._substituteNamed(universe, named, typeArguments, depth);
+        substitutedNamed = A._substituteNamed(universe, named, typeArguments, depth);
       if (substitutedRequiredPositional === requiredPositional && substitutedOptionalPositional === optionalPositional && substitutedNamed === named)
         return functionParameters;
-      result = new H._FunctionParameters();
+      result = new A._FunctionParameters();
       result._requiredPositional = substitutedRequiredPositional;
       result._optionalPositional = substitutedOptionalPositional;
       result._named = substitutedNamed;
       return result;
     },
-    setRuntimeTypeInfo: function(target, rti) {
+    _setArrayType(target, rti) {
       target[init.arrayRti] = rti;
       return target;
     },
-    closureFunctionType: function(closure) {
-      var signature = closure.$signature;
+    closureFunctionType(closure) {
+      var t1,
+        signature = closure.$signature;
       if (signature != null) {
         if (typeof signature == "number")
-          return H.getTypeFromTypesTable(signature);
-        return closure.$signature();
+          return A.getTypeFromTypesTable(signature);
+        t1 = closure.$signature();
+        return t1;
       }
       return null;
     },
-    instanceOrFunctionType: function(object, testRti) {
+    instanceOrFunctionType(object, testRti) {
       var rti;
-      if (H.Rti__isUnionOfFunctionType(testRti))
-        if (object instanceof H.Closure) {
-          rti = H.closureFunctionType(object);
+      if (A.Rti__isUnionOfFunctionType(testRti))
+        if (object instanceof A.Closure) {
+          rti = A.closureFunctionType(object);
           if (rti != null)
             return rti;
         }
-      return H.instanceType(object);
+      return A.instanceType(object);
     },
-    instanceType: function(object) {
-      var rti;
-      if (object instanceof P.Object) {
-        rti = object.$ti;
-        return rti != null ? rti : H._instanceTypeFromConstructor(object);
-      }
+    instanceType(object) {
+      if (object instanceof A.Object)
+        return A._instanceType(object);
       if (Array.isArray(object))
-        return H._arrayInstanceType(object);
-      return H._instanceTypeFromConstructor(J.getInterceptor$(object));
+        return A._arrayInstanceType(object);
+      return A._instanceTypeFromConstructor(J.getInterceptor$(object));
     },
-    _arrayInstanceType: function(object) {
+    _arrayInstanceType(object) {
       var rti = object[init.arrayRti],
         defaultRti = type$.JSArray_dynamic;
       if (rti == null)
@@ -1370,40 +1599,69 @@
         return defaultRti;
       return rti;
     },
-    _instanceType: function(object) {
+    _instanceType(object) {
       var rti = object.$ti;
-      return rti != null ? rti : H._instanceTypeFromConstructor(object);
+      return rti != null ? rti : A._instanceTypeFromConstructor(object);
     },
-    _instanceTypeFromConstructor: function(instance) {
+    _instanceTypeFromConstructor(instance) {
       var $constructor = instance.constructor,
         probe = $constructor.$ccache;
       if (probe != null)
         return probe;
-      return H._instanceTypeFromConstructorMiss(instance, $constructor);
+      return A._instanceTypeFromConstructorMiss(instance, $constructor);
     },
-    _instanceTypeFromConstructorMiss: function(instance, $constructor) {
-      var effectiveConstructor = instance instanceof H.Closure ? instance.__proto__.__proto__.constructor : $constructor,
-        rti = H._Universe_findErasedType(init.typeUniverse, effectiveConstructor.name);
+    _instanceTypeFromConstructorMiss(instance, $constructor) {
+      var effectiveConstructor = instance instanceof A.Closure ? Object.getPrototypeOf(Object.getPrototypeOf(instance)).constructor : $constructor,
+        rti = A._Universe_findErasedType(init.typeUniverse, effectiveConstructor.name);
       $constructor.$ccache = rti;
       return rti;
     },
-    getTypeFromTypesTable: function(index) {
-      var table, type, rti;
-      H._asInt(index);
-      table = init.types;
-      type = table[index];
+    getTypeFromTypesTable(index) {
+      var rti,
+        table = init.types,
+        type = table[index];
       if (typeof type == "string") {
-        rti = H._Universe_eval(init.typeUniverse, type, false);
+        rti = A._Universe_eval(init.typeUniverse, type, false);
         table[index] = rti;
         return rti;
       }
       return type;
     },
-    _installSpecializedIsTest: function(object) {
-      var t1, unstarred, isFn, testRti = this;
+    getRuntimeTypeOfDartObject(object) {
+      return A.createRuntimeType(A._instanceType(object));
+    },
+    _structuralTypeOf(object) {
+      var functionRti = object instanceof A.Closure ? A.closureFunctionType(object) : null;
+      if (functionRti != null)
+        return functionRti;
+      if (type$.TrustedGetRuntimeType._is(object))
+        return J.get$runtimeType$(object)._rti;
+      if (Array.isArray(object))
+        return A._arrayInstanceType(object);
+      return A.instanceType(object);
+    },
+    createRuntimeType(rti) {
+      var t1 = rti._cachedRuntimeType;
+      return t1 == null ? rti._cachedRuntimeType = A._createRuntimeType(rti) : t1;
+    },
+    _createRuntimeType(rti) {
+      var starErasedRti, t1,
+        s = rti._canonicalRecipe,
+        starErasedRecipe = s.replace(/\*/g, "");
+      if (starErasedRecipe === s)
+        return rti._cachedRuntimeType = new A._Type(rti);
+      starErasedRti = A._Universe_eval(init.typeUniverse, starErasedRecipe, true);
+      t1 = starErasedRti._cachedRuntimeType;
+      return t1 == null ? starErasedRti._cachedRuntimeType = A._createRuntimeType(starErasedRti) : t1;
+    },
+    typeLiteral(recipe) {
+      return A.createRuntimeType(A._Universe_eval(init.typeUniverse, recipe, false));
+    },
+    _installSpecializedIsTest(object) {
+      var t1, unstarred, unstarredKind, isFn, $name, predicate, testRti = this;
       if (testRti === type$.Object)
-        return H._finishIsFn(testRti, object, H._isObject);
-      if (!H.isStrongTopType(testRti))
+        return A._finishIsFn(testRti, object, A._isObject);
+      if (!A.isStrongTopType(testRti))
         if (!(testRti === type$.legacy_Object))
           t1 = false;
         else
@@ -1411,37 +1669,48 @@
       else
         t1 = true;
       if (t1)
-        return H._finishIsFn(testRti, object, H._isTop);
+        return A._finishIsFn(testRti, object, A._isTop);
       t1 = testRti._kind;
+      if (t1 === 7)
+        return A._finishIsFn(testRti, object, A._generalNullableIsTestImplementation);
+      if (t1 === 1)
+        return A._finishIsFn(testRti, object, A._isNever);
       unstarred = t1 === 6 ? testRti._primary : testRti;
+      unstarredKind = unstarred._kind;
+      if (unstarredKind === 8)
+        return A._finishIsFn(testRti, object, A._isFutureOr);
       if (unstarred === type$.int)
-        isFn = H._isInt;
+        isFn = A._isInt;
       else if (unstarred === type$.double || unstarred === type$.num)
-        isFn = H._isNum;
+        isFn = A._isNum;
       else if (unstarred === type$.String)
-        isFn = H._isString;
+        isFn = A._isString;
       else
-        isFn = unstarred === type$.bool ? H._isBool : null;
+        isFn = unstarred === type$.bool ? A._isBool : null;
       if (isFn != null)
-        return H._finishIsFn(testRti, object, isFn);
-      if (unstarred._kind === 9) {
-        t1 = unstarred._primary;
-        if (unstarred._rest.every(H.isTopType)) {
-          testRti._specializedTestResource = "$is" + t1;
-          return H._finishIsFn(testRti, object, H._isTestViaProperty);
+        return A._finishIsFn(testRti, object, isFn);
+      if (unstarredKind === 9) {
+        $name = unstarred._primary;
+        if (unstarred._rest.every(A.isTopType)) {
+          testRti._specializedTestResource = "$is" + $name;
+          if ($name === "List")
+            return A._finishIsFn(testRti, object, A._isListTestViaProperty);
+          return A._finishIsFn(testRti, object, A._isTestViaProperty);
         }
-      } else if (t1 === 7)
-        return H._finishIsFn(testRti, object, H._generalNullableIsTestImplementation);
-      return H._finishIsFn(testRti, object, H._generalIsTestImplementation);
+      } else if (unstarredKind === 11) {
+        predicate = A.createRecordTypePredicate(unstarred._primary, unstarred._rest);
+        return A._finishIsFn(testRti, object, predicate == null ? A._isNever : predicate);
+      }
+      return A._finishIsFn(testRti, object, A._generalIsTestImplementation);
     },
-    _finishIsFn: function(testRti, object, isFn) {
+    _finishIsFn(testRti, object, isFn) {
       testRti._is = isFn;
       return testRti._is(object);
     },
-    _installSpecializedAsCheck: function(object) {
+    _installSpecializedAsCheck(object) {
       var t1, testRti = this,
-        asFn = H._generalAsCheckImplementation;
-      if (!H.isStrongTopType(testRti))
+        asFn = A._generalAsCheckImplementation;
+      if (!A.isStrongTopType(testRti))
         if (!(testRti === type$.legacy_Object))
           t1 = false;
         else
@@ -1449,25 +1718,28 @@
       else
         t1 = true;
       if (t1)
-        asFn = H._asTop;
+        asFn = A._asTop;
       else if (testRti === type$.Object)
-        asFn = H._asObject;
+        asFn = A._asObject;
       else {
-        t1 = H.isNullable(testRti);
+        t1 = A.isNullable(testRti);
         if (t1)
-          asFn = H._generalNullableAsCheckImplementation;
+          asFn = A._generalNullableAsCheckImplementation;
       }
       testRti._as = asFn;
       return testRti._as(object);
     },
-    _nullIs: function(testRti) {
+    _nullIs(testRti) {
       var t1,
         kind = testRti._kind;
-      if (!H.isStrongTopType(testRti))
+      if (!A.isStrongTopType(testRti))
         if (!(testRti === type$.legacy_Object))
           if (!(testRti === type$.legacy_Never))
             if (kind !== 7)
-              t1 = kind === 8 && H._nullIs(testRti._primary) || testRti === type$.Null || testRti === type$.JSNull;
+              if (!(kind === 6 && A._nullIs(testRti._primary)))
+                t1 = kind === 8 && A._nullIs(testRti._primary) || testRti === type$.Null || testRti === type$.JSNull;
+              else
+                t1 = true;
             else
               t1 = true;
           else
@@ -1478,210 +1750,248 @@
         t1 = true;
       return t1;
     },
-    _generalIsTestImplementation: function(object) {
+    _generalIsTestImplementation(object) {
       var testRti = this;
       if (object == null)
-        return H._nullIs(testRti);
-      return H._isSubtype(init.typeUniverse, H.instanceOrFunctionType(object, testRti), null, testRti, null);
+        return A._nullIs(testRti);
+      return A.isSubtype(init.typeUniverse, A.instanceOrFunctionType(object, testRti), testRti);
     },
-    _generalNullableIsTestImplementation: function(object) {
+    _generalNullableIsTestImplementation(object) {
       if (object == null)
         return true;
       return this._primary._is(object);
     },
-    _isTestViaProperty: function(object) {
+    _isTestViaProperty(object) {
       var tag, testRti = this;
       if (object == null)
-        return H._nullIs(testRti);
+        return A._nullIs(testRti);
       tag = testRti._specializedTestResource;
-      if (object instanceof P.Object)
+      if (object instanceof A.Object)
         return !!object[tag];
       return !!J.getInterceptor$(object)[tag];
     },
-    _generalAsCheckImplementation: function(object) {
+    _isListTestViaProperty(object) {
+      var tag, testRti = this;
+      if (object == null)
+        return A._nullIs(testRti);
+      if (typeof object != "object")
+        return false;
+      if (Array.isArray(object))
+        return true;
+      tag = testRti._specializedTestResource;
+      if (object instanceof A.Object)
+        return !!object[tag];
+      return !!J.getInterceptor$(object)[tag];
+    },
+    _generalAsCheckImplementation(object) {
       var t1, testRti = this;
       if (object == null) {
-        t1 = H.isNullable(testRti);
+        t1 = A.isNullable(testRti);
         if (t1)
           return object;
       } else if (testRti._is(object))
         return object;
-      H._failedAsCheck(object, testRti);
+      A._failedAsCheck(object, testRti);
     },
-    _generalNullableAsCheckImplementation: function(object) {
+    _generalNullableAsCheckImplementation(object) {
       var testRti = this;
       if (object == null)
         return object;
       else if (testRti._is(object))
         return object;
-      H._failedAsCheck(object, testRti);
+      A._failedAsCheck(object, testRti);
     },
-    _failedAsCheck: function(object, testRti) {
-      throw H.wrapException(H._TypeError$fromMessage(H._Error_compose(object, H.instanceOrFunctionType(object, testRti), H._rtiToString(testRti, null))));
+    _failedAsCheck(object, testRti) {
+      throw A.wrapException(A._TypeError$fromMessage(A._Error_compose(object, A._rtiToString(testRti, null))));
     },
-    _Error_compose: function(object, objectRti, checkedTypeDescription) {
-      var objectDescription = P.Error_safeToString(object),
-        objectTypeDescription = H._rtiToString(objectRti == null ? H.instanceType(object) : objectRti, null);
-      return objectDescription + ": type '" + objectTypeDescription + "' is not a subtype of type '" + checkedTypeDescription + "'";
+    _Error_compose(object, checkedTypeDescription) {
+      return A.Error_safeToString(object) + ": type '" + A._rtiToString(A._structuralTypeOf(object), null) + "' is not a subtype of type '" + checkedTypeDescription + "'";
     },
-    _TypeError$fromMessage: function(message) {
-      return new H._TypeError("TypeError: " + message);
+    _TypeError$fromMessage(message) {
+      return new A._TypeError("TypeError: " + message);
     },
-    _TypeError__TypeError$forType: function(object, type) {
-      return new H._TypeError("TypeError: " + H._Error_compose(object, null, type));
+    _TypeError__TypeError$forType(object, type) {
+      return new A._TypeError("TypeError: " + A._Error_compose(object, type));
     },
-    _isObject: function(object) {
+    _isFutureOr(object) {
+      var testRti = this,
+        unstarred = testRti._kind === 6 ? testRti._primary : testRti;
+      return unstarred._primary._is(object) || A.Rti__getFutureFromFutureOr(init.typeUniverse, unstarred)._is(object);
+    },
+    _isObject(object) {
       return object != null;
     },
-    _asObject: function(object) {
+    _asObject(object) {
       if (object != null)
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "Object"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "Object"));
     },
-    _isTop: function(object) {
+    _isTop(object) {
       return true;
     },
-    _asTop: function(object) {
+    _asTop(object) {
       return object;
     },
-    _isBool: function(object) {
+    _isNever(object) {
+      return false;
+    },
+    _isBool(object) {
       return true === object || false === object;
     },
-    _asBool: function(object) {
+    _asBool(object) {
       if (true === object)
         return true;
       if (false === object)
         return false;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "bool"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "bool"));
     },
-    _asBoolS: function(object) {
+    _asBoolS(object) {
       if (true === object)
         return true;
       if (false === object)
         return false;
       if (object == null)
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "bool"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "bool"));
     },
-    _asBoolQ: function(object) {
+    _asBoolQ(object) {
       if (true === object)
         return true;
       if (false === object)
         return false;
       if (object == null)
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "bool?"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "bool?"));
     },
-    _asDouble: function(object) {
+    _asDouble(object) {
       if (typeof object == "number")
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "double"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "double"));
     },
-    _asDoubleS: function(object) {
+    _asDoubleS(object) {
       if (typeof object == "number")
         return object;
       if (object == null)
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "double"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "double"));
     },
-    _asDoubleQ: function(object) {
+    _asDoubleQ(object) {
       if (typeof object == "number")
         return object;
       if (object == null)
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "double?"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "double?"));
     },
-    _isInt: function(object) {
+    _isInt(object) {
       return typeof object == "number" && Math.floor(object) === object;
     },
-    _asInt: function(object) {
+    _asInt(object) {
       if (typeof object == "number" && Math.floor(object) === object)
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "int"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "int"));
     },
-    _asIntS: function(object) {
+    _asIntS(object) {
       if (typeof object == "number" && Math.floor(object) === object)
         return object;
       if (object == null)
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "int"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "int"));
     },
-    _asIntQ: function(object) {
+    _asIntQ(object) {
       if (typeof object == "number" && Math.floor(object) === object)
         return object;
       if (object == null)
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "int?"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "int?"));
     },
-    _isNum: function(object) {
+    _isNum(object) {
       return typeof object == "number";
     },
-    _asNum: function(object) {
+    _asNum(object) {
       if (typeof object == "number")
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "num"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "num"));
     },
-    _asNumS: function(object) {
+    _asNumS(object) {
       if (typeof object == "number")
         return object;
       if (object == null)
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "num"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "num"));
     },
-    _asNumQ: function(object) {
+    _asNumQ(object) {
       if (typeof object == "number")
         return object;
       if (object == null)
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "num?"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "num?"));
     },
-    _isString: function(object) {
+    _isString(object) {
       return typeof object == "string";
     },
-    _asString: function(object) {
+    _asString(object) {
       if (typeof object == "string")
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "String"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "String"));
     },
-    _asStringS: function(object) {
+    _asStringS(object) {
       if (typeof object == "string")
         return object;
       if (object == null)
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "String"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "String"));
     },
-    _asStringQ: function(object) {
+    _asStringQ(object) {
       if (typeof object == "string")
         return object;
       if (object == null)
         return object;
-      throw H.wrapException(H._TypeError__TypeError$forType(object, "String?"));
+      throw A.wrapException(A._TypeError__TypeError$forType(object, "String?"));
     },
-    _rtiArrayToString: function(array, genericContext) {
+    _rtiArrayToString(array, genericContext) {
       var s, sep, i;
       for (s = "", sep = "", i = 0; i < array.length; ++i, sep = ", ")
-        s += sep + H._rtiToString(array[i], genericContext);
+        s += sep + A._rtiToString(array[i], genericContext);
       return s;
     },
-    _functionRtiToString: function(functionType, genericContext, bounds) {
+    _recordRtiToString(recordType, genericContext) {
+      var fieldCount, names, namesIndex, s, comma, i,
+        partialShape = recordType._primary,
+        fields = recordType._rest;
+      if ("" === partialShape)
+        return "(" + A._rtiArrayToString(fields, genericContext) + ")";
+      fieldCount = fields.length;
+      names = partialShape.split(",");
+      namesIndex = names.length - fieldCount;
+      for (s = "(", comma = "", i = 0; i < fieldCount; ++i, comma = ", ") {
+        s += comma;
+        if (namesIndex === 0)
+          s += "{";
+        s += A._rtiToString(fields[i], genericContext);
+        if (namesIndex >= 0)
+          s += " " + names[namesIndex];
+        ++namesIndex;
+      }
+      return s + "})";
+    },
+    _functionRtiToString(functionType, genericContext, bounds) {
       var boundsLength, outerContextLength, offset, i, t1, t2, typeParametersText, typeSep, t3, t4, boundRti, kind, parameters, requiredPositional, requiredPositionalLength, optionalPositional, optionalPositionalLength, named, namedLength, returnTypeText, argumentsText, sep, _s2_ = ", ";
       if (bounds != null) {
         boundsLength = bounds.length;
         if (genericContext == null) {
-          genericContext = H.setRuntimeTypeInfo([], type$.JSArray_String);
+          genericContext = A._setArrayType([], type$.JSArray_String);
           outerContextLength = null;
         } else
           outerContextLength = genericContext.length;
         offset = genericContext.length;
         for (i = boundsLength; i > 0; --i)
-          C.JSArray_methods.add$1(genericContext, "T" + (offset + i));
+          B.JSArray_methods.add$1(genericContext, "T" + (offset + i));
         for (t1 = type$.nullable_Object, t2 = type$.legacy_Object, typeParametersText = "<", typeSep = "", i = 0; i < boundsLength; ++i, typeSep = _s2_) {
-          typeParametersText += typeSep;
           t3 = genericContext.length;
           t4 = t3 - 1 - i;
-          if (t4 < 0)
-            return H.ioore(genericContext, t4);
-          typeParametersText = C.JSString_methods.$add(typeParametersText, genericContext[t4]);
+          if (!(t4 >= 0))
+            return A.ioore(genericContext, t4);
+          typeParametersText = B.JSString_methods.$add(typeParametersText + typeSep, genericContext[t4]);
           boundRti = bounds[i];
           kind = boundRti._kind;
           if (!(kind === 2 || kind === 3 || kind === 4 || kind === 5 || boundRti === t1))
@@ -1692,7 +2002,7 @@
           else
             t3 = true;
           if (!t3)
-            typeParametersText += " extends " + H._rtiToString(boundRti, genericContext);
+            typeParametersText += " extends " + A._rtiToString(boundRti, genericContext);
         }
         typeParametersText += ">";
       } else {
@@ -1707,13 +2017,13 @@
       optionalPositionalLength = optionalPositional.length;
       named = parameters._named;
       namedLength = named.length;
-      returnTypeText = H._rtiToString(t1, genericContext);
+      returnTypeText = A._rtiToString(t1, genericContext);
       for (argumentsText = "", sep = "", i = 0; i < requiredPositionalLength; ++i, sep = _s2_)
-        argumentsText += sep + H._rtiToString(requiredPositional[i], genericContext);
+        argumentsText += sep + A._rtiToString(requiredPositional[i], genericContext);
       if (optionalPositionalLength > 0) {
         argumentsText += sep + "[";
         for (sep = "", i = 0; i < optionalPositionalLength; ++i, sep = _s2_)
-          argumentsText += sep + H._rtiToString(optionalPositional[i], genericContext);
+          argumentsText += sep + A._rtiToString(optionalPositional[i], genericContext);
         argumentsText += "]";
       }
       if (namedLength > 0) {
@@ -1722,7 +2032,7 @@
           argumentsText += sep;
           if (named[i + 1])
             argumentsText += "required ";
-          argumentsText += H._rtiToString(named[i + 2], genericContext) + " " + named[i];
+          argumentsText += A._rtiToString(named[i + 2], genericContext) + " " + named[i];
         }
         argumentsText += "}";
       }
@@ -1732,7 +2042,7 @@
       }
       return typeParametersText + "(" + argumentsText + ") => " + returnTypeText;
     },
-    _rtiToString: function(rti, genericContext) {
+    _rtiToString(rti, genericContext) {
       var s, questionArgument, argumentKind, $name, $arguments, t1, t2,
         kind = rti._kind;
       if (kind === 5)
@@ -1746,83 +2056,85 @@
       if (kind === 4)
         return "any";
       if (kind === 6) {
-        s = H._rtiToString(rti._primary, genericContext);
+        s = A._rtiToString(rti._primary, genericContext);
         return s;
       }
       if (kind === 7) {
         questionArgument = rti._primary;
-        s = H._rtiToString(questionArgument, genericContext);
+        s = A._rtiToString(questionArgument, genericContext);
         argumentKind = questionArgument._kind;
-        return (argumentKind === 11 || argumentKind === 12 ? "(" + s + ")" : s) + "?";
+        return (argumentKind === 12 || argumentKind === 13 ? "(" + s + ")" : s) + "?";
       }
       if (kind === 8)
-        return "FutureOr<" + H._rtiToString(rti._primary, genericContext) + ">";
+        return "FutureOr<" + A._rtiToString(rti._primary, genericContext) + ">";
       if (kind === 9) {
-        $name = H._unminifyOrTag(rti._primary);
+        $name = A._unminifyOrTag(rti._primary);
         $arguments = rti._rest;
-        return $arguments.length !== 0 ? $name + ("<" + H._rtiArrayToString($arguments, genericContext) + ">") : $name;
+        return $arguments.length > 0 ? $name + ("<" + A._rtiArrayToString($arguments, genericContext) + ">") : $name;
       }
       if (kind === 11)
-        return H._functionRtiToString(rti, genericContext, null);
+        return A._recordRtiToString(rti, genericContext);
       if (kind === 12)
-        return H._functionRtiToString(rti._primary, genericContext, rti._rest);
-      if (kind === 13) {
+        return A._functionRtiToString(rti, genericContext, null);
+      if (kind === 13)
+        return A._functionRtiToString(rti._primary, genericContext, rti._rest);
+      if (kind === 14) {
         t1 = rti._primary;
         t2 = genericContext.length;
         t1 = t2 - 1 - t1;
-        if (t1 < 0 || t1 >= t2)
-          return H.ioore(genericContext, t1);
+        if (!(t1 >= 0 && t1 < t2))
+          return A.ioore(genericContext, t1);
         return genericContext[t1];
       }
       return "?";
     },
-    _unminifyOrTag: function(rawClassName) {
-      var preserved = H.unmangleGlobalNameIfPreservedAnyways(rawClassName);
+    _unminifyOrTag(rawClassName) {
+      var preserved = init.mangledGlobalNames[rawClassName];
       if (preserved != null)
         return preserved;
       return rawClassName;
     },
-    _Universe_findRule: function(universe, targetType) {
+    _Universe_findRule(universe, targetType) {
       var rule = universe.tR[targetType];
       for (; typeof rule == "string";)
         rule = universe.tR[rule];
       return rule;
     },
-    _Universe_findErasedType: function(universe, cls) {
+    _Universe_findErasedType(universe, cls) {
       var $length, erased, $arguments, i, $interface,
         t1 = universe.eT,
         probe = t1[cls];
       if (probe == null)
-        return H._Universe_eval(universe, cls, false);
+        return A._Universe_eval(universe, cls, false);
       else if (typeof probe == "number") {
         $length = probe;
-        erased = H._Universe__lookupTerminalRti(universe, 5, "#");
-        $arguments = [];
+        erased = A._Universe__lookupTerminalRti(universe, 5, "#");
+        $arguments = A._Utils_newArrayOrEmpty($length);
         for (i = 0; i < $length; ++i)
-          $arguments.push(erased);
-        $interface = H._Universe__lookupInterfaceRti(universe, cls, $arguments);
+          $arguments[i] = erased;
+        $interface = A._Universe__lookupInterfaceRti(universe, cls, $arguments);
         t1[cls] = $interface;
         return $interface;
       } else
         return probe;
     },
-    _Universe_addRules: function(universe, rules) {
-      return H._Utils_objectAssign(universe.tR, rules);
+    _Universe_addRules(universe, rules) {
+      return A._Utils_objectAssign(universe.tR, rules);
     },
-    _Universe_addErasedTypes: function(universe, types) {
-      return H._Utils_objectAssign(universe.eT, types);
+    _Universe_addErasedTypes(universe, types) {
+      return A._Utils_objectAssign(universe.eT, types);
     },
-    _Universe_eval: function(universe, recipe, normalize) {
+    _Universe_eval(universe, recipe, normalize) {
       var rti,
         t1 = universe.eC,
         probe = t1.get(recipe);
       if (probe != null)
         return probe;
-      rti = H._Parser_parse(H._Parser_create(universe, null, recipe, normalize));
+      rti = A._Parser_parse(A._Parser_create(universe, null, recipe, normalize));
       t1.set(recipe, rti);
       return rti;
     },
-    _Universe_evalInEnvironment: function(universe, environment, recipe) {
+    _Universe_evalInEnvironment(universe, environment, recipe) {
       var probe, rti,
         cache = environment._evalCache;
       if (cache == null)
@@ -1830,11 +2142,11 @@
       probe = cache.get(recipe);
       if (probe != null)
         return probe;
-      rti = H._Parser_parse(H._Parser_create(universe, environment, recipe, true));
+      rti = A._Parser_parse(A._Parser_create(universe, environment, recipe, true));
       cache.set(recipe, rti);
       return rti;
     },
-    _Universe_bind: function(universe, environment, argumentsRti) {
+    _Universe_bind(universe, environment, argumentsRti) {
       var argumentsRecipe, probe, rti,
         cache = environment._bindCache;
       if (cache == null)
@@ -1843,72 +2155,72 @@
       probe = cache.get(argumentsRecipe);
       if (probe != null)
         return probe;
-      rti = H._Universe__lookupBindingRti(universe, environment, argumentsRti._kind === 10 ? argumentsRti._rest : [argumentsRti]);
+      rti = A._Universe__lookupBindingRti(universe, environment, argumentsRti._kind === 10 ? argumentsRti._rest : [argumentsRti]);
       cache.set(argumentsRecipe, rti);
       return rti;
     },
-    _Universe__installTypeTests: function(universe, rti) {
-      rti._as = H._installSpecializedAsCheck;
-      rti._is = H._installSpecializedIsTest;
+    _Universe__installTypeTests(universe, rti) {
+      rti._as = A._installSpecializedAsCheck;
+      rti._is = A._installSpecializedIsTest;
       return rti;
     },
-    _Universe__lookupTerminalRti: function(universe, kind, key) {
+    _Universe__lookupTerminalRti(universe, kind, key) {
       var rti, t1,
         probe = universe.eC.get(key);
       if (probe != null)
         return probe;
-      rti = new H.Rti(null, null);
+      rti = new A.Rti(null, null);
       rti._kind = kind;
       rti._canonicalRecipe = key;
-      t1 = H._Universe__installTypeTests(universe, rti);
+      t1 = A._Universe__installTypeTests(universe, rti);
       universe.eC.set(key, t1);
       return t1;
     },
-    _Universe__lookupStarRti: function(universe, baseType, normalize) {
+    _Universe__lookupStarRti(universe, baseType, normalize) {
       var t1,
         key = baseType._canonicalRecipe + "*",
         probe = universe.eC.get(key);
       if (probe != null)
         return probe;
-      t1 = H._Universe__createStarRti(universe, baseType, key, normalize);
+      t1 = A._Universe__createStarRti(universe, baseType, key, normalize);
       universe.eC.set(key, t1);
       return t1;
     },
-    _Universe__createStarRti: function(universe, baseType, key, normalize) {
+    _Universe__createStarRti(universe, baseType, key, normalize) {
       var baseKind, t1, rti;
       if (normalize) {
         baseKind = baseType._kind;
-        if (!H.isStrongTopType(baseType))
+        if (!A.isStrongTopType(baseType))
           t1 = baseType === type$.Null || baseType === type$.JSNull || baseKind === 7 || baseKind === 6;
         else
           t1 = true;
         if (t1)
           return baseType;
       }
-      rti = new H.Rti(null, null);
+      rti = new A.Rti(null, null);
       rti._kind = 6;
       rti._primary = baseType;
       rti._canonicalRecipe = key;
-      return H._Universe__installTypeTests(universe, rti);
+      return A._Universe__installTypeTests(universe, rti);
     },
-    _Universe__lookupQuestionRti: function(universe, baseType, normalize) {
+    _Universe__lookupQuestionRti(universe, baseType, normalize) {
       var t1,
         key = baseType._canonicalRecipe + "?",
         probe = universe.eC.get(key);
       if (probe != null)
         return probe;
-      t1 = H._Universe__createQuestionRti(universe, baseType, key, normalize);
+      t1 = A._Universe__createQuestionRti(universe, baseType, key, normalize);
       universe.eC.set(key, t1);
       return t1;
     },
-    _Universe__createQuestionRti: function(universe, baseType, key, normalize) {
+    _Universe__createQuestionRti(universe, baseType, key, normalize) {
       var baseKind, t1, starArgument, rti;
       if (normalize) {
         baseKind = baseType._kind;
-        if (!H.isStrongTopType(baseType))
+        if (!A.isStrongTopType(baseType))
           if (!(baseType === type$.Null || baseType === type$.JSNull))
             if (baseKind !== 7)
-              t1 = baseKind === 8 && H.isNullable(baseType._primary);
+              t1 = baseKind === 8 && A.isNullable(baseType._primary);
             else
               t1 = true;
           else
@@ -1921,33 +2233,33 @@
           return type$.Null;
         else if (baseKind === 6) {
           starArgument = baseType._primary;
-          if (starArgument._kind === 8 && H.isNullable(starArgument._primary))
+          if (starArgument._kind === 8 && A.isNullable(starArgument._primary))
             return starArgument;
           else
-            return H.Rti__getQuestionFromStar(universe, baseType);
+            return A.Rti__getQuestionFromStar(universe, baseType);
         }
       }
-      rti = new H.Rti(null, null);
+      rti = new A.Rti(null, null);
       rti._kind = 7;
       rti._primary = baseType;
       rti._canonicalRecipe = key;
-      return H._Universe__installTypeTests(universe, rti);
+      return A._Universe__installTypeTests(universe, rti);
     },
-    _Universe__lookupFutureOrRti: function(universe, baseType, normalize) {
+    _Universe__lookupFutureOrRti(universe, baseType, normalize) {
       var t1,
         key = baseType._canonicalRecipe + "/",
         probe = universe.eC.get(key);
       if (probe != null)
         return probe;
-      t1 = H._Universe__createFutureOrRti(universe, baseType, key, normalize);
+      t1 = A._Universe__createFutureOrRti(universe, baseType, key, normalize);
       universe.eC.set(key, t1);
       return t1;
     },
-    _Universe__createFutureOrRti: function(universe, baseType, key, normalize) {
+    _Universe__createFutureOrRti(universe, baseType, key, normalize) {
       var t1, t2, rti;
       if (normalize) {
         t1 = baseType._kind;
-        if (!H.isStrongTopType(baseType))
+        if (!A.isStrongTopType(baseType))
           if (!(baseType === type$.legacy_Object))
             t2 = false;
           else
@@ -1957,68 +2269,67 @@
         if (t2 || baseType === type$.Object)
           return baseType;
         else if (t1 === 1)
-          return H._Universe__lookupInterfaceRti(universe, "Future", [baseType]);
+          return A._Universe__lookupInterfaceRti(universe, "Future", [baseType]);
         else if (baseType === type$.Null || baseType === type$.JSNull)
           return type$.nullable_Future_Null;
       }
-      rti = new H.Rti(null, null);
+      rti = new A.Rti(null, null);
       rti._kind = 8;
       rti._primary = baseType;
       rti._canonicalRecipe = key;
-      return H._Universe__installTypeTests(universe, rti);
+      return A._Universe__installTypeTests(universe, rti);
     },
-    _Universe__lookupGenericFunctionParameterRti: function(universe, index) {
+    _Universe__lookupGenericFunctionParameterRti(universe, index) {
       var rti, t1,
         key = "" + index + "^",
         probe = universe.eC.get(key);
       if (probe != null)
         return probe;
-      rti = new H.Rti(null, null);
-      rti._kind = 13;
+      rti = new A.Rti(null, null);
+      rti._kind = 14;
       rti._primary = index;
       rti._canonicalRecipe = key;
-      t1 = H._Universe__installTypeTests(universe, rti);
+      t1 = A._Universe__installTypeTests(universe, rti);
       universe.eC.set(key, t1);
       return t1;
     },
-    _Universe__canonicalRecipeJoin: function($arguments) {
+    _Universe__canonicalRecipeJoin($arguments) {
       var s, sep, i,
         $length = $arguments.length;
       for (s = "", sep = "", i = 0; i < $length; ++i, sep = ",")
         s += sep + $arguments[i]._canonicalRecipe;
       return s;
     },
-    _Universe__canonicalRecipeJoinNamed: function($arguments) {
-      var s, sep, i, t1, nameSep, s0,
+    _Universe__canonicalRecipeJoinNamed($arguments) {
+      var s, sep, i, t1, nameSep,
         $length = $arguments.length;
       for (s = "", sep = "", i = 0; i < $length; i += 3, sep = ",") {
         t1 = $arguments[i];
         nameSep = $arguments[i + 1] ? "!" : ":";
-        s0 = $arguments[i + 2]._canonicalRecipe;
-        s += sep + t1 + nameSep + s0;
+        s += sep + t1 + nameSep + $arguments[i + 2]._canonicalRecipe;
       }
       return s;
     },
-    _Universe__lookupInterfaceRti: function(universe, $name, $arguments) {
+    _Universe__lookupInterfaceRti(universe, $name, $arguments) {
       var probe, rti, t1,
         s = $name;
-      if ($arguments.length !== 0)
-        s += "<" + H._Universe__canonicalRecipeJoin($arguments) + ">";
+      if ($arguments.length > 0)
+        s += "<" + A._Universe__canonicalRecipeJoin($arguments) + ">";
       probe = universe.eC.get(s);
       if (probe != null)
         return probe;
-      rti = new H.Rti(null, null);
+      rti = new A.Rti(null, null);
       rti._kind = 9;
       rti._primary = $name;
       rti._rest = $arguments;
       if ($arguments.length > 0)
         rti._precomputed1 = $arguments[0];
       rti._canonicalRecipe = s;
-      t1 = H._Universe__installTypeTests(universe, rti);
+      t1 = A._Universe__installTypeTests(universe, rti);
       universe.eC.set(s, t1);
       return t1;
     },
-    _Universe__lookupBindingRti: function(universe, base, $arguments) {
+    _Universe__lookupBindingRti(universe, base, $arguments) {
       var newBase, newArguments, key, probe, rti, t1;
       if (base._kind === 10) {
         newBase = base._primary;
@@ -2027,21 +2338,36 @@
         newArguments = $arguments;
         newBase = base;
       }
-      key = newBase._canonicalRecipe + (";<" + H._Universe__canonicalRecipeJoin(newArguments) + ">");
+      key = newBase._canonicalRecipe + (";<" + A._Universe__canonicalRecipeJoin(newArguments) + ">");
       probe = universe.eC.get(key);
       if (probe != null)
         return probe;
-      rti = new H.Rti(null, null);
+      rti = new A.Rti(null, null);
       rti._kind = 10;
       rti._primary = newBase;
       rti._rest = newArguments;
       rti._canonicalRecipe = key;
-      t1 = H._Universe__installTypeTests(universe, rti);
+      t1 = A._Universe__installTypeTests(universe, rti);
       universe.eC.set(key, t1);
       return t1;
     },
-    _Universe__lookupFunctionRti: function(universe, returnType, parameters) {
-      var sep, t1, key, probe, rti,
+    _Universe__lookupRecordRti(universe, partialShapeTag, fields) {
+      var rti, t1,
+        key = "+" + (partialShapeTag + "(" + A._Universe__canonicalRecipeJoin(fields) + ")"),
+        probe = universe.eC.get(key);
+      if (probe != null)
+        return probe;
+      rti = new A.Rti(null, null);
+      rti._kind = 11;
+      rti._primary = partialShapeTag;
+      rti._rest = fields;
+      rti._canonicalRecipe = key;
+      t1 = A._Universe__installTypeTests(universe, rti);
+      universe.eC.set(key, t1);
+      return t1;
+    },
+    _Universe__lookupFunctionRti(universe, returnType, parameters) {
+      var sep, key, probe, rti, t1,
         s = returnType._canonicalRecipe,
         requiredPositional = parameters._requiredPositional,
         requiredPositionalLength = requiredPositional.length,
@@ -2049,45 +2375,43 @@
         optionalPositionalLength = optionalPositional.length,
         named = parameters._named,
         namedLength = named.length,
-        recipe = "(" + H._Universe__canonicalRecipeJoin(requiredPositional);
+        recipe = "(" + A._Universe__canonicalRecipeJoin(requiredPositional);
       if (optionalPositionalLength > 0) {
         sep = requiredPositionalLength > 0 ? "," : "";
-        t1 = H._Universe__canonicalRecipeJoin(optionalPositional);
-        recipe += sep + "[" + t1 + "]";
+        recipe += sep + "[" + A._Universe__canonicalRecipeJoin(optionalPositional) + "]";
       }
       if (namedLength > 0) {
         sep = requiredPositionalLength > 0 ? "," : "";
-        t1 = H._Universe__canonicalRecipeJoinNamed(named);
-        recipe += sep + "{" + t1 + "}";
+        recipe += sep + "{" + A._Universe__canonicalRecipeJoinNamed(named) + "}";
       }
       key = s + (recipe + ")");
       probe = universe.eC.get(key);
       if (probe != null)
         return probe;
-      rti = new H.Rti(null, null);
-      rti._kind = 11;
+      rti = new A.Rti(null, null);
+      rti._kind = 12;
       rti._primary = returnType;
       rti._rest = parameters;
       rti._canonicalRecipe = key;
-      t1 = H._Universe__installTypeTests(universe, rti);
+      t1 = A._Universe__installTypeTests(universe, rti);
       universe.eC.set(key, t1);
       return t1;
     },
-    _Universe__lookupGenericFunctionRti: function(universe, baseFunctionType, bounds, normalize) {
+    _Universe__lookupGenericFunctionRti(universe, baseFunctionType, bounds, normalize) {
       var t1,
-        key = baseFunctionType._canonicalRecipe + ("<" + H._Universe__canonicalRecipeJoin(bounds) + ">"),
+        key = baseFunctionType._canonicalRecipe + ("<" + A._Universe__canonicalRecipeJoin(bounds) + ">"),
         probe = universe.eC.get(key);
       if (probe != null)
         return probe;
-      t1 = H._Universe__createGenericFunctionRti(universe, baseFunctionType, bounds, key, normalize);
+      t1 = A._Universe__createGenericFunctionRti(universe, baseFunctionType, bounds, key, normalize);
       universe.eC.set(key, t1);
       return t1;
     },
-    _Universe__createGenericFunctionRti: function(universe, baseFunctionType, bounds, key, normalize) {
+    _Universe__createGenericFunctionRti(universe, baseFunctionType, bounds, key, normalize) {
       var $length, typeArguments, count, i, bound, substitutedBase, substitutedBounds, rti;
       if (normalize) {
         $length = bounds.length;
-        typeArguments = new Array($length);
+        typeArguments = A._Utils_newArrayOrEmpty($length);
         for (count = 0, i = 0; i < $length; ++i) {
           bound = bounds[i];
           if (bound._kind === 1) {
@@ -2096,33 +2420,33 @@
           }
         }
         if (count > 0) {
-          substitutedBase = H._substitute(universe, baseFunctionType, typeArguments, 0);
-          substitutedBounds = H._substituteArray(universe, bounds, typeArguments, 0);
-          return H._Universe__lookupGenericFunctionRti(universe, substitutedBase, substitutedBounds, bounds !== substitutedBounds);
+          substitutedBase = A._substitute(universe, baseFunctionType, typeArguments, 0);
+          substitutedBounds = A._substituteArray(universe, bounds, typeArguments, 0);
+          return A._Universe__lookupGenericFunctionRti(universe, substitutedBase, substitutedBounds, bounds !== substitutedBounds);
         }
       }
-      rti = new H.Rti(null, null);
-      rti._kind = 12;
+      rti = new A.Rti(null, null);
+      rti._kind = 13;
       rti._primary = baseFunctionType;
       rti._rest = bounds;
       rti._canonicalRecipe = key;
-      return H._Universe__installTypeTests(universe, rti);
+      return A._Universe__installTypeTests(universe, rti);
     },
-    _Parser_create: function(universe, environment, recipe, normalize) {
+    _Parser_create(universe, environment, recipe, normalize) {
       return {u: universe, e: environment, r: recipe, s: [], p: 0, n: normalize};
     },
-    _Parser_parse: function(parser) {
-      var t2, i, ch, t3, array, head, base, parameters, optionalPositional, named, item,
+    _Parser_parse(parser) {
+      var t2, i, ch, t3, array, end, item,
         source = parser.r,
         t1 = parser.s;
       for (t2 = source.length, i = 0; i < t2;) {
         ch = source.charCodeAt(i);
         if (ch >= 48 && ch <= 57)
-          i = H._Parser_handleDigit(i + 1, ch, source, t1);
-        else if ((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36)
-          i = H._Parser_handleIdentifier(parser, i, source, t1, false);
+          i = A._Parser_handleDigit(i + 1, ch, source, t1);
+        else if ((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36 || ch === 124)
+          i = A._Parser_handleIdentifier(parser, i, source, t1, false);
         else if (ch === 46)
-          i = H._Parser_handleIdentifier(parser, i, source, t1, true);
+          i = A._Parser_handleIdentifier(parser, i, source, t1, true);
         else {
           ++i;
           switch (ch) {
@@ -2135,90 +2459,49 @@
               t1.push(true);
               break;
             case 59:
-              t1.push(H._Parser_toType(parser.u, parser.e, t1.pop()));
+              t1.push(A._Parser_toType(parser.u, parser.e, t1.pop()));
               break;
             case 94:
-              t1.push(H._Universe__lookupGenericFunctionParameterRti(parser.u, t1.pop()));
+              t1.push(A._Universe__lookupGenericFunctionParameterRti(parser.u, t1.pop()));
               break;
             case 35:
-              t1.push(H._Universe__lookupTerminalRti(parser.u, 5, "#"));
+              t1.push(A._Universe__lookupTerminalRti(parser.u, 5, "#"));
               break;
             case 64:
-              t1.push(H._Universe__lookupTerminalRti(parser.u, 2, "@"));
+              t1.push(A._Universe__lookupTerminalRti(parser.u, 2, "@"));
               break;
             case 126:
-              t1.push(H._Universe__lookupTerminalRti(parser.u, 3, "~"));
+              t1.push(A._Universe__lookupTerminalRti(parser.u, 3, "~"));
               break;
             case 60:
               t1.push(parser.p);
               parser.p = t1.length;
               break;
             case 62:
-              t3 = parser.u;
-              array = t1.splice(parser.p);
-              H._Parser_toTypes(parser.u, parser.e, array);
-              parser.p = t1.pop();
-              head = t1.pop();
-              if (typeof head == "string")
-                t1.push(H._Universe__lookupInterfaceRti(t3, head, array));
-              else {
-                base = H._Parser_toType(t3, parser.e, head);
-                switch (base._kind) {
-                  case 11:
-                    t1.push(H._Universe__lookupGenericFunctionRti(t3, base, array, parser.n));
-                    break;
-                  default:
-                    t1.push(H._Universe__lookupBindingRti(t3, base, array));
-                    break;
-                }
-              }
+              A._Parser_handleTypeArguments(parser, t1);
               break;
             case 38:
-              H._Parser_handleExtendedOperations(parser, t1);
+              A._Parser_handleExtendedOperations(parser, t1);
               break;
             case 42:
               t3 = parser.u;
-              t1.push(H._Universe__lookupStarRti(t3, H._Parser_toType(t3, parser.e, t1.pop()), parser.n));
+              t1.push(A._Universe__lookupStarRti(t3, A._Parser_toType(t3, parser.e, t1.pop()), parser.n));
               break;
             case 63:
               t3 = parser.u;
-              t1.push(H._Universe__lookupQuestionRti(t3, H._Parser_toType(t3, parser.e, t1.pop()), parser.n));
+              t1.push(A._Universe__lookupQuestionRti(t3, A._Parser_toType(t3, parser.e, t1.pop()), parser.n));
               break;
             case 47:
               t3 = parser.u;
-              t1.push(H._Universe__lookupFutureOrRti(t3, H._Parser_toType(t3, parser.e, t1.pop()), parser.n));
+              t1.push(A._Universe__lookupFutureOrRti(t3, A._Parser_toType(t3, parser.e, t1.pop()), parser.n));
               break;
             case 40:
+              t1.push(-3);
               t1.push(parser.p);
               parser.p = t1.length;
               break;
             case 41:
-              t3 = parser.u;
-              parameters = new H._FunctionParameters();
-              optionalPositional = t3.sEA;
-              named = t3.sEA;
-              head = t1.pop();
-              if (typeof head == "number")
-                switch (head) {
-                  case -1:
-                    optionalPositional = t1.pop();
-                    break;
-                  case -2:
-                    named = t1.pop();
-                    break;
-                  default:
-                    t1.push(head);
-                    break;
-                }
-              else
-                t1.push(head);
-              array = t1.splice(parser.p);
-              H._Parser_toTypes(parser.u, parser.e, array);
-              parser.p = t1.pop();
-              parameters._requiredPositional = array;
-              parameters._optionalPositional = optionalPositional;
-              parameters._named = named;
-              t1.push(H._Universe__lookupFunctionRti(t3, H._Parser_toType(t3, parser.e, t1.pop()), parameters));
+              A._Parser_handleArguments(parser, t1);
               break;
             case 91:
               t1.push(parser.p);
@@ -2226,7 +2509,7 @@
               break;
             case 93:
               array = t1.splice(parser.p);
-              H._Parser_toTypes(parser.u, parser.e, array);
+              A._Parser_toTypes(parser.u, parser.e, array);
               parser.p = t1.pop();
               t1.push(array);
               t1.push(-1);
@@ -2237,20 +2520,28 @@
               break;
             case 125:
               array = t1.splice(parser.p);
-              H._Parser_toTypesNamed(parser.u, parser.e, array);
+              A._Parser_toTypesNamed(parser.u, parser.e, array);
               parser.p = t1.pop();
               t1.push(array);
               t1.push(-2);
               break;
+            case 43:
+              end = source.indexOf("(", i);
+              t1.push(source.substring(i, end));
+              t1.push(-4);
+              t1.push(parser.p);
+              parser.p = t1.length;
+              i = end + 1;
+              break;
             default:
               throw "Bad character " + ch;
           }
         }
       }
       item = t1.pop();
-      return H._Parser_toType(parser.u, parser.e, item);
+      return A._Parser_toType(parser.u, parser.e, item);
     },
-    _Parser_handleDigit: function(i, digit, source, stack) {
+    _Parser_handleDigit(i, digit, source, stack) {
       var t1, ch,
         value = digit - 48;
       for (t1 = source.length; i < t1; ++i) {
@@ -2262,7 +2553,7 @@
       stack.push(value);
       return i;
     },
-    _Parser_handleIdentifier: function(parser, start, source, stack, hasPeriod) {
+    _Parser_handleIdentifier(parser, start, source, stack, hasPeriod) {
       var t1, ch, t2, string, environment, recipe,
         i = start + 1;
       for (t1 = source.length; i < t1; ++i) {
@@ -2272,7 +2563,7 @@
             break;
           hasPeriod = true;
         } else {
-          if (!((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36))
+          if (!((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36 || ch === 124))
             t2 = ch >= 48 && ch <= 57;
           else
             t2 = true;
@@ -2286,47 +2577,121 @@
         environment = parser.e;
         if (environment._kind === 10)
           environment = environment._primary;
-        recipe = H._Universe_findRule(t1, environment._primary)[string];
+        recipe = A._Universe_findRule(t1, environment._primary)[string];
         if (recipe == null)
-          H.throwExpression('No "' + string + '" in "' + H.Rti__getCanonicalRecipe(environment) + '"');
-        stack.push(H._Universe_evalInEnvironment(t1, environment, recipe));
+          A.throwExpression('No "' + string + '" in "' + A.Rti__getCanonicalRecipe(environment) + '"');
+        stack.push(A._Universe_evalInEnvironment(t1, environment, recipe));
       } else
         stack.push(string);
       return i;
     },
-    _Parser_handleExtendedOperations: function(parser, stack) {
+    _Parser_handleTypeArguments(parser, stack) {
+      var base,
+        t1 = parser.u,
+        $arguments = A._Parser_collectArray(parser, stack),
+        head = stack.pop();
+      if (typeof head == "string")
+        stack.push(A._Universe__lookupInterfaceRti(t1, head, $arguments));
+      else {
+        base = A._Parser_toType(t1, parser.e, head);
+        switch (base._kind) {
+          case 12:
+            stack.push(A._Universe__lookupGenericFunctionRti(t1, base, $arguments, parser.n));
+            break;
+          default:
+            stack.push(A._Universe__lookupBindingRti(t1, base, $arguments));
+            break;
+        }
+      }
+    },
+    _Parser_handleArguments(parser, stack) {
+      var optionalPositional, named, requiredPositional, returnType, parameters, _null = null,
+        t1 = parser.u,
+        head = stack.pop();
+      if (typeof head == "number")
+        switch (head) {
+          case -1:
+            optionalPositional = stack.pop();
+            named = _null;
+            break;
+          case -2:
+            named = stack.pop();
+            optionalPositional = _null;
+            break;
+          default:
+            stack.push(head);
+            named = _null;
+            optionalPositional = named;
+            break;
+        }
+      else {
+        stack.push(head);
+        named = _null;
+        optionalPositional = named;
+      }
+      requiredPositional = A._Parser_collectArray(parser, stack);
+      head = stack.pop();
+      switch (head) {
+        case -3:
+          head = stack.pop();
+          if (optionalPositional == null)
+            optionalPositional = t1.sEA;
+          if (named == null)
+            named = t1.sEA;
+          returnType = A._Parser_toType(t1, parser.e, head);
+          parameters = new A._FunctionParameters();
+          parameters._requiredPositional = requiredPositional;
+          parameters._optionalPositional = optionalPositional;
+          parameters._named = named;
+          stack.push(A._Universe__lookupFunctionRti(t1, returnType, parameters));
+          return;
+        case -4:
+          stack.push(A._Universe__lookupRecordRti(t1, stack.pop(), requiredPositional));
+          return;
+        default:
+          throw A.wrapException(A.AssertionError$("Unexpected state under `()`: " + A.S(head)));
+      }
+    },
+    _Parser_handleExtendedOperations(parser, stack) {
       var $top = stack.pop();
       if (0 === $top) {
-        stack.push(H._Universe__lookupTerminalRti(parser.u, 1, "0&"));
+        stack.push(A._Universe__lookupTerminalRti(parser.u, 1, "0&"));
         return;
       }
       if (1 === $top) {
-        stack.push(H._Universe__lookupTerminalRti(parser.u, 4, "1&"));
+        stack.push(A._Universe__lookupTerminalRti(parser.u, 4, "1&"));
         return;
       }
-      throw H.wrapException(P.AssertionError$("Unexpected extended operation " + H.S($top)));
+      throw A.wrapException(A.AssertionError$("Unexpected extended operation " + A.S($top)));
     },
-    _Parser_toType: function(universe, environment, item) {
+    _Parser_collectArray(parser, stack) {
+      var array = stack.splice(parser.p);
+      A._Parser_toTypes(parser.u, parser.e, array);
+      parser.p = stack.pop();
+      return array;
+    },
+    _Parser_toType(universe, environment, item) {
       if (typeof item == "string")
-        return H._Universe__lookupInterfaceRti(universe, item, universe.sEA);
-      else if (typeof item == "number")
-        return H._Parser_indexToType(universe, environment, item);
-      else
+        return A._Universe__lookupInterfaceRti(universe, item, universe.sEA);
+      else if (typeof item == "number") {
+        environment.toString;
+        return A._Parser_indexToType(universe, environment, item);
+      } else
         return item;
     },
-    _Parser_toTypes: function(universe, environment, items) {
+    _Parser_toTypes(universe, environment, items) {
       var i,
         $length = items.length;
       for (i = 0; i < $length; ++i)
-        items[i] = H._Parser_toType(universe, environment, items[i]);
+        items[i] = A._Parser_toType(universe, environment, items[i]);
     },
-    _Parser_toTypesNamed: function(universe, environment, items) {
+    _Parser_toTypesNamed(universe, environment, items) {
       var i,
         $length = items.length;
       for (i = 2; i < $length; i += 3)
-        items[i] = H._Parser_toType(universe, environment, items[i]);
+        items[i] = A._Parser_toType(universe, environment, items[i]);
     },
-    _Parser_indexToType: function(universe, environment, index) {
+    _Parser_indexToType(universe, environment, index) {
       var typeArguments, len,
         kind = environment._kind;
       if (kind === 10) {
@@ -2342,17 +2707,27 @@
       } else if (index === 0)
         return environment;
       if (kind !== 9)
-        throw H.wrapException(P.AssertionError$("Indexed base must be an interface type"));
+        throw A.wrapException(A.AssertionError$("Indexed base must be an interface type"));
       typeArguments = environment._rest;
       if (index <= typeArguments.length)
         return typeArguments[index - 1];
-      throw H.wrapException(P.AssertionError$("Bad index " + index + " for " + environment.toString$0(0)));
+      throw A.wrapException(A.AssertionError$("Bad index " + index + " for " + environment.toString$0(0)));
     },
-    _isSubtype: function(universe, s, sEnv, t, tEnv) {
-      var t1, sKind, leftTypeVariable, tKind, sBounds, tBounds, sLength, i, sBound, tBound;
+    isSubtype(universe, s, t) {
+      var result,
+        sCache = A.Rti__getIsSubtypeCache(s),
+        probe = sCache.get(t);
+      if (probe != null)
+        return probe;
+      result = A._isSubtype(universe, s, null, t, null);
+      sCache.set(t, result);
+      return result;
+    },
+    _isSubtype(universe, s, sEnv, t, tEnv) {
+      var t1, sKind, leftTypeVariable, tKind, t2, sBounds, tBounds, sLength, i, sBound, tBound;
       if (s === t)
         return true;
-      if (!H.isStrongTopType(t))
+      if (!A.isStrongTopType(t))
         if (!(t === type$.legacy_Object))
           t1 = false;
         else
@@ -2364,7 +2739,7 @@
       sKind = s._kind;
       if (sKind === 4)
         return true;
-      if (H.isStrongTopType(s))
+      if (A.isStrongTopType(s))
         return false;
       if (s._kind !== 1)
         t1 = false;
@@ -2372,57 +2747,60 @@
         t1 = true;
       if (t1)
         return true;
-      leftTypeVariable = sKind === 13;
+      leftTypeVariable = sKind === 14;
       if (leftTypeVariable)
-        if (H._isSubtype(universe, sEnv[s._primary], sEnv, t, tEnv))
+        if (A._isSubtype(universe, sEnv[s._primary], sEnv, t, tEnv))
           return true;
       tKind = t._kind;
       t1 = s === type$.Null || s === type$.JSNull;
       if (t1) {
         if (tKind === 8)
-          return H._isSubtype(universe, s, sEnv, t._primary, tEnv);
+          return A._isSubtype(universe, s, sEnv, t._primary, tEnv);
         return t === type$.Null || t === type$.JSNull || tKind === 7 || tKind === 6;
       }
       if (t === type$.Object) {
         if (sKind === 8)
-          return H._isSubtype(universe, s._primary, sEnv, t, tEnv);
+          return A._isSubtype(universe, s._primary, sEnv, t, tEnv);
         if (sKind === 6)
-          return H._isSubtype(universe, s._primary, sEnv, t, tEnv);
+          return A._isSubtype(universe, s._primary, sEnv, t, tEnv);
         return sKind !== 7;
       }
       if (sKind === 6)
-        return H._isSubtype(universe, s._primary, sEnv, t, tEnv);
+        return A._isSubtype(universe, s._primary, sEnv, t, tEnv);
       if (tKind === 6) {
-        t1 = H.Rti__getQuestionFromStar(universe, t);
-        return H._isSubtype(universe, s, sEnv, t1, tEnv);
+        t1 = A.Rti__getQuestionFromStar(universe, t);
+        return A._isSubtype(universe, s, sEnv, t1, tEnv);
       }
       if (sKind === 8) {
-        if (!H._isSubtype(universe, s._primary, sEnv, t, tEnv))
+        if (!A._isSubtype(universe, s._primary, sEnv, t, tEnv))
           return false;
-        return H._isSubtype(universe, H.Rti__getFutureFromFutureOr(universe, s), sEnv, t, tEnv);
+        return A._isSubtype(universe, A.Rti__getFutureFromFutureOr(universe, s), sEnv, t, tEnv);
       }
       if (sKind === 7) {
-        t1 = H._isSubtype(universe, type$.Null, sEnv, t, tEnv);
-        return t1 && H._isSubtype(universe, s._primary, sEnv, t, tEnv);
+        t1 = A._isSubtype(universe, type$.Null, sEnv, t, tEnv);
+        return t1 && A._isSubtype(universe, s._primary, sEnv, t, tEnv);
       }
       if (tKind === 8) {
-        if (H._isSubtype(universe, s, sEnv, t._primary, tEnv))
+        if (A._isSubtype(universe, s, sEnv, t._primary, tEnv))
           return true;
-        return H._isSubtype(universe, s, sEnv, H.Rti__getFutureFromFutureOr(universe, t), tEnv);
+        return A._isSubtype(universe, s, sEnv, A.Rti__getFutureFromFutureOr(universe, t), tEnv);
       }
       if (tKind === 7) {
-        t1 = H._isSubtype(universe, s, sEnv, type$.Null, tEnv);
-        return t1 || H._isSubtype(universe, s, sEnv, t._primary, tEnv);
+        t1 = A._isSubtype(universe, s, sEnv, type$.Null, tEnv);
+        return t1 || A._isSubtype(universe, s, sEnv, t._primary, tEnv);
       }
       if (leftTypeVariable)
         return false;
-      t1 = sKind !== 11;
-      if ((!t1 || sKind === 12) && t === type$.Function)
+      t1 = sKind !== 12;
+      if ((!t1 || sKind === 13) && t === type$.Function)
         return true;
-      if (tKind === 12) {
+      t2 = sKind === 11;
+      if (t2 && t === type$.Record)
+        return true;
+      if (tKind === 13) {
         if (s === type$.JavaScriptFunction)
           return true;
-        if (sKind !== 12)
+        if (sKind !== 13)
           return false;
         sBounds = s._rest;
         tBounds = t._rest;
@@ -2434,28 +2812,30 @@
         for (i = 0; i < sLength; ++i) {
           sBound = sBounds[i];
           tBound = tBounds[i];
-          if (!H._isSubtype(universe, sBound, sEnv, tBound, tEnv) || !H._isSubtype(universe, tBound, tEnv, sBound, sEnv))
+          if (!A._isSubtype(universe, sBound, sEnv, tBound, tEnv) || !A._isSubtype(universe, tBound, tEnv, sBound, sEnv))
             return false;
         }
-        return H._isFunctionSubtype(universe, s._primary, sEnv, t._primary, tEnv);
+        return A._isFunctionSubtype(universe, s._primary, sEnv, t._primary, tEnv);
       }
-      if (tKind === 11) {
+      if (tKind === 12) {
         if (s === type$.JavaScriptFunction)
           return true;
         if (t1)
           return false;
-        return H._isFunctionSubtype(universe, s, sEnv, t, tEnv);
+        return A._isFunctionSubtype(universe, s, sEnv, t, tEnv);
       }
       if (sKind === 9) {
         if (tKind !== 9)
           return false;
-        return H._isInterfaceSubtype(universe, s, sEnv, t, tEnv);
+        return A._isInterfaceSubtype(universe, s, sEnv, t, tEnv);
       }
+      if (t2 && tKind === 11)
+        return A._isRecordSubtype(universe, s, sEnv, t, tEnv);
       return false;
     },
-    _isFunctionSubtype: function(universe, s, sEnv, t, tEnv) {
+    _isFunctionSubtype(universe, s, sEnv, t, tEnv) {
       var sParameters, tParameters, sRequiredPositional, tRequiredPositional, sRequiredPositionalLength, tRequiredPositionalLength, requiredPositionalDelta, sOptionalPositional, tOptionalPositional, sOptionalPositionalLength, tOptionalPositionalLength, i, t1, sNamed, tNamed, sNamedLength, tNamedLength, sIndex, tIndex, tName, sName, sIsRequired;
-      if (!H._isSubtype(universe, s._primary, sEnv, t._primary, tEnv))
+      if (!A._isSubtype(universe, s._primary, sEnv, t._primary, tEnv))
         return false;
       sParameters = s._rest;
       tParameters = t._rest;
@@ -2474,17 +2854,17 @@
         return false;
       for (i = 0; i < sRequiredPositionalLength; ++i) {
         t1 = sRequiredPositional[i];
-        if (!H._isSubtype(universe, tRequiredPositional[i], tEnv, t1, sEnv))
+        if (!A._isSubtype(universe, tRequiredPositional[i], tEnv, t1, sEnv))
           return false;
       }
       for (i = 0; i < requiredPositionalDelta; ++i) {
         t1 = sOptionalPositional[i];
-        if (!H._isSubtype(universe, tRequiredPositional[sRequiredPositionalLength + i], tEnv, t1, sEnv))
+        if (!A._isSubtype(universe, tRequiredPositional[sRequiredPositionalLength + i], tEnv, t1, sEnv))
           return false;
       }
       for (i = 0; i < tOptionalPositionalLength; ++i) {
         t1 = sOptionalPositional[requiredPositionalDelta + i];
-        if (!H._isSubtype(universe, tOptionalPositional[i], tEnv, t1, sEnv))
+        if (!A._isSubtype(universe, tOptionalPositional[i], tEnv, t1, sEnv))
           return false;
       }
       sNamed = sParameters._named;
@@ -2510,7 +2890,7 @@
           if (sIsRequired && !t1)
             return false;
           t1 = sNamed[sIndex - 1];
-          if (!H._isSubtype(universe, tNamed[tIndex + 2], tEnv, t1, sEnv))
+          if (!A._isSubtype(universe, tNamed[tIndex + 2], tEnv, t1, sEnv))
             return false;
           break;
         }
@@ -2522,45 +2902,64 @@
       }
       return true;
     },
-    _isInterfaceSubtype: function(universe, s, sEnv, t, tEnv) {
-      var sArgs, tArgs, $length, i, t1, t2, rule, supertypeArgs,
+    _isInterfaceSubtype(universe, s, sEnv, t, tEnv) {
+      var rule, recipes, $length, supertypeArgs, i, t1, t2,
         sName = s._primary,
         tName = t._primary;
-      if (sName === tName) {
-        sArgs = s._rest;
-        tArgs = t._rest;
-        $length = sArgs.length;
-        for (i = 0; i < $length; ++i) {
-          t1 = sArgs[i];
-          t2 = tArgs[i];
-          if (!H._isSubtype(universe, t1, sEnv, t2, tEnv))
-            return false;
+      for (; sName !== tName;) {
+        rule = universe.tR[sName];
+        if (rule == null)
+          return false;
+        if (typeof rule == "string") {
+          sName = rule;
+          continue;
         }
-        return true;
+        recipes = rule[tName];
+        if (recipes == null)
+          return false;
+        $length = recipes.length;
+        supertypeArgs = $length > 0 ? new Array($length) : init.typeUniverse.sEA;
+        for (i = 0; i < $length; ++i)
+          supertypeArgs[i] = A._Universe_evalInEnvironment(universe, s, recipes[i]);
+        return A._areArgumentsSubtypes(universe, supertypeArgs, null, sEnv, t._rest, tEnv);
       }
-      if (t === type$.Object)
-        return true;
-      rule = H._Universe_findRule(universe, sName);
-      if (rule == null)
+      t1 = s._rest;
+      t2 = t._rest;
+      return A._areArgumentsSubtypes(universe, t1, null, sEnv, t2, tEnv);
+    },
+    _areArgumentsSubtypes(universe, sArgs, sVariances, sEnv, tArgs, tEnv) {
+      var i, t1, t2,
+        $length = sArgs.length;
+      for (i = 0; i < $length; ++i) {
+        t1 = sArgs[i];
+        t2 = tArgs[i];
+        if (!A._isSubtype(universe, t1, sEnv, t2, tEnv))
+          return false;
+      }
+      return true;
+    },
+    _isRecordSubtype(universe, s, sEnv, t, tEnv) {
+      var i,
+        sFields = s._rest,
+        tFields = t._rest,
+        sCount = sFields.length;
+      if (sCount !== tFields.length)
         return false;
-      supertypeArgs = rule[tName];
-      if (supertypeArgs == null)
+      if (s._primary !== t._primary)
         return false;
-      $length = supertypeArgs.length;
-      tArgs = t._rest;
-      for (i = 0; i < $length; ++i)
-        if (!H._isSubtype(universe, H._Universe_evalInEnvironment(universe, s, supertypeArgs[i]), sEnv, tArgs[i], tEnv))
+      for (i = 0; i < sCount; ++i)
+        if (!A._isSubtype(universe, sFields[i], sEnv, tFields[i], tEnv))
           return false;
       return true;
     },
-    isNullable: function(t) {
+    isNullable(t) {
       var t1,
         kind = t._kind;
       if (!(t === type$.Null || t === type$.JSNull))
-        if (!H.isStrongTopType(t))
+        if (!A.isStrongTopType(t))
           if (kind !== 7)
-            if (!(kind === 6 && H.isNullable(t._primary)))
-              t1 = kind === 8 && H.isNullable(t._primary);
+            if (!(kind === 6 && A.isNullable(t._primary)))
+              t1 = kind === 8 && A.isNullable(t._primary);
             else
               t1 = true;
           else
@@ -2571,9 +2970,9 @@
         t1 = true;
       return t1;
     },
-    isTopType: function(t) {
+    isTopType(t) {
       var t1;
-      if (!H.isStrongTopType(t))
+      if (!A.isStrongTopType(t))
         if (!(t === type$.legacy_Object))
           t1 = false;
         else
@@ -2582,11 +2981,11 @@
         t1 = true;
       return t1;
     },
-    isStrongTopType: function(t) {
+    isStrongTopType(t) {
       var kind = t._kind;
       return kind === 2 || kind === 3 || kind === 4 || kind === 5 || t === type$.nullable_Object;
     },
-    _Utils_objectAssign: function(o, other) {
+    _Utils_objectAssign(o, other) {
       var i, key,
         keys = Object.keys(other),
         $length = keys.length;
@@ -2595,327 +2994,95 @@
         o[key] = other[key];
       }
     },
+    _Utils_newArrayOrEmpty($length) {
+      return $length > 0 ? new Array($length) : init.typeUniverse.sEA;
+    },
     Rti: function Rti(t0, t1) {
       var _ = this;
       _._as = t0;
       _._is = t1;
-      _._cachedRuntimeType = _._specializedTestResource = _._precomputed1 = null;
+      _._cachedRuntimeType = _._specializedTestResource = _._unsoundIsSubtypeCache = _._isSubtypeCache = _._precomputed1 = null;
       _._kind = 0;
       _._canonicalRecipe = _._bindCache = _._evalCache = _._rest = _._primary = null;
     },
     _FunctionParameters: function _FunctionParameters() {
       this._named = this._optionalPositional = this._requiredPositional = null;
     },
+    _Type: function _Type(t0) {
+      this._rti = t0;
+    },
     _Error: function _Error() {
     },
     _TypeError: function _TypeError(t0) {
       this.__rti$_message = t0;
     },
-    unmangleGlobalNameIfPreservedAnyways: function($name) {
-      return init.mangledGlobalNames[$name];
-    }
-  },
-  J = {
-    makeDispatchRecord: function(interceptor, proto, extension, indexability) {
-      return {i: interceptor, p: proto, e: extension, x: indexability};
-    },
-    getNativeInterceptor: function(object) {
-      var proto, objectProto, $constructor, interceptor, t1,
-        record = object[init.dispatchPropertyName];
-      if (record == null)
-        if ($.initNativeDispatchFlag == null) {
-          H.initNativeDispatch();
-          record = object[init.dispatchPropertyName];
-        }
-      if (record != null) {
-        proto = record.p;
-        if (false === proto)
-          return record.i;
-        if (true === proto)
-          return object;
-        objectProto = Object.getPrototypeOf(object);
-        if (proto === objectProto)
-          return record.i;
-        if (record.e === objectProto)
-          throw H.wrapException(P.UnimplementedError$("Return interceptor for " + H.S(proto(object, record))));
-      }
-      $constructor = object.constructor;
-      if ($constructor == null)
-        interceptor = null;
-      else {
-        t1 = $._JS_INTEROP_INTERCEPTOR_TAG;
-        if (t1 == null)
-          t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js");
-        interceptor = $constructor[t1];
-      }
-      if (interceptor != null)
-        return interceptor;
-      interceptor = H.lookupAndCacheInterceptor(object);
-      if (interceptor != null)
-        return interceptor;
-      if (typeof object == "function")
-        return C.JavaScriptFunction_methods;
-      proto = Object.getPrototypeOf(object);
-      if (proto == null)
-        return C.PlainJavaScriptObject_methods;
-      if (proto === Object.prototype)
-        return C.PlainJavaScriptObject_methods;
-      if (typeof $constructor == "function") {
-        t1 = $._JS_INTEROP_INTERCEPTOR_TAG;
-        if (t1 == null)
-          t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js");
-        Object.defineProperty($constructor, t1, {value: C.UnknownJavaScriptObject_methods, enumerable: false, writable: true, configurable: true});
-        return C.UnknownJavaScriptObject_methods;
-      }
-      return C.UnknownJavaScriptObject_methods;
-    },
-    JSArray_JSArray$fixed: function($length, $E) {
-      if ($length < 0 || $length > 4294967295)
-        throw H.wrapException(P.RangeError$range($length, 0, 4294967295, "length", null));
-      return J.JSArray_JSArray$markFixed(new Array($length), $E);
-    },
-    JSArray_JSArray$growable: function($length, $E) {
-      if ($length < 0)
-        throw H.wrapException(P.ArgumentError$("Length must be a non-negative integer: " + $length));
-      return H.setRuntimeTypeInfo(new Array($length), $E._eval$1("JSArray<0>"));
-    },
-    JSArray_JSArray$markFixed: function(allocation, $E) {
-      return J.JSArray_markFixedList(H.setRuntimeTypeInfo(allocation, $E._eval$1("JSArray<0>")), $E);
-    },
-    JSArray_markFixedList: function(list, $T) {
-      list.fixed$length = Array;
-      return list;
-    },
-    getInterceptor$: function(receiver) {
-      if (typeof receiver == "number") {
-        if (Math.floor(receiver) == receiver)
-          return J.JSInt.prototype;
-        return J.JSNumNotInt.prototype;
-      }
-      if (typeof receiver == "string")
-        return J.JSString.prototype;
-      if (receiver == null)
-        return J.JSNull.prototype;
-      if (typeof receiver == "boolean")
-        return J.JSBool.prototype;
-      if (receiver.constructor == Array)
-        return J.JSArray.prototype;
-      if (typeof receiver != "object") {
-        if (typeof receiver == "function")
-          return J.JavaScriptFunction.prototype;
-        return receiver;
-      }
-      if (receiver instanceof P.Object)
-        return receiver;
-      return J.getNativeInterceptor(receiver);
-    },
-    getInterceptor$asx: function(receiver) {
-      if (typeof receiver == "string")
-        return J.JSString.prototype;
-      if (receiver == null)
-        return receiver;
-      if (receiver.constructor == Array)
-        return J.JSArray.prototype;
-      if (typeof receiver != "object") {
-        if (typeof receiver == "function")
-          return J.JavaScriptFunction.prototype;
-        return receiver;
-      }
-      if (receiver instanceof P.Object)
-        return receiver;
-      return J.getNativeInterceptor(receiver);
-    },
-    getInterceptor$ax: function(receiver) {
-      if (receiver == null)
-        return receiver;
-      if (receiver.constructor == Array)
-        return J.JSArray.prototype;
-      if (typeof receiver != "object") {
-        if (typeof receiver == "function")
-          return J.JavaScriptFunction.prototype;
-        return receiver;
-      }
-      if (receiver instanceof P.Object)
-        return receiver;
-      return J.getNativeInterceptor(receiver);
-    },
-    getInterceptor$s: function(receiver) {
-      if (typeof receiver == "string")
-        return J.JSString.prototype;
-      if (receiver == null)
-        return receiver;
-      if (!(receiver instanceof P.Object))
-        return J.UnknownJavaScriptObject.prototype;
-      return receiver;
-    },
-    getInterceptor$x: function(receiver) {
-      if (receiver == null)
-        return receiver;
-      if (typeof receiver != "object") {
-        if (typeof receiver == "function")
-          return J.JavaScriptFunction.prototype;
-        return receiver;
-      }
-      if (receiver instanceof P.Object)
-        return receiver;
-      return J.getNativeInterceptor(receiver);
-    },
-    getInterceptor$z: function(receiver) {
-      if (receiver == null)
-        return receiver;
-      if (!(receiver instanceof P.Object))
-        return J.UnknownJavaScriptObject.prototype;
-      return receiver;
-    },
-    get$error$z: function(receiver) {
-      return J.getInterceptor$z(receiver).get$error(receiver);
-    },
-    get$hashCode$: function(receiver) {
-      return J.getInterceptor$(receiver).get$hashCode(receiver);
-    },
-    get$iterator$ax: function(receiver) {
-      return J.getInterceptor$ax(receiver).get$iterator(receiver);
-    },
-    get$length$asx: function(receiver) {
-      return J.getInterceptor$asx(receiver).get$length(receiver);
-    },
-    get$onClick$x: function(receiver) {
-      return J.getInterceptor$x(receiver).get$onClick(receiver);
-    },
-    $eq$: function(receiver, a0) {
-      if (receiver == null)
-        return a0 == null;
-      if (typeof receiver != "object")
-        return a0 != null && receiver === a0;
-      return J.getInterceptor$(receiver).$eq(receiver, a0);
-    },
-    $indexSet$ax: function(receiver, a0, a1) {
-      return J.getInterceptor$ax(receiver).$indexSet(receiver, a0, a1);
-    },
-    _removeEventListener$3$x: function(receiver, a0, a1, a2) {
-      return J.getInterceptor$x(receiver)._removeEventListener$3(receiver, a0, a1, a2);
-    },
-    addEventListener$3$x: function(receiver, a0, a1, a2) {
-      return J.getInterceptor$x(receiver).addEventListener$3(receiver, a0, a1, a2);
-    },
-    complete$1$z: function(receiver, a0) {
-      return J.getInterceptor$z(receiver).complete$1(receiver, a0);
-    },
-    forEach$1$ax: function(receiver, a0) {
-      return J.getInterceptor$ax(receiver).forEach$1(receiver, a0);
-    },
-    matchAsPrefix$2$s: function(receiver, a0, a1) {
-      return J.getInterceptor$s(receiver).matchAsPrefix$2(receiver, a0, a1);
-    },
-    toString$0$: function(receiver) {
-      return J.getInterceptor$(receiver).toString$0(receiver);
-    },
-    Interceptor: function Interceptor() {
-    },
-    JSBool: function JSBool() {
-    },
-    JSNull: function JSNull() {
-    },
-    JavaScriptObject: function JavaScriptObject() {
-    },
-    PlainJavaScriptObject: function PlainJavaScriptObject() {
-    },
-    UnknownJavaScriptObject: function UnknownJavaScriptObject() {
-    },
-    JavaScriptFunction: function JavaScriptFunction() {
-    },
-    JSArray: function JSArray(t0) {
-      this.$ti = t0;
-    },
-    JSUnmodifiableArray: function JSUnmodifiableArray(t0) {
-      this.$ti = t0;
-    },
-    ArrayIterator: function ArrayIterator(t0, t1, t2) {
-      var _ = this;
-      _._iterable = t0;
-      _._length = t1;
-      _._index = 0;
-      _._current = null;
-      _.$ti = t2;
-    },
-    JSNumber: function JSNumber() {
-    },
-    JSInt: function JSInt() {
-    },
-    JSNumNotInt: function JSNumNotInt() {
-    },
-    JSString: function JSString() {
-    }
-  },
-  P = {
-    _AsyncRun__initializeScheduleImmediate: function() {
+    _AsyncRun__initializeScheduleImmediate() {
       var div, span, t1 = {};
       if (self.scheduleImmediate != null)
-        return P.async__AsyncRun__scheduleImmediateJsOverride$closure();
+        return A.async__AsyncRun__scheduleImmediateJsOverride$closure();
       if (self.MutationObserver != null && self.document != null) {
         div = self.document.createElement("div");
         span = self.document.createElement("span");
         t1.storedCallback = null;
-        new self.MutationObserver(H.convertDartClosureToJS(new P._AsyncRun__initializeScheduleImmediate_internalCallback(t1), 1)).observe(div, {childList: true});
-        return new P._AsyncRun__initializeScheduleImmediate_closure(t1, div, span);
+        new self.MutationObserver(A.convertDartClosureToJS(new A._AsyncRun__initializeScheduleImmediate_internalCallback(t1), 1)).observe(div, {childList: true});
+        return new A._AsyncRun__initializeScheduleImmediate_closure(t1, div, span);
       } else if (self.setImmediate != null)
-        return P.async__AsyncRun__scheduleImmediateWithSetImmediate$closure();
-      return P.async__AsyncRun__scheduleImmediateWithTimer$closure();
+        return A.async__AsyncRun__scheduleImmediateWithSetImmediate$closure();
+      return A.async__AsyncRun__scheduleImmediateWithTimer$closure();
     },
-    _AsyncRun__scheduleImmediateJsOverride: function(callback) {
-      self.scheduleImmediate(H.convertDartClosureToJS(new P._AsyncRun__scheduleImmediateJsOverride_internalCallback(type$.void_Function._as(callback)), 0));
+    _AsyncRun__scheduleImmediateJsOverride(callback) {
+      self.scheduleImmediate(A.convertDartClosureToJS(new A._AsyncRun__scheduleImmediateJsOverride_internalCallback(type$.void_Function._as(callback)), 0));
     },
-    _AsyncRun__scheduleImmediateWithSetImmediate: function(callback) {
-      self.setImmediate(H.convertDartClosureToJS(new P._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(type$.void_Function._as(callback)), 0));
+    _AsyncRun__scheduleImmediateWithSetImmediate(callback) {
+      self.setImmediate(A.convertDartClosureToJS(new A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(type$.void_Function._as(callback)), 0));
     },
-    _AsyncRun__scheduleImmediateWithTimer: function(callback) {
-      P.Timer__createTimer(C.Duration_0, type$.void_Function._as(callback));
+    _AsyncRun__scheduleImmediateWithTimer(callback) {
+      A.Timer__createTimer(B.Duration_0, type$.void_Function._as(callback));
     },
-    Timer__createTimer: function(duration, callback) {
-      var milliseconds = C.JSInt_methods._tdivFast$1(duration._duration, 1000);
-      return P._TimerImpl$(milliseconds < 0 ? 0 : milliseconds, callback);
+    Timer__createTimer(duration, callback) {
+      return A._TimerImpl$(duration._duration / 1000 | 0, callback);
     },
-    _TimerImpl$: function(milliseconds, callback) {
-      var t1 = new P._TimerImpl();
+    _TimerImpl$(milliseconds, callback) {
+      var t1 = new A._TimerImpl();
       t1._TimerImpl$2(milliseconds, callback);
       return t1;
     },
-    _makeAsyncAwaitCompleter: function($T) {
-      return new P._AsyncAwaitCompleter(new P._Future($.Zone__current, $T._eval$1("_Future<0>")), $T._eval$1("_AsyncAwaitCompleter<0>"));
+    _makeAsyncAwaitCompleter($T) {
+      return new A._AsyncAwaitCompleter(new A._Future($.Zone__current, $T._eval$1("_Future<0>")), $T._eval$1("_AsyncAwaitCompleter<0>"));
     },
-    _asyncStartSync: function(bodyFunction, completer) {
+    _asyncStartSync(bodyFunction, completer) {
       bodyFunction.call$2(0, null);
       completer.isSync = true;
       return completer._future;
     },
-    _asyncAwait: function(object, bodyFunction) {
-      P._awaitOnObject(object, bodyFunction);
+    _asyncAwait(object, bodyFunction) {
+      A._awaitOnObject(object, bodyFunction);
     },
-    _asyncReturn: function(object, completer) {
+    _asyncReturn(object, completer) {
       completer.complete$1(0, object);
     },
-    _asyncRethrow: function(object, completer) {
-      completer.completeError$2(H.unwrapException(object), H.getTraceFromException(object));
+    _asyncRethrow(object, completer) {
+      completer.completeError$2(A.unwrapException(object), A.getTraceFromException(object));
     },
-    _awaitOnObject: function(object, bodyFunction) {
+    _awaitOnObject(object, bodyFunction) {
       var t1, future,
-        thenCallback = new P._awaitOnObject_closure(bodyFunction),
-        errorCallback = new P._awaitOnObject_closure0(bodyFunction);
-      if (object instanceof P._Future)
+        thenCallback = new A._awaitOnObject_closure(bodyFunction),
+        errorCallback = new A._awaitOnObject_closure0(bodyFunction);
+      if (object instanceof A._Future)
         object._thenAwait$1$2(thenCallback, errorCallback, type$.dynamic);
       else {
         t1 = type$.dynamic;
-        if (type$.Future_dynamic._is(object))
+        if (object instanceof A._Future)
           object.then$1$2$onError(thenCallback, errorCallback, t1);
         else {
-          future = new P._Future($.Zone__current, type$._Future_dynamic);
-          future._state = 4;
+          future = new A._Future($.Zone__current, type$._Future_dynamic);
+          future._state = 8;
           future._resultOrListeners = object;
           future._thenAwait$1$2(thenCallback, errorCallback, t1);
         }
       }
     },
-    _wrapJsFunctionForAsync: function($function) {
+    _wrapJsFunctionForAsync($function) {
       var $protected = function(fn, ERROR) {
         return function(errorCode, result) {
           while (true)
@@ -2928,38 +3095,35 @@
             }
         };
       }($function, 1);
-      return $.Zone__current.registerBinaryCallback$3$1(new P._wrapJsFunctionForAsync_closure($protected), type$.void, type$.int, type$.dynamic);
+      return $.Zone__current.registerBinaryCallback$3$1(new A._wrapJsFunctionForAsync_closure($protected), type$.void, type$.int, type$.dynamic);
     },
-    AsyncError$: function(error, stackTrace) {
-      var t1 = H.checkNotNullable(error, "error", type$.Object);
-      return new P.AsyncError(t1, stackTrace == null ? P.AsyncError_defaultStackTrace(error) : stackTrace);
+    AsyncError$(error, stackTrace) {
+      var t1 = A.checkNotNullable(error, "error", type$.Object);
+      return new A.AsyncError(t1, stackTrace == null ? A.AsyncError_defaultStackTrace(error) : stackTrace);
     },
-    AsyncError_defaultStackTrace: function(error) {
+    AsyncError_defaultStackTrace(error) {
       var stackTrace;
       if (type$.Error._is(error)) {
         stackTrace = error.get$stackTrace();
         if (stackTrace != null)
           return stackTrace;
       }
-      return C._StringStackTrace_3uE;
+      return B._StringStackTrace_3uE;
     },
-    Future_Future$sync: function(computation, $T) {
-      var result, error, stackTrace, future, replacement, t1, t2, exception;
+    Future_Future$sync(computation, $T) {
+      var result, error, stackTrace, future, replacement, t1, exception;
       try {
         result = computation.call$0();
         if ($T._eval$1("Future<0>")._is(result))
           return result;
         else {
-          t1 = $T._as(result);
-          t2 = new P._Future($.Zone__current, $T._eval$1("_Future<0>"));
-          t2._state = 4;
-          t2._resultOrListeners = t1;
-          return t2;
+          t1 = A._Future$value(result, $T);
+          return t1;
         }
       } catch (exception) {
-        error = H.unwrapException(exception);
-        stackTrace = H.getTraceFromException(exception);
-        future = new P._Future($.Zone__current, $T._eval$1("_Future<0>"));
+        error = A.unwrapException(exception);
+        stackTrace = A.getTraceFromException(exception);
+        future = new A._Future($.Zone__current, $T._eval$1("_Future<0>"));
         type$.Object._as(error);
         type$.nullable_StackTrace._as(stackTrace);
         replacement = null;
@@ -2970,41 +3134,68 @@
         return future;
       }
     },
-    Future_Future$value: function(value, $T) {
+    Future_Future$value(value, $T) {
       var t1 = value == null ? $T._as(value) : value,
-        t2 = new P._Future($.Zone__current, $T._eval$1("_Future<0>"));
+        t2 = new A._Future($.Zone__current, $T._eval$1("_Future<0>"));
       t2._asyncComplete$1(t1);
       return t2;
     },
-    Completer_Completer: function($T) {
-      return new P._AsyncCompleter(new P._Future($.Zone__current, $T._eval$1("_Future<0>")), $T._eval$1("_AsyncCompleter<0>"));
+    Completer_Completer($T) {
+      return new A._AsyncCompleter(new A._Future($.Zone__current, $T._eval$1("_Future<0>")), $T._eval$1("_AsyncCompleter<0>"));
     },
-    _Future__chainCoreFuture: function(source, target) {
+    _Future$value(value, $T) {
+      var t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>"));
+      $T._as(value);
+      t1._state = 8;
+      t1._resultOrListeners = value;
+      return t1;
+    },
+    _Future__chainCoreFutureSync(source, target) {
       var t1, t2, listeners;
-      for (t1 = type$._Future_dynamic; t2 = source._state, t2 === 2;)
+      for (t1 = type$._Future_dynamic; t2 = source._state, (t2 & 4) !== 0;)
         source = t1._as(source._resultOrListeners);
-      if (t2 >= 4) {
+      if ((t2 & 24) !== 0) {
         listeners = target._removeListeners$0();
-        target._state = source._state;
-        target._resultOrListeners = source._resultOrListeners;
-        P._Future__propagateToListeners(target, listeners);
+        target._cloneResult$1(source);
+        A._Future__propagateToListeners(target, listeners);
       } else {
         listeners = type$.nullable__FutureListener_dynamic_dynamic._as(target._resultOrListeners);
-        target._state = 2;
-        target._resultOrListeners = source;
+        target._setChained$1(source);
         source._prependListeners$1(listeners);
       }
     },
-    _Future__propagateToListeners: function(source, listeners) {
-      var t2, t3, t4, _box_0, hasError, asyncError, nextListener, nextListener0, t5, sourceResult, t6, t7, zone, oldZone, result, current, _null = null, _box_1 = {},
+    _Future__chainCoreFutureAsync(source, target) {
+      var t2, t3, listeners, _box_0 = {},
+        t1 = _box_0.source = source;
+      for (t2 = type$._Future_dynamic; t3 = t1._state, (t3 & 4) !== 0; t1 = source) {
+        source = t2._as(t1._resultOrListeners);
+        _box_0.source = source;
+      }
+      if ((t3 & 24) === 0) {
+        listeners = type$.nullable__FutureListener_dynamic_dynamic._as(target._resultOrListeners);
+        target._setChained$1(t1);
+        _box_0.source._prependListeners$1(listeners);
+        return;
+      }
+      if ((t3 & 16) === 0 && target._resultOrListeners == null) {
+        target._cloneResult$1(t1);
+        return;
+      }
+      target._state ^= 2;
+      A._rootScheduleMicrotask(null, null, target._zone, type$.void_Function._as(new A._Future__chainCoreFutureAsync_closure(_box_0, target)));
+    },
+    _Future__propagateToListeners(source, listeners) {
+      var t2, t3, t4, _box_0, t5, t6, hasError, asyncError, nextListener, nextListener0, sourceResult, t7, zone, oldZone, result, current, _box_1 = {},
         t1 = _box_1.source = source;
       for (t2 = type$.AsyncError, t3 = type$.nullable__FutureListener_dynamic_dynamic, t4 = type$.Future_dynamic; true;) {
         _box_0 = {};
-        hasError = t1._state === 8;
+        t5 = t1._state;
+        t6 = (t5 & 16) === 0;
+        hasError = !t6;
         if (listeners == null) {
-          if (hasError) {
+          if (hasError && (t5 & 1) === 0) {
             asyncError = t2._as(t1._resultOrListeners);
-            P._rootHandleUncaughtError(_null, _null, t1._zone, asyncError.error, asyncError.stackTrace);
+            A._rootHandleError(asyncError.error, asyncError.stackTrace);
           }
           return;
         }
@@ -3012,7 +3203,7 @@
         nextListener = listeners._nextListener;
         for (t1 = listeners; nextListener != null; t1 = nextListener, nextListener = nextListener0) {
           t1._nextListener = null;
-          P._Future__propagateToListeners(_box_1.source, t1);
+          A._Future__propagateToListeners(_box_1.source, t1);
           _box_0.listener = nextListener;
           nextListener0 = nextListener._nextListener;
         }
@@ -3020,7 +3211,6 @@
         sourceResult = t5._resultOrListeners;
         _box_0.listenerHasError = hasError;
         _box_0.listenerValueOrError = sourceResult;
-        t6 = !hasError;
         if (t6) {
           t7 = t1.state;
           t7 = (t7 & 1) !== 0 || (t7 & 15) === 8;
@@ -3029,32 +3219,32 @@
         if (t7) {
           zone = t1.result._zone;
           if (hasError) {
-            t7 = t5._zone === zone;
-            t7 = !(t7 || t7);
+            t5 = t5._zone === zone;
+            t5 = !(t5 || t5);
           } else
-            t7 = false;
-          if (t7) {
+            t5 = false;
+          if (t5) {
             t2._as(sourceResult);
-            P._rootHandleUncaughtError(_null, _null, t5._zone, sourceResult.error, sourceResult.stackTrace);
+            A._rootHandleError(sourceResult.error, sourceResult.stackTrace);
             return;
           }
           oldZone = $.Zone__current;
           if (oldZone !== zone)
             $.Zone__current = zone;
           else
-            oldZone = _null;
+            oldZone = null;
           t1 = t1.state;
           if ((t1 & 15) === 8)
-            new P._Future__propagateToListeners_handleWhenCompleteCallback(_box_0, _box_1, hasError).call$0();
+            new A._Future__propagateToListeners_handleWhenCompleteCallback(_box_0, _box_1, hasError).call$0();
           else if (t6) {
             if ((t1 & 1) !== 0)
-              new P._Future__propagateToListeners_handleValueCallback(_box_0, sourceResult).call$0();
+              new A._Future__propagateToListeners_handleValueCallback(_box_0, sourceResult).call$0();
           } else if ((t1 & 2) !== 0)
-            new P._Future__propagateToListeners_handleError(_box_1, _box_0).call$0();
+            new A._Future__propagateToListeners_handleError(_box_1, _box_0).call$0();
           if (oldZone != null)
             $.Zone__current = oldZone;
           t1 = _box_0.listenerValueOrError;
-          if (t4._is(t1)) {
+          if (t1 instanceof A._Future) {
             t5 = _box_0.listener.$ti;
             t5 = t5._eval$1("Future<2>")._is(t1) || !t5._rest[1]._is(t1);
           } else
@@ -3062,16 +3252,16 @@
           if (t5) {
             t4._as(t1);
             result = _box_0.listener.result;
-            if (t1._state >= 4) {
+            if ((t1._state & 24) !== 0) {
               current = t3._as(result._resultOrListeners);
               result._resultOrListeners = null;
               listeners = result._reverseListeners$1(current);
-              result._state = t1._state;
+              result._state = t1._state & 30 | result._state & 1;
               result._resultOrListeners = t1._resultOrListeners;
               _box_1.source = t1;
               continue;
             } else
-              P._Future__chainCoreFuture(t1, result);
+              A._Future__chainCoreFutureSync(t1, result);
             return;
           }
         }
@@ -3083,27 +3273,27 @@
         t5 = _box_0.listenerValueOrError;
         if (!t1) {
           result.$ti._precomputed1._as(t5);
-          result._state = 4;
+          result._state = 8;
           result._resultOrListeners = t5;
         } else {
           t2._as(t5);
-          result._state = 8;
+          result._state = result._state & 1 | 16;
           result._resultOrListeners = t5;
         }
         _box_1.source = result;
         t1 = result;
       }
     },
-    _registerErrorHandler: function(errorHandler, zone) {
+    _registerErrorHandler(errorHandler, zone) {
       var t1;
       if (type$.dynamic_Function_Object_StackTrace._is(errorHandler))
         return zone.registerBinaryCallback$3$1(errorHandler, type$.dynamic, type$.Object, type$.StackTrace);
       t1 = type$.dynamic_Function_Object;
       if (t1._is(errorHandler))
         return t1._as(errorHandler);
-      throw H.wrapException(P.ArgumentError$value(errorHandler, "onError", "Error handler must accept one Object or one Object and a StackTrace as arguments, and return a valid result"));
+      throw A.wrapException(A.ArgumentError$value(errorHandler, "onError", string$.Error_));
     },
-    _microtaskLoop: function() {
+    _microtaskLoop() {
       var entry, next;
       for (entry = $._nextCallback; entry != null; entry = $._nextCallback) {
         $._lastPriorityCallback = null;
@@ -3114,36 +3304,36 @@
         entry.callback.call$0();
       }
     },
-    _startMicrotaskLoop: function() {
+    _startMicrotaskLoop() {
       $._isInCallbackLoop = true;
       try {
-        P._microtaskLoop();
+        A._microtaskLoop();
       } finally {
         $._lastPriorityCallback = null;
         $._isInCallbackLoop = false;
         if ($._nextCallback != null)
-          $.$get$_AsyncRun__scheduleImmediateClosure().call$1(P.async___startMicrotaskLoop$closure());
+          $.$get$_AsyncRun__scheduleImmediateClosure().call$1(A.async___startMicrotaskLoop$closure());
       }
     },
-    _scheduleAsyncCallback: function(callback) {
-      var newEntry = new P._AsyncCallbackEntry(callback),
+    _scheduleAsyncCallback(callback) {
+      var newEntry = new A._AsyncCallbackEntry(callback),
         lastCallback = $._lastCallback;
       if (lastCallback == null) {
         $._nextCallback = $._lastCallback = newEntry;
         if (!$._isInCallbackLoop)
-          $.$get$_AsyncRun__scheduleImmediateClosure().call$1(P.async___startMicrotaskLoop$closure());
+          $.$get$_AsyncRun__scheduleImmediateClosure().call$1(A.async___startMicrotaskLoop$closure());
       } else
         $._lastCallback = lastCallback.next = newEntry;
     },
-    _schedulePriorityAsyncCallback: function(callback) {
+    _schedulePriorityAsyncCallback(callback) {
       var entry, lastPriorityCallback, next,
         t1 = $._nextCallback;
       if (t1 == null) {
-        P._scheduleAsyncCallback(callback);
+        A._scheduleAsyncCallback(callback);
         $._lastPriorityCallback = $._lastCallback;
         return;
       }
-      entry = new P._AsyncCallbackEntry(callback);
+      entry = new A._AsyncCallbackEntry(callback);
       lastPriorityCallback = $._lastPriorityCallback;
       if (lastPriorityCallback == null) {
         entry.next = t1;
@@ -3156,66 +3346,69 @@
           $._lastCallback = entry;
       }
     },
-    scheduleMicrotask: function(callback) {
-      var _null = null,
+    scheduleMicrotask(callback) {
+      var t1, _null = null,
         currentZone = $.Zone__current;
-      if (C.C__RootZone === currentZone) {
-        P._rootScheduleMicrotask(_null, _null, C.C__RootZone, callback);
+      if (B.C__RootZone === currentZone) {
+        A._rootScheduleMicrotask(_null, _null, B.C__RootZone, callback);
         return;
       }
-      P._rootScheduleMicrotask(_null, _null, currentZone, type$.void_Function._as(currentZone.bindCallbackGuarded$1(callback)));
+      t1 = false;
+      if (t1) {
+        A._rootScheduleMicrotask(_null, _null, currentZone, type$.void_Function._as(callback));
+        return;
+      }
+      A._rootScheduleMicrotask(_null, _null, currentZone, type$.void_Function._as(currentZone.bindCallbackGuarded$1(callback)));
     },
-    StreamIterator_StreamIterator: function(stream, $T) {
-      H.checkNotNullable(stream, "stream", type$.Object);
-      return new P._StreamIterator($T._eval$1("_StreamIterator<0>"));
+    StreamIterator_StreamIterator(stream, $T) {
+      A.checkNotNullable(stream, "stream", type$.Object);
+      return new A._StreamIterator($T._eval$1("_StreamIterator<0>"));
     },
-    StreamController_StreamController: function($T) {
+    StreamController_StreamController($T) {
       var _null = null;
-      return new P._AsyncStreamController(_null, _null, _null, _null, $T._eval$1("_AsyncStreamController<0>"));
+      return new A._AsyncStreamController(_null, _null, _null, _null, $T._eval$1("_AsyncStreamController<0>"));
     },
-    _runGuarded: function(notificationHandler) {
+    _runGuarded(notificationHandler) {
       return;
     },
-    _BufferingStreamSubscription__registerDataHandler: function(zone, handleData, $T) {
-      var t1 = handleData == null ? P.async___nullDataHandler$closure() : handleData;
+    _BufferingStreamSubscription__registerDataHandler(zone, handleData, $T) {
+      var t1 = handleData == null ? A.async___nullDataHandler$closure() : handleData;
       return type$.$env_1_1_void._bind$1($T)._eval$1("1(2)")._as(t1);
     },
-    _BufferingStreamSubscription__registerErrorHandler: function(zone, handleError) {
+    _BufferingStreamSubscription__registerErrorHandler(zone, handleError) {
       if (handleError == null)
-        handleError = P.async___nullErrorHandler$closure();
+        handleError = A.async___nullErrorHandler$closure();
       if (type$.void_Function_Object_StackTrace._is(handleError))
         return zone.registerBinaryCallback$3$1(handleError, type$.dynamic, type$.Object, type$.StackTrace);
       if (type$.void_Function_Object._is(handleError))
         return type$.dynamic_Function_Object._as(handleError);
-      throw H.wrapException(P.ArgumentError$("handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace."));
+      throw A.wrapException(A.ArgumentError$("handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace.", null));
     },
-    _nullDataHandler: function(value) {
+    _nullDataHandler(value) {
     },
-    _nullErrorHandler: function(error, stackTrace) {
-      type$.Object._as(error);
-      type$.StackTrace._as(stackTrace);
-      P._rootHandleUncaughtError(null, null, $.Zone__current, error, stackTrace);
+    _nullErrorHandler(error, stackTrace) {
+      A._rootHandleError(type$.Object._as(error), type$.StackTrace._as(stackTrace));
     },
-    _nullDoneHandler: function() {
+    _nullDoneHandler() {
     },
-    _cancelAndValue: function(subscription, future, value) {
+    _cancelAndValue(subscription, future, value) {
       var cancelFuture = subscription.cancel$0(),
         t1 = $.$get$Future__nullFuture();
       if (cancelFuture !== t1)
-        cancelFuture.whenComplete$1(new P._cancelAndValue_closure(future, value));
+        cancelFuture.whenComplete$1(new A._cancelAndValue_closure(future, value));
       else
         future._complete$1(value);
     },
-    Timer_Timer: function(duration, callback) {
+    Timer_Timer(duration, callback) {
       var t1 = $.Zone__current;
-      if (t1 === C.C__RootZone)
-        return P.Timer__createTimer(duration, type$.void_Function._as(callback));
-      return P.Timer__createTimer(duration, type$.void_Function._as(t1.bindCallbackGuarded$1(callback)));
+      if (t1 === B.C__RootZone)
+        return A.Timer__createTimer(duration, type$.void_Function._as(callback));
+      return A.Timer__createTimer(duration, type$.void_Function._as(t1.bindCallbackGuarded$1(callback)));
     },
-    _rootHandleUncaughtError: function($self, $parent, zone, error, stackTrace) {
-      P._schedulePriorityAsyncCallback(new P._rootHandleUncaughtError_closure(error, stackTrace));
+    _rootHandleError(error, stackTrace) {
+      A._schedulePriorityAsyncCallback(new A._rootHandleError_closure(error, stackTrace));
     },
-    _rootRun: function($self, $parent, zone, f, $R) {
+    _rootRun($self, $parent, zone, f, $R) {
       var old,
         t1 = $.Zone__current;
       if (t1 === zone)
@@ -3229,7 +3422,7 @@
         $.Zone__current = old;
       }
     },
-    _rootRunUnary: function($self, $parent, zone, f, arg, $R, $T) {
+    _rootRunUnary($self, $parent, zone, f, arg, $R, $T) {
       var old,
         t1 = $.Zone__current;
       if (t1 === zone)
@@ -3243,7 +3436,7 @@
         $.Zone__current = old;
       }
     },
-    _rootRunBinary: function($self, $parent, zone, f, arg1, arg2, $R, T1, T2) {
+    _rootRunBinary($self, $parent, zone, f, arg1, arg2, $R, T1, T2) {
       var old,
         t1 = $.Zone__current;
       if (t1 === zone)
@@ -3257,11 +3450,11 @@
         $.Zone__current = old;
       }
     },
-    _rootScheduleMicrotask: function($self, $parent, zone, f) {
+    _rootScheduleMicrotask($self, $parent, zone, f) {
       type$.void_Function._as(f);
-      if (C.C__RootZone !== zone)
+      if (B.C__RootZone !== zone)
         f = zone.bindCallbackGuarded$1(f);
-      P._scheduleAsyncCallback(f);
+      A._scheduleAsyncCallback(f);
     },
     _AsyncRun__initializeScheduleImmediate_internalCallback: function _AsyncRun__initializeScheduleImmediate_internalCallback(t0) {
       this._box_0 = t0;
@@ -3347,11 +3540,11 @@
       this.e = t1;
       this.s = t2;
     },
-    _Future__asyncCompleteWithValue_closure: function _Future__asyncCompleteWithValue_closure(t0, t1) {
-      this.$this = t0;
-      this.value = t1;
+    _Future__chainCoreFutureAsync_closure: function _Future__chainCoreFutureAsync_closure(t0, t1) {
+      this._box_0 = t0;
+      this.target = t1;
     },
-    _Future__chainFuture_closure: function _Future__chainFuture_closure(t0, t1) {
+    _Future__asyncCompleteWithValue_closure: function _Future__asyncCompleteWithValue_closure(t0, t1) {
       this.$this = t0;
       this.value = t1;
     },
@@ -3398,10 +3591,6 @@
       this.subscription = t1;
       this.future = t2;
     },
-    StreamSubscription: function StreamSubscription() {
-    },
-    StreamTransformerBase: function StreamTransformerBase() {
-    },
     _StreamController: function _StreamController() {
     },
     _StreamController__subscribe_closure: function _StreamController__subscribe_closure(t0) {
@@ -3481,18 +3670,16 @@
     },
     _DelayedDone: function _DelayedDone() {
     },
-    _PendingEvents: function _PendingEvents() {
+    _PendingEvents: function _PendingEvents(t0) {
+      var _ = this;
+      _._state = 0;
+      _.lastPendingEvent = _.firstPendingEvent = null;
+      _.$ti = t0;
     },
     _PendingEvents_schedule_closure: function _PendingEvents_schedule_closure(t0, t1) {
       this.$this = t0;
       this.dispatch = t1;
     },
-    _StreamImplEvents: function _StreamImplEvents(t0) {
-      var _ = this;
-      _.lastPendingEvent = _.firstPendingEvent = null;
-      _._state = 0;
-      _.$ti = t0;
-    },
     _StreamIterator: function _StreamIterator(t0) {
       this.$ti = t0;
     },
@@ -3502,7 +3689,7 @@
     },
     _Zone: function _Zone() {
     },
-    _rootHandleUncaughtError_closure: function _rootHandleUncaughtError_closure(t0, t1) {
+    _rootHandleError_closure: function _rootHandleError_closure(t0, t1) {
       this.error = t0;
       this.stackTrace = t1;
     },
@@ -3517,163 +3704,38 @@
       this.f = t1;
       this.T = t2;
     },
-    LinkedHashMap_LinkedHashMap$_literal: function(keyValuePairs, $K, $V) {
-      return $K._eval$1("@<0>")._bind$1($V)._eval$1("LinkedHashMap<1,2>")._as(H.fillLiteralMap(keyValuePairs, new H.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>"))));
+    LinkedHashMap_LinkedHashMap$_literal(keyValuePairs, $K, $V) {
+      return $K._eval$1("@<0>")._bind$1($V)._eval$1("LinkedHashMap<1,2>")._as(A.fillLiteralMap(keyValuePairs, new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>"))));
     },
-    LinkedHashMap_LinkedHashMap$_empty: function($K, $V) {
-      return new H.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>"));
+    LinkedHashMap_LinkedHashMap$_empty($K, $V) {
+      return new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>"));
     },
-    IterableBase_iterableToShortString: function(iterable, leftDelimiter, rightDelimiter) {
-      var parts, t1;
-      if (P._isToStringVisiting(iterable)) {
-        if (leftDelimiter === "(" && rightDelimiter === ")")
-          return "(...)";
-        return leftDelimiter + "..." + rightDelimiter;
-      }
-      parts = H.setRuntimeTypeInfo([], type$.JSArray_String);
-      C.JSArray_methods.add$1($._toStringVisiting, iterable);
-      try {
-        P._iterablePartsToStrings(iterable, parts);
-      } finally {
-        if (0 >= $._toStringVisiting.length)
-          return H.ioore($._toStringVisiting, -1);
-        $._toStringVisiting.pop();
-      }
-      t1 = P.StringBuffer__writeAll(leftDelimiter, type$.Iterable_dynamic._as(parts), ", ") + rightDelimiter;
-      return t1.charCodeAt(0) == 0 ? t1 : t1;
-    },
-    IterableBase_iterableToFullString: function(iterable, leftDelimiter, rightDelimiter) {
-      var buffer, t1;
-      if (P._isToStringVisiting(iterable))
-        return leftDelimiter + "..." + rightDelimiter;
-      buffer = new P.StringBuffer(leftDelimiter);
-      C.JSArray_methods.add$1($._toStringVisiting, iterable);
-      try {
-        t1 = buffer;
-        t1._contents = P.StringBuffer__writeAll(t1._contents, iterable, ", ");
-      } finally {
-        if (0 >= $._toStringVisiting.length)
-          return H.ioore($._toStringVisiting, -1);
-        $._toStringVisiting.pop();
-      }
-      buffer._contents += rightDelimiter;
-      t1 = buffer._contents;
-      return t1.charCodeAt(0) == 0 ? t1 : t1;
-    },
-    _isToStringVisiting: function(o) {
-      var t1, i;
-      for (t1 = $._toStringVisiting.length, i = 0; i < t1; ++i)
-        if (o === $._toStringVisiting[i])
-          return true;
-      return false;
-    },
-    _iterablePartsToStrings: function(iterable, parts) {
-      var next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision,
-        it = iterable.get$iterator(iterable),
-        $length = 0, count = 0;
-      while (true) {
-        if (!($length < 80 || count < 3))
-          break;
-        if (!it.moveNext$0())
-          return;
-        next = H.S(it.get$current());
-        C.JSArray_methods.add$1(parts, next);
-        $length += next.length + 2;
-        ++count;
-      }
-      if (!it.moveNext$0()) {
-        if (count <= 5)
-          return;
-        if (0 >= parts.length)
-          return H.ioore(parts, -1);
-        ultimateString = parts.pop();
-        if (0 >= parts.length)
-          return H.ioore(parts, -1);
-        penultimateString = parts.pop();
-      } else {
-        penultimate = it.get$current();
-        ++count;
-        if (!it.moveNext$0()) {
-          if (count <= 4) {
-            C.JSArray_methods.add$1(parts, H.S(penultimate));
-            return;
-          }
-          ultimateString = H.S(penultimate);
-          if (0 >= parts.length)
-            return H.ioore(parts, -1);
-          penultimateString = parts.pop();
-          $length += ultimateString.length + 2;
-        } else {
-          ultimate = it.get$current();
-          ++count;
-          for (; it.moveNext$0(); penultimate = ultimate, ultimate = ultimate0) {
-            ultimate0 = it.get$current();
-            ++count;
-            if (count > 100) {
-              while (true) {
-                if (!($length > 75 && count > 3))
-                  break;
-                if (0 >= parts.length)
-                  return H.ioore(parts, -1);
-                $length -= parts.pop().length + 2;
-                --count;
-              }
-              C.JSArray_methods.add$1(parts, "...");
-              return;
-            }
-          }
-          penultimateString = H.S(penultimate);
-          ultimateString = H.S(ultimate);
-          $length += ultimateString.length + penultimateString.length + 4;
-        }
-      }
-      if (count > parts.length + 2) {
-        $length += 5;
-        elision = "...";
-      } else
-        elision = null;
-      while (true) {
-        if (!($length > 80 && parts.length > 3))
-          break;
-        if (0 >= parts.length)
-          return H.ioore(parts, -1);
-        $length -= parts.pop().length + 2;
-        if (elision == null) {
-          $length += 5;
-          elision = "...";
-        }
-      }
-      if (elision != null)
-        C.JSArray_methods.add$1(parts, elision);
-      C.JSArray_methods.add$1(parts, penultimateString);
-      C.JSArray_methods.add$1(parts, ultimateString);
-    },
-    MapBase_mapToString: function(m) {
+    MapBase_mapToString(m) {
       var result, t1 = {};
-      if (P._isToStringVisiting(m))
+      if (A.isToStringVisiting(m))
         return "{...}";
-      result = new P.StringBuffer("");
+      result = new A.StringBuffer("");
       try {
-        C.JSArray_methods.add$1($._toStringVisiting, m);
+        B.JSArray_methods.add$1($.toStringVisiting, m);
         result._contents += "{";
         t1.first = true;
-        m.forEach$1(0, new P.MapBase_mapToString_closure(t1, result));
+        m.forEach$1(0, new A.MapBase_mapToString_closure(t1, result));
         result._contents += "}";
       } finally {
-        if (0 >= $._toStringVisiting.length)
-          return H.ioore($._toStringVisiting, -1);
-        $._toStringVisiting.pop();
+        if (0 >= $.toStringVisiting.length)
+          return A.ioore($.toStringVisiting, -1);
+        $.toStringVisiting.pop();
       }
       t1 = result._contents;
       return t1.charCodeAt(0) == 0 ? t1 : t1;
     },
-    ListQueue$: function($E) {
-      return new P.ListQueue(P.List_List$filled(P.ListQueue__calculateCapacity(null), null, false, $E._eval$1("0?")), $E._eval$1("ListQueue<0>"));
+    ListQueue$($E) {
+      return new A.ListQueue(A.List_List$filled(A.ListQueue__calculateCapacity(null), null, false, $E._eval$1("0?")), $E._eval$1("ListQueue<0>"));
     },
-    ListQueue__calculateCapacity: function(initialCapacity) {
+    ListQueue__calculateCapacity(initialCapacity) {
       return 8;
     },
-    ListMixin: function ListMixin() {
+    ListBase: function ListBase() {
     },
     MapBase: function MapBase() {
     },
@@ -3681,8 +3743,6 @@
       this._box_0 = t0;
       this.result = t1;
     },
-    MapMixin: function MapMixin() {
-    },
     ListQueue: function ListQueue(t0, t1) {
       var _ = this;
       _._table = t0;
@@ -3698,43 +3758,43 @@
       _._collection$_current = null;
       _.$ti = t4;
     },
-    _parseJson: function(source, reviver) {
+    _parseJson(source, reviver) {
       var e, exception, t1, parsed = null;
       try {
         parsed = JSON.parse(source);
       } catch (exception) {
-        e = H.unwrapException(exception);
-        t1 = P.FormatException$(String(e), null, null);
-        throw H.wrapException(t1);
+        e = A.unwrapException(exception);
+        t1 = A.FormatException$(String(e), null, null);
+        throw A.wrapException(t1);
       }
-      t1 = P._convertJsonToDartLazy(parsed);
+      t1 = A._convertJsonToDartLazy(parsed);
       return t1;
     },
-    _convertJsonToDartLazy: function(object) {
+    _convertJsonToDartLazy(object) {
       var i;
       if (object == null)
         return null;
       if (typeof object != "object")
         return object;
       if (Object.getPrototypeOf(object) !== Array.prototype)
-        return new P._JsonMap(object, Object.create(null));
+        return new A._JsonMap(object, Object.create(null));
       for (i = 0; i < object.length; ++i)
-        object[i] = P._convertJsonToDartLazy(object[i]);
+        object[i] = A._convertJsonToDartLazy(object[i]);
       return object;
     },
-    JsonUnsupportedObjectError$: function(unsupportedObject, cause, partialResult) {
-      return new P.JsonUnsupportedObjectError(unsupportedObject, cause);
+    JsonUnsupportedObjectError$(unsupportedObject, cause, partialResult) {
+      return new A.JsonUnsupportedObjectError(unsupportedObject, cause);
     },
-    _defaultToEncodable: function(object) {
+    _defaultToEncodable(object) {
       return object.toJson$0();
     },
-    _JsonStringStringifier$: function(_sink, _toEncodable) {
-      return new P._JsonStringStringifier(_sink, [], P.convert___defaultToEncodable$closure());
+    _JsonStringStringifier$(_sink, _toEncodable) {
+      return new A._JsonStringStringifier(_sink, [], A.convert___defaultToEncodable$closure());
     },
-    _JsonStringStringifier_stringify: function(object, toEncodable, indent) {
+    _JsonStringStringifier_stringify(object, toEncodable, indent) {
       var t1,
-        output = new P.StringBuffer(""),
-        stringifier = P._JsonStringStringifier$(output, toEncodable);
+        output = new A.StringBuffer(""),
+        stringifier = A._JsonStringStringifier$(output, toEncodable);
       stringifier.writeObject$1(object);
       t1 = output._contents;
       return t1.charCodeAt(0) == 0 ? t1 : t1;
@@ -3778,18 +3838,21 @@
       this._seen = t1;
       this._toEncodable = t2;
     },
-    int_parse: function(source, radix) {
-      var value = H.Primitives_parseInt(source, radix);
+    int_parse(source, radix) {
+      var value = A.Primitives_parseInt(source, radix);
       if (value != null)
         return value;
-      throw H.wrapException(P.FormatException$(source, null, null));
+      throw A.wrapException(A.FormatException$(source, null, null));
     },
-    Error__objectToString: function(object) {
-      if (object instanceof H.Closure)
-        return object.toString$0(0);
-      return "Instance of '" + H.Primitives_objectTypeName(object) + "'";
+    Error__throw(error, stackTrace) {
+      error = A.wrapException(error);
+      if (error == null)
+        error = type$.Object._as(error);
+      error.stack = stackTrace.toString$0(0);
+      throw error;
+      throw A.wrapException("unreachable");
     },
-    List_List$filled: function($length, fill, growable, $E) {
+    List_List$filled($length, fill, growable, $E) {
       var i,
         result = growable ? J.JSArray_JSArray$growable($length, $E) : J.JSArray_JSArray$fixed($length, $E);
       if ($length !== 0 && fill != null)
@@ -3797,34 +3860,25 @@
           result[i] = fill;
       return result;
     },
-    StringBuffer__writeAll: function(string, objects, separator) {
+    StringBuffer__writeAll(string, objects, separator) {
       var iterator = J.get$iterator$ax(objects);
       if (!iterator.moveNext$0())
         return string;
       if (separator.length === 0) {
         do
-          string += H.S(iterator.get$current());
+          string += A.S(iterator.get$current());
         while (iterator.moveNext$0());
       } else {
-        string += H.S(iterator.get$current());
+        string += A.S(iterator.get$current());
         for (; iterator.moveNext$0();)
-          string = string + separator + H.S(iterator.get$current());
+          string = string + separator + A.S(iterator.get$current());
       }
       return string;
     },
-    StackTrace_current: function() {
-      var stackTrace, exception;
-      if (H.boolConversionCheck($.$get$_hasErrorStackProperty()))
-        return H.getTraceFromException(new Error());
-      try {
-        throw H.wrapException("");
-      } catch (exception) {
-        H.unwrapException(exception);
-        stackTrace = H.getTraceFromException(exception);
-        return stackTrace;
-      }
+    StackTrace_current() {
+      return A.getTraceFromException(new Error());
     },
-    DateTime__fourDigits: function(n) {
+    DateTime__fourDigits(n) {
       var absN = Math.abs(n),
         sign = n < 0 ? "-" : "";
       if (absN >= 1000)
@@ -3835,80 +3889,202 @@
         return sign + "00" + absN;
       return sign + "000" + absN;
     },
-    DateTime__threeDigits: function(n) {
+    DateTime__threeDigits(n) {
       if (n >= 100)
         return "" + n;
       if (n >= 10)
         return "0" + n;
       return "00" + n;
     },
-    DateTime__twoDigits: function(n) {
+    DateTime__twoDigits(n) {
       if (n >= 10)
         return "" + n;
       return "0" + n;
     },
-    Error_safeToString: function(object) {
-      if (typeof object == "number" || H._isBool(object) || null == object)
+    Error_safeToString(object) {
+      if (typeof object == "number" || A._isBool(object) || object == null)
         return J.toString$0$(object);
       if (typeof object == "string")
         return JSON.stringify(object);
-      return P.Error__objectToString(object);
+      return A.Primitives_safeToString(object);
     },
-    AssertionError$: function(message) {
-      return new P.AssertionError(message);
+    Error_throwWithStackTrace(error, stackTrace) {
+      A.checkNotNullable(error, "error", type$.Object);
+      A.checkNotNullable(stackTrace, "stackTrace", type$.StackTrace);
+      A.Error__throw(error, stackTrace);
     },
-    ArgumentError$: function(message) {
-      return new P.ArgumentError(false, null, null, message);
+    AssertionError$(message) {
+      return new A.AssertionError(message);
     },
-    ArgumentError$value: function(value, $name, message) {
-      return new P.ArgumentError(true, value, $name, message);
+    ArgumentError$(message, $name) {
+      return new A.ArgumentError(false, null, $name, message);
     },
-    ArgumentError$notNull: function($name) {
-      return new P.ArgumentError(false, null, $name, "Must not be null");
+    ArgumentError$value(value, $name, message) {
+      return new A.ArgumentError(true, value, $name, message);
     },
-    RangeError$: function(message) {
+    ArgumentError$notNull($name) {
+      return new A.ArgumentError(false, null, $name, "Must not be null");
+    },
+    RangeError$(message) {
       var _null = null;
-      return new P.RangeError(_null, _null, false, _null, _null, message);
+      return new A.RangeError(_null, _null, false, _null, _null, message);
     },
-    RangeError$value: function(value, $name) {
-      return new P.RangeError(null, null, true, value, $name, "Value not in range");
+    RangeError$value(value, $name) {
+      return new A.RangeError(null, null, true, value, $name, "Value not in range");
     },
-    RangeError$range: function(invalidValue, minValue, maxValue, $name, message) {
-      return new P.RangeError(minValue, maxValue, true, invalidValue, $name, "Invalid value");
+    RangeError$range(invalidValue, minValue, maxValue, $name, message) {
+      return new A.RangeError(minValue, maxValue, true, invalidValue, $name, "Invalid value");
     },
-    RangeError_checkValidRange: function(start, end, $length) {
+    RangeError_checkValidRange(start, end, $length) {
       if (0 > start || start > $length)
-        throw H.wrapException(P.RangeError$range(start, 0, $length, "start", null));
+        throw A.wrapException(A.RangeError$range(start, 0, $length, "start", null));
       if (end != null) {
         if (start > end || end > $length)
-          throw H.wrapException(P.RangeError$range(end, start, $length, "end", null));
+          throw A.wrapException(A.RangeError$range(end, start, $length, "end", null));
         return end;
       }
       return $length;
     },
-    RangeError_checkNotNegative: function(value, $name) {
+    RangeError_checkNotNegative(value, $name) {
       if (value < 0)
-        throw H.wrapException(P.RangeError$range(value, 0, null, $name, null));
+        throw A.wrapException(A.RangeError$range(value, 0, null, $name, null));
       return value;
     },
-    IndexError$: function(invalidValue, indexable, $name, message, $length) {
-      var t1 = H._asInt($length == null ? J.get$length$asx(indexable) : $length);
-      return new P.IndexError(t1, true, invalidValue, $name, "Index out of range");
+    IndexError$withLength(invalidValue, $length, indexable, message, $name) {
+      return new A.IndexError($length, true, invalidValue, $name, "Index out of range");
     },
-    UnsupportedError$: function(message) {
-      return new P.UnsupportedError(message);
+    UnsupportedError$(message) {
+      return new A.UnsupportedError(message);
     },
-    UnimplementedError$: function(message) {
-      return new P.UnimplementedError(message);
+    UnimplementedError$(message) {
+      return new A.UnimplementedError(message);
     },
-    StateError$: function(message) {
-      return new P.StateError(message);
+    StateError$(message) {
+      return new A.StateError(message);
     },
-    ConcurrentModificationError$: function(modifiedObject) {
-      return new P.ConcurrentModificationError(modifiedObject);
+    ConcurrentModificationError$(modifiedObject) {
+      return new A.ConcurrentModificationError(modifiedObject);
     },
-    FormatException$: function(message, source, offset) {
-      return new P.FormatException(message, source, offset);
+    FormatException$(message, source, offset) {
+      return new A.FormatException(message, source, offset);
+    },
+    Iterable_iterableToShortString(iterable, leftDelimiter, rightDelimiter) {
+      var parts, t1;
+      if (A.isToStringVisiting(iterable)) {
+        if (leftDelimiter === "(" && rightDelimiter === ")")
+          return "(...)";
+        return leftDelimiter + "..." + rightDelimiter;
+      }
+      parts = A._setArrayType([], type$.JSArray_String);
+      B.JSArray_methods.add$1($.toStringVisiting, iterable);
+      try {
+        A._iterablePartsToStrings(iterable, parts);
+      } finally {
+        if (0 >= $.toStringVisiting.length)
+          return A.ioore($.toStringVisiting, -1);
+        $.toStringVisiting.pop();
+      }
+      t1 = A.StringBuffer__writeAll(leftDelimiter, type$.Iterable_dynamic._as(parts), ", ") + rightDelimiter;
+      return t1.charCodeAt(0) == 0 ? t1 : t1;
+    },
+    Iterable_iterableToFullString(iterable, leftDelimiter, rightDelimiter) {
+      var buffer, t1;
+      if (A.isToStringVisiting(iterable))
+        return leftDelimiter + "..." + rightDelimiter;
+      buffer = new A.StringBuffer(leftDelimiter);
+      B.JSArray_methods.add$1($.toStringVisiting, iterable);
+      try {
+        t1 = buffer;
+        t1._contents = A.StringBuffer__writeAll(t1._contents, iterable, ", ");
+      } finally {
+        if (0 >= $.toStringVisiting.length)
+          return A.ioore($.toStringVisiting, -1);
+        $.toStringVisiting.pop();
+      }
+      buffer._contents += rightDelimiter;
+      t1 = buffer._contents;
+      return t1.charCodeAt(0) == 0 ? t1 : t1;
+    },
+    _iterablePartsToStrings(iterable, parts) {
+      var next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision,
+        it = iterable.get$iterator(iterable),
+        $length = 0, count = 0;
+      while (true) {
+        if (!($length < 80 || count < 3))
+          break;
+        if (!it.moveNext$0())
+          return;
+        next = A.S(it.get$current());
+        B.JSArray_methods.add$1(parts, next);
+        $length += next.length + 2;
+        ++count;
+      }
+      if (!it.moveNext$0()) {
+        if (count <= 5)
+          return;
+        if (0 >= parts.length)
+          return A.ioore(parts, -1);
+        ultimateString = parts.pop();
+        if (0 >= parts.length)
+          return A.ioore(parts, -1);
+        penultimateString = parts.pop();
+      } else {
+        penultimate = it.get$current();
+        ++count;
+        if (!it.moveNext$0()) {
+          if (count <= 4) {
+            B.JSArray_methods.add$1(parts, A.S(penultimate));
+            return;
+          }
+          ultimateString = A.S(penultimate);
+          if (0 >= parts.length)
+            return A.ioore(parts, -1);
+          penultimateString = parts.pop();
+          $length += ultimateString.length + 2;
+        } else {
+          ultimate = it.get$current();
+          ++count;
+          for (; it.moveNext$0(); penultimate = ultimate, ultimate = ultimate0) {
+            ultimate0 = it.get$current();
+            ++count;
+            if (count > 100) {
+              while (true) {
+                if (!($length > 75 && count > 3))
+                  break;
+                if (0 >= parts.length)
+                  return A.ioore(parts, -1);
+                $length -= parts.pop().length + 2;
+                --count;
+              }
+              B.JSArray_methods.add$1(parts, "...");
+              return;
+            }
+          }
+          penultimateString = A.S(penultimate);
+          ultimateString = A.S(ultimate);
+          $length += ultimateString.length + penultimateString.length + 4;
+        }
+      }
+      if (count > parts.length + 2) {
+        $length += 5;
+        elision = "...";
+      } else
+        elision = null;
+      while (true) {
+        if (!($length > 80 && parts.length > 3))
+          break;
+        if (0 >= parts.length)
+          return A.ioore(parts, -1);
+        $length -= parts.pop().length + 2;
+        if (elision == null) {
+          $length += 5;
+          elision = "...";
+        }
+      }
+      if (elision != null)
+        B.JSArray_methods.add$1(parts, elision);
+      B.JSArray_methods.add$1(parts, penultimateString);
+      B.JSArray_methods.add$1(parts, ultimateString);
     },
     DateTime: function DateTime(t0, t1) {
       this._value = t0;
@@ -3917,10 +4093,6 @@
     Duration: function Duration(t0) {
       this._duration = t0;
     },
-    Duration_toString_sixDigits: function Duration_toString_sixDigits() {
-    },
-    Duration_toString_twoDigits: function Duration_toString_twoDigits() {
-    },
     Error: function Error() {
     },
     AssertionError: function AssertionError(t0) {
@@ -3928,8 +4100,6 @@
     },
     TypeError: function TypeError() {
     },
-    NullThrownError: function NullThrownError() {
-    },
     ArgumentError: function ArgumentError(t0, t1, t2, t3) {
       var _ = this;
       _._hasValue = t0;
@@ -3970,9 +4140,6 @@
     },
     StackOverflowError: function StackOverflowError() {
     },
-    CyclicInitializationError: function CyclicInitializationError(t0) {
-      this.variableName = t0;
-    },
     _Exception: function _Exception(t0) {
       this.message = t0;
     },
@@ -3993,97 +4160,20 @@
     StringBuffer: function StringBuffer(t0) {
       this._contents = t0;
     },
-    _convertDartToNative_Value: function(value) {
-      var array;
-      if (value == null)
-        return value;
-      if (typeof value == "string" || typeof value == "number" || H._isBool(value))
-        return value;
-      if (type$.Map_dynamic_dynamic._is(value))
-        return P.convertDartToNative_Dictionary(value);
-      if (type$.List_dynamic._is(value)) {
-        array = [];
-        J.forEach$1$ax(value, new P._convertDartToNative_Value_closure(array));
-        value = array;
-      }
-      return value;
-    },
-    convertDartToNative_Dictionary: function(dict) {
-      var object = {};
-      dict.forEach$1(0, new P.convertDartToNative_Dictionary_closure(object));
-      return object;
-    },
-    _AcceptStructuredClone: function _AcceptStructuredClone() {
-    },
-    _AcceptStructuredClone_walk_closure: function _AcceptStructuredClone_walk_closure(t0, t1) {
-      this._box_0 = t0;
-      this.$this = t1;
-    },
-    _convertDartToNative_Value_closure: function _convertDartToNative_Value_closure(t0) {
-      this.array = t0;
-    },
-    convertDartToNative_Dictionary_closure: function convertDartToNative_Dictionary_closure(t0) {
-      this.object = t0;
-    },
-    _AcceptStructuredCloneDart2Js: function _AcceptStructuredCloneDart2Js(t0, t1) {
-      this.values = t0;
-      this.copies = t1;
-      this.mustCopy = false;
-    },
-    promiseToFuture: function(jsPromise, $T) {
-      var t1 = new P._Future($.Zone__current, $T._eval$1("_Future<0>")),
-        completer = new P._AsyncCompleter(t1, $T._eval$1("_AsyncCompleter<0>"));
-      jsPromise.then(H.convertDartClosureToJS(new P.promiseToFuture_closure(completer, $T), 1), H.convertDartClosureToJS(new P.promiseToFuture_closure0(completer), 1));
+    EventSource__factoryEventSource(url, eventSourceInitDict) {
+      var t1 = new EventSource(url, A.convertDartToNative_Dictionary(eventSourceInitDict));
+      t1.toString;
       return t1;
     },
-    NullRejectionException: function NullRejectionException(t0) {
-      this.isUndefined = t0;
-    },
-    promiseToFuture_closure: function promiseToFuture_closure(t0, t1) {
-      this.completer = t0;
-      this.T = t1;
-    },
-    promiseToFuture_closure0: function promiseToFuture_closure0(t0) {
-      this.completer = t0;
-    },
-    _JSRandom: function _JSRandom() {
-    },
-    SvgElement: function SvgElement() {
-    }
-  },
-  W = {
-    EventSource__factoryEventSource: function(url, eventSourceInitDict) {
-      var t1 = new EventSource(url, P.convertDartToNative_Dictionary(eventSourceInitDict));
-      return t1;
-    },
-    HttpRequest_request: function(url, method, sendData, withCredentials) {
-      var t2, t3, t4,
-        t1 = new P._Future($.Zone__current, type$._Future_HttpRequest),
-        completer = new P._AsyncCompleter(t1, type$._AsyncCompleter_HttpRequest),
-        xhr = new XMLHttpRequest();
-      C.HttpRequest_methods.open$3$async(xhr, method, url, true);
-      C.HttpRequest_methods.set$withCredentials(xhr, true);
-      t2 = type$.nullable_void_Function_ProgressEvent;
-      t3 = t2._as(new W.HttpRequest_request_closure(xhr, completer));
-      type$.nullable_void_Function._as(null);
-      t4 = type$.ProgressEvent;
-      W._EventStreamSubscription$(xhr, "load", t3, false, t4);
-      W._EventStreamSubscription$(xhr, "error", t2._as(completer.get$completeError()), false, t4);
-      if (sendData != null)
-        xhr.send(sendData);
-      else
-        xhr.send();
-      return t1;
-    },
-    _EventStreamSubscription$: function(_target, _eventType, onData, _useCapture, $T) {
-      var t1 = onData == null ? null : W._wrapZone(new W._EventStreamSubscription_closure(onData), type$.Event);
-      t1 = new W._EventStreamSubscription(_target, _eventType, t1, false, $T._eval$1("_EventStreamSubscription<0>"));
+    _EventStreamSubscription$(_target, _eventType, onData, _useCapture, $T) {
+      var t1 = onData == null ? null : A._wrapZone(new A._EventStreamSubscription_closure(onData), type$.Event);
+      t1 = new A._EventStreamSubscription(_target, _eventType, t1, false, $T._eval$1("_EventStreamSubscription<0>"));
       t1._tryResume$0();
       return t1;
     },
-    _wrapZone: function(callback, $T) {
+    _wrapZone(callback, $T) {
       var t1 = $.Zone__current;
-      if (t1 === C.C__RootZone)
+      if (t1 === B.C__RootZone)
         return callback;
       return t1.bindUnaryCallbackGuarded$1$1(callback, $T);
     },
@@ -4105,22 +4195,12 @@
     },
     FormElement: function FormElement() {
     },
-    HttpRequest: function HttpRequest() {
-    },
-    HttpRequest_request_closure: function HttpRequest_request_closure(t0, t1) {
-      this.xhr = t0;
-      this.completer = t1;
-    },
-    HttpRequestEventTarget: function HttpRequestEventTarget() {
-    },
     MessageEvent: function MessageEvent() {
     },
     MouseEvent: function MouseEvent() {
     },
     Node: function Node() {
     },
-    ProgressEvent: function ProgressEvent() {
-    },
     SelectElement: function SelectElement() {
     },
     UIEvent: function UIEvent() {
@@ -4156,24 +4236,79 @@
     },
     _EventStreamSubscription_onData_closure: function _EventStreamSubscription_onData_closure(t0) {
       this.handleData = t0;
-    }
-  },
-  S = {AsyncMemoizer: function AsyncMemoizer(t0, t1) {
+    },
+    _convertDartToNative_Value(value) {
+      var array;
+      if (value == null)
+        return value;
+      if (typeof value == "string" || typeof value == "number" || A._isBool(value))
+        return value;
+      if (type$.Map_dynamic_dynamic._is(value))
+        return A.convertDartToNative_Dictionary(value);
+      if (type$.List_dynamic._is(value)) {
+        array = [];
+        J.forEach$1$ax(value, new A._convertDartToNative_Value_closure(array));
+        value = array;
+      }
+      return value;
+    },
+    convertDartToNative_Dictionary(dict) {
+      var object = {};
+      dict.forEach$1(0, new A.convertDartToNative_Dictionary_closure(object));
+      return object;
+    },
+    _AcceptStructuredClone: function _AcceptStructuredClone() {
+    },
+    _AcceptStructuredClone_walk_closure: function _AcceptStructuredClone_walk_closure(t0, t1) {
+      this.$this = t0;
+      this.map = t1;
+    },
+    _convertDartToNative_Value_closure: function _convertDartToNative_Value_closure(t0) {
+      this.array = t0;
+    },
+    convertDartToNative_Dictionary_closure: function convertDartToNative_Dictionary_closure(t0) {
+      this.object = t0;
+    },
+    _AcceptStructuredCloneDart2Js: function _AcceptStructuredCloneDart2Js(t0, t1) {
+      this.values = t0;
+      this.copies = t1;
+      this.mustCopy = false;
+    },
+    promiseToFuture(jsPromise, $T) {
+      var t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>")),
+        completer = new A._AsyncCompleter(t1, $T._eval$1("_AsyncCompleter<0>"));
+      jsPromise.then(A.convertDartClosureToJS(new A.promiseToFuture_closure(completer, $T), 1), A.convertDartClosureToJS(new A.promiseToFuture_closure0(completer), 1));
+      return t1;
+    },
+    promiseToFuture_closure: function promiseToFuture_closure(t0, t1) {
+      this.completer = t0;
+      this.T = t1;
+    },
+    promiseToFuture_closure0: function promiseToFuture_closure0(t0) {
+      this.completer = t0;
+    },
+    NullRejectionException: function NullRejectionException(t0) {
+      this.isUndefined = t0;
+    },
+    _JSRandom: function _JSRandom() {
+    },
+    SvgElement: function SvgElement() {
+    },
+    AsyncMemoizer: function AsyncMemoizer(t0, t1) {
       this._completer = t0;
       this.$ti = t1;
-    }},
-  Y = {Level: function Level(t0, t1) {
+    },
+    Level: function Level(t0, t1) {
       this.name = t0;
       this.value = t1;
-    }},
-  L = {LogRecord: function LogRecord(t0, t1, t2) {
+    },
+    LogRecord: function LogRecord(t0, t1, t2) {
       this.level = t0;
       this.message = t1;
       this.loggerName = t2;
-    }},
-  F = {
-    Logger_Logger: function($name) {
-      return $.Logger__loggers.putIfAbsent$2($name, new F.Logger_Logger_closure($name));
+    },
+    Logger_Logger($name) {
+      return $.Logger__loggers.putIfAbsent$2($name, new A.Logger_Logger_closure($name));
     },
     Logger: function Logger(t0, t1, t2) {
       var _ = this;
@@ -4184,9 +4319,8 @@
     },
     Logger_Logger_closure: function Logger_Logger_closure(t0) {
       this.name = t0;
-    }
-  },
-  O = {Pool: function Pool(t0, t1, t2, t3, t4) {
+    },
+    Pool: function Pool(t0, t1, t2, t3, t4) {
       var _ = this;
       _._requestedResources = t0;
       _._onReleaseCallbacks = t1;
@@ -4195,29 +4329,39 @@
       _._allocatedResources = 0;
       _._timer = null;
       _._closeMemo = t4;
-    }, Pool__runOnRelease_closure: function Pool__runOnRelease_closure(t0) {
+    },
+    Pool__runOnRelease_closure: function Pool__runOnRelease_closure(t0) {
       this.$this = t0;
-    }, Pool__runOnRelease_closure0: function Pool__runOnRelease_closure0(t0) {
+    },
+    Pool__runOnRelease_closure0: function Pool__runOnRelease_closure0(t0) {
       this.$this = t0;
-    }, PoolResource: function PoolResource(t0) {
+    },
+    PoolResource: function PoolResource(t0) {
       this._pool = t0;
       this._released = false;
-    }},
-  M = {
-    SseClient$: function(serverUrl) {
-      var t1 = type$.String;
-      t1 = new M.SseClient(P.StreamController_StreamController(t1), P.StreamController_StreamController(t1), F.Logger_Logger("SseClient"), new P._AsyncCompleter(new P._Future($.Zone__current, type$._Future_dynamic), type$._AsyncCompleter_dynamic));
-      t1.SseClient$1(serverUrl);
+    },
+    SseClient$(serverUrl) {
+      var t3, t4, t5,
+        t1 = type$.String,
+        t2 = A.StreamController_StreamController(t1);
+      t1 = A.StreamController_StreamController(t1);
+      t3 = A.Logger_Logger("SseClient");
+      t4 = $.Zone__current;
+      t5 = A.generateUuidV4();
+      t1 = new A.SseClient(t5, t2, t1, t3, new A._AsyncCompleter(new A._Future(t4, type$._Future_void), type$._AsyncCompleter_void));
+      t1.SseClient$2$debugKey(serverUrl, null);
       return t1;
     },
-    SseClient: function SseClient(t0, t1, t2, t3) {
+    SseClient: function SseClient(t0, t1, t2, t3, t4) {
       var _ = this;
-      _._incomingController = t0;
-      _._outgoingController = t1;
-      _._logger = t2;
-      _._onConnected = t3;
+      _._clientId = t0;
+      _._incomingController = t1;
+      _._outgoingController = t2;
+      _._logger = t3;
+      _._onConnected = t4;
       _._lastMessageId = -1;
-      _._errorTimer = _.__SseClient__serverUrl = _.__SseClient__eventSource = null;
+      _.__SseClient__serverUrl_A = _.__SseClient__eventSource_A = $;
+      _._errorTimer = null;
     },
     SseClient_closure: function SseClient_closure(t0) {
       this.$this = t0;
@@ -4236,140 +4380,167 @@
       this._box_0 = t0;
       this.$this = t1;
       this.message = t2;
-    }
-  },
-  T = {
-    generateUuidV4: function() {
-      var t1 = new T.generateUuidV4__printDigits(),
-        t2 = new T.generateUuidV4__bitsDigits(t1, new T.generateUuidV4__generateBits(C.C__JSRandom)),
-        t3 = C.C__JSRandom.nextInt$1(4);
-      return H.S(t2.call$2(16, 4)) + H.S(t2.call$2(16, 4)) + "-" + H.S(t2.call$2(16, 4)) + "-4" + H.S(t2.call$2(12, 3)) + "-" + H.S(t1.call$2(8 + t3, 1)) + H.S(t2.call$2(12, 3)) + "-" + H.S(t2.call$2(16, 4)) + H.S(t2.call$2(16, 4)) + H.S(t2.call$2(16, 4));
     },
-    generateUuidV4__generateBits: function generateUuidV4__generateBits(t0) {
+    _FetchOptions: function _FetchOptions() {
+    },
+    generateUuidV4() {
+      var t1 = new A.generateUuidV4_printDigits(),
+        t2 = new A.generateUuidV4_bitsDigits(t1, new A.generateUuidV4_generateBits(B.C__JSRandom)),
+        t3 = B.C__JSRandom.nextInt$1(4);
+      return A.S(t2.call$2(16, 4)) + A.S(t2.call$2(16, 4)) + "-" + A.S(t2.call$2(16, 4)) + "-4" + A.S(t2.call$2(12, 3)) + "-" + A.S(t1.call$2(8 + t3, 1)) + A.S(t2.call$2(12, 3)) + "-" + A.S(t2.call$2(16, 4)) + A.S(t2.call$2(16, 4)) + A.S(t2.call$2(16, 4));
+    },
+    generateUuidV4_generateBits: function generateUuidV4_generateBits(t0) {
       this.random = t0;
     },
-    generateUuidV4__printDigits: function generateUuidV4__printDigits() {
+    generateUuidV4_printDigits: function generateUuidV4_printDigits() {
     },
-    generateUuidV4__bitsDigits: function generateUuidV4__bitsDigits(t0, t1) {
-      this._printDigits = t0;
-      this._generateBits = t1;
-    }
-  },
-  R = {StreamChannelMixin: function StreamChannelMixin() {
-    }},
-  E = {
-    main: function() {
-      var t2, t3,
-        channel = M.SseClient$("/test"),
+    generateUuidV4_bitsDigits: function generateUuidV4_bitsDigits(t0, t1) {
+      this.printDigits = t0;
+      this.generateBits = t1;
+    },
+    StreamChannelMixin: function StreamChannelMixin() {
+    },
+    main() {
+      var t2,
+        channel = A.SseClient$("/test"),
         t1 = document.querySelector("button");
       t1.toString;
       t1 = J.get$onClick$x(t1);
       t2 = t1.$ti;
-      t3 = t2._eval$1("~(1)?")._as(new E.main_closure(channel));
-      type$.nullable_void_Function._as(null);
-      W._EventStreamSubscription$(t1._target, t1._eventType, t3, false, t2._precomputed1);
+      A._EventStreamSubscription$(t1._target, t1._eventType, t2._eval$1("~(1)?")._as(new A.main_closure(channel)), false, t2._precomputed1);
       t2 = channel._incomingController;
-      new P._ControllerStream(t2, H._instanceType(t2)._eval$1("_ControllerStream<1>")).listen$1(new E.main_closure0(channel));
+      new A._ControllerStream(t2, A._instanceType(t2)._eval$1("_ControllerStream<1>")).listen$1(new A.main_closure0(channel));
     },
     main_closure: function main_closure(t0) {
       this.channel = t0;
     },
     main_closure0: function main_closure0(t0) {
       this.channel = t0;
+    },
+    throwLateFieldNI(fieldName) {
+      A.throwExpressionWithWrapper(new A.LateError("Field '" + fieldName + "' has not been initialized."), new Error());
+    },
+    throwLateFieldADI(fieldName) {
+      A.throwExpressionWithWrapper(new A.LateError("Field '" + fieldName + "' has been assigned during initialization."), new Error());
     }
-  };
-  var holders = [C, H, J, P, W, S, Y, L, F, O, M, T, R, E];
-  hunkHelpers.setFunctionNamesIfNecessary(holders);
+  },
+  B = {};
+  var holders = [A, J, B];
   var $ = {};
-  H.JS_CONST.prototype = {};
+  A.JS_CONST.prototype = {};
   J.Interceptor.prototype = {
-    $eq: function(receiver, other) {
+    $eq(receiver, other) {
       return receiver === other;
     },
-    get$hashCode: function(receiver) {
-      return H.Primitives_objectHashCode(receiver);
+    get$hashCode(receiver) {
+      return A.Primitives_objectHashCode(receiver);
     },
-    toString$0: function(receiver) {
-      return "Instance of '" + H.Primitives_objectTypeName(receiver) + "'";
+    toString$0(receiver) {
+      return "Instance of '" + A.Primitives_objectTypeName(receiver) + "'";
+    },
+    get$runtimeType(receiver) {
+      return A.createRuntimeType(A._instanceTypeFromConstructor(this));
     }
   };
   J.JSBool.prototype = {
-    toString$0: function(receiver) {
+    toString$0(receiver) {
       return String(receiver);
     },
-    get$hashCode: function(receiver) {
+    get$hashCode(receiver) {
       return receiver ? 519018 : 218159;
     },
+    get$runtimeType(receiver) {
+      return A.createRuntimeType(type$.bool);
+    },
+    $isTrustedGetRuntimeType: 1,
     $isbool: 1
   };
   J.JSNull.prototype = {
-    $eq: function(receiver, other) {
+    $eq(receiver, other) {
       return null == other;
     },
-    toString$0: function(receiver) {
+    toString$0(receiver) {
       return "null";
     },
-    get$hashCode: function(receiver) {
+    get$hashCode(receiver) {
       return 0;
     },
+    $isTrustedGetRuntimeType: 1,
     $isNull: 1
   };
-  J.JavaScriptObject.prototype = {
-    get$hashCode: function(receiver) {
+  J.JavaScriptObject.prototype = {};
+  J.LegacyJavaScriptObject.prototype = {
+    get$hashCode(receiver) {
       return 0;
     },
-    toString$0: function(receiver) {
+    toString$0(receiver) {
       return String(receiver);
     }
   };
   J.PlainJavaScriptObject.prototype = {};
   J.UnknownJavaScriptObject.prototype = {};
   J.JavaScriptFunction.prototype = {
-    toString$0: function(receiver) {
+    toString$0(receiver) {
       var dartClosure = receiver[$.$get$DART_CLOSURE_PROPERTY_NAME()];
       if (dartClosure == null)
-        return this.super$JavaScriptObject$toString(receiver);
+        return this.super$LegacyJavaScriptObject$toString(receiver);
       return "JavaScript function for " + J.toString$0$(dartClosure);
     },
     $isFunction: 1
   };
+  J.JavaScriptBigInt.prototype = {
+    get$hashCode(receiver) {
+      return 0;
+    },
+    toString$0(receiver) {
+      return String(receiver);
+    }
+  };
+  J.JavaScriptSymbol.prototype = {
+    get$hashCode(receiver) {
+      return 0;
+    },
+    toString$0(receiver) {
+      return String(receiver);
+    }
+  };
   J.JSArray.prototype = {
-    add$1: function(receiver, value) {
-      H._arrayInstanceType(receiver)._precomputed1._as(value);
+    add$1(receiver, value) {
+      A._arrayInstanceType(receiver)._precomputed1._as(value);
       if (!!receiver.fixed$length)
-        H.throwExpression(P.UnsupportedError$("add"));
+        A.throwExpression(A.UnsupportedError$("add"));
       receiver.push(value);
     },
-    forEach$1: function(receiver, f) {
+    forEach$1(receiver, f) {
       var end, i;
-      H._arrayInstanceType(receiver)._eval$1("~(1)")._as(f);
+      A._arrayInstanceType(receiver)._eval$1("~(1)")._as(f);
       end = receiver.length;
       for (i = 0; i < end; ++i) {
         f.call$1(receiver[i]);
         if (receiver.length !== end)
-          throw H.wrapException(P.ConcurrentModificationError$(receiver));
+          throw A.wrapException(A.ConcurrentModificationError$(receiver));
       }
     },
-    get$last: function(receiver) {
+    get$last(receiver) {
       var t1 = receiver.length;
       if (t1 > 0)
         return receiver[t1 - 1];
-      throw H.wrapException(H.IterableElementError_noElement());
+      throw A.wrapException(A.IterableElementError_noElement());
     },
-    setRange$4: function(receiver, start, end, iterable, skipCount) {
+    setRange$4(receiver, start, end, iterable, skipCount) {
       var $length, otherList, t1, i;
-      H._arrayInstanceType(receiver)._eval$1("Iterable<1>")._as(iterable);
+      A._arrayInstanceType(receiver)._eval$1("Iterable<1>")._as(iterable);
       if (!!receiver.immutable$list)
-        H.throwExpression(P.UnsupportedError$("setRange"));
-      P.RangeError_checkValidRange(start, end, receiver.length);
+        A.throwExpression(A.UnsupportedError$("setRange"));
+      A.RangeError_checkValidRange(start, end, receiver.length);
       $length = end - start;
       if ($length === 0)
         return;
-      P.RangeError_checkNotNegative(skipCount, "skipCount");
+      A.RangeError_checkNotNegative(skipCount, "skipCount");
       otherList = iterable;
       t1 = J.getInterceptor$asx(otherList);
       if (skipCount + $length > t1.get$length(otherList))
-        throw H.wrapException(H.IterableElementError_tooFew());
+        throw A.wrapException(A.IterableElementError_tooFew());
       if (skipCount < start)
         for (i = $length - 1; i >= 0; --i)
           receiver[start + i] = t1.$index(otherList, skipCount + i);
@@ -4377,33 +4548,32 @@
         for (i = 0; i < $length; ++i)
           receiver[start + i] = t1.$index(otherList, skipCount + i);
     },
-    get$isNotEmpty: function(receiver) {
+    get$isNotEmpty(receiver) {
       return receiver.length !== 0;
     },
-    toString$0: function(receiver) {
-      return P.IterableBase_iterableToFullString(receiver, "[", "]");
+    toString$0(receiver) {
+      return A.Iterable_iterableToFullString(receiver, "[", "]");
     },
-    get$iterator: function(receiver) {
-      return new J.ArrayIterator(receiver, receiver.length, H._arrayInstanceType(receiver)._eval$1("ArrayIterator<1>"));
+    get$iterator(receiver) {
+      return new J.ArrayIterator(receiver, receiver.length, A._arrayInstanceType(receiver)._eval$1("ArrayIterator<1>"));
     },
-    get$hashCode: function(receiver) {
-      return H.Primitives_objectHashCode(receiver);
+    get$hashCode(receiver) {
+      return A.Primitives_objectHashCode(receiver);
     },
-    get$length: function(receiver) {
+    get$length(receiver) {
       return receiver.length;
     },
-    $index: function(receiver, index) {
-      if (index >= receiver.length || index < 0)
-        throw H.wrapException(H.diagnoseIndexError(receiver, index));
+    $index(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        throw A.wrapException(A.diagnoseIndexError(receiver, index));
       return receiver[index];
     },
-    $indexSet: function(receiver, index, value) {
-      H._asInt(index);
-      H._arrayInstanceType(receiver)._precomputed1._as(value);
+    $indexSet(receiver, index, value) {
+      A._arrayInstanceType(receiver)._precomputed1._as(value);
       if (!!receiver.immutable$list)
-        H.throwExpression(P.UnsupportedError$("indexed set"));
-      if (index >= receiver.length || index < 0)
-        throw H.wrapException(H.diagnoseIndexError(receiver, index));
+        A.throwExpression(A.UnsupportedError$("indexed set"));
+      if (!(index >= 0 && index < receiver.length))
+        throw A.wrapException(A.diagnoseIndexError(receiver, index));
       receiver[index] = value;
     },
     $isIterable: 1,
@@ -4411,15 +4581,18 @@
   };
   J.JSUnmodifiableArray.prototype = {};
   J.ArrayIterator.prototype = {
-    get$current: function() {
-      return this.$ti._precomputed1._as(this._current);
+    get$current() {
+      var t1 = this._current;
+      return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
     },
-    moveNext$0: function() {
+    moveNext$0() {
       var t2, _this = this,
         t1 = _this._iterable,
         $length = t1.length;
-      if (_this._length !== $length)
-        throw H.wrapException(H.throwConcurrentModificationError(t1));
+      if (_this._length !== $length) {
+        t1 = A.throwConcurrentModificationError(t1);
+        throw A.wrapException(t1);
+      }
       t2 = _this._index;
       if (t2 >= $length) {
         _this.set$_current(null);
@@ -4429,42 +4602,46 @@
       ++_this._index;
       return true;
     },
-    set$_current: function(_current) {
+    set$_current(_current) {
       this._current = this.$ti._eval$1("1?")._as(_current);
     }
   };
   J.JSNumber.prototype = {
-    toRadixString$1: function(receiver, radix) {
-      var result, match, t1, exponent;
+    toRadixString$1(receiver, radix) {
+      var result, t1, t2, match, exponent;
       if (radix < 2 || radix > 36)
-        throw H.wrapException(P.RangeError$range(radix, 2, 36, "radix", null));
+        throw A.wrapException(A.RangeError$range(radix, 2, 36, "radix", null));
       result = receiver.toString(radix);
-      if (C.JSString_methods.codeUnitAt$1(result, result.length - 1) !== 41)
+      t1 = result.length;
+      t2 = t1 - 1;
+      if (!(t2 >= 0))
+        return A.ioore(result, t2);
+      if (result.charCodeAt(t2) !== 41)
         return result;
       match = /^([\da-z]+)(?:\.([\da-z]+))?\(e\+(\d+)\)$/.exec(result);
       if (match == null)
-        H.throwExpression(P.UnsupportedError$("Unexpected toString result: " + result));
+        A.throwExpression(A.UnsupportedError$("Unexpected toString result: " + result));
       t1 = match.length;
       if (1 >= t1)
-        return H.ioore(match, 1);
+        return A.ioore(match, 1);
       result = match[1];
       if (3 >= t1)
-        return H.ioore(match, 3);
+        return A.ioore(match, 3);
       exponent = +match[3];
       t1 = match[2];
       if (t1 != null) {
         result += t1;
         exponent -= t1.length;
       }
-      return result + C.JSString_methods.$mul("0", exponent);
+      return result + B.JSString_methods.$mul("0", exponent);
     },
-    toString$0: function(receiver) {
+    toString$0(receiver) {
       if (receiver === 0 && 1 / receiver < 0)
         return "-0.0";
       else
         return "" + receiver;
     },
-    get$hashCode: function(receiver) {
+    get$hashCode(receiver) {
       var absolute, floorLog2, factor, scaled,
         intValue = receiver | 0;
       if (receiver === intValue)
@@ -4475,10 +4652,10 @@
       scaled = absolute < 1 ? absolute / factor : factor / absolute;
       return ((scaled * 9007199254740992 | 0) + (scaled * 3542243181176521 | 0)) * 599197 + floorLog2 * 1259 & 536870911;
     },
-    _tdivFast$1: function(receiver, other) {
+    _tdivFast$1(receiver, other) {
       return (receiver | 0) === receiver ? receiver / other | 0 : this._tdivSlow$1(receiver, other);
     },
-    _tdivSlow$1: function(receiver, other) {
+    _tdivSlow$1(receiver, other) {
       var quotient = receiver / other;
       if (quotient >= -2147483648 && quotient <= 2147483647)
         return quotient | 0;
@@ -4487,12 +4664,12 @@
           return Math.floor(quotient);
       } else if (quotient > -1 / 0)
         return Math.ceil(quotient);
-      throw H.wrapException(P.UnsupportedError$("Result of truncating division is " + H.S(quotient) + ": " + H.S(receiver) + " ~/ " + other));
+      throw A.wrapException(A.UnsupportedError$("Result of truncating division is " + A.S(quotient) + ": " + A.S(receiver) + " ~/ " + other));
     },
-    _shlPositive$1: function(receiver, other) {
+    _shlPositive$1(receiver, other) {
       return other > 31 ? 0 : receiver << other >>> 0;
     },
-    _shrOtherPositive$1: function(receiver, other) {
+    _shrOtherPositive$1(receiver, other) {
       var t1;
       if (receiver > 0)
         t1 = this._shrBothPositive$1(receiver, other);
@@ -4502,47 +4679,60 @@
       }
       return t1;
     },
-    _shrBothPositive$1: function(receiver, other) {
+    _shrBothPositive$1(receiver, other) {
       return other > 31 ? 0 : receiver >>> other;
     },
+    get$runtimeType(receiver) {
+      return A.createRuntimeType(type$.num);
+    },
     $isdouble: 1,
     $isnum: 1
   };
-  J.JSInt.prototype = {$isint: 1};
-  J.JSNumNotInt.prototype = {};
+  J.JSInt.prototype = {
+    get$runtimeType(receiver) {
+      return A.createRuntimeType(type$.int);
+    },
+    $isTrustedGetRuntimeType: 1,
+    $isint: 1
+  };
+  J.JSNumNotInt.prototype = {
+    get$runtimeType(receiver) {
+      return A.createRuntimeType(type$.double);
+    },
+    $isTrustedGetRuntimeType: 1
+  };
   J.JSString.prototype = {
-    codeUnitAt$1: function(receiver, index) {
-      if (index < 0)
-        throw H.wrapException(H.diagnoseIndexError(receiver, index));
-      if (index >= receiver.length)
-        H.throwExpression(H.diagnoseIndexError(receiver, index));
-      return receiver.charCodeAt(index);
-    },
-    _codeUnitAt$1: function(receiver, index) {
-      if (index >= receiver.length)
-        throw H.wrapException(H.diagnoseIndexError(receiver, index));
-      return receiver.charCodeAt(index);
-    },
-    matchAsPrefix$2: function(receiver, string, start) {
-      var t1, i, _null = null;
+    matchAsPrefix$2(receiver, string, start) {
+      var t1, t2, i, t3, _null = null;
       if (start < 0 || start > string.length)
-        throw H.wrapException(P.RangeError$range(start, 0, string.length, _null, _null));
+        throw A.wrapException(A.RangeError$range(start, 0, string.length, _null, _null));
       t1 = receiver.length;
-      if (start + t1 > string.length)
+      t2 = string.length;
+      if (start + t1 > t2)
         return _null;
-      for (i = 0; i < t1; ++i)
-        if (this.codeUnitAt$1(string, start + i) !== this._codeUnitAt$1(receiver, i))
+      for (i = 0; i < t1; ++i) {
+        t3 = start + i;
+        if (!(t3 >= 0 && t3 < t2))
+          return A.ioore(string, t3);
+        if (string.charCodeAt(t3) !== receiver.charCodeAt(i))
           return _null;
-      return new H.StringMatch(start, receiver);
+      }
+      return new A.StringMatch(start, receiver);
     },
-    $add: function(receiver, other) {
+    $add(receiver, other) {
       return receiver + other;
     },
-    startsWith$2: function(receiver, pattern, index) {
+    endsWith$1(receiver, other) {
+      var otherLength = other.length,
+        t1 = receiver.length;
+      if (otherLength > t1)
+        return false;
+      return other === this.substring$1(receiver, t1 - otherLength);
+    },
+    startsWith$2(receiver, pattern, index) {
       var endIndex;
-      type$.Pattern._as(pattern);
       if (index < 0 || index > receiver.length)
-        throw H.wrapException(P.RangeError$range(index, 0, receiver.length, null, null));
+        throw A.wrapException(A.RangeError$range(index, 0, receiver.length, null, null));
       if (typeof pattern == "string") {
         endIndex = index + pattern.length;
         if (endIndex > receiver.length)
@@ -4551,31 +4741,23 @@
       }
       return J.matchAsPrefix$2$s(pattern, receiver, index) != null;
     },
-    startsWith$1: function($receiver, pattern) {
+    startsWith$1($receiver, pattern) {
       return this.startsWith$2($receiver, pattern, 0);
     },
-    substring$2: function(receiver, startIndex, endIndex) {
-      if (endIndex == null)
-        endIndex = receiver.length;
-      if (startIndex < 0)
-        throw H.wrapException(P.RangeError$value(startIndex, null));
-      if (startIndex > endIndex)
-        throw H.wrapException(P.RangeError$value(startIndex, null));
-      if (endIndex > receiver.length)
-        throw H.wrapException(P.RangeError$value(endIndex, null));
-      return receiver.substring(startIndex, endIndex);
+    substring$2(receiver, start, end) {
+      return receiver.substring(start, A.RangeError_checkValidRange(start, end, receiver.length));
     },
-    substring$1: function($receiver, startIndex) {
-      return this.substring$2($receiver, startIndex, null);
+    substring$1($receiver, start) {
+      return this.substring$2($receiver, start, null);
     },
-    $mul: function(receiver, times) {
+    $mul(receiver, times) {
       var s, result;
       if (0 >= times)
         return "";
       if (times === 1 || receiver.length === 0)
         return receiver;
       if (times !== times >>> 0)
-        throw H.wrapException(C.C_OutOfMemoryError);
+        throw A.wrapException(B.C_OutOfMemoryError);
       for (s = receiver, result = ""; true;) {
         if ((times & 1) === 1)
           result = s + result;
@@ -4586,31 +4768,31 @@
       }
       return result;
     },
-    padLeft$2: function(receiver, width, padding) {
+    padLeft$2(receiver, width, padding) {
       var delta = width - receiver.length;
       if (delta <= 0)
         return receiver;
       return this.$mul(padding, delta) + receiver;
     },
-    lastIndexOf$2: function(receiver, pattern, start) {
+    lastIndexOf$2(receiver, pattern, start) {
       var t1, t2;
       if (start == null)
         start = receiver.length;
       else if (start < 0 || start > receiver.length)
-        throw H.wrapException(P.RangeError$range(start, 0, receiver.length, null, null));
+        throw A.wrapException(A.RangeError$range(start, 0, receiver.length, null, null));
       t1 = pattern.length;
       t2 = receiver.length;
       if (start + t1 > t2)
         start = t2 - t1;
       return receiver.lastIndexOf(pattern, start);
     },
-    lastIndexOf$1: function($receiver, pattern) {
+    lastIndexOf$1($receiver, pattern) {
       return this.lastIndexOf$2($receiver, pattern, null);
     },
-    toString$0: function(receiver) {
+    toString$0(receiver) {
       return receiver;
     },
-    get$hashCode: function(receiver) {
+    get$hashCode(receiver) {
       var t1, hash, i;
       for (t1 = receiver.length, hash = 0, i = 0; i < t1; ++i) {
         hash = hash + receiver.charCodeAt(i) & 536870911;
@@ -4621,45 +4803,49 @@
       hash ^= hash >> 11;
       return hash + ((hash & 16383) << 15) & 536870911;
     },
-    get$length: function(receiver) {
+    get$runtimeType(receiver) {
+      return A.createRuntimeType(type$.String);
+    },
+    get$length(receiver) {
       return receiver.length;
     },
+    $isTrustedGetRuntimeType: 1,
     $isPattern: 1,
     $isString: 1
   };
-  H.LateError.prototype = {
-    toString$0: function(_) {
-      var t1 = "LateInitializationError: " + this._message;
-      return t1;
+  A.LateError.prototype = {
+    toString$0(_) {
+      return "LateInitializationError: " + this._message;
     }
   };
-  H.nullFuture_closure.prototype = {
-    call$0: function() {
-      return P.Future_Future$value(null, type$.Null);
+  A.nullFuture_closure.prototype = {
+    call$0() {
+      return A.Future_Future$value(null, type$.Null);
     },
     $signature: 7
   };
-  H.EfficientLengthIterable.prototype = {};
-  H.ListIterable.prototype = {
-    get$iterator: function(_) {
+  A.EfficientLengthIterable.prototype = {};
+  A.ListIterable.prototype = {
+    get$iterator(_) {
       var _this = this;
-      return new H.ListIterator(_this, _this.get$length(_this), H._instanceType(_this)._eval$1("ListIterator<ListIterable.E>"));
+      return new A.ListIterator(_this, _this.get$length(_this), A._instanceType(_this)._eval$1("ListIterator<ListIterable.E>"));
     },
-    get$isEmpty: function(_) {
+    get$isEmpty(_) {
       return this.get$length(this) === 0;
     }
   };
-  H.ListIterator.prototype = {
-    get$current: function() {
-      return this.$ti._precomputed1._as(this.__internal$_current);
+  A.ListIterator.prototype = {
+    get$current() {
+      var t1 = this.__internal$_current;
+      return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
     },
-    moveNext$0: function() {
+    moveNext$0() {
       var t3, _this = this,
         t1 = _this.__internal$_iterable,
         t2 = J.getInterceptor$asx(t1),
         $length = t2.get$length(t1);
       if (_this.__internal$_length !== $length)
-        throw H.wrapException(P.ConcurrentModificationError$(t1));
+        throw A.wrapException(A.ConcurrentModificationError$(t1));
       t3 = _this.__internal$_index;
       if (t3 >= $length) {
         _this.set$__internal$_current(null);
@@ -4669,13 +4855,13 @@
       ++_this.__internal$_index;
       return true;
     },
-    set$__internal$_current: function(_current) {
+    set$__internal$_current(_current) {
       this.__internal$_current = this.$ti._eval$1("1?")._as(_current);
     }
   };
-  H.FixedLengthListMixin.prototype = {};
-  H.TypeErrorDecoder.prototype = {
-    matchTypeError$1: function(message) {
+  A.FixedLengthListMixin.prototype = {};
+  A.TypeErrorDecoder.prototype = {
+    matchTypeError$1(message) {
       var result, t1, _this = this,
         match = new RegExp(_this._pattern).exec(message);
       if (match == null)
@@ -4699,16 +4885,13 @@
       return result;
     }
   };
-  H.NullError.prototype = {
-    toString$0: function(_) {
-      var t1 = this._method;
-      if (t1 == null)
-        return "NoSuchMethodError: " + this.__js_helper$_message;
-      return "NoSuchMethodError: method not found: '" + t1 + "' on null";
+  A.NullError.prototype = {
+    toString$0(_) {
+      return "Null check operator used on a null value";
     }
   };
-  H.JsNoSuchMethodError.prototype = {
-    toString$0: function(_) {
+  A.JsNoSuchMethodError.prototype = {
+    toString$0(_) {
       var t2, _this = this,
         _s38_ = "NoSuchMethodError: method not found: '",
         t1 = _this._method;
@@ -4720,20 +4903,20 @@
       return _s38_ + t1 + "' on '" + t2 + "' (" + _this.__js_helper$_message + ")";
     }
   };
-  H.UnknownJsTypeError.prototype = {
-    toString$0: function(_) {
+  A.UnknownJsTypeError.prototype = {
+    toString$0(_) {
       var t1 = this.__js_helper$_message;
       return t1.length === 0 ? "Error" : "Error: " + t1;
     }
   };
-  H.NullThrownFromJavaScriptException.prototype = {
-    toString$0: function(_) {
+  A.NullThrownFromJavaScriptException.prototype = {
+    toString$0(_) {
       return "Throw of null ('" + (this._irritant === null ? "null" : "undefined") + "' from JavaScript)";
     }
   };
-  H.ExceptionAndStackTrace.prototype = {};
-  H._StackTrace.prototype = {
-    toString$0: function(_) {
+  A.ExceptionAndStackTrace.prototype = {};
+  A._StackTrace.prototype = {
+    toString$0(_) {
       var trace,
         t1 = this._trace;
       if (t1 != null)
@@ -4744,131 +4927,123 @@
     },
     $isStackTrace: 1
   };
-  H.Closure.prototype = {
-    toString$0: function(_) {
+  A.Closure.prototype = {
+    toString$0(_) {
       var $constructor = this.constructor,
         $name = $constructor == null ? null : $constructor.name;
-      return "Closure '" + H.unminifyOrTag($name == null ? "unknown" : $name) + "'";
+      return "Closure '" + A.unminifyOrTag($name == null ? "unknown" : $name) + "'";
     },
     $isFunction: 1,
-    get$$call: function() {
+    get$$call() {
       return this;
     },
     "call*": "call$1",
     $requiredArgCount: 1,
     $defaultValues: null
   };
-  H.TearOffClosure.prototype = {};
-  H.StaticClosure.prototype = {
-    toString$0: function(_) {
+  A.Closure0Args.prototype = {"call*": "call$0", $requiredArgCount: 0};
+  A.Closure2Args.prototype = {"call*": "call$2", $requiredArgCount: 2};
+  A.TearOffClosure.prototype = {};
+  A.StaticClosure.prototype = {
+    toString$0(_) {
       var $name = this.$static_name;
       if ($name == null)
         return "Closure of unknown static method";
-      return "Closure '" + H.unminifyOrTag($name) + "'";
+      return "Closure '" + A.unminifyOrTag($name) + "'";
     }
   };
-  H.BoundClosure.prototype = {
-    $eq: function(_, other) {
-      var _this = this;
+  A.BoundClosure.prototype = {
+    $eq(_, other) {
       if (other == null)
         return false;
-      if (_this === other)
+      if (this === other)
         return true;
-      if (!(other instanceof H.BoundClosure))
+      if (!(other instanceof A.BoundClosure))
         return false;
-      return _this._self === other._self && _this.__js_helper$_target === other.__js_helper$_target && _this._receiver === other._receiver;
+      return this.$_target === other.$_target && this._receiver === other._receiver;
     },
-    get$hashCode: function(_) {
-      var receiverHashCode,
-        t1 = this._receiver;
-      if (t1 == null)
-        receiverHashCode = H.Primitives_objectHashCode(this._self);
-      else
-        receiverHashCode = typeof t1 !== "object" ? J.get$hashCode$(t1) : H.Primitives_objectHashCode(t1);
-      return (receiverHashCode ^ H.Primitives_objectHashCode(this.__js_helper$_target)) >>> 0;
+    get$hashCode(_) {
+      return (A.objectHashCode(this._receiver) ^ A.Primitives_objectHashCode(this.$_target)) >>> 0;
     },
-    toString$0: function(_) {
-      var receiver = this._receiver;
-      if (receiver == null)
-        receiver = this._self;
-      return "Closure '" + H.S(this._name) + "' of " + ("Instance of '" + H.Primitives_objectTypeName(type$.Object._as(receiver)) + "'");
+    toString$0(_) {
+      return "Closure '" + this.$_name + "' of " + ("Instance of '" + A.Primitives_objectTypeName(this._receiver) + "'");
     }
   };
-  H.RuntimeError.prototype = {
-    toString$0: function(_) {
+  A._CyclicInitializationError.prototype = {
+    toString$0(_) {
+      return "Reading static variable '" + this.variableName + "' during its initialization";
+    }
+  };
+  A.RuntimeError.prototype = {
+    toString$0(_) {
       return "RuntimeError: " + this.message;
     }
   };
-  H._AssertionError.prototype = {
-    toString$0: function(_) {
-      return "Assertion failed: " + P.Error_safeToString(this.message);
-    }
-  };
-  H.JsLinkedHashMap.prototype = {
-    get$length: function(_) {
+  A.JsLinkedHashMap.prototype = {
+    get$length(_) {
       return this.__js_helper$_length;
     },
-    get$isEmpty: function(_) {
+    get$isEmpty(_) {
       return this.__js_helper$_length === 0;
     },
-    get$keys: function() {
-      return new H.LinkedHashMapKeyIterable(this, H._instanceType(this)._eval$1("LinkedHashMapKeyIterable<1>"));
+    get$keys() {
+      return new A.LinkedHashMapKeyIterable(this, this.$ti._eval$1("LinkedHashMapKeyIterable<1>"));
     },
-    containsKey$1: function(key) {
+    containsKey$1(key) {
       var strings = this._strings;
       if (strings == null)
         return false;
-      return this._containsTableEntry$2(strings, key);
+      return strings[key] != null;
     },
-    $index: function(_, key) {
-      var strings, cell, t1, nums, _this = this, _null = null;
+    $index(_, key) {
+      var strings, cell, t1, nums, _null = null;
       if (typeof key == "string") {
-        strings = _this._strings;
+        strings = this._strings;
         if (strings == null)
           return _null;
-        cell = _this._getTableCell$2(strings, key);
+        cell = strings[key];
         t1 = cell == null ? _null : cell.hashMapCellValue;
         return t1;
-      } else if (typeof key == "number" && (key & 0x3ffffff) === key) {
-        nums = _this._nums;
+      } else if (typeof key == "number" && (key & 0x3fffffff) === key) {
+        nums = this._nums;
         if (nums == null)
           return _null;
-        cell = _this._getTableCell$2(nums, key);
+        cell = nums[key];
         t1 = cell == null ? _null : cell.hashMapCellValue;
         return t1;
       } else
-        return _this.internalGet$1(key);
+        return this.internalGet$1(key);
     },
-    internalGet$1: function(key) {
+    internalGet$1(key) {
       var bucket, index,
         rest = this.__js_helper$_rest;
       if (rest == null)
         return null;
-      bucket = this._getTableBucket$2(rest, J.get$hashCode$(key) & 0x3ffffff);
+      bucket = rest[J.get$hashCode$(key) & 1073741823];
       index = this.internalFindBucketIndex$2(bucket, key);
       if (index < 0)
         return null;
       return bucket[index].hashMapCellValue;
     },
-    $indexSet: function(_, key, value) {
+    $indexSet(_, key, value) {
       var strings, nums, rest, hash, bucket, index, _this = this,
-        t1 = H._instanceType(_this);
+        t1 = _this.$ti;
       t1._precomputed1._as(key);
       t1._rest[1]._as(value);
       if (typeof key == "string") {
         strings = _this._strings;
         _this._addHashTableEntry$3(strings == null ? _this._strings = _this._newHashTable$0() : strings, key, value);
-      } else if (typeof key == "number" && (key & 0x3ffffff) === key) {
+      } else if (typeof key == "number" && (key & 0x3fffffff) === key) {
         nums = _this._nums;
         _this._addHashTableEntry$3(nums == null ? _this._nums = _this._newHashTable$0() : nums, key, value);
       } else {
         rest = _this.__js_helper$_rest;
         if (rest == null)
           rest = _this.__js_helper$_rest = _this._newHashTable$0();
-        hash = J.get$hashCode$(key) & 0x3ffffff;
-        bucket = _this._getTableBucket$2(rest, hash);
+        hash = J.get$hashCode$(key) & 1073741823;
+        bucket = rest[hash];
         if (bucket == null)
-          _this._setTableEntry$3(rest, hash, [_this._newLinkedCell$2(key, value)]);
+          rest[hash] = [_this._newLinkedCell$2(key, value)];
         else {
           index = _this.internalFindBucketIndex$2(bucket, key);
           if (index >= 0)
@@ -4878,53 +5053,55 @@
         }
       }
     },
-    putIfAbsent$2: function(key, ifAbsent) {
-      var value, _this = this,
-        t1 = H._instanceType(_this);
+    putIfAbsent$2(key, ifAbsent) {
+      var t2, value, _this = this,
+        t1 = _this.$ti;
       t1._precomputed1._as(key);
       t1._eval$1("2()")._as(ifAbsent);
-      if (_this.containsKey$1(key))
-        return t1._rest[1]._as(_this.$index(0, key));
+      if (_this.containsKey$1(key)) {
+        t2 = _this.$index(0, key);
+        return t2 == null ? t1._rest[1]._as(t2) : t2;
+      }
       value = ifAbsent.call$0();
       _this.$indexSet(0, key, value);
       return value;
     },
-    forEach$1: function(_, action) {
+    forEach$1(_, action) {
       var cell, modifications, _this = this;
-      H._instanceType(_this)._eval$1("~(1,2)")._as(action);
+      _this.$ti._eval$1("~(1,2)")._as(action);
       cell = _this._first;
       modifications = _this._modifications;
       for (; cell != null;) {
         action.call$2(cell.hashMapCellKey, cell.hashMapCellValue);
         if (modifications !== _this._modifications)
-          throw H.wrapException(P.ConcurrentModificationError$(_this));
+          throw A.wrapException(A.ConcurrentModificationError$(_this));
         cell = cell._next;
       }
     },
-    _addHashTableEntry$3: function(table, key, value) {
-      var cell, _this = this,
-        t1 = H._instanceType(_this);
+    _addHashTableEntry$3(table, key, value) {
+      var cell,
+        t1 = this.$ti;
       t1._precomputed1._as(key);
       t1._rest[1]._as(value);
-      cell = _this._getTableCell$2(table, key);
+      cell = table[key];
       if (cell == null)
-        _this._setTableEntry$3(table, key, _this._newLinkedCell$2(key, value));
+        table[key] = this._newLinkedCell$2(key, value);
       else
         cell.hashMapCellValue = value;
     },
-    _newLinkedCell$2: function(key, value) {
+    _newLinkedCell$2(key, value) {
       var _this = this,
-        t1 = H._instanceType(_this),
-        cell = new H.LinkedHashMapCell(t1._precomputed1._as(key), t1._rest[1]._as(value));
+        t1 = _this.$ti,
+        cell = new A.LinkedHashMapCell(t1._precomputed1._as(key), t1._rest[1]._as(value));
       if (_this._first == null)
         _this._first = _this._last = cell;
       else
         _this._last = _this._last._next = cell;
       ++_this.__js_helper$_length;
-      _this._modifications = _this._modifications + 1 & 67108863;
+      _this._modifications = _this._modifications + 1 & 1073741823;
       return cell;
     },
-    internalFindBucketIndex$2: function(bucket, key) {
+    internalFindBucketIndex$2(bucket, key) {
       var $length, i;
       if (bucket == null)
         return -1;
@@ -4934,57 +5111,41 @@
           return i;
       return -1;
     },
-    toString$0: function(_) {
-      return P.MapBase_mapToString(this);
+    toString$0(_) {
+      return A.MapBase_mapToString(this);
     },
-    _getTableCell$2: function(table, key) {
-      return table[key];
-    },
-    _getTableBucket$2: function(table, key) {
-      return table[key];
-    },
-    _setTableEntry$3: function(table, key, value) {
-      table[key] = value;
-    },
-    _deleteTableEntry$2: function(table, key) {
-      delete table[key];
-    },
-    _containsTableEntry$2: function(table, key) {
-      return this._getTableCell$2(table, key) != null;
-    },
-    _newHashTable$0: function() {
-      var _s20_ = "<non-identifier-key>",
-        table = Object.create(null);
-      this._setTableEntry$3(table, _s20_, table);
-      this._deleteTableEntry$2(table, _s20_);
+    _newHashTable$0() {
+      var table = Object.create(null);
+      table["<non-identifier-key>"] = table;
+      delete table["<non-identifier-key>"];
       return table;
     },
     $isLinkedHashMap: 1
   };
-  H.LinkedHashMapCell.prototype = {};
-  H.LinkedHashMapKeyIterable.prototype = {
-    get$length: function(_) {
+  A.LinkedHashMapCell.prototype = {};
+  A.LinkedHashMapKeyIterable.prototype = {
+    get$length(_) {
       return this._map.__js_helper$_length;
     },
-    get$isEmpty: function(_) {
+    get$isEmpty(_) {
       return this._map.__js_helper$_length === 0;
     },
-    get$iterator: function(_) {
+    get$iterator(_) {
       var t1 = this._map,
-        t2 = new H.LinkedHashMapKeyIterator(t1, t1._modifications, this.$ti._eval$1("LinkedHashMapKeyIterator<1>"));
+        t2 = new A.LinkedHashMapKeyIterator(t1, t1._modifications, this.$ti._eval$1("LinkedHashMapKeyIterator<1>"));
       t2._cell = t1._first;
       return t2;
     }
   };
-  H.LinkedHashMapKeyIterator.prototype = {
-    get$current: function() {
-      return this.$ti._precomputed1._as(this.__js_helper$_current);
+  A.LinkedHashMapKeyIterator.prototype = {
+    get$current() {
+      return this.__js_helper$_current;
     },
-    moveNext$0: function() {
+    moveNext$0() {
       var cell, _this = this,
         t1 = _this._map;
       if (_this._modifications !== t1._modifications)
-        throw H.wrapException(P.ConcurrentModificationError$(t1));
+        throw A.wrapException(A.ConcurrentModificationError$(t1));
       cell = _this._cell;
       if (cell == null) {
         _this.set$__js_helper$_current(null);
@@ -4995,129 +5156,184 @@
         return true;
       }
     },
-    set$__js_helper$_current: function(_current) {
+    set$__js_helper$_current(_current) {
       this.__js_helper$_current = this.$ti._eval$1("1?")._as(_current);
     }
   };
-  H.initHooks_closure.prototype = {
-    call$1: function(o) {
+  A.initHooks_closure.prototype = {
+    call$1(o) {
       return this.getTag(o);
     },
     $signature: 8
   };
-  H.initHooks_closure0.prototype = {
-    call$2: function(o, tag) {
+  A.initHooks_closure0.prototype = {
+    call$2(o, tag) {
       return this.getUnknownTag(o, tag);
     },
+    $signature: 12
+  };
+  A.initHooks_closure1.prototype = {
+    call$1(tag) {
+      return this.prototypeForTag(A._asString(tag));
+    },
     $signature: 13
   };
-  H.initHooks_closure1.prototype = {
-    call$1: function(tag) {
-      return this.prototypeForTag(H._asString(tag));
+  A.StringMatch.prototype = {};
+  A.NativeByteBuffer.prototype = {
+    get$runtimeType(receiver) {
+      return B.Type_ByteBuffer_RkP;
     },
-    $signature: 14
+    $isTrustedGetRuntimeType: 1
   };
-  H.StringMatch.prototype = {};
-  H.NativeTypedData.prototype = {};
-  H.NativeTypedArray.prototype = {
-    get$length: function(receiver) {
+  A.NativeTypedData.prototype = {};
+  A.NativeByteData.prototype = {
+    get$runtimeType(receiver) {
+      return B.Type_ByteData_zNC;
+    },
+    $isTrustedGetRuntimeType: 1
+  };
+  A.NativeTypedArray.prototype = {
+    get$length(receiver) {
       return receiver.length;
     },
     $isJavaScriptIndexingBehavior: 1
   };
-  H.NativeTypedArrayOfDouble.prototype = {
-    $index: function(receiver, index) {
-      H._checkValidIndex(index, receiver, receiver.length);
+  A.NativeTypedArrayOfDouble.prototype = {
+    $index(receiver, index) {
+      A._checkValidIndex(index, receiver, receiver.length);
       return receiver[index];
     },
-    $indexSet: function(receiver, index, value) {
-      H._asInt(index);
-      H._asDouble(value);
-      H._checkValidIndex(index, receiver, receiver.length);
+    $indexSet(receiver, index, value) {
+      A._asDouble(value);
+      A._checkValidIndex(index, receiver, receiver.length);
       receiver[index] = value;
     },
     $isIterable: 1,
     $isList: 1
   };
-  H.NativeTypedArrayOfInt.prototype = {
-    $indexSet: function(receiver, index, value) {
-      H._asInt(index);
-      H._asInt(value);
-      H._checkValidIndex(index, receiver, receiver.length);
+  A.NativeTypedArrayOfInt.prototype = {
+    $indexSet(receiver, index, value) {
+      A._asInt(value);
+      A._checkValidIndex(index, receiver, receiver.length);
       receiver[index] = value;
     },
     $isIterable: 1,
     $isList: 1
   };
-  H.NativeInt16List.prototype = {
-    $index: function(receiver, index) {
-      H._checkValidIndex(index, receiver, receiver.length);
-      return receiver[index];
-    }
+  A.NativeFloat32List.prototype = {
+    get$runtimeType(receiver) {
+      return B.Type_Float32List_LB7;
+    },
+    $isTrustedGetRuntimeType: 1
   };
-  H.NativeInt32List.prototype = {
-    $index: function(receiver, index) {
-      H._checkValidIndex(index, receiver, receiver.length);
-      return receiver[index];
-    }
+  A.NativeFloat64List.prototype = {
+    get$runtimeType(receiver) {
+      return B.Type_Float64List_LB7;
+    },
+    $isTrustedGetRuntimeType: 1
   };
-  H.NativeInt8List.prototype = {
-    $index: function(receiver, index) {
-      H._checkValidIndex(index, receiver, receiver.length);
+  A.NativeInt16List.prototype = {
+    get$runtimeType(receiver) {
+      return B.Type_Int16List_uXf;
+    },
+    $index(receiver, index) {
+      A._checkValidIndex(index, receiver, receiver.length);
       return receiver[index];
-    }
+    },
+    $isTrustedGetRuntimeType: 1
   };
-  H.NativeUint16List.prototype = {
-    $index: function(receiver, index) {
-      H._checkValidIndex(index, receiver, receiver.length);
+  A.NativeInt32List.prototype = {
+    get$runtimeType(receiver) {
+      return B.Type_Int32List_O50;
+    },
+    $index(receiver, index) {
+      A._checkValidIndex(index, receiver, receiver.length);
       return receiver[index];
-    }
+    },
+    $isTrustedGetRuntimeType: 1
   };
-  H.NativeUint32List.prototype = {
-    $index: function(receiver, index) {
-      H._checkValidIndex(index, receiver, receiver.length);
+  A.NativeInt8List.prototype = {
+    get$runtimeType(receiver) {
+      return B.Type_Int8List_ekJ;
+    },
+    $index(receiver, index) {
+      A._checkValidIndex(index, receiver, receiver.length);
       return receiver[index];
-    }
+    },
+    $isTrustedGetRuntimeType: 1
   };
-  H.NativeUint8ClampedList.prototype = {
-    get$length: function(receiver) {
+  A.NativeUint16List.prototype = {
+    get$runtimeType(receiver) {
+      return B.Type_Uint16List_2bx;
+    },
+    $index(receiver, index) {
+      A._checkValidIndex(index, receiver, receiver.length);
+      return receiver[index];
+    },
+    $isTrustedGetRuntimeType: 1
+  };
+  A.NativeUint32List.prototype = {
+    get$runtimeType(receiver) {
+      return B.Type_Uint32List_2bx;
+    },
+    $index(receiver, index) {
+      A._checkValidIndex(index, receiver, receiver.length);
+      return receiver[index];
+    },
+    $isTrustedGetRuntimeType: 1
+  };
+  A.NativeUint8ClampedList.prototype = {
+    get$runtimeType(receiver) {
+      return B.Type_Uint8ClampedList_Jik;
+    },
+    get$length(receiver) {
       return receiver.length;
     },
-    $index: function(receiver, index) {
-      H._checkValidIndex(index, receiver, receiver.length);
+    $index(receiver, index) {
+      A._checkValidIndex(index, receiver, receiver.length);
       return receiver[index];
-    }
+    },
+    $isTrustedGetRuntimeType: 1
   };
-  H.NativeUint8List.prototype = {
-    get$length: function(receiver) {
+  A.NativeUint8List.prototype = {
+    get$runtimeType(receiver) {
+      return B.Type_Uint8List_WLA;
+    },
+    get$length(receiver) {
       return receiver.length;
     },
-    $index: function(receiver, index) {
-      H._checkValidIndex(index, receiver, receiver.length);
+    $index(receiver, index) {
+      A._checkValidIndex(index, receiver, receiver.length);
       return receiver[index];
-    }
-  };
-  H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.prototype = {};
-  H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {};
-  H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.prototype = {};
-  H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {};
-  H.Rti.prototype = {
-    _eval$1: function(recipe) {
-      return H._Universe_evalInEnvironment(init.typeUniverse, this, recipe);
     },
-    _bind$1: function(typeOrTuple) {
-      return H._Universe_bind(init.typeUniverse, this, typeOrTuple);
+    $isTrustedGetRuntimeType: 1
+  };
+  A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.prototype = {};
+  A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {};
+  A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.prototype = {};
+  A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {};
+  A.Rti.prototype = {
+    _eval$1(recipe) {
+      return A._Universe_evalInEnvironment(init.typeUniverse, this, recipe);
+    },
+    _bind$1(typeOrTuple) {
+      return A._Universe_bind(init.typeUniverse, this, typeOrTuple);
     }
   };
-  H._FunctionParameters.prototype = {};
-  H._Error.prototype = {
-    toString$0: function(_) {
+  A._FunctionParameters.prototype = {};
+  A._Type.prototype = {
+    toString$0(_) {
+      return A._rtiToString(this._rti, null);
+    }
+  };
+  A._Error.prototype = {
+    toString$0(_) {
       return this.__rti$_message;
     }
   };
-  H._TypeError.prototype = {};
-  P._AsyncRun__initializeScheduleImmediate_internalCallback.prototype = {
-    call$1: function(_) {
+  A._TypeError.prototype = {$isTypeError: 1};
+  A._AsyncRun__initializeScheduleImmediate_internalCallback.prototype = {
+    call$1(_) {
       var t1 = this._box_0,
         f = t1.storedCallback;
       t1.storedCallback = null;
@@ -5125,36 +5341,36 @@
     },
     $signature: 4
   };
-  P._AsyncRun__initializeScheduleImmediate_closure.prototype = {
-    call$1: function(callback) {
+  A._AsyncRun__initializeScheduleImmediate_closure.prototype = {
+    call$1(callback) {
       var t1, t2;
       this._box_0.storedCallback = type$.void_Function._as(callback);
       t1 = this.div;
       t2 = this.span;
       t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2);
     },
-    $signature: 15
+    $signature: 14
   };
-  P._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = {
-    call$0: function() {
+  A._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = {
+    call$0() {
       this.callback.call$0();
     },
     $signature: 3
   };
-  P._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback.prototype = {
-    call$0: function() {
+  A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback.prototype = {
+    call$0() {
       this.callback.call$0();
     },
     $signature: 3
   };
-  P._TimerImpl.prototype = {
-    _TimerImpl$2: function(milliseconds, callback) {
+  A._TimerImpl.prototype = {
+    _TimerImpl$2(milliseconds, callback) {
       if (self.setTimeout != null)
-        this._handle = self.setTimeout(H.convertDartClosureToJS(new P._TimerImpl_internalCallback(this, callback), 0), milliseconds);
+        this._handle = self.setTimeout(A.convertDartClosureToJS(new A._TimerImpl_internalCallback(this, callback), 0), milliseconds);
       else
-        throw H.wrapException(P.UnsupportedError$("`setTimeout()` not found."));
+        throw A.wrapException(A.UnsupportedError$("`setTimeout()` not found."));
     },
-    cancel$0: function() {
+    cancel$0() {
       if (self.setTimeout != null) {
         var t1 = this._handle;
         if (t1 == null)
@@ -5162,19 +5378,19 @@
         self.clearTimeout(t1);
         this._handle = null;
       } else
-        throw H.wrapException(P.UnsupportedError$("Canceling a timer."));
+        throw A.wrapException(A.UnsupportedError$("Canceling a timer."));
     },
     $isTimer: 1
   };
-  P._TimerImpl_internalCallback.prototype = {
-    call$0: function() {
+  A._TimerImpl_internalCallback.prototype = {
+    call$0() {
       this.$this._handle = null;
       this.callback.call$0();
     },
     $signature: 0
   };
-  P._AsyncAwaitCompleter.prototype = {
-    complete$1: function(_, value) {
+  A._AsyncAwaitCompleter.prototype = {
+    complete$1(_, value) {
       var t2, _this = this,
         t1 = _this.$ti;
       t1._eval$1("1/?")._as(value);
@@ -5187,10 +5403,10 @@
         if (t1._eval$1("Future<1>")._is(value))
           t2._chainFuture$1(value);
         else
-          t2._completeWithValue$1(t1._precomputed1._as(value));
+          t2._completeWithValue$1(value);
       }
     },
-    completeError$2: function(e, st) {
+    completeError$2(e, st) {
       var t1 = this._future;
       if (this.isSync)
         t1._completeError$2(e, st);
@@ -5199,159 +5415,184 @@
     },
     $isCompleter: 1
   };
-  P._awaitOnObject_closure.prototype = {
-    call$1: function(result) {
+  A._awaitOnObject_closure.prototype = {
+    call$1(result) {
       return this.bodyFunction.call$2(0, result);
     },
     $signature: 2
   };
-  P._awaitOnObject_closure0.prototype = {
-    call$2: function(error, stackTrace) {
-      this.bodyFunction.call$2(1, new H.ExceptionAndStackTrace(error, type$.StackTrace._as(stackTrace)));
+  A._awaitOnObject_closure0.prototype = {
+    call$2(error, stackTrace) {
+      this.bodyFunction.call$2(1, new A.ExceptionAndStackTrace(error, type$.StackTrace._as(stackTrace)));
+    },
+    $signature: 15
+  };
+  A._wrapJsFunctionForAsync_closure.prototype = {
+    call$2(errorCode, result) {
+      this.$protected(A._asInt(errorCode), result);
     },
     $signature: 16
   };
-  P._wrapJsFunctionForAsync_closure.prototype = {
-    call$2: function(errorCode, result) {
-      this.$protected(H._asInt(errorCode), result);
-    },
-    $signature: 17
-  };
-  P.AsyncError.prototype = {
-    toString$0: function(_) {
-      return H.S(this.error);
+  A.AsyncError.prototype = {
+    toString$0(_) {
+      return A.S(this.error);
     },
     $isError: 1,
-    get$stackTrace: function() {
+    get$stackTrace() {
       return this.stackTrace;
     }
   };
-  P._Completer.prototype = {
-    completeError$2: function(error, stackTrace) {
-      H.checkNotNullable(error, "error", type$.Object);
-      if (this.future._state !== 0)
-        throw H.wrapException(P.StateError$("Future already completed"));
+  A._Completer.prototype = {
+    completeError$2(error, stackTrace) {
+      A.checkNotNullable(error, "error", type$.Object);
+      if ((this.future._state & 30) !== 0)
+        throw A.wrapException(A.StateError$("Future already completed"));
       if (stackTrace == null)
-        stackTrace = P.AsyncError_defaultStackTrace(error);
+        stackTrace = A.AsyncError_defaultStackTrace(error);
       this._completeError$2(error, stackTrace);
     },
-    completeError$1: function(error) {
+    completeError$1(error) {
       return this.completeError$2(error, null);
     },
     $isCompleter: 1
   };
-  P._AsyncCompleter.prototype = {
-    complete$1: function(_, value) {
+  A._AsyncCompleter.prototype = {
+    complete$1(_, value) {
       var t2,
         t1 = this.$ti;
       t1._eval$1("1/?")._as(value);
       t2 = this.future;
-      if (t2._state !== 0)
-        throw H.wrapException(P.StateError$("Future already completed"));
+      if ((t2._state & 30) !== 0)
+        throw A.wrapException(A.StateError$("Future already completed"));
       t2._asyncComplete$1(t1._eval$1("1/")._as(value));
     },
-    complete$0: function($receiver) {
+    complete$0($receiver) {
       return this.complete$1($receiver, null);
     },
-    _completeError$2: function(error, stackTrace) {
+    _completeError$2(error, stackTrace) {
       this.future._asyncCompleteError$2(error, stackTrace);
     }
   };
-  P._SyncCompleter.prototype = {
-    complete$1: function(_, value) {
+  A._SyncCompleter.prototype = {
+    complete$1(_, value) {
       var t2,
         t1 = this.$ti;
       t1._eval$1("1/?")._as(value);
       t2 = this.future;
-      if (t2._state !== 0)
-        throw H.wrapException(P.StateError$("Future already completed"));
+      if ((t2._state & 30) !== 0)
+        throw A.wrapException(A.StateError$("Future already completed"));
       t2._complete$1(t1._eval$1("1/")._as(value));
     },
-    _completeError$2: function(error, stackTrace) {
+    _completeError$2(error, stackTrace) {
       this.future._completeError$2(error, stackTrace);
     }
   };
-  P._FutureListener.prototype = {
-    matchesErrorTest$1: function(asyncError) {
+  A._FutureListener.prototype = {
+    matchesErrorTest$1(asyncError) {
       if ((this.state & 15) !== 6)
         return true;
       return this.result._zone.runUnary$2$2(type$.bool_Function_Object._as(this.callback), asyncError.error, type$.bool, type$.Object);
     },
-    handleError$1: function(asyncError) {
-      var errorCallback = this.errorCallback,
+    handleError$1(asyncError) {
+      var exception, _this = this,
+        errorCallback = _this.errorCallback,
+        result = null,
         t1 = type$.dynamic,
         t2 = type$.Object,
         t3 = asyncError.error,
-        t4 = this.$ti._eval$1("2/"),
-        t5 = this.result._zone;
+        t4 = _this.result._zone;
       if (type$.dynamic_Function_Object_StackTrace._is(errorCallback))
-        return t4._as(t5.runBinary$3$3(errorCallback, t3, asyncError.stackTrace, t1, t2, type$.StackTrace));
+        result = t4.runBinary$3$3(errorCallback, t3, asyncError.stackTrace, t1, t2, type$.StackTrace);
       else
-        return t4._as(t5.runUnary$2$2(type$.dynamic_Function_Object._as(errorCallback), t3, t1, t2));
+        result = t4.runUnary$2$2(type$.dynamic_Function_Object._as(errorCallback), t3, t1, t2);
+      try {
+        t1 = _this.$ti._eval$1("2/")._as(result);
+        return t1;
+      } catch (exception) {
+        if (type$.TypeError._is(A.unwrapException(exception))) {
+          if ((_this.state & 1) !== 0)
+            throw A.wrapException(A.ArgumentError$("The error handler of Future.then must return a value of the returned future's type", "onError"));
+          throw A.wrapException(A.ArgumentError$("The error handler of Future.catchError must return a value of the future's type", "onError"));
+        } else
+          throw exception;
+      }
     }
   };
-  P._Future.prototype = {
-    then$1$2$onError: function(f, onError, $R) {
+  A._Future.prototype = {
+    _setChained$1(source) {
+      this._state = this._state & 1 | 4;
+      this._resultOrListeners = source;
+    },
+    then$1$2$onError(f, onError, $R) {
       var currentZone, result, t2,
         t1 = this.$ti;
       t1._bind$1($R)._eval$1("1/(2)")._as(f);
       currentZone = $.Zone__current;
-      if (currentZone !== C.C__RootZone) {
+      if (currentZone === B.C__RootZone) {
+        if (onError != null && !type$.dynamic_Function_Object_StackTrace._is(onError) && !type$.dynamic_Function_Object._is(onError))
+          throw A.wrapException(A.ArgumentError$value(onError, "onError", string$.Error_));
+      } else {
         $R._eval$1("@<0/>")._bind$1(t1._precomputed1)._eval$1("1(2)")._as(f);
         if (onError != null)
-          onError = P._registerErrorHandler(onError, currentZone);
+          onError = A._registerErrorHandler(onError, currentZone);
       }
-      result = new P._Future(currentZone, $R._eval$1("_Future<0>"));
+      result = new A._Future(currentZone, $R._eval$1("_Future<0>"));
       t2 = onError == null ? 1 : 3;
-      this._addListener$1(new P._FutureListener(result, t2, f, onError, t1._eval$1("@<1>")._bind$1($R)._eval$1("_FutureListener<1,2>")));
+      this._addListener$1(new A._FutureListener(result, t2, f, onError, t1._eval$1("@<1>")._bind$1($R)._eval$1("_FutureListener<1,2>")));
       return result;
     },
-    then$1$1: function(f, $R) {
+    then$1$1(f, $R) {
       return this.then$1$2$onError(f, null, $R);
     },
-    _thenAwait$1$2: function(f, onError, $E) {
+    _thenAwait$1$2(f, onError, $E) {
       var result,
         t1 = this.$ti;
       t1._bind$1($E)._eval$1("1/(2)")._as(f);
-      result = new P._Future($.Zone__current, $E._eval$1("_Future<0>"));
-      this._addListener$1(new P._FutureListener(result, 19, f, onError, t1._eval$1("@<1>")._bind$1($E)._eval$1("_FutureListener<1,2>")));
+      result = new A._Future($.Zone__current, $E._eval$1("_Future<0>"));
+      this._addListener$1(new A._FutureListener(result, 19, f, onError, t1._eval$1("@<1>")._bind$1($E)._eval$1("_FutureListener<1,2>")));
       return result;
     },
-    whenComplete$1: function(action) {
+    whenComplete$1(action) {
       var t1, result;
       type$.dynamic_Function._as(action);
       t1 = this.$ti;
-      result = new P._Future($.Zone__current, t1);
-      this._addListener$1(new P._FutureListener(result, 8, action, null, t1._eval$1("@<1>")._bind$1(t1._precomputed1)._eval$1("_FutureListener<1,2>")));
+      result = new A._Future($.Zone__current, t1);
+      this._addListener$1(new A._FutureListener(result, 8, action, null, t1._eval$1("@<1>")._bind$1(t1._precomputed1)._eval$1("_FutureListener<1,2>")));
       return result;
     },
-    _addListener$1: function(listener) {
+    _setErrorObject$1(error) {
+      this._state = this._state & 1 | 16;
+      this._resultOrListeners = error;
+    },
+    _cloneResult$1(source) {
+      this._state = source._state & 30 | this._state & 1;
+      this._resultOrListeners = source._resultOrListeners;
+    },
+    _addListener$1(listener) {
       var source, _this = this,
         t1 = _this._state;
-      if (t1 <= 1) {
+      if (t1 <= 3) {
         listener._nextListener = type$.nullable__FutureListener_dynamic_dynamic._as(_this._resultOrListeners);
         _this._resultOrListeners = listener;
       } else {
-        if (t1 === 2) {
+        if ((t1 & 4) !== 0) {
           source = type$._Future_dynamic._as(_this._resultOrListeners);
-          t1 = source._state;
-          if (t1 < 4) {
+          if ((source._state & 24) === 0) {
             source._addListener$1(listener);
             return;
           }
-          _this._state = t1;
-          _this._resultOrListeners = source._resultOrListeners;
+          _this._cloneResult$1(source);
         }
-        P._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new P._Future__addListener_closure(_this, listener)));
+        A._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new A._Future__addListener_closure(_this, listener)));
       }
     },
-    _prependListeners$1: function(listeners) {
+    _prependListeners$1(listeners) {
       var t1, existingListeners, next, cursor, next0, source, _this = this, _box_0 = {};
       _box_0.listeners = listeners;
       if (listeners == null)
         return;
       t1 = _this._state;
-      if (t1 <= 1) {
+      if (t1 <= 3) {
         existingListeners = type$.nullable__FutureListener_dynamic_dynamic._as(_this._resultOrListeners);
         _this._resultOrListeners = listeners;
         if (existingListeners != null) {
@@ -5361,26 +5602,24 @@
           cursor._nextListener = existingListeners;
         }
       } else {
-        if (t1 === 2) {
+        if ((t1 & 4) !== 0) {
           source = type$._Future_dynamic._as(_this._resultOrListeners);
-          t1 = source._state;
-          if (t1 < 4) {
+          if ((source._state & 24) === 0) {
             source._prependListeners$1(listeners);
             return;
           }
-          _this._state = t1;
-          _this._resultOrListeners = source._resultOrListeners;
+          _this._cloneResult$1(source);
         }
         _box_0.listeners = _this._reverseListeners$1(listeners);
-        P._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new P._Future__prependListeners_closure(_box_0, _this)));
+        A._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new A._Future__prependListeners_closure(_box_0, _this)));
       }
     },
-    _removeListeners$0: function() {
+    _removeListeners$0() {
       var current = type$.nullable__FutureListener_dynamic_dynamic._as(this._resultOrListeners);
       this._resultOrListeners = null;
       return this._reverseListeners$1(current);
     },
-    _reverseListeners$1: function(listeners) {
+    _reverseListeners$1(listeners) {
       var current, prev, next;
       for (current = listeners, prev = null; current != null; prev = current, current = next) {
         next = current._nextListener;
@@ -5388,188 +5627,181 @@
       }
       return prev;
     },
-    _chainForeignFuture$1: function(source) {
+    _chainForeignFuture$1(source) {
       var e, s, exception, _this = this;
-      _this._state = 1;
+      _this._state ^= 2;
       try {
-        source.then$1$2$onError(new P._Future__chainForeignFuture_closure(_this), new P._Future__chainForeignFuture_closure0(_this), type$.Null);
+        source.then$1$2$onError(new A._Future__chainForeignFuture_closure(_this), new A._Future__chainForeignFuture_closure0(_this), type$.Null);
       } catch (exception) {
-        e = H.unwrapException(exception);
-        s = H.getTraceFromException(exception);
-        P.scheduleMicrotask(new P._Future__chainForeignFuture_closure1(_this, e, s));
+        e = A.unwrapException(exception);
+        s = A.getTraceFromException(exception);
+        A.scheduleMicrotask(new A._Future__chainForeignFuture_closure1(_this, e, s));
       }
     },
-    _complete$1: function(value) {
+    _complete$1(value) {
       var listeners, _this = this,
         t1 = _this.$ti;
       t1._eval$1("1/")._as(value);
       if (t1._eval$1("Future<1>")._is(value))
         if (t1._is(value))
-          P._Future__chainCoreFuture(value, _this);
+          A._Future__chainCoreFutureSync(value, _this);
         else
           _this._chainForeignFuture$1(value);
       else {
         listeners = _this._removeListeners$0();
         t1._precomputed1._as(value);
-        _this._state = 4;
+        _this._state = 8;
         _this._resultOrListeners = value;
-        P._Future__propagateToListeners(_this, listeners);
+        A._Future__propagateToListeners(_this, listeners);
       }
     },
-    _completeWithValue$1: function(value) {
+    _completeWithValue$1(value) {
       var listeners, _this = this;
       _this.$ti._precomputed1._as(value);
       listeners = _this._removeListeners$0();
-      _this._state = 4;
+      _this._state = 8;
       _this._resultOrListeners = value;
-      P._Future__propagateToListeners(_this, listeners);
+      A._Future__propagateToListeners(_this, listeners);
     },
-    _completeError$2: function(error, stackTrace) {
-      var listeners, t1, _this = this;
+    _completeError$2(error, stackTrace) {
+      var listeners;
       type$.Object._as(error);
       type$.StackTrace._as(stackTrace);
-      listeners = _this._removeListeners$0();
-      t1 = P.AsyncError$(error, stackTrace);
-      _this._state = 8;
-      _this._resultOrListeners = t1;
-      P._Future__propagateToListeners(_this, listeners);
+      listeners = this._removeListeners$0();
+      this._setErrorObject$1(A.AsyncError$(error, stackTrace));
+      A._Future__propagateToListeners(this, listeners);
     },
-    _asyncComplete$1: function(value) {
+    _asyncComplete$1(value) {
       var t1 = this.$ti;
       t1._eval$1("1/")._as(value);
       if (t1._eval$1("Future<1>")._is(value)) {
         this._chainFuture$1(value);
         return;
       }
-      this._asyncCompleteWithValue$1(t1._precomputed1._as(value));
+      this._asyncCompleteWithValue$1(value);
     },
-    _asyncCompleteWithValue$1: function(value) {
+    _asyncCompleteWithValue$1(value) {
       var _this = this;
       _this.$ti._precomputed1._as(value);
-      _this._state = 1;
-      P._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new P._Future__asyncCompleteWithValue_closure(_this, value)));
+      _this._state ^= 2;
+      A._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new A._Future__asyncCompleteWithValue_closure(_this, value)));
     },
-    _chainFuture$1: function(value) {
-      var _this = this,
-        t1 = _this.$ti;
+    _chainFuture$1(value) {
+      var t1 = this.$ti;
       t1._eval$1("Future<1>")._as(value);
       if (t1._is(value)) {
-        if (value._state === 8) {
-          _this._state = 1;
-          P._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new P._Future__chainFuture_closure(_this, value)));
-        } else
-          P._Future__chainCoreFuture(value, _this);
+        A._Future__chainCoreFutureAsync(value, this);
         return;
       }
-      _this._chainForeignFuture$1(value);
+      this._chainForeignFuture$1(value);
     },
-    _asyncCompleteError$2: function(error, stackTrace) {
+    _asyncCompleteError$2(error, stackTrace) {
       type$.StackTrace._as(stackTrace);
-      this._state = 1;
-      P._rootScheduleMicrotask(null, null, this._zone, type$.void_Function._as(new P._Future__asyncCompleteError_closure(this, error, stackTrace)));
+      this._state ^= 2;
+      A._rootScheduleMicrotask(null, null, this._zone, type$.void_Function._as(new A._Future__asyncCompleteError_closure(this, error, stackTrace)));
     },
     $isFuture: 1
   };
-  P._Future__addListener_closure.prototype = {
-    call$0: function() {
-      P._Future__propagateToListeners(this.$this, this.listener);
+  A._Future__addListener_closure.prototype = {
+    call$0() {
+      A._Future__propagateToListeners(this.$this, this.listener);
     },
     $signature: 0
   };
-  P._Future__prependListeners_closure.prototype = {
-    call$0: function() {
-      P._Future__propagateToListeners(this.$this, this._box_0.listeners);
+  A._Future__prependListeners_closure.prototype = {
+    call$0() {
+      A._Future__propagateToListeners(this.$this, this._box_0.listeners);
     },
     $signature: 0
   };
-  P._Future__chainForeignFuture_closure.prototype = {
-    call$1: function(value) {
+  A._Future__chainForeignFuture_closure.prototype = {
+    call$1(value) {
       var error, stackTrace, exception,
         t1 = this.$this;
-      t1._state = 0;
+      t1._state ^= 2;
       try {
         t1._completeWithValue$1(t1.$ti._precomputed1._as(value));
       } catch (exception) {
-        error = H.unwrapException(exception);
-        stackTrace = H.getTraceFromException(exception);
+        error = A.unwrapException(exception);
+        stackTrace = A.getTraceFromException(exception);
         t1._completeError$2(error, stackTrace);
       }
     },
     $signature: 4
   };
-  P._Future__chainForeignFuture_closure0.prototype = {
-    call$2: function(error, stackTrace) {
+  A._Future__chainForeignFuture_closure0.prototype = {
+    call$2(error, stackTrace) {
       this.$this._completeError$2(type$.Object._as(error), type$.StackTrace._as(stackTrace));
     },
     $signature: 5
   };
-  P._Future__chainForeignFuture_closure1.prototype = {
-    call$0: function() {
+  A._Future__chainForeignFuture_closure1.prototype = {
+    call$0() {
       this.$this._completeError$2(this.e, this.s);
     },
     $signature: 0
   };
-  P._Future__asyncCompleteWithValue_closure.prototype = {
-    call$0: function() {
+  A._Future__chainCoreFutureAsync_closure.prototype = {
+    call$0() {
+      A._Future__chainCoreFutureSync(this._box_0.source, this.target);
+    },
+    $signature: 0
+  };
+  A._Future__asyncCompleteWithValue_closure.prototype = {
+    call$0() {
       this.$this._completeWithValue$1(this.value);
     },
     $signature: 0
   };
-  P._Future__chainFuture_closure.prototype = {
-    call$0: function() {
-      P._Future__chainCoreFuture(this.value, this.$this);
-    },
-    $signature: 0
-  };
-  P._Future__asyncCompleteError_closure.prototype = {
-    call$0: function() {
+  A._Future__asyncCompleteError_closure.prototype = {
+    call$0() {
       this.$this._completeError$2(this.error, this.stackTrace);
     },
     $signature: 0
   };
-  P._Future__propagateToListeners_handleWhenCompleteCallback.prototype = {
-    call$0: function() {
+  A._Future__propagateToListeners_handleWhenCompleteCallback.prototype = {
+    call$0() {
       var e, s, t1, exception, t2, originalSource, _this = this, completeResult = null;
       try {
         t1 = _this._box_0.listener;
         completeResult = t1.result._zone.run$1$1(type$.dynamic_Function._as(t1.callback), type$.dynamic);
       } catch (exception) {
-        e = H.unwrapException(exception);
-        s = H.getTraceFromException(exception);
+        e = A.unwrapException(exception);
+        s = A.getTraceFromException(exception);
         t1 = _this.hasError && type$.AsyncError._as(_this._box_1.source._resultOrListeners).error === e;
         t2 = _this._box_0;
         if (t1)
           t2.listenerValueOrError = type$.AsyncError._as(_this._box_1.source._resultOrListeners);
         else
-          t2.listenerValueOrError = P.AsyncError$(e, s);
+          t2.listenerValueOrError = A.AsyncError$(e, s);
         t2.listenerHasError = true;
         return;
       }
-      if (completeResult instanceof P._Future && completeResult._state >= 4) {
-        if (completeResult._state === 8) {
+      if (completeResult instanceof A._Future && (completeResult._state & 24) !== 0) {
+        if ((completeResult._state & 16) !== 0) {
           t1 = _this._box_0;
           t1.listenerValueOrError = type$.AsyncError._as(completeResult._resultOrListeners);
           t1.listenerHasError = true;
         }
         return;
       }
-      if (type$.Future_dynamic._is(completeResult)) {
+      if (completeResult instanceof A._Future) {
         originalSource = _this._box_1.source;
         t1 = _this._box_0;
-        t1.listenerValueOrError = completeResult.then$1$1(new P._Future__propagateToListeners_handleWhenCompleteCallback_closure(originalSource), type$.dynamic);
+        t1.listenerValueOrError = completeResult.then$1$1(new A._Future__propagateToListeners_handleWhenCompleteCallback_closure(originalSource), type$.dynamic);
         t1.listenerHasError = false;
       }
     },
     $signature: 0
   };
-  P._Future__propagateToListeners_handleWhenCompleteCallback_closure.prototype = {
-    call$1: function(_) {
+  A._Future__propagateToListeners_handleWhenCompleteCallback_closure.prototype = {
+    call$1(_) {
       return this.originalSource;
     },
-    $signature: 19
+    $signature: 17
   };
-  P._Future__propagateToListeners_handleValueCallback.prototype = {
-    call$0: function() {
+  A._Future__propagateToListeners_handleValueCallback.prototype = {
+    call$0() {
       var e, s, t1, t2, t3, t4, t5, exception;
       try {
         t1 = this._box_0;
@@ -5579,17 +5811,17 @@
         t5 = t4._as(this.sourceResult);
         t1.listenerValueOrError = t2.result._zone.runUnary$2$2(t3._eval$1("2/(1)")._as(t2.callback), t5, t3._eval$1("2/"), t4);
       } catch (exception) {
-        e = H.unwrapException(exception);
-        s = H.getTraceFromException(exception);
+        e = A.unwrapException(exception);
+        s = A.getTraceFromException(exception);
         t1 = this._box_0;
-        t1.listenerValueOrError = P.AsyncError$(e, s);
+        t1.listenerValueOrError = A.AsyncError$(e, s);
         t1.listenerHasError = true;
       }
     },
     $signature: 0
   };
-  P._Future__propagateToListeners_handleError.prototype = {
-    call$0: function() {
+  A._Future__propagateToListeners_handleError.prototype = {
+    call$0() {
       var asyncError, e, s, t1, exception, t2, _this = this;
       try {
         asyncError = type$.AsyncError._as(_this._box_1.source._resultOrListeners);
@@ -5599,155 +5831,153 @@
           t1.listenerHasError = false;
         }
       } catch (exception) {
-        e = H.unwrapException(exception);
-        s = H.getTraceFromException(exception);
+        e = A.unwrapException(exception);
+        s = A.getTraceFromException(exception);
         t1 = type$.AsyncError._as(_this._box_1.source._resultOrListeners);
         t2 = _this._box_0;
         if (t1.error === e)
           t2.listenerValueOrError = t1;
         else
-          t2.listenerValueOrError = P.AsyncError$(e, s);
+          t2.listenerValueOrError = A.AsyncError$(e, s);
         t2.listenerHasError = true;
       }
     },
     $signature: 0
   };
-  P._AsyncCallbackEntry.prototype = {};
-  P.Stream.prototype = {
-    get$length: function(_) {
+  A._AsyncCallbackEntry.prototype = {};
+  A.Stream.prototype = {
+    get$length(_) {
       var t1 = {},
-        future = new P._Future($.Zone__current, type$._Future_int);
+        future = new A._Future($.Zone__current, type$._Future_int);
       t1.count = 0;
-      this.listen$4$cancelOnError$onDone$onError(new P.Stream_length_closure(t1, this), true, new P.Stream_length_closure0(t1, future), future.get$_completeError());
+      this.listen$4$cancelOnError$onDone$onError(new A.Stream_length_closure(t1, this), true, new A.Stream_length_closure0(t1, future), future.get$_completeError());
       return future;
     },
-    get$first: function(_) {
-      var future = new P._Future($.Zone__current, H._instanceType(this)._eval$1("_Future<1>")),
-        subscription = this.listen$4$cancelOnError$onDone$onError(null, true, new P.Stream_first_closure(future), future.get$_completeError());
-      subscription.onData$1(new P.Stream_first_closure0(this, subscription, future));
+    get$first(_) {
+      var future = new A._Future($.Zone__current, A._instanceType(this)._eval$1("_Future<1>")),
+        subscription = this.listen$4$cancelOnError$onDone$onError(null, true, new A.Stream_first_closure(future), future.get$_completeError());
+      subscription.onData$1(new A.Stream_first_closure0(this, subscription, future));
       return future;
     }
   };
-  P.Stream_length_closure.prototype = {
-    call$1: function(_) {
-      H._instanceType(this.$this)._precomputed1._as(_);
+  A.Stream_length_closure.prototype = {
+    call$1(_) {
+      A._instanceType(this.$this)._precomputed1._as(_);
       ++this._box_0.count;
     },
-    $signature: function() {
-      return H._instanceType(this.$this)._eval$1("~(1)");
+    $signature() {
+      return A._instanceType(this.$this)._eval$1("~(1)");
     }
   };
-  P.Stream_length_closure0.prototype = {
-    call$0: function() {
+  A.Stream_length_closure0.prototype = {
+    call$0() {
       this.future._complete$1(this._box_0.count);
     },
     $signature: 0
   };
-  P.Stream_first_closure.prototype = {
-    call$0: function() {
+  A.Stream_first_closure.prototype = {
+    call$0() {
       var e, s, t1, exception, stackTrace;
       try {
-        t1 = H.IterableElementError_noElement();
-        throw H.wrapException(t1);
+        t1 = A.IterableElementError_noElement();
+        throw A.wrapException(t1);
       } catch (exception) {
-        e = H.unwrapException(exception);
-        s = H.getTraceFromException(exception);
+        e = A.unwrapException(exception);
+        s = A.getTraceFromException(exception);
         t1 = e;
         stackTrace = s;
         if (stackTrace == null)
-          stackTrace = P.AsyncError_defaultStackTrace(t1);
+          stackTrace = A.AsyncError_defaultStackTrace(t1);
         this.future._completeError$2(t1, stackTrace);
       }
     },
     $signature: 0
   };
-  P.Stream_first_closure0.prototype = {
-    call$1: function(value) {
-      P._cancelAndValue(this.subscription, this.future, H._instanceType(this.$this)._precomputed1._as(value));
+  A.Stream_first_closure0.prototype = {
+    call$1(value) {
+      A._cancelAndValue(this.subscription, this.future, A._instanceType(this.$this)._precomputed1._as(value));
     },
-    $signature: function() {
-      return H._instanceType(this.$this)._eval$1("~(1)");
+    $signature() {
+      return A._instanceType(this.$this)._eval$1("~(1)");
     }
   };
-  P.StreamSubscription.prototype = {};
-  P.StreamTransformerBase.prototype = {};
-  P._StreamController.prototype = {
-    get$_pendingEvents: function() {
+  A._StreamController.prototype = {
+    get$_pendingEvents() {
       var t1, _this = this;
       if ((_this._state & 8) === 0)
-        return H._instanceType(_this)._eval$1("_PendingEvents<1>?")._as(_this._varData);
-      t1 = H._instanceType(_this);
+        return A._instanceType(_this)._eval$1("_PendingEvents<1>?")._as(_this._varData);
+      t1 = A._instanceType(_this);
       return t1._eval$1("_PendingEvents<1>?")._as(t1._eval$1("_StreamControllerAddStreamState<1>")._as(_this._varData).get$varData());
     },
-    _ensurePendingEvents$0: function() {
+    _ensurePendingEvents$0() {
       var events, t1, _this = this;
       if ((_this._state & 8) === 0) {
         events = _this._varData;
         if (events == null)
-          events = _this._varData = new P._StreamImplEvents(H._instanceType(_this)._eval$1("_StreamImplEvents<1>"));
-        return H._instanceType(_this)._eval$1("_StreamImplEvents<1>")._as(events);
+          events = _this._varData = new A._PendingEvents(A._instanceType(_this)._eval$1("_PendingEvents<1>"));
+        return A._instanceType(_this)._eval$1("_PendingEvents<1>")._as(events);
       }
-      t1 = H._instanceType(_this);
+      t1 = A._instanceType(_this);
       events = t1._eval$1("_StreamControllerAddStreamState<1>")._as(_this._varData).get$varData();
-      return t1._eval$1("_StreamImplEvents<1>")._as(events);
+      return t1._eval$1("_PendingEvents<1>")._as(events);
     },
-    get$_subscription: function() {
+    get$_subscription() {
       var varData = this._varData;
       if ((this._state & 8) !== 0)
         varData = type$._StreamControllerAddStreamState_nullable_Object._as(varData).get$varData();
-      return H._instanceType(this)._eval$1("_ControllerSubscription<1>")._as(varData);
+      return A._instanceType(this)._eval$1("_ControllerSubscription<1>")._as(varData);
     },
-    _badEventState$0: function() {
+    _badEventState$0() {
       if ((this._state & 4) !== 0)
-        return new P.StateError("Cannot add event after closing");
-      return new P.StateError("Cannot add event while adding a stream");
+        return new A.StateError("Cannot add event after closing");
+      return new A.StateError("Cannot add event while adding a stream");
     },
-    _ensureDoneFuture$0: function() {
+    _ensureDoneFuture$0() {
       var t1 = this._doneFuture;
       if (t1 == null)
-        t1 = this._doneFuture = (this._state & 2) !== 0 ? $.$get$Future__nullFuture() : new P._Future($.Zone__current, type$._Future_void);
+        t1 = this._doneFuture = (this._state & 2) !== 0 ? $.$get$Future__nullFuture() : new A._Future($.Zone__current, type$._Future_void);
       return t1;
     },
-    add$1: function(_, value) {
+    add$1(_, value) {
       var t2, _this = this,
-        t1 = H._instanceType(_this);
+        t1 = A._instanceType(_this);
       t1._precomputed1._as(value);
       t2 = _this._state;
       if (t2 >= 4)
-        throw H.wrapException(_this._badEventState$0());
+        throw A.wrapException(_this._badEventState$0());
       if ((t2 & 1) !== 0)
         _this._sendData$1(value);
       else if ((t2 & 3) === 0)
-        _this._ensurePendingEvents$0().add$1(0, new P._DelayedData(value, t1._eval$1("_DelayedData<1>")));
+        _this._ensurePendingEvents$0().add$1(0, new A._DelayedData(value, t1._eval$1("_DelayedData<1>")));
     },
-    close$0: function(_) {
+    close$0(_) {
       var _this = this,
         t1 = _this._state;
       if ((t1 & 4) !== 0)
         return _this._ensureDoneFuture$0();
       if (t1 >= 4)
-        throw H.wrapException(_this._badEventState$0());
+        throw A.wrapException(_this._badEventState$0());
       t1 = _this._state = t1 | 4;
       if ((t1 & 1) !== 0)
         _this._sendDone$0();
       else if ((t1 & 3) === 0)
-        _this._ensurePendingEvents$0().add$1(0, C.C__DelayedDone);
+        _this._ensurePendingEvents$0().add$1(0, B.C__DelayedDone);
       return _this._ensureDoneFuture$0();
     },
-    _subscribe$4: function(onData, onError, onDone, cancelOnError) {
+    _subscribe$4(onData, onError, onDone, cancelOnError) {
       var t2, t3, t4, t5, t6, t7, subscription, pendingEvents, addState, _this = this,
-        t1 = H._instanceType(_this);
+        t1 = A._instanceType(_this);
       t1._eval$1("~(1)?")._as(onData);
       type$.nullable_void_Function._as(onDone);
       if ((_this._state & 3) !== 0)
-        throw H.wrapException(P.StateError$("Stream has already been listened to."));
+        throw A.wrapException(A.StateError$("Stream has already been listened to."));
       t2 = $.Zone__current;
       t3 = cancelOnError ? 1 : 0;
-      t4 = P._BufferingStreamSubscription__registerDataHandler(t2, onData, t1._precomputed1);
-      t5 = P._BufferingStreamSubscription__registerErrorHandler(t2, onError);
-      t6 = onDone == null ? P.async___nullDoneHandler$closure() : onDone;
+      t4 = A._BufferingStreamSubscription__registerDataHandler(t2, onData, t1._precomputed1);
+      t5 = A._BufferingStreamSubscription__registerErrorHandler(t2, onError);
+      t6 = onDone == null ? A.async___nullDoneHandler$closure() : onDone;
       t7 = type$.void_Function;
-      subscription = new P._ControllerSubscription(_this, t4, t5, t7._as(t6), t2, t3, t1._eval$1("_ControllerSubscription<1>"));
+      subscription = new A._ControllerSubscription(_this, t4, t5, t7._as(t6), t2, t3, t1._eval$1("_ControllerSubscription<1>"));
       pendingEvents = _this.get$_pendingEvents();
       t3 = _this._state |= 1;
       if ((t3 & 8) !== 0) {
@@ -5757,7 +5987,7 @@
       } else
         _this._varData = subscription;
       subscription._setPendingEvents$1(pendingEvents);
-      t1 = t7._as(new P._StreamController__subscribe_closure(_this));
+      t1 = t7._as(new A._StreamController__subscribe_closure(_this));
       t2 = subscription._state;
       subscription._state = t2 | 32;
       t1.call$0();
@@ -5765,9 +5995,9 @@
       subscription._checkState$1((t2 & 4) !== 0);
       return subscription;
     },
-    _recordCancel$1: function(subscription) {
+    _recordCancel$1(subscription) {
       var result, onCancel, cancelResult, e, s, exception, result0, _this = this,
-        t1 = H._instanceType(_this);
+        t1 = A._instanceType(_this);
       t1._eval$1("StreamSubscription<1>")._as(subscription);
       result = null;
       if ((_this._state & 8) !== 0)
@@ -5779,18 +6009,18 @@
         if (result == null)
           try {
             cancelResult = onCancel.call$0();
-            if (type$.Future_void._is(cancelResult))
+            if (cancelResult instanceof A._Future)
               result = cancelResult;
           } catch (exception) {
-            e = H.unwrapException(exception);
-            s = H.getTraceFromException(exception);
-            result0 = new P._Future($.Zone__current, type$._Future_void);
+            e = A.unwrapException(exception);
+            s = A.getTraceFromException(exception);
+            result0 = new A._Future($.Zone__current, type$._Future_void);
             result0._asyncCompleteError$2(e, s);
             result = result0;
           }
         else
           result = result.whenComplete$1(onCancel);
-      t1 = new P._StreamController__recordCancel_complete(_this);
+      t1 = new A._StreamController__recordCancel_complete(_this);
       if (result != null)
         result = result.whenComplete$1(t1);
       else
@@ -5801,72 +6031,72 @@
     $is_StreamControllerLifecycle: 1,
     $is_EventDispatch: 1
   };
-  P._StreamController__subscribe_closure.prototype = {
-    call$0: function() {
-      P._runGuarded(this.$this.onListen);
+  A._StreamController__subscribe_closure.prototype = {
+    call$0() {
+      A._runGuarded(this.$this.onListen);
     },
     $signature: 0
   };
-  P._StreamController__recordCancel_complete.prototype = {
-    call$0: function() {
+  A._StreamController__recordCancel_complete.prototype = {
+    call$0() {
       var doneFuture = this.$this._doneFuture;
-      if (doneFuture != null && doneFuture._state === 0)
+      if (doneFuture != null && (doneFuture._state & 30) === 0)
         doneFuture._asyncComplete$1(null);
     },
     $signature: 0
   };
-  P._AsyncStreamControllerDispatch.prototype = {
-    _sendData$1: function(data) {
+  A._AsyncStreamControllerDispatch.prototype = {
+    _sendData$1(data) {
       var t1 = this.$ti;
       t1._precomputed1._as(data);
-      this.get$_subscription()._addPending$1(new P._DelayedData(data, t1._eval$1("_DelayedData<1>")));
+      this.get$_subscription()._addPending$1(new A._DelayedData(data, t1._eval$1("_DelayedData<1>")));
     },
-    _sendError$2: function(error, stackTrace) {
-      this.get$_subscription()._addPending$1(new P._DelayedError(error, stackTrace));
+    _sendError$2(error, stackTrace) {
+      this.get$_subscription()._addPending$1(new A._DelayedError(error, stackTrace));
     },
-    _sendDone$0: function() {
-      this.get$_subscription()._addPending$1(C.C__DelayedDone);
+    _sendDone$0() {
+      this.get$_subscription()._addPending$1(B.C__DelayedDone);
     }
   };
-  P._AsyncStreamController.prototype = {};
-  P._ControllerStream.prototype = {
-    get$hashCode: function(_) {
-      return (H.Primitives_objectHashCode(this._controller) ^ 892482866) >>> 0;
+  A._AsyncStreamController.prototype = {};
+  A._ControllerStream.prototype = {
+    get$hashCode(_) {
+      return (A.Primitives_objectHashCode(this._controller) ^ 892482866) >>> 0;
     },
-    $eq: function(_, other) {
+    $eq(_, other) {
       if (other == null)
         return false;
       if (this === other)
         return true;
-      return other instanceof P._ControllerStream && other._controller === this._controller;
+      return other instanceof A._ControllerStream && other._controller === this._controller;
     }
   };
-  P._ControllerSubscription.prototype = {
-    _onCancel$0: function() {
+  A._ControllerSubscription.prototype = {
+    _onCancel$0() {
       return this._controller._recordCancel$1(this);
     },
-    _onPause$0: function() {
+    _onPause$0() {
       var t1 = this._controller,
-        t2 = H._instanceType(t1);
+        t2 = A._instanceType(t1);
       t2._eval$1("StreamSubscription<1>")._as(this);
       if ((t1._state & 8) !== 0)
         t2._eval$1("_StreamControllerAddStreamState<1>")._as(t1._varData).pause$0(0);
-      P._runGuarded(t1.onPause);
+      A._runGuarded(t1.onPause);
     },
-    _onResume$0: function() {
+    _onResume$0() {
       var t1 = this._controller,
-        t2 = H._instanceType(t1);
+        t2 = A._instanceType(t1);
       t2._eval$1("StreamSubscription<1>")._as(this);
       if ((t1._state & 8) !== 0)
         t2._eval$1("_StreamControllerAddStreamState<1>")._as(t1._varData).resume$0();
-      P._runGuarded(t1.onResume);
+      A._runGuarded(t1.onResume);
     }
   };
-  P._StreamSinkWrapper.prototype = {};
-  P._BufferingStreamSubscription.prototype = {
-    _setPendingEvents$1: function(pendingEvents) {
+  A._StreamSinkWrapper.prototype = {};
+  A._BufferingStreamSubscription.prototype = {
+    _setPendingEvents$1(pendingEvents) {
       var _this = this;
-      H._instanceType(_this)._eval$1("_PendingEvents<1>?")._as(pendingEvents);
+      A._instanceType(_this)._eval$1("_PendingEvents<1>?")._as(pendingEvents);
       if (pendingEvents == null)
         return;
       _this.set$_pending(pendingEvents);
@@ -5875,30 +6105,30 @@
         pendingEvents.schedule$1(_this);
       }
     },
-    onData$1: function(handleData) {
-      var t1 = H._instanceType(this);
-      this.set$_onData(P._BufferingStreamSubscription__registerDataHandler(this._zone, t1._eval$1("~(1)?")._as(handleData), t1._precomputed1));
+    onData$1(handleData) {
+      var t1 = A._instanceType(this);
+      this.set$_onData(A._BufferingStreamSubscription__registerDataHandler(this._zone, t1._eval$1("~(1)?")._as(handleData), t1._precomputed1));
     },
-    cancel$0: function() {
+    cancel$0() {
       var t1 = this._state &= 4294967279;
       if ((t1 & 8) === 0)
         this._cancel$0();
       t1 = this._cancelFuture;
       return t1 == null ? $.$get$Future__nullFuture() : t1;
     },
-    asFuture$1$1: function(futureValue, $E) {
+    asFuture$1$1(futureValue, $E) {
       var result, t1 = {};
-      $E._eval$1("0?")._as(futureValue);
       t1.resultValue = null;
       if (!$E._is(null))
-        throw H.wrapException(P.ArgumentError$notNull("futureValue"));
-      t1.resultValue = $E._as(futureValue);
-      result = new P._Future($.Zone__current, $E._eval$1("_Future<0>"));
-      this.set$_onDone(new P._BufferingStreamSubscription_asFuture_closure(t1, result));
-      this._onError = new P._BufferingStreamSubscription_asFuture_closure0(this, result);
+        throw A.wrapException(A.ArgumentError$notNull("futureValue"));
+      $E._as(futureValue);
+      t1.resultValue = futureValue;
+      result = new A._Future($.Zone__current, $E._eval$1("_Future<0>"));
+      this.set$_onDone(new A._BufferingStreamSubscription_asFuture_closure(t1, result));
+      this._onError = new A._BufferingStreamSubscription_asFuture_closure0(this, result);
       return result;
     },
-    _cancel$0: function() {
+    _cancel$0() {
       var t2, _this = this,
         t1 = _this._state |= 8;
       if ((t1 & 64) !== 0) {
@@ -5910,20 +6140,20 @@
         _this.set$_pending(null);
       _this._cancelFuture = _this._onCancel$0();
     },
-    _onPause$0: function() {
+    _onPause$0() {
     },
-    _onResume$0: function() {
+    _onResume$0() {
     },
-    _onCancel$0: function() {
+    _onCancel$0() {
       return null;
     },
-    _addPending$1: function($event) {
-      var _this = this,
-        t1 = H._instanceType(_this),
-        pending = t1._eval$1("_StreamImplEvents<1>?")._as(_this._pending);
-      if (pending == null)
-        pending = new P._StreamImplEvents(t1._eval$1("_StreamImplEvents<1>"));
-      _this.set$_pending(pending);
+    _addPending$1($event) {
+      var t1, _this = this,
+        pending = _this._pending;
+      if (pending == null) {
+        pending = new A._PendingEvents(A._instanceType(_this)._eval$1("_PendingEvents<1>"));
+        _this.set$_pending(pending);
+      }
       pending.add$1(0, $event);
       t1 = _this._state;
       if ((t1 & 64) === 0) {
@@ -5933,9 +6163,9 @@
           pending.schedule$1(_this);
       }
     },
-    _sendData$1: function(data) {
+    _sendData$1(data) {
       var t2, _this = this,
-        t1 = H._instanceType(_this)._precomputed1;
+        t1 = A._instanceType(_this)._precomputed1;
       t1._as(data);
       t2 = _this._state;
       _this._state = t2 | 32;
@@ -5943,10 +6173,10 @@
       _this._state &= 4294967263;
       _this._checkState$1((t2 & 4) !== 0);
     },
-    _sendError$2: function(error, stackTrace) {
+    _sendError$2(error, stackTrace) {
       var cancelFuture, _this = this,
         t1 = _this._state,
-        t2 = new P._BufferingStreamSubscription__sendError_sendError(_this, error, stackTrace);
+        t2 = new A._BufferingStreamSubscription__sendError_sendError(_this, error, stackTrace);
       if ((t1 & 1) !== 0) {
         _this._state = t1 | 16;
         _this._cancel$0();
@@ -5960,9 +6190,9 @@
         _this._checkState$1((t1 & 4) !== 0);
       }
     },
-    _sendDone$0: function() {
+    _sendDone$0() {
       var cancelFuture, _this = this,
-        t1 = new P._BufferingStreamSubscription__sendDone_sendDone(_this);
+        t1 = new A._BufferingStreamSubscription__sendDone_sendDone(_this);
       _this._cancel$0();
       _this._state |= 16;
       cancelFuture = _this._cancelFuture;
@@ -5971,7 +6201,7 @@
       else
         t1.call$0();
     },
-    _checkState$1: function(wasInputPaused) {
+    _checkState$1(wasInputPaused) {
       var t2, isInputPaused, _this = this,
         t1 = _this._state;
       if ((t1 & 64) !== 0 && _this._pending.lastPendingEvent == null) {
@@ -6008,43 +6238,43 @@
       if ((t1 & 64) !== 0 && t1 < 128)
         _this._pending.schedule$1(_this);
     },
-    set$_onData: function(_onData) {
-      this._onData = H._instanceType(this)._eval$1("~(1)")._as(_onData);
+    set$_onData(_onData) {
+      this._onData = A._instanceType(this)._eval$1("~(1)")._as(_onData);
     },
-    set$_onDone: function(_onDone) {
+    set$_onDone(_onDone) {
       this._onDone = type$.void_Function._as(_onDone);
     },
-    set$_pending: function(_pending) {
-      this._pending = H._instanceType(this)._eval$1("_PendingEvents<1>?")._as(_pending);
+    set$_pending(_pending) {
+      this._pending = A._instanceType(this)._eval$1("_PendingEvents<1>?")._as(_pending);
     },
     $isStreamSubscription: 1,
     $is_EventDispatch: 1
   };
-  P._BufferingStreamSubscription_asFuture_closure.prototype = {
-    call$0: function() {
+  A._BufferingStreamSubscription_asFuture_closure.prototype = {
+    call$0() {
       this.result._complete$1(this._box_0.resultValue);
     },
     $signature: 0
   };
-  P._BufferingStreamSubscription_asFuture_closure0.prototype = {
-    call$2: function(error, stackTrace) {
+  A._BufferingStreamSubscription_asFuture_closure0.prototype = {
+    call$2(error, stackTrace) {
       var cancelFuture = this.$this.cancel$0(),
         t1 = this.result;
       if (cancelFuture !== $.$get$Future__nullFuture())
-        cancelFuture.whenComplete$1(new P._BufferingStreamSubscription_asFuture__closure(t1, error, stackTrace));
+        cancelFuture.whenComplete$1(new A._BufferingStreamSubscription_asFuture__closure(t1, error, stackTrace));
       else
         t1._completeError$2(error, stackTrace);
     },
     $signature: 5
   };
-  P._BufferingStreamSubscription_asFuture__closure.prototype = {
-    call$0: function() {
+  A._BufferingStreamSubscription_asFuture__closure.prototype = {
+    call$0() {
       this.result._completeError$2(this.error, this.stackTrace);
     },
     $signature: 3
   };
-  P._BufferingStreamSubscription__sendError_sendError.prototype = {
-    call$0: function() {
+  A._BufferingStreamSubscription__sendError_sendError.prototype = {
+    call$0() {
       var onError, t3, t4,
         t1 = this.$this,
         t2 = t1._state;
@@ -6063,8 +6293,8 @@
     },
     $signature: 0
   };
-  P._BufferingStreamSubscription__sendDone_sendDone.prototype = {
-    call$0: function() {
+  A._BufferingStreamSubscription__sendDone_sendDone.prototype = {
+    call$0() {
       var t1 = this.$this,
         t2 = t1._state;
       if ((t2 & 16) === 0)
@@ -6075,55 +6305,55 @@
     },
     $signature: 0
   };
-  P._StreamImpl.prototype = {
-    listen$4$cancelOnError$onDone$onError: function(onData, cancelOnError, onDone, onError) {
+  A._StreamImpl.prototype = {
+    listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) {
       var t1 = this.$ti;
       t1._eval$1("~(1)?")._as(onData);
       type$.nullable_void_Function._as(onDone);
       return this._controller._subscribe$4(t1._eval$1("~(1)?")._as(onData), onError, onDone, cancelOnError === true);
     },
-    listen$1: function(onData) {
+    listen$1(onData) {
       return this.listen$4$cancelOnError$onDone$onError(onData, null, null, null);
     },
-    listen$2$cancelOnError: function(onData, cancelOnError) {
+    listen$2$cancelOnError(onData, cancelOnError) {
       return this.listen$4$cancelOnError$onDone$onError(onData, cancelOnError, null, null);
     },
-    listen$2$onDone: function(onData, onDone) {
+    listen$2$onDone(onData, onDone) {
       return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, null);
     }
   };
-  P._DelayedEvent.prototype = {
-    set$next: function(next) {
+  A._DelayedEvent.prototype = {
+    set$next(next) {
       this.next = type$.nullable__DelayedEvent_dynamic._as(next);
     },
-    get$next: function() {
+    get$next() {
       return this.next;
     }
   };
-  P._DelayedData.prototype = {
-    perform$1: function(dispatch) {
+  A._DelayedData.prototype = {
+    perform$1(dispatch) {
       this.$ti._eval$1("_EventDispatch<1>")._as(dispatch)._sendData$1(this.value);
     }
   };
-  P._DelayedError.prototype = {
-    perform$1: function(dispatch) {
+  A._DelayedError.prototype = {
+    perform$1(dispatch) {
       dispatch._sendError$2(this.error, this.stackTrace);
     }
   };
-  P._DelayedDone.prototype = {
-    perform$1: function(dispatch) {
+  A._DelayedDone.prototype = {
+    perform$1(dispatch) {
       dispatch._sendDone$0();
     },
-    get$next: function() {
+    get$next() {
       return null;
     },
-    set$next: function(_) {
-      throw H.wrapException(P.StateError$("No events after a done."));
+    set$next(_) {
+      throw A.wrapException(A.StateError$("No events after a done."));
     },
     $is_DelayedEvent: 1
   };
-  P._PendingEvents.prototype = {
-    schedule$1: function(dispatch) {
+  A._PendingEvents.prototype = {
+    schedule$1(dispatch) {
       var t1, _this = this;
       _this.$ti._eval$1("_EventDispatch<1>")._as(dispatch);
       t1 = _this._state;
@@ -6133,12 +6363,22 @@
         _this._state = 1;
         return;
       }
-      P.scheduleMicrotask(new P._PendingEvents_schedule_closure(_this, dispatch));
+      A.scheduleMicrotask(new A._PendingEvents_schedule_closure(_this, dispatch));
       _this._state = 1;
+    },
+    add$1(_, $event) {
+      var _this = this,
+        lastEvent = _this.lastPendingEvent;
+      if (lastEvent == null)
+        _this.firstPendingEvent = _this.lastPendingEvent = $event;
+      else {
+        lastEvent.set$next($event);
+        _this.lastPendingEvent = $event;
+      }
     }
   };
-  P._PendingEvents_schedule_closure.prototype = {
-    call$0: function() {
+  A._PendingEvents_schedule_closure.prototype = {
+    call$0() {
       var t2, $event, nextEvent,
         t1 = this.$this,
         oldState = t1._state;
@@ -6155,285 +6395,275 @@
     },
     $signature: 0
   };
-  P._StreamImplEvents.prototype = {
-    add$1: function(_, $event) {
-      var _this = this,
-        lastEvent = _this.lastPendingEvent;
-      if (lastEvent == null)
-        _this.firstPendingEvent = _this.lastPendingEvent = $event;
-      else {
-        lastEvent.set$next($event);
-        _this.lastPendingEvent = $event;
-      }
-    }
-  };
-  P._StreamIterator.prototype = {};
-  P._cancelAndValue_closure.prototype = {
-    call$0: function() {
+  A._StreamIterator.prototype = {};
+  A._cancelAndValue_closure.prototype = {
+    call$0() {
       return this.future._complete$1(this.value);
     },
     $signature: 0
   };
-  P._Zone.prototype = {$isZone: 1};
-  P._rootHandleUncaughtError_closure.prototype = {
-    call$0: function() {
-      var error = type$.Object._as(H.wrapException(this.error));
-      error.stack = this.stackTrace.toString$0(0);
-      throw error;
+  A._Zone.prototype = {$isZone: 1};
+  A._rootHandleError_closure.prototype = {
+    call$0() {
+      A.Error_throwWithStackTrace(this.error, this.stackTrace);
     },
     $signature: 0
   };
-  P._RootZone.prototype = {
-    runGuarded$1: function(f) {
-      var e, s, exception, _null = null;
+  A._RootZone.prototype = {
+    runGuarded$1(f) {
+      var e, s, exception;
       type$.void_Function._as(f);
       try {
-        if (C.C__RootZone === $.Zone__current) {
+        if (B.C__RootZone === $.Zone__current) {
           f.call$0();
           return;
         }
-        P._rootRun(_null, _null, this, f, type$.void);
+        A._rootRun(null, null, this, f, type$.void);
       } catch (exception) {
-        e = H.unwrapException(exception);
-        s = H.getTraceFromException(exception);
-        P._rootHandleUncaughtError(_null, _null, this, type$.Object._as(e), type$.StackTrace._as(s));
+        e = A.unwrapException(exception);
+        s = A.getTraceFromException(exception);
+        A._rootHandleError(type$.Object._as(e), type$.StackTrace._as(s));
       }
     },
-    runUnaryGuarded$1$2: function(f, arg, $T) {
-      var e, s, exception, _null = null;
+    runUnaryGuarded$1$2(f, arg, $T) {
+      var e, s, exception;
       $T._eval$1("~(0)")._as(f);
       $T._as(arg);
       try {
-        if (C.C__RootZone === $.Zone__current) {
+        if (B.C__RootZone === $.Zone__current) {
           f.call$1(arg);
           return;
         }
-        P._rootRunUnary(_null, _null, this, f, arg, type$.void, $T);
+        A._rootRunUnary(null, null, this, f, arg, type$.void, $T);
       } catch (exception) {
-        e = H.unwrapException(exception);
-        s = H.getTraceFromException(exception);
-        P._rootHandleUncaughtError(_null, _null, this, type$.Object._as(e), type$.StackTrace._as(s));
+        e = A.unwrapException(exception);
+        s = A.getTraceFromException(exception);
+        A._rootHandleError(type$.Object._as(e), type$.StackTrace._as(s));
       }
     },
-    runBinaryGuarded$2$3: function(f, arg1, arg2, T1, T2) {
-      var e, s, exception, _null = null;
+    runBinaryGuarded$2$3(f, arg1, arg2, T1, T2) {
+      var e, s, exception;
       T1._eval$1("@<0>")._bind$1(T2)._eval$1("~(1,2)")._as(f);
       T1._as(arg1);
       T2._as(arg2);
       try {
-        if (C.C__RootZone === $.Zone__current) {
+        if (B.C__RootZone === $.Zone__current) {
           f.call$2(arg1, arg2);
           return;
         }
-        P._rootRunBinary(_null, _null, this, f, arg1, arg2, type$.void, T1, T2);
+        A._rootRunBinary(null, null, this, f, arg1, arg2, type$.void, T1, T2);
       } catch (exception) {
-        e = H.unwrapException(exception);
-        s = H.getTraceFromException(exception);
-        P._rootHandleUncaughtError(_null, _null, this, type$.Object._as(e), type$.StackTrace._as(s));
+        e = A.unwrapException(exception);
+        s = A.getTraceFromException(exception);
+        A._rootHandleError(type$.Object._as(e), type$.StackTrace._as(s));
       }
     },
-    bindCallbackGuarded$1: function(f) {
-      return new P._RootZone_bindCallbackGuarded_closure(this, type$.void_Function._as(f));
+    bindCallbackGuarded$1(f) {
+      return new A._RootZone_bindCallbackGuarded_closure(this, type$.void_Function._as(f));
     },
-    bindUnaryCallbackGuarded$1$1: function(f, $T) {
-      return new P._RootZone_bindUnaryCallbackGuarded_closure(this, $T._eval$1("~(0)")._as(f), $T);
+    bindUnaryCallbackGuarded$1$1(f, $T) {
+      return new A._RootZone_bindUnaryCallbackGuarded_closure(this, $T._eval$1("~(0)")._as(f), $T);
     },
-    run$1$1: function(f, $R) {
+    run$1$1(f, $R) {
       $R._eval$1("0()")._as(f);
-      if ($.Zone__current === C.C__RootZone)
+      if ($.Zone__current === B.C__RootZone)
         return f.call$0();
-      return P._rootRun(null, null, this, f, $R);
+      return A._rootRun(null, null, this, f, $R);
     },
-    runUnary$2$2: function(f, arg, $R, $T) {
+    runUnary$2$2(f, arg, $R, $T) {
       $R._eval$1("@<0>")._bind$1($T)._eval$1("1(2)")._as(f);
       $T._as(arg);
-      if ($.Zone__current === C.C__RootZone)
+      if ($.Zone__current === B.C__RootZone)
         return f.call$1(arg);
-      return P._rootRunUnary(null, null, this, f, arg, $R, $T);
+      return A._rootRunUnary(null, null, this, f, arg, $R, $T);
     },
-    runBinary$3$3: function(f, arg1, arg2, $R, T1, T2) {
+    runBinary$3$3(f, arg1, arg2, $R, T1, T2) {
       $R._eval$1("@<0>")._bind$1(T1)._bind$1(T2)._eval$1("1(2,3)")._as(f);
       T1._as(arg1);
       T2._as(arg2);
-      if ($.Zone__current === C.C__RootZone)
+      if ($.Zone__current === B.C__RootZone)
         return f.call$2(arg1, arg2);
-      return P._rootRunBinary(null, null, this, f, arg1, arg2, $R, T1, T2);
+      return A._rootRunBinary(null, null, this, f, arg1, arg2, $R, T1, T2);
     },
-    registerBinaryCallback$3$1: function(f, $R, T1, T2) {
+    registerBinaryCallback$3$1(f, $R, T1, T2) {
       return $R._eval$1("@<0>")._bind$1(T1)._bind$1(T2)._eval$1("1(2,3)")._as(f);
     }
   };
-  P._RootZone_bindCallbackGuarded_closure.prototype = {
-    call$0: function() {
+  A._RootZone_bindCallbackGuarded_closure.prototype = {
+    call$0() {
       return this.$this.runGuarded$1(this.f);
     },
     $signature: 0
   };
-  P._RootZone_bindUnaryCallbackGuarded_closure.prototype = {
-    call$1: function(arg) {
+  A._RootZone_bindUnaryCallbackGuarded_closure.prototype = {
+    call$1(arg) {
       var t1 = this.T;
       return this.$this.runUnaryGuarded$1$2(this.f, t1._as(arg), t1);
     },
-    $signature: function() {
+    $signature() {
       return this.T._eval$1("~(0)");
     }
   };
-  P.ListMixin.prototype = {
-    get$iterator: function(receiver) {
-      return new H.ListIterator(receiver, this.get$length(receiver), H.instanceType(receiver)._eval$1("ListIterator<ListMixin.E>"));
+  A.ListBase.prototype = {
+    get$iterator(receiver) {
+      return new A.ListIterator(receiver, this.get$length(receiver), A.instanceType(receiver)._eval$1("ListIterator<ListBase.E>"));
     },
-    elementAt$1: function(receiver, index) {
+    elementAt$1(receiver, index) {
       return this.$index(receiver, index);
     },
-    forEach$1: function(receiver, action) {
+    forEach$1(receiver, action) {
       var $length, i;
-      H.instanceType(receiver)._eval$1("~(ListMixin.E)")._as(action);
+      A.instanceType(receiver)._eval$1("~(ListBase.E)")._as(action);
       $length = this.get$length(receiver);
       for (i = 0; i < $length; ++i) {
         action.call$1(this.$index(receiver, i));
         if ($length !== this.get$length(receiver))
-          throw H.wrapException(P.ConcurrentModificationError$(receiver));
+          throw A.wrapException(A.ConcurrentModificationError$(receiver));
       }
     },
-    get$isNotEmpty: function(receiver) {
+    get$isNotEmpty(receiver) {
       return this.get$length(receiver) !== 0;
     },
-    toString$0: function(receiver) {
-      return P.IterableBase_iterableToFullString(receiver, "[", "]");
+    toString$0(receiver) {
+      return A.Iterable_iterableToFullString(receiver, "[", "]");
     }
   };
-  P.MapBase.prototype = {};
-  P.MapBase_mapToString_closure.prototype = {
-    call$2: function(k, v) {
+  A.MapBase.prototype = {
+    forEach$1(_, action) {
+      var t2, key, t3,
+        t1 = A._instanceType(this);
+      t1._eval$1("~(MapBase.K,MapBase.V)")._as(action);
+      for (t2 = this.get$keys(), t2 = t2.get$iterator(t2), t1 = t1._eval$1("MapBase.V"); t2.moveNext$0();) {
+        key = t2.get$current();
+        t3 = this.$index(0, key);
+        action.call$2(key, t3 == null ? t1._as(t3) : t3);
+      }
+    },
+    get$length(_) {
+      var t1 = this.get$keys();
+      return t1.get$length(t1);
+    },
+    get$isEmpty(_) {
+      var t1 = this.get$keys();
+      return t1.get$isEmpty(t1);
+    },
+    toString$0(_) {
+      return A.MapBase_mapToString(this);
+    },
+    $isMap: 1
+  };
+  A.MapBase_mapToString_closure.prototype = {
+    call$2(k, v) {
       var t2,
         t1 = this._box_0;
       if (!t1.first)
         this.result._contents += ", ";
       t1.first = false;
       t1 = this.result;
-      t2 = t1._contents += H.S(k);
+      t2 = t1._contents += A.S(k);
       t1._contents = t2 + ": ";
-      t1._contents += H.S(v);
+      t1._contents += A.S(v);
     },
     $signature: 10
   };
-  P.MapMixin.prototype = {
-    forEach$1: function(_, action) {
-      var t2, key,
-        t1 = H._instanceType(this);
-      t1._eval$1("~(MapMixin.K,MapMixin.V)")._as(action);
-      for (t2 = this.get$keys(), t2 = t2.get$iterator(t2), t1 = t1._eval$1("MapMixin.V"); t2.moveNext$0();) {
-        key = t2.get$current();
-        action.call$2(key, t1._as(this.$index(0, key)));
-      }
-    },
-    get$length: function(_) {
-      var t1 = this.get$keys();
-      return t1.get$length(t1);
-    },
-    get$isEmpty: function(_) {
-      var t1 = this.get$keys();
-      return t1.get$isEmpty(t1);
-    },
-    toString$0: function(_) {
-      return P.MapBase_mapToString(this);
-    },
-    $isMap: 1
-  };
-  P.ListQueue.prototype = {
-    get$iterator: function(_) {
+  A.ListQueue.prototype = {
+    get$iterator(_) {
       var _this = this;
-      return new P._ListQueueIterator(_this, _this._tail, _this._modificationCount, _this._head, _this.$ti._eval$1("_ListQueueIterator<1>"));
+      return new A._ListQueueIterator(_this, _this._tail, _this._modificationCount, _this._head, _this.$ti._eval$1("_ListQueueIterator<1>"));
     },
-    get$isEmpty: function(_) {
+    get$isEmpty(_) {
       return this._head === this._tail;
     },
-    get$length: function(_) {
+    get$length(_) {
       return (this._tail - this._head & this._table.length - 1) >>> 0;
     },
-    elementAt$1: function(_, index) {
-      var t1, t2, t3, _this = this,
-        $length = _this.get$length(_this);
-      if (0 > index || index >= $length)
-        H.throwExpression(P.IndexError$(index, _this, "index", null, $length));
+    elementAt$1(_, index) {
+      var t2, t3, _this = this,
+        t1 = _this.get$length(_this);
+      if (0 > index || index >= t1)
+        A.throwExpression(A.IndexError$withLength(index, t1, _this, null, "index"));
       t1 = _this._table;
       t2 = t1.length;
       t3 = (_this._head + index & t2 - 1) >>> 0;
-      if (t3 < 0 || t3 >= t2)
-        return H.ioore(t1, t3);
-      return _this.$ti._precomputed1._as(t1[t3]);
+      if (!(t3 >= 0 && t3 < t2))
+        return A.ioore(t1, t3);
+      t3 = t1[t3];
+      return t3 == null ? _this.$ti._precomputed1._as(t3) : t3;
     },
-    toString$0: function(_) {
-      return P.IterableBase_iterableToFullString(this, "{", "}");
+    toString$0(_) {
+      return A.Iterable_iterableToFullString(this, "{", "}");
     },
-    removeFirst$0: function() {
+    removeFirst$0() {
       var t2, result, _this = this,
         t1 = _this._head;
       if (t1 === _this._tail)
-        throw H.wrapException(H.IterableElementError_noElement());
+        throw A.wrapException(A.IterableElementError_noElement());
       ++_this._modificationCount;
       t2 = _this._table;
-      if (t1 >= t2.length)
-        return H.ioore(t2, t1);
-      result = _this.$ti._precomputed1._as(t2[t1]);
-      C.JSArray_methods.$indexSet(t2, t1, null);
+      if (!(t1 < t2.length))
+        return A.ioore(t2, t1);
+      result = t2[t1];
+      if (result == null)
+        result = _this.$ti._precomputed1._as(result);
+      B.JSArray_methods.$indexSet(t2, t1, null);
       _this._head = (_this._head + 1 & _this._table.length - 1) >>> 0;
       return result;
     },
-    _add$1: function(element) {
+    _add$1(element) {
       var t2, t3, newTable, split, _this = this,
         t1 = _this.$ti;
       t1._precomputed1._as(element);
-      C.JSArray_methods.$indexSet(_this._table, _this._tail, element);
+      B.JSArray_methods.$indexSet(_this._table, _this._tail, element);
       t2 = _this._tail;
       t3 = _this._table.length;
       t2 = (t2 + 1 & t3 - 1) >>> 0;
       _this._tail = t2;
       if (_this._head === t2) {
-        newTable = P.List_List$filled(t3 * 2, null, false, t1._eval$1("1?"));
+        newTable = A.List_List$filled(t3 * 2, null, false, t1._eval$1("1?"));
         t1 = _this._table;
         t2 = _this._head;
         split = t1.length - t2;
-        C.JSArray_methods.setRange$4(newTable, 0, split, t1, t2);
-        C.JSArray_methods.setRange$4(newTable, split, split + _this._head, _this._table, 0);
+        B.JSArray_methods.setRange$4(newTable, 0, split, t1, t2);
+        B.JSArray_methods.setRange$4(newTable, split, split + _this._head, _this._table, 0);
         _this._head = 0;
         _this._tail = _this._table.length;
         _this.set$_table(newTable);
       }
       ++_this._modificationCount;
     },
-    set$_table: function(_table) {
+    set$_table(_table) {
       this._table = this.$ti._eval$1("List<1?>")._as(_table);
     },
     $isQueue: 1
   };
-  P._ListQueueIterator.prototype = {
-    get$current: function() {
-      return this.$ti._precomputed1._as(this._collection$_current);
+  A._ListQueueIterator.prototype = {
+    get$current() {
+      var t1 = this._collection$_current;
+      return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
     },
-    moveNext$0: function() {
+    moveNext$0() {
       var t2, t3, _this = this,
         t1 = _this._queue;
       if (_this._modificationCount !== t1._modificationCount)
-        H.throwExpression(P.ConcurrentModificationError$(t1));
+        A.throwExpression(A.ConcurrentModificationError$(t1));
       t2 = _this._position;
       if (t2 === _this._end) {
         _this.set$_collection$_current(null);
         return false;
       }
       t3 = t1._table;
-      if (t2 >= t3.length)
-        return H.ioore(t3, t2);
+      if (!(t2 < t3.length))
+        return A.ioore(t3, t2);
       _this.set$_collection$_current(t3[t2]);
       _this._position = (_this._position + 1 & t1._table.length - 1) >>> 0;
       return true;
     },
-    set$_collection$_current: function(_current) {
+    set$_collection$_current(_current) {
       this._collection$_current = this.$ti._eval$1("1?")._as(_current);
     }
   };
-  P._JsonMap.prototype = {
-    $index: function(_, key) {
+  A._JsonMap.prototype = {
+    $index(_, key) {
       var result,
         t1 = this._processed;
       if (t1 == null)
@@ -6445,20 +6675,20 @@
         return typeof result == "undefined" ? this._process$1(key) : result;
       }
     },
-    get$length: function(_) {
+    get$length(_) {
       return this._processed == null ? this._data.__js_helper$_length : this._computeKeys$0().length;
     },
-    get$isEmpty: function(_) {
+    get$isEmpty(_) {
       return this.get$length(this) === 0;
     },
-    get$keys: function() {
+    get$keys() {
       if (this._processed == null) {
         var t1 = this._data;
-        return new H.LinkedHashMapKeyIterable(t1, H._instanceType(t1)._eval$1("LinkedHashMapKeyIterable<1>"));
+        return new A.LinkedHashMapKeyIterable(t1, t1.$ti._eval$1("LinkedHashMapKeyIterable<1>"));
       }
-      return new P._JsonMapKeyIterable(this);
+      return new A._JsonMapKeyIterable(this);
     },
-    forEach$1: function(_, f) {
+    forEach$1(_, f) {
       var keys, i, key, value, _this = this;
       type$.void_Function_String_dynamic._as(f);
       if (_this._processed == null)
@@ -6468,110 +6698,106 @@
         key = keys[i];
         value = _this._processed[key];
         if (typeof value == "undefined") {
-          value = P._convertJsonToDartLazy(_this._original[key]);
+          value = A._convertJsonToDartLazy(_this._original[key]);
           _this._processed[key] = value;
         }
         f.call$2(key, value);
         if (keys !== _this._data)
-          throw H.wrapException(P.ConcurrentModificationError$(_this));
+          throw A.wrapException(A.ConcurrentModificationError$(_this));
       }
     },
-    _computeKeys$0: function() {
+    _computeKeys$0() {
       var keys = type$.nullable_List_dynamic._as(this._data);
       if (keys == null)
-        keys = this._data = H.setRuntimeTypeInfo(Object.keys(this._original), type$.JSArray_String);
+        keys = this._data = A._setArrayType(Object.keys(this._original), type$.JSArray_String);
       return keys;
     },
-    _process$1: function(key) {
+    _process$1(key) {
       var result;
       if (!Object.prototype.hasOwnProperty.call(this._original, key))
         return null;
-      result = P._convertJsonToDartLazy(this._original[key]);
+      result = A._convertJsonToDartLazy(this._original[key]);
       return this._processed[key] = result;
     }
   };
-  P._JsonMapKeyIterable.prototype = {
-    get$length: function(_) {
+  A._JsonMapKeyIterable.prototype = {
+    get$length(_) {
       var t1 = this._parent;
       return t1.get$length(t1);
     },
-    elementAt$1: function(_, index) {
+    elementAt$1(_, index) {
       var t1 = this._parent;
       if (t1._processed == null)
         t1 = t1.get$keys().elementAt$1(0, index);
       else {
         t1 = t1._computeKeys$0();
-        if (index < 0 || index >= t1.length)
-          return H.ioore(t1, index);
+        if (!(index >= 0 && index < t1.length))
+          return A.ioore(t1, index);
         t1 = t1[index];
       }
       return t1;
     },
-    get$iterator: function(_) {
+    get$iterator(_) {
       var t1 = this._parent;
       if (t1._processed == null) {
         t1 = t1.get$keys();
         t1 = t1.get$iterator(t1);
       } else {
         t1 = t1._computeKeys$0();
-        t1 = new J.ArrayIterator(t1, t1.length, H._arrayInstanceType(t1)._eval$1("ArrayIterator<1>"));
+        t1 = new J.ArrayIterator(t1, t1.length, A._arrayInstanceType(t1)._eval$1("ArrayIterator<1>"));
       }
       return t1;
     }
   };
-  P.Codec.prototype = {};
-  P.Converter.prototype = {};
-  P.JsonUnsupportedObjectError.prototype = {
-    toString$0: function(_) {
-      var safeString = P.Error_safeToString(this.unsupportedObject);
+  A.Codec.prototype = {};
+  A.Converter.prototype = {};
+  A.JsonUnsupportedObjectError.prototype = {
+    toString$0(_) {
+      var safeString = A.Error_safeToString(this.unsupportedObject);
       return (this.cause != null ? "Converting object to an encodable object failed:" : "Converting object did not return an encodable object:") + " " + safeString;
     }
   };
-  P.JsonCyclicError.prototype = {
-    toString$0: function(_) {
+  A.JsonCyclicError.prototype = {
+    toString$0(_) {
       return "Cyclic error in JSON stringify";
     }
   };
-  P.JsonCodec.prototype = {
-    decode$2$reviver: function(_, source, reviver) {
-      var t1;
-      type$.nullable_nullable_Object_Function_2_nullable_Object_and_nullable_Object._as(reviver);
-      t1 = P._parseJson(source, this.get$decoder()._reviver);
+  A.JsonCodec.prototype = {
+    decode$2$reviver(_, source, reviver) {
+      var t1 = A._parseJson(source, this.get$decoder()._reviver);
       return t1;
     },
-    encode$2$toEncodable: function(value, toEncodable) {
-      var t1;
-      type$.nullable_nullable_Object_Function_dynamic._as(toEncodable);
-      t1 = P._JsonStringStringifier_stringify(value, this.get$encoder()._toEncodable, null);
+    encode$2$toEncodable(value, toEncodable) {
+      var t1 = A._JsonStringStringifier_stringify(value, this.get$encoder()._toEncodable, null);
       return t1;
     },
-    get$encoder: function() {
-      return C.JsonEncoder_null;
+    get$encoder() {
+      return B.JsonEncoder_null;
     },
-    get$decoder: function() {
-      return C.JsonDecoder_null;
+    get$decoder() {
+      return B.JsonDecoder_null;
     }
   };
-  P.JsonEncoder.prototype = {};
-  P.JsonDecoder.prototype = {};
-  P._JsonStringifier.prototype = {
-    writeStringContent$1: function(s) {
+  A.JsonEncoder.prototype = {};
+  A.JsonDecoder.prototype = {};
+  A._JsonStringifier.prototype = {
+    writeStringContent$1(s) {
       var offset, i, charCode, t1, t2, _this = this,
         $length = s.length;
       for (offset = 0, i = 0; i < $length; ++i) {
-        charCode = C.JSString_methods._codeUnitAt$1(s, i);
+        charCode = s.charCodeAt(i);
         if (charCode > 92) {
           if (charCode >= 55296) {
             t1 = charCode & 64512;
             if (t1 === 55296) {
               t2 = i + 1;
-              t2 = !(t2 < $length && (C.JSString_methods._codeUnitAt$1(s, t2) & 64512) === 56320);
+              t2 = !(t2 < $length && (s.charCodeAt(t2) & 64512) === 56320);
             } else
               t2 = false;
             if (!t2)
               if (t1 === 56320) {
                 t1 = i - 1;
-                t1 = !(t1 >= 0 && (C.JSString_methods.codeUnitAt$1(s, t1) & 64512) === 55296);
+                t1 = !(t1 >= 0 && (s.charCodeAt(t1) & 64512) === 55296);
               } else
                 t1 = false;
             else
@@ -6637,16 +6863,16 @@
       else if (offset < $length)
         _this.writeStringSlice$3(s, offset, $length);
     },
-    _checkCycle$1: function(object) {
+    _checkCycle$1(object) {
       var t1, t2, i, t3;
       for (t1 = this._seen, t2 = t1.length, i = 0; i < t2; ++i) {
         t3 = t1[i];
         if (object == null ? t3 == null : object === t3)
-          throw H.wrapException(new P.JsonCyclicError(object, null));
+          throw A.wrapException(new A.JsonCyclicError(object, null));
       }
-      C.JSArray_methods.add$1(t1, object);
+      B.JSArray_methods.add$1(t1, object);
     },
-    writeObject$1: function(object) {
+    writeObject$1(object) {
       var customJson, e, t1, exception, _this = this;
       if (_this.writeJsonValue$1(object))
         return;
@@ -6654,20 +6880,20 @@
       try {
         customJson = _this._toEncodable.call$1(object);
         if (!_this.writeJsonValue$1(customJson)) {
-          t1 = P.JsonUnsupportedObjectError$(object, null, _this.get$_partialResult());
-          throw H.wrapException(t1);
+          t1 = A.JsonUnsupportedObjectError$(object, null, _this.get$_partialResult());
+          throw A.wrapException(t1);
         }
         t1 = _this._seen;
         if (0 >= t1.length)
-          return H.ioore(t1, -1);
+          return A.ioore(t1, -1);
         t1.pop();
       } catch (exception) {
-        e = H.unwrapException(exception);
-        t1 = P.JsonUnsupportedObjectError$(object, e, _this.get$_partialResult());
-        throw H.wrapException(t1);
+        e = A.unwrapException(exception);
+        t1 = A.JsonUnsupportedObjectError$(object, e, _this.get$_partialResult());
+        throw A.wrapException(t1);
       }
     },
-    writeJsonValue$1: function(object) {
+    writeJsonValue$1(object) {
       var t1, success, _this = this;
       if (typeof object == "number") {
         if (!isFinite(object))
@@ -6693,7 +6919,7 @@
         _this.writeList$1(object);
         t1 = _this._seen;
         if (0 >= t1.length)
-          return H.ioore(t1, -1);
+          return A.ioore(t1, -1);
         t1.pop();
         return true;
       } else if (type$.Map_dynamic_dynamic._is(object)) {
@@ -6701,13 +6927,13 @@
         success = _this.writeMap$1(object);
         t1 = _this._seen;
         if (0 >= t1.length)
-          return H.ioore(t1, -1);
+          return A.ioore(t1, -1);
         t1.pop();
         return success;
       } else
         return false;
     },
-    writeList$1: function(list) {
+    writeList$1(list) {
       var t1, i, _this = this;
       _this.writeString$1("[");
       t1 = J.getInterceptor$asx(list);
@@ -6720,264 +6946,236 @@
       }
       _this.writeString$1("]");
     },
-    writeMap$1: function(map) {
+    writeMap$1(map) {
       var t1, keyValueList, i, separator, t2, _this = this, _box_0 = {};
       if (map.get$isEmpty(map)) {
         _this.writeString$1("{}");
         return true;
       }
       t1 = map.get$length(map) * 2;
-      keyValueList = P.List_List$filled(t1, null, false, type$.nullable_Object);
+      keyValueList = A.List_List$filled(t1, null, false, type$.nullable_Object);
       i = _box_0.i = 0;
       _box_0.allStringKeys = true;
-      map.forEach$1(0, new P._JsonStringifier_writeMap_closure(_box_0, keyValueList));
+      map.forEach$1(0, new A._JsonStringifier_writeMap_closure(_box_0, keyValueList));
       if (!_box_0.allStringKeys)
         return false;
       _this.writeString$1("{");
       for (separator = '"'; i < t1; i += 2, separator = ',"') {
         _this.writeString$1(separator);
-        _this.writeStringContent$1(H._asString(keyValueList[i]));
+        _this.writeStringContent$1(A._asString(keyValueList[i]));
         _this.writeString$1('":');
         t2 = i + 1;
-        if (t2 >= t1)
-          return H.ioore(keyValueList, t2);
+        if (!(t2 < t1))
+          return A.ioore(keyValueList, t2);
         _this.writeObject$1(keyValueList[t2]);
       }
       _this.writeString$1("}");
       return true;
     }
   };
-  P._JsonStringifier_writeMap_closure.prototype = {
-    call$2: function(key, value) {
+  A._JsonStringifier_writeMap_closure.prototype = {
+    call$2(key, value) {
       var t1, t2;
       if (typeof key != "string")
         this._box_0.allStringKeys = false;
       t1 = this.keyValueList;
       t2 = this._box_0;
-      C.JSArray_methods.$indexSet(t1, t2.i++, key);
-      C.JSArray_methods.$indexSet(t1, t2.i++, value);
+      B.JSArray_methods.$indexSet(t1, t2.i++, key);
+      B.JSArray_methods.$indexSet(t1, t2.i++, value);
     },
     $signature: 10
   };
-  P._JsonStringStringifier.prototype = {
-    get$_partialResult: function() {
+  A._JsonStringStringifier.prototype = {
+    get$_partialResult() {
       var t1 = this._sink._contents;
       return t1.charCodeAt(0) == 0 ? t1 : t1;
     },
-    writeNumber$1: function(number) {
-      this._sink._contents += C.JSNumber_methods.toString$0(number);
+    writeNumber$1(number) {
+      this._sink._contents += B.JSNumber_methods.toString$0(number);
     },
-    writeString$1: function(string) {
+    writeString$1(string) {
       this._sink._contents += string;
     },
-    writeStringSlice$3: function(string, start, end) {
-      this._sink._contents += C.JSString_methods.substring$2(string, start, end);
+    writeStringSlice$3(string, start, end) {
+      this._sink._contents += B.JSString_methods.substring$2(string, start, end);
     },
-    writeCharCode$1: function(charCode) {
-      this._sink._contents += H.Primitives_stringFromCharCode(charCode);
+    writeCharCode$1(charCode) {
+      this._sink._contents += A.Primitives_stringFromCharCode(charCode);
     }
   };
-  P.DateTime.prototype = {
-    $eq: function(_, other) {
+  A.DateTime.prototype = {
+    $eq(_, other) {
       if (other == null)
         return false;
-      return other instanceof P.DateTime && this._value === other._value && this.isUtc === other.isUtc;
+      return other instanceof A.DateTime && this._value === other._value && this.isUtc === other.isUtc;
     },
-    get$hashCode: function(_) {
+    get$hashCode(_) {
       var t1 = this._value;
-      return (t1 ^ C.JSInt_methods._shrOtherPositive$1(t1, 30)) & 1073741823;
+      return (t1 ^ B.JSInt_methods._shrOtherPositive$1(t1, 30)) & 1073741823;
     },
-    toString$0: function(_) {
+    toString$0(_) {
       var _this = this,
-        y = P.DateTime__fourDigits(H.Primitives_getYear(_this)),
-        m = P.DateTime__twoDigits(H.Primitives_getMonth(_this)),
-        d = P.DateTime__twoDigits(H.Primitives_getDay(_this)),
-        h = P.DateTime__twoDigits(H.Primitives_getHours(_this)),
-        min = P.DateTime__twoDigits(H.Primitives_getMinutes(_this)),
-        sec = P.DateTime__twoDigits(H.Primitives_getSeconds(_this)),
-        ms = P.DateTime__threeDigits(H.Primitives_getMilliseconds(_this));
+        y = A.DateTime__fourDigits(A.Primitives_getYear(_this)),
+        m = A.DateTime__twoDigits(A.Primitives_getMonth(_this)),
+        d = A.DateTime__twoDigits(A.Primitives_getDay(_this)),
+        h = A.DateTime__twoDigits(A.Primitives_getHours(_this)),
+        min = A.DateTime__twoDigits(A.Primitives_getMinutes(_this)),
+        sec = A.DateTime__twoDigits(A.Primitives_getSeconds(_this)),
+        ms = A.DateTime__threeDigits(A.Primitives_getMilliseconds(_this)),
+        t1 = y + "-" + m;
       if (_this.isUtc)
-        return y + "-" + m + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms + "Z";
+        return t1 + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms + "Z";
       else
-        return y + "-" + m + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms;
+        return t1 + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms;
     }
   };
-  P.Duration.prototype = {
-    $eq: function(_, other) {
+  A.Duration.prototype = {
+    $eq(_, other) {
       if (other == null)
         return false;
-      return other instanceof P.Duration && this._duration === other._duration;
+      return other instanceof A.Duration && this._duration === other._duration;
     },
-    get$hashCode: function(_) {
-      return C.JSInt_methods.get$hashCode(this._duration);
+    get$hashCode(_) {
+      return B.JSInt_methods.get$hashCode(this._duration);
     },
-    toString$0: function(_) {
-      var twoDigitMinutes, twoDigitSeconds, sixDigitUs,
-        t1 = new P.Duration_toString_twoDigits(),
-        t2 = this._duration;
-      if (t2 < 0)
-        return "-" + new P.Duration(0 - t2).toString$0(0);
-      twoDigitMinutes = t1.call$1(C.JSInt_methods._tdivFast$1(t2, 60000000) % 60);
-      twoDigitSeconds = t1.call$1(C.JSInt_methods._tdivFast$1(t2, 1000000) % 60);
-      sixDigitUs = new P.Duration_toString_sixDigits().call$1(t2 % 1000000);
-      return "" + C.JSInt_methods._tdivFast$1(t2, 3600000000) + ":" + twoDigitMinutes + ":" + twoDigitSeconds + "." + sixDigitUs;
+    toString$0(_) {
+      var minutesPadding, seconds, secondsPadding,
+        microseconds = this._duration,
+        microseconds0 = microseconds % 3600000000,
+        minutes = B.JSInt_methods._tdivFast$1(microseconds0, 60000000);
+      microseconds0 %= 60000000;
+      minutesPadding = minutes < 10 ? "0" : "";
+      seconds = B.JSInt_methods._tdivFast$1(microseconds0, 1000000);
+      secondsPadding = seconds < 10 ? "0" : "";
+      return "" + (microseconds / 3600000000 | 0) + ":" + minutesPadding + minutes + ":" + secondsPadding + seconds + "." + B.JSString_methods.padLeft$2(B.JSInt_methods.toString$0(microseconds0 % 1000000), 6, "0");
     }
   };
-  P.Duration_toString_sixDigits.prototype = {
-    call$1: function(n) {
-      if (n >= 100000)
-        return "" + n;
-      if (n >= 10000)
-        return "0" + n;
-      if (n >= 1000)
-        return "00" + n;
-      if (n >= 100)
-        return "000" + n;
-      if (n >= 10)
-        return "0000" + n;
-      return "00000" + n;
-    },
-    $signature: 11
-  };
-  P.Duration_toString_twoDigits.prototype = {
-    call$1: function(n) {
-      if (n >= 10)
-        return "" + n;
-      return "0" + n;
-    },
-    $signature: 11
-  };
-  P.Error.prototype = {
-    get$stackTrace: function() {
-      return H.getTraceFromException(this.$thrownJsError);
+  A.Error.prototype = {
+    get$stackTrace() {
+      return A.getTraceFromException(this.$thrownJsError);
     }
   };
-  P.AssertionError.prototype = {
-    toString$0: function(_) {
+  A.AssertionError.prototype = {
+    toString$0(_) {
       var t1 = this.message;
       if (t1 != null)
-        return "Assertion failed: " + P.Error_safeToString(t1);
+        return "Assertion failed: " + A.Error_safeToString(t1);
       return "Assertion failed";
     }
   };
-  P.TypeError.prototype = {};
-  P.NullThrownError.prototype = {
-    toString$0: function(_) {
-      return "Throw of null.";
-    }
-  };
-  P.ArgumentError.prototype = {
-    get$_errorName: function() {
+  A.TypeError.prototype = {};
+  A.ArgumentError.prototype = {
+    get$_errorName() {
       return "Invalid argument" + (!this._hasValue ? "(s)" : "");
     },
-    get$_errorExplanation: function() {
+    get$_errorExplanation() {
       return "";
     },
-    toString$0: function(_) {
-      var explanation, errorValue, _this = this,
+    toString$0(_) {
+      var _this = this,
         $name = _this.name,
         nameString = $name == null ? "" : " (" + $name + ")",
         message = _this.message,
-        messageString = message == null ? "" : ": " + H.S(message),
+        messageString = message == null ? "" : ": " + A.S(message),
         prefix = _this.get$_errorName() + nameString + messageString;
       if (!_this._hasValue)
         return prefix;
-      explanation = _this.get$_errorExplanation();
-      errorValue = P.Error_safeToString(_this.invalidValue);
-      return prefix + explanation + ": " + errorValue;
+      return prefix + _this.get$_errorExplanation() + ": " + A.Error_safeToString(_this.get$invalidValue());
+    },
+    get$invalidValue() {
+      return this.invalidValue;
     }
   };
-  P.RangeError.prototype = {
-    get$_errorName: function() {
+  A.RangeError.prototype = {
+    get$invalidValue() {
+      return A._asNumQ(this.invalidValue);
+    },
+    get$_errorName() {
       return "RangeError";
     },
-    get$_errorExplanation: function() {
+    get$_errorExplanation() {
       var explanation,
         start = this.start,
         end = this.end;
       if (start == null)
-        explanation = end != null ? ": Not less than or equal to " + H.S(end) : "";
+        explanation = end != null ? ": Not less than or equal to " + A.S(end) : "";
       else if (end == null)
-        explanation = ": Not greater than or equal to " + H.S(start);
+        explanation = ": Not greater than or equal to " + A.S(start);
       else if (end > start)
-        explanation = ": Not in inclusive range " + H.S(start) + ".." + H.S(end);
+        explanation = ": Not in inclusive range " + A.S(start) + ".." + A.S(end);
       else
-        explanation = end < start ? ": Valid value range is empty" : ": Only valid value is " + H.S(start);
+        explanation = end < start ? ": Valid value range is empty" : ": Only valid value is " + A.S(start);
       return explanation;
     }
   };
-  P.IndexError.prototype = {
-    get$_errorName: function() {
+  A.IndexError.prototype = {
+    get$invalidValue() {
+      return A._asInt(this.invalidValue);
+    },
+    get$_errorName() {
       return "RangeError";
     },
-    get$_errorExplanation: function() {
-      if (H._asInt(this.invalidValue) < 0)
+    get$_errorExplanation() {
+      if (A._asInt(this.invalidValue) < 0)
         return ": index must not be negative";
       var t1 = this.length;
       if (t1 === 0)
         return ": no indices are valid";
       return ": index should be less than " + t1;
     },
-    get$length: function(receiver) {
+    get$length(receiver) {
       return this.length;
     }
   };
-  P.UnsupportedError.prototype = {
-    toString$0: function(_) {
+  A.UnsupportedError.prototype = {
+    toString$0(_) {
       return "Unsupported operation: " + this.message;
     }
   };
-  P.UnimplementedError.prototype = {
-    toString$0: function(_) {
-      var t1 = "UnimplementedError: " + this.message;
-      return t1;
+  A.UnimplementedError.prototype = {
+    toString$0(_) {
+      return "UnimplementedError: " + this.message;
     }
   };
-  P.StateError.prototype = {
-    toString$0: function(_) {
+  A.StateError.prototype = {
+    toString$0(_) {
       return "Bad state: " + this.message;
     }
   };
-  P.ConcurrentModificationError.prototype = {
-    toString$0: function(_) {
+  A.ConcurrentModificationError.prototype = {
+    toString$0(_) {
       var t1 = this.modifiedObject;
       if (t1 == null)
         return "Concurrent modification during iteration.";
-      return "Concurrent modification during iteration: " + P.Error_safeToString(t1) + ".";
+      return "Concurrent modification during iteration: " + A.Error_safeToString(t1) + ".";
     }
   };
-  P.OutOfMemoryError.prototype = {
-    toString$0: function(_) {
+  A.OutOfMemoryError.prototype = {
+    toString$0(_) {
       return "Out of Memory";
     },
-    get$stackTrace: function() {
+    get$stackTrace() {
       return null;
     },
     $isError: 1
   };
-  P.StackOverflowError.prototype = {
-    toString$0: function(_) {
+  A.StackOverflowError.prototype = {
+    toString$0(_) {
       return "Stack Overflow";
     },
-    get$stackTrace: function() {
+    get$stackTrace() {
       return null;
     },
     $isError: 1
   };
-  P.CyclicInitializationError.prototype = {
-    toString$0: function(_) {
-      var t1 = "Reading static variable '" + this.variableName + "' during its initialization";
-      return t1;
-    }
-  };
-  P._Exception.prototype = {
-    toString$0: function(_) {
+  A._Exception.prototype = {
+    toString$0(_) {
       return "Exception: " + this.message;
     }
   };
-  P.FormatException.prototype = {
-    toString$0: function(_) {
-      var t1, lineNum, lineStart, previousCharWasCR, i, char, lineEnd, end, start, prefix, postfix, slice,
+  A.FormatException.prototype = {
+    toString$0(_) {
+      var t1, lineEnd, lineNum, lineStart, previousCharWasCR, i, char, end, start, prefix, postfix,
         message = this.message,
         report = "" !== message ? "FormatException: " + message : "FormatException",
         offset = this.offset,
@@ -6991,11 +7189,13 @@
           offset = null;
         if (offset == null) {
           if (source.length > 78)
-            source = C.JSString_methods.substring$2(source, 0, 75) + "...";
+            source = B.JSString_methods.substring$2(source, 0, 75) + "...";
           return report + "\n" + source;
         }
-        for (lineNum = 1, lineStart = 0, previousCharWasCR = false, i = 0; i < offset; ++i) {
-          char = C.JSString_methods._codeUnitAt$1(source, i);
+        for (lineEnd = source.length, lineNum = 1, lineStart = 0, previousCharWasCR = false, i = 0; i < offset; ++i) {
+          if (!(i < lineEnd))
+            return A.ioore(source, i);
+          char = source.charCodeAt(i);
           if (char === 10) {
             if (lineStart !== i || !previousCharWasCR)
               ++lineNum;
@@ -7008,9 +7208,10 @@
           }
         }
         report = lineNum > 1 ? report + (" (at line " + lineNum + ", character " + (offset - lineStart + 1) + ")\n") : report + (" (at character " + (offset + 1) + ")\n");
-        lineEnd = source.length;
         for (i = offset; i < lineEnd; ++i) {
-          char = C.JSString_methods.codeUnitAt$1(source, i);
+          if (!(i >= 0))
+            return A.ioore(source, i);
+          char = source.charCodeAt(i);
           if (char === 10 || char === 13) {
             lineEnd = i;
             break;
@@ -7040,177 +7241,158 @@
           prefix = "";
           postfix = "";
         }
-        slice = C.JSString_methods.substring$2(source, start, end);
-        return report + prefix + slice + postfix + "\n" + C.JSString_methods.$mul(" ", offset - start + prefix.length) + "^\n";
+        return report + prefix + B.JSString_methods.substring$2(source, start, end) + postfix + "\n" + B.JSString_methods.$mul(" ", offset - start + prefix.length) + "^\n";
       } else
-        return offset != null ? report + (" (at offset " + H.S(offset) + ")") : report;
+        return offset != null ? report + (" (at offset " + A.S(offset) + ")") : report;
     }
   };
-  P.Iterable.prototype = {
-    get$length: function(_) {
+  A.Iterable.prototype = {
+    get$length(_) {
       var count,
         it = this.get$iterator(this);
       for (count = 0; it.moveNext$0();)
         ++count;
       return count;
     },
-    elementAt$1: function(_, index) {
-      var t1, elementIndex, element;
-      P.RangeError_checkNotNegative(index, "index");
-      for (t1 = this.get$iterator(this), elementIndex = 0; t1.moveNext$0();) {
-        element = t1.get$current();
-        if (index === elementIndex)
-          return element;
-        ++elementIndex;
+    elementAt$1(_, index) {
+      var iterator, skipCount;
+      A.RangeError_checkNotNegative(index, "index");
+      iterator = this.get$iterator(this);
+      for (skipCount = index; iterator.moveNext$0();) {
+        if (skipCount === 0)
+          return iterator.get$current();
+        --skipCount;
       }
-      throw H.wrapException(P.IndexError$(index, this, "index", null, elementIndex));
+      throw A.wrapException(A.IndexError$withLength(index, index - skipCount, this, null, "index"));
     },
-    toString$0: function(_) {
-      return P.IterableBase_iterableToShortString(this, "(", ")");
+    toString$0(_) {
+      return A.Iterable_iterableToShortString(this, "(", ")");
     }
   };
-  P.Null.prototype = {
-    get$hashCode: function(_) {
-      return P.Object.prototype.get$hashCode.call(C.JSNull_methods, this);
+  A.Null.prototype = {
+    get$hashCode(_) {
+      return A.Object.prototype.get$hashCode.call(this, this);
     },
-    toString$0: function(_) {
+    toString$0(_) {
       return "null";
     }
   };
-  P.Object.prototype = {constructor: P.Object, $isObject: 1,
-    $eq: function(_, other) {
+  A.Object.prototype = {$isObject: 1,
+    $eq(_, other) {
       return this === other;
     },
-    get$hashCode: function(_) {
-      return H.Primitives_objectHashCode(this);
+    get$hashCode(_) {
+      return A.Primitives_objectHashCode(this);
     },
-    toString$0: function(_) {
-      return "Instance of '" + H.Primitives_objectTypeName(this) + "'";
+    toString$0(_) {
+      return "Instance of '" + A.Primitives_objectTypeName(this) + "'";
     },
-    toString: function() {
+    get$runtimeType(_) {
+      return A.getRuntimeTypeOfDartObject(this);
+    },
+    toString() {
       return this.toString$0(this);
     }
   };
-  P._StringStackTrace.prototype = {
-    toString$0: function(_) {
+  A._StringStackTrace.prototype = {
+    toString$0(_) {
       return this._stackTrace;
     },
     $isStackTrace: 1
   };
-  P.StringBuffer.prototype = {
-    get$length: function(_) {
+  A.StringBuffer.prototype = {
+    get$length(_) {
       return this._contents.length;
     },
-    toString$0: function(_) {
+    toString$0(_) {
       var t1 = this._contents;
       return t1.charCodeAt(0) == 0 ? t1 : t1;
     },
     $isStringSink: 1
   };
-  W.HtmlElement.prototype = {};
-  W.AnchorElement.prototype = {
-    toString$0: function(receiver) {
-      return String(receiver);
+  A.HtmlElement.prototype = {};
+  A.AnchorElement.prototype = {
+    toString$0(receiver) {
+      var t1 = String(receiver);
+      t1.toString;
+      return t1;
     }
   };
-  W.AreaElement.prototype = {
-    toString$0: function(receiver) {
-      return String(receiver);
+  A.AreaElement.prototype = {
+    toString$0(receiver) {
+      var t1 = String(receiver);
+      t1.toString;
+      return t1;
     }
   };
-  W.DomException.prototype = {
-    toString$0: function(receiver) {
-      return String(receiver);
+  A.DomException.prototype = {
+    toString$0(receiver) {
+      var t1 = String(receiver);
+      t1.toString;
+      return t1;
     }
   };
-  W.Element.prototype = {
-    toString$0: function(receiver) {
-      return receiver.localName;
+  A.Element.prototype = {
+    toString$0(receiver) {
+      var t1 = receiver.localName;
+      t1.toString;
+      return t1;
     },
-    get$onClick: function(receiver) {
-      return new W._ElementEventStreamImpl(receiver, "click", false, type$._ElementEventStreamImpl_MouseEvent);
+    get$onClick(receiver) {
+      return new A._ElementEventStreamImpl(receiver, "click", false, type$._ElementEventStreamImpl_MouseEvent);
     },
     $isElement: 1
   };
-  W.Event.prototype = {$isEvent: 1};
-  W.EventSource.prototype = {$isEventSource: 1};
-  W.EventTarget.prototype = {
-    addEventListener$3: function(receiver, type, listener, useCapture) {
+  A.Event.prototype = {$isEvent: 1};
+  A.EventSource.prototype = {$isEventSource: 1};
+  A.EventTarget.prototype = {
+    addEventListener$3(receiver, type, listener, useCapture) {
       type$.nullable_dynamic_Function_Event._as(listener);
       if (listener != null)
         this._addEventListener$3(receiver, type, listener, useCapture);
     },
-    addEventListener$2: function($receiver, type, listener) {
+    addEventListener$2($receiver, type, listener) {
       return this.addEventListener$3($receiver, type, listener, null);
     },
-    _addEventListener$3: function(receiver, type, listener, options) {
-      return receiver.addEventListener(type, H.convertDartClosureToJS(type$.nullable_dynamic_Function_Event._as(listener), 1), options);
+    _addEventListener$3(receiver, type, listener, options) {
+      return receiver.addEventListener(type, A.convertDartClosureToJS(type$.nullable_dynamic_Function_Event._as(listener), 1), options);
     },
-    _removeEventListener$3: function(receiver, type, listener, options) {
-      return receiver.removeEventListener(type, H.convertDartClosureToJS(type$.nullable_dynamic_Function_Event._as(listener), 1), false);
+    _removeEventListener$3(receiver, type, listener, options) {
+      return receiver.removeEventListener(type, A.convertDartClosureToJS(type$.nullable_dynamic_Function_Event._as(listener), 1), false);
     },
     $isEventTarget: 1
   };
-  W.FormElement.prototype = {
-    get$length: function(receiver) {
+  A.FormElement.prototype = {
+    get$length(receiver) {
       return receiver.length;
     }
   };
-  W.HttpRequest.prototype = {
-    open$3$async: function(receiver, method, url, async) {
-      return receiver.open(method, url, true);
-    },
-    set$withCredentials: function(receiver, value) {
-      receiver.withCredentials = true;
-    },
-    $isHttpRequest: 1
-  };
-  W.HttpRequest_request_closure.prototype = {
-    call$1: function(e) {
-      var t1, t2, accepted, unknownRedirect, t3;
-      type$.ProgressEvent._as(e);
-      t1 = this.xhr;
-      t2 = t1.status;
-      t2.toString;
-      accepted = t2 >= 200 && t2 < 300;
-      unknownRedirect = t2 > 307 && t2 < 400;
-      t2 = accepted || t2 === 0 || t2 === 304 || unknownRedirect;
-      t3 = this.completer;
-      if (t2)
-        t3.complete$1(0, t1);
-      else
-        t3.completeError$1(e);
-    },
-    $signature: 20
-  };
-  W.HttpRequestEventTarget.prototype = {};
-  W.MessageEvent.prototype = {$isMessageEvent: 1};
-  W.MouseEvent.prototype = {$isMouseEvent: 1};
-  W.Node.prototype = {
-    toString$0: function(receiver) {
+  A.MessageEvent.prototype = {$isMessageEvent: 1};
+  A.MouseEvent.prototype = {$isMouseEvent: 1};
+  A.Node.prototype = {
+    toString$0(receiver) {
       var value = receiver.nodeValue;
       return value == null ? this.super$Interceptor$toString(receiver) : value;
     }
   };
-  W.ProgressEvent.prototype = {$isProgressEvent: 1};
-  W.SelectElement.prototype = {
-    get$length: function(receiver) {
+  A.SelectElement.prototype = {
+    get$length(receiver) {
       return receiver.length;
     }
   };
-  W.UIEvent.prototype = {};
-  W.EventStreamProvider.prototype = {};
-  W._EventStream.prototype = {
-    listen$4$cancelOnError$onDone$onError: function(onData, cancelOnError, onDone, onError) {
-      var t1 = H._instanceType(this);
+  A.UIEvent.prototype = {};
+  A.EventStreamProvider.prototype = {};
+  A._EventStream.prototype = {
+    listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) {
+      var t1 = A._instanceType(this);
       t1._eval$1("~(1)?")._as(onData);
       type$.nullable_void_Function._as(onDone);
-      return W._EventStreamSubscription$(this._target, this._eventType, onData, false, t1._precomputed1);
+      return A._EventStreamSubscription$(this._target, this._eventType, onData, false, t1._precomputed1);
     }
   };
-  W._ElementEventStreamImpl.prototype = {};
-  W._EventStreamSubscription.prototype = {
-    cancel$0: function() {
+  A._ElementEventStreamImpl.prototype = {};
+  A._EventStreamSubscription.prototype = {
+    cancel$0() {
       var _this = this;
       if (_this._target == null)
         return $.$get$nullFuture();
@@ -7219,17 +7401,17 @@
       _this.set$_html$_onData(null);
       return $.$get$nullFuture();
     },
-    onData$1: function(handleData) {
+    onData$1(handleData) {
       var t1, _this = this;
       _this.$ti._eval$1("~(1)?")._as(handleData);
       if (_this._target == null)
-        throw H.wrapException(P.StateError$("Subscription has been canceled."));
+        throw A.wrapException(A.StateError$("Subscription has been canceled."));
       _this._unlisten$0();
-      t1 = W._wrapZone(new W._EventStreamSubscription_onData_closure(handleData), type$.Event);
+      t1 = A._wrapZone(new A._EventStreamSubscription_onData_closure(handleData), type$.Event);
       _this.set$_html$_onData(t1);
       _this._tryResume$0();
     },
-    _tryResume$0: function() {
+    _tryResume$0() {
       var t2,
         t1 = this._html$_onData;
       if (t1 != null && true) {
@@ -7238,7 +7420,7 @@
         J.addEventListener$3$x(t2, this._eventType, t1, false);
       }
     },
-    _unlisten$0: function() {
+    _unlisten$0() {
       var t2,
         t1 = this._html$_onData;
       if (t1 != null) {
@@ -7247,275 +7429,297 @@
         J._removeEventListener$3$x(t2, this._eventType, type$.nullable_dynamic_Function_Event._as(t1), false);
       }
     },
-    set$_html$_onData: function(_onData) {
+    set$_html$_onData(_onData) {
       this._html$_onData = type$.nullable_dynamic_Function_Event._as(_onData);
-    }
+    },
+    $isStreamSubscription: 1
   };
-  W._EventStreamSubscription_closure.prototype = {
-    call$1: function(e) {
+  A._EventStreamSubscription_closure.prototype = {
+    call$1(e) {
       return this.onData.call$1(type$.Event._as(e));
     },
     $signature: 1
   };
-  W._EventStreamSubscription_onData_closure.prototype = {
-    call$1: function(e) {
+  A._EventStreamSubscription_onData_closure.prototype = {
+    call$1(e) {
       return this.handleData.call$1(type$.Event._as(e));
     },
     $signature: 1
   };
-  P._AcceptStructuredClone.prototype = {
-    findSlot$1: function(value) {
+  A._AcceptStructuredClone.prototype = {
+    findSlot$1(value) {
       var i,
         t1 = this.values,
         $length = t1.length;
       for (i = 0; i < $length; ++i)
         if (t1[i] === value)
           return i;
-      C.JSArray_methods.add$1(t1, value);
-      C.JSArray_methods.add$1(this.copies, null);
+      B.JSArray_methods.add$1(t1, value);
+      B.JSArray_methods.add$1(this.copies, null);
       return $length;
     },
-    walk$1: function(e) {
-      var millisSinceEpoch, t1, proto, slot, copy, t2, l, $length, i, _this = this, _box_0 = {};
+    walk$1(e) {
+      var t1, t2, proto, slot, copy, map, t3, $length, t4, i, _this = this;
       if (e == null)
         return e;
-      if (H._isBool(e))
+      if (A._isBool(e))
         return e;
       if (typeof e == "number")
         return e;
       if (typeof e == "string")
         return e;
-      if (e instanceof Date) {
-        millisSinceEpoch = e.getTime();
-        if (Math.abs(millisSinceEpoch) <= 864e13)
-          t1 = false;
+      t1 = e instanceof Date;
+      t1.toString;
+      if (t1) {
+        t1 = e.getTime();
+        t1.toString;
+        if (Math.abs(t1) <= 864e13)
+          t2 = false;
         else
-          t1 = true;
-        if (t1)
-          H.throwExpression(P.ArgumentError$("DateTime is outside valid range: " + millisSinceEpoch));
-        H.checkNotNullable(true, "isUtc", type$.bool);
-        return new P.DateTime(millisSinceEpoch, true);
+          t2 = true;
+        if (t2)
+          A.throwExpression(A.ArgumentError$("DateTime is outside valid range: " + t1, null));
+        A.checkNotNullable(true, "isUtc", type$.bool);
+        return new A.DateTime(t1, true);
       }
-      if (e instanceof RegExp)
-        throw H.wrapException(P.UnimplementedError$("structured clone of RegExp"));
-      if (typeof Promise != "undefined" && e instanceof Promise)
-        return P.promiseToFuture(e, type$.dynamic);
+      t1 = e instanceof RegExp;
+      t1.toString;
+      if (t1)
+        throw A.wrapException(A.UnimplementedError$("structured clone of RegExp"));
+      t1 = typeof Promise != "undefined" && e instanceof Promise;
+      t1.toString;
+      if (t1)
+        return A.promiseToFuture(e, type$.dynamic);
       proto = Object.getPrototypeOf(e);
-      if (proto === Object.prototype || proto === null) {
+      t1 = proto === Object.prototype;
+      t1.toString;
+      if (!t1) {
+        t1 = proto === null;
+        t1.toString;
+      } else
+        t1 = true;
+      if (t1) {
         slot = _this.findSlot$1(e);
         t1 = _this.copies;
-        if (slot >= t1.length)
-          return H.ioore(t1, slot);
-        copy = _box_0.copy = t1[slot];
-        if (copy != null)
-          return copy;
-        t2 = type$.dynamic;
-        copy = P.LinkedHashMap_LinkedHashMap$_empty(t2, t2);
-        _box_0.copy = copy;
-        C.JSArray_methods.$indexSet(t1, slot, copy);
-        _this.forEachJsField$2(e, new P._AcceptStructuredClone_walk_closure(_box_0, _this));
-        return _box_0.copy;
-      }
-      if (e instanceof Array) {
-        l = e;
-        slot = _this.findSlot$1(l);
-        t1 = _this.copies;
-        if (slot >= t1.length)
-          return H.ioore(t1, slot);
+        if (!(slot < t1.length))
+          return A.ioore(t1, slot);
         copy = t1[slot];
         if (copy != null)
           return copy;
-        t2 = J.getInterceptor$asx(l);
-        $length = t2.get$length(l);
-        copy = _this.mustCopy ? new Array($length) : l;
-        C.JSArray_methods.$indexSet(t1, slot, copy);
-        for (t1 = J.getInterceptor$ax(copy), i = 0; i < $length; ++i)
-          t1.$indexSet(copy, i, _this.walk$1(t2.$index(l, i)));
+        t2 = type$.dynamic;
+        map = A.LinkedHashMap_LinkedHashMap$_empty(t2, t2);
+        B.JSArray_methods.$indexSet(t1, slot, map);
+        _this.forEachJsField$2(e, new A._AcceptStructuredClone_walk_closure(_this, map));
+        return map;
+      }
+      t1 = e instanceof Array;
+      t1.toString;
+      if (t1) {
+        t1 = e;
+        t1.toString;
+        slot = _this.findSlot$1(t1);
+        t2 = _this.copies;
+        if (!(slot < t2.length))
+          return A.ioore(t2, slot);
+        copy = t2[slot];
+        if (copy != null)
+          return copy;
+        t3 = J.getInterceptor$asx(t1);
+        $length = t3.get$length(t1);
+        if (_this.mustCopy) {
+          t4 = new Array($length);
+          t4.toString;
+          copy = t4;
+        } else
+          copy = t1;
+        B.JSArray_methods.$indexSet(t2, slot, copy);
+        for (t2 = J.getInterceptor$ax(copy), i = 0; i < $length; ++i)
+          t2.$indexSet(copy, i, _this.walk$1(t3.$index(t1, i)));
         return copy;
       }
       return e;
     },
-    convertNativeToDart_AcceptStructuredClone$2$mustCopy: function(object, mustCopy) {
+    convertNativeToDart_AcceptStructuredClone$2$mustCopy(object, mustCopy) {
       this.mustCopy = true;
       return this.walk$1(object);
     }
   };
-  P._AcceptStructuredClone_walk_closure.prototype = {
-    call$2: function(key, value) {
-      var t1 = this._box_0.copy,
-        t2 = this.$this.walk$1(value);
-      J.$indexSet$ax(t1, key, t2);
-      return t2;
+  A._AcceptStructuredClone_walk_closure.prototype = {
+    call$2(key, value) {
+      var t1 = this.$this.walk$1(value);
+      this.map.$indexSet(0, key, t1);
+      return t1;
     },
-    $signature: 21
+    $signature: 18
   };
-  P._convertDartToNative_Value_closure.prototype = {
-    call$1: function(element) {
-      this.array.push(P._convertDartToNative_Value(element));
+  A._convertDartToNative_Value_closure.prototype = {
+    call$1(element) {
+      this.array.push(A._convertDartToNative_Value(element));
     },
     $signature: 2
   };
-  P.convertDartToNative_Dictionary_closure.prototype = {
-    call$2: function(key, value) {
-      this.object[key] = P._convertDartToNative_Value(value);
+  A.convertDartToNative_Dictionary_closure.prototype = {
+    call$2(key, value) {
+      this.object[key] = A._convertDartToNative_Value(value);
     },
-    $signature: 22
+    $signature: 19
   };
-  P._AcceptStructuredCloneDart2Js.prototype = {
-    forEachJsField$2: function(object, action) {
+  A._AcceptStructuredCloneDart2Js.prototype = {
+    forEachJsField$2(object, action) {
       var t1, t2, _i, key;
       type$.dynamic_Function_dynamic_dynamic._as(action);
-      for (t1 = Object.keys(object), t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, H.throwConcurrentModificationError)(t1), ++_i) {
+      for (t1 = Object.keys(object), t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
         key = t1[_i];
         action.call$2(key, object[key]);
       }
     }
   };
-  P.NullRejectionException.prototype = {
-    toString$0: function(_) {
-      return "Promise was rejected with a value of `" + (this.isUndefined ? "undefined" : "null") + "`.";
-    }
-  };
-  P.promiseToFuture_closure.prototype = {
-    call$1: function(r) {
+  A.promiseToFuture_closure.prototype = {
+    call$1(r) {
       return this.completer.complete$1(0, this.T._eval$1("0/?")._as(r));
     },
     $signature: 2
   };
-  P.promiseToFuture_closure0.prototype = {
-    call$1: function(e) {
+  A.promiseToFuture_closure0.prototype = {
+    call$1(e) {
       if (e == null)
-        return this.completer.completeError$1(new P.NullRejectionException(e === undefined));
+        return this.completer.completeError$1(new A.NullRejectionException(e === undefined));
       return this.completer.completeError$1(e);
     },
     $signature: 2
   };
-  P._JSRandom.prototype = {
-    nextInt$1: function(max) {
+  A.NullRejectionException.prototype = {
+    toString$0(_) {
+      return "Promise was rejected with a value of `" + (this.isUndefined ? "undefined" : "null") + "`.";
+    }
+  };
+  A._JSRandom.prototype = {
+    nextInt$1(max) {
       if (max <= 0 || max > 4294967296)
-        throw H.wrapException(P.RangeError$("max must be in range 0 < max \u2264 2^32, was " + max));
+        throw A.wrapException(A.RangeError$("max must be in range 0 < max \u2264 2^32, was " + max));
       return Math.random() * max >>> 0;
     }
   };
-  P.SvgElement.prototype = {
-    get$onClick: function(receiver) {
-      return new W._ElementEventStreamImpl(receiver, "click", false, type$._ElementEventStreamImpl_MouseEvent);
+  A.SvgElement.prototype = {
+    get$onClick(receiver) {
+      return new A._ElementEventStreamImpl(receiver, "click", false, type$._ElementEventStreamImpl_MouseEvent);
     }
   };
-  S.AsyncMemoizer.prototype = {};
-  Y.Level.prototype = {
-    $eq: function(_, other) {
+  A.AsyncMemoizer.prototype = {};
+  A.Level.prototype = {
+    $eq(_, other) {
       if (other == null)
         return false;
-      return other instanceof Y.Level && this.value === other.value;
+      return other instanceof A.Level && this.value === other.value;
     },
-    get$hashCode: function(_) {
+    get$hashCode(_) {
       return this.value;
     },
-    toString$0: function(_) {
+    toString$0(_) {
       return this.name;
     }
   };
-  L.LogRecord.prototype = {
-    toString$0: function(_) {
+  A.LogRecord.prototype = {
+    toString$0(_) {
       return "[" + this.level.name + "] " + this.loggerName + ": " + this.message;
     }
   };
-  F.Logger.prototype = {
-    get$fullName: function() {
+  A.Logger.prototype = {
+    get$fullName() {
       var t1 = this.parent,
         t2 = t1 == null ? null : t1.name.length !== 0,
         t3 = this.name;
       return t2 === true ? t1.get$fullName() + "." + t3 : t3;
     },
-    get$level: function() {
+    get$level() {
       var t1, effectiveLevel;
       if (this.parent == null) {
         t1 = this._level;
         t1.toString;
         effectiveLevel = t1;
       } else {
-        t1 = $.$get$Logger_root();
-        t1 = t1._level;
+        t1 = $.$get$Logger_root()._level;
         t1.toString;
         effectiveLevel = t1;
       }
       return effectiveLevel;
     },
-    log$4: function(logLevel, message, error, stackTrace) {
+    log$4(logLevel, message, error, stackTrace) {
       var record, _this = this,
         t1 = logLevel.value;
       if (t1 >= _this.get$level().value) {
         if (t1 >= 2000) {
-          P.StackTrace_current();
+          A.StackTrace_current();
           logLevel.toString$0(0);
         }
         t1 = _this.get$fullName();
         Date.now();
         $.LogRecord__nextNumber = $.LogRecord__nextNumber + 1;
-        record = new L.LogRecord(logLevel, message, t1);
+        record = new A.LogRecord(logLevel, message, t1);
         if (_this.parent == null)
           _this._publish$1(record);
         else
           $.$get$Logger_root()._publish$1(record);
       }
     },
-    _publish$1: function(record) {
+    _publish$1(record) {
       return null;
     }
   };
-  F.Logger_Logger_closure.prototype = {
-    call$0: function() {
+  A.Logger_Logger_closure.prototype = {
+    call$0() {
       var dot, $parent, t1,
         thisName = this.name;
-      if (C.JSString_methods.startsWith$1(thisName, "."))
-        H.throwExpression(P.ArgumentError$("name shouldn't start with a '.'"));
-      dot = C.JSString_methods.lastIndexOf$1(thisName, ".");
+      if (B.JSString_methods.startsWith$1(thisName, "."))
+        A.throwExpression(A.ArgumentError$("name shouldn't start with a '.'", null));
+      if (B.JSString_methods.endsWith$1(thisName, "."))
+        A.throwExpression(A.ArgumentError$("name shouldn't end with a '.'", null));
+      dot = B.JSString_methods.lastIndexOf$1(thisName, ".");
       if (dot === -1)
-        $parent = thisName !== "" ? F.Logger_Logger("") : null;
+        $parent = thisName !== "" ? A.Logger_Logger("") : null;
       else {
-        $parent = F.Logger_Logger(C.JSString_methods.substring$2(thisName, 0, dot));
-        thisName = C.JSString_methods.substring$1(thisName, dot + 1);
+        $parent = A.Logger_Logger(B.JSString_methods.substring$2(thisName, 0, dot));
+        thisName = B.JSString_methods.substring$1(thisName, dot + 1);
       }
-      t1 = new F.Logger(thisName, $parent, P.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Logger));
+      t1 = new A.Logger(thisName, $parent, A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Logger));
       if ($parent == null)
-        t1._level = C.Level_INFO_800;
+        t1._level = B.Level_INFO_800;
       else
         $parent._children.$indexSet(0, thisName, t1);
       return t1;
     },
-    $signature: 23
+    $signature: 20
   };
-  O.Pool.prototype = {
-    request$0: function(_) {
+  A.Pool.prototype = {
+    request$0(_) {
       var t1, t2, _this = this;
-      if (_this._closeMemo._completer.future._state !== 0)
-        throw H.wrapException(P.StateError$("request() may not be called on a closed Pool."));
+      if ((_this._closeMemo._completer.future._state & 30) !== 0)
+        throw A.wrapException(A.StateError$("request() may not be called on a closed Pool."));
       t1 = _this._allocatedResources;
       if (t1 < _this._maxAllocatedResources) {
         _this._allocatedResources = t1 + 1;
-        return P.Future_Future$value(new O.PoolResource(_this), type$.PoolResource);
+        return A.Future_Future$value(new A.PoolResource(_this), type$.PoolResource);
       } else {
         t1 = _this._onReleaseCallbacks;
         if (!t1.get$isEmpty(t1))
           return _this._runOnRelease$1(t1.removeFirst$0());
         else {
-          t1 = new P._Future($.Zone__current, type$._Future_PoolResource);
+          t1 = new A._Future($.Zone__current, type$._Future_PoolResource);
           t2 = _this._requestedResources;
-          t2._add$1(t2.$ti._precomputed1._as(new P._AsyncCompleter(t1, type$._AsyncCompleter_PoolResource)));
+          t2._add$1(t2.$ti._precomputed1._as(new A._AsyncCompleter(t1, type$._AsyncCompleter_PoolResource)));
           _this._resetTimer$0();
           return t1;
         }
       }
     },
-    withResource$1$1: function(callback, $T) {
+    withResource$1$1(callback, $T) {
       return this.withResource$body$Pool($T._eval$1("0/()")._as(callback), $T, $T);
     },
-    withResource$body$Pool: function(callback, $T, $async$type) {
+    withResource$body$Pool(callback, $T, $async$type) {
       var $async$goto = 0,
-        $async$completer = P._makeAsyncAwaitCompleter($async$type),
+        $async$completer = A._makeAsyncAwaitCompleter($async$type),
         $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, resource, t1, t2;
-      var $async$withResource$1$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
+      var $async$withResource$1$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
         if ($async$errorCode === 1) {
           $async$currentError = $async$result;
           $async$goto = $async$handler;
@@ -7524,16 +7728,17 @@
           switch ($async$goto) {
             case 0:
               // Function start
-              if ($async$self._closeMemo._completer.future._state !== 0)
-                throw H.wrapException(P.StateError$("withResource() may not be called on a closed Pool."));
+              if (($async$self._closeMemo._completer.future._state & 30) !== 0)
+                throw A.wrapException(A.StateError$("withResource() may not be called on a closed Pool."));
               $async$goto = 3;
-              return P._asyncAwait($async$self.request$0(0), $async$withResource$1$1);
+              return A._asyncAwait($async$self.request$0(0), $async$withResource$1$1);
             case 3:
               // returning from await.
               resource = $async$result;
               $async$handler = 4;
+              t1 = callback.call$0();
               $async$goto = 7;
-              return P._asyncAwait(callback.call$0(), $async$withResource$1$1);
+              return A._asyncAwait($T._eval$1("Future<0>")._is(t1) ? t1 : A._Future$value($T._as(t1), $T), $async$withResource$1$1);
             case 7:
               // returning from await.
               t1 = $async$result;
@@ -7554,16 +7759,16 @@
               $async$handler = 2;
               t1 = resource;
               if (t1._released)
-                H.throwExpression(P.StateError$("A PoolResource may only be released once."));
+                A.throwExpression(A.StateError$("A PoolResource may only be released once."));
               t1._released = true;
               t1 = t1._pool;
               t1._resetTimer$0();
               t2 = t1._requestedResources;
               if (!t2.get$isEmpty(t2))
-                t2.removeFirst$0().complete$1(0, new O.PoolResource(t1));
+                t2.removeFirst$0().complete$1(0, new A.PoolResource(t1));
               else {
                 t2 = --t1._allocatedResources;
-                if (t1._closeMemo._completer.future._state !== 0 && t2 === 0)
+                if ((t1._closeMemo._completer.future._state & 30) !== 0 && t2 === 0)
                   null.close$0(0);
               }
               // goto the next finally handler
@@ -7573,30 +7778,28 @@
               // after finally
             case 1:
               // return
-              return P._asyncReturn($async$returnValue, $async$completer);
+              return A._asyncReturn($async$returnValue, $async$completer);
             case 2:
               // rethrow
-              return P._asyncRethrow($async$currentError, $async$completer);
+              return A._asyncRethrow($async$currentError, $async$completer);
           }
       });
-      return P._asyncStartSync($async$withResource$1$1, $async$completer);
+      return A._asyncStartSync($async$withResource$1$1, $async$completer);
     },
-    _runOnRelease$1: function(onRelease) {
-      var t2, t3,
-        t1 = P.Future_Future$sync(type$.dynamic_Function._as(onRelease), type$.dynamic).then$1$1(new O.Pool__runOnRelease_closure(this), type$.Null),
-        onError = new O.Pool__runOnRelease_closure0(this);
-      type$.nullable_bool_Function_Object._as(null);
-      t2 = t1.$ti;
-      t3 = $.Zone__current;
-      if (t3 !== C.C__RootZone)
-        onError = P._registerErrorHandler(onError, t3);
-      t1._addListener$1(new P._FutureListener(new P._Future(t3, t2), 2, null, onError, t2._eval$1("@<1>")._bind$1(t2._precomputed1)._eval$1("_FutureListener<1,2>")));
-      t1 = new P._Future($.Zone__current, type$._Future_PoolResource);
+    _runOnRelease$1(onRelease) {
+      var t1 = A.Future_Future$sync(type$.dynamic_Function._as(onRelease), type$.dynamic).then$1$1(new A.Pool__runOnRelease_closure(this), type$.Null),
+        onError = new A.Pool__runOnRelease_closure0(this),
+        t2 = t1.$ti,
+        t3 = $.Zone__current;
+      if (t3 !== B.C__RootZone)
+        onError = A._registerErrorHandler(onError, t3);
+      t1._addListener$1(new A._FutureListener(new A._Future(t3, t2), 2, null, onError, t2._eval$1("@<1>")._bind$1(t2._precomputed1)._eval$1("_FutureListener<1,2>")));
+      t1 = new A._Future($.Zone__current, type$._Future_PoolResource);
       t2 = this._onReleaseCompleters;
-      t2._add$1(t2.$ti._precomputed1._as(new P._SyncCompleter(t1, type$._SyncCompleter_PoolResource)));
+      t2._add$1(t2.$ti._precomputed1._as(new A._SyncCompleter(t1, type$._SyncCompleter_PoolResource)));
       return t1;
     },
-    _resetTimer$0: function() {
+    _resetTimer$0() {
       var t2,
         t1 = this._timer;
       if (t1 == null)
@@ -7606,81 +7809,94 @@
         t1._restartable_timer$_timer.cancel$0();
       else {
         t1._restartable_timer$_timer.cancel$0();
-        t1._restartable_timer$_timer = P.Timer_Timer(t1._restartable_timer$_duration, t1._callback);
+        t1._restartable_timer$_timer = A.Timer_Timer(t1._restartable_timer$_duration, t1._callback);
       }
     }
   };
-  O.Pool__runOnRelease_closure.prototype = {
-    call$1: function(value) {
+  A.Pool__runOnRelease_closure.prototype = {
+    call$1(value) {
       var t1 = this.$this;
-      J.complete$1$z(t1._onReleaseCompleters.removeFirst$0(), new O.PoolResource(t1));
+      J.complete$1$z(t1._onReleaseCompleters.removeFirst$0(), new A.PoolResource(t1));
     },
     $signature: 4
   };
-  O.Pool__runOnRelease_closure0.prototype = {
-    call$2: function(error, stackTrace) {
+  A.Pool__runOnRelease_closure0.prototype = {
+    call$2(error, stackTrace) {
       type$.Object._as(error);
       type$.StackTrace._as(stackTrace);
       this.$this._onReleaseCompleters.removeFirst$0().completeError$2(error, stackTrace);
     },
     $signature: 5
   };
-  O.PoolResource.prototype = {};
-  M.SseClient.prototype = {
-    get$_eventSource: function() {
-      var t1 = this.__SseClient__eventSource;
-      return t1 == null ? H.throwExpression(H.LateError$fieldNI("_eventSource")) : t1;
+  A.PoolResource.prototype = {};
+  A.SseClient.prototype = {
+    SseClient$2$debugKey(serverUrl, debugKey) {
+      var t2, _this = this,
+        t1 = serverUrl + "?sseClientId=" + _this._clientId;
+      _this.__SseClient__serverUrl_A = t1;
+      t1 = A.EventSource__factoryEventSource(t1, A.LinkedHashMap_LinkedHashMap$_literal(["withCredentials", true], type$.String, type$.dynamic));
+      _this.__SseClient__eventSource_A = t1;
+      t1 = new A._EventStream(t1, "open", false, type$._EventStream_Event);
+      t1.get$first(t1).whenComplete$1(new A.SseClient_closure(_this));
+      B.EventSource_methods.addEventListener$2(_this.__SseClient__eventSource_A, "message", _this.get$_onIncomingMessage());
+      B.EventSource_methods.addEventListener$2(_this.__SseClient__eventSource_A, "control", _this.get$_onIncomingControlMessage());
+      t1 = type$.nullable_void_Function_Event;
+      t2 = type$.Event;
+      A._EventStreamSubscription$(_this.__SseClient__eventSource_A, "open", t1._as(new A.SseClient_closure0(_this)), false, t2);
+      A._EventStreamSubscription$(_this.__SseClient__eventSource_A, "error", t1._as(new A.SseClient_closure1(_this)), false, t2);
     },
-    SseClient$1: function(serverUrl) {
-      var t1, t2, t3, t4, _this = this,
-        clientId = T.generateUuidV4();
-      _this.__SseClient__eventSource = W.EventSource__factoryEventSource(serverUrl + "?sseClientId=" + clientId, P.LinkedHashMap_LinkedHashMap$_literal(["withCredentials", true], type$.String, type$.dynamic));
-      _this.__SseClient__serverUrl = serverUrl + "?sseClientId=" + clientId;
-      t1 = new W._EventStream(_this.get$_eventSource(), "open", false, type$._EventStream_Event);
-      t1.get$first(t1).whenComplete$1(new M.SseClient_closure(_this));
-      C.EventSource_methods.addEventListener$2(_this.get$_eventSource(), "message", _this.get$_onIncomingMessage());
-      C.EventSource_methods.addEventListener$2(_this.get$_eventSource(), "control", _this.get$_onIncomingControlMessage());
-      t1 = _this.get$_eventSource();
-      t2 = type$.nullable_void_Function_Event;
-      t3 = t2._as(new M.SseClient_closure0(_this));
-      type$.nullable_void_Function._as(null);
-      t4 = type$.Event;
-      W._EventStreamSubscription$(t1, "open", t3, false, t4);
-      W._EventStreamSubscription$(_this.get$_eventSource(), "error", t2._as(new M.SseClient_closure1(_this)), false, t4);
-    },
-    close$0: function(_) {
-      var t1, _this = this;
-      _this.get$_eventSource().close();
-      if (_this._onConnected.future._state === 0) {
+    close$0(_) {
+      var _this = this,
+        t1 = _this.__SseClient__eventSource_A;
+      t1 === $ && A.throwLateFieldNI("_eventSource");
+      t1.close();
+      if ((_this._onConnected.future._state & 30) === 0) {
         t1 = _this._outgoingController;
-        new P._ControllerStream(t1, H._instanceType(t1)._eval$1("_ControllerStream<1>")).listen$2$cancelOnError(null, true).asFuture$1$1(null, type$.dynamic);
+        new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>")).listen$2$cancelOnError(null, true).asFuture$1$1(null, type$.void);
       }
       _this._incomingController.close$0(0);
       _this._outgoingController.close$0(0);
     },
-    _onIncomingControlMessage$1: function(message) {
-      var data = new P._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(type$.MessageEvent._as(type$.Event._as(message)).data, true);
+    _closeWithError$1(error) {
+      var stackTrace, t2,
+        t1 = this._incomingController;
+      A.checkNotNullable(error, "error", type$.Object);
+      if (t1._state >= 4)
+        A.throwExpression(t1._badEventState$0());
+      stackTrace = A.AsyncError_defaultStackTrace(error);
+      t2 = t1._state;
+      if ((t2 & 1) !== 0)
+        t1._sendError$2(error, stackTrace);
+      else if ((t2 & 3) === 0)
+        t1._ensurePendingEvents$0().add$1(0, new A._DelayedError(error, stackTrace));
+      this.close$0(0);
+      t1 = this._onConnected;
+      if ((t1.future._state & 30) === 0)
+        t1.completeError$1(error);
+    },
+    _onIncomingControlMessage$1(message) {
+      var data = new A._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(type$.MessageEvent._as(type$.Event._as(message)).data, true);
       if (J.$eq$(data, "close"))
         this.close$0(0);
       else
-        throw H.wrapException(P.UnsupportedError$('Illegal Control Message "' + H.S(data) + '"'));
+        throw A.wrapException(A.UnsupportedError$("[" + this._clientId + '] Illegal Control Message "' + A.S(data) + '"'));
     },
-    _onIncomingMessage$1: function(message) {
-      this._incomingController.add$1(0, H._asString(C.C_JsonCodec.decode$2$reviver(0, H._asString(new P._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(type$.MessageEvent._as(type$.Event._as(message)).data, true)), null)));
+    _onIncomingMessage$1(message) {
+      this._incomingController.add$1(0, A._asString(B.C_JsonCodec.decode$2$reviver(0, A._asString(new A._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(type$.MessageEvent._as(type$.Event._as(message)).data, true)), null)));
     },
-    _onOutgoingDone$0: function() {
+    _onOutgoingDone$0() {
       this.close$0(0);
     },
-    _onOutgoingMessage$1: function(message) {
-      return this._onOutgoingMessage$body$SseClient(H._asStringQ(message));
+    _onOutgoingMessage$1(message) {
+      return this._onOutgoingMessage$body$SseClient(A._asStringQ(message));
     },
-    _onOutgoingMessage$body$SseClient: function(message) {
+    _onOutgoingMessage$body$SseClient(message) {
       var $async$goto = 0,
-        $async$completer = P._makeAsyncAwaitCompleter(type$.dynamic),
+        $async$completer = A._makeAsyncAwaitCompleter(type$.dynamic),
         $async$self = this, t1;
-      var $async$_onOutgoingMessage$1 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
+      var $async$_onOutgoingMessage$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
         if ($async$errorCode === 1)
-          return P._asyncRethrow($async$result, $async$completer);
+          return A._asyncRethrow($async$result, $async$completer);
         while (true)
           switch ($async$goto) {
             case 0:
@@ -7688,72 +7904,56 @@
               t1 = {};
               t1.encodedMessage = null;
               $async$goto = 2;
-              return P._asyncAwait($.$get$_requestPool().withResource$1$1(new M.SseClient__onOutgoingMessage_closure(t1, $async$self, message), type$.Null), $async$_onOutgoingMessage$1);
+              return A._asyncAwait($.$get$_requestPool().withResource$1$1(new A.SseClient__onOutgoingMessage_closure(t1, $async$self, message), type$.Null), $async$_onOutgoingMessage$1);
             case 2:
               // returning from await.
               // implicit return
-              return P._asyncReturn(null, $async$completer);
+              return A._asyncReturn(null, $async$completer);
           }
       });
-      return P._asyncStartSync($async$_onOutgoingMessage$1, $async$completer);
+      return A._asyncStartSync($async$_onOutgoingMessage$1, $async$completer);
     }
   };
-  M.SseClient_closure.prototype = {
-    call$0: function() {
+  A.SseClient_closure.prototype = {
+    call$0() {
       var t2,
         t1 = this.$this;
       t1._onConnected.complete$0(0);
       t2 = t1._outgoingController;
-      new P._ControllerStream(t2, H._instanceType(t2)._eval$1("_ControllerStream<1>")).listen$2$onDone(t1.get$_onOutgoingMessage(), t1.get$_onOutgoingDone());
+      new A._ControllerStream(t2, A._instanceType(t2)._eval$1("_ControllerStream<1>")).listen$2$onDone(t1.get$_onOutgoingMessage(), t1.get$_onOutgoingDone());
     },
     $signature: 3
   };
-  M.SseClient_closure0.prototype = {
-    call$1: function(_) {
+  A.SseClient_closure0.prototype = {
+    call$1(_) {
       var t1 = this.$this._errorTimer;
       if (t1 != null)
         t1.cancel$0();
     },
     $signature: 1
   };
-  M.SseClient_closure1.prototype = {
-    call$1: function(error) {
+  A.SseClient_closure1.prototype = {
+    call$1(error) {
       var t1 = this.$this,
         t2 = t1._errorTimer;
       t2 = t2 == null ? null : t2._handle != null;
       if (t2 !== true)
-        t1._errorTimer = P.Timer_Timer(C.Duration_5000000, new M.SseClient__closure(t1, error));
+        t1._errorTimer = A.Timer_Timer(B.Duration_5000000, new A.SseClient__closure(t1, error));
     },
     $signature: 1
   };
-  M.SseClient__closure.prototype = {
-    call$0: function() {
-      var stackTrace, t3,
-        t1 = this.$this,
-        t2 = t1._incomingController,
-        error = this.error;
-      H.checkNotNullable(error, "error", type$.Object);
-      if (t2._state >= 4)
-        H.throwExpression(t2._badEventState$0());
-      stackTrace = P.AsyncError_defaultStackTrace(error);
-      t3 = t2._state;
-      if ((t3 & 1) !== 0)
-        t2._sendError$2(error, stackTrace);
-      else if ((t3 & 3) === 0)
-        t2._ensurePendingEvents$0().add$1(0, new P._DelayedError(error, stackTrace));
-      t1.close$0(0);
-      t1 = t1._onConnected;
-      if (t1.future._state === 0)
-        t1.completeError$1(error);
+  A.SseClient__closure.prototype = {
+    call$0() {
+      this.$this._closeWithError$1(this.error);
     },
     $signature: 0
   };
-  M.SseClient__onOutgoingMessage_closure.prototype = {
-    call$0: function() {
+  A.SseClient__onOutgoingMessage_closure.prototype = {
+    call$0() {
       var $async$goto = 0,
-        $async$completer = P._makeAsyncAwaitCompleter(type$.Null),
-        $async$handler = 1, $async$currentError, $async$next = [], $async$self = this, e, e0, e1, exception, t1, t2, $async$exception;
-      var $async$call$0 = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
+        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
+        $async$handler = 1, $async$currentError, $async$self = this, e, e0, url, error, augmentedError, exception, t1, t2, $async$exception;
+      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
         if ($async$errorCode === 1) {
           $async$currentError = $async$result;
           $async$goto = $async$handler;
@@ -7763,23 +7963,27 @@
             case 0:
               // Function start
               try {
-                $async$self._box_0.encodedMessage = C.C_JsonCodec.encode$2$toEncodable($async$self.message, null);
+                $async$self._box_0.encodedMessage = B.C_JsonCodec.encode$2$toEncodable($async$self.message, null);
               } catch (exception) {
-                t1 = H.unwrapException(exception);
-                if (t1 instanceof P.JsonUnsupportedObjectError) {
+                t1 = A.unwrapException(exception);
+                if (t1 instanceof A.JsonUnsupportedObjectError) {
                   e = t1;
-                  $async$self.$this._logger.log$4(C.Level_WARNING_900, "Unable to encode outgoing message: " + H.S(e), null, null);
-                } else if (t1 instanceof P.ArgumentError) {
+                  t1 = $async$self.$this;
+                  t1._logger.log$4(B.Level_WARNING_900, "[" + t1._clientId + "] Unable to encode outgoing message: " + A.S(e), null, null);
+                } else if (t1 instanceof A.ArgumentError) {
                   e0 = t1;
-                  $async$self.$this._logger.log$4(C.Level_WARNING_900, "Invalid argument: " + H.S(e0), null, null);
+                  t1 = $async$self.$this;
+                  t1._logger.log$4(B.Level_WARNING_900, "[" + t1._clientId + "] Invalid argument: " + A.S(e0), null, null);
                 } else
                   throw exception;
               }
               $async$handler = 3;
               t1 = $async$self.$this;
-              t2 = t1.__SseClient__serverUrl;
+              t2 = t1.__SseClient__serverUrl_A;
+              t2 === $ && A.throwLateFieldNI("_serverUrl");
+              url = t2 + "&messageId=" + ++t1._lastMessageId;
               $async$goto = 6;
-              return P._asyncAwait(W.HttpRequest_request((t2 == null ? H.throwExpression(H.LateError$fieldNI("_serverUrl")) : t2) + "&messageId=" + ++t1._lastMessageId, "POST", $async$self._box_0.encodedMessage, true), $async$call$0);
+              return A._asyncAwait(A.promiseToFuture(self.fetch(url, {method: "POST", credentials: "include", body: $async$self._box_0.encodedMessage}), type$.dynamic), $async$call$0);
             case 6:
               // returning from await.
               $async$handler = 1;
@@ -7790,10 +7994,11 @@
               // catch
               $async$handler = 2;
               $async$exception = $async$currentError;
-              e1 = H.unwrapException($async$exception);
+              error = A.unwrapException($async$exception);
               t1 = $async$self.$this;
-              t1._logger.log$4(C.Level_SEVERE_1000, "Failed to send " + H.S($async$self.message) + ":\n " + H.S(e1), null, null);
-              t1.close$0(0);
+              augmentedError = "[" + t1._clientId + "] SSE client failed to send " + A.S($async$self.message) + ":\n " + A.S(error);
+              t1._logger.log$4(B.Level_SEVERE_1000, augmentedError, null, null);
+              t1._closeWithError$1(augmentedError);
               // goto after finally
               $async$goto = 5;
               break;
@@ -7805,58 +8010,59 @@
             case 5:
               // after finally
               // implicit return
-              return P._asyncReturn(null, $async$completer);
+              return A._asyncReturn(null, $async$completer);
             case 1:
               // rethrow
-              return P._asyncRethrow($async$currentError, $async$completer);
+              return A._asyncRethrow($async$currentError, $async$completer);
           }
       });
-      return P._asyncStartSync($async$call$0, $async$completer);
+      return A._asyncStartSync($async$call$0, $async$completer);
     },
     $signature: 7
   };
-  T.generateUuidV4__generateBits.prototype = {
-    call$1: function(bitCount) {
-      return this.random.nextInt$1(C.JSInt_methods._shlPositive$1(1, bitCount));
+  A._FetchOptions.prototype = {};
+  A.generateUuidV4_generateBits.prototype = {
+    call$1(bitCount) {
+      return this.random.nextInt$1(B.JSInt_methods._shlPositive$1(1, bitCount));
     },
-    $signature: 25
+    $signature: 22
   };
-  T.generateUuidV4__printDigits.prototype = {
-    call$2: function(value, count) {
-      return C.JSString_methods.padLeft$2(C.JSInt_methods.toRadixString$1(value, 16), count, "0");
+  A.generateUuidV4_printDigits.prototype = {
+    call$2(value, count) {
+      return B.JSString_methods.padLeft$2(B.JSInt_methods.toRadixString$1(value, 16), count, "0");
     },
-    $signature: 12
+    $signature: 11
   };
-  T.generateUuidV4__bitsDigits.prototype = {
-    call$2: function(bitCount, digitCount) {
-      return this._printDigits.call$2(this._generateBits.call$1(bitCount), digitCount);
+  A.generateUuidV4_bitsDigits.prototype = {
+    call$2(bitCount, digitCount) {
+      return this.printDigits.call$2(this.generateBits.call$1(bitCount), digitCount);
     },
-    $signature: 12
+    $signature: 11
   };
-  R.StreamChannelMixin.prototype = {};
-  E.main_closure.prototype = {
-    call$1: function(_) {
+  A.StreamChannelMixin.prototype = {};
+  A.main_closure.prototype = {
+    call$1(_) {
       type$.MouseEvent._as(_);
       this.channel._outgoingController.close$0(0);
     },
-    $signature: 26
+    $signature: 23
   };
-  E.main_closure0.prototype = {
-    call$1: function(s) {
+  A.main_closure0.prototype = {
+    call$1(s) {
       var count, t1, t2, t3, i, t4, t5, lastEvent;
-      H._asString(s);
-      if (C.JSString_methods.startsWith$1(s, "send ")) {
-        count = P.int_parse(C.JSArray_methods.get$last(s.split(" ")), null);
-        for (t1 = this.channel._outgoingController, t2 = H._instanceType(t1), t3 = t2._precomputed1, t2 = t2._eval$1("_DelayedData<1>"), i = 0; i < count; ++i) {
+      A._asString(s);
+      if (B.JSString_methods.startsWith$1(s, "send ")) {
+        count = A.int_parse(B.JSArray_methods.get$last(s.split(" ")), null);
+        for (t1 = this.channel._outgoingController, t2 = A._instanceType(t1), t3 = t2._precomputed1, t2 = t2._eval$1("_DelayedData<1>"), i = 0; i < count; ++i) {
           t4 = t3._as("" + i);
           t5 = t1._state;
           if (t5 >= 4)
-            H.throwExpression(t1._badEventState$0());
+            A.throwExpression(t1._badEventState$0());
           if ((t5 & 1) !== 0)
             t1._sendData$1(t4);
           else if ((t5 & 3) === 0) {
             t5 = t1._ensurePendingEvents$0();
-            t4 = new P._DelayedData(t4, t2);
+            t4 = new A._DelayedData(t4, t2);
             lastEvent = t5.lastPendingEvent;
             if (lastEvent == null)
               t5.firstPendingEvent = t5.lastPendingEvent = t4;
@@ -7868,116 +8074,112 @@
         }
       } else {
         t1 = this.channel._outgoingController;
-        t1.add$1(0, H._instanceType(t1)._precomputed1._as(s));
+        t1.add$1(0, A._instanceType(t1)._precomputed1._as(s));
       }
     },
-    $signature: 27
+    $signature: 24
   };
   (function aliases() {
     var _ = J.Interceptor.prototype;
     _.super$Interceptor$toString = _.toString$0;
-    _ = J.JavaScriptObject.prototype;
-    _.super$JavaScriptObject$toString = _.toString$0;
+    _ = J.LegacyJavaScriptObject.prototype;
+    _.super$LegacyJavaScriptObject$toString = _.toString$0;
   })();
   (function installTearOffs() {
     var _static_1 = hunkHelpers._static_1,
       _static_0 = hunkHelpers._static_0,
       _static_2 = hunkHelpers._static_2,
-      _instance = hunkHelpers.installInstanceTearOff,
       _instance_2_u = hunkHelpers._instance_2u,
       _instance_1_u = hunkHelpers._instance_1u,
       _instance_0_u = hunkHelpers._instance_0u;
-    _static_1(P, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 6);
-    _static_1(P, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 6);
-    _static_1(P, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 6);
-    _static_0(P, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 0);
-    _static_1(P, "async___nullDataHandler$closure", "_nullDataHandler", 2);
-    _static_2(P, "async___nullErrorHandler$closure", "_nullErrorHandler", 9);
-    _static_0(P, "async___nullDoneHandler$closure", "_nullDoneHandler", 0);
-    _instance(P._Completer.prototype, "get$completeError", 0, 1, null, ["call$2", "call$1"], ["completeError$2", "completeError$1"], 18, 0);
-    _instance_2_u(P._Future.prototype, "get$_completeError", "_completeError$2", 9);
-    _static_1(P, "convert___defaultToEncodable$closure", "_defaultToEncodable", 8);
+    _static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 6);
+    _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 6);
+    _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 6);
+    _static_0(A, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 0);
+    _static_1(A, "async___nullDataHandler$closure", "_nullDataHandler", 2);
+    _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 9);
+    _static_0(A, "async___nullDoneHandler$closure", "_nullDoneHandler", 0);
+    _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 9);
+    _static_1(A, "convert___defaultToEncodable$closure", "_defaultToEncodable", 8);
     var _;
-    _instance_1_u(_ = M.SseClient.prototype, "get$_onIncomingControlMessage", "_onIncomingControlMessage$1", 1);
+    _instance_1_u(_ = A.SseClient.prototype, "get$_onIncomingControlMessage", "_onIncomingControlMessage$1", 1);
     _instance_1_u(_, "get$_onIncomingMessage", "_onIncomingMessage$1", 1);
     _instance_0_u(_, "get$_onOutgoingDone", "_onOutgoingDone$0", 0);
-    _instance_1_u(_, "get$_onOutgoingMessage", "_onOutgoingMessage$1", 24);
+    _instance_1_u(_, "get$_onOutgoingMessage", "_onOutgoingMessage$1", 21);
   })();
   (function inheritance() {
     var _mixin = hunkHelpers.mixin,
       _inherit = hunkHelpers.inherit,
       _inheritMany = hunkHelpers.inheritMany;
-    _inherit(P.Object, null);
-    _inheritMany(P.Object, [H.JS_CONST, J.Interceptor, J.ArrayIterator, P.Error, H.Closure, P.Iterable, H.ListIterator, H.FixedLengthListMixin, H.TypeErrorDecoder, H.NullThrownFromJavaScriptException, H.ExceptionAndStackTrace, H._StackTrace, P.MapMixin, H.LinkedHashMapCell, H.LinkedHashMapKeyIterator, H.StringMatch, H.Rti, H._FunctionParameters, P._TimerImpl, P._AsyncAwaitCompleter, P.AsyncError, P._Completer, P._FutureListener, P._Future, P._AsyncCallbackEntry, P.Stream, P.StreamSubscription, P.StreamTransformerBase, P._StreamController, P._AsyncStreamControllerDispatch, P._BufferingStreamSubscription, P._StreamSinkWrapper, P._DelayedEvent, P._DelayedDone, P._PendingEvents, P._StreamIterator, P._Zone, P.ListMixin, P._ListQueueIterator, P.Codec, P._JsonStringifier, P.DateTime, P.Duration, P.OutOfMemoryError, P.StackOverflowError, P._Exception, P.FormatException, P.Null, P._StringStackTrace, P.StringBuffer, W.EventStreamProvider, P._AcceptStructuredClone, P.NullRejectionException, P._JSRandom, S.AsyncMemoizer, Y.Level, L.LogRecord, F.Logger, O.Pool, O.PoolResource, R.StreamChannelMixin]);
-    _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JSArray, J.JSNumber, J.JSString, H.NativeTypedData, W.EventTarget, W.DomException, W.Event]);
-    _inheritMany(J.JavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction]);
+    _inherit(A.Object, null);
+    _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, J.ArrayIterator, A.Error, A.Closure, A.Iterable, A.ListIterator, A.FixedLengthListMixin, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A.MapBase, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.StringMatch, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A.Stream, A._StreamController, A._AsyncStreamControllerDispatch, A._BufferingStreamSubscription, A._StreamSinkWrapper, A._DelayedEvent, A._DelayedDone, A._PendingEvents, A._StreamIterator, A._Zone, A.ListBase, A._ListQueueIterator, A.Codec, A.Converter, A._JsonStringifier, A.DateTime, A.Duration, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.Null, A._StringStackTrace, A.StringBuffer, A.EventStreamProvider, A._EventStreamSubscription, A._AcceptStructuredClone, A.NullRejectionException, A._JSRandom, A.AsyncMemoizer, A.Level, A.LogRecord, A.Logger, A.Pool, A.PoolResource, A.StreamChannelMixin]);
+    _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JavaScriptBigInt, J.JavaScriptSymbol, J.JSNumber, J.JSString]);
+    _inheritMany(J.JavaScriptObject, [J.LegacyJavaScriptObject, J.JSArray, A.NativeByteBuffer, A.NativeTypedData, A.EventTarget, A.DomException, A.Event]);
+    _inheritMany(J.LegacyJavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction, A._FetchOptions]);
     _inherit(J.JSUnmodifiableArray, J.JSArray);
     _inheritMany(J.JSNumber, [J.JSInt, J.JSNumNotInt]);
-    _inheritMany(P.Error, [H.LateError, P.TypeError, H.JsNoSuchMethodError, H.UnknownJsTypeError, H.RuntimeError, P.AssertionError, H._Error, P.JsonUnsupportedObjectError, P.NullThrownError, P.ArgumentError, P.UnsupportedError, P.UnimplementedError, P.StateError, P.ConcurrentModificationError, P.CyclicInitializationError]);
-    _inheritMany(H.Closure, [H.nullFuture_closure, H.TearOffClosure, H.initHooks_closure, H.initHooks_closure0, H.initHooks_closure1, P._AsyncRun__initializeScheduleImmediate_internalCallback, P._AsyncRun__initializeScheduleImmediate_closure, P._AsyncRun__scheduleImmediateJsOverride_internalCallback, P._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, P._TimerImpl_internalCallback, P._awaitOnObject_closure, P._awaitOnObject_closure0, P._wrapJsFunctionForAsync_closure, P._Future__addListener_closure, P._Future__prependListeners_closure, P._Future__chainForeignFuture_closure, P._Future__chainForeignFuture_closure0, P._Future__chainForeignFuture_closure1, P._Future__asyncCompleteWithValue_closure, P._Future__chainFuture_closure, P._Future__asyncCompleteError_closure, P._Future__propagateToListeners_handleWhenCompleteCallback, P._Future__propagateToListeners_handleWhenCompleteCallback_closure, P._Future__propagateToListeners_handleValueCallback, P._Future__propagateToListeners_handleError, P.Stream_length_closure, P.Stream_length_closure0, P.Stream_first_closure, P.Stream_first_closure0, P._StreamController__subscribe_closure, P._StreamController__recordCancel_complete, P._BufferingStreamSubscription_asFuture_closure, P._BufferingStreamSubscription_asFuture_closure0, P._BufferingStreamSubscription_asFuture__closure, P._BufferingStreamSubscription__sendError_sendError, P._BufferingStreamSubscription__sendDone_sendDone, P._PendingEvents_schedule_closure, P._cancelAndValue_closure, P._rootHandleUncaughtError_closure, P._RootZone_bindCallbackGuarded_closure, P._RootZone_bindUnaryCallbackGuarded_closure, P.MapBase_mapToString_closure, P._JsonStringifier_writeMap_closure, P.Duration_toString_sixDigits, P.Duration_toString_twoDigits, W.HttpRequest_request_closure, W._EventStreamSubscription_closure, W._EventStreamSubscription_onData_closure, P._AcceptStructuredClone_walk_closure, P._convertDartToNative_Value_closure, P.convertDartToNative_Dictionary_closure, P.promiseToFuture_closure, P.promiseToFuture_closure0, F.Logger_Logger_closure, O.Pool__runOnRelease_closure, O.Pool__runOnRelease_closure0, M.SseClient_closure, M.SseClient_closure0, M.SseClient_closure1, M.SseClient__closure, M.SseClient__onOutgoingMessage_closure, T.generateUuidV4__generateBits, T.generateUuidV4__printDigits, T.generateUuidV4__bitsDigits, E.main_closure, E.main_closure0]);
-    _inherit(H.EfficientLengthIterable, P.Iterable);
-    _inheritMany(H.EfficientLengthIterable, [H.ListIterable, H.LinkedHashMapKeyIterable]);
-    _inherit(H.NullError, P.TypeError);
-    _inheritMany(H.TearOffClosure, [H.StaticClosure, H.BoundClosure]);
-    _inherit(H._AssertionError, P.AssertionError);
-    _inherit(P.MapBase, P.MapMixin);
-    _inheritMany(P.MapBase, [H.JsLinkedHashMap, P._JsonMap]);
-    _inherit(H.NativeTypedArray, H.NativeTypedData);
-    _inheritMany(H.NativeTypedArray, [H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin]);
-    _inherit(H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin);
-    _inherit(H.NativeTypedArrayOfDouble, H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin);
-    _inherit(H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin);
-    _inherit(H.NativeTypedArrayOfInt, H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin);
-    _inheritMany(H.NativeTypedArrayOfInt, [H.NativeInt16List, H.NativeInt32List, H.NativeInt8List, H.NativeUint16List, H.NativeUint32List, H.NativeUint8ClampedList, H.NativeUint8List]);
-    _inherit(H._TypeError, H._Error);
-    _inheritMany(P._Completer, [P._AsyncCompleter, P._SyncCompleter]);
-    _inherit(P._AsyncStreamController, P._StreamController);
-    _inheritMany(P.Stream, [P._StreamImpl, W._EventStream]);
-    _inherit(P._ControllerStream, P._StreamImpl);
-    _inherit(P._ControllerSubscription, P._BufferingStreamSubscription);
-    _inheritMany(P._DelayedEvent, [P._DelayedData, P._DelayedError]);
-    _inherit(P._StreamImplEvents, P._PendingEvents);
-    _inherit(P._RootZone, P._Zone);
-    _inheritMany(H.ListIterable, [P.ListQueue, P._JsonMapKeyIterable]);
-    _inherit(P.Converter, P.StreamTransformerBase);
-    _inherit(P.JsonCyclicError, P.JsonUnsupportedObjectError);
-    _inherit(P.JsonCodec, P.Codec);
-    _inheritMany(P.Converter, [P.JsonEncoder, P.JsonDecoder]);
-    _inherit(P._JsonStringStringifier, P._JsonStringifier);
-    _inheritMany(P.ArgumentError, [P.RangeError, P.IndexError]);
-    _inheritMany(W.EventTarget, [W.Node, W.EventSource, W.HttpRequestEventTarget]);
-    _inherit(W.Element, W.Node);
-    _inheritMany(W.Element, [W.HtmlElement, P.SvgElement]);
-    _inheritMany(W.HtmlElement, [W.AnchorElement, W.AreaElement, W.FormElement, W.SelectElement]);
-    _inherit(W.HttpRequest, W.HttpRequestEventTarget);
-    _inheritMany(W.Event, [W.MessageEvent, W.UIEvent, W.ProgressEvent]);
-    _inherit(W.MouseEvent, W.UIEvent);
-    _inherit(W._ElementEventStreamImpl, W._EventStream);
-    _inherit(W._EventStreamSubscription, P.StreamSubscription);
-    _inherit(P._AcceptStructuredCloneDart2Js, P._AcceptStructuredClone);
-    _inherit(M.SseClient, R.StreamChannelMixin);
-    _mixin(H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, P.ListMixin);
-    _mixin(H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, H.FixedLengthListMixin);
-    _mixin(H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin, P.ListMixin);
-    _mixin(H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, H.FixedLengthListMixin);
-    _mixin(P._AsyncStreamController, P._AsyncStreamControllerDispatch);
+    _inheritMany(A.Error, [A.LateError, A.TypeError, A.JsNoSuchMethodError, A.UnknownJsTypeError, A._CyclicInitializationError, A.RuntimeError, A._Error, A.JsonUnsupportedObjectError, A.AssertionError, A.ArgumentError, A.UnsupportedError, A.UnimplementedError, A.StateError, A.ConcurrentModificationError]);
+    _inheritMany(A.Closure, [A.Closure0Args, A.Closure2Args, A.TearOffClosure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._Future__chainForeignFuture_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A.Stream_length_closure, A.Stream_first_closure0, A._RootZone_bindUnaryCallbackGuarded_closure, A._EventStreamSubscription_closure, A._EventStreamSubscription_onData_closure, A._convertDartToNative_Value_closure, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.Pool__runOnRelease_closure, A.SseClient_closure0, A.SseClient_closure1, A.generateUuidV4_generateBits, A.main_closure, A.main_closure0]);
+    _inheritMany(A.Closure0Args, [A.nullFuture_closure, A._AsyncRun__scheduleImmediateJsOverride_internalCallback, A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, A._TimerImpl_internalCallback, A._Future__addListener_closure, A._Future__prependListeners_closure, A._Future__chainForeignFuture_closure1, A._Future__chainCoreFutureAsync_closure, A._Future__asyncCompleteWithValue_closure, A._Future__asyncCompleteError_closure, A._Future__propagateToListeners_handleWhenCompleteCallback, A._Future__propagateToListeners_handleValueCallback, A._Future__propagateToListeners_handleError, A.Stream_length_closure0, A.Stream_first_closure, A._StreamController__subscribe_closure, A._StreamController__recordCancel_complete, A._BufferingStreamSubscription_asFuture_closure, A._BufferingStreamSubscription_asFuture__closure, A._BufferingStreamSubscription__sendError_sendError, A._BufferingStreamSubscription__sendDone_sendDone, A._PendingEvents_schedule_closure, A._cancelAndValue_closure, A._rootHandleError_closure, A._RootZone_bindCallbackGuarded_closure, A.Logger_Logger_closure, A.SseClient_closure, A.SseClient__closure, A.SseClient__onOutgoingMessage_closure]);
+    _inherit(A.EfficientLengthIterable, A.Iterable);
+    _inheritMany(A.EfficientLengthIterable, [A.ListIterable, A.LinkedHashMapKeyIterable]);
+    _inherit(A.NullError, A.TypeError);
+    _inheritMany(A.TearOffClosure, [A.StaticClosure, A.BoundClosure]);
+    _inheritMany(A.MapBase, [A.JsLinkedHashMap, A._JsonMap]);
+    _inheritMany(A.Closure2Args, [A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__chainForeignFuture_closure0, A._BufferingStreamSubscription_asFuture_closure0, A.MapBase_mapToString_closure, A._JsonStringifier_writeMap_closure, A._AcceptStructuredClone_walk_closure, A.convertDartToNative_Dictionary_closure, A.Pool__runOnRelease_closure0, A.generateUuidV4_printDigits, A.generateUuidV4_bitsDigits]);
+    _inheritMany(A.NativeTypedData, [A.NativeByteData, A.NativeTypedArray]);
+    _inheritMany(A.NativeTypedArray, [A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin]);
+    _inherit(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin);
+    _inherit(A.NativeTypedArrayOfDouble, A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin);
+    _inherit(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin);
+    _inherit(A.NativeTypedArrayOfInt, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin);
+    _inheritMany(A.NativeTypedArrayOfDouble, [A.NativeFloat32List, A.NativeFloat64List]);
+    _inheritMany(A.NativeTypedArrayOfInt, [A.NativeInt16List, A.NativeInt32List, A.NativeInt8List, A.NativeUint16List, A.NativeUint32List, A.NativeUint8ClampedList, A.NativeUint8List]);
+    _inherit(A._TypeError, A._Error);
+    _inheritMany(A._Completer, [A._AsyncCompleter, A._SyncCompleter]);
+    _inherit(A._AsyncStreamController, A._StreamController);
+    _inheritMany(A.Stream, [A._StreamImpl, A._EventStream]);
+    _inherit(A._ControllerStream, A._StreamImpl);
+    _inherit(A._ControllerSubscription, A._BufferingStreamSubscription);
+    _inheritMany(A._DelayedEvent, [A._DelayedData, A._DelayedError]);
+    _inherit(A._RootZone, A._Zone);
+    _inheritMany(A.ListIterable, [A.ListQueue, A._JsonMapKeyIterable]);
+    _inherit(A.JsonCyclicError, A.JsonUnsupportedObjectError);
+    _inherit(A.JsonCodec, A.Codec);
+    _inheritMany(A.Converter, [A.JsonEncoder, A.JsonDecoder]);
+    _inherit(A._JsonStringStringifier, A._JsonStringifier);
+    _inheritMany(A.ArgumentError, [A.RangeError, A.IndexError]);
+    _inheritMany(A.EventTarget, [A.Node, A.EventSource]);
+    _inherit(A.Element, A.Node);
+    _inheritMany(A.Element, [A.HtmlElement, A.SvgElement]);
+    _inheritMany(A.HtmlElement, [A.AnchorElement, A.AreaElement, A.FormElement, A.SelectElement]);
+    _inheritMany(A.Event, [A.MessageEvent, A.UIEvent]);
+    _inherit(A.MouseEvent, A.UIEvent);
+    _inherit(A._ElementEventStreamImpl, A._EventStream);
+    _inherit(A._AcceptStructuredCloneDart2Js, A._AcceptStructuredClone);
+    _inherit(A.SseClient, A.StreamChannelMixin);
+    _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A.ListBase);
+    _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin);
+    _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin, A.ListBase);
+    _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin);
+    _mixin(A._AsyncStreamController, A._AsyncStreamControllerDispatch);
   })();
   var init = {
     typeUniverse: {eC: new Map(), tR: {}, eT: {}, tPV: {}, sEA: []},
     mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List"},
     mangledNames: {},
-    getTypeFromName: getGlobalFromName,
-    metadata: [],
-    types: ["~()", "~(Event)", "~(@)", "Null()", "Null(@)", "Null(Object,StackTrace)", "~(~())", "Future<Null>()", "@(@)", "~(Object,StackTrace)", "~(Object?,Object?)", "String(int)", "String(int,int)", "@(@,String)", "@(String)", "Null(~())", "Null(@,StackTrace)", "~(int,@)", "~(Object[StackTrace?])", "_Future<@>(@)", "~(ProgressEvent)", "@(@,@)", "~(@,@)", "Logger()", "~(String?)", "int(int)", "~(MouseEvent)", "~(String)"],
+    types: ["~()", "~(Event)", "~(@)", "Null()", "Null(@)", "Null(Object,StackTrace)", "~(~())", "Future<Null>()", "@(@)", "~(Object,StackTrace)", "~(Object?,Object?)", "String(int,int)", "@(@,String)", "@(String)", "Null(~())", "Null(@,StackTrace)", "~(int,@)", "_Future<@>(@)", "@(@,@)", "~(@,@)", "Logger()", "~(String?)", "int(int)", "~(MouseEvent)", "~(String)"],
     interceptorsByTag: null,
     leafTags: null,
-    arrayRti: typeof Symbol == "function" && typeof Symbol() == "symbol" ? Symbol("$ti") : "$ti"
+    arrayRti: Symbol("$ti")
   };
-  H._Universe_addRules(init.typeUniverse, JSON.parse('{"PlainJavaScriptObject":"JavaScriptObject","UnknownJavaScriptObject":"JavaScriptObject","JavaScriptFunction":"JavaScriptObject","AbortPaymentEvent":"Event","ExtendableEvent":"Event","AElement":"SvgElement","GraphicsElement":"SvgElement","_ResourceProgressEvent":"ProgressEvent","AudioElement":"HtmlElement","MediaElement":"HtmlElement","PointerEvent":"MouseEvent","CompositionEvent":"UIEvent","MessagePort":"EventTarget","HtmlDocument":"Node","Document":"Node","NativeFloat32List":"NativeTypedArrayOfDouble","JSBool":{"bool":[]},"JSNull":{"Null":[]},"JSArray":{"List":["1"],"Iterable":["1"]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"Iterable":["1"]},"JSNumber":{"double":[],"num":[]},"JSInt":{"double":[],"int":[],"num":[]},"JSNumNotInt":{"double":[],"num":[]},"JSString":{"String":[],"Pattern":[]},"LateError":{"Error":[]},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"Iterable":["1"]},"NullError":{"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"TearOffClosure":{"Function":[]},"StaticClosure":{"Function":[]},"BoundClosure":{"Function":[]},"RuntimeError":{"Error":[]},"_AssertionError":{"Error":[]},"JsLinkedHashMap":{"MapMixin":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapMixin.K":"1","MapMixin.V":"2"},"LinkedHashMapKeyIterable":{"Iterable":["1"]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"]},"NativeTypedArrayOfDouble":{"ListMixin":["double"],"JavaScriptIndexingBehavior":["double"],"List":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"ListMixin.E":"double"},"NativeTypedArrayOfInt":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeInt16List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt32List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt8List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint16List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint32List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8ClampedList":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"_Error":{"Error":[]},"_TypeError":{"Error":[]},"_Future":{"Future":["1"]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"AsyncError":{"Error":[]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_SyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_StreamController":{"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_AsyncStreamController":{"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"]},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventDispatch":["1"]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventDispatch":["1"]},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_StreamImplEvents":{"_PendingEvents":["1"]},"_Zone":{"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"MapBase":{"MapMixin":["1","2"],"Map":["1","2"]},"MapMixin":{"Map":["1","2"]},"ListQueue":{"ListIterable":["1"],"Queue":["1"],"Iterable":["1"],"ListIterable.E":"1"},"_JsonMap":{"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"_JsonMapKeyIterable":{"ListIterable":["String"],"Iterable":["String"],"ListIterable.E":"String"},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonCodec":{"Codec":["Object?","String"]},"JsonEncoder":{"Converter":["Object?","String"]},"JsonDecoder":{"Converter":["String","Object?"]},"double":{"num":[]},"int":{"num":[]},"String":{"Pattern":[]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"NullThrownError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"CyclicInitializationError":{"Error":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"HttpRequest":{"EventTarget":[]},"HttpRequestEventTarget":{"EventTarget":[]},"MouseEvent":{"Event":[]},"ProgressEvent":{"Event":[]},"UIEvent":{"Event":[]},"HtmlElement":{"Element":[],"EventTarget":[]},"AnchorElement":{"Element":[],"EventTarget":[]},"AreaElement":{"Element":[],"EventTarget":[]},"Element":{"EventTarget":[]},"EventSource":{"EventTarget":[]},"FormElement":{"Element":[],"EventTarget":[]},"MessageEvent":{"Event":[]},"Node":{"EventTarget":[]},"SelectElement":{"Element":[],"EventTarget":[]},"_EventStream":{"Stream":["1"]},"_ElementEventStreamImpl":{"_EventStream":["1"],"Stream":["1"]},"_EventStreamSubscription":{"StreamSubscription":["1"]},"SvgElement":{"Element":[],"EventTarget":[]}}'));
-  H._Universe_addErasedTypes(init.typeUniverse, JSON.parse('{"EfficientLengthIterable":1,"NativeTypedArray":1,"StreamTransformerBase":2,"MapBase":2,"StreamChannelMixin":1}'));
-  0;
+  A._Universe_addRules(init.typeUniverse, JSON.parse('{"PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","JavaScriptFunction":"LegacyJavaScriptObject","_FetchOptions":"LegacyJavaScriptObject","AbortPaymentEvent":"Event","ExtendableEvent":"Event","AElement":"SvgElement","GraphicsElement":"SvgElement","AudioElement":"HtmlElement","MediaElement":"HtmlElement","PointerEvent":"MouseEvent","CompositionEvent":"UIEvent","MessagePort":"EventTarget","MathMLElement":"Element","HtmlDocument":"Node","Document":"Node","JSBool":{"bool":[],"TrustedGetRuntimeType":[]},"JSNull":{"Null":[],"TrustedGetRuntimeType":[]},"JSArray":{"List":["1"],"Iterable":["1"]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"Iterable":["1"]},"JSNumber":{"double":[],"num":[]},"JSInt":{"double":[],"int":[],"num":[],"TrustedGetRuntimeType":[]},"JSNumNotInt":{"double":[],"num":[],"TrustedGetRuntimeType":[]},"JSString":{"String":[],"Pattern":[],"TrustedGetRuntimeType":[]},"LateError":{"Error":[]},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"Iterable":["1"]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Function":[]},"Closure2Args":{"Function":[]},"TearOffClosure":{"Function":[]},"StaticClosure":{"Function":[]},"BoundClosure":{"Function":[]},"_CyclicInitializationError":{"Error":[]},"RuntimeError":{"Error":[]},"JsLinkedHashMap":{"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"LinkedHashMapKeyIterable":{"Iterable":["1"]},"NativeByteBuffer":{"TrustedGetRuntimeType":[]},"NativeByteData":{"TrustedGetRuntimeType":[]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"]},"NativeTypedArrayOfDouble":{"ListBase":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"]},"NativeTypedArrayOfInt":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeFloat32List":{"ListBase":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double"},"NativeFloat64List":{"ListBase":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double"},"NativeInt16List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeInt32List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeInt8List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint16List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint32List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint8ClampedList":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint8List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"_Future":{"Future":["1"]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"AsyncError":{"Error":[]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_SyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_StreamController":{"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_AsyncStreamController":{"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"]},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventDispatch":["1"]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventDispatch":["1"]},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_Zone":{"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"MapBase":{"Map":["1","2"]},"ListQueue":{"Queue":["1"],"ListIterable":["1"],"Iterable":["1"],"ListIterable.E":"1"},"_JsonMap":{"MapBase":["String","@"],"Map":["String","@"],"MapBase.K":"String","MapBase.V":"@"},"_JsonMapKeyIterable":{"ListIterable":["String"],"Iterable":["String"],"ListIterable.E":"String"},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonCodec":{"Codec":["Object?","String"]},"JsonEncoder":{"Converter":["Object?","String"]},"JsonDecoder":{"Converter":["String","Object?"]},"double":{"num":[]},"int":{"num":[]},"String":{"Pattern":[]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"MouseEvent":{"Event":[]},"HtmlElement":{"Element":[],"EventTarget":[]},"AnchorElement":{"Element":[],"EventTarget":[]},"AreaElement":{"Element":[],"EventTarget":[]},"Element":{"EventTarget":[]},"EventSource":{"EventTarget":[]},"FormElement":{"Element":[],"EventTarget":[]},"MessageEvent":{"Event":[]},"Node":{"EventTarget":[]},"SelectElement":{"Element":[],"EventTarget":[]},"UIEvent":{"Event":[]},"_EventStream":{"Stream":["1"]},"_ElementEventStreamImpl":{"_EventStream":["1"],"Stream":["1"]},"_EventStreamSubscription":{"StreamSubscription":["1"]},"SvgElement":{"Element":[],"EventTarget":[]},"Int8List":{"List":["int"],"Iterable":["int"]},"Uint8List":{"List":["int"],"Iterable":["int"]},"Uint8ClampedList":{"List":["int"],"Iterable":["int"]},"Int16List":{"List":["int"],"Iterable":["int"]},"Uint16List":{"List":["int"],"Iterable":["int"]},"Int32List":{"List":["int"],"Iterable":["int"]},"Uint32List":{"List":["int"],"Iterable":["int"]},"Float32List":{"List":["double"],"Iterable":["double"]},"Float64List":{"List":["double"],"Iterable":["double"]}}'));
+  A._Universe_addErasedTypes(init.typeUniverse, JSON.parse('{"EfficientLengthIterable":1,"NativeTypedArray":1,"_DelayedEvent":1,"StreamChannelMixin":1}'));
+  var string$ = {
+    Error_: "Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type"
+  };
   var type$ = (function rtii() {
-    var findType = H.findType;
+    var findType = A.findType;
     return {
       $env_1_1_void: findType("@<~>"),
       AsyncError: findType("AsyncError"),
@@ -7985,7 +8187,6 @@
       Event: findType("Event"),
       Function: findType("Function"),
       Future_dynamic: findType("Future<@>"),
-      Future_void: findType("Future<~>"),
       Iterable_dynamic: findType("Iterable<@>"),
       JSArray_String: findType("JSArray<String>"),
       JSArray_dynamic: findType("JSArray<@>"),
@@ -7999,18 +8200,17 @@
       MouseEvent: findType("MouseEvent"),
       Null: findType("Null"),
       Object: findType("Object"),
-      Pattern: findType("Pattern"),
       PoolResource: findType("PoolResource"),
-      ProgressEvent: findType("ProgressEvent"),
+      Record: findType("Record"),
       StackTrace: findType("StackTrace"),
       String: findType("String"),
+      TrustedGetRuntimeType: findType("TrustedGetRuntimeType"),
+      TypeError: findType("TypeError"),
       UnknownJavaScriptObject: findType("UnknownJavaScriptObject"),
-      _AsyncCompleter_HttpRequest: findType("_AsyncCompleter<HttpRequest>"),
       _AsyncCompleter_PoolResource: findType("_AsyncCompleter<PoolResource>"),
-      _AsyncCompleter_dynamic: findType("_AsyncCompleter<@>"),
+      _AsyncCompleter_void: findType("_AsyncCompleter<~>"),
       _ElementEventStreamImpl_MouseEvent: findType("_ElementEventStreamImpl<MouseEvent>"),
       _EventStream_Event: findType("_EventStream<Event>"),
-      _Future_HttpRequest: findType("_Future<HttpRequest>"),
       _Future_PoolResource: findType("_Future<PoolResource>"),
       _Future_dynamic: findType("_Future<@>"),
       _Future_int: findType("_Future<int>"),
@@ -8034,13 +8234,9 @@
       nullable_StackTrace: findType("StackTrace?"),
       nullable__DelayedEvent_dynamic: findType("_DelayedEvent<@>?"),
       nullable__FutureListener_dynamic_dynamic: findType("_FutureListener<@,@>?"),
-      nullable_bool_Function_Object: findType("bool(Object)?"),
       nullable_dynamic_Function_Event: findType("@(Event)?"),
-      nullable_nullable_Object_Function_2_nullable_Object_and_nullable_Object: findType("Object?(Object?,Object?)?"),
-      nullable_nullable_Object_Function_dynamic: findType("Object?(@)?"),
       nullable_void_Function: findType("~()?"),
       nullable_void_Function_Event: findType("~(Event)?"),
-      nullable_void_Function_ProgressEvent: findType("~(ProgressEvent)?"),
       num: findType("num"),
       void: findType("~"),
       void_Function: findType("~()"),
@@ -8050,22 +8246,21 @@
     };
   })();
   (function constants() {
-    C.EventSource_methods = W.EventSource.prototype;
-    C.HttpRequest_methods = W.HttpRequest.prototype;
-    C.Interceptor_methods = J.Interceptor.prototype;
-    C.JSArray_methods = J.JSArray.prototype;
-    C.JSInt_methods = J.JSInt.prototype;
-    C.JSNull_methods = J.JSNull.prototype;
-    C.JSNumber_methods = J.JSNumber.prototype;
-    C.JSString_methods = J.JSString.prototype;
-    C.JavaScriptFunction_methods = J.JavaScriptFunction.prototype;
-    C.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;
-    C.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;
-    C.C_JS_CONST = function getTagFallback(o) {
+    B.EventSource_methods = A.EventSource.prototype;
+    B.Interceptor_methods = J.Interceptor.prototype;
+    B.JSArray_methods = J.JSArray.prototype;
+    B.JSInt_methods = J.JSInt.prototype;
+    B.JSNumber_methods = J.JSNumber.prototype;
+    B.JSString_methods = J.JSString.prototype;
+    B.JavaScriptFunction_methods = J.JavaScriptFunction.prototype;
+    B.JavaScriptObject_methods = J.JavaScriptObject.prototype;
+    B.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;
+    B.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;
+    B.C_JS_CONST = function getTagFallback(o) {
   var s = Object.prototype.toString.call(o);
   return s.substring(8, s.length - 1);
 };
-    C.C_JS_CONST0 = function() {
+    B.C_JS_CONST0 = function() {
   var toStringFunction = Object.prototype.toString;
   function getTag(o) {
     var s = toStringFunction.call(o);
@@ -8097,7 +8292,7 @@
     prototypeForTag: prototypeForTag,
     discriminator: discriminator };
 };
-    C.C_JS_CONST6 = function(getTagFallback) {
+    B.C_JS_CONST6 = function(getTagFallback) {
   return function(hooks) {
     if (typeof navigator != "object") return hooks;
     var ua = navigator.userAgent;
@@ -8111,11 +8306,11 @@
     hooks.getTag = getTagFallback;
   };
 };
-    C.C_JS_CONST1 = function(hooks) {
+    B.C_JS_CONST1 = function(hooks) {
   if (typeof dartExperimentalFixupGetTag != "function") return hooks;
   hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);
 };
-    C.C_JS_CONST2 = function(hooks) {
+    B.C_JS_CONST2 = function(hooks) {
   var getTag = hooks.getTag;
   var prototypeForTag = hooks.prototypeForTag;
   function getTagFixed(o) {
@@ -8133,7 +8328,7 @@
   hooks.getTag = getTagFixed;
   hooks.prototypeForTag = prototypeForTagFixed;
 };
-    C.C_JS_CONST5 = function(hooks) {
+    B.C_JS_CONST5 = function(hooks) {
   var userAgent = typeof navigator == "object" ? navigator.userAgent : "";
   if (userAgent.indexOf("Firefox") == -1) return hooks;
   var getTag = hooks.getTag;
@@ -8150,7 +8345,7 @@
   }
   hooks.getTag = getTagFirefox;
 };
-    C.C_JS_CONST4 = function(hooks) {
+    B.C_JS_CONST4 = function(hooks) {
   var userAgent = typeof navigator == "object" ? navigator.userAgent : "";
   if (userAgent.indexOf("Trident/") == -1) return hooks;
   var getTag = hooks.getTag;
@@ -8179,27 +8374,39 @@
   hooks.getTag = getTagIE;
   hooks.prototypeForTag = prototypeForTagIE;
 };
-    C.C_JS_CONST3 = function(hooks) { return hooks; }
+    B.C_JS_CONST3 = function(hooks) { return hooks; }
 ;
-    C.C_JsonCodec = new P.JsonCodec();
-    C.C_OutOfMemoryError = new P.OutOfMemoryError();
-    C.C__DelayedDone = new P._DelayedDone();
-    C.C__JSRandom = new P._JSRandom();
-    C.C__RootZone = new P._RootZone();
-    C.Duration_0 = new P.Duration(0);
-    C.Duration_5000000 = new P.Duration(5000000);
-    C.JsonDecoder_null = new P.JsonDecoder(null);
-    C.JsonEncoder_null = new P.JsonEncoder(null);
-    C.Level_INFO_800 = new Y.Level("INFO", 800);
-    C.Level_SEVERE_1000 = new Y.Level("SEVERE", 1000);
-    C.Level_WARNING_900 = new Y.Level("WARNING", 900);
-    C._StringStackTrace_3uE = new P._StringStackTrace("");
+    B.C_JsonCodec = new A.JsonCodec();
+    B.C_OutOfMemoryError = new A.OutOfMemoryError();
+    B.C__DelayedDone = new A._DelayedDone();
+    B.C__JSRandom = new A._JSRandom();
+    B.C__RootZone = new A._RootZone();
+    B.Duration_0 = new A.Duration(0);
+    B.Duration_5000000 = new A.Duration(5000000);
+    B.JsonDecoder_null = new A.JsonDecoder(null);
+    B.JsonEncoder_null = new A.JsonEncoder(null);
+    B.Level_INFO_800 = new A.Level("INFO", 800);
+    B.Level_SEVERE_1000 = new A.Level("SEVERE", 1000);
+    B.Level_WARNING_900 = new A.Level("WARNING", 900);
+    B.Type_ByteBuffer_RkP = A.typeLiteral("ByteBuffer");
+    B.Type_ByteData_zNC = A.typeLiteral("ByteData");
+    B.Type_Float32List_LB7 = A.typeLiteral("Float32List");
+    B.Type_Float64List_LB7 = A.typeLiteral("Float64List");
+    B.Type_Int16List_uXf = A.typeLiteral("Int16List");
+    B.Type_Int32List_O50 = A.typeLiteral("Int32List");
+    B.Type_Int8List_ekJ = A.typeLiteral("Int8List");
+    B.Type_Uint16List_2bx = A.typeLiteral("Uint16List");
+    B.Type_Uint32List_2bx = A.typeLiteral("Uint32List");
+    B.Type_Uint8ClampedList_Jik = A.typeLiteral("Uint8ClampedList");
+    B.Type_Uint8List_WLA = A.typeLiteral("Uint8List");
+    B._StringStackTrace_3uE = new A._StringStackTrace("");
   })();
   (function staticFields() {
     $._JS_INTEROP_INTERCEPTOR_TAG = null;
-    $.Closure_functionCounter = 0;
-    $.BoundClosure_selfFieldNameCache = null;
-    $.BoundClosure_receiverFieldNameCache = null;
+    $.toStringVisiting = A._setArrayType([], A.findType("JSArray<Object>"));
+    $.Primitives__identityHashCodeProperty = null;
+    $.BoundClosure__receiverFieldNameCache = null;
+    $.BoundClosure__interceptorFieldNameCache = null;
     $.getTagFunction = null;
     $.alternateTagFunction = null;
     $.prototypeForTagFunction = null;
@@ -8210,104 +8417,69 @@
     $._lastCallback = null;
     $._lastPriorityCallback = null;
     $._isInCallbackLoop = false;
-    $.Zone__current = C.C__RootZone;
-    $._toStringVisiting = H.setRuntimeTypeInfo([], H.findType("JSArray<Object>"));
+    $.Zone__current = B.C__RootZone;
     $.LogRecord__nextNumber = 0;
-    $.Logger__loggers = P.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Logger);
+    $.Logger__loggers = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Logger);
   })();
   (function lazyInitializers() {
-    var _lazyFinal = hunkHelpers.lazyFinal,
-      _lazy = hunkHelpers.lazy;
-    _lazyFinal($, "DART_CLOSURE_PROPERTY_NAME", "$get$DART_CLOSURE_PROPERTY_NAME", function() {
-      return H.getIsolateAffinityTag("_$dart_dartClosure");
-    });
-    _lazyFinal($, "nullFuture", "$get$nullFuture", function() {
-      return C.C__RootZone.run$1$1(new H.nullFuture_closure(), H.findType("Future<Null>"));
-    });
-    _lazyFinal($, "TypeErrorDecoder_noSuchMethodPattern", "$get$TypeErrorDecoder_noSuchMethodPattern", function() {
-      return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn({
-        toString: function() {
-          return "$receiver$";
-        }
-      }));
-    });
-    _lazyFinal($, "TypeErrorDecoder_notClosurePattern", "$get$TypeErrorDecoder_notClosurePattern", function() {
-      return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn({$method$: null,
-        toString: function() {
-          return "$receiver$";
-        }
-      }));
-    });
-    _lazyFinal($, "TypeErrorDecoder_nullCallPattern", "$get$TypeErrorDecoder_nullCallPattern", function() {
-      return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn(null));
-    });
-    _lazyFinal($, "TypeErrorDecoder_nullLiteralCallPattern", "$get$TypeErrorDecoder_nullLiteralCallPattern", function() {
-      return H.TypeErrorDecoder_extractPattern(function() {
-        var $argumentsExpr$ = "$arguments$";
-        try {
-          null.$method$($argumentsExpr$);
-        } catch (e) {
-          return e.message;
-        }
-      }());
-    });
-    _lazyFinal($, "TypeErrorDecoder_undefinedCallPattern", "$get$TypeErrorDecoder_undefinedCallPattern", function() {
-      return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn(void 0));
-    });
-    _lazyFinal($, "TypeErrorDecoder_undefinedLiteralCallPattern", "$get$TypeErrorDecoder_undefinedLiteralCallPattern", function() {
-      return H.TypeErrorDecoder_extractPattern(function() {
-        var $argumentsExpr$ = "$arguments$";
-        try {
-          (void 0).$method$($argumentsExpr$);
-        } catch (e) {
-          return e.message;
-        }
-      }());
-    });
-    _lazyFinal($, "TypeErrorDecoder_nullPropertyPattern", "$get$TypeErrorDecoder_nullPropertyPattern", function() {
-      return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokePropertyErrorOn(null));
-    });
-    _lazyFinal($, "TypeErrorDecoder_nullLiteralPropertyPattern", "$get$TypeErrorDecoder_nullLiteralPropertyPattern", function() {
-      return H.TypeErrorDecoder_extractPattern(function() {
-        try {
-          null.$method$;
-        } catch (e) {
-          return e.message;
-        }
-      }());
-    });
-    _lazyFinal($, "TypeErrorDecoder_undefinedPropertyPattern", "$get$TypeErrorDecoder_undefinedPropertyPattern", function() {
-      return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokePropertyErrorOn(void 0));
-    });
-    _lazyFinal($, "TypeErrorDecoder_undefinedLiteralPropertyPattern", "$get$TypeErrorDecoder_undefinedLiteralPropertyPattern", function() {
-      return H.TypeErrorDecoder_extractPattern(function() {
-        try {
-          (void 0).$method$;
-        } catch (e) {
-          return e.message;
-        }
-      }());
-    });
-    _lazyFinal($, "_AsyncRun__scheduleImmediateClosure", "$get$_AsyncRun__scheduleImmediateClosure", function() {
-      return P._AsyncRun__initializeScheduleImmediate();
-    });
-    _lazyFinal($, "Future__nullFuture", "$get$Future__nullFuture", function() {
-      return H.findType("_Future<Null>")._as($.$get$nullFuture());
-    });
-    _lazy($, "_hasErrorStackProperty", "$get$_hasErrorStackProperty", function() {
-      return new Error().stack != void 0;
-    });
-    _lazyFinal($, "Logger_root", "$get$Logger_root", function() {
-      return F.Logger_Logger("");
-    });
-    _lazyFinal($, "_requestPool", "$get$_requestPool", function() {
+    var _lazyFinal = hunkHelpers.lazyFinal;
+    _lazyFinal($, "DART_CLOSURE_PROPERTY_NAME", "$get$DART_CLOSURE_PROPERTY_NAME", () => A.getIsolateAffinityTag("_$dart_dartClosure"));
+    _lazyFinal($, "nullFuture", "$get$nullFuture", () => B.C__RootZone.run$1$1(new A.nullFuture_closure(), A.findType("Future<Null>")));
+    _lazyFinal($, "TypeErrorDecoder_noSuchMethodPattern", "$get$TypeErrorDecoder_noSuchMethodPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn({
+      toString: function() {
+        return "$receiver$";
+      }
+    })));
+    _lazyFinal($, "TypeErrorDecoder_notClosurePattern", "$get$TypeErrorDecoder_notClosurePattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn({$method$: null,
+      toString: function() {
+        return "$receiver$";
+      }
+    })));
+    _lazyFinal($, "TypeErrorDecoder_nullCallPattern", "$get$TypeErrorDecoder_nullCallPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn(null)));
+    _lazyFinal($, "TypeErrorDecoder_nullLiteralCallPattern", "$get$TypeErrorDecoder_nullLiteralCallPattern", () => A.TypeErrorDecoder_extractPattern(function() {
+      var $argumentsExpr$ = "$arguments$";
+      try {
+        null.$method$($argumentsExpr$);
+      } catch (e) {
+        return e.message;
+      }
+    }()));
+    _lazyFinal($, "TypeErrorDecoder_undefinedCallPattern", "$get$TypeErrorDecoder_undefinedCallPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn(void 0)));
+    _lazyFinal($, "TypeErrorDecoder_undefinedLiteralCallPattern", "$get$TypeErrorDecoder_undefinedLiteralCallPattern", () => A.TypeErrorDecoder_extractPattern(function() {
+      var $argumentsExpr$ = "$arguments$";
+      try {
+        (void 0).$method$($argumentsExpr$);
+      } catch (e) {
+        return e.message;
+      }
+    }()));
+    _lazyFinal($, "TypeErrorDecoder_nullPropertyPattern", "$get$TypeErrorDecoder_nullPropertyPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokePropertyErrorOn(null)));
+    _lazyFinal($, "TypeErrorDecoder_nullLiteralPropertyPattern", "$get$TypeErrorDecoder_nullLiteralPropertyPattern", () => A.TypeErrorDecoder_extractPattern(function() {
+      try {
+        null.$method$;
+      } catch (e) {
+        return e.message;
+      }
+    }()));
+    _lazyFinal($, "TypeErrorDecoder_undefinedPropertyPattern", "$get$TypeErrorDecoder_undefinedPropertyPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokePropertyErrorOn(void 0)));
+    _lazyFinal($, "TypeErrorDecoder_undefinedLiteralPropertyPattern", "$get$TypeErrorDecoder_undefinedLiteralPropertyPattern", () => A.TypeErrorDecoder_extractPattern(function() {
+      try {
+        (void 0).$method$;
+      } catch (e) {
+        return e.message;
+      }
+    }()));
+    _lazyFinal($, "_AsyncRun__scheduleImmediateClosure", "$get$_AsyncRun__scheduleImmediateClosure", () => A._AsyncRun__initializeScheduleImmediate());
+    _lazyFinal($, "Future__nullFuture", "$get$Future__nullFuture", () => A.findType("_Future<Null>")._as($.$get$nullFuture()));
+    _lazyFinal($, "Logger_root", "$get$Logger_root", () => A.Logger_Logger(""));
+    _lazyFinal($, "_requestPool", "$get$_requestPool", () => {
       var t4,
-        t1 = H.findType("Completer<PoolResource>"),
-        t2 = P.ListQueue$(t1),
-        t3 = P.ListQueue$(type$.void_Function);
-      t1 = P.ListQueue$(t1);
-      t4 = P.Completer_Completer(type$.dynamic);
-      return new O.Pool(t2, t3, t1, 1000, new S.AsyncMemoizer(t4, H.findType("AsyncMemoizer<@>")));
+        t1 = A.findType("Completer<PoolResource>"),
+        t2 = A.ListQueue$(t1),
+        t3 = A.ListQueue$(type$.void_Function);
+      t1 = A.ListQueue$(t1);
+      t4 = A.Completer_Completer(type$.dynamic);
+      return new A.Pool(t2, t3, t1, 1000, new A.AsyncMemoizer(t4, A.findType("AsyncMemoizer<@>")));
     });
   })();
   (function nativeSupport() {
@@ -8333,16 +8505,34 @@
       }
       init.dispatchPropertyName = init.getIsolateTag("dispatch_record");
     }();
-    hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer: J.Interceptor, Blob: J.Interceptor, DOMError: J.Interceptor, File: J.Interceptor, MediaError: J.Interceptor, NavigatorUserMediaError: J.Interceptor, OverconstrainedError: J.Interceptor, PositionError: J.Interceptor, SQLError: J.Interceptor, DataView: H.NativeTypedData, ArrayBufferView: H.NativeTypedData, Float32Array: H.NativeTypedArrayOfDouble, Float64Array: H.NativeTypedArrayOfDouble, Int16Array: H.NativeInt16List, Int32Array: H.NativeInt32List, Int8Array: H.NativeInt8List, Uint16Array: H.NativeUint16List, Uint32Array: H.NativeUint32List, Uint8ClampedArray: H.NativeUint8ClampedList, CanvasPixelArray: H.NativeUint8ClampedList, Uint8Array: H.NativeUint8List, HTMLAudioElement: W.HtmlElement, HTMLBRElement: W.HtmlElement, HTMLBaseElement: W.HtmlElement, HTMLBodyElement: W.HtmlElement, HTMLButtonElement: W.HtmlElement, HTMLCanvasElement: W.HtmlElement, HTMLContentElement: W.HtmlElement, HTMLDListElement: W.HtmlElement, HTMLDataElement: W.HtmlElement, HTMLDataListElement: W.HtmlElement, HTMLDetailsElement: W.HtmlElement, HTMLDialogElement: W.HtmlElement, HTMLDivElement: W.HtmlElement, HTMLEmbedElement: W.HtmlElement, HTMLFieldSetElement: W.HtmlElement, HTMLHRElement: W.HtmlElement, HTMLHeadElement: W.HtmlElement, HTMLHeadingElement: W.HtmlElement, HTMLHtmlElement: W.HtmlElement, HTMLIFrameElement: W.HtmlElement, HTMLImageElement: W.HtmlElement, HTMLInputElement: W.HtmlElement, HTMLLIElement: W.HtmlElement, HTMLLabelElement: W.HtmlElement, HTMLLegendElement: W.HtmlElement, HTMLLinkElement: W.HtmlElement, HTMLMapElement: W.HtmlElement, HTMLMediaElement: W.HtmlElement, HTMLMenuElement: W.HtmlElement, HTMLMetaElement: W.HtmlElement, HTMLMeterElement: W.HtmlElement, HTMLModElement: W.HtmlElement, HTMLOListElement: W.HtmlElement, HTMLObjectElement: W.HtmlElement, HTMLOptGroupElement: W.HtmlElement, HTMLOptionElement: W.HtmlElement, HTMLOutputElement: W.HtmlElement, HTMLParagraphElement: W.HtmlElement, HTMLParamElement: W.HtmlElement, HTMLPictureElement: W.HtmlElement, HTMLPreElement: W.HtmlElement, HTMLProgressElement: W.HtmlElement, HTMLQuoteElement: W.HtmlElement, HTMLScriptElement: W.HtmlElement, HTMLShadowElement: W.HtmlElement, HTMLSlotElement: W.HtmlElement, HTMLSourceElement: W.HtmlElement, HTMLSpanElement: W.HtmlElement, HTMLStyleElement: W.HtmlElement, HTMLTableCaptionElement: W.HtmlElement, HTMLTableCellElement: W.HtmlElement, HTMLTableDataCellElement: W.HtmlElement, HTMLTableHeaderCellElement: W.HtmlElement, HTMLTableColElement: W.HtmlElement, HTMLTableElement: W.HtmlElement, HTMLTableRowElement: W.HtmlElement, HTMLTableSectionElement: W.HtmlElement, HTMLTemplateElement: W.HtmlElement, HTMLTextAreaElement: W.HtmlElement, HTMLTimeElement: W.HtmlElement, HTMLTitleElement: W.HtmlElement, HTMLTrackElement: W.HtmlElement, HTMLUListElement: W.HtmlElement, HTMLUnknownElement: W.HtmlElement, HTMLVideoElement: W.HtmlElement, HTMLDirectoryElement: W.HtmlElement, HTMLFontElement: W.HtmlElement, HTMLFrameElement: W.HtmlElement, HTMLFrameSetElement: W.HtmlElement, HTMLMarqueeElement: W.HtmlElement, HTMLElement: W.HtmlElement, HTMLAnchorElement: W.AnchorElement, HTMLAreaElement: W.AreaElement, DOMException: W.DomException, Element: W.Element, AbortPaymentEvent: W.Event, AnimationEvent: W.Event, AnimationPlaybackEvent: W.Event, ApplicationCacheErrorEvent: W.Event, BackgroundFetchClickEvent: W.Event, BackgroundFetchEvent: W.Event, BackgroundFetchFailEvent: W.Event, BackgroundFetchedEvent: W.Event, BeforeInstallPromptEvent: W.Event, BeforeUnloadEvent: W.Event, BlobEvent: W.Event, CanMakePaymentEvent: W.Event, ClipboardEvent: W.Event, CloseEvent: W.Event, CustomEvent: W.Event, DeviceMotionEvent: W.Event, DeviceOrientationEvent: W.Event, ErrorEvent: W.Event, ExtendableEvent: W.Event, ExtendableMessageEvent: W.Event, FetchEvent: W.Event, FontFaceSetLoadEvent: W.Event, ForeignFetchEvent: W.Event, GamepadEvent: W.Event, HashChangeEvent: W.Event, InstallEvent: W.Event, MediaEncryptedEvent: W.Event, MediaKeyMessageEvent: W.Event, MediaQueryListEvent: W.Event, MediaStreamEvent: W.Event, MediaStreamTrackEvent: W.Event, MIDIConnectionEvent: W.Event, MIDIMessageEvent: W.Event, MutationEvent: W.Event, NotificationEvent: W.Event, PageTransitionEvent: W.Event, PaymentRequestEvent: W.Event, PaymentRequestUpdateEvent: W.Event, PopStateEvent: W.Event, PresentationConnectionAvailableEvent: W.Event, PresentationConnectionCloseEvent: W.Event, PromiseRejectionEvent: W.Event, PushEvent: W.Event, RTCDataChannelEvent: W.Event, RTCDTMFToneChangeEvent: W.Event, RTCPeerConnectionIceEvent: W.Event, RTCTrackEvent: W.Event, SecurityPolicyViolationEvent: W.Event, SensorErrorEvent: W.Event, SpeechRecognitionError: W.Event, SpeechRecognitionEvent: W.Event, SpeechSynthesisEvent: W.Event, StorageEvent: W.Event, SyncEvent: W.Event, TrackEvent: W.Event, TransitionEvent: W.Event, WebKitTransitionEvent: W.Event, VRDeviceEvent: W.Event, VRDisplayEvent: W.Event, VRSessionEvent: W.Event, MojoInterfaceRequestEvent: W.Event, USBConnectionEvent: W.Event, IDBVersionChangeEvent: W.Event, AudioProcessingEvent: W.Event, OfflineAudioCompletionEvent: W.Event, WebGLContextEvent: W.Event, Event: W.Event, InputEvent: W.Event, SubmitEvent: W.Event, EventSource: W.EventSource, MessagePort: W.EventTarget, EventTarget: W.EventTarget, HTMLFormElement: W.FormElement, XMLHttpRequest: W.HttpRequest, XMLHttpRequestEventTarget: W.HttpRequestEventTarget, MessageEvent: W.MessageEvent, MouseEvent: W.MouseEvent, DragEvent: W.MouseEvent, PointerEvent: W.MouseEvent, WheelEvent: W.MouseEvent, Document: W.Node, HTMLDocument: W.Node, Node: W.Node, ProgressEvent: W.ProgressEvent, ResourceProgressEvent: W.ProgressEvent, HTMLSelectElement: W.SelectElement, CompositionEvent: W.UIEvent, FocusEvent: W.UIEvent, KeyboardEvent: W.UIEvent, TextEvent: W.UIEvent, TouchEvent: W.UIEvent, UIEvent: W.UIEvent, SVGAElement: P.SvgElement, SVGAnimateElement: P.SvgElement, SVGAnimateMotionElement: P.SvgElement, SVGAnimateTransformElement: P.SvgElement, SVGAnimationElement: P.SvgElement, SVGCircleElement: P.SvgElement, SVGClipPathElement: P.SvgElement, SVGDefsElement: P.SvgElement, SVGDescElement: P.SvgElement, SVGDiscardElement: P.SvgElement, SVGEllipseElement: P.SvgElement, SVGFEBlendElement: P.SvgElement, SVGFEColorMatrixElement: P.SvgElement, SVGFEComponentTransferElement: P.SvgElement, SVGFECompositeElement: P.SvgElement, SVGFEConvolveMatrixElement: P.SvgElement, SVGFEDiffuseLightingElement: P.SvgElement, SVGFEDisplacementMapElement: P.SvgElement, SVGFEDistantLightElement: P.SvgElement, SVGFEFloodElement: P.SvgElement, SVGFEFuncAElement: P.SvgElement, SVGFEFuncBElement: P.SvgElement, SVGFEFuncGElement: P.SvgElement, SVGFEFuncRElement: P.SvgElement, SVGFEGaussianBlurElement: P.SvgElement, SVGFEImageElement: P.SvgElement, SVGFEMergeElement: P.SvgElement, SVGFEMergeNodeElement: P.SvgElement, SVGFEMorphologyElement: P.SvgElement, SVGFEOffsetElement: P.SvgElement, SVGFEPointLightElement: P.SvgElement, SVGFESpecularLightingElement: P.SvgElement, SVGFESpotLightElement: P.SvgElement, SVGFETileElement: P.SvgElement, SVGFETurbulenceElement: P.SvgElement, SVGFilterElement: P.SvgElement, SVGForeignObjectElement: P.SvgElement, SVGGElement: P.SvgElement, SVGGeometryElement: P.SvgElement, SVGGraphicsElement: P.SvgElement, SVGImageElement: P.SvgElement, SVGLineElement: P.SvgElement, SVGLinearGradientElement: P.SvgElement, SVGMarkerElement: P.SvgElement, SVGMaskElement: P.SvgElement, SVGMetadataElement: P.SvgElement, SVGPathElement: P.SvgElement, SVGPatternElement: P.SvgElement, SVGPolygonElement: P.SvgElement, SVGPolylineElement: P.SvgElement, SVGRadialGradientElement: P.SvgElement, SVGRectElement: P.SvgElement, SVGScriptElement: P.SvgElement, SVGSetElement: P.SvgElement, SVGStopElement: P.SvgElement, SVGStyleElement: P.SvgElement, SVGElement: P.SvgElement, SVGSVGElement: P.SvgElement, SVGSwitchElement: P.SvgElement, SVGSymbolElement: P.SvgElement, SVGTSpanElement: P.SvgElement, SVGTextContentElement: P.SvgElement, SVGTextElement: P.SvgElement, SVGTextPathElement: P.SvgElement, SVGTextPositioningElement: P.SvgElement, SVGTitleElement: P.SvgElement, SVGUseElement: P.SvgElement, SVGViewElement: P.SvgElement, SVGGradientElement: P.SvgElement, SVGComponentTransferFunctionElement: P.SvgElement, SVGFEDropShadowElement: P.SvgElement, SVGMPathElement: P.SvgElement});
-    hunkHelpers.setOrUpdateLeafTags({ArrayBuffer: true, Blob: true, DOMError: true, File: true, MediaError: true, NavigatorUserMediaError: true, OverconstrainedError: true, PositionError: true, SQLError: true, DataView: true, ArrayBufferView: false, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false, HTMLAudioElement: true, HTMLBRElement: true, HTMLBaseElement: true, HTMLBodyElement: true, HTMLButtonElement: true, HTMLCanvasElement: true, HTMLContentElement: true, HTMLDListElement: true, HTMLDataElement: true, HTMLDataListElement: true, HTMLDetailsElement: true, HTMLDialogElement: true, HTMLDivElement: true, HTMLEmbedElement: true, HTMLFieldSetElement: true, HTMLHRElement: true, HTMLHeadElement: true, HTMLHeadingElement: true, HTMLHtmlElement: true, HTMLIFrameElement: true, HTMLImageElement: true, HTMLInputElement: true, HTMLLIElement: true, HTMLLabelElement: true, HTMLLegendElement: true, HTMLLinkElement: true, HTMLMapElement: true, HTMLMediaElement: true, HTMLMenuElement: true, HTMLMetaElement: true, HTMLMeterElement: true, HTMLModElement: true, HTMLOListElement: true, HTMLObjectElement: true, HTMLOptGroupElement: true, HTMLOptionElement: true, HTMLOutputElement: true, HTMLParagraphElement: true, HTMLParamElement: true, HTMLPictureElement: true, HTMLPreElement: true, HTMLProgressElement: true, HTMLQuoteElement: true, HTMLScriptElement: true, HTMLShadowElement: true, HTMLSlotElement: true, HTMLSourceElement: true, HTMLSpanElement: true, HTMLStyleElement: true, HTMLTableCaptionElement: true, HTMLTableCellElement: true, HTMLTableDataCellElement: true, HTMLTableHeaderCellElement: true, HTMLTableColElement: true, HTMLTableElement: true, HTMLTableRowElement: true, HTMLTableSectionElement: true, HTMLTemplateElement: true, HTMLTextAreaElement: true, HTMLTimeElement: true, HTMLTitleElement: true, HTMLTrackElement: true, HTMLUListElement: true, HTMLUnknownElement: true, HTMLVideoElement: true, HTMLDirectoryElement: true, HTMLFontElement: true, HTMLFrameElement: true, HTMLFrameSetElement: true, HTMLMarqueeElement: true, HTMLElement: false, HTMLAnchorElement: true, HTMLAreaElement: true, DOMException: true, Element: false, AbortPaymentEvent: true, AnimationEvent: true, AnimationPlaybackEvent: true, ApplicationCacheErrorEvent: true, BackgroundFetchClickEvent: true, BackgroundFetchEvent: true, BackgroundFetchFailEvent: true, BackgroundFetchedEvent: true, BeforeInstallPromptEvent: true, BeforeUnloadEvent: true, BlobEvent: true, CanMakePaymentEvent: true, ClipboardEvent: true, CloseEvent: true, CustomEvent: true, DeviceMotionEvent: true, DeviceOrientationEvent: true, ErrorEvent: true, ExtendableEvent: true, ExtendableMessageEvent: true, FetchEvent: true, FontFaceSetLoadEvent: true, ForeignFetchEvent: true, GamepadEvent: true, HashChangeEvent: true, InstallEvent: true, MediaEncryptedEvent: true, MediaKeyMessageEvent: true, MediaQueryListEvent: true, MediaStreamEvent: true, MediaStreamTrackEvent: true, MIDIConnectionEvent: true, MIDIMessageEvent: true, MutationEvent: true, NotificationEvent: true, PageTransitionEvent: true, PaymentRequestEvent: true, PaymentRequestUpdateEvent: true, PopStateEvent: true, PresentationConnectionAvailableEvent: true, PresentationConnectionCloseEvent: true, PromiseRejectionEvent: true, PushEvent: true, RTCDataChannelEvent: true, RTCDTMFToneChangeEvent: true, RTCPeerConnectionIceEvent: true, RTCTrackEvent: true, SecurityPolicyViolationEvent: true, SensorErrorEvent: true, SpeechRecognitionError: true, SpeechRecognitionEvent: true, SpeechSynthesisEvent: true, StorageEvent: true, SyncEvent: true, TrackEvent: true, TransitionEvent: true, WebKitTransitionEvent: true, VRDeviceEvent: true, VRDisplayEvent: true, VRSessionEvent: true, MojoInterfaceRequestEvent: true, USBConnectionEvent: true, IDBVersionChangeEvent: true, AudioProcessingEvent: true, OfflineAudioCompletionEvent: true, WebGLContextEvent: true, Event: false, InputEvent: false, SubmitEvent: false, EventSource: true, MessagePort: true, EventTarget: false, HTMLFormElement: true, XMLHttpRequest: true, XMLHttpRequestEventTarget: false, MessageEvent: true, MouseEvent: true, DragEvent: true, PointerEvent: true, WheelEvent: true, Document: true, HTMLDocument: true, Node: false, ProgressEvent: true, ResourceProgressEvent: true, HTMLSelectElement: true, CompositionEvent: true, FocusEvent: true, KeyboardEvent: true, TextEvent: true, TouchEvent: true, UIEvent: false, SVGAElement: true, SVGAnimateElement: true, SVGAnimateMotionElement: true, SVGAnimateTransformElement: true, SVGAnimationElement: true, SVGCircleElement: true, SVGClipPathElement: true, SVGDefsElement: true, SVGDescElement: true, SVGDiscardElement: true, SVGEllipseElement: true, SVGFEBlendElement: true, SVGFEColorMatrixElement: true, SVGFEComponentTransferElement: true, SVGFECompositeElement: true, SVGFEConvolveMatrixElement: true, SVGFEDiffuseLightingElement: true, SVGFEDisplacementMapElement: true, SVGFEDistantLightElement: true, SVGFEFloodElement: true, SVGFEFuncAElement: true, SVGFEFuncBElement: true, SVGFEFuncGElement: true, SVGFEFuncRElement: true, SVGFEGaussianBlurElement: true, SVGFEImageElement: true, SVGFEMergeElement: true, SVGFEMergeNodeElement: true, SVGFEMorphologyElement: true, SVGFEOffsetElement: true, SVGFEPointLightElement: true, SVGFESpecularLightingElement: true, SVGFESpotLightElement: true, SVGFETileElement: true, SVGFETurbulenceElement: true, SVGFilterElement: true, SVGForeignObjectElement: true, SVGGElement: true, SVGGeometryElement: true, SVGGraphicsElement: true, SVGImageElement: true, SVGLineElement: true, SVGLinearGradientElement: true, SVGMarkerElement: true, SVGMaskElement: true, SVGMetadataElement: true, SVGPathElement: true, SVGPatternElement: true, SVGPolygonElement: true, SVGPolylineElement: true, SVGRadialGradientElement: true, SVGRectElement: true, SVGScriptElement: true, SVGSetElement: true, SVGStopElement: true, SVGStyleElement: true, SVGElement: true, SVGSVGElement: true, SVGSwitchElement: true, SVGSymbolElement: true, SVGTSpanElement: true, SVGTextContentElement: true, SVGTextElement: true, SVGTextPathElement: true, SVGTextPositioningElement: true, SVGTitleElement: true, SVGUseElement: true, SVGViewElement: true, SVGGradientElement: true, SVGComponentTransferFunctionElement: true, SVGFEDropShadowElement: true, SVGMPathElement: true});
-    H.NativeTypedArray.$nativeSuperclassTag = "ArrayBufferView";
-    H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
-    H._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
-    H.NativeTypedArrayOfDouble.$nativeSuperclassTag = "ArrayBufferView";
-    H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
-    H._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
-    H.NativeTypedArrayOfInt.$nativeSuperclassTag = "ArrayBufferView";
+    hunkHelpers.setOrUpdateInterceptorsByTag({Blob: J.JavaScriptObject, DOMError: J.JavaScriptObject, File: J.JavaScriptObject, MediaError: J.JavaScriptObject, NavigatorUserMediaError: J.JavaScriptObject, OverconstrainedError: J.JavaScriptObject, PositionError: J.JavaScriptObject, GeolocationPositionError: J.JavaScriptObject, ArrayBuffer: A.NativeByteBuffer, ArrayBufferView: A.NativeTypedData, DataView: A.NativeByteData, Float32Array: A.NativeFloat32List, Float64Array: A.NativeFloat64List, Int16Array: A.NativeInt16List, Int32Array: A.NativeInt32List, Int8Array: A.NativeInt8List, Uint16Array: A.NativeUint16List, Uint32Array: A.NativeUint32List, Uint8ClampedArray: A.NativeUint8ClampedList, CanvasPixelArray: A.NativeUint8ClampedList, Uint8Array: A.NativeUint8List, HTMLAudioElement: A.HtmlElement, HTMLBRElement: A.HtmlElement, HTMLBaseElement: A.HtmlElement, HTMLBodyElement: A.HtmlElement, HTMLButtonElement: A.HtmlElement, HTMLCanvasElement: A.HtmlElement, HTMLContentElement: A.HtmlElement, HTMLDListElement: A.HtmlElement, HTMLDataElement: A.HtmlElement, HTMLDataListElement: A.HtmlElement, HTMLDetailsElement: A.HtmlElement, HTMLDialogElement: A.HtmlElement, HTMLDivElement: A.HtmlElement, HTMLEmbedElement: A.HtmlElement, HTMLFieldSetElement: A.HtmlElement, HTMLHRElement: A.HtmlElement, HTMLHeadElement: A.HtmlElement, HTMLHeadingElement: A.HtmlElement, HTMLHtmlElement: A.HtmlElement, HTMLIFrameElement: A.HtmlElement, HTMLImageElement: A.HtmlElement, HTMLInputElement: A.HtmlElement, HTMLLIElement: A.HtmlElement, HTMLLabelElement: A.HtmlElement, HTMLLegendElement: A.HtmlElement, HTMLLinkElement: A.HtmlElement, HTMLMapElement: A.HtmlElement, HTMLMediaElement: A.HtmlElement, HTMLMenuElement: A.HtmlElement, HTMLMetaElement: A.HtmlElement, HTMLMeterElement: A.HtmlElement, HTMLModElement: A.HtmlElement, HTMLOListElement: A.HtmlElement, HTMLObjectElement: A.HtmlElement, HTMLOptGroupElement: A.HtmlElement, HTMLOptionElement: A.HtmlElement, HTMLOutputElement: A.HtmlElement, HTMLParagraphElement: A.HtmlElement, HTMLParamElement: A.HtmlElement, HTMLPictureElement: A.HtmlElement, HTMLPreElement: A.HtmlElement, HTMLProgressElement: A.HtmlElement, HTMLQuoteElement: A.HtmlElement, HTMLScriptElement: A.HtmlElement, HTMLShadowElement: A.HtmlElement, HTMLSlotElement: A.HtmlElement, HTMLSourceElement: A.HtmlElement, HTMLSpanElement: A.HtmlElement, HTMLStyleElement: A.HtmlElement, HTMLTableCaptionElement: A.HtmlElement, HTMLTableCellElement: A.HtmlElement, HTMLTableDataCellElement: A.HtmlElement, HTMLTableHeaderCellElement: A.HtmlElement, HTMLTableColElement: A.HtmlElement, HTMLTableElement: A.HtmlElement, HTMLTableRowElement: A.HtmlElement, HTMLTableSectionElement: A.HtmlElement, HTMLTemplateElement: A.HtmlElement, HTMLTextAreaElement: A.HtmlElement, HTMLTimeElement: A.HtmlElement, HTMLTitleElement: A.HtmlElement, HTMLTrackElement: A.HtmlElement, HTMLUListElement: A.HtmlElement, HTMLUnknownElement: A.HtmlElement, HTMLVideoElement: A.HtmlElement, HTMLDirectoryElement: A.HtmlElement, HTMLFontElement: A.HtmlElement, HTMLFrameElement: A.HtmlElement, HTMLFrameSetElement: A.HtmlElement, HTMLMarqueeElement: A.HtmlElement, HTMLElement: A.HtmlElement, HTMLAnchorElement: A.AnchorElement, HTMLAreaElement: A.AreaElement, DOMException: A.DomException, MathMLElement: A.Element, Element: A.Element, AbortPaymentEvent: A.Event, AnimationEvent: A.Event, AnimationPlaybackEvent: A.Event, ApplicationCacheErrorEvent: A.Event, BackgroundFetchClickEvent: A.Event, BackgroundFetchEvent: A.Event, BackgroundFetchFailEvent: A.Event, BackgroundFetchedEvent: A.Event, BeforeInstallPromptEvent: A.Event, BeforeUnloadEvent: A.Event, BlobEvent: A.Event, CanMakePaymentEvent: A.Event, ClipboardEvent: A.Event, CloseEvent: A.Event, CustomEvent: A.Event, DeviceMotionEvent: A.Event, DeviceOrientationEvent: A.Event, ErrorEvent: A.Event, ExtendableEvent: A.Event, ExtendableMessageEvent: A.Event, FetchEvent: A.Event, FontFaceSetLoadEvent: A.Event, ForeignFetchEvent: A.Event, GamepadEvent: A.Event, HashChangeEvent: A.Event, InstallEvent: A.Event, MediaEncryptedEvent: A.Event, MediaKeyMessageEvent: A.Event, MediaQueryListEvent: A.Event, MediaStreamEvent: A.Event, MediaStreamTrackEvent: A.Event, MIDIConnectionEvent: A.Event, MIDIMessageEvent: A.Event, MutationEvent: A.Event, NotificationEvent: A.Event, PageTransitionEvent: A.Event, PaymentRequestEvent: A.Event, PaymentRequestUpdateEvent: A.Event, PopStateEvent: A.Event, PresentationConnectionAvailableEvent: A.Event, PresentationConnectionCloseEvent: A.Event, ProgressEvent: A.Event, PromiseRejectionEvent: A.Event, PushEvent: A.Event, RTCDataChannelEvent: A.Event, RTCDTMFToneChangeEvent: A.Event, RTCPeerConnectionIceEvent: A.Event, RTCTrackEvent: A.Event, SecurityPolicyViolationEvent: A.Event, SensorErrorEvent: A.Event, SpeechRecognitionError: A.Event, SpeechRecognitionEvent: A.Event, SpeechSynthesisEvent: A.Event, StorageEvent: A.Event, SyncEvent: A.Event, TrackEvent: A.Event, TransitionEvent: A.Event, WebKitTransitionEvent: A.Event, VRDeviceEvent: A.Event, VRDisplayEvent: A.Event, VRSessionEvent: A.Event, MojoInterfaceRequestEvent: A.Event, ResourceProgressEvent: A.Event, USBConnectionEvent: A.Event, IDBVersionChangeEvent: A.Event, AudioProcessingEvent: A.Event, OfflineAudioCompletionEvent: A.Event, WebGLContextEvent: A.Event, Event: A.Event, InputEvent: A.Event, SubmitEvent: A.Event, EventSource: A.EventSource, MessagePort: A.EventTarget, EventTarget: A.EventTarget, HTMLFormElement: A.FormElement, MessageEvent: A.MessageEvent, MouseEvent: A.MouseEvent, DragEvent: A.MouseEvent, PointerEvent: A.MouseEvent, WheelEvent: A.MouseEvent, Document: A.Node, HTMLDocument: A.Node, Node: A.Node, HTMLSelectElement: A.SelectElement, CompositionEvent: A.UIEvent, FocusEvent: A.UIEvent, KeyboardEvent: A.UIEvent, TextEvent: A.UIEvent, TouchEvent: A.UIEvent, UIEvent: A.UIEvent, SVGAElement: A.SvgElement, SVGAnimateElement: A.SvgElement, SVGAnimateMotionElement: A.SvgElement, SVGAnimateTransformElement: A.SvgElement, SVGAnimationElement: A.SvgElement, SVGCircleElement: A.SvgElement, SVGClipPathElement: A.SvgElement, SVGDefsElement: A.SvgElement, SVGDescElement: A.SvgElement, SVGDiscardElement: A.SvgElement, SVGEllipseElement: A.SvgElement, SVGFEBlendElement: A.SvgElement, SVGFEColorMatrixElement: A.SvgElement, SVGFEComponentTransferElement: A.SvgElement, SVGFECompositeElement: A.SvgElement, SVGFEConvolveMatrixElement: A.SvgElement, SVGFEDiffuseLightingElement: A.SvgElement, SVGFEDisplacementMapElement: A.SvgElement, SVGFEDistantLightElement: A.SvgElement, SVGFEFloodElement: A.SvgElement, SVGFEFuncAElement: A.SvgElement, SVGFEFuncBElement: A.SvgElement, SVGFEFuncGElement: A.SvgElement, SVGFEFuncRElement: A.SvgElement, SVGFEGaussianBlurElement: A.SvgElement, SVGFEImageElement: A.SvgElement, SVGFEMergeElement: A.SvgElement, SVGFEMergeNodeElement: A.SvgElement, SVGFEMorphologyElement: A.SvgElement, SVGFEOffsetElement: A.SvgElement, SVGFEPointLightElement: A.SvgElement, SVGFESpecularLightingElement: A.SvgElement, SVGFESpotLightElement: A.SvgElement, SVGFETileElement: A.SvgElement, SVGFETurbulenceElement: A.SvgElement, SVGFilterElement: A.SvgElement, SVGForeignObjectElement: A.SvgElement, SVGGElement: A.SvgElement, SVGGeometryElement: A.SvgElement, SVGGraphicsElement: A.SvgElement, SVGImageElement: A.SvgElement, SVGLineElement: A.SvgElement, SVGLinearGradientElement: A.SvgElement, SVGMarkerElement: A.SvgElement, SVGMaskElement: A.SvgElement, SVGMetadataElement: A.SvgElement, SVGPathElement: A.SvgElement, SVGPatternElement: A.SvgElement, SVGPolygonElement: A.SvgElement, SVGPolylineElement: A.SvgElement, SVGRadialGradientElement: A.SvgElement, SVGRectElement: A.SvgElement, SVGScriptElement: A.SvgElement, SVGSetElement: A.SvgElement, SVGStopElement: A.SvgElement, SVGStyleElement: A.SvgElement, SVGElement: A.SvgElement, SVGSVGElement: A.SvgElement, SVGSwitchElement: A.SvgElement, SVGSymbolElement: A.SvgElement, SVGTSpanElement: A.SvgElement, SVGTextContentElement: A.SvgElement, SVGTextElement: A.SvgElement, SVGTextPathElement: A.SvgElement, SVGTextPositioningElement: A.SvgElement, SVGTitleElement: A.SvgElement, SVGUseElement: A.SvgElement, SVGViewElement: A.SvgElement, SVGGradientElement: A.SvgElement, SVGComponentTransferFunctionElement: A.SvgElement, SVGFEDropShadowElement: A.SvgElement, SVGMPathElement: A.SvgElement});
+    hunkHelpers.setOrUpdateLeafTags({Blob: true, DOMError: true, File: true, MediaError: true, NavigatorUserMediaError: true, OverconstrainedError: true, PositionError: true, GeolocationPositionError: true, ArrayBuffer: true, ArrayBufferView: false, DataView: true, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false, HTMLAudioElement: true, HTMLBRElement: true, HTMLBaseElement: true, HTMLBodyElement: true, HTMLButtonElement: true, HTMLCanvasElement: true, HTMLContentElement: true, HTMLDListElement: true, HTMLDataElement: true, HTMLDataListElement: true, HTMLDetailsElement: true, HTMLDialogElement: true, HTMLDivElement: true, HTMLEmbedElement: true, HTMLFieldSetElement: true, HTMLHRElement: true, HTMLHeadElement: true, HTMLHeadingElement: true, HTMLHtmlElement: true, HTMLIFrameElement: true, HTMLImageElement: true, HTMLInputElement: true, HTMLLIElement: true, HTMLLabelElement: true, HTMLLegendElement: true, HTMLLinkElement: true, HTMLMapElement: true, HTMLMediaElement: true, HTMLMenuElement: true, HTMLMetaElement: true, HTMLMeterElement: true, HTMLModElement: true, HTMLOListElement: true, HTMLObjectElement: true, HTMLOptGroupElement: true, HTMLOptionElement: true, HTMLOutputElement: true, HTMLParagraphElement: true, HTMLParamElement: true, HTMLPictureElement: true, HTMLPreElement: true, HTMLProgressElement: true, HTMLQuoteElement: true, HTMLScriptElement: true, HTMLShadowElement: true, HTMLSlotElement: true, HTMLSourceElement: true, HTMLSpanElement: true, HTMLStyleElement: true, HTMLTableCaptionElement: true, HTMLTableCellElement: true, HTMLTableDataCellElement: true, HTMLTableHeaderCellElement: true, HTMLTableColElement: true, HTMLTableElement: true, HTMLTableRowElement: true, HTMLTableSectionElement: true, HTMLTemplateElement: true, HTMLTextAreaElement: true, HTMLTimeElement: true, HTMLTitleElement: true, HTMLTrackElement: true, HTMLUListElement: true, HTMLUnknownElement: true, HTMLVideoElement: true, HTMLDirectoryElement: true, HTMLFontElement: true, HTMLFrameElement: true, HTMLFrameSetElement: true, HTMLMarqueeElement: true, HTMLElement: false, HTMLAnchorElement: true, HTMLAreaElement: true, DOMException: true, MathMLElement: true, Element: false, AbortPaymentEvent: true, AnimationEvent: true, AnimationPlaybackEvent: true, ApplicationCacheErrorEvent: true, BackgroundFetchClickEvent: true, BackgroundFetchEvent: true, BackgroundFetchFailEvent: true, BackgroundFetchedEvent: true, BeforeInstallPromptEvent: true, BeforeUnloadEvent: true, BlobEvent: true, CanMakePaymentEvent: true, ClipboardEvent: true, CloseEvent: true, CustomEvent: true, DeviceMotionEvent: true, DeviceOrientationEvent: true, ErrorEvent: true, ExtendableEvent: true, ExtendableMessageEvent: true, FetchEvent: true, FontFaceSetLoadEvent: true, ForeignFetchEvent: true, GamepadEvent: true, HashChangeEvent: true, InstallEvent: true, MediaEncryptedEvent: true, MediaKeyMessageEvent: true, MediaQueryListEvent: true, MediaStreamEvent: true, MediaStreamTrackEvent: true, MIDIConnectionEvent: true, MIDIMessageEvent: true, MutationEvent: true, NotificationEvent: true, PageTransitionEvent: true, PaymentRequestEvent: true, PaymentRequestUpdateEvent: true, PopStateEvent: true, PresentationConnectionAvailableEvent: true, PresentationConnectionCloseEvent: true, ProgressEvent: true, PromiseRejectionEvent: true, PushEvent: true, RTCDataChannelEvent: true, RTCDTMFToneChangeEvent: true, RTCPeerConnectionIceEvent: true, RTCTrackEvent: true, SecurityPolicyViolationEvent: true, SensorErrorEvent: true, SpeechRecognitionError: true, SpeechRecognitionEvent: true, SpeechSynthesisEvent: true, StorageEvent: true, SyncEvent: true, TrackEvent: true, TransitionEvent: true, WebKitTransitionEvent: true, VRDeviceEvent: true, VRDisplayEvent: true, VRSessionEvent: true, MojoInterfaceRequestEvent: true, ResourceProgressEvent: true, USBConnectionEvent: true, IDBVersionChangeEvent: true, AudioProcessingEvent: true, OfflineAudioCompletionEvent: true, WebGLContextEvent: true, Event: false, InputEvent: false, SubmitEvent: false, EventSource: true, MessagePort: true, EventTarget: false, HTMLFormElement: true, MessageEvent: true, MouseEvent: true, DragEvent: true, PointerEvent: true, WheelEvent: true, Document: true, HTMLDocument: true, Node: false, HTMLSelectElement: true, CompositionEvent: true, FocusEvent: true, KeyboardEvent: true, TextEvent: true, TouchEvent: true, UIEvent: false, SVGAElement: true, SVGAnimateElement: true, SVGAnimateMotionElement: true, SVGAnimateTransformElement: true, SVGAnimationElement: true, SVGCircleElement: true, SVGClipPathElement: true, SVGDefsElement: true, SVGDescElement: true, SVGDiscardElement: true, SVGEllipseElement: true, SVGFEBlendElement: true, SVGFEColorMatrixElement: true, SVGFEComponentTransferElement: true, SVGFECompositeElement: true, SVGFEConvolveMatrixElement: true, SVGFEDiffuseLightingElement: true, SVGFEDisplacementMapElement: true, SVGFEDistantLightElement: true, SVGFEFloodElement: true, SVGFEFuncAElement: true, SVGFEFuncBElement: true, SVGFEFuncGElement: true, SVGFEFuncRElement: true, SVGFEGaussianBlurElement: true, SVGFEImageElement: true, SVGFEMergeElement: true, SVGFEMergeNodeElement: true, SVGFEMorphologyElement: true, SVGFEOffsetElement: true, SVGFEPointLightElement: true, SVGFESpecularLightingElement: true, SVGFESpotLightElement: true, SVGFETileElement: true, SVGFETurbulenceElement: true, SVGFilterElement: true, SVGForeignObjectElement: true, SVGGElement: true, SVGGeometryElement: true, SVGGraphicsElement: true, SVGImageElement: true, SVGLineElement: true, SVGLinearGradientElement: true, SVGMarkerElement: true, SVGMaskElement: true, SVGMetadataElement: true, SVGPathElement: true, SVGPatternElement: true, SVGPolygonElement: true, SVGPolylineElement: true, SVGRadialGradientElement: true, SVGRectElement: true, SVGScriptElement: true, SVGSetElement: true, SVGStopElement: true, SVGStyleElement: true, SVGElement: true, SVGSVGElement: true, SVGSwitchElement: true, SVGSymbolElement: true, SVGTSpanElement: true, SVGTextContentElement: true, SVGTextElement: true, SVGTextPathElement: true, SVGTextPositioningElement: true, SVGTitleElement: true, SVGUseElement: true, SVGViewElement: true, SVGGradientElement: true, SVGComponentTransferFunctionElement: true, SVGFEDropShadowElement: true, SVGMPathElement: true});
+    A.NativeTypedArray.$nativeSuperclassTag = "ArrayBufferView";
+    A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
+    A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
+    A.NativeTypedArrayOfDouble.$nativeSuperclassTag = "ArrayBufferView";
+    A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
+    A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
+    A.NativeTypedArrayOfInt.$nativeSuperclassTag = "ArrayBufferView";
   })();
+  Function.prototype.call$1 = function(a) {
+    return this(a);
+  };
+  Function.prototype.call$0 = function() {
+    return this();
+  };
+  Function.prototype.call$2 = function(a, b) {
+    return this(a, b);
+  };
+  Function.prototype.call$3 = function(a, b, c) {
+    return this(a, b, c);
+  };
+  Function.prototype.call$4 = function(a, b, c, d) {
+    return this(a, b, c, d);
+  };
+  Function.prototype.call$1$1 = function(a) {
+    return this(a);
+  };
   convertAllToFastObject(holders);
   convertToFastObject($);
   (function(callback) {
@@ -8364,7 +8554,7 @@
       scripts[i].addEventListener("load", onLoad, false);
   })(function(currentScript) {
     init.currentScript = currentScript;
-    var callMain = E.main;
+    var callMain = A.main;
     if (typeof dartMainRunner === "function")
       dartMainRunner(callMain, []);
     else