From d720f8b10006eca97bc481a6a10b114ffa6267b6 Mon Sep 17 00:00:00 2001
From: EisenbergEffect <rob@bluespire.com>
Date: Tue, 6 Aug 2019 11:18:38 -0700
Subject: [PATCH] chore(release): 1.5.0

---
 bower.json                                    |    52 +-
 dist/amd/aurelia-dependency-injection.js      |  1246 +-
 dist/commonjs/aurelia-dependency-injection.js |  1246 +-
 dist/es2015/aurelia-dependency-injection.js   |  1134 +-
 dist/es2017/aurelia-dependency-injection.js   |  1134 +-
 .../aurelia-dependency-injection.js           |  1246 +-
 dist/system/aurelia-dependency-injection.js   |  1246 +-
 .../aurelia-dependency-injection.js           |  1134 +-
 dist/umd/aurelia-dependency-injection.js      |  1246 +-
 doc/CHANGELOG.md                              |  1194 +-
 doc/api.json                                  |     2 +-
 package-lock.json                             | 16656 ++++++++--------
 package.json                                  |   220 +-
 13 files changed, 13873 insertions(+), 13883 deletions(-)

diff --git a/bower.json b/bower.json
index dca6b28..0b15444 100644
--- a/bower.json
+++ b/bower.json
@@ -1,26 +1,26 @@
-{
-  "name": "aurelia-dependency-injection",
-  "version": "1.4.4",
-  "description": "A lightweight, extensible dependency injection container for JavaScript.",
-  "keywords": [
-    "aurelia",
-    "di",
-    "dependency injection",
-    "ioc"
-  ],
-  "homepage": "http://aurelia.io",
-  "main": "dist/commonjs/aurelia-dependency-injection.js",
-  "moduleType": "node",
-  "license": "MIT",
-  "authors": [
-    "Rob Eisenberg <rob@bluespire.com> (http://robeisenberg.com/)"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/aurelia/dependency-injection"
-  },
-  "dependencies": {
-    "aurelia-metadata": "^1.0.0",
-    "aurelia-pal": "^1.0.0"
-  }
-}
+{
+  "name": "aurelia-dependency-injection",
+  "version": "1.5.0",
+  "description": "A lightweight, extensible dependency injection container for JavaScript.",
+  "keywords": [
+    "aurelia",
+    "di",
+    "dependency injection",
+    "ioc"
+  ],
+  "homepage": "http://aurelia.io",
+  "main": "dist/commonjs/aurelia-dependency-injection.js",
+  "moduleType": "node",
+  "license": "MIT",
+  "authors": [
+    "Rob Eisenberg <rob@bluespire.com> (http://robeisenberg.com/)"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "http://github.com/aurelia/dependency-injection"
+  },
+  "dependencies": {
+    "aurelia-metadata": "^1.0.0",
+    "aurelia-pal": "^1.0.0"
+  }
+}
diff --git a/dist/amd/aurelia-dependency-injection.js b/dist/amd/aurelia-dependency-injection.js
index a1b2094..350dad8 100644
--- a/dist/amd/aurelia-dependency-injection.js
+++ b/dist/amd/aurelia-dependency-injection.js
@@ -1,638 +1,638 @@
 define('aurelia-dependency-injection', ['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, aureliaMetadata, aureliaPal) { 'use strict';
 
-  /*! *****************************************************************************
-  Copyright (c) Microsoft Corporation. All rights reserved.
-  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-  this file except in compliance with the License. You may obtain a copy of the
-  License at http://www.apache.org/licenses/LICENSE-2.0
-
-  THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-  WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-  MERCHANTABLITY OR NON-INFRINGEMENT.
-
-  See the Apache Version 2.0 License for specific language governing permissions
-  and limitations under the License.
-  ***************************************************************************** */
-
-  function __decorate(decorators, target, key, desc) {
-      var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-      if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-      else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-      return c > 3 && r && Object.defineProperty(target, key, r), r;
+  /*! *****************************************************************************
+  Copyright (c) Microsoft Corporation. All rights reserved.
+  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+  this file except in compliance with the License. You may obtain a copy of the
+  License at http://www.apache.org/licenses/LICENSE-2.0
+
+  THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+  WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+  MERCHANTABLITY OR NON-INFRINGEMENT.
+
+  See the Apache Version 2.0 License for specific language governing permissions
+  and limitations under the License.
+  ***************************************************************************** */
+
+  function __decorate(decorators, target, key, desc) {
+      var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+      if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+      else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+      return c > 3 && r && Object.defineProperty(target, key, r), r;
+  }
+
+  function __metadata(metadataKey, metadataValue) {
+      if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
   }
 
-  function __metadata(metadataKey, metadataValue) {
-      if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+  function autoinject(potentialTarget) {
+      var deco = function (target) {
+          if (!target.hasOwnProperty('inject')) {
+              target.inject = (aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, target) ||
+                  _emptyParameters).slice();
+              if (target.inject && target.inject.length > 0) {
+                  if (target.inject[target.inject.length - 1] === Object) {
+                      target.inject.splice(-1, 1);
+                  }
+              }
+          }
+      };
+      return potentialTarget ? deco(potentialTarget) : deco;
+  }
+  function inject() {
+      var rest = [];
+      for (var _i = 0; _i < arguments.length; _i++) {
+          rest[_i] = arguments[_i];
+      }
+      return function (target, _key, descriptor) {
+          if (typeof descriptor === 'number') {
+              autoinject(target);
+              if (rest.length === 1) {
+                  target.inject[descriptor] = rest[0];
+              }
+              return;
+          }
+          if (descriptor) {
+              var fn = descriptor.value;
+              fn.inject = rest;
+          }
+          else {
+              target.inject = rest;
+          }
+      };
   }
 
-  function autoinject(potentialTarget) {
-      var deco = function (target) {
-          if (!target.hasOwnProperty('inject')) {
-              target.inject = (aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, target) ||
-                  _emptyParameters).slice();
-              if (target.inject && target.inject.length > 0) {
-                  if (target.inject[target.inject.length - 1] === Object) {
-                      target.inject.splice(-1, 1);
-                  }
-              }
-          }
-      };
-      return potentialTarget ? deco(potentialTarget) : deco;
-  }
-  function inject() {
-      var rest = [];
-      for (var _i = 0; _i < arguments.length; _i++) {
-          rest[_i] = arguments[_i];
-      }
-      return function (target, _key, descriptor) {
-          if (typeof descriptor === 'number') {
-              autoinject(target);
-              if (rest.length === 1) {
-                  target.inject[descriptor] = rest[0];
-              }
-              return;
-          }
-          if (descriptor) {
-              var fn = descriptor.value;
-              fn.inject = rest;
-          }
-          else {
-              target.inject = rest;
-          }
-      };
+  var resolver = aureliaMetadata.protocol.create('aurelia:resolver', function (target) {
+      if (!(typeof target.get === 'function')) {
+          return 'Resolvers must implement: get(container: Container, key: any): any';
+      }
+      return true;
+  });
+  function isStrategy(actual, expected, state) {
+      return actual === expected;
+  }
+  var StrategyResolver = (function () {
+      function StrategyResolver(strategy, state) {
+          this.strategy = strategy;
+          this.state = state;
+      }
+      StrategyResolver.prototype.get = function (container, key) {
+          if (isStrategy(this.strategy, 0, this.state)) {
+              return this.state;
+          }
+          if (isStrategy(this.strategy, 1, this.state)) {
+              var singleton = container.invoke(this.state);
+              this.state = singleton;
+              this.strategy = 0;
+              return singleton;
+          }
+          if (isStrategy(this.strategy, 2, this.state)) {
+              return container.invoke(this.state);
+          }
+          if (isStrategy(this.strategy, 3, this.state)) {
+              return this.state(container, key, this);
+          }
+          if (isStrategy(this.strategy, 4, this.state)) {
+              return this.state[0].get(container, key);
+          }
+          if (isStrategy(this.strategy, 5, this.state)) {
+              return container.get(this.state);
+          }
+          throw new Error('Invalid strategy: ' + this.strategy);
+      };
+      StrategyResolver = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Number, Object])
+      ], StrategyResolver);
+      return StrategyResolver;
+  }());
+  var Lazy = (function () {
+      function Lazy(key) {
+          this._key = key;
+      }
+      Lazy_1 = Lazy;
+      Lazy.prototype.get = function (container) {
+          var _this = this;
+          return function () { return container.get(_this._key); };
+      };
+      Lazy.of = function (key) {
+          return new Lazy_1(key);
+      };
+      var Lazy_1;
+      Lazy = Lazy_1 = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Object])
+      ], Lazy);
+      return Lazy;
+  }());
+  var All = (function () {
+      function All(key) {
+          this._key = key;
+      }
+      All_1 = All;
+      All.prototype.get = function (container) {
+          return container.getAll(this._key);
+      };
+      All.of = function (key) {
+          return new All_1(key);
+      };
+      var All_1;
+      All = All_1 = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Object])
+      ], All);
+      return All;
+  }());
+  var Optional = (function () {
+      function Optional(key, checkParent) {
+          if (checkParent === void 0) { checkParent = true; }
+          this._key = key;
+          this._checkParent = checkParent;
+      }
+      Optional_1 = Optional;
+      Optional.prototype.get = function (container) {
+          if (container.hasResolver(this._key, this._checkParent)) {
+              return container.get(this._key);
+          }
+          return null;
+      };
+      Optional.of = function (key, checkParent) {
+          if (checkParent === void 0) { checkParent = true; }
+          return new Optional_1(key, checkParent);
+      };
+      var Optional_1;
+      Optional = Optional_1 = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Object, Boolean])
+      ], Optional);
+      return Optional;
+  }());
+  var Parent = (function () {
+      function Parent(key) {
+          this._key = key;
+      }
+      Parent_1 = Parent;
+      Parent.prototype.get = function (container) {
+          return container.parent ? container.parent.get(this._key) : null;
+      };
+      Parent.of = function (key) {
+          return new Parent_1(key);
+      };
+      var Parent_1;
+      Parent = Parent_1 = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Object])
+      ], Parent);
+      return Parent;
+  }());
+  var Factory = (function () {
+      function Factory(key) {
+          this._key = key;
+      }
+      Factory_1 = Factory;
+      Factory.prototype.get = function (container) {
+          var fn = this._key;
+          var resolver = container.getResolver(fn);
+          if (resolver && resolver.strategy === 3) {
+              fn = resolver.state;
+          }
+          return function () {
+              var rest = [];
+              for (var _i = 0; _i < arguments.length; _i++) {
+                  rest[_i] = arguments[_i];
+              }
+              return container.invoke(fn, rest);
+          };
+      };
+      Factory.of = function (key) {
+          return new Factory_1(key);
+      };
+      var Factory_1;
+      Factory = Factory_1 = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Object])
+      ], Factory);
+      return Factory;
+  }());
+  var NewInstance = (function () {
+      function NewInstance(key) {
+          var dynamicDependencies = [];
+          for (var _i = 1; _i < arguments.length; _i++) {
+              dynamicDependencies[_i - 1] = arguments[_i];
+          }
+          this.key = key;
+          this.asKey = key;
+          this.dynamicDependencies = dynamicDependencies;
+      }
+      NewInstance_1 = NewInstance;
+      NewInstance.prototype.get = function (container) {
+          var dynamicDependencies = this.dynamicDependencies.length > 0
+              ? this.dynamicDependencies.map(function (dependency) {
+                  return dependency['protocol:aurelia:resolver']
+                      ? dependency.get(container)
+                      : container.get(dependency);
+              })
+              : undefined;
+          var fn = this.key;
+          var resolver = container.getResolver(fn);
+          if (resolver && resolver.strategy === 3) {
+              fn = resolver.state;
+          }
+          var instance = container.invoke(fn, dynamicDependencies);
+          container.registerInstance(this.asKey, instance);
+          return instance;
+      };
+      NewInstance.prototype.as = function (key) {
+          this.asKey = key;
+          return this;
+      };
+      NewInstance.of = function (key) {
+          var dynamicDependencies = [];
+          for (var _i = 1; _i < arguments.length; _i++) {
+              dynamicDependencies[_i - 1] = arguments[_i];
+          }
+          return new (NewInstance_1.bind.apply(NewInstance_1, [void 0, key].concat(dynamicDependencies)))();
+      };
+      var NewInstance_1;
+      NewInstance = NewInstance_1 = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Object, Object])
+      ], NewInstance);
+      return NewInstance;
+  }());
+  function getDecoratorDependencies(target) {
+      autoinject(target);
+      return target.inject;
+  }
+  function lazy(keyValue) {
+      return function (target, _key, index) {
+          var inject$$1 = getDecoratorDependencies(target);
+          inject$$1[index] = Lazy.of(keyValue);
+      };
+  }
+  function all(keyValue) {
+      return function (target, _key, index) {
+          var inject$$1 = getDecoratorDependencies(target);
+          inject$$1[index] = All.of(keyValue);
+      };
+  }
+  function optional(checkParentOrTarget) {
+      if (checkParentOrTarget === void 0) { checkParentOrTarget = true; }
+      var deco = function (checkParent) {
+          return function (target, _key, index) {
+              var inject$$1 = getDecoratorDependencies(target);
+              inject$$1[index] = Optional.of(inject$$1[index], checkParent);
+          };
+      };
+      if (typeof checkParentOrTarget === 'boolean') {
+          return deco(checkParentOrTarget);
+      }
+      return deco(true);
+  }
+  function parent(target, _key, index) {
+      var inject$$1 = getDecoratorDependencies(target);
+      inject$$1[index] = Parent.of(inject$$1[index]);
+  }
+  function factory(keyValue) {
+      return function (target, _key, index) {
+          var inject$$1 = getDecoratorDependencies(target);
+          inject$$1[index] = Factory.of(keyValue);
+      };
+  }
+  function newInstance(asKeyOrTarget) {
+      var dynamicDependencies = [];
+      for (var _i = 1; _i < arguments.length; _i++) {
+          dynamicDependencies[_i - 1] = arguments[_i];
+      }
+      var deco = function (asKey) {
+          return function (target, _key, index) {
+              var inject$$1 = getDecoratorDependencies(target);
+              inject$$1[index] = NewInstance.of.apply(NewInstance, [inject$$1[index]].concat(dynamicDependencies));
+              if (!!asKey) {
+                  inject$$1[index].as(asKey);
+              }
+          };
+      };
+      if (arguments.length >= 1) {
+          return deco(asKeyOrTarget);
+      }
+      return deco();
   }
 
-  var resolver = aureliaMetadata.protocol.create('aurelia:resolver', function (target) {
-      if (!(typeof target.get === 'function')) {
-          return 'Resolvers must implement: get(container: Container, key: any): any';
-      }
-      return true;
-  });
-  function isStrategy(actual, expected, state) {
-      return actual === expected;
-  }
-  var StrategyResolver = (function () {
-      function StrategyResolver(strategy, state) {
-          this.strategy = strategy;
-          this.state = state;
-      }
-      StrategyResolver.prototype.get = function (container, key) {
-          if (isStrategy(this.strategy, 0, this.state)) {
-              return this.state;
-          }
-          if (isStrategy(this.strategy, 1, this.state)) {
-              var singleton = container.invoke(this.state);
-              this.state = singleton;
-              this.strategy = 0;
-              return singleton;
-          }
-          if (isStrategy(this.strategy, 2, this.state)) {
-              return container.invoke(this.state);
-          }
-          if (isStrategy(this.strategy, 3, this.state)) {
-              return this.state(container, key, this);
-          }
-          if (isStrategy(this.strategy, 4, this.state)) {
-              return this.state[0].get(container, key);
-          }
-          if (isStrategy(this.strategy, 5, this.state)) {
-              return container.get(this.state);
-          }
-          throw new Error('Invalid strategy: ' + this.strategy);
-      };
-      StrategyResolver = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Number, Object])
-      ], StrategyResolver);
-      return StrategyResolver;
-  }());
-  var Lazy = (function () {
-      function Lazy(key) {
-          this._key = key;
-      }
-      Lazy_1 = Lazy;
-      Lazy.prototype.get = function (container) {
-          var _this = this;
-          return function () { return container.get(_this._key); };
-      };
-      Lazy.of = function (key) {
-          return new Lazy_1(key);
-      };
-      var Lazy_1;
-      Lazy = Lazy_1 = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Object])
-      ], Lazy);
-      return Lazy;
-  }());
-  var All = (function () {
-      function All(key) {
-          this._key = key;
-      }
-      All_1 = All;
-      All.prototype.get = function (container) {
-          return container.getAll(this._key);
-      };
-      All.of = function (key) {
-          return new All_1(key);
-      };
-      var All_1;
-      All = All_1 = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Object])
-      ], All);
-      return All;
-  }());
-  var Optional = (function () {
-      function Optional(key, checkParent) {
-          if (checkParent === void 0) { checkParent = true; }
-          this._key = key;
-          this._checkParent = checkParent;
-      }
-      Optional_1 = Optional;
-      Optional.prototype.get = function (container) {
-          if (container.hasResolver(this._key, this._checkParent)) {
-              return container.get(this._key);
-          }
-          return null;
-      };
-      Optional.of = function (key, checkParent) {
-          if (checkParent === void 0) { checkParent = true; }
-          return new Optional_1(key, checkParent);
-      };
-      var Optional_1;
-      Optional = Optional_1 = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Object, Boolean])
-      ], Optional);
-      return Optional;
-  }());
-  var Parent = (function () {
-      function Parent(key) {
-          this._key = key;
-      }
-      Parent_1 = Parent;
-      Parent.prototype.get = function (container) {
-          return container.parent ? container.parent.get(this._key) : null;
-      };
-      Parent.of = function (key) {
-          return new Parent_1(key);
-      };
-      var Parent_1;
-      Parent = Parent_1 = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Object])
-      ], Parent);
-      return Parent;
-  }());
-  var Factory = (function () {
-      function Factory(key) {
-          this._key = key;
-      }
-      Factory_1 = Factory;
-      Factory.prototype.get = function (container) {
-          var fn = this._key;
-          var resolver = container.getResolver(fn);
-          if (resolver && resolver.strategy === 3) {
-              fn = resolver.state;
-          }
-          return function () {
-              var rest = [];
-              for (var _i = 0; _i < arguments.length; _i++) {
-                  rest[_i] = arguments[_i];
-              }
-              return container.invoke(fn, rest);
-          };
-      };
-      Factory.of = function (key) {
-          return new Factory_1(key);
-      };
-      var Factory_1;
-      Factory = Factory_1 = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Object])
-      ], Factory);
-      return Factory;
-  }());
-  var NewInstance = (function () {
-      function NewInstance(key) {
-          var dynamicDependencies = [];
-          for (var _i = 1; _i < arguments.length; _i++) {
-              dynamicDependencies[_i - 1] = arguments[_i];
-          }
-          this.key = key;
-          this.asKey = key;
-          this.dynamicDependencies = dynamicDependencies;
-      }
-      NewInstance_1 = NewInstance;
-      NewInstance.prototype.get = function (container) {
-          var dynamicDependencies = this.dynamicDependencies.length > 0
-              ? this.dynamicDependencies.map(function (dependency) {
-                  return dependency['protocol:aurelia:resolver']
-                      ? dependency.get(container)
-                      : container.get(dependency);
-              })
-              : undefined;
-          var fn = this.key;
-          var resolver = container.getResolver(fn);
-          if (resolver && resolver.strategy === 3) {
-              fn = resolver.state;
-          }
-          var instance = container.invoke(fn, dynamicDependencies);
-          container.registerInstance(this.asKey, instance);
-          return instance;
-      };
-      NewInstance.prototype.as = function (key) {
-          this.asKey = key;
-          return this;
-      };
-      NewInstance.of = function (key) {
-          var dynamicDependencies = [];
-          for (var _i = 1; _i < arguments.length; _i++) {
-              dynamicDependencies[_i - 1] = arguments[_i];
-          }
-          return new (NewInstance_1.bind.apply(NewInstance_1, [void 0, key].concat(dynamicDependencies)))();
-      };
-      var NewInstance_1;
-      NewInstance = NewInstance_1 = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Object, Object])
-      ], NewInstance);
-      return NewInstance;
-  }());
-  function getDecoratorDependencies(target) {
-      autoinject(target);
-      return target.inject;
-  }
-  function lazy(keyValue) {
-      return function (target, _key, index) {
-          var inject$$1 = getDecoratorDependencies(target);
-          inject$$1[index] = Lazy.of(keyValue);
-      };
-  }
-  function all(keyValue) {
-      return function (target, _key, index) {
-          var inject$$1 = getDecoratorDependencies(target);
-          inject$$1[index] = All.of(keyValue);
-      };
-  }
-  function optional(checkParentOrTarget) {
-      if (checkParentOrTarget === void 0) { checkParentOrTarget = true; }
-      var deco = function (checkParent) {
-          return function (target, _key, index) {
-              var inject$$1 = getDecoratorDependencies(target);
-              inject$$1[index] = Optional.of(inject$$1[index], checkParent);
-          };
-      };
-      if (typeof checkParentOrTarget === 'boolean') {
-          return deco(checkParentOrTarget);
-      }
-      return deco(true);
-  }
-  function parent(target, _key, index) {
-      var inject$$1 = getDecoratorDependencies(target);
-      inject$$1[index] = Parent.of(inject$$1[index]);
-  }
-  function factory(keyValue) {
-      return function (target, _key, index) {
-          var inject$$1 = getDecoratorDependencies(target);
-          inject$$1[index] = Factory.of(keyValue);
-      };
-  }
-  function newInstance(asKeyOrTarget) {
-      var dynamicDependencies = [];
-      for (var _i = 1; _i < arguments.length; _i++) {
-          dynamicDependencies[_i - 1] = arguments[_i];
-      }
-      var deco = function (asKey) {
-          return function (target, _key, index) {
-              var inject$$1 = getDecoratorDependencies(target);
-              inject$$1[index] = NewInstance.of.apply(NewInstance, [inject$$1[index]].concat(dynamicDependencies));
-              if (!!asKey) {
-                  inject$$1[index].as(asKey);
-              }
-          };
-      };
-      if (arguments.length >= 1) {
-          return deco(asKeyOrTarget);
-      }
-      return deco();
-  }
-
-  function validateKey(key) {
-      if (key === null || key === undefined) {
-          throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-      }
-  }
-  var _emptyParameters = Object.freeze([]);
-  aureliaMetadata.metadata.registration = 'aurelia:registration';
-  aureliaMetadata.metadata.invoker = 'aurelia:invoker';
-  var resolverDecorates = resolver.decorates;
-  var InvocationHandler = (function () {
-      function InvocationHandler(fn, invoker, dependencies) {
-          this.fn = fn;
-          this.invoker = invoker;
-          this.dependencies = dependencies;
-      }
-      InvocationHandler.prototype.invoke = function (container, dynamicDependencies) {
-          return dynamicDependencies !== undefined
-              ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
-              : this.invoker.invoke(container, this.fn, this.dependencies);
-      };
-      return InvocationHandler;
-  }());
-  function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
-      var i = staticDependencies.length;
-      var args = new Array(i);
-      var lookup;
-      while (i--) {
-          lookup = staticDependencies[i];
-          if (lookup === null || lookup === undefined) {
-              throw new Error('Constructor Parameter with index ' +
-                  i +
-                  ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-          }
-          else {
-              args[i] = container.get(lookup);
-          }
-      }
-      if (dynamicDependencies !== undefined) {
-          args = args.concat(dynamicDependencies);
-      }
-      return Reflect.construct(fn, args);
-  }
-  var classInvoker = {
-      invoke: function (container, Type, deps) {
-          var instances = deps.map(function (dep) { return container.get(dep); });
-          return Reflect.construct(Type, instances);
-      },
-      invokeWithDynamicDependencies: invokeWithDynamicDependencies
-  };
-  function getDependencies(f) {
-      if (!f.hasOwnProperty('inject')) {
-          return [];
-      }
-      if (typeof f.inject === 'function') {
-          return f.inject();
-      }
-      return f.inject;
-  }
-  var Container = (function () {
-      function Container(configuration) {
-          if (configuration === undefined) {
-              configuration = {};
-          }
-          this._configuration = configuration;
-          this._onHandlerCreated = configuration.onHandlerCreated;
-          this._handlers =
-              configuration.handlers || (configuration.handlers = new Map());
-          this._resolvers = new Map();
-          this.root = this;
-          this.parent = null;
-      }
-      Container.prototype.makeGlobal = function () {
-          Container.instance = this;
-          return this;
-      };
-      Container.prototype.setHandlerCreatedCallback = function (onHandlerCreated) {
-          this._onHandlerCreated = onHandlerCreated;
-          this._configuration.onHandlerCreated = onHandlerCreated;
-      };
-      Container.prototype.registerInstance = function (key, instance) {
-          return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
-      };
-      Container.prototype.registerSingleton = function (key, fn) {
-          return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
-      };
-      Container.prototype.registerTransient = function (key, fn) {
-          return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
-      };
-      Container.prototype.registerHandler = function (key, handler) {
-          return this.registerResolver(key, new StrategyResolver(3, handler));
-      };
-      Container.prototype.registerAlias = function (originalKey, aliasKey) {
-          return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
-      };
-      Container.prototype.registerResolver = function (key, resolver$$1) {
-          validateKey(key);
-          var allResolvers = this._resolvers;
-          var result = allResolvers.get(key);
-          if (result === undefined) {
-              allResolvers.set(key, resolver$$1);
-          }
-          else if (result.strategy === 4) {
-              result.state.push(resolver$$1);
-          }
-          else {
-              allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
-          }
-          return resolver$$1;
-      };
-      Container.prototype.autoRegister = function (key, fn) {
-          fn = fn === undefined ? key : fn;
-          if (typeof fn === 'function') {
-              var registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, fn);
-              if (registration === undefined) {
-                  return this.registerResolver(key, new StrategyResolver(1, fn));
-              }
-              return registration.registerResolver(this, key, fn);
-          }
-          return this.registerResolver(key, new StrategyResolver(0, fn));
-      };
-      Container.prototype.autoRegisterAll = function (fns) {
-          var i = fns.length;
-          while (i--) {
-              this.autoRegister(fns[i]);
-          }
-      };
-      Container.prototype.unregister = function (key) {
-          this._resolvers.delete(key);
-      };
-      Container.prototype.hasResolver = function (key, checkParent) {
-          if (checkParent === void 0) { checkParent = false; }
-          validateKey(key);
-          return (this._resolvers.has(key) ||
-              (checkParent &&
-                  this.parent !== null &&
-                  this.parent.hasResolver(key, checkParent)));
-      };
-      Container.prototype.getResolver = function (key) {
-          return this._resolvers.get(key);
-      };
-      Container.prototype.get = function (key) {
-          validateKey(key);
-          if (key === Container) {
-              return this;
-          }
-          if (resolverDecorates(key)) {
-              return key.get(this, key);
-          }
-          var resolver$$1 = this._resolvers.get(key);
-          if (resolver$$1 === undefined) {
-              if (this.parent === null) {
-                  return this.autoRegister(key).get(this, key);
-              }
-              var registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, key);
-              if (registration === undefined) {
-                  return this.parent._get(key);
-              }
-              return registration.registerResolver(this, key, key).get(this, key);
-          }
-          return resolver$$1.get(this, key);
-      };
-      Container.prototype._get = function (key) {
-          var resolver$$1 = this._resolvers.get(key);
-          if (resolver$$1 === undefined) {
-              if (this.parent === null) {
-                  return this.autoRegister(key).get(this, key);
-              }
-              return this.parent._get(key);
-          }
-          return resolver$$1.get(this, key);
-      };
-      Container.prototype.getAll = function (key) {
-          validateKey(key);
-          var resolver$$1 = this._resolvers.get(key);
-          if (resolver$$1 === undefined) {
-              if (this.parent === null) {
-                  return _emptyParameters;
-              }
-              return this.parent.getAll(key);
-          }
-          if (resolver$$1.strategy === 4) {
-              var state = resolver$$1.state;
-              var i = state.length;
-              var results = new Array(i);
-              while (i--) {
-                  results[i] = state[i].get(this, key);
-              }
-              return results;
-          }
-          return [resolver$$1.get(this, key)];
-      };
-      Container.prototype.createChild = function () {
-          var child = new Container(this._configuration);
-          child.root = this.root;
-          child.parent = this;
-          return child;
-      };
-      Container.prototype.invoke = function (fn, dynamicDependencies) {
-          try {
-              var handler = this._handlers.get(fn);
-              if (handler === undefined) {
-                  handler = this._createInvocationHandler(fn);
-                  this._handlers.set(fn, handler);
-              }
-              return handler.invoke(this, dynamicDependencies);
-          }
-          catch (e) {
-              throw new aureliaPal.AggregateError("Error invoking " + fn.name + ". Check the inner error for details.", e, true);
-          }
-      };
-      Container.prototype._createInvocationHandler = function (fn) {
-          var dependencies;
-          if (fn.inject === undefined) {
-              dependencies =
-                  aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, fn) || _emptyParameters;
-          }
-          else {
-              dependencies = [];
-              var ctor = fn;
-              while (typeof ctor === 'function') {
-                  dependencies.push.apply(dependencies, getDependencies(ctor));
-                  ctor = Object.getPrototypeOf(ctor);
-              }
-          }
-          var invoker = aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.invoker, fn) || classInvoker;
-          var handler = new InvocationHandler(fn, invoker, dependencies);
-          return this._onHandlerCreated !== undefined
-              ? this._onHandlerCreated(handler)
-              : handler;
-      };
-      return Container;
+  function validateKey(key) {
+      if (key === null || key === undefined) {
+          throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+      }
+  }
+  var _emptyParameters = Object.freeze([]);
+  aureliaMetadata.metadata.registration = 'aurelia:registration';
+  aureliaMetadata.metadata.invoker = 'aurelia:invoker';
+  var resolverDecorates = resolver.decorates;
+  var InvocationHandler = (function () {
+      function InvocationHandler(fn, invoker, dependencies) {
+          this.fn = fn;
+          this.invoker = invoker;
+          this.dependencies = dependencies;
+      }
+      InvocationHandler.prototype.invoke = function (container, dynamicDependencies) {
+          return dynamicDependencies !== undefined
+              ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
+              : this.invoker.invoke(container, this.fn, this.dependencies);
+      };
+      return InvocationHandler;
+  }());
+  function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
+      var i = staticDependencies.length;
+      var args = new Array(i);
+      var lookup;
+      while (i--) {
+          lookup = staticDependencies[i];
+          if (lookup === null || lookup === undefined) {
+              throw new Error('Constructor Parameter with index ' +
+                  i +
+                  ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+          }
+          else {
+              args[i] = container.get(lookup);
+          }
+      }
+      if (dynamicDependencies !== undefined) {
+          args = args.concat(dynamicDependencies);
+      }
+      return Reflect.construct(fn, args);
+  }
+  var classInvoker = {
+      invoke: function (container, Type, deps) {
+          var instances = deps.map(function (dep) { return container.get(dep); });
+          return Reflect.construct(Type, instances);
+      },
+      invokeWithDynamicDependencies: invokeWithDynamicDependencies
+  };
+  function getDependencies(f) {
+      if (!f.hasOwnProperty('inject')) {
+          return [];
+      }
+      if (typeof f.inject === 'function') {
+          return f.inject();
+      }
+      return f.inject;
+  }
+  var Container = (function () {
+      function Container(configuration) {
+          if (configuration === undefined) {
+              configuration = {};
+          }
+          this._configuration = configuration;
+          this._onHandlerCreated = configuration.onHandlerCreated;
+          this._handlers =
+              configuration.handlers || (configuration.handlers = new Map());
+          this._resolvers = new Map();
+          this.root = this;
+          this.parent = null;
+      }
+      Container.prototype.makeGlobal = function () {
+          Container.instance = this;
+          return this;
+      };
+      Container.prototype.setHandlerCreatedCallback = function (onHandlerCreated) {
+          this._onHandlerCreated = onHandlerCreated;
+          this._configuration.onHandlerCreated = onHandlerCreated;
+      };
+      Container.prototype.registerInstance = function (key, instance) {
+          return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
+      };
+      Container.prototype.registerSingleton = function (key, fn) {
+          return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
+      };
+      Container.prototype.registerTransient = function (key, fn) {
+          return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
+      };
+      Container.prototype.registerHandler = function (key, handler) {
+          return this.registerResolver(key, new StrategyResolver(3, handler));
+      };
+      Container.prototype.registerAlias = function (originalKey, aliasKey) {
+          return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
+      };
+      Container.prototype.registerResolver = function (key, resolver$$1) {
+          validateKey(key);
+          var allResolvers = this._resolvers;
+          var result = allResolvers.get(key);
+          if (result === undefined) {
+              allResolvers.set(key, resolver$$1);
+          }
+          else if (result.strategy === 4) {
+              result.state.push(resolver$$1);
+          }
+          else {
+              allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
+          }
+          return resolver$$1;
+      };
+      Container.prototype.autoRegister = function (key, fn) {
+          fn = fn === undefined ? key : fn;
+          if (typeof fn === 'function') {
+              var registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, fn);
+              if (registration === undefined) {
+                  return this.registerResolver(key, new StrategyResolver(1, fn));
+              }
+              return registration.registerResolver(this, key, fn);
+          }
+          return this.registerResolver(key, new StrategyResolver(0, fn));
+      };
+      Container.prototype.autoRegisterAll = function (fns) {
+          var i = fns.length;
+          while (i--) {
+              this.autoRegister(fns[i]);
+          }
+      };
+      Container.prototype.unregister = function (key) {
+          this._resolvers.delete(key);
+      };
+      Container.prototype.hasResolver = function (key, checkParent) {
+          if (checkParent === void 0) { checkParent = false; }
+          validateKey(key);
+          return (this._resolvers.has(key) ||
+              (checkParent &&
+                  this.parent !== null &&
+                  this.parent.hasResolver(key, checkParent)));
+      };
+      Container.prototype.getResolver = function (key) {
+          return this._resolvers.get(key);
+      };
+      Container.prototype.get = function (key) {
+          validateKey(key);
+          if (key === Container) {
+              return this;
+          }
+          if (resolverDecorates(key)) {
+              return key.get(this, key);
+          }
+          var resolver$$1 = this._resolvers.get(key);
+          if (resolver$$1 === undefined) {
+              if (this.parent === null) {
+                  return this.autoRegister(key).get(this, key);
+              }
+              var registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, key);
+              if (registration === undefined) {
+                  return this.parent._get(key);
+              }
+              return registration.registerResolver(this, key, key).get(this, key);
+          }
+          return resolver$$1.get(this, key);
+      };
+      Container.prototype._get = function (key) {
+          var resolver$$1 = this._resolvers.get(key);
+          if (resolver$$1 === undefined) {
+              if (this.parent === null) {
+                  return this.autoRegister(key).get(this, key);
+              }
+              return this.parent._get(key);
+          }
+          return resolver$$1.get(this, key);
+      };
+      Container.prototype.getAll = function (key) {
+          validateKey(key);
+          var resolver$$1 = this._resolvers.get(key);
+          if (resolver$$1 === undefined) {
+              if (this.parent === null) {
+                  return _emptyParameters;
+              }
+              return this.parent.getAll(key);
+          }
+          if (resolver$$1.strategy === 4) {
+              var state = resolver$$1.state;
+              var i = state.length;
+              var results = new Array(i);
+              while (i--) {
+                  results[i] = state[i].get(this, key);
+              }
+              return results;
+          }
+          return [resolver$$1.get(this, key)];
+      };
+      Container.prototype.createChild = function () {
+          var child = new Container(this._configuration);
+          child.root = this.root;
+          child.parent = this;
+          return child;
+      };
+      Container.prototype.invoke = function (fn, dynamicDependencies) {
+          try {
+              var handler = this._handlers.get(fn);
+              if (handler === undefined) {
+                  handler = this._createInvocationHandler(fn);
+                  this._handlers.set(fn, handler);
+              }
+              return handler.invoke(this, dynamicDependencies);
+          }
+          catch (e) {
+              throw new aureliaPal.AggregateError("Error invoking " + fn.name + ". Check the inner error for details.", e, true);
+          }
+      };
+      Container.prototype._createInvocationHandler = function (fn) {
+          var dependencies;
+          if (fn.inject === undefined) {
+              dependencies =
+                  aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, fn) || _emptyParameters;
+          }
+          else {
+              dependencies = [];
+              var ctor = fn;
+              while (typeof ctor === 'function') {
+                  dependencies.push.apply(dependencies, getDependencies(ctor));
+                  ctor = Object.getPrototypeOf(ctor);
+              }
+          }
+          var invoker = aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.invoker, fn) || classInvoker;
+          var handler = new InvocationHandler(fn, invoker, dependencies);
+          return this._onHandlerCreated !== undefined
+              ? this._onHandlerCreated(handler)
+              : handler;
+      };
+      return Container;
   }());
 
-  function invoker(value) {
-      return function (target) {
-          aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, value, target);
-      };
-  }
-  function invokeAsFactory(potentialTarget) {
-      var deco = function (target) {
-          aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, FactoryInvoker.instance, target);
-      };
-      return potentialTarget ? deco(potentialTarget) : deco;
-  }
-  var FactoryInvoker = (function () {
-      function FactoryInvoker() {
-      }
-      FactoryInvoker.prototype.invoke = function (container, fn, dependencies) {
-          var i = dependencies.length;
-          var args = new Array(i);
-          while (i--) {
-              args[i] = container.get(dependencies[i]);
-          }
-          return fn.apply(undefined, args);
-      };
-      FactoryInvoker.prototype.invokeWithDynamicDependencies = function (container, fn, staticDependencies, dynamicDependencies) {
-          var i = staticDependencies.length;
-          var args = new Array(i);
-          while (i--) {
-              args[i] = container.get(staticDependencies[i]);
-          }
-          if (dynamicDependencies !== undefined) {
-              args = args.concat(dynamicDependencies);
-          }
-          return fn.apply(undefined, args);
-      };
-      return FactoryInvoker;
-  }());
+  function invoker(value) {
+      return function (target) {
+          aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, value, target);
+      };
+  }
+  function invokeAsFactory(potentialTarget) {
+      var deco = function (target) {
+          aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, FactoryInvoker.instance, target);
+      };
+      return potentialTarget ? deco(potentialTarget) : deco;
+  }
+  var FactoryInvoker = (function () {
+      function FactoryInvoker() {
+      }
+      FactoryInvoker.prototype.invoke = function (container, fn, dependencies) {
+          var i = dependencies.length;
+          var args = new Array(i);
+          while (i--) {
+              args[i] = container.get(dependencies[i]);
+          }
+          return fn.apply(undefined, args);
+      };
+      FactoryInvoker.prototype.invokeWithDynamicDependencies = function (container, fn, staticDependencies, dynamicDependencies) {
+          var i = staticDependencies.length;
+          var args = new Array(i);
+          while (i--) {
+              args[i] = container.get(staticDependencies[i]);
+          }
+          if (dynamicDependencies !== undefined) {
+              args = args.concat(dynamicDependencies);
+          }
+          return fn.apply(undefined, args);
+      };
+      return FactoryInvoker;
+  }());
   FactoryInvoker.instance = new FactoryInvoker();
 
-  function registration(value) {
-      return function (target) {
-          aureliaMetadata.metadata.define(aureliaMetadata.metadata.registration, value, target);
-      };
-  }
-  function transient(key) {
-      return registration(new TransientRegistration(key));
-  }
-  function singleton(keyOrRegisterInChild, registerInChild) {
-      if (registerInChild === void 0) { registerInChild = false; }
-      return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
-  }
-  var TransientRegistration = (function () {
-      function TransientRegistration(key) {
-          this._key = key;
-      }
-      TransientRegistration.prototype.registerResolver = function (container, key, fn) {
-          var existingResolver = container.getResolver(this._key || key);
-          return existingResolver === undefined
-              ? container.registerTransient((this._key || key), fn)
-              : existingResolver;
-      };
-      return TransientRegistration;
-  }());
-  var SingletonRegistration = (function () {
-      function SingletonRegistration(keyOrRegisterInChild, registerInChild) {
-          if (registerInChild === void 0) { registerInChild = false; }
-          if (typeof keyOrRegisterInChild === 'boolean') {
-              this._registerInChild = keyOrRegisterInChild;
-          }
-          else {
-              this._key = keyOrRegisterInChild;
-              this._registerInChild = registerInChild;
-          }
-      }
-      SingletonRegistration.prototype.registerResolver = function (container, key, fn) {
-          var targetContainer = this._registerInChild ? container : container.root;
-          var existingResolver = targetContainer.getResolver(this._key || key);
-          return existingResolver === undefined
-              ? targetContainer.registerSingleton(this._key || key, fn)
-              : existingResolver;
-      };
-      return SingletonRegistration;
+  function registration(value) {
+      return function (target) {
+          aureliaMetadata.metadata.define(aureliaMetadata.metadata.registration, value, target);
+      };
+  }
+  function transient(key) {
+      return registration(new TransientRegistration(key));
+  }
+  function singleton(keyOrRegisterInChild, registerInChild) {
+      if (registerInChild === void 0) { registerInChild = false; }
+      return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
+  }
+  var TransientRegistration = (function () {
+      function TransientRegistration(key) {
+          this._key = key;
+      }
+      TransientRegistration.prototype.registerResolver = function (container, key, fn) {
+          var existingResolver = container.getResolver(this._key || key);
+          return existingResolver === undefined
+              ? container.registerTransient((this._key || key), fn)
+              : existingResolver;
+      };
+      return TransientRegistration;
+  }());
+  var SingletonRegistration = (function () {
+      function SingletonRegistration(keyOrRegisterInChild, registerInChild) {
+          if (registerInChild === void 0) { registerInChild = false; }
+          if (typeof keyOrRegisterInChild === 'boolean') {
+              this._registerInChild = keyOrRegisterInChild;
+          }
+          else {
+              this._key = keyOrRegisterInChild;
+              this._registerInChild = registerInChild;
+          }
+      }
+      SingletonRegistration.prototype.registerResolver = function (container, key, fn) {
+          var targetContainer = this._registerInChild ? container : container.root;
+          var existingResolver = targetContainer.getResolver(this._key || key);
+          return existingResolver === undefined
+              ? targetContainer.registerSingleton(this._key || key, fn)
+              : existingResolver;
+      };
+      return SingletonRegistration;
   }());
 
   exports._emptyParameters = _emptyParameters;
diff --git a/dist/commonjs/aurelia-dependency-injection.js b/dist/commonjs/aurelia-dependency-injection.js
index 661123e..ab14f82 100644
--- a/dist/commonjs/aurelia-dependency-injection.js
+++ b/dist/commonjs/aurelia-dependency-injection.js
@@ -5,639 +5,639 @@ Object.defineProperty(exports, '__esModule', { value: true });
 var aureliaMetadata = require('aurelia-metadata');
 var aureliaPal = require('aurelia-pal');
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation. All rights reserved.
-Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-this file except in compliance with the License. You may obtain a copy of the
-License at http://www.apache.org/licenses/LICENSE-2.0
-
-THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-MERCHANTABLITY OR NON-INFRINGEMENT.
-
-See the Apache Version 2.0 License for specific language governing permissions
-and limitations under the License.
-***************************************************************************** */
-
-function __decorate(decorators, target, key, desc) {
-    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-    return c > 3 && r && Object.defineProperty(target, key, r), r;
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at http://www.apache.org/licenses/LICENSE-2.0
+
+THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+
+function __decorate(decorators, target, key, desc) {
+    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+    return c > 3 && r && Object.defineProperty(target, key, r), r;
+}
+
+function __metadata(metadataKey, metadataValue) {
+    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
 }
 
-function __metadata(metadataKey, metadataValue) {
-    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+function autoinject(potentialTarget) {
+    var deco = function (target) {
+        if (!target.hasOwnProperty('inject')) {
+            target.inject = (aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, target) ||
+                _emptyParameters).slice();
+            if (target.inject && target.inject.length > 0) {
+                if (target.inject[target.inject.length - 1] === Object) {
+                    target.inject.splice(-1, 1);
+                }
+            }
+        }
+    };
+    return potentialTarget ? deco(potentialTarget) : deco;
+}
+function inject() {
+    var rest = [];
+    for (var _i = 0; _i < arguments.length; _i++) {
+        rest[_i] = arguments[_i];
+    }
+    return function (target, _key, descriptor) {
+        if (typeof descriptor === 'number') {
+            autoinject(target);
+            if (rest.length === 1) {
+                target.inject[descriptor] = rest[0];
+            }
+            return;
+        }
+        if (descriptor) {
+            var fn = descriptor.value;
+            fn.inject = rest;
+        }
+        else {
+            target.inject = rest;
+        }
+    };
 }
 
-function autoinject(potentialTarget) {
-    var deco = function (target) {
-        if (!target.hasOwnProperty('inject')) {
-            target.inject = (aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, target) ||
-                _emptyParameters).slice();
-            if (target.inject && target.inject.length > 0) {
-                if (target.inject[target.inject.length - 1] === Object) {
-                    target.inject.splice(-1, 1);
-                }
-            }
-        }
-    };
-    return potentialTarget ? deco(potentialTarget) : deco;
-}
-function inject() {
-    var rest = [];
-    for (var _i = 0; _i < arguments.length; _i++) {
-        rest[_i] = arguments[_i];
-    }
-    return function (target, _key, descriptor) {
-        if (typeof descriptor === 'number') {
-            autoinject(target);
-            if (rest.length === 1) {
-                target.inject[descriptor] = rest[0];
-            }
-            return;
-        }
-        if (descriptor) {
-            var fn = descriptor.value;
-            fn.inject = rest;
-        }
-        else {
-            target.inject = rest;
-        }
-    };
+var resolver = aureliaMetadata.protocol.create('aurelia:resolver', function (target) {
+    if (!(typeof target.get === 'function')) {
+        return 'Resolvers must implement: get(container: Container, key: any): any';
+    }
+    return true;
+});
+function isStrategy(actual, expected, state) {
+    return actual === expected;
+}
+var StrategyResolver = (function () {
+    function StrategyResolver(strategy, state) {
+        this.strategy = strategy;
+        this.state = state;
+    }
+    StrategyResolver.prototype.get = function (container, key) {
+        if (isStrategy(this.strategy, 0, this.state)) {
+            return this.state;
+        }
+        if (isStrategy(this.strategy, 1, this.state)) {
+            var singleton = container.invoke(this.state);
+            this.state = singleton;
+            this.strategy = 0;
+            return singleton;
+        }
+        if (isStrategy(this.strategy, 2, this.state)) {
+            return container.invoke(this.state);
+        }
+        if (isStrategy(this.strategy, 3, this.state)) {
+            return this.state(container, key, this);
+        }
+        if (isStrategy(this.strategy, 4, this.state)) {
+            return this.state[0].get(container, key);
+        }
+        if (isStrategy(this.strategy, 5, this.state)) {
+            return container.get(this.state);
+        }
+        throw new Error('Invalid strategy: ' + this.strategy);
+    };
+    StrategyResolver = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Number, Object])
+    ], StrategyResolver);
+    return StrategyResolver;
+}());
+var Lazy = (function () {
+    function Lazy(key) {
+        this._key = key;
+    }
+    Lazy_1 = Lazy;
+    Lazy.prototype.get = function (container) {
+        var _this = this;
+        return function () { return container.get(_this._key); };
+    };
+    Lazy.of = function (key) {
+        return new Lazy_1(key);
+    };
+    var Lazy_1;
+    Lazy = Lazy_1 = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Object])
+    ], Lazy);
+    return Lazy;
+}());
+var All = (function () {
+    function All(key) {
+        this._key = key;
+    }
+    All_1 = All;
+    All.prototype.get = function (container) {
+        return container.getAll(this._key);
+    };
+    All.of = function (key) {
+        return new All_1(key);
+    };
+    var All_1;
+    All = All_1 = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Object])
+    ], All);
+    return All;
+}());
+var Optional = (function () {
+    function Optional(key, checkParent) {
+        if (checkParent === void 0) { checkParent = true; }
+        this._key = key;
+        this._checkParent = checkParent;
+    }
+    Optional_1 = Optional;
+    Optional.prototype.get = function (container) {
+        if (container.hasResolver(this._key, this._checkParent)) {
+            return container.get(this._key);
+        }
+        return null;
+    };
+    Optional.of = function (key, checkParent) {
+        if (checkParent === void 0) { checkParent = true; }
+        return new Optional_1(key, checkParent);
+    };
+    var Optional_1;
+    Optional = Optional_1 = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Object, Boolean])
+    ], Optional);
+    return Optional;
+}());
+var Parent = (function () {
+    function Parent(key) {
+        this._key = key;
+    }
+    Parent_1 = Parent;
+    Parent.prototype.get = function (container) {
+        return container.parent ? container.parent.get(this._key) : null;
+    };
+    Parent.of = function (key) {
+        return new Parent_1(key);
+    };
+    var Parent_1;
+    Parent = Parent_1 = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Object])
+    ], Parent);
+    return Parent;
+}());
+var Factory = (function () {
+    function Factory(key) {
+        this._key = key;
+    }
+    Factory_1 = Factory;
+    Factory.prototype.get = function (container) {
+        var fn = this._key;
+        var resolver = container.getResolver(fn);
+        if (resolver && resolver.strategy === 3) {
+            fn = resolver.state;
+        }
+        return function () {
+            var rest = [];
+            for (var _i = 0; _i < arguments.length; _i++) {
+                rest[_i] = arguments[_i];
+            }
+            return container.invoke(fn, rest);
+        };
+    };
+    Factory.of = function (key) {
+        return new Factory_1(key);
+    };
+    var Factory_1;
+    Factory = Factory_1 = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Object])
+    ], Factory);
+    return Factory;
+}());
+var NewInstance = (function () {
+    function NewInstance(key) {
+        var dynamicDependencies = [];
+        for (var _i = 1; _i < arguments.length; _i++) {
+            dynamicDependencies[_i - 1] = arguments[_i];
+        }
+        this.key = key;
+        this.asKey = key;
+        this.dynamicDependencies = dynamicDependencies;
+    }
+    NewInstance_1 = NewInstance;
+    NewInstance.prototype.get = function (container) {
+        var dynamicDependencies = this.dynamicDependencies.length > 0
+            ? this.dynamicDependencies.map(function (dependency) {
+                return dependency['protocol:aurelia:resolver']
+                    ? dependency.get(container)
+                    : container.get(dependency);
+            })
+            : undefined;
+        var fn = this.key;
+        var resolver = container.getResolver(fn);
+        if (resolver && resolver.strategy === 3) {
+            fn = resolver.state;
+        }
+        var instance = container.invoke(fn, dynamicDependencies);
+        container.registerInstance(this.asKey, instance);
+        return instance;
+    };
+    NewInstance.prototype.as = function (key) {
+        this.asKey = key;
+        return this;
+    };
+    NewInstance.of = function (key) {
+        var dynamicDependencies = [];
+        for (var _i = 1; _i < arguments.length; _i++) {
+            dynamicDependencies[_i - 1] = arguments[_i];
+        }
+        return new (NewInstance_1.bind.apply(NewInstance_1, [void 0, key].concat(dynamicDependencies)))();
+    };
+    var NewInstance_1;
+    NewInstance = NewInstance_1 = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Object, Object])
+    ], NewInstance);
+    return NewInstance;
+}());
+function getDecoratorDependencies(target) {
+    autoinject(target);
+    return target.inject;
+}
+function lazy(keyValue) {
+    return function (target, _key, index) {
+        var inject$$1 = getDecoratorDependencies(target);
+        inject$$1[index] = Lazy.of(keyValue);
+    };
+}
+function all(keyValue) {
+    return function (target, _key, index) {
+        var inject$$1 = getDecoratorDependencies(target);
+        inject$$1[index] = All.of(keyValue);
+    };
+}
+function optional(checkParentOrTarget) {
+    if (checkParentOrTarget === void 0) { checkParentOrTarget = true; }
+    var deco = function (checkParent) {
+        return function (target, _key, index) {
+            var inject$$1 = getDecoratorDependencies(target);
+            inject$$1[index] = Optional.of(inject$$1[index], checkParent);
+        };
+    };
+    if (typeof checkParentOrTarget === 'boolean') {
+        return deco(checkParentOrTarget);
+    }
+    return deco(true);
+}
+function parent(target, _key, index) {
+    var inject$$1 = getDecoratorDependencies(target);
+    inject$$1[index] = Parent.of(inject$$1[index]);
+}
+function factory(keyValue) {
+    return function (target, _key, index) {
+        var inject$$1 = getDecoratorDependencies(target);
+        inject$$1[index] = Factory.of(keyValue);
+    };
+}
+function newInstance(asKeyOrTarget) {
+    var dynamicDependencies = [];
+    for (var _i = 1; _i < arguments.length; _i++) {
+        dynamicDependencies[_i - 1] = arguments[_i];
+    }
+    var deco = function (asKey) {
+        return function (target, _key, index) {
+            var inject$$1 = getDecoratorDependencies(target);
+            inject$$1[index] = NewInstance.of.apply(NewInstance, [inject$$1[index]].concat(dynamicDependencies));
+            if (!!asKey) {
+                inject$$1[index].as(asKey);
+            }
+        };
+    };
+    if (arguments.length >= 1) {
+        return deco(asKeyOrTarget);
+    }
+    return deco();
 }
 
-var resolver = aureliaMetadata.protocol.create('aurelia:resolver', function (target) {
-    if (!(typeof target.get === 'function')) {
-        return 'Resolvers must implement: get(container: Container, key: any): any';
-    }
-    return true;
-});
-function isStrategy(actual, expected, state) {
-    return actual === expected;
-}
-var StrategyResolver = (function () {
-    function StrategyResolver(strategy, state) {
-        this.strategy = strategy;
-        this.state = state;
-    }
-    StrategyResolver.prototype.get = function (container, key) {
-        if (isStrategy(this.strategy, 0, this.state)) {
-            return this.state;
-        }
-        if (isStrategy(this.strategy, 1, this.state)) {
-            var singleton = container.invoke(this.state);
-            this.state = singleton;
-            this.strategy = 0;
-            return singleton;
-        }
-        if (isStrategy(this.strategy, 2, this.state)) {
-            return container.invoke(this.state);
-        }
-        if (isStrategy(this.strategy, 3, this.state)) {
-            return this.state(container, key, this);
-        }
-        if (isStrategy(this.strategy, 4, this.state)) {
-            return this.state[0].get(container, key);
-        }
-        if (isStrategy(this.strategy, 5, this.state)) {
-            return container.get(this.state);
-        }
-        throw new Error('Invalid strategy: ' + this.strategy);
-    };
-    StrategyResolver = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Number, Object])
-    ], StrategyResolver);
-    return StrategyResolver;
-}());
-var Lazy = (function () {
-    function Lazy(key) {
-        this._key = key;
-    }
-    Lazy_1 = Lazy;
-    Lazy.prototype.get = function (container) {
-        var _this = this;
-        return function () { return container.get(_this._key); };
-    };
-    Lazy.of = function (key) {
-        return new Lazy_1(key);
-    };
-    var Lazy_1;
-    Lazy = Lazy_1 = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Object])
-    ], Lazy);
-    return Lazy;
-}());
-var All = (function () {
-    function All(key) {
-        this._key = key;
-    }
-    All_1 = All;
-    All.prototype.get = function (container) {
-        return container.getAll(this._key);
-    };
-    All.of = function (key) {
-        return new All_1(key);
-    };
-    var All_1;
-    All = All_1 = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Object])
-    ], All);
-    return All;
-}());
-var Optional = (function () {
-    function Optional(key, checkParent) {
-        if (checkParent === void 0) { checkParent = true; }
-        this._key = key;
-        this._checkParent = checkParent;
-    }
-    Optional_1 = Optional;
-    Optional.prototype.get = function (container) {
-        if (container.hasResolver(this._key, this._checkParent)) {
-            return container.get(this._key);
-        }
-        return null;
-    };
-    Optional.of = function (key, checkParent) {
-        if (checkParent === void 0) { checkParent = true; }
-        return new Optional_1(key, checkParent);
-    };
-    var Optional_1;
-    Optional = Optional_1 = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Object, Boolean])
-    ], Optional);
-    return Optional;
-}());
-var Parent = (function () {
-    function Parent(key) {
-        this._key = key;
-    }
-    Parent_1 = Parent;
-    Parent.prototype.get = function (container) {
-        return container.parent ? container.parent.get(this._key) : null;
-    };
-    Parent.of = function (key) {
-        return new Parent_1(key);
-    };
-    var Parent_1;
-    Parent = Parent_1 = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Object])
-    ], Parent);
-    return Parent;
-}());
-var Factory = (function () {
-    function Factory(key) {
-        this._key = key;
-    }
-    Factory_1 = Factory;
-    Factory.prototype.get = function (container) {
-        var fn = this._key;
-        var resolver = container.getResolver(fn);
-        if (resolver && resolver.strategy === 3) {
-            fn = resolver.state;
-        }
-        return function () {
-            var rest = [];
-            for (var _i = 0; _i < arguments.length; _i++) {
-                rest[_i] = arguments[_i];
-            }
-            return container.invoke(fn, rest);
-        };
-    };
-    Factory.of = function (key) {
-        return new Factory_1(key);
-    };
-    var Factory_1;
-    Factory = Factory_1 = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Object])
-    ], Factory);
-    return Factory;
-}());
-var NewInstance = (function () {
-    function NewInstance(key) {
-        var dynamicDependencies = [];
-        for (var _i = 1; _i < arguments.length; _i++) {
-            dynamicDependencies[_i - 1] = arguments[_i];
-        }
-        this.key = key;
-        this.asKey = key;
-        this.dynamicDependencies = dynamicDependencies;
-    }
-    NewInstance_1 = NewInstance;
-    NewInstance.prototype.get = function (container) {
-        var dynamicDependencies = this.dynamicDependencies.length > 0
-            ? this.dynamicDependencies.map(function (dependency) {
-                return dependency['protocol:aurelia:resolver']
-                    ? dependency.get(container)
-                    : container.get(dependency);
-            })
-            : undefined;
-        var fn = this.key;
-        var resolver = container.getResolver(fn);
-        if (resolver && resolver.strategy === 3) {
-            fn = resolver.state;
-        }
-        var instance = container.invoke(fn, dynamicDependencies);
-        container.registerInstance(this.asKey, instance);
-        return instance;
-    };
-    NewInstance.prototype.as = function (key) {
-        this.asKey = key;
-        return this;
-    };
-    NewInstance.of = function (key) {
-        var dynamicDependencies = [];
-        for (var _i = 1; _i < arguments.length; _i++) {
-            dynamicDependencies[_i - 1] = arguments[_i];
-        }
-        return new (NewInstance_1.bind.apply(NewInstance_1, [void 0, key].concat(dynamicDependencies)))();
-    };
-    var NewInstance_1;
-    NewInstance = NewInstance_1 = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Object, Object])
-    ], NewInstance);
-    return NewInstance;
-}());
-function getDecoratorDependencies(target) {
-    autoinject(target);
-    return target.inject;
-}
-function lazy(keyValue) {
-    return function (target, _key, index) {
-        var inject$$1 = getDecoratorDependencies(target);
-        inject$$1[index] = Lazy.of(keyValue);
-    };
-}
-function all(keyValue) {
-    return function (target, _key, index) {
-        var inject$$1 = getDecoratorDependencies(target);
-        inject$$1[index] = All.of(keyValue);
-    };
-}
-function optional(checkParentOrTarget) {
-    if (checkParentOrTarget === void 0) { checkParentOrTarget = true; }
-    var deco = function (checkParent) {
-        return function (target, _key, index) {
-            var inject$$1 = getDecoratorDependencies(target);
-            inject$$1[index] = Optional.of(inject$$1[index], checkParent);
-        };
-    };
-    if (typeof checkParentOrTarget === 'boolean') {
-        return deco(checkParentOrTarget);
-    }
-    return deco(true);
-}
-function parent(target, _key, index) {
-    var inject$$1 = getDecoratorDependencies(target);
-    inject$$1[index] = Parent.of(inject$$1[index]);
-}
-function factory(keyValue) {
-    return function (target, _key, index) {
-        var inject$$1 = getDecoratorDependencies(target);
-        inject$$1[index] = Factory.of(keyValue);
-    };
-}
-function newInstance(asKeyOrTarget) {
-    var dynamicDependencies = [];
-    for (var _i = 1; _i < arguments.length; _i++) {
-        dynamicDependencies[_i - 1] = arguments[_i];
-    }
-    var deco = function (asKey) {
-        return function (target, _key, index) {
-            var inject$$1 = getDecoratorDependencies(target);
-            inject$$1[index] = NewInstance.of.apply(NewInstance, [inject$$1[index]].concat(dynamicDependencies));
-            if (!!asKey) {
-                inject$$1[index].as(asKey);
-            }
-        };
-    };
-    if (arguments.length >= 1) {
-        return deco(asKeyOrTarget);
-    }
-    return deco();
-}
-
-function validateKey(key) {
-    if (key === null || key === undefined) {
-        throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-    }
-}
-var _emptyParameters = Object.freeze([]);
-aureliaMetadata.metadata.registration = 'aurelia:registration';
-aureliaMetadata.metadata.invoker = 'aurelia:invoker';
-var resolverDecorates = resolver.decorates;
-var InvocationHandler = (function () {
-    function InvocationHandler(fn, invoker, dependencies) {
-        this.fn = fn;
-        this.invoker = invoker;
-        this.dependencies = dependencies;
-    }
-    InvocationHandler.prototype.invoke = function (container, dynamicDependencies) {
-        return dynamicDependencies !== undefined
-            ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
-            : this.invoker.invoke(container, this.fn, this.dependencies);
-    };
-    return InvocationHandler;
-}());
-function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
-    var i = staticDependencies.length;
-    var args = new Array(i);
-    var lookup;
-    while (i--) {
-        lookup = staticDependencies[i];
-        if (lookup === null || lookup === undefined) {
-            throw new Error('Constructor Parameter with index ' +
-                i +
-                ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-        }
-        else {
-            args[i] = container.get(lookup);
-        }
-    }
-    if (dynamicDependencies !== undefined) {
-        args = args.concat(dynamicDependencies);
-    }
-    return Reflect.construct(fn, args);
-}
-var classInvoker = {
-    invoke: function (container, Type, deps) {
-        var instances = deps.map(function (dep) { return container.get(dep); });
-        return Reflect.construct(Type, instances);
-    },
-    invokeWithDynamicDependencies: invokeWithDynamicDependencies
-};
-function getDependencies(f) {
-    if (!f.hasOwnProperty('inject')) {
-        return [];
-    }
-    if (typeof f.inject === 'function') {
-        return f.inject();
-    }
-    return f.inject;
-}
-var Container = (function () {
-    function Container(configuration) {
-        if (configuration === undefined) {
-            configuration = {};
-        }
-        this._configuration = configuration;
-        this._onHandlerCreated = configuration.onHandlerCreated;
-        this._handlers =
-            configuration.handlers || (configuration.handlers = new Map());
-        this._resolvers = new Map();
-        this.root = this;
-        this.parent = null;
-    }
-    Container.prototype.makeGlobal = function () {
-        Container.instance = this;
-        return this;
-    };
-    Container.prototype.setHandlerCreatedCallback = function (onHandlerCreated) {
-        this._onHandlerCreated = onHandlerCreated;
-        this._configuration.onHandlerCreated = onHandlerCreated;
-    };
-    Container.prototype.registerInstance = function (key, instance) {
-        return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
-    };
-    Container.prototype.registerSingleton = function (key, fn) {
-        return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
-    };
-    Container.prototype.registerTransient = function (key, fn) {
-        return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
-    };
-    Container.prototype.registerHandler = function (key, handler) {
-        return this.registerResolver(key, new StrategyResolver(3, handler));
-    };
-    Container.prototype.registerAlias = function (originalKey, aliasKey) {
-        return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
-    };
-    Container.prototype.registerResolver = function (key, resolver$$1) {
-        validateKey(key);
-        var allResolvers = this._resolvers;
-        var result = allResolvers.get(key);
-        if (result === undefined) {
-            allResolvers.set(key, resolver$$1);
-        }
-        else if (result.strategy === 4) {
-            result.state.push(resolver$$1);
-        }
-        else {
-            allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
-        }
-        return resolver$$1;
-    };
-    Container.prototype.autoRegister = function (key, fn) {
-        fn = fn === undefined ? key : fn;
-        if (typeof fn === 'function') {
-            var registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, fn);
-            if (registration === undefined) {
-                return this.registerResolver(key, new StrategyResolver(1, fn));
-            }
-            return registration.registerResolver(this, key, fn);
-        }
-        return this.registerResolver(key, new StrategyResolver(0, fn));
-    };
-    Container.prototype.autoRegisterAll = function (fns) {
-        var i = fns.length;
-        while (i--) {
-            this.autoRegister(fns[i]);
-        }
-    };
-    Container.prototype.unregister = function (key) {
-        this._resolvers.delete(key);
-    };
-    Container.prototype.hasResolver = function (key, checkParent) {
-        if (checkParent === void 0) { checkParent = false; }
-        validateKey(key);
-        return (this._resolvers.has(key) ||
-            (checkParent &&
-                this.parent !== null &&
-                this.parent.hasResolver(key, checkParent)));
-    };
-    Container.prototype.getResolver = function (key) {
-        return this._resolvers.get(key);
-    };
-    Container.prototype.get = function (key) {
-        validateKey(key);
-        if (key === Container) {
-            return this;
-        }
-        if (resolverDecorates(key)) {
-            return key.get(this, key);
-        }
-        var resolver$$1 = this._resolvers.get(key);
-        if (resolver$$1 === undefined) {
-            if (this.parent === null) {
-                return this.autoRegister(key).get(this, key);
-            }
-            var registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, key);
-            if (registration === undefined) {
-                return this.parent._get(key);
-            }
-            return registration.registerResolver(this, key, key).get(this, key);
-        }
-        return resolver$$1.get(this, key);
-    };
-    Container.prototype._get = function (key) {
-        var resolver$$1 = this._resolvers.get(key);
-        if (resolver$$1 === undefined) {
-            if (this.parent === null) {
-                return this.autoRegister(key).get(this, key);
-            }
-            return this.parent._get(key);
-        }
-        return resolver$$1.get(this, key);
-    };
-    Container.prototype.getAll = function (key) {
-        validateKey(key);
-        var resolver$$1 = this._resolvers.get(key);
-        if (resolver$$1 === undefined) {
-            if (this.parent === null) {
-                return _emptyParameters;
-            }
-            return this.parent.getAll(key);
-        }
-        if (resolver$$1.strategy === 4) {
-            var state = resolver$$1.state;
-            var i = state.length;
-            var results = new Array(i);
-            while (i--) {
-                results[i] = state[i].get(this, key);
-            }
-            return results;
-        }
-        return [resolver$$1.get(this, key)];
-    };
-    Container.prototype.createChild = function () {
-        var child = new Container(this._configuration);
-        child.root = this.root;
-        child.parent = this;
-        return child;
-    };
-    Container.prototype.invoke = function (fn, dynamicDependencies) {
-        try {
-            var handler = this._handlers.get(fn);
-            if (handler === undefined) {
-                handler = this._createInvocationHandler(fn);
-                this._handlers.set(fn, handler);
-            }
-            return handler.invoke(this, dynamicDependencies);
-        }
-        catch (e) {
-            throw new aureliaPal.AggregateError("Error invoking " + fn.name + ". Check the inner error for details.", e, true);
-        }
-    };
-    Container.prototype._createInvocationHandler = function (fn) {
-        var dependencies;
-        if (fn.inject === undefined) {
-            dependencies =
-                aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, fn) || _emptyParameters;
-        }
-        else {
-            dependencies = [];
-            var ctor = fn;
-            while (typeof ctor === 'function') {
-                dependencies.push.apply(dependencies, getDependencies(ctor));
-                ctor = Object.getPrototypeOf(ctor);
-            }
-        }
-        var invoker = aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.invoker, fn) || classInvoker;
-        var handler = new InvocationHandler(fn, invoker, dependencies);
-        return this._onHandlerCreated !== undefined
-            ? this._onHandlerCreated(handler)
-            : handler;
-    };
-    return Container;
+function validateKey(key) {
+    if (key === null || key === undefined) {
+        throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+    }
+}
+var _emptyParameters = Object.freeze([]);
+aureliaMetadata.metadata.registration = 'aurelia:registration';
+aureliaMetadata.metadata.invoker = 'aurelia:invoker';
+var resolverDecorates = resolver.decorates;
+var InvocationHandler = (function () {
+    function InvocationHandler(fn, invoker, dependencies) {
+        this.fn = fn;
+        this.invoker = invoker;
+        this.dependencies = dependencies;
+    }
+    InvocationHandler.prototype.invoke = function (container, dynamicDependencies) {
+        return dynamicDependencies !== undefined
+            ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
+            : this.invoker.invoke(container, this.fn, this.dependencies);
+    };
+    return InvocationHandler;
+}());
+function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
+    var i = staticDependencies.length;
+    var args = new Array(i);
+    var lookup;
+    while (i--) {
+        lookup = staticDependencies[i];
+        if (lookup === null || lookup === undefined) {
+            throw new Error('Constructor Parameter with index ' +
+                i +
+                ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+        }
+        else {
+            args[i] = container.get(lookup);
+        }
+    }
+    if (dynamicDependencies !== undefined) {
+        args = args.concat(dynamicDependencies);
+    }
+    return Reflect.construct(fn, args);
+}
+var classInvoker = {
+    invoke: function (container, Type, deps) {
+        var instances = deps.map(function (dep) { return container.get(dep); });
+        return Reflect.construct(Type, instances);
+    },
+    invokeWithDynamicDependencies: invokeWithDynamicDependencies
+};
+function getDependencies(f) {
+    if (!f.hasOwnProperty('inject')) {
+        return [];
+    }
+    if (typeof f.inject === 'function') {
+        return f.inject();
+    }
+    return f.inject;
+}
+var Container = (function () {
+    function Container(configuration) {
+        if (configuration === undefined) {
+            configuration = {};
+        }
+        this._configuration = configuration;
+        this._onHandlerCreated = configuration.onHandlerCreated;
+        this._handlers =
+            configuration.handlers || (configuration.handlers = new Map());
+        this._resolvers = new Map();
+        this.root = this;
+        this.parent = null;
+    }
+    Container.prototype.makeGlobal = function () {
+        Container.instance = this;
+        return this;
+    };
+    Container.prototype.setHandlerCreatedCallback = function (onHandlerCreated) {
+        this._onHandlerCreated = onHandlerCreated;
+        this._configuration.onHandlerCreated = onHandlerCreated;
+    };
+    Container.prototype.registerInstance = function (key, instance) {
+        return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
+    };
+    Container.prototype.registerSingleton = function (key, fn) {
+        return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
+    };
+    Container.prototype.registerTransient = function (key, fn) {
+        return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
+    };
+    Container.prototype.registerHandler = function (key, handler) {
+        return this.registerResolver(key, new StrategyResolver(3, handler));
+    };
+    Container.prototype.registerAlias = function (originalKey, aliasKey) {
+        return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
+    };
+    Container.prototype.registerResolver = function (key, resolver$$1) {
+        validateKey(key);
+        var allResolvers = this._resolvers;
+        var result = allResolvers.get(key);
+        if (result === undefined) {
+            allResolvers.set(key, resolver$$1);
+        }
+        else if (result.strategy === 4) {
+            result.state.push(resolver$$1);
+        }
+        else {
+            allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
+        }
+        return resolver$$1;
+    };
+    Container.prototype.autoRegister = function (key, fn) {
+        fn = fn === undefined ? key : fn;
+        if (typeof fn === 'function') {
+            var registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, fn);
+            if (registration === undefined) {
+                return this.registerResolver(key, new StrategyResolver(1, fn));
+            }
+            return registration.registerResolver(this, key, fn);
+        }
+        return this.registerResolver(key, new StrategyResolver(0, fn));
+    };
+    Container.prototype.autoRegisterAll = function (fns) {
+        var i = fns.length;
+        while (i--) {
+            this.autoRegister(fns[i]);
+        }
+    };
+    Container.prototype.unregister = function (key) {
+        this._resolvers.delete(key);
+    };
+    Container.prototype.hasResolver = function (key, checkParent) {
+        if (checkParent === void 0) { checkParent = false; }
+        validateKey(key);
+        return (this._resolvers.has(key) ||
+            (checkParent &&
+                this.parent !== null &&
+                this.parent.hasResolver(key, checkParent)));
+    };
+    Container.prototype.getResolver = function (key) {
+        return this._resolvers.get(key);
+    };
+    Container.prototype.get = function (key) {
+        validateKey(key);
+        if (key === Container) {
+            return this;
+        }
+        if (resolverDecorates(key)) {
+            return key.get(this, key);
+        }
+        var resolver$$1 = this._resolvers.get(key);
+        if (resolver$$1 === undefined) {
+            if (this.parent === null) {
+                return this.autoRegister(key).get(this, key);
+            }
+            var registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, key);
+            if (registration === undefined) {
+                return this.parent._get(key);
+            }
+            return registration.registerResolver(this, key, key).get(this, key);
+        }
+        return resolver$$1.get(this, key);
+    };
+    Container.prototype._get = function (key) {
+        var resolver$$1 = this._resolvers.get(key);
+        if (resolver$$1 === undefined) {
+            if (this.parent === null) {
+                return this.autoRegister(key).get(this, key);
+            }
+            return this.parent._get(key);
+        }
+        return resolver$$1.get(this, key);
+    };
+    Container.prototype.getAll = function (key) {
+        validateKey(key);
+        var resolver$$1 = this._resolvers.get(key);
+        if (resolver$$1 === undefined) {
+            if (this.parent === null) {
+                return _emptyParameters;
+            }
+            return this.parent.getAll(key);
+        }
+        if (resolver$$1.strategy === 4) {
+            var state = resolver$$1.state;
+            var i = state.length;
+            var results = new Array(i);
+            while (i--) {
+                results[i] = state[i].get(this, key);
+            }
+            return results;
+        }
+        return [resolver$$1.get(this, key)];
+    };
+    Container.prototype.createChild = function () {
+        var child = new Container(this._configuration);
+        child.root = this.root;
+        child.parent = this;
+        return child;
+    };
+    Container.prototype.invoke = function (fn, dynamicDependencies) {
+        try {
+            var handler = this._handlers.get(fn);
+            if (handler === undefined) {
+                handler = this._createInvocationHandler(fn);
+                this._handlers.set(fn, handler);
+            }
+            return handler.invoke(this, dynamicDependencies);
+        }
+        catch (e) {
+            throw new aureliaPal.AggregateError("Error invoking " + fn.name + ". Check the inner error for details.", e, true);
+        }
+    };
+    Container.prototype._createInvocationHandler = function (fn) {
+        var dependencies;
+        if (fn.inject === undefined) {
+            dependencies =
+                aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, fn) || _emptyParameters;
+        }
+        else {
+            dependencies = [];
+            var ctor = fn;
+            while (typeof ctor === 'function') {
+                dependencies.push.apply(dependencies, getDependencies(ctor));
+                ctor = Object.getPrototypeOf(ctor);
+            }
+        }
+        var invoker = aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.invoker, fn) || classInvoker;
+        var handler = new InvocationHandler(fn, invoker, dependencies);
+        return this._onHandlerCreated !== undefined
+            ? this._onHandlerCreated(handler)
+            : handler;
+    };
+    return Container;
 }());
 
-function invoker(value) {
-    return function (target) {
-        aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, value, target);
-    };
-}
-function invokeAsFactory(potentialTarget) {
-    var deco = function (target) {
-        aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, FactoryInvoker.instance, target);
-    };
-    return potentialTarget ? deco(potentialTarget) : deco;
-}
-var FactoryInvoker = (function () {
-    function FactoryInvoker() {
-    }
-    FactoryInvoker.prototype.invoke = function (container, fn, dependencies) {
-        var i = dependencies.length;
-        var args = new Array(i);
-        while (i--) {
-            args[i] = container.get(dependencies[i]);
-        }
-        return fn.apply(undefined, args);
-    };
-    FactoryInvoker.prototype.invokeWithDynamicDependencies = function (container, fn, staticDependencies, dynamicDependencies) {
-        var i = staticDependencies.length;
-        var args = new Array(i);
-        while (i--) {
-            args[i] = container.get(staticDependencies[i]);
-        }
-        if (dynamicDependencies !== undefined) {
-            args = args.concat(dynamicDependencies);
-        }
-        return fn.apply(undefined, args);
-    };
-    return FactoryInvoker;
-}());
+function invoker(value) {
+    return function (target) {
+        aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, value, target);
+    };
+}
+function invokeAsFactory(potentialTarget) {
+    var deco = function (target) {
+        aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, FactoryInvoker.instance, target);
+    };
+    return potentialTarget ? deco(potentialTarget) : deco;
+}
+var FactoryInvoker = (function () {
+    function FactoryInvoker() {
+    }
+    FactoryInvoker.prototype.invoke = function (container, fn, dependencies) {
+        var i = dependencies.length;
+        var args = new Array(i);
+        while (i--) {
+            args[i] = container.get(dependencies[i]);
+        }
+        return fn.apply(undefined, args);
+    };
+    FactoryInvoker.prototype.invokeWithDynamicDependencies = function (container, fn, staticDependencies, dynamicDependencies) {
+        var i = staticDependencies.length;
+        var args = new Array(i);
+        while (i--) {
+            args[i] = container.get(staticDependencies[i]);
+        }
+        if (dynamicDependencies !== undefined) {
+            args = args.concat(dynamicDependencies);
+        }
+        return fn.apply(undefined, args);
+    };
+    return FactoryInvoker;
+}());
 FactoryInvoker.instance = new FactoryInvoker();
 
-function registration(value) {
-    return function (target) {
-        aureliaMetadata.metadata.define(aureliaMetadata.metadata.registration, value, target);
-    };
-}
-function transient(key) {
-    return registration(new TransientRegistration(key));
-}
-function singleton(keyOrRegisterInChild, registerInChild) {
-    if (registerInChild === void 0) { registerInChild = false; }
-    return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
-}
-var TransientRegistration = (function () {
-    function TransientRegistration(key) {
-        this._key = key;
-    }
-    TransientRegistration.prototype.registerResolver = function (container, key, fn) {
-        var existingResolver = container.getResolver(this._key || key);
-        return existingResolver === undefined
-            ? container.registerTransient((this._key || key), fn)
-            : existingResolver;
-    };
-    return TransientRegistration;
-}());
-var SingletonRegistration = (function () {
-    function SingletonRegistration(keyOrRegisterInChild, registerInChild) {
-        if (registerInChild === void 0) { registerInChild = false; }
-        if (typeof keyOrRegisterInChild === 'boolean') {
-            this._registerInChild = keyOrRegisterInChild;
-        }
-        else {
-            this._key = keyOrRegisterInChild;
-            this._registerInChild = registerInChild;
-        }
-    }
-    SingletonRegistration.prototype.registerResolver = function (container, key, fn) {
-        var targetContainer = this._registerInChild ? container : container.root;
-        var existingResolver = targetContainer.getResolver(this._key || key);
-        return existingResolver === undefined
-            ? targetContainer.registerSingleton(this._key || key, fn)
-            : existingResolver;
-    };
-    return SingletonRegistration;
+function registration(value) {
+    return function (target) {
+        aureliaMetadata.metadata.define(aureliaMetadata.metadata.registration, value, target);
+    };
+}
+function transient(key) {
+    return registration(new TransientRegistration(key));
+}
+function singleton(keyOrRegisterInChild, registerInChild) {
+    if (registerInChild === void 0) { registerInChild = false; }
+    return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
+}
+var TransientRegistration = (function () {
+    function TransientRegistration(key) {
+        this._key = key;
+    }
+    TransientRegistration.prototype.registerResolver = function (container, key, fn) {
+        var existingResolver = container.getResolver(this._key || key);
+        return existingResolver === undefined
+            ? container.registerTransient((this._key || key), fn)
+            : existingResolver;
+    };
+    return TransientRegistration;
+}());
+var SingletonRegistration = (function () {
+    function SingletonRegistration(keyOrRegisterInChild, registerInChild) {
+        if (registerInChild === void 0) { registerInChild = false; }
+        if (typeof keyOrRegisterInChild === 'boolean') {
+            this._registerInChild = keyOrRegisterInChild;
+        }
+        else {
+            this._key = keyOrRegisterInChild;
+            this._registerInChild = registerInChild;
+        }
+    }
+    SingletonRegistration.prototype.registerResolver = function (container, key, fn) {
+        var targetContainer = this._registerInChild ? container : container.root;
+        var existingResolver = targetContainer.getResolver(this._key || key);
+        return existingResolver === undefined
+            ? targetContainer.registerSingleton(this._key || key, fn)
+            : existingResolver;
+    };
+    return SingletonRegistration;
 }());
 
 exports._emptyParameters = _emptyParameters;
diff --git a/dist/es2015/aurelia-dependency-injection.js b/dist/es2015/aurelia-dependency-injection.js
index bde6696..5b38942 100644
--- a/dist/es2015/aurelia-dependency-injection.js
+++ b/dist/es2015/aurelia-dependency-injection.js
@@ -1,583 +1,583 @@
 import { metadata, protocol } from 'aurelia-metadata';
 import { AggregateError } from 'aurelia-pal';
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation. All rights reserved.
-Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-this file except in compliance with the License. You may obtain a copy of the
-License at http://www.apache.org/licenses/LICENSE-2.0
-
-THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-MERCHANTABLITY OR NON-INFRINGEMENT.
-
-See the Apache Version 2.0 License for specific language governing permissions
-and limitations under the License.
-***************************************************************************** */
-
-function __decorate(decorators, target, key, desc) {
-    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-    return c > 3 && r && Object.defineProperty(target, key, r), r;
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at http://www.apache.org/licenses/LICENSE-2.0
+
+THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+
+function __decorate(decorators, target, key, desc) {
+    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+    return c > 3 && r && Object.defineProperty(target, key, r), r;
+}
+
+function __metadata(metadataKey, metadataValue) {
+    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
 }
 
-function __metadata(metadataKey, metadataValue) {
-    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-}
-
-function autoinject(potentialTarget) {
-    const deco = (target) => {
-        if (!target.hasOwnProperty('inject')) {
-            target.inject = (metadata.getOwn(metadata.paramTypes, target) ||
-                _emptyParameters).slice();
-            if (target.inject && target.inject.length > 0) {
-                if (target.inject[target.inject.length - 1] === Object) {
-                    target.inject.splice(-1, 1);
-                }
-            }
-        }
-    };
-    return potentialTarget ? deco(potentialTarget) : deco;
-}
-function inject(...rest) {
-    return (target, _key, descriptor) => {
-        if (typeof descriptor === 'number') {
-            autoinject(target);
-            if (rest.length === 1) {
-                target.inject[descriptor] = rest[0];
-            }
-            return;
-        }
-        if (descriptor) {
-            const fn = descriptor.value;
-            fn.inject = rest;
-        }
-        else {
-            target.inject = rest;
-        }
-    };
+function autoinject(potentialTarget) {
+    const deco = (target) => {
+        if (!target.hasOwnProperty('inject')) {
+            target.inject = (metadata.getOwn(metadata.paramTypes, target) ||
+                _emptyParameters).slice();
+            if (target.inject && target.inject.length > 0) {
+                if (target.inject[target.inject.length - 1] === Object) {
+                    target.inject.splice(-1, 1);
+                }
+            }
+        }
+    };
+    return potentialTarget ? deco(potentialTarget) : deco;
+}
+function inject(...rest) {
+    return (target, _key, descriptor) => {
+        if (typeof descriptor === 'number') {
+            autoinject(target);
+            if (rest.length === 1) {
+                target.inject[descriptor] = rest[0];
+            }
+            return;
+        }
+        if (descriptor) {
+            const fn = descriptor.value;
+            fn.inject = rest;
+        }
+        else {
+            target.inject = rest;
+        }
+    };
 }
 
-var Lazy_1, All_1, Optional_1, Parent_1, Factory_1, NewInstance_1;
-const resolver = protocol.create('aurelia:resolver', (target) => {
-    if (!(typeof target.get === 'function')) {
-        return 'Resolvers must implement: get(container: Container, key: any): any';
-    }
-    return true;
-});
-function isStrategy(actual, expected, state) {
-    return actual === expected;
-}
-let StrategyResolver = class StrategyResolver {
-    constructor(strategy, state) {
-        this.strategy = strategy;
-        this.state = state;
-    }
-    get(container, key) {
-        if (isStrategy(this.strategy, 0, this.state)) {
-            return this.state;
-        }
-        if (isStrategy(this.strategy, 1, this.state)) {
-            const singleton = container.invoke(this.state);
-            this.state = singleton;
-            this.strategy = 0;
-            return singleton;
-        }
-        if (isStrategy(this.strategy, 2, this.state)) {
-            return container.invoke(this.state);
-        }
-        if (isStrategy(this.strategy, 3, this.state)) {
-            return this.state(container, key, this);
-        }
-        if (isStrategy(this.strategy, 4, this.state)) {
-            return this.state[0].get(container, key);
-        }
-        if (isStrategy(this.strategy, 5, this.state)) {
-            return container.get(this.state);
-        }
-        throw new Error('Invalid strategy: ' + this.strategy);
-    }
-};
-StrategyResolver = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Number, Object])
-], StrategyResolver);
-let Lazy = Lazy_1 = class Lazy {
-    constructor(key) {
-        this._key = key;
-    }
-    get(container) {
-        return () => container.get(this._key);
-    }
-    static of(key) {
-        return new Lazy_1(key);
-    }
-};
-Lazy = Lazy_1 = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Object])
-], Lazy);
-let All = All_1 = class All {
-    constructor(key) {
-        this._key = key;
-    }
-    get(container) {
-        return container.getAll(this._key);
-    }
-    static of(key) {
-        return new All_1(key);
-    }
-};
-All = All_1 = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Object])
-], All);
-let Optional = Optional_1 = class Optional {
-    constructor(key, checkParent = true) {
-        this._key = key;
-        this._checkParent = checkParent;
-    }
-    get(container) {
-        if (container.hasResolver(this._key, this._checkParent)) {
-            return container.get(this._key);
-        }
-        return null;
-    }
-    static of(key, checkParent = true) {
-        return new Optional_1(key, checkParent);
-    }
-};
-Optional = Optional_1 = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Object, Boolean])
-], Optional);
-let Parent = Parent_1 = class Parent {
-    constructor(key) {
-        this._key = key;
-    }
-    get(container) {
-        return container.parent ? container.parent.get(this._key) : null;
-    }
-    static of(key) {
-        return new Parent_1(key);
-    }
-};
-Parent = Parent_1 = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Object])
-], Parent);
-let Factory = Factory_1 = class Factory {
-    constructor(key) {
-        this._key = key;
-    }
-    get(container) {
-        let fn = this._key;
-        const resolver = container.getResolver(fn);
-        if (resolver && resolver.strategy === 3) {
-            fn = resolver.state;
-        }
-        return (...rest) => container.invoke(fn, rest);
-    }
-    static of(key) {
-        return new Factory_1(key);
-    }
-};
-Factory = Factory_1 = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Object])
-], Factory);
-let NewInstance = NewInstance_1 = class NewInstance {
-    constructor(key, ...dynamicDependencies) {
-        this.key = key;
-        this.asKey = key;
-        this.dynamicDependencies = dynamicDependencies;
-    }
-    get(container) {
-        const dynamicDependencies = this.dynamicDependencies.length > 0
-            ? this.dynamicDependencies.map(dependency => dependency['protocol:aurelia:resolver']
-                ? dependency.get(container)
-                : container.get(dependency))
-            : undefined;
-        let fn = this.key;
-        const resolver = container.getResolver(fn);
-        if (resolver && resolver.strategy === 3) {
-            fn = resolver.state;
-        }
-        const instance = container.invoke(fn, dynamicDependencies);
-        container.registerInstance(this.asKey, instance);
-        return instance;
-    }
-    as(key) {
-        this.asKey = key;
-        return this;
-    }
-    static of(key, ...dynamicDependencies) {
-        return new NewInstance_1(key, ...dynamicDependencies);
-    }
-};
-NewInstance = NewInstance_1 = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Object, Object])
-], NewInstance);
-function getDecoratorDependencies(target) {
-    autoinject(target);
-    return target.inject;
-}
-function lazy(keyValue) {
-    return (target, _key, index) => {
-        const inject$$1 = getDecoratorDependencies(target);
-        inject$$1[index] = Lazy.of(keyValue);
-    };
-}
-function all(keyValue) {
-    return (target, _key, index) => {
-        const inject$$1 = getDecoratorDependencies(target);
-        inject$$1[index] = All.of(keyValue);
-    };
-}
-function optional(checkParentOrTarget = true) {
-    const deco = (checkParent) => {
-        return (target, _key, index) => {
-            const inject$$1 = getDecoratorDependencies(target);
-            inject$$1[index] = Optional.of(inject$$1[index], checkParent);
-        };
-    };
-    if (typeof checkParentOrTarget === 'boolean') {
-        return deco(checkParentOrTarget);
-    }
-    return deco(true);
-}
-function parent(target, _key, index) {
-    const inject$$1 = getDecoratorDependencies(target);
-    inject$$1[index] = Parent.of(inject$$1[index]);
-}
-function factory(keyValue) {
-    return (target, _key, index) => {
-        const inject$$1 = getDecoratorDependencies(target);
-        inject$$1[index] = Factory.of(keyValue);
-    };
-}
-function newInstance(asKeyOrTarget, ...dynamicDependencies) {
-    const deco = (asKey) => {
-        return (target, _key, index) => {
-            const inject$$1 = getDecoratorDependencies(target);
-            inject$$1[index] = NewInstance.of(inject$$1[index], ...dynamicDependencies);
-            if (!!asKey) {
-                inject$$1[index].as(asKey);
-            }
-        };
-    };
-    if (arguments.length >= 1) {
-        return deco(asKeyOrTarget);
-    }
-    return deco();
+var Lazy_1, All_1, Optional_1, Parent_1, Factory_1, NewInstance_1;
+const resolver = protocol.create('aurelia:resolver', (target) => {
+    if (!(typeof target.get === 'function')) {
+        return 'Resolvers must implement: get(container: Container, key: any): any';
+    }
+    return true;
+});
+function isStrategy(actual, expected, state) {
+    return actual === expected;
+}
+let StrategyResolver = class StrategyResolver {
+    constructor(strategy, state) {
+        this.strategy = strategy;
+        this.state = state;
+    }
+    get(container, key) {
+        if (isStrategy(this.strategy, 0, this.state)) {
+            return this.state;
+        }
+        if (isStrategy(this.strategy, 1, this.state)) {
+            const singleton = container.invoke(this.state);
+            this.state = singleton;
+            this.strategy = 0;
+            return singleton;
+        }
+        if (isStrategy(this.strategy, 2, this.state)) {
+            return container.invoke(this.state);
+        }
+        if (isStrategy(this.strategy, 3, this.state)) {
+            return this.state(container, key, this);
+        }
+        if (isStrategy(this.strategy, 4, this.state)) {
+            return this.state[0].get(container, key);
+        }
+        if (isStrategy(this.strategy, 5, this.state)) {
+            return container.get(this.state);
+        }
+        throw new Error('Invalid strategy: ' + this.strategy);
+    }
+};
+StrategyResolver = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Number, Object])
+], StrategyResolver);
+let Lazy = Lazy_1 = class Lazy {
+    constructor(key) {
+        this._key = key;
+    }
+    get(container) {
+        return () => container.get(this._key);
+    }
+    static of(key) {
+        return new Lazy_1(key);
+    }
+};
+Lazy = Lazy_1 = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Object])
+], Lazy);
+let All = All_1 = class All {
+    constructor(key) {
+        this._key = key;
+    }
+    get(container) {
+        return container.getAll(this._key);
+    }
+    static of(key) {
+        return new All_1(key);
+    }
+};
+All = All_1 = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Object])
+], All);
+let Optional = Optional_1 = class Optional {
+    constructor(key, checkParent = true) {
+        this._key = key;
+        this._checkParent = checkParent;
+    }
+    get(container) {
+        if (container.hasResolver(this._key, this._checkParent)) {
+            return container.get(this._key);
+        }
+        return null;
+    }
+    static of(key, checkParent = true) {
+        return new Optional_1(key, checkParent);
+    }
+};
+Optional = Optional_1 = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Object, Boolean])
+], Optional);
+let Parent = Parent_1 = class Parent {
+    constructor(key) {
+        this._key = key;
+    }
+    get(container) {
+        return container.parent ? container.parent.get(this._key) : null;
+    }
+    static of(key) {
+        return new Parent_1(key);
+    }
+};
+Parent = Parent_1 = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Object])
+], Parent);
+let Factory = Factory_1 = class Factory {
+    constructor(key) {
+        this._key = key;
+    }
+    get(container) {
+        let fn = this._key;
+        const resolver = container.getResolver(fn);
+        if (resolver && resolver.strategy === 3) {
+            fn = resolver.state;
+        }
+        return (...rest) => container.invoke(fn, rest);
+    }
+    static of(key) {
+        return new Factory_1(key);
+    }
+};
+Factory = Factory_1 = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Object])
+], Factory);
+let NewInstance = NewInstance_1 = class NewInstance {
+    constructor(key, ...dynamicDependencies) {
+        this.key = key;
+        this.asKey = key;
+        this.dynamicDependencies = dynamicDependencies;
+    }
+    get(container) {
+        const dynamicDependencies = this.dynamicDependencies.length > 0
+            ? this.dynamicDependencies.map(dependency => dependency['protocol:aurelia:resolver']
+                ? dependency.get(container)
+                : container.get(dependency))
+            : undefined;
+        let fn = this.key;
+        const resolver = container.getResolver(fn);
+        if (resolver && resolver.strategy === 3) {
+            fn = resolver.state;
+        }
+        const instance = container.invoke(fn, dynamicDependencies);
+        container.registerInstance(this.asKey, instance);
+        return instance;
+    }
+    as(key) {
+        this.asKey = key;
+        return this;
+    }
+    static of(key, ...dynamicDependencies) {
+        return new NewInstance_1(key, ...dynamicDependencies);
+    }
+};
+NewInstance = NewInstance_1 = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Object, Object])
+], NewInstance);
+function getDecoratorDependencies(target) {
+    autoinject(target);
+    return target.inject;
+}
+function lazy(keyValue) {
+    return (target, _key, index) => {
+        const inject$$1 = getDecoratorDependencies(target);
+        inject$$1[index] = Lazy.of(keyValue);
+    };
+}
+function all(keyValue) {
+    return (target, _key, index) => {
+        const inject$$1 = getDecoratorDependencies(target);
+        inject$$1[index] = All.of(keyValue);
+    };
+}
+function optional(checkParentOrTarget = true) {
+    const deco = (checkParent) => {
+        return (target, _key, index) => {
+            const inject$$1 = getDecoratorDependencies(target);
+            inject$$1[index] = Optional.of(inject$$1[index], checkParent);
+        };
+    };
+    if (typeof checkParentOrTarget === 'boolean') {
+        return deco(checkParentOrTarget);
+    }
+    return deco(true);
+}
+function parent(target, _key, index) {
+    const inject$$1 = getDecoratorDependencies(target);
+    inject$$1[index] = Parent.of(inject$$1[index]);
+}
+function factory(keyValue) {
+    return (target, _key, index) => {
+        const inject$$1 = getDecoratorDependencies(target);
+        inject$$1[index] = Factory.of(keyValue);
+    };
+}
+function newInstance(asKeyOrTarget, ...dynamicDependencies) {
+    const deco = (asKey) => {
+        return (target, _key, index) => {
+            const inject$$1 = getDecoratorDependencies(target);
+            inject$$1[index] = NewInstance.of(inject$$1[index], ...dynamicDependencies);
+            if (!!asKey) {
+                inject$$1[index].as(asKey);
+            }
+        };
+    };
+    if (arguments.length >= 1) {
+        return deco(asKeyOrTarget);
+    }
+    return deco();
 }
 
-function validateKey(key) {
-    if (key === null || key === undefined) {
-        throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-    }
-}
-const _emptyParameters = Object.freeze([]);
-metadata.registration = 'aurelia:registration';
-metadata.invoker = 'aurelia:invoker';
-const resolverDecorates = resolver.decorates;
-class InvocationHandler {
-    constructor(fn, invoker, dependencies) {
-        this.fn = fn;
-        this.invoker = invoker;
-        this.dependencies = dependencies;
-    }
-    invoke(container, dynamicDependencies) {
-        return dynamicDependencies !== undefined
-            ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
-            : this.invoker.invoke(container, this.fn, this.dependencies);
-    }
-}
-function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
-    let i = staticDependencies.length;
-    let args = new Array(i);
-    let lookup;
-    while (i--) {
-        lookup = staticDependencies[i];
-        if (lookup === null || lookup === undefined) {
-            throw new Error('Constructor Parameter with index ' +
-                i +
-                ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-        }
-        else {
-            args[i] = container.get(lookup);
-        }
-    }
-    if (dynamicDependencies !== undefined) {
-        args = args.concat(dynamicDependencies);
-    }
-    return Reflect.construct(fn, args);
-}
-const classInvoker = {
-    invoke(container, Type, deps) {
-        const instances = deps.map((dep) => container.get(dep));
-        return Reflect.construct(Type, instances);
-    },
-    invokeWithDynamicDependencies
-};
-function getDependencies(f) {
-    if (!f.hasOwnProperty('inject')) {
-        return [];
-    }
-    if (typeof f.inject === 'function') {
-        return f.inject();
-    }
-    return f.inject;
-}
-class Container {
-    constructor(configuration) {
-        if (configuration === undefined) {
-            configuration = {};
-        }
-        this._configuration = configuration;
-        this._onHandlerCreated = configuration.onHandlerCreated;
-        this._handlers =
-            configuration.handlers || (configuration.handlers = new Map());
-        this._resolvers = new Map();
-        this.root = this;
-        this.parent = null;
-    }
-    makeGlobal() {
-        Container.instance = this;
-        return this;
-    }
-    setHandlerCreatedCallback(onHandlerCreated) {
-        this._onHandlerCreated = onHandlerCreated;
-        this._configuration.onHandlerCreated = onHandlerCreated;
-    }
-    registerInstance(key, instance) {
-        return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
-    }
-    registerSingleton(key, fn) {
-        return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
-    }
-    registerTransient(key, fn) {
-        return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
-    }
-    registerHandler(key, handler) {
-        return this.registerResolver(key, new StrategyResolver(3, handler));
-    }
-    registerAlias(originalKey, aliasKey) {
-        return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
-    }
-    registerResolver(key, resolver$$1) {
-        validateKey(key);
-        const allResolvers = this._resolvers;
-        const result = allResolvers.get(key);
-        if (result === undefined) {
-            allResolvers.set(key, resolver$$1);
-        }
-        else if (result.strategy === 4) {
-            result.state.push(resolver$$1);
-        }
-        else {
-            allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
-        }
-        return resolver$$1;
-    }
-    autoRegister(key, fn) {
-        fn = fn === undefined ? key : fn;
-        if (typeof fn === 'function') {
-            const registration = metadata.get(metadata.registration, fn);
-            if (registration === undefined) {
-                return this.registerResolver(key, new StrategyResolver(1, fn));
-            }
-            return registration.registerResolver(this, key, fn);
-        }
-        return this.registerResolver(key, new StrategyResolver(0, fn));
-    }
-    autoRegisterAll(fns) {
-        let i = fns.length;
-        while (i--) {
-            this.autoRegister(fns[i]);
-        }
-    }
-    unregister(key) {
-        this._resolvers.delete(key);
-    }
-    hasResolver(key, checkParent = false) {
-        validateKey(key);
-        return (this._resolvers.has(key) ||
-            (checkParent &&
-                this.parent !== null &&
-                this.parent.hasResolver(key, checkParent)));
-    }
-    getResolver(key) {
-        return this._resolvers.get(key);
-    }
-    get(key) {
-        validateKey(key);
-        if (key === Container) {
-            return this;
-        }
-        if (resolverDecorates(key)) {
-            return key.get(this, key);
-        }
-        const resolver$$1 = this._resolvers.get(key);
-        if (resolver$$1 === undefined) {
-            if (this.parent === null) {
-                return this.autoRegister(key).get(this, key);
-            }
-            const registration = metadata.get(metadata.registration, key);
-            if (registration === undefined) {
-                return this.parent._get(key);
-            }
-            return registration.registerResolver(this, key, key).get(this, key);
-        }
-        return resolver$$1.get(this, key);
-    }
-    _get(key) {
-        const resolver$$1 = this._resolvers.get(key);
-        if (resolver$$1 === undefined) {
-            if (this.parent === null) {
-                return this.autoRegister(key).get(this, key);
-            }
-            return this.parent._get(key);
-        }
-        return resolver$$1.get(this, key);
-    }
-    getAll(key) {
-        validateKey(key);
-        const resolver$$1 = this._resolvers.get(key);
-        if (resolver$$1 === undefined) {
-            if (this.parent === null) {
-                return _emptyParameters;
-            }
-            return this.parent.getAll(key);
-        }
-        if (resolver$$1.strategy === 4) {
-            const state = resolver$$1.state;
-            let i = state.length;
-            const results = new Array(i);
-            while (i--) {
-                results[i] = state[i].get(this, key);
-            }
-            return results;
-        }
-        return [resolver$$1.get(this, key)];
-    }
-    createChild() {
-        const child = new Container(this._configuration);
-        child.root = this.root;
-        child.parent = this;
-        return child;
-    }
-    invoke(fn, dynamicDependencies) {
-        try {
-            let handler = this._handlers.get(fn);
-            if (handler === undefined) {
-                handler = this._createInvocationHandler(fn);
-                this._handlers.set(fn, handler);
-            }
-            return handler.invoke(this, dynamicDependencies);
-        }
-        catch (e) {
-            throw new AggregateError(`Error invoking ${fn.name}. Check the inner error for details.`, e, true);
-        }
-    }
-    _createInvocationHandler(fn) {
-        let dependencies;
-        if (fn.inject === undefined) {
-            dependencies =
-                metadata.getOwn(metadata.paramTypes, fn) || _emptyParameters;
-        }
-        else {
-            dependencies = [];
-            let ctor = fn;
-            while (typeof ctor === 'function') {
-                dependencies.push(...getDependencies(ctor));
-                ctor = Object.getPrototypeOf(ctor);
-            }
-        }
-        const invoker = metadata.getOwn(metadata.invoker, fn) || classInvoker;
-        const handler = new InvocationHandler(fn, invoker, dependencies);
-        return this._onHandlerCreated !== undefined
-            ? this._onHandlerCreated(handler)
-            : handler;
-    }
+function validateKey(key) {
+    if (key === null || key === undefined) {
+        throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+    }
+}
+const _emptyParameters = Object.freeze([]);
+metadata.registration = 'aurelia:registration';
+metadata.invoker = 'aurelia:invoker';
+const resolverDecorates = resolver.decorates;
+class InvocationHandler {
+    constructor(fn, invoker, dependencies) {
+        this.fn = fn;
+        this.invoker = invoker;
+        this.dependencies = dependencies;
+    }
+    invoke(container, dynamicDependencies) {
+        return dynamicDependencies !== undefined
+            ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
+            : this.invoker.invoke(container, this.fn, this.dependencies);
+    }
+}
+function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
+    let i = staticDependencies.length;
+    let args = new Array(i);
+    let lookup;
+    while (i--) {
+        lookup = staticDependencies[i];
+        if (lookup === null || lookup === undefined) {
+            throw new Error('Constructor Parameter with index ' +
+                i +
+                ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+        }
+        else {
+            args[i] = container.get(lookup);
+        }
+    }
+    if (dynamicDependencies !== undefined) {
+        args = args.concat(dynamicDependencies);
+    }
+    return Reflect.construct(fn, args);
+}
+const classInvoker = {
+    invoke(container, Type, deps) {
+        const instances = deps.map((dep) => container.get(dep));
+        return Reflect.construct(Type, instances);
+    },
+    invokeWithDynamicDependencies
+};
+function getDependencies(f) {
+    if (!f.hasOwnProperty('inject')) {
+        return [];
+    }
+    if (typeof f.inject === 'function') {
+        return f.inject();
+    }
+    return f.inject;
+}
+class Container {
+    constructor(configuration) {
+        if (configuration === undefined) {
+            configuration = {};
+        }
+        this._configuration = configuration;
+        this._onHandlerCreated = configuration.onHandlerCreated;
+        this._handlers =
+            configuration.handlers || (configuration.handlers = new Map());
+        this._resolvers = new Map();
+        this.root = this;
+        this.parent = null;
+    }
+    makeGlobal() {
+        Container.instance = this;
+        return this;
+    }
+    setHandlerCreatedCallback(onHandlerCreated) {
+        this._onHandlerCreated = onHandlerCreated;
+        this._configuration.onHandlerCreated = onHandlerCreated;
+    }
+    registerInstance(key, instance) {
+        return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
+    }
+    registerSingleton(key, fn) {
+        return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
+    }
+    registerTransient(key, fn) {
+        return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
+    }
+    registerHandler(key, handler) {
+        return this.registerResolver(key, new StrategyResolver(3, handler));
+    }
+    registerAlias(originalKey, aliasKey) {
+        return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
+    }
+    registerResolver(key, resolver$$1) {
+        validateKey(key);
+        const allResolvers = this._resolvers;
+        const result = allResolvers.get(key);
+        if (result === undefined) {
+            allResolvers.set(key, resolver$$1);
+        }
+        else if (result.strategy === 4) {
+            result.state.push(resolver$$1);
+        }
+        else {
+            allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
+        }
+        return resolver$$1;
+    }
+    autoRegister(key, fn) {
+        fn = fn === undefined ? key : fn;
+        if (typeof fn === 'function') {
+            const registration = metadata.get(metadata.registration, fn);
+            if (registration === undefined) {
+                return this.registerResolver(key, new StrategyResolver(1, fn));
+            }
+            return registration.registerResolver(this, key, fn);
+        }
+        return this.registerResolver(key, new StrategyResolver(0, fn));
+    }
+    autoRegisterAll(fns) {
+        let i = fns.length;
+        while (i--) {
+            this.autoRegister(fns[i]);
+        }
+    }
+    unregister(key) {
+        this._resolvers.delete(key);
+    }
+    hasResolver(key, checkParent = false) {
+        validateKey(key);
+        return (this._resolvers.has(key) ||
+            (checkParent &&
+                this.parent !== null &&
+                this.parent.hasResolver(key, checkParent)));
+    }
+    getResolver(key) {
+        return this._resolvers.get(key);
+    }
+    get(key) {
+        validateKey(key);
+        if (key === Container) {
+            return this;
+        }
+        if (resolverDecorates(key)) {
+            return key.get(this, key);
+        }
+        const resolver$$1 = this._resolvers.get(key);
+        if (resolver$$1 === undefined) {
+            if (this.parent === null) {
+                return this.autoRegister(key).get(this, key);
+            }
+            const registration = metadata.get(metadata.registration, key);
+            if (registration === undefined) {
+                return this.parent._get(key);
+            }
+            return registration.registerResolver(this, key, key).get(this, key);
+        }
+        return resolver$$1.get(this, key);
+    }
+    _get(key) {
+        const resolver$$1 = this._resolvers.get(key);
+        if (resolver$$1 === undefined) {
+            if (this.parent === null) {
+                return this.autoRegister(key).get(this, key);
+            }
+            return this.parent._get(key);
+        }
+        return resolver$$1.get(this, key);
+    }
+    getAll(key) {
+        validateKey(key);
+        const resolver$$1 = this._resolvers.get(key);
+        if (resolver$$1 === undefined) {
+            if (this.parent === null) {
+                return _emptyParameters;
+            }
+            return this.parent.getAll(key);
+        }
+        if (resolver$$1.strategy === 4) {
+            const state = resolver$$1.state;
+            let i = state.length;
+            const results = new Array(i);
+            while (i--) {
+                results[i] = state[i].get(this, key);
+            }
+            return results;
+        }
+        return [resolver$$1.get(this, key)];
+    }
+    createChild() {
+        const child = new Container(this._configuration);
+        child.root = this.root;
+        child.parent = this;
+        return child;
+    }
+    invoke(fn, dynamicDependencies) {
+        try {
+            let handler = this._handlers.get(fn);
+            if (handler === undefined) {
+                handler = this._createInvocationHandler(fn);
+                this._handlers.set(fn, handler);
+            }
+            return handler.invoke(this, dynamicDependencies);
+        }
+        catch (e) {
+            throw new AggregateError(`Error invoking ${fn.name}. Check the inner error for details.`, e, true);
+        }
+    }
+    _createInvocationHandler(fn) {
+        let dependencies;
+        if (fn.inject === undefined) {
+            dependencies =
+                metadata.getOwn(metadata.paramTypes, fn) || _emptyParameters;
+        }
+        else {
+            dependencies = [];
+            let ctor = fn;
+            while (typeof ctor === 'function') {
+                dependencies.push(...getDependencies(ctor));
+                ctor = Object.getPrototypeOf(ctor);
+            }
+        }
+        const invoker = metadata.getOwn(metadata.invoker, fn) || classInvoker;
+        const handler = new InvocationHandler(fn, invoker, dependencies);
+        return this._onHandlerCreated !== undefined
+            ? this._onHandlerCreated(handler)
+            : handler;
+    }
 }
 
-function invoker(value) {
-    return target => {
-        metadata.define(metadata.invoker, value, target);
-    };
-}
-function invokeAsFactory(potentialTarget) {
-    const deco = (target) => {
-        metadata.define(metadata.invoker, FactoryInvoker.instance, target);
-    };
-    return potentialTarget ? deco(potentialTarget) : deco;
-}
-class FactoryInvoker {
-    invoke(container, fn, dependencies) {
-        let i = dependencies.length;
-        const args = new Array(i);
-        while (i--) {
-            args[i] = container.get(dependencies[i]);
-        }
-        return fn.apply(undefined, args);
-    }
-    invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
-        let i = staticDependencies.length;
-        let args = new Array(i);
-        while (i--) {
-            args[i] = container.get(staticDependencies[i]);
-        }
-        if (dynamicDependencies !== undefined) {
-            args = args.concat(dynamicDependencies);
-        }
-        return fn.apply(undefined, args);
-    }
-}
+function invoker(value) {
+    return target => {
+        metadata.define(metadata.invoker, value, target);
+    };
+}
+function invokeAsFactory(potentialTarget) {
+    const deco = (target) => {
+        metadata.define(metadata.invoker, FactoryInvoker.instance, target);
+    };
+    return potentialTarget ? deco(potentialTarget) : deco;
+}
+class FactoryInvoker {
+    invoke(container, fn, dependencies) {
+        let i = dependencies.length;
+        const args = new Array(i);
+        while (i--) {
+            args[i] = container.get(dependencies[i]);
+        }
+        return fn.apply(undefined, args);
+    }
+    invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
+        let i = staticDependencies.length;
+        let args = new Array(i);
+        while (i--) {
+            args[i] = container.get(staticDependencies[i]);
+        }
+        if (dynamicDependencies !== undefined) {
+            args = args.concat(dynamicDependencies);
+        }
+        return fn.apply(undefined, args);
+    }
+}
 FactoryInvoker.instance = new FactoryInvoker();
 
-function registration(value) {
-    return (target) => {
-        metadata.define(metadata.registration, value, target);
-    };
-}
-function transient(key) {
-    return registration(new TransientRegistration(key));
-}
-function singleton(keyOrRegisterInChild, registerInChild = false) {
-    return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
-}
-class TransientRegistration {
-    constructor(key) {
-        this._key = key;
-    }
-    registerResolver(container, key, fn) {
-        const existingResolver = container.getResolver(this._key || key);
-        return existingResolver === undefined
-            ? container.registerTransient((this._key || key), fn)
-            : existingResolver;
-    }
-}
-class SingletonRegistration {
-    constructor(keyOrRegisterInChild, registerInChild = false) {
-        if (typeof keyOrRegisterInChild === 'boolean') {
-            this._registerInChild = keyOrRegisterInChild;
-        }
-        else {
-            this._key = keyOrRegisterInChild;
-            this._registerInChild = registerInChild;
-        }
-    }
-    registerResolver(container, key, fn) {
-        const targetContainer = this._registerInChild ? container : container.root;
-        const existingResolver = targetContainer.getResolver(this._key || key);
-        return existingResolver === undefined
-            ? targetContainer.registerSingleton(this._key || key, fn)
-            : existingResolver;
-    }
+function registration(value) {
+    return (target) => {
+        metadata.define(metadata.registration, value, target);
+    };
+}
+function transient(key) {
+    return registration(new TransientRegistration(key));
+}
+function singleton(keyOrRegisterInChild, registerInChild = false) {
+    return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
+}
+class TransientRegistration {
+    constructor(key) {
+        this._key = key;
+    }
+    registerResolver(container, key, fn) {
+        const existingResolver = container.getResolver(this._key || key);
+        return existingResolver === undefined
+            ? container.registerTransient((this._key || key), fn)
+            : existingResolver;
+    }
+}
+class SingletonRegistration {
+    constructor(keyOrRegisterInChild, registerInChild = false) {
+        if (typeof keyOrRegisterInChild === 'boolean') {
+            this._registerInChild = keyOrRegisterInChild;
+        }
+        else {
+            this._key = keyOrRegisterInChild;
+            this._registerInChild = registerInChild;
+        }
+    }
+    registerResolver(container, key, fn) {
+        const targetContainer = this._registerInChild ? container : container.root;
+        const existingResolver = targetContainer.getResolver(this._key || key);
+        return existingResolver === undefined
+            ? targetContainer.registerSingleton(this._key || key, fn)
+            : existingResolver;
+    }
 }
 
 export { _emptyParameters, InvocationHandler, Container, autoinject, inject, invoker, invokeAsFactory, FactoryInvoker, registration, transient, singleton, TransientRegistration, SingletonRegistration, resolver, StrategyResolver, Lazy, All, Optional, Parent, Factory, NewInstance, getDecoratorDependencies, lazy, all, optional, parent, factory, newInstance };
diff --git a/dist/es2017/aurelia-dependency-injection.js b/dist/es2017/aurelia-dependency-injection.js
index bde6696..5b38942 100644
--- a/dist/es2017/aurelia-dependency-injection.js
+++ b/dist/es2017/aurelia-dependency-injection.js
@@ -1,583 +1,583 @@
 import { metadata, protocol } from 'aurelia-metadata';
 import { AggregateError } from 'aurelia-pal';
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation. All rights reserved.
-Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-this file except in compliance with the License. You may obtain a copy of the
-License at http://www.apache.org/licenses/LICENSE-2.0
-
-THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-MERCHANTABLITY OR NON-INFRINGEMENT.
-
-See the Apache Version 2.0 License for specific language governing permissions
-and limitations under the License.
-***************************************************************************** */
-
-function __decorate(decorators, target, key, desc) {
-    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-    return c > 3 && r && Object.defineProperty(target, key, r), r;
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at http://www.apache.org/licenses/LICENSE-2.0
+
+THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+
+function __decorate(decorators, target, key, desc) {
+    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+    return c > 3 && r && Object.defineProperty(target, key, r), r;
+}
+
+function __metadata(metadataKey, metadataValue) {
+    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
 }
 
-function __metadata(metadataKey, metadataValue) {
-    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-}
-
-function autoinject(potentialTarget) {
-    const deco = (target) => {
-        if (!target.hasOwnProperty('inject')) {
-            target.inject = (metadata.getOwn(metadata.paramTypes, target) ||
-                _emptyParameters).slice();
-            if (target.inject && target.inject.length > 0) {
-                if (target.inject[target.inject.length - 1] === Object) {
-                    target.inject.splice(-1, 1);
-                }
-            }
-        }
-    };
-    return potentialTarget ? deco(potentialTarget) : deco;
-}
-function inject(...rest) {
-    return (target, _key, descriptor) => {
-        if (typeof descriptor === 'number') {
-            autoinject(target);
-            if (rest.length === 1) {
-                target.inject[descriptor] = rest[0];
-            }
-            return;
-        }
-        if (descriptor) {
-            const fn = descriptor.value;
-            fn.inject = rest;
-        }
-        else {
-            target.inject = rest;
-        }
-    };
+function autoinject(potentialTarget) {
+    const deco = (target) => {
+        if (!target.hasOwnProperty('inject')) {
+            target.inject = (metadata.getOwn(metadata.paramTypes, target) ||
+                _emptyParameters).slice();
+            if (target.inject && target.inject.length > 0) {
+                if (target.inject[target.inject.length - 1] === Object) {
+                    target.inject.splice(-1, 1);
+                }
+            }
+        }
+    };
+    return potentialTarget ? deco(potentialTarget) : deco;
+}
+function inject(...rest) {
+    return (target, _key, descriptor) => {
+        if (typeof descriptor === 'number') {
+            autoinject(target);
+            if (rest.length === 1) {
+                target.inject[descriptor] = rest[0];
+            }
+            return;
+        }
+        if (descriptor) {
+            const fn = descriptor.value;
+            fn.inject = rest;
+        }
+        else {
+            target.inject = rest;
+        }
+    };
 }
 
-var Lazy_1, All_1, Optional_1, Parent_1, Factory_1, NewInstance_1;
-const resolver = protocol.create('aurelia:resolver', (target) => {
-    if (!(typeof target.get === 'function')) {
-        return 'Resolvers must implement: get(container: Container, key: any): any';
-    }
-    return true;
-});
-function isStrategy(actual, expected, state) {
-    return actual === expected;
-}
-let StrategyResolver = class StrategyResolver {
-    constructor(strategy, state) {
-        this.strategy = strategy;
-        this.state = state;
-    }
-    get(container, key) {
-        if (isStrategy(this.strategy, 0, this.state)) {
-            return this.state;
-        }
-        if (isStrategy(this.strategy, 1, this.state)) {
-            const singleton = container.invoke(this.state);
-            this.state = singleton;
-            this.strategy = 0;
-            return singleton;
-        }
-        if (isStrategy(this.strategy, 2, this.state)) {
-            return container.invoke(this.state);
-        }
-        if (isStrategy(this.strategy, 3, this.state)) {
-            return this.state(container, key, this);
-        }
-        if (isStrategy(this.strategy, 4, this.state)) {
-            return this.state[0].get(container, key);
-        }
-        if (isStrategy(this.strategy, 5, this.state)) {
-            return container.get(this.state);
-        }
-        throw new Error('Invalid strategy: ' + this.strategy);
-    }
-};
-StrategyResolver = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Number, Object])
-], StrategyResolver);
-let Lazy = Lazy_1 = class Lazy {
-    constructor(key) {
-        this._key = key;
-    }
-    get(container) {
-        return () => container.get(this._key);
-    }
-    static of(key) {
-        return new Lazy_1(key);
-    }
-};
-Lazy = Lazy_1 = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Object])
-], Lazy);
-let All = All_1 = class All {
-    constructor(key) {
-        this._key = key;
-    }
-    get(container) {
-        return container.getAll(this._key);
-    }
-    static of(key) {
-        return new All_1(key);
-    }
-};
-All = All_1 = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Object])
-], All);
-let Optional = Optional_1 = class Optional {
-    constructor(key, checkParent = true) {
-        this._key = key;
-        this._checkParent = checkParent;
-    }
-    get(container) {
-        if (container.hasResolver(this._key, this._checkParent)) {
-            return container.get(this._key);
-        }
-        return null;
-    }
-    static of(key, checkParent = true) {
-        return new Optional_1(key, checkParent);
-    }
-};
-Optional = Optional_1 = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Object, Boolean])
-], Optional);
-let Parent = Parent_1 = class Parent {
-    constructor(key) {
-        this._key = key;
-    }
-    get(container) {
-        return container.parent ? container.parent.get(this._key) : null;
-    }
-    static of(key) {
-        return new Parent_1(key);
-    }
-};
-Parent = Parent_1 = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Object])
-], Parent);
-let Factory = Factory_1 = class Factory {
-    constructor(key) {
-        this._key = key;
-    }
-    get(container) {
-        let fn = this._key;
-        const resolver = container.getResolver(fn);
-        if (resolver && resolver.strategy === 3) {
-            fn = resolver.state;
-        }
-        return (...rest) => container.invoke(fn, rest);
-    }
-    static of(key) {
-        return new Factory_1(key);
-    }
-};
-Factory = Factory_1 = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Object])
-], Factory);
-let NewInstance = NewInstance_1 = class NewInstance {
-    constructor(key, ...dynamicDependencies) {
-        this.key = key;
-        this.asKey = key;
-        this.dynamicDependencies = dynamicDependencies;
-    }
-    get(container) {
-        const dynamicDependencies = this.dynamicDependencies.length > 0
-            ? this.dynamicDependencies.map(dependency => dependency['protocol:aurelia:resolver']
-                ? dependency.get(container)
-                : container.get(dependency))
-            : undefined;
-        let fn = this.key;
-        const resolver = container.getResolver(fn);
-        if (resolver && resolver.strategy === 3) {
-            fn = resolver.state;
-        }
-        const instance = container.invoke(fn, dynamicDependencies);
-        container.registerInstance(this.asKey, instance);
-        return instance;
-    }
-    as(key) {
-        this.asKey = key;
-        return this;
-    }
-    static of(key, ...dynamicDependencies) {
-        return new NewInstance_1(key, ...dynamicDependencies);
-    }
-};
-NewInstance = NewInstance_1 = __decorate([
-    resolver(),
-    __metadata("design:paramtypes", [Object, Object])
-], NewInstance);
-function getDecoratorDependencies(target) {
-    autoinject(target);
-    return target.inject;
-}
-function lazy(keyValue) {
-    return (target, _key, index) => {
-        const inject$$1 = getDecoratorDependencies(target);
-        inject$$1[index] = Lazy.of(keyValue);
-    };
-}
-function all(keyValue) {
-    return (target, _key, index) => {
-        const inject$$1 = getDecoratorDependencies(target);
-        inject$$1[index] = All.of(keyValue);
-    };
-}
-function optional(checkParentOrTarget = true) {
-    const deco = (checkParent) => {
-        return (target, _key, index) => {
-            const inject$$1 = getDecoratorDependencies(target);
-            inject$$1[index] = Optional.of(inject$$1[index], checkParent);
-        };
-    };
-    if (typeof checkParentOrTarget === 'boolean') {
-        return deco(checkParentOrTarget);
-    }
-    return deco(true);
-}
-function parent(target, _key, index) {
-    const inject$$1 = getDecoratorDependencies(target);
-    inject$$1[index] = Parent.of(inject$$1[index]);
-}
-function factory(keyValue) {
-    return (target, _key, index) => {
-        const inject$$1 = getDecoratorDependencies(target);
-        inject$$1[index] = Factory.of(keyValue);
-    };
-}
-function newInstance(asKeyOrTarget, ...dynamicDependencies) {
-    const deco = (asKey) => {
-        return (target, _key, index) => {
-            const inject$$1 = getDecoratorDependencies(target);
-            inject$$1[index] = NewInstance.of(inject$$1[index], ...dynamicDependencies);
-            if (!!asKey) {
-                inject$$1[index].as(asKey);
-            }
-        };
-    };
-    if (arguments.length >= 1) {
-        return deco(asKeyOrTarget);
-    }
-    return deco();
+var Lazy_1, All_1, Optional_1, Parent_1, Factory_1, NewInstance_1;
+const resolver = protocol.create('aurelia:resolver', (target) => {
+    if (!(typeof target.get === 'function')) {
+        return 'Resolvers must implement: get(container: Container, key: any): any';
+    }
+    return true;
+});
+function isStrategy(actual, expected, state) {
+    return actual === expected;
+}
+let StrategyResolver = class StrategyResolver {
+    constructor(strategy, state) {
+        this.strategy = strategy;
+        this.state = state;
+    }
+    get(container, key) {
+        if (isStrategy(this.strategy, 0, this.state)) {
+            return this.state;
+        }
+        if (isStrategy(this.strategy, 1, this.state)) {
+            const singleton = container.invoke(this.state);
+            this.state = singleton;
+            this.strategy = 0;
+            return singleton;
+        }
+        if (isStrategy(this.strategy, 2, this.state)) {
+            return container.invoke(this.state);
+        }
+        if (isStrategy(this.strategy, 3, this.state)) {
+            return this.state(container, key, this);
+        }
+        if (isStrategy(this.strategy, 4, this.state)) {
+            return this.state[0].get(container, key);
+        }
+        if (isStrategy(this.strategy, 5, this.state)) {
+            return container.get(this.state);
+        }
+        throw new Error('Invalid strategy: ' + this.strategy);
+    }
+};
+StrategyResolver = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Number, Object])
+], StrategyResolver);
+let Lazy = Lazy_1 = class Lazy {
+    constructor(key) {
+        this._key = key;
+    }
+    get(container) {
+        return () => container.get(this._key);
+    }
+    static of(key) {
+        return new Lazy_1(key);
+    }
+};
+Lazy = Lazy_1 = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Object])
+], Lazy);
+let All = All_1 = class All {
+    constructor(key) {
+        this._key = key;
+    }
+    get(container) {
+        return container.getAll(this._key);
+    }
+    static of(key) {
+        return new All_1(key);
+    }
+};
+All = All_1 = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Object])
+], All);
+let Optional = Optional_1 = class Optional {
+    constructor(key, checkParent = true) {
+        this._key = key;
+        this._checkParent = checkParent;
+    }
+    get(container) {
+        if (container.hasResolver(this._key, this._checkParent)) {
+            return container.get(this._key);
+        }
+        return null;
+    }
+    static of(key, checkParent = true) {
+        return new Optional_1(key, checkParent);
+    }
+};
+Optional = Optional_1 = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Object, Boolean])
+], Optional);
+let Parent = Parent_1 = class Parent {
+    constructor(key) {
+        this._key = key;
+    }
+    get(container) {
+        return container.parent ? container.parent.get(this._key) : null;
+    }
+    static of(key) {
+        return new Parent_1(key);
+    }
+};
+Parent = Parent_1 = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Object])
+], Parent);
+let Factory = Factory_1 = class Factory {
+    constructor(key) {
+        this._key = key;
+    }
+    get(container) {
+        let fn = this._key;
+        const resolver = container.getResolver(fn);
+        if (resolver && resolver.strategy === 3) {
+            fn = resolver.state;
+        }
+        return (...rest) => container.invoke(fn, rest);
+    }
+    static of(key) {
+        return new Factory_1(key);
+    }
+};
+Factory = Factory_1 = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Object])
+], Factory);
+let NewInstance = NewInstance_1 = class NewInstance {
+    constructor(key, ...dynamicDependencies) {
+        this.key = key;
+        this.asKey = key;
+        this.dynamicDependencies = dynamicDependencies;
+    }
+    get(container) {
+        const dynamicDependencies = this.dynamicDependencies.length > 0
+            ? this.dynamicDependencies.map(dependency => dependency['protocol:aurelia:resolver']
+                ? dependency.get(container)
+                : container.get(dependency))
+            : undefined;
+        let fn = this.key;
+        const resolver = container.getResolver(fn);
+        if (resolver && resolver.strategy === 3) {
+            fn = resolver.state;
+        }
+        const instance = container.invoke(fn, dynamicDependencies);
+        container.registerInstance(this.asKey, instance);
+        return instance;
+    }
+    as(key) {
+        this.asKey = key;
+        return this;
+    }
+    static of(key, ...dynamicDependencies) {
+        return new NewInstance_1(key, ...dynamicDependencies);
+    }
+};
+NewInstance = NewInstance_1 = __decorate([
+    resolver(),
+    __metadata("design:paramtypes", [Object, Object])
+], NewInstance);
+function getDecoratorDependencies(target) {
+    autoinject(target);
+    return target.inject;
+}
+function lazy(keyValue) {
+    return (target, _key, index) => {
+        const inject$$1 = getDecoratorDependencies(target);
+        inject$$1[index] = Lazy.of(keyValue);
+    };
+}
+function all(keyValue) {
+    return (target, _key, index) => {
+        const inject$$1 = getDecoratorDependencies(target);
+        inject$$1[index] = All.of(keyValue);
+    };
+}
+function optional(checkParentOrTarget = true) {
+    const deco = (checkParent) => {
+        return (target, _key, index) => {
+            const inject$$1 = getDecoratorDependencies(target);
+            inject$$1[index] = Optional.of(inject$$1[index], checkParent);
+        };
+    };
+    if (typeof checkParentOrTarget === 'boolean') {
+        return deco(checkParentOrTarget);
+    }
+    return deco(true);
+}
+function parent(target, _key, index) {
+    const inject$$1 = getDecoratorDependencies(target);
+    inject$$1[index] = Parent.of(inject$$1[index]);
+}
+function factory(keyValue) {
+    return (target, _key, index) => {
+        const inject$$1 = getDecoratorDependencies(target);
+        inject$$1[index] = Factory.of(keyValue);
+    };
+}
+function newInstance(asKeyOrTarget, ...dynamicDependencies) {
+    const deco = (asKey) => {
+        return (target, _key, index) => {
+            const inject$$1 = getDecoratorDependencies(target);
+            inject$$1[index] = NewInstance.of(inject$$1[index], ...dynamicDependencies);
+            if (!!asKey) {
+                inject$$1[index].as(asKey);
+            }
+        };
+    };
+    if (arguments.length >= 1) {
+        return deco(asKeyOrTarget);
+    }
+    return deco();
 }
 
-function validateKey(key) {
-    if (key === null || key === undefined) {
-        throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-    }
-}
-const _emptyParameters = Object.freeze([]);
-metadata.registration = 'aurelia:registration';
-metadata.invoker = 'aurelia:invoker';
-const resolverDecorates = resolver.decorates;
-class InvocationHandler {
-    constructor(fn, invoker, dependencies) {
-        this.fn = fn;
-        this.invoker = invoker;
-        this.dependencies = dependencies;
-    }
-    invoke(container, dynamicDependencies) {
-        return dynamicDependencies !== undefined
-            ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
-            : this.invoker.invoke(container, this.fn, this.dependencies);
-    }
-}
-function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
-    let i = staticDependencies.length;
-    let args = new Array(i);
-    let lookup;
-    while (i--) {
-        lookup = staticDependencies[i];
-        if (lookup === null || lookup === undefined) {
-            throw new Error('Constructor Parameter with index ' +
-                i +
-                ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-        }
-        else {
-            args[i] = container.get(lookup);
-        }
-    }
-    if (dynamicDependencies !== undefined) {
-        args = args.concat(dynamicDependencies);
-    }
-    return Reflect.construct(fn, args);
-}
-const classInvoker = {
-    invoke(container, Type, deps) {
-        const instances = deps.map((dep) => container.get(dep));
-        return Reflect.construct(Type, instances);
-    },
-    invokeWithDynamicDependencies
-};
-function getDependencies(f) {
-    if (!f.hasOwnProperty('inject')) {
-        return [];
-    }
-    if (typeof f.inject === 'function') {
-        return f.inject();
-    }
-    return f.inject;
-}
-class Container {
-    constructor(configuration) {
-        if (configuration === undefined) {
-            configuration = {};
-        }
-        this._configuration = configuration;
-        this._onHandlerCreated = configuration.onHandlerCreated;
-        this._handlers =
-            configuration.handlers || (configuration.handlers = new Map());
-        this._resolvers = new Map();
-        this.root = this;
-        this.parent = null;
-    }
-    makeGlobal() {
-        Container.instance = this;
-        return this;
-    }
-    setHandlerCreatedCallback(onHandlerCreated) {
-        this._onHandlerCreated = onHandlerCreated;
-        this._configuration.onHandlerCreated = onHandlerCreated;
-    }
-    registerInstance(key, instance) {
-        return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
-    }
-    registerSingleton(key, fn) {
-        return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
-    }
-    registerTransient(key, fn) {
-        return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
-    }
-    registerHandler(key, handler) {
-        return this.registerResolver(key, new StrategyResolver(3, handler));
-    }
-    registerAlias(originalKey, aliasKey) {
-        return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
-    }
-    registerResolver(key, resolver$$1) {
-        validateKey(key);
-        const allResolvers = this._resolvers;
-        const result = allResolvers.get(key);
-        if (result === undefined) {
-            allResolvers.set(key, resolver$$1);
-        }
-        else if (result.strategy === 4) {
-            result.state.push(resolver$$1);
-        }
-        else {
-            allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
-        }
-        return resolver$$1;
-    }
-    autoRegister(key, fn) {
-        fn = fn === undefined ? key : fn;
-        if (typeof fn === 'function') {
-            const registration = metadata.get(metadata.registration, fn);
-            if (registration === undefined) {
-                return this.registerResolver(key, new StrategyResolver(1, fn));
-            }
-            return registration.registerResolver(this, key, fn);
-        }
-        return this.registerResolver(key, new StrategyResolver(0, fn));
-    }
-    autoRegisterAll(fns) {
-        let i = fns.length;
-        while (i--) {
-            this.autoRegister(fns[i]);
-        }
-    }
-    unregister(key) {
-        this._resolvers.delete(key);
-    }
-    hasResolver(key, checkParent = false) {
-        validateKey(key);
-        return (this._resolvers.has(key) ||
-            (checkParent &&
-                this.parent !== null &&
-                this.parent.hasResolver(key, checkParent)));
-    }
-    getResolver(key) {
-        return this._resolvers.get(key);
-    }
-    get(key) {
-        validateKey(key);
-        if (key === Container) {
-            return this;
-        }
-        if (resolverDecorates(key)) {
-            return key.get(this, key);
-        }
-        const resolver$$1 = this._resolvers.get(key);
-        if (resolver$$1 === undefined) {
-            if (this.parent === null) {
-                return this.autoRegister(key).get(this, key);
-            }
-            const registration = metadata.get(metadata.registration, key);
-            if (registration === undefined) {
-                return this.parent._get(key);
-            }
-            return registration.registerResolver(this, key, key).get(this, key);
-        }
-        return resolver$$1.get(this, key);
-    }
-    _get(key) {
-        const resolver$$1 = this._resolvers.get(key);
-        if (resolver$$1 === undefined) {
-            if (this.parent === null) {
-                return this.autoRegister(key).get(this, key);
-            }
-            return this.parent._get(key);
-        }
-        return resolver$$1.get(this, key);
-    }
-    getAll(key) {
-        validateKey(key);
-        const resolver$$1 = this._resolvers.get(key);
-        if (resolver$$1 === undefined) {
-            if (this.parent === null) {
-                return _emptyParameters;
-            }
-            return this.parent.getAll(key);
-        }
-        if (resolver$$1.strategy === 4) {
-            const state = resolver$$1.state;
-            let i = state.length;
-            const results = new Array(i);
-            while (i--) {
-                results[i] = state[i].get(this, key);
-            }
-            return results;
-        }
-        return [resolver$$1.get(this, key)];
-    }
-    createChild() {
-        const child = new Container(this._configuration);
-        child.root = this.root;
-        child.parent = this;
-        return child;
-    }
-    invoke(fn, dynamicDependencies) {
-        try {
-            let handler = this._handlers.get(fn);
-            if (handler === undefined) {
-                handler = this._createInvocationHandler(fn);
-                this._handlers.set(fn, handler);
-            }
-            return handler.invoke(this, dynamicDependencies);
-        }
-        catch (e) {
-            throw new AggregateError(`Error invoking ${fn.name}. Check the inner error for details.`, e, true);
-        }
-    }
-    _createInvocationHandler(fn) {
-        let dependencies;
-        if (fn.inject === undefined) {
-            dependencies =
-                metadata.getOwn(metadata.paramTypes, fn) || _emptyParameters;
-        }
-        else {
-            dependencies = [];
-            let ctor = fn;
-            while (typeof ctor === 'function') {
-                dependencies.push(...getDependencies(ctor));
-                ctor = Object.getPrototypeOf(ctor);
-            }
-        }
-        const invoker = metadata.getOwn(metadata.invoker, fn) || classInvoker;
-        const handler = new InvocationHandler(fn, invoker, dependencies);
-        return this._onHandlerCreated !== undefined
-            ? this._onHandlerCreated(handler)
-            : handler;
-    }
+function validateKey(key) {
+    if (key === null || key === undefined) {
+        throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+    }
+}
+const _emptyParameters = Object.freeze([]);
+metadata.registration = 'aurelia:registration';
+metadata.invoker = 'aurelia:invoker';
+const resolverDecorates = resolver.decorates;
+class InvocationHandler {
+    constructor(fn, invoker, dependencies) {
+        this.fn = fn;
+        this.invoker = invoker;
+        this.dependencies = dependencies;
+    }
+    invoke(container, dynamicDependencies) {
+        return dynamicDependencies !== undefined
+            ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
+            : this.invoker.invoke(container, this.fn, this.dependencies);
+    }
+}
+function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
+    let i = staticDependencies.length;
+    let args = new Array(i);
+    let lookup;
+    while (i--) {
+        lookup = staticDependencies[i];
+        if (lookup === null || lookup === undefined) {
+            throw new Error('Constructor Parameter with index ' +
+                i +
+                ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+        }
+        else {
+            args[i] = container.get(lookup);
+        }
+    }
+    if (dynamicDependencies !== undefined) {
+        args = args.concat(dynamicDependencies);
+    }
+    return Reflect.construct(fn, args);
+}
+const classInvoker = {
+    invoke(container, Type, deps) {
+        const instances = deps.map((dep) => container.get(dep));
+        return Reflect.construct(Type, instances);
+    },
+    invokeWithDynamicDependencies
+};
+function getDependencies(f) {
+    if (!f.hasOwnProperty('inject')) {
+        return [];
+    }
+    if (typeof f.inject === 'function') {
+        return f.inject();
+    }
+    return f.inject;
+}
+class Container {
+    constructor(configuration) {
+        if (configuration === undefined) {
+            configuration = {};
+        }
+        this._configuration = configuration;
+        this._onHandlerCreated = configuration.onHandlerCreated;
+        this._handlers =
+            configuration.handlers || (configuration.handlers = new Map());
+        this._resolvers = new Map();
+        this.root = this;
+        this.parent = null;
+    }
+    makeGlobal() {
+        Container.instance = this;
+        return this;
+    }
+    setHandlerCreatedCallback(onHandlerCreated) {
+        this._onHandlerCreated = onHandlerCreated;
+        this._configuration.onHandlerCreated = onHandlerCreated;
+    }
+    registerInstance(key, instance) {
+        return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
+    }
+    registerSingleton(key, fn) {
+        return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
+    }
+    registerTransient(key, fn) {
+        return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
+    }
+    registerHandler(key, handler) {
+        return this.registerResolver(key, new StrategyResolver(3, handler));
+    }
+    registerAlias(originalKey, aliasKey) {
+        return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
+    }
+    registerResolver(key, resolver$$1) {
+        validateKey(key);
+        const allResolvers = this._resolvers;
+        const result = allResolvers.get(key);
+        if (result === undefined) {
+            allResolvers.set(key, resolver$$1);
+        }
+        else if (result.strategy === 4) {
+            result.state.push(resolver$$1);
+        }
+        else {
+            allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
+        }
+        return resolver$$1;
+    }
+    autoRegister(key, fn) {
+        fn = fn === undefined ? key : fn;
+        if (typeof fn === 'function') {
+            const registration = metadata.get(metadata.registration, fn);
+            if (registration === undefined) {
+                return this.registerResolver(key, new StrategyResolver(1, fn));
+            }
+            return registration.registerResolver(this, key, fn);
+        }
+        return this.registerResolver(key, new StrategyResolver(0, fn));
+    }
+    autoRegisterAll(fns) {
+        let i = fns.length;
+        while (i--) {
+            this.autoRegister(fns[i]);
+        }
+    }
+    unregister(key) {
+        this._resolvers.delete(key);
+    }
+    hasResolver(key, checkParent = false) {
+        validateKey(key);
+        return (this._resolvers.has(key) ||
+            (checkParent &&
+                this.parent !== null &&
+                this.parent.hasResolver(key, checkParent)));
+    }
+    getResolver(key) {
+        return this._resolvers.get(key);
+    }
+    get(key) {
+        validateKey(key);
+        if (key === Container) {
+            return this;
+        }
+        if (resolverDecorates(key)) {
+            return key.get(this, key);
+        }
+        const resolver$$1 = this._resolvers.get(key);
+        if (resolver$$1 === undefined) {
+            if (this.parent === null) {
+                return this.autoRegister(key).get(this, key);
+            }
+            const registration = metadata.get(metadata.registration, key);
+            if (registration === undefined) {
+                return this.parent._get(key);
+            }
+            return registration.registerResolver(this, key, key).get(this, key);
+        }
+        return resolver$$1.get(this, key);
+    }
+    _get(key) {
+        const resolver$$1 = this._resolvers.get(key);
+        if (resolver$$1 === undefined) {
+            if (this.parent === null) {
+                return this.autoRegister(key).get(this, key);
+            }
+            return this.parent._get(key);
+        }
+        return resolver$$1.get(this, key);
+    }
+    getAll(key) {
+        validateKey(key);
+        const resolver$$1 = this._resolvers.get(key);
+        if (resolver$$1 === undefined) {
+            if (this.parent === null) {
+                return _emptyParameters;
+            }
+            return this.parent.getAll(key);
+        }
+        if (resolver$$1.strategy === 4) {
+            const state = resolver$$1.state;
+            let i = state.length;
+            const results = new Array(i);
+            while (i--) {
+                results[i] = state[i].get(this, key);
+            }
+            return results;
+        }
+        return [resolver$$1.get(this, key)];
+    }
+    createChild() {
+        const child = new Container(this._configuration);
+        child.root = this.root;
+        child.parent = this;
+        return child;
+    }
+    invoke(fn, dynamicDependencies) {
+        try {
+            let handler = this._handlers.get(fn);
+            if (handler === undefined) {
+                handler = this._createInvocationHandler(fn);
+                this._handlers.set(fn, handler);
+            }
+            return handler.invoke(this, dynamicDependencies);
+        }
+        catch (e) {
+            throw new AggregateError(`Error invoking ${fn.name}. Check the inner error for details.`, e, true);
+        }
+    }
+    _createInvocationHandler(fn) {
+        let dependencies;
+        if (fn.inject === undefined) {
+            dependencies =
+                metadata.getOwn(metadata.paramTypes, fn) || _emptyParameters;
+        }
+        else {
+            dependencies = [];
+            let ctor = fn;
+            while (typeof ctor === 'function') {
+                dependencies.push(...getDependencies(ctor));
+                ctor = Object.getPrototypeOf(ctor);
+            }
+        }
+        const invoker = metadata.getOwn(metadata.invoker, fn) || classInvoker;
+        const handler = new InvocationHandler(fn, invoker, dependencies);
+        return this._onHandlerCreated !== undefined
+            ? this._onHandlerCreated(handler)
+            : handler;
+    }
 }
 
-function invoker(value) {
-    return target => {
-        metadata.define(metadata.invoker, value, target);
-    };
-}
-function invokeAsFactory(potentialTarget) {
-    const deco = (target) => {
-        metadata.define(metadata.invoker, FactoryInvoker.instance, target);
-    };
-    return potentialTarget ? deco(potentialTarget) : deco;
-}
-class FactoryInvoker {
-    invoke(container, fn, dependencies) {
-        let i = dependencies.length;
-        const args = new Array(i);
-        while (i--) {
-            args[i] = container.get(dependencies[i]);
-        }
-        return fn.apply(undefined, args);
-    }
-    invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
-        let i = staticDependencies.length;
-        let args = new Array(i);
-        while (i--) {
-            args[i] = container.get(staticDependencies[i]);
-        }
-        if (dynamicDependencies !== undefined) {
-            args = args.concat(dynamicDependencies);
-        }
-        return fn.apply(undefined, args);
-    }
-}
+function invoker(value) {
+    return target => {
+        metadata.define(metadata.invoker, value, target);
+    };
+}
+function invokeAsFactory(potentialTarget) {
+    const deco = (target) => {
+        metadata.define(metadata.invoker, FactoryInvoker.instance, target);
+    };
+    return potentialTarget ? deco(potentialTarget) : deco;
+}
+class FactoryInvoker {
+    invoke(container, fn, dependencies) {
+        let i = dependencies.length;
+        const args = new Array(i);
+        while (i--) {
+            args[i] = container.get(dependencies[i]);
+        }
+        return fn.apply(undefined, args);
+    }
+    invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
+        let i = staticDependencies.length;
+        let args = new Array(i);
+        while (i--) {
+            args[i] = container.get(staticDependencies[i]);
+        }
+        if (dynamicDependencies !== undefined) {
+            args = args.concat(dynamicDependencies);
+        }
+        return fn.apply(undefined, args);
+    }
+}
 FactoryInvoker.instance = new FactoryInvoker();
 
-function registration(value) {
-    return (target) => {
-        metadata.define(metadata.registration, value, target);
-    };
-}
-function transient(key) {
-    return registration(new TransientRegistration(key));
-}
-function singleton(keyOrRegisterInChild, registerInChild = false) {
-    return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
-}
-class TransientRegistration {
-    constructor(key) {
-        this._key = key;
-    }
-    registerResolver(container, key, fn) {
-        const existingResolver = container.getResolver(this._key || key);
-        return existingResolver === undefined
-            ? container.registerTransient((this._key || key), fn)
-            : existingResolver;
-    }
-}
-class SingletonRegistration {
-    constructor(keyOrRegisterInChild, registerInChild = false) {
-        if (typeof keyOrRegisterInChild === 'boolean') {
-            this._registerInChild = keyOrRegisterInChild;
-        }
-        else {
-            this._key = keyOrRegisterInChild;
-            this._registerInChild = registerInChild;
-        }
-    }
-    registerResolver(container, key, fn) {
-        const targetContainer = this._registerInChild ? container : container.root;
-        const existingResolver = targetContainer.getResolver(this._key || key);
-        return existingResolver === undefined
-            ? targetContainer.registerSingleton(this._key || key, fn)
-            : existingResolver;
-    }
+function registration(value) {
+    return (target) => {
+        metadata.define(metadata.registration, value, target);
+    };
+}
+function transient(key) {
+    return registration(new TransientRegistration(key));
+}
+function singleton(keyOrRegisterInChild, registerInChild = false) {
+    return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
+}
+class TransientRegistration {
+    constructor(key) {
+        this._key = key;
+    }
+    registerResolver(container, key, fn) {
+        const existingResolver = container.getResolver(this._key || key);
+        return existingResolver === undefined
+            ? container.registerTransient((this._key || key), fn)
+            : existingResolver;
+    }
+}
+class SingletonRegistration {
+    constructor(keyOrRegisterInChild, registerInChild = false) {
+        if (typeof keyOrRegisterInChild === 'boolean') {
+            this._registerInChild = keyOrRegisterInChild;
+        }
+        else {
+            this._key = keyOrRegisterInChild;
+            this._registerInChild = registerInChild;
+        }
+    }
+    registerResolver(container, key, fn) {
+        const targetContainer = this._registerInChild ? container : container.root;
+        const existingResolver = targetContainer.getResolver(this._key || key);
+        return existingResolver === undefined
+            ? targetContainer.registerSingleton(this._key || key, fn)
+            : existingResolver;
+    }
 }
 
 export { _emptyParameters, InvocationHandler, Container, autoinject, inject, invoker, invokeAsFactory, FactoryInvoker, registration, transient, singleton, TransientRegistration, SingletonRegistration, resolver, StrategyResolver, Lazy, All, Optional, Parent, Factory, NewInstance, getDecoratorDependencies, lazy, all, optional, parent, factory, newInstance };
diff --git a/dist/native-modules/aurelia-dependency-injection.js b/dist/native-modules/aurelia-dependency-injection.js
index 9eefc41..0c7e04c 100644
--- a/dist/native-modules/aurelia-dependency-injection.js
+++ b/dist/native-modules/aurelia-dependency-injection.js
@@ -1,639 +1,639 @@
 import { metadata, protocol } from 'aurelia-metadata';
 import { AggregateError } from 'aurelia-pal';
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation. All rights reserved.
-Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-this file except in compliance with the License. You may obtain a copy of the
-License at http://www.apache.org/licenses/LICENSE-2.0
-
-THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-MERCHANTABLITY OR NON-INFRINGEMENT.
-
-See the Apache Version 2.0 License for specific language governing permissions
-and limitations under the License.
-***************************************************************************** */
-
-function __decorate(decorators, target, key, desc) {
-    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-    return c > 3 && r && Object.defineProperty(target, key, r), r;
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at http://www.apache.org/licenses/LICENSE-2.0
+
+THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+
+function __decorate(decorators, target, key, desc) {
+    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+    return c > 3 && r && Object.defineProperty(target, key, r), r;
+}
+
+function __metadata(metadataKey, metadataValue) {
+    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
 }
 
-function __metadata(metadataKey, metadataValue) {
-    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+function autoinject(potentialTarget) {
+    var deco = function (target) {
+        if (!target.hasOwnProperty('inject')) {
+            target.inject = (metadata.getOwn(metadata.paramTypes, target) ||
+                _emptyParameters).slice();
+            if (target.inject && target.inject.length > 0) {
+                if (target.inject[target.inject.length - 1] === Object) {
+                    target.inject.splice(-1, 1);
+                }
+            }
+        }
+    };
+    return potentialTarget ? deco(potentialTarget) : deco;
+}
+function inject() {
+    var rest = [];
+    for (var _i = 0; _i < arguments.length; _i++) {
+        rest[_i] = arguments[_i];
+    }
+    return function (target, _key, descriptor) {
+        if (typeof descriptor === 'number') {
+            autoinject(target);
+            if (rest.length === 1) {
+                target.inject[descriptor] = rest[0];
+            }
+            return;
+        }
+        if (descriptor) {
+            var fn = descriptor.value;
+            fn.inject = rest;
+        }
+        else {
+            target.inject = rest;
+        }
+    };
 }
 
-function autoinject(potentialTarget) {
-    var deco = function (target) {
-        if (!target.hasOwnProperty('inject')) {
-            target.inject = (metadata.getOwn(metadata.paramTypes, target) ||
-                _emptyParameters).slice();
-            if (target.inject && target.inject.length > 0) {
-                if (target.inject[target.inject.length - 1] === Object) {
-                    target.inject.splice(-1, 1);
-                }
-            }
-        }
-    };
-    return potentialTarget ? deco(potentialTarget) : deco;
-}
-function inject() {
-    var rest = [];
-    for (var _i = 0; _i < arguments.length; _i++) {
-        rest[_i] = arguments[_i];
-    }
-    return function (target, _key, descriptor) {
-        if (typeof descriptor === 'number') {
-            autoinject(target);
-            if (rest.length === 1) {
-                target.inject[descriptor] = rest[0];
-            }
-            return;
-        }
-        if (descriptor) {
-            var fn = descriptor.value;
-            fn.inject = rest;
-        }
-        else {
-            target.inject = rest;
-        }
-    };
+var resolver = protocol.create('aurelia:resolver', function (target) {
+    if (!(typeof target.get === 'function')) {
+        return 'Resolvers must implement: get(container: Container, key: any): any';
+    }
+    return true;
+});
+function isStrategy(actual, expected, state) {
+    return actual === expected;
+}
+var StrategyResolver = (function () {
+    function StrategyResolver(strategy, state) {
+        this.strategy = strategy;
+        this.state = state;
+    }
+    StrategyResolver.prototype.get = function (container, key) {
+        if (isStrategy(this.strategy, 0, this.state)) {
+            return this.state;
+        }
+        if (isStrategy(this.strategy, 1, this.state)) {
+            var singleton = container.invoke(this.state);
+            this.state = singleton;
+            this.strategy = 0;
+            return singleton;
+        }
+        if (isStrategy(this.strategy, 2, this.state)) {
+            return container.invoke(this.state);
+        }
+        if (isStrategy(this.strategy, 3, this.state)) {
+            return this.state(container, key, this);
+        }
+        if (isStrategy(this.strategy, 4, this.state)) {
+            return this.state[0].get(container, key);
+        }
+        if (isStrategy(this.strategy, 5, this.state)) {
+            return container.get(this.state);
+        }
+        throw new Error('Invalid strategy: ' + this.strategy);
+    };
+    StrategyResolver = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Number, Object])
+    ], StrategyResolver);
+    return StrategyResolver;
+}());
+var Lazy = (function () {
+    function Lazy(key) {
+        this._key = key;
+    }
+    Lazy_1 = Lazy;
+    Lazy.prototype.get = function (container) {
+        var _this = this;
+        return function () { return container.get(_this._key); };
+    };
+    Lazy.of = function (key) {
+        return new Lazy_1(key);
+    };
+    var Lazy_1;
+    Lazy = Lazy_1 = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Object])
+    ], Lazy);
+    return Lazy;
+}());
+var All = (function () {
+    function All(key) {
+        this._key = key;
+    }
+    All_1 = All;
+    All.prototype.get = function (container) {
+        return container.getAll(this._key);
+    };
+    All.of = function (key) {
+        return new All_1(key);
+    };
+    var All_1;
+    All = All_1 = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Object])
+    ], All);
+    return All;
+}());
+var Optional = (function () {
+    function Optional(key, checkParent) {
+        if (checkParent === void 0) { checkParent = true; }
+        this._key = key;
+        this._checkParent = checkParent;
+    }
+    Optional_1 = Optional;
+    Optional.prototype.get = function (container) {
+        if (container.hasResolver(this._key, this._checkParent)) {
+            return container.get(this._key);
+        }
+        return null;
+    };
+    Optional.of = function (key, checkParent) {
+        if (checkParent === void 0) { checkParent = true; }
+        return new Optional_1(key, checkParent);
+    };
+    var Optional_1;
+    Optional = Optional_1 = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Object, Boolean])
+    ], Optional);
+    return Optional;
+}());
+var Parent = (function () {
+    function Parent(key) {
+        this._key = key;
+    }
+    Parent_1 = Parent;
+    Parent.prototype.get = function (container) {
+        return container.parent ? container.parent.get(this._key) : null;
+    };
+    Parent.of = function (key) {
+        return new Parent_1(key);
+    };
+    var Parent_1;
+    Parent = Parent_1 = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Object])
+    ], Parent);
+    return Parent;
+}());
+var Factory = (function () {
+    function Factory(key) {
+        this._key = key;
+    }
+    Factory_1 = Factory;
+    Factory.prototype.get = function (container) {
+        var fn = this._key;
+        var resolver = container.getResolver(fn);
+        if (resolver && resolver.strategy === 3) {
+            fn = resolver.state;
+        }
+        return function () {
+            var rest = [];
+            for (var _i = 0; _i < arguments.length; _i++) {
+                rest[_i] = arguments[_i];
+            }
+            return container.invoke(fn, rest);
+        };
+    };
+    Factory.of = function (key) {
+        return new Factory_1(key);
+    };
+    var Factory_1;
+    Factory = Factory_1 = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Object])
+    ], Factory);
+    return Factory;
+}());
+var NewInstance = (function () {
+    function NewInstance(key) {
+        var dynamicDependencies = [];
+        for (var _i = 1; _i < arguments.length; _i++) {
+            dynamicDependencies[_i - 1] = arguments[_i];
+        }
+        this.key = key;
+        this.asKey = key;
+        this.dynamicDependencies = dynamicDependencies;
+    }
+    NewInstance_1 = NewInstance;
+    NewInstance.prototype.get = function (container) {
+        var dynamicDependencies = this.dynamicDependencies.length > 0
+            ? this.dynamicDependencies.map(function (dependency) {
+                return dependency['protocol:aurelia:resolver']
+                    ? dependency.get(container)
+                    : container.get(dependency);
+            })
+            : undefined;
+        var fn = this.key;
+        var resolver = container.getResolver(fn);
+        if (resolver && resolver.strategy === 3) {
+            fn = resolver.state;
+        }
+        var instance = container.invoke(fn, dynamicDependencies);
+        container.registerInstance(this.asKey, instance);
+        return instance;
+    };
+    NewInstance.prototype.as = function (key) {
+        this.asKey = key;
+        return this;
+    };
+    NewInstance.of = function (key) {
+        var dynamicDependencies = [];
+        for (var _i = 1; _i < arguments.length; _i++) {
+            dynamicDependencies[_i - 1] = arguments[_i];
+        }
+        return new (NewInstance_1.bind.apply(NewInstance_1, [void 0, key].concat(dynamicDependencies)))();
+    };
+    var NewInstance_1;
+    NewInstance = NewInstance_1 = __decorate([
+        resolver(),
+        __metadata("design:paramtypes", [Object, Object])
+    ], NewInstance);
+    return NewInstance;
+}());
+function getDecoratorDependencies(target) {
+    autoinject(target);
+    return target.inject;
+}
+function lazy(keyValue) {
+    return function (target, _key, index) {
+        var inject$$1 = getDecoratorDependencies(target);
+        inject$$1[index] = Lazy.of(keyValue);
+    };
+}
+function all(keyValue) {
+    return function (target, _key, index) {
+        var inject$$1 = getDecoratorDependencies(target);
+        inject$$1[index] = All.of(keyValue);
+    };
+}
+function optional(checkParentOrTarget) {
+    if (checkParentOrTarget === void 0) { checkParentOrTarget = true; }
+    var deco = function (checkParent) {
+        return function (target, _key, index) {
+            var inject$$1 = getDecoratorDependencies(target);
+            inject$$1[index] = Optional.of(inject$$1[index], checkParent);
+        };
+    };
+    if (typeof checkParentOrTarget === 'boolean') {
+        return deco(checkParentOrTarget);
+    }
+    return deco(true);
+}
+function parent(target, _key, index) {
+    var inject$$1 = getDecoratorDependencies(target);
+    inject$$1[index] = Parent.of(inject$$1[index]);
+}
+function factory(keyValue) {
+    return function (target, _key, index) {
+        var inject$$1 = getDecoratorDependencies(target);
+        inject$$1[index] = Factory.of(keyValue);
+    };
+}
+function newInstance(asKeyOrTarget) {
+    var dynamicDependencies = [];
+    for (var _i = 1; _i < arguments.length; _i++) {
+        dynamicDependencies[_i - 1] = arguments[_i];
+    }
+    var deco = function (asKey) {
+        return function (target, _key, index) {
+            var inject$$1 = getDecoratorDependencies(target);
+            inject$$1[index] = NewInstance.of.apply(NewInstance, [inject$$1[index]].concat(dynamicDependencies));
+            if (!!asKey) {
+                inject$$1[index].as(asKey);
+            }
+        };
+    };
+    if (arguments.length >= 1) {
+        return deco(asKeyOrTarget);
+    }
+    return deco();
 }
 
-var resolver = protocol.create('aurelia:resolver', function (target) {
-    if (!(typeof target.get === 'function')) {
-        return 'Resolvers must implement: get(container: Container, key: any): any';
-    }
-    return true;
-});
-function isStrategy(actual, expected, state) {
-    return actual === expected;
-}
-var StrategyResolver = (function () {
-    function StrategyResolver(strategy, state) {
-        this.strategy = strategy;
-        this.state = state;
-    }
-    StrategyResolver.prototype.get = function (container, key) {
-        if (isStrategy(this.strategy, 0, this.state)) {
-            return this.state;
-        }
-        if (isStrategy(this.strategy, 1, this.state)) {
-            var singleton = container.invoke(this.state);
-            this.state = singleton;
-            this.strategy = 0;
-            return singleton;
-        }
-        if (isStrategy(this.strategy, 2, this.state)) {
-            return container.invoke(this.state);
-        }
-        if (isStrategy(this.strategy, 3, this.state)) {
-            return this.state(container, key, this);
-        }
-        if (isStrategy(this.strategy, 4, this.state)) {
-            return this.state[0].get(container, key);
-        }
-        if (isStrategy(this.strategy, 5, this.state)) {
-            return container.get(this.state);
-        }
-        throw new Error('Invalid strategy: ' + this.strategy);
-    };
-    StrategyResolver = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Number, Object])
-    ], StrategyResolver);
-    return StrategyResolver;
-}());
-var Lazy = (function () {
-    function Lazy(key) {
-        this._key = key;
-    }
-    Lazy_1 = Lazy;
-    Lazy.prototype.get = function (container) {
-        var _this = this;
-        return function () { return container.get(_this._key); };
-    };
-    Lazy.of = function (key) {
-        return new Lazy_1(key);
-    };
-    var Lazy_1;
-    Lazy = Lazy_1 = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Object])
-    ], Lazy);
-    return Lazy;
-}());
-var All = (function () {
-    function All(key) {
-        this._key = key;
-    }
-    All_1 = All;
-    All.prototype.get = function (container) {
-        return container.getAll(this._key);
-    };
-    All.of = function (key) {
-        return new All_1(key);
-    };
-    var All_1;
-    All = All_1 = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Object])
-    ], All);
-    return All;
-}());
-var Optional = (function () {
-    function Optional(key, checkParent) {
-        if (checkParent === void 0) { checkParent = true; }
-        this._key = key;
-        this._checkParent = checkParent;
-    }
-    Optional_1 = Optional;
-    Optional.prototype.get = function (container) {
-        if (container.hasResolver(this._key, this._checkParent)) {
-            return container.get(this._key);
-        }
-        return null;
-    };
-    Optional.of = function (key, checkParent) {
-        if (checkParent === void 0) { checkParent = true; }
-        return new Optional_1(key, checkParent);
-    };
-    var Optional_1;
-    Optional = Optional_1 = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Object, Boolean])
-    ], Optional);
-    return Optional;
-}());
-var Parent = (function () {
-    function Parent(key) {
-        this._key = key;
-    }
-    Parent_1 = Parent;
-    Parent.prototype.get = function (container) {
-        return container.parent ? container.parent.get(this._key) : null;
-    };
-    Parent.of = function (key) {
-        return new Parent_1(key);
-    };
-    var Parent_1;
-    Parent = Parent_1 = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Object])
-    ], Parent);
-    return Parent;
-}());
-var Factory = (function () {
-    function Factory(key) {
-        this._key = key;
-    }
-    Factory_1 = Factory;
-    Factory.prototype.get = function (container) {
-        var fn = this._key;
-        var resolver = container.getResolver(fn);
-        if (resolver && resolver.strategy === 3) {
-            fn = resolver.state;
-        }
-        return function () {
-            var rest = [];
-            for (var _i = 0; _i < arguments.length; _i++) {
-                rest[_i] = arguments[_i];
-            }
-            return container.invoke(fn, rest);
-        };
-    };
-    Factory.of = function (key) {
-        return new Factory_1(key);
-    };
-    var Factory_1;
-    Factory = Factory_1 = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Object])
-    ], Factory);
-    return Factory;
-}());
-var NewInstance = (function () {
-    function NewInstance(key) {
-        var dynamicDependencies = [];
-        for (var _i = 1; _i < arguments.length; _i++) {
-            dynamicDependencies[_i - 1] = arguments[_i];
-        }
-        this.key = key;
-        this.asKey = key;
-        this.dynamicDependencies = dynamicDependencies;
-    }
-    NewInstance_1 = NewInstance;
-    NewInstance.prototype.get = function (container) {
-        var dynamicDependencies = this.dynamicDependencies.length > 0
-            ? this.dynamicDependencies.map(function (dependency) {
-                return dependency['protocol:aurelia:resolver']
-                    ? dependency.get(container)
-                    : container.get(dependency);
-            })
-            : undefined;
-        var fn = this.key;
-        var resolver = container.getResolver(fn);
-        if (resolver && resolver.strategy === 3) {
-            fn = resolver.state;
-        }
-        var instance = container.invoke(fn, dynamicDependencies);
-        container.registerInstance(this.asKey, instance);
-        return instance;
-    };
-    NewInstance.prototype.as = function (key) {
-        this.asKey = key;
-        return this;
-    };
-    NewInstance.of = function (key) {
-        var dynamicDependencies = [];
-        for (var _i = 1; _i < arguments.length; _i++) {
-            dynamicDependencies[_i - 1] = arguments[_i];
-        }
-        return new (NewInstance_1.bind.apply(NewInstance_1, [void 0, key].concat(dynamicDependencies)))();
-    };
-    var NewInstance_1;
-    NewInstance = NewInstance_1 = __decorate([
-        resolver(),
-        __metadata("design:paramtypes", [Object, Object])
-    ], NewInstance);
-    return NewInstance;
-}());
-function getDecoratorDependencies(target) {
-    autoinject(target);
-    return target.inject;
-}
-function lazy(keyValue) {
-    return function (target, _key, index) {
-        var inject$$1 = getDecoratorDependencies(target);
-        inject$$1[index] = Lazy.of(keyValue);
-    };
-}
-function all(keyValue) {
-    return function (target, _key, index) {
-        var inject$$1 = getDecoratorDependencies(target);
-        inject$$1[index] = All.of(keyValue);
-    };
-}
-function optional(checkParentOrTarget) {
-    if (checkParentOrTarget === void 0) { checkParentOrTarget = true; }
-    var deco = function (checkParent) {
-        return function (target, _key, index) {
-            var inject$$1 = getDecoratorDependencies(target);
-            inject$$1[index] = Optional.of(inject$$1[index], checkParent);
-        };
-    };
-    if (typeof checkParentOrTarget === 'boolean') {
-        return deco(checkParentOrTarget);
-    }
-    return deco(true);
-}
-function parent(target, _key, index) {
-    var inject$$1 = getDecoratorDependencies(target);
-    inject$$1[index] = Parent.of(inject$$1[index]);
-}
-function factory(keyValue) {
-    return function (target, _key, index) {
-        var inject$$1 = getDecoratorDependencies(target);
-        inject$$1[index] = Factory.of(keyValue);
-    };
-}
-function newInstance(asKeyOrTarget) {
-    var dynamicDependencies = [];
-    for (var _i = 1; _i < arguments.length; _i++) {
-        dynamicDependencies[_i - 1] = arguments[_i];
-    }
-    var deco = function (asKey) {
-        return function (target, _key, index) {
-            var inject$$1 = getDecoratorDependencies(target);
-            inject$$1[index] = NewInstance.of.apply(NewInstance, [inject$$1[index]].concat(dynamicDependencies));
-            if (!!asKey) {
-                inject$$1[index].as(asKey);
-            }
-        };
-    };
-    if (arguments.length >= 1) {
-        return deco(asKeyOrTarget);
-    }
-    return deco();
-}
-
-function validateKey(key) {
-    if (key === null || key === undefined) {
-        throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-    }
-}
-var _emptyParameters = Object.freeze([]);
-metadata.registration = 'aurelia:registration';
-metadata.invoker = 'aurelia:invoker';
-var resolverDecorates = resolver.decorates;
-var InvocationHandler = (function () {
-    function InvocationHandler(fn, invoker, dependencies) {
-        this.fn = fn;
-        this.invoker = invoker;
-        this.dependencies = dependencies;
-    }
-    InvocationHandler.prototype.invoke = function (container, dynamicDependencies) {
-        return dynamicDependencies !== undefined
-            ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
-            : this.invoker.invoke(container, this.fn, this.dependencies);
-    };
-    return InvocationHandler;
-}());
-function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
-    var i = staticDependencies.length;
-    var args = new Array(i);
-    var lookup;
-    while (i--) {
-        lookup = staticDependencies[i];
-        if (lookup === null || lookup === undefined) {
-            throw new Error('Constructor Parameter with index ' +
-                i +
-                ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-        }
-        else {
-            args[i] = container.get(lookup);
-        }
-    }
-    if (dynamicDependencies !== undefined) {
-        args = args.concat(dynamicDependencies);
-    }
-    return Reflect.construct(fn, args);
-}
-var classInvoker = {
-    invoke: function (container, Type, deps) {
-        var instances = deps.map(function (dep) { return container.get(dep); });
-        return Reflect.construct(Type, instances);
-    },
-    invokeWithDynamicDependencies: invokeWithDynamicDependencies
-};
-function getDependencies(f) {
-    if (!f.hasOwnProperty('inject')) {
-        return [];
-    }
-    if (typeof f.inject === 'function') {
-        return f.inject();
-    }
-    return f.inject;
-}
-var Container = (function () {
-    function Container(configuration) {
-        if (configuration === undefined) {
-            configuration = {};
-        }
-        this._configuration = configuration;
-        this._onHandlerCreated = configuration.onHandlerCreated;
-        this._handlers =
-            configuration.handlers || (configuration.handlers = new Map());
-        this._resolvers = new Map();
-        this.root = this;
-        this.parent = null;
-    }
-    Container.prototype.makeGlobal = function () {
-        Container.instance = this;
-        return this;
-    };
-    Container.prototype.setHandlerCreatedCallback = function (onHandlerCreated) {
-        this._onHandlerCreated = onHandlerCreated;
-        this._configuration.onHandlerCreated = onHandlerCreated;
-    };
-    Container.prototype.registerInstance = function (key, instance) {
-        return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
-    };
-    Container.prototype.registerSingleton = function (key, fn) {
-        return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
-    };
-    Container.prototype.registerTransient = function (key, fn) {
-        return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
-    };
-    Container.prototype.registerHandler = function (key, handler) {
-        return this.registerResolver(key, new StrategyResolver(3, handler));
-    };
-    Container.prototype.registerAlias = function (originalKey, aliasKey) {
-        return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
-    };
-    Container.prototype.registerResolver = function (key, resolver$$1) {
-        validateKey(key);
-        var allResolvers = this._resolvers;
-        var result = allResolvers.get(key);
-        if (result === undefined) {
-            allResolvers.set(key, resolver$$1);
-        }
-        else if (result.strategy === 4) {
-            result.state.push(resolver$$1);
-        }
-        else {
-            allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
-        }
-        return resolver$$1;
-    };
-    Container.prototype.autoRegister = function (key, fn) {
-        fn = fn === undefined ? key : fn;
-        if (typeof fn === 'function') {
-            var registration = metadata.get(metadata.registration, fn);
-            if (registration === undefined) {
-                return this.registerResolver(key, new StrategyResolver(1, fn));
-            }
-            return registration.registerResolver(this, key, fn);
-        }
-        return this.registerResolver(key, new StrategyResolver(0, fn));
-    };
-    Container.prototype.autoRegisterAll = function (fns) {
-        var i = fns.length;
-        while (i--) {
-            this.autoRegister(fns[i]);
-        }
-    };
-    Container.prototype.unregister = function (key) {
-        this._resolvers.delete(key);
-    };
-    Container.prototype.hasResolver = function (key, checkParent) {
-        if (checkParent === void 0) { checkParent = false; }
-        validateKey(key);
-        return (this._resolvers.has(key) ||
-            (checkParent &&
-                this.parent !== null &&
-                this.parent.hasResolver(key, checkParent)));
-    };
-    Container.prototype.getResolver = function (key) {
-        return this._resolvers.get(key);
-    };
-    Container.prototype.get = function (key) {
-        validateKey(key);
-        if (key === Container) {
-            return this;
-        }
-        if (resolverDecorates(key)) {
-            return key.get(this, key);
-        }
-        var resolver$$1 = this._resolvers.get(key);
-        if (resolver$$1 === undefined) {
-            if (this.parent === null) {
-                return this.autoRegister(key).get(this, key);
-            }
-            var registration = metadata.get(metadata.registration, key);
-            if (registration === undefined) {
-                return this.parent._get(key);
-            }
-            return registration.registerResolver(this, key, key).get(this, key);
-        }
-        return resolver$$1.get(this, key);
-    };
-    Container.prototype._get = function (key) {
-        var resolver$$1 = this._resolvers.get(key);
-        if (resolver$$1 === undefined) {
-            if (this.parent === null) {
-                return this.autoRegister(key).get(this, key);
-            }
-            return this.parent._get(key);
-        }
-        return resolver$$1.get(this, key);
-    };
-    Container.prototype.getAll = function (key) {
-        validateKey(key);
-        var resolver$$1 = this._resolvers.get(key);
-        if (resolver$$1 === undefined) {
-            if (this.parent === null) {
-                return _emptyParameters;
-            }
-            return this.parent.getAll(key);
-        }
-        if (resolver$$1.strategy === 4) {
-            var state = resolver$$1.state;
-            var i = state.length;
-            var results = new Array(i);
-            while (i--) {
-                results[i] = state[i].get(this, key);
-            }
-            return results;
-        }
-        return [resolver$$1.get(this, key)];
-    };
-    Container.prototype.createChild = function () {
-        var child = new Container(this._configuration);
-        child.root = this.root;
-        child.parent = this;
-        return child;
-    };
-    Container.prototype.invoke = function (fn, dynamicDependencies) {
-        try {
-            var handler = this._handlers.get(fn);
-            if (handler === undefined) {
-                handler = this._createInvocationHandler(fn);
-                this._handlers.set(fn, handler);
-            }
-            return handler.invoke(this, dynamicDependencies);
-        }
-        catch (e) {
-            throw new AggregateError("Error invoking " + fn.name + ". Check the inner error for details.", e, true);
-        }
-    };
-    Container.prototype._createInvocationHandler = function (fn) {
-        var dependencies;
-        if (fn.inject === undefined) {
-            dependencies =
-                metadata.getOwn(metadata.paramTypes, fn) || _emptyParameters;
-        }
-        else {
-            dependencies = [];
-            var ctor = fn;
-            while (typeof ctor === 'function') {
-                dependencies.push.apply(dependencies, getDependencies(ctor));
-                ctor = Object.getPrototypeOf(ctor);
-            }
-        }
-        var invoker = metadata.getOwn(metadata.invoker, fn) || classInvoker;
-        var handler = new InvocationHandler(fn, invoker, dependencies);
-        return this._onHandlerCreated !== undefined
-            ? this._onHandlerCreated(handler)
-            : handler;
-    };
-    return Container;
+function validateKey(key) {
+    if (key === null || key === undefined) {
+        throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+    }
+}
+var _emptyParameters = Object.freeze([]);
+metadata.registration = 'aurelia:registration';
+metadata.invoker = 'aurelia:invoker';
+var resolverDecorates = resolver.decorates;
+var InvocationHandler = (function () {
+    function InvocationHandler(fn, invoker, dependencies) {
+        this.fn = fn;
+        this.invoker = invoker;
+        this.dependencies = dependencies;
+    }
+    InvocationHandler.prototype.invoke = function (container, dynamicDependencies) {
+        return dynamicDependencies !== undefined
+            ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
+            : this.invoker.invoke(container, this.fn, this.dependencies);
+    };
+    return InvocationHandler;
+}());
+function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
+    var i = staticDependencies.length;
+    var args = new Array(i);
+    var lookup;
+    while (i--) {
+        lookup = staticDependencies[i];
+        if (lookup === null || lookup === undefined) {
+            throw new Error('Constructor Parameter with index ' +
+                i +
+                ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+        }
+        else {
+            args[i] = container.get(lookup);
+        }
+    }
+    if (dynamicDependencies !== undefined) {
+        args = args.concat(dynamicDependencies);
+    }
+    return Reflect.construct(fn, args);
+}
+var classInvoker = {
+    invoke: function (container, Type, deps) {
+        var instances = deps.map(function (dep) { return container.get(dep); });
+        return Reflect.construct(Type, instances);
+    },
+    invokeWithDynamicDependencies: invokeWithDynamicDependencies
+};
+function getDependencies(f) {
+    if (!f.hasOwnProperty('inject')) {
+        return [];
+    }
+    if (typeof f.inject === 'function') {
+        return f.inject();
+    }
+    return f.inject;
+}
+var Container = (function () {
+    function Container(configuration) {
+        if (configuration === undefined) {
+            configuration = {};
+        }
+        this._configuration = configuration;
+        this._onHandlerCreated = configuration.onHandlerCreated;
+        this._handlers =
+            configuration.handlers || (configuration.handlers = new Map());
+        this._resolvers = new Map();
+        this.root = this;
+        this.parent = null;
+    }
+    Container.prototype.makeGlobal = function () {
+        Container.instance = this;
+        return this;
+    };
+    Container.prototype.setHandlerCreatedCallback = function (onHandlerCreated) {
+        this._onHandlerCreated = onHandlerCreated;
+        this._configuration.onHandlerCreated = onHandlerCreated;
+    };
+    Container.prototype.registerInstance = function (key, instance) {
+        return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
+    };
+    Container.prototype.registerSingleton = function (key, fn) {
+        return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
+    };
+    Container.prototype.registerTransient = function (key, fn) {
+        return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
+    };
+    Container.prototype.registerHandler = function (key, handler) {
+        return this.registerResolver(key, new StrategyResolver(3, handler));
+    };
+    Container.prototype.registerAlias = function (originalKey, aliasKey) {
+        return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
+    };
+    Container.prototype.registerResolver = function (key, resolver$$1) {
+        validateKey(key);
+        var allResolvers = this._resolvers;
+        var result = allResolvers.get(key);
+        if (result === undefined) {
+            allResolvers.set(key, resolver$$1);
+        }
+        else if (result.strategy === 4) {
+            result.state.push(resolver$$1);
+        }
+        else {
+            allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
+        }
+        return resolver$$1;
+    };
+    Container.prototype.autoRegister = function (key, fn) {
+        fn = fn === undefined ? key : fn;
+        if (typeof fn === 'function') {
+            var registration = metadata.get(metadata.registration, fn);
+            if (registration === undefined) {
+                return this.registerResolver(key, new StrategyResolver(1, fn));
+            }
+            return registration.registerResolver(this, key, fn);
+        }
+        return this.registerResolver(key, new StrategyResolver(0, fn));
+    };
+    Container.prototype.autoRegisterAll = function (fns) {
+        var i = fns.length;
+        while (i--) {
+            this.autoRegister(fns[i]);
+        }
+    };
+    Container.prototype.unregister = function (key) {
+        this._resolvers.delete(key);
+    };
+    Container.prototype.hasResolver = function (key, checkParent) {
+        if (checkParent === void 0) { checkParent = false; }
+        validateKey(key);
+        return (this._resolvers.has(key) ||
+            (checkParent &&
+                this.parent !== null &&
+                this.parent.hasResolver(key, checkParent)));
+    };
+    Container.prototype.getResolver = function (key) {
+        return this._resolvers.get(key);
+    };
+    Container.prototype.get = function (key) {
+        validateKey(key);
+        if (key === Container) {
+            return this;
+        }
+        if (resolverDecorates(key)) {
+            return key.get(this, key);
+        }
+        var resolver$$1 = this._resolvers.get(key);
+        if (resolver$$1 === undefined) {
+            if (this.parent === null) {
+                return this.autoRegister(key).get(this, key);
+            }
+            var registration = metadata.get(metadata.registration, key);
+            if (registration === undefined) {
+                return this.parent._get(key);
+            }
+            return registration.registerResolver(this, key, key).get(this, key);
+        }
+        return resolver$$1.get(this, key);
+    };
+    Container.prototype._get = function (key) {
+        var resolver$$1 = this._resolvers.get(key);
+        if (resolver$$1 === undefined) {
+            if (this.parent === null) {
+                return this.autoRegister(key).get(this, key);
+            }
+            return this.parent._get(key);
+        }
+        return resolver$$1.get(this, key);
+    };
+    Container.prototype.getAll = function (key) {
+        validateKey(key);
+        var resolver$$1 = this._resolvers.get(key);
+        if (resolver$$1 === undefined) {
+            if (this.parent === null) {
+                return _emptyParameters;
+            }
+            return this.parent.getAll(key);
+        }
+        if (resolver$$1.strategy === 4) {
+            var state = resolver$$1.state;
+            var i = state.length;
+            var results = new Array(i);
+            while (i--) {
+                results[i] = state[i].get(this, key);
+            }
+            return results;
+        }
+        return [resolver$$1.get(this, key)];
+    };
+    Container.prototype.createChild = function () {
+        var child = new Container(this._configuration);
+        child.root = this.root;
+        child.parent = this;
+        return child;
+    };
+    Container.prototype.invoke = function (fn, dynamicDependencies) {
+        try {
+            var handler = this._handlers.get(fn);
+            if (handler === undefined) {
+                handler = this._createInvocationHandler(fn);
+                this._handlers.set(fn, handler);
+            }
+            return handler.invoke(this, dynamicDependencies);
+        }
+        catch (e) {
+            throw new AggregateError("Error invoking " + fn.name + ". Check the inner error for details.", e, true);
+        }
+    };
+    Container.prototype._createInvocationHandler = function (fn) {
+        var dependencies;
+        if (fn.inject === undefined) {
+            dependencies =
+                metadata.getOwn(metadata.paramTypes, fn) || _emptyParameters;
+        }
+        else {
+            dependencies = [];
+            var ctor = fn;
+            while (typeof ctor === 'function') {
+                dependencies.push.apply(dependencies, getDependencies(ctor));
+                ctor = Object.getPrototypeOf(ctor);
+            }
+        }
+        var invoker = metadata.getOwn(metadata.invoker, fn) || classInvoker;
+        var handler = new InvocationHandler(fn, invoker, dependencies);
+        return this._onHandlerCreated !== undefined
+            ? this._onHandlerCreated(handler)
+            : handler;
+    };
+    return Container;
 }());
 
-function invoker(value) {
-    return function (target) {
-        metadata.define(metadata.invoker, value, target);
-    };
-}
-function invokeAsFactory(potentialTarget) {
-    var deco = function (target) {
-        metadata.define(metadata.invoker, FactoryInvoker.instance, target);
-    };
-    return potentialTarget ? deco(potentialTarget) : deco;
-}
-var FactoryInvoker = (function () {
-    function FactoryInvoker() {
-    }
-    FactoryInvoker.prototype.invoke = function (container, fn, dependencies) {
-        var i = dependencies.length;
-        var args = new Array(i);
-        while (i--) {
-            args[i] = container.get(dependencies[i]);
-        }
-        return fn.apply(undefined, args);
-    };
-    FactoryInvoker.prototype.invokeWithDynamicDependencies = function (container, fn, staticDependencies, dynamicDependencies) {
-        var i = staticDependencies.length;
-        var args = new Array(i);
-        while (i--) {
-            args[i] = container.get(staticDependencies[i]);
-        }
-        if (dynamicDependencies !== undefined) {
-            args = args.concat(dynamicDependencies);
-        }
-        return fn.apply(undefined, args);
-    };
-    return FactoryInvoker;
-}());
+function invoker(value) {
+    return function (target) {
+        metadata.define(metadata.invoker, value, target);
+    };
+}
+function invokeAsFactory(potentialTarget) {
+    var deco = function (target) {
+        metadata.define(metadata.invoker, FactoryInvoker.instance, target);
+    };
+    return potentialTarget ? deco(potentialTarget) : deco;
+}
+var FactoryInvoker = (function () {
+    function FactoryInvoker() {
+    }
+    FactoryInvoker.prototype.invoke = function (container, fn, dependencies) {
+        var i = dependencies.length;
+        var args = new Array(i);
+        while (i--) {
+            args[i] = container.get(dependencies[i]);
+        }
+        return fn.apply(undefined, args);
+    };
+    FactoryInvoker.prototype.invokeWithDynamicDependencies = function (container, fn, staticDependencies, dynamicDependencies) {
+        var i = staticDependencies.length;
+        var args = new Array(i);
+        while (i--) {
+            args[i] = container.get(staticDependencies[i]);
+        }
+        if (dynamicDependencies !== undefined) {
+            args = args.concat(dynamicDependencies);
+        }
+        return fn.apply(undefined, args);
+    };
+    return FactoryInvoker;
+}());
 FactoryInvoker.instance = new FactoryInvoker();
 
-function registration(value) {
-    return function (target) {
-        metadata.define(metadata.registration, value, target);
-    };
-}
-function transient(key) {
-    return registration(new TransientRegistration(key));
-}
-function singleton(keyOrRegisterInChild, registerInChild) {
-    if (registerInChild === void 0) { registerInChild = false; }
-    return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
-}
-var TransientRegistration = (function () {
-    function TransientRegistration(key) {
-        this._key = key;
-    }
-    TransientRegistration.prototype.registerResolver = function (container, key, fn) {
-        var existingResolver = container.getResolver(this._key || key);
-        return existingResolver === undefined
-            ? container.registerTransient((this._key || key), fn)
-            : existingResolver;
-    };
-    return TransientRegistration;
-}());
-var SingletonRegistration = (function () {
-    function SingletonRegistration(keyOrRegisterInChild, registerInChild) {
-        if (registerInChild === void 0) { registerInChild = false; }
-        if (typeof keyOrRegisterInChild === 'boolean') {
-            this._registerInChild = keyOrRegisterInChild;
-        }
-        else {
-            this._key = keyOrRegisterInChild;
-            this._registerInChild = registerInChild;
-        }
-    }
-    SingletonRegistration.prototype.registerResolver = function (container, key, fn) {
-        var targetContainer = this._registerInChild ? container : container.root;
-        var existingResolver = targetContainer.getResolver(this._key || key);
-        return existingResolver === undefined
-            ? targetContainer.registerSingleton(this._key || key, fn)
-            : existingResolver;
-    };
-    return SingletonRegistration;
+function registration(value) {
+    return function (target) {
+        metadata.define(metadata.registration, value, target);
+    };
+}
+function transient(key) {
+    return registration(new TransientRegistration(key));
+}
+function singleton(keyOrRegisterInChild, registerInChild) {
+    if (registerInChild === void 0) { registerInChild = false; }
+    return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
+}
+var TransientRegistration = (function () {
+    function TransientRegistration(key) {
+        this._key = key;
+    }
+    TransientRegistration.prototype.registerResolver = function (container, key, fn) {
+        var existingResolver = container.getResolver(this._key || key);
+        return existingResolver === undefined
+            ? container.registerTransient((this._key || key), fn)
+            : existingResolver;
+    };
+    return TransientRegistration;
+}());
+var SingletonRegistration = (function () {
+    function SingletonRegistration(keyOrRegisterInChild, registerInChild) {
+        if (registerInChild === void 0) { registerInChild = false; }
+        if (typeof keyOrRegisterInChild === 'boolean') {
+            this._registerInChild = keyOrRegisterInChild;
+        }
+        else {
+            this._key = keyOrRegisterInChild;
+            this._registerInChild = registerInChild;
+        }
+    }
+    SingletonRegistration.prototype.registerResolver = function (container, key, fn) {
+        var targetContainer = this._registerInChild ? container : container.root;
+        var existingResolver = targetContainer.getResolver(this._key || key);
+        return existingResolver === undefined
+            ? targetContainer.registerSingleton(this._key || key, fn)
+            : existingResolver;
+    };
+    return SingletonRegistration;
 }());
 
 export { _emptyParameters, InvocationHandler, Container, autoinject, inject, invoker, invokeAsFactory, FactoryInvoker, registration, transient, singleton, TransientRegistration, SingletonRegistration, resolver, StrategyResolver, Lazy, All, Optional, Parent, Factory, NewInstance, getDecoratorDependencies, lazy, all, optional, parent, factory, newInstance };
diff --git a/dist/system/aurelia-dependency-injection.js b/dist/system/aurelia-dependency-injection.js
index 74d4584..fcdb73a 100644
--- a/dist/system/aurelia-dependency-injection.js
+++ b/dist/system/aurelia-dependency-injection.js
@@ -27,639 +27,639 @@ System.register(['aurelia-metadata', 'aurelia-pal'], function (exports, module)
         newInstance: newInstance
       });
 
-      /*! *****************************************************************************
-      Copyright (c) Microsoft Corporation. All rights reserved.
-      Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-      this file except in compliance with the License. You may obtain a copy of the
-      License at http://www.apache.org/licenses/LICENSE-2.0
-
-      THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-      KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-      WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-      MERCHANTABLITY OR NON-INFRINGEMENT.
-
-      See the Apache Version 2.0 License for specific language governing permissions
-      and limitations under the License.
-      ***************************************************************************** */
-
-      function __decorate(decorators, target, key, desc) {
-          var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-          if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-          else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-          return c > 3 && r && Object.defineProperty(target, key, r), r;
+      /*! *****************************************************************************
+      Copyright (c) Microsoft Corporation. All rights reserved.
+      Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+      this file except in compliance with the License. You may obtain a copy of the
+      License at http://www.apache.org/licenses/LICENSE-2.0
+
+      THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+      KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+      WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+      MERCHANTABLITY OR NON-INFRINGEMENT.
+
+      See the Apache Version 2.0 License for specific language governing permissions
+      and limitations under the License.
+      ***************************************************************************** */
+
+      function __decorate(decorators, target, key, desc) {
+          var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+          if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+          else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+          return c > 3 && r && Object.defineProperty(target, key, r), r;
+      }
+
+      function __metadata(metadataKey, metadataValue) {
+          if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
       }
 
-      function __metadata(metadataKey, metadataValue) {
-          if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+      function autoinject(potentialTarget) {
+          var deco = function (target) {
+              if (!target.hasOwnProperty('inject')) {
+                  target.inject = (metadata.getOwn(metadata.paramTypes, target) ||
+                      _emptyParameters).slice();
+                  if (target.inject && target.inject.length > 0) {
+                      if (target.inject[target.inject.length - 1] === Object) {
+                          target.inject.splice(-1, 1);
+                      }
+                  }
+              }
+          };
+          return potentialTarget ? deco(potentialTarget) : deco;
+      }
+      function inject() {
+          var rest = [];
+          for (var _i = 0; _i < arguments.length; _i++) {
+              rest[_i] = arguments[_i];
+          }
+          return function (target, _key, descriptor) {
+              if (typeof descriptor === 'number') {
+                  autoinject(target);
+                  if (rest.length === 1) {
+                      target.inject[descriptor] = rest[0];
+                  }
+                  return;
+              }
+              if (descriptor) {
+                  var fn = descriptor.value;
+                  fn.inject = rest;
+              }
+              else {
+                  target.inject = rest;
+              }
+          };
       }
 
-      function autoinject(potentialTarget) {
-          var deco = function (target) {
-              if (!target.hasOwnProperty('inject')) {
-                  target.inject = (metadata.getOwn(metadata.paramTypes, target) ||
-                      _emptyParameters).slice();
-                  if (target.inject && target.inject.length > 0) {
-                      if (target.inject[target.inject.length - 1] === Object) {
-                          target.inject.splice(-1, 1);
-                      }
-                  }
-              }
-          };
-          return potentialTarget ? deco(potentialTarget) : deco;
-      }
-      function inject() {
-          var rest = [];
-          for (var _i = 0; _i < arguments.length; _i++) {
-              rest[_i] = arguments[_i];
-          }
-          return function (target, _key, descriptor) {
-              if (typeof descriptor === 'number') {
-                  autoinject(target);
-                  if (rest.length === 1) {
-                      target.inject[descriptor] = rest[0];
-                  }
-                  return;
-              }
-              if (descriptor) {
-                  var fn = descriptor.value;
-                  fn.inject = rest;
-              }
-              else {
-                  target.inject = rest;
-              }
-          };
+      var resolver = exports('resolver', protocol.create('aurelia:resolver', function (target) {
+          if (!(typeof target.get === 'function')) {
+              return 'Resolvers must implement: get(container: Container, key: any): any';
+          }
+          return true;
+      }));
+      function isStrategy(actual, expected, state) {
+          return actual === expected;
+      }
+      var StrategyResolver = exports('StrategyResolver', (function () {
+          function StrategyResolver(strategy, state) {
+              this.strategy = strategy;
+              this.state = state;
+          }
+          StrategyResolver.prototype.get = function (container, key) {
+              if (isStrategy(this.strategy, 0, this.state)) {
+                  return this.state;
+              }
+              if (isStrategy(this.strategy, 1, this.state)) {
+                  var singleton = container.invoke(this.state);
+                  this.state = singleton;
+                  this.strategy = 0;
+                  return singleton;
+              }
+              if (isStrategy(this.strategy, 2, this.state)) {
+                  return container.invoke(this.state);
+              }
+              if (isStrategy(this.strategy, 3, this.state)) {
+                  return this.state(container, key, this);
+              }
+              if (isStrategy(this.strategy, 4, this.state)) {
+                  return this.state[0].get(container, key);
+              }
+              if (isStrategy(this.strategy, 5, this.state)) {
+                  return container.get(this.state);
+              }
+              throw new Error('Invalid strategy: ' + this.strategy);
+          };
+          StrategyResolver = __decorate([
+              resolver(),
+              __metadata("design:paramtypes", [Number, Object])
+          ], StrategyResolver);
+          return StrategyResolver;
+      }()));
+      var Lazy = exports('Lazy', (function () {
+          function Lazy(key) {
+              this._key = key;
+          }
+          Lazy_1 = Lazy;
+          Lazy.prototype.get = function (container) {
+              var _this = this;
+              return function () { return container.get(_this._key); };
+          };
+          Lazy.of = function (key) {
+              return new Lazy_1(key);
+          };
+          var Lazy_1;
+          Lazy = Lazy_1 = __decorate([
+              resolver(),
+              __metadata("design:paramtypes", [Object])
+          ], Lazy);
+          return Lazy;
+      }()));
+      var All = exports('All', (function () {
+          function All(key) {
+              this._key = key;
+          }
+          All_1 = All;
+          All.prototype.get = function (container) {
+              return container.getAll(this._key);
+          };
+          All.of = function (key) {
+              return new All_1(key);
+          };
+          var All_1;
+          All = All_1 = __decorate([
+              resolver(),
+              __metadata("design:paramtypes", [Object])
+          ], All);
+          return All;
+      }()));
+      var Optional = exports('Optional', (function () {
+          function Optional(key, checkParent) {
+              if (checkParent === void 0) { checkParent = true; }
+              this._key = key;
+              this._checkParent = checkParent;
+          }
+          Optional_1 = Optional;
+          Optional.prototype.get = function (container) {
+              if (container.hasResolver(this._key, this._checkParent)) {
+                  return container.get(this._key);
+              }
+              return null;
+          };
+          Optional.of = function (key, checkParent) {
+              if (checkParent === void 0) { checkParent = true; }
+              return new Optional_1(key, checkParent);
+          };
+          var Optional_1;
+          Optional = Optional_1 = __decorate([
+              resolver(),
+              __metadata("design:paramtypes", [Object, Boolean])
+          ], Optional);
+          return Optional;
+      }()));
+      var Parent = exports('Parent', (function () {
+          function Parent(key) {
+              this._key = key;
+          }
+          Parent_1 = Parent;
+          Parent.prototype.get = function (container) {
+              return container.parent ? container.parent.get(this._key) : null;
+          };
+          Parent.of = function (key) {
+              return new Parent_1(key);
+          };
+          var Parent_1;
+          Parent = Parent_1 = __decorate([
+              resolver(),
+              __metadata("design:paramtypes", [Object])
+          ], Parent);
+          return Parent;
+      }()));
+      var Factory = exports('Factory', (function () {
+          function Factory(key) {
+              this._key = key;
+          }
+          Factory_1 = Factory;
+          Factory.prototype.get = function (container) {
+              var fn = this._key;
+              var resolver = container.getResolver(fn);
+              if (resolver && resolver.strategy === 3) {
+                  fn = resolver.state;
+              }
+              return function () {
+                  var rest = [];
+                  for (var _i = 0; _i < arguments.length; _i++) {
+                      rest[_i] = arguments[_i];
+                  }
+                  return container.invoke(fn, rest);
+              };
+          };
+          Factory.of = function (key) {
+              return new Factory_1(key);
+          };
+          var Factory_1;
+          Factory = Factory_1 = __decorate([
+              resolver(),
+              __metadata("design:paramtypes", [Object])
+          ], Factory);
+          return Factory;
+      }()));
+      var NewInstance = exports('NewInstance', (function () {
+          function NewInstance(key) {
+              var dynamicDependencies = [];
+              for (var _i = 1; _i < arguments.length; _i++) {
+                  dynamicDependencies[_i - 1] = arguments[_i];
+              }
+              this.key = key;
+              this.asKey = key;
+              this.dynamicDependencies = dynamicDependencies;
+          }
+          NewInstance_1 = NewInstance;
+          NewInstance.prototype.get = function (container) {
+              var dynamicDependencies = this.dynamicDependencies.length > 0
+                  ? this.dynamicDependencies.map(function (dependency) {
+                      return dependency['protocol:aurelia:resolver']
+                          ? dependency.get(container)
+                          : container.get(dependency);
+                  })
+                  : undefined;
+              var fn = this.key;
+              var resolver = container.getResolver(fn);
+              if (resolver && resolver.strategy === 3) {
+                  fn = resolver.state;
+              }
+              var instance = container.invoke(fn, dynamicDependencies);
+              container.registerInstance(this.asKey, instance);
+              return instance;
+          };
+          NewInstance.prototype.as = function (key) {
+              this.asKey = key;
+              return this;
+          };
+          NewInstance.of = function (key) {
+              var dynamicDependencies = [];
+              for (var _i = 1; _i < arguments.length; _i++) {
+                  dynamicDependencies[_i - 1] = arguments[_i];
+              }
+              return new (NewInstance_1.bind.apply(NewInstance_1, [void 0, key].concat(dynamicDependencies)))();
+          };
+          var NewInstance_1;
+          NewInstance = NewInstance_1 = __decorate([
+              resolver(),
+              __metadata("design:paramtypes", [Object, Object])
+          ], NewInstance);
+          return NewInstance;
+      }()));
+      function getDecoratorDependencies(target) {
+          autoinject(target);
+          return target.inject;
+      }
+      function lazy(keyValue) {
+          return function (target, _key, index) {
+              var inject$$1 = getDecoratorDependencies(target);
+              inject$$1[index] = Lazy.of(keyValue);
+          };
+      }
+      function all(keyValue) {
+          return function (target, _key, index) {
+              var inject$$1 = getDecoratorDependencies(target);
+              inject$$1[index] = All.of(keyValue);
+          };
+      }
+      function optional(checkParentOrTarget) {
+          if (checkParentOrTarget === void 0) { checkParentOrTarget = true; }
+          var deco = function (checkParent) {
+              return function (target, _key, index) {
+                  var inject$$1 = getDecoratorDependencies(target);
+                  inject$$1[index] = Optional.of(inject$$1[index], checkParent);
+              };
+          };
+          if (typeof checkParentOrTarget === 'boolean') {
+              return deco(checkParentOrTarget);
+          }
+          return deco(true);
+      }
+      function parent(target, _key, index) {
+          var inject$$1 = getDecoratorDependencies(target);
+          inject$$1[index] = Parent.of(inject$$1[index]);
+      }
+      function factory(keyValue) {
+          return function (target, _key, index) {
+              var inject$$1 = getDecoratorDependencies(target);
+              inject$$1[index] = Factory.of(keyValue);
+          };
+      }
+      function newInstance(asKeyOrTarget) {
+          var dynamicDependencies = [];
+          for (var _i = 1; _i < arguments.length; _i++) {
+              dynamicDependencies[_i - 1] = arguments[_i];
+          }
+          var deco = function (asKey) {
+              return function (target, _key, index) {
+                  var inject$$1 = getDecoratorDependencies(target);
+                  inject$$1[index] = NewInstance.of.apply(NewInstance, [inject$$1[index]].concat(dynamicDependencies));
+                  if (!!asKey) {
+                      inject$$1[index].as(asKey);
+                  }
+              };
+          };
+          if (arguments.length >= 1) {
+              return deco(asKeyOrTarget);
+          }
+          return deco();
       }
 
-      var resolver = exports('resolver', protocol.create('aurelia:resolver', function (target) {
-          if (!(typeof target.get === 'function')) {
-              return 'Resolvers must implement: get(container: Container, key: any): any';
-          }
-          return true;
-      }));
-      function isStrategy(actual, expected, state) {
-          return actual === expected;
-      }
-      var StrategyResolver = exports('StrategyResolver', (function () {
-          function StrategyResolver(strategy, state) {
-              this.strategy = strategy;
-              this.state = state;
-          }
-          StrategyResolver.prototype.get = function (container, key) {
-              if (isStrategy(this.strategy, 0, this.state)) {
-                  return this.state;
-              }
-              if (isStrategy(this.strategy, 1, this.state)) {
-                  var singleton = container.invoke(this.state);
-                  this.state = singleton;
-                  this.strategy = 0;
-                  return singleton;
-              }
-              if (isStrategy(this.strategy, 2, this.state)) {
-                  return container.invoke(this.state);
-              }
-              if (isStrategy(this.strategy, 3, this.state)) {
-                  return this.state(container, key, this);
-              }
-              if (isStrategy(this.strategy, 4, this.state)) {
-                  return this.state[0].get(container, key);
-              }
-              if (isStrategy(this.strategy, 5, this.state)) {
-                  return container.get(this.state);
-              }
-              throw new Error('Invalid strategy: ' + this.strategy);
-          };
-          StrategyResolver = __decorate([
-              resolver(),
-              __metadata("design:paramtypes", [Number, Object])
-          ], StrategyResolver);
-          return StrategyResolver;
-      }()));
-      var Lazy = exports('Lazy', (function () {
-          function Lazy(key) {
-              this._key = key;
-          }
-          Lazy_1 = Lazy;
-          Lazy.prototype.get = function (container) {
-              var _this = this;
-              return function () { return container.get(_this._key); };
-          };
-          Lazy.of = function (key) {
-              return new Lazy_1(key);
-          };
-          var Lazy_1;
-          Lazy = Lazy_1 = __decorate([
-              resolver(),
-              __metadata("design:paramtypes", [Object])
-          ], Lazy);
-          return Lazy;
-      }()));
-      var All = exports('All', (function () {
-          function All(key) {
-              this._key = key;
-          }
-          All_1 = All;
-          All.prototype.get = function (container) {
-              return container.getAll(this._key);
-          };
-          All.of = function (key) {
-              return new All_1(key);
-          };
-          var All_1;
-          All = All_1 = __decorate([
-              resolver(),
-              __metadata("design:paramtypes", [Object])
-          ], All);
-          return All;
-      }()));
-      var Optional = exports('Optional', (function () {
-          function Optional(key, checkParent) {
-              if (checkParent === void 0) { checkParent = true; }
-              this._key = key;
-              this._checkParent = checkParent;
-          }
-          Optional_1 = Optional;
-          Optional.prototype.get = function (container) {
-              if (container.hasResolver(this._key, this._checkParent)) {
-                  return container.get(this._key);
-              }
-              return null;
-          };
-          Optional.of = function (key, checkParent) {
-              if (checkParent === void 0) { checkParent = true; }
-              return new Optional_1(key, checkParent);
-          };
-          var Optional_1;
-          Optional = Optional_1 = __decorate([
-              resolver(),
-              __metadata("design:paramtypes", [Object, Boolean])
-          ], Optional);
-          return Optional;
-      }()));
-      var Parent = exports('Parent', (function () {
-          function Parent(key) {
-              this._key = key;
-          }
-          Parent_1 = Parent;
-          Parent.prototype.get = function (container) {
-              return container.parent ? container.parent.get(this._key) : null;
-          };
-          Parent.of = function (key) {
-              return new Parent_1(key);
-          };
-          var Parent_1;
-          Parent = Parent_1 = __decorate([
-              resolver(),
-              __metadata("design:paramtypes", [Object])
-          ], Parent);
-          return Parent;
-      }()));
-      var Factory = exports('Factory', (function () {
-          function Factory(key) {
-              this._key = key;
-          }
-          Factory_1 = Factory;
-          Factory.prototype.get = function (container) {
-              var fn = this._key;
-              var resolver = container.getResolver(fn);
-              if (resolver && resolver.strategy === 3) {
-                  fn = resolver.state;
-              }
-              return function () {
-                  var rest = [];
-                  for (var _i = 0; _i < arguments.length; _i++) {
-                      rest[_i] = arguments[_i];
-                  }
-                  return container.invoke(fn, rest);
-              };
-          };
-          Factory.of = function (key) {
-              return new Factory_1(key);
-          };
-          var Factory_1;
-          Factory = Factory_1 = __decorate([
-              resolver(),
-              __metadata("design:paramtypes", [Object])
-          ], Factory);
-          return Factory;
-      }()));
-      var NewInstance = exports('NewInstance', (function () {
-          function NewInstance(key) {
-              var dynamicDependencies = [];
-              for (var _i = 1; _i < arguments.length; _i++) {
-                  dynamicDependencies[_i - 1] = arguments[_i];
-              }
-              this.key = key;
-              this.asKey = key;
-              this.dynamicDependencies = dynamicDependencies;
-          }
-          NewInstance_1 = NewInstance;
-          NewInstance.prototype.get = function (container) {
-              var dynamicDependencies = this.dynamicDependencies.length > 0
-                  ? this.dynamicDependencies.map(function (dependency) {
-                      return dependency['protocol:aurelia:resolver']
-                          ? dependency.get(container)
-                          : container.get(dependency);
-                  })
-                  : undefined;
-              var fn = this.key;
-              var resolver = container.getResolver(fn);
-              if (resolver && resolver.strategy === 3) {
-                  fn = resolver.state;
-              }
-              var instance = container.invoke(fn, dynamicDependencies);
-              container.registerInstance(this.asKey, instance);
-              return instance;
-          };
-          NewInstance.prototype.as = function (key) {
-              this.asKey = key;
-              return this;
-          };
-          NewInstance.of = function (key) {
-              var dynamicDependencies = [];
-              for (var _i = 1; _i < arguments.length; _i++) {
-                  dynamicDependencies[_i - 1] = arguments[_i];
-              }
-              return new (NewInstance_1.bind.apply(NewInstance_1, [void 0, key].concat(dynamicDependencies)))();
-          };
-          var NewInstance_1;
-          NewInstance = NewInstance_1 = __decorate([
-              resolver(),
-              __metadata("design:paramtypes", [Object, Object])
-          ], NewInstance);
-          return NewInstance;
-      }()));
-      function getDecoratorDependencies(target) {
-          autoinject(target);
-          return target.inject;
-      }
-      function lazy(keyValue) {
-          return function (target, _key, index) {
-              var inject$$1 = getDecoratorDependencies(target);
-              inject$$1[index] = Lazy.of(keyValue);
-          };
-      }
-      function all(keyValue) {
-          return function (target, _key, index) {
-              var inject$$1 = getDecoratorDependencies(target);
-              inject$$1[index] = All.of(keyValue);
-          };
-      }
-      function optional(checkParentOrTarget) {
-          if (checkParentOrTarget === void 0) { checkParentOrTarget = true; }
-          var deco = function (checkParent) {
-              return function (target, _key, index) {
-                  var inject$$1 = getDecoratorDependencies(target);
-                  inject$$1[index] = Optional.of(inject$$1[index], checkParent);
-              };
-          };
-          if (typeof checkParentOrTarget === 'boolean') {
-              return deco(checkParentOrTarget);
-          }
-          return deco(true);
-      }
-      function parent(target, _key, index) {
-          var inject$$1 = getDecoratorDependencies(target);
-          inject$$1[index] = Parent.of(inject$$1[index]);
-      }
-      function factory(keyValue) {
-          return function (target, _key, index) {
-              var inject$$1 = getDecoratorDependencies(target);
-              inject$$1[index] = Factory.of(keyValue);
-          };
-      }
-      function newInstance(asKeyOrTarget) {
-          var dynamicDependencies = [];
-          for (var _i = 1; _i < arguments.length; _i++) {
-              dynamicDependencies[_i - 1] = arguments[_i];
-          }
-          var deco = function (asKey) {
-              return function (target, _key, index) {
-                  var inject$$1 = getDecoratorDependencies(target);
-                  inject$$1[index] = NewInstance.of.apply(NewInstance, [inject$$1[index]].concat(dynamicDependencies));
-                  if (!!asKey) {
-                      inject$$1[index].as(asKey);
-                  }
-              };
-          };
-          if (arguments.length >= 1) {
-              return deco(asKeyOrTarget);
-          }
-          return deco();
-      }
-
-      function validateKey(key) {
-          if (key === null || key === undefined) {
-              throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-          }
-      }
-      var _emptyParameters = exports('_emptyParameters', Object.freeze([]));
-      metadata.registration = 'aurelia:registration';
-      metadata.invoker = 'aurelia:invoker';
-      var resolverDecorates = resolver.decorates;
-      var InvocationHandler = exports('InvocationHandler', (function () {
-          function InvocationHandler(fn, invoker, dependencies) {
-              this.fn = fn;
-              this.invoker = invoker;
-              this.dependencies = dependencies;
-          }
-          InvocationHandler.prototype.invoke = function (container, dynamicDependencies) {
-              return dynamicDependencies !== undefined
-                  ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
-                  : this.invoker.invoke(container, this.fn, this.dependencies);
-          };
-          return InvocationHandler;
-      }()));
-      function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
-          var i = staticDependencies.length;
-          var args = new Array(i);
-          var lookup;
-          while (i--) {
-              lookup = staticDependencies[i];
-              if (lookup === null || lookup === undefined) {
-                  throw new Error('Constructor Parameter with index ' +
-                      i +
-                      ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-              }
-              else {
-                  args[i] = container.get(lookup);
-              }
-          }
-          if (dynamicDependencies !== undefined) {
-              args = args.concat(dynamicDependencies);
-          }
-          return Reflect.construct(fn, args);
-      }
-      var classInvoker = {
-          invoke: function (container, Type, deps) {
-              var instances = deps.map(function (dep) { return container.get(dep); });
-              return Reflect.construct(Type, instances);
-          },
-          invokeWithDynamicDependencies: invokeWithDynamicDependencies
-      };
-      function getDependencies(f) {
-          if (!f.hasOwnProperty('inject')) {
-              return [];
-          }
-          if (typeof f.inject === 'function') {
-              return f.inject();
-          }
-          return f.inject;
-      }
-      var Container = exports('Container', (function () {
-          function Container(configuration) {
-              if (configuration === undefined) {
-                  configuration = {};
-              }
-              this._configuration = configuration;
-              this._onHandlerCreated = configuration.onHandlerCreated;
-              this._handlers =
-                  configuration.handlers || (configuration.handlers = new Map());
-              this._resolvers = new Map();
-              this.root = this;
-              this.parent = null;
-          }
-          Container.prototype.makeGlobal = function () {
-              Container.instance = this;
-              return this;
-          };
-          Container.prototype.setHandlerCreatedCallback = function (onHandlerCreated) {
-              this._onHandlerCreated = onHandlerCreated;
-              this._configuration.onHandlerCreated = onHandlerCreated;
-          };
-          Container.prototype.registerInstance = function (key, instance) {
-              return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
-          };
-          Container.prototype.registerSingleton = function (key, fn) {
-              return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
-          };
-          Container.prototype.registerTransient = function (key, fn) {
-              return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
-          };
-          Container.prototype.registerHandler = function (key, handler) {
-              return this.registerResolver(key, new StrategyResolver(3, handler));
-          };
-          Container.prototype.registerAlias = function (originalKey, aliasKey) {
-              return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
-          };
-          Container.prototype.registerResolver = function (key, resolver$$1) {
-              validateKey(key);
-              var allResolvers = this._resolvers;
-              var result = allResolvers.get(key);
-              if (result === undefined) {
-                  allResolvers.set(key, resolver$$1);
-              }
-              else if (result.strategy === 4) {
-                  result.state.push(resolver$$1);
-              }
-              else {
-                  allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
-              }
-              return resolver$$1;
-          };
-          Container.prototype.autoRegister = function (key, fn) {
-              fn = fn === undefined ? key : fn;
-              if (typeof fn === 'function') {
-                  var registration = metadata.get(metadata.registration, fn);
-                  if (registration === undefined) {
-                      return this.registerResolver(key, new StrategyResolver(1, fn));
-                  }
-                  return registration.registerResolver(this, key, fn);
-              }
-              return this.registerResolver(key, new StrategyResolver(0, fn));
-          };
-          Container.prototype.autoRegisterAll = function (fns) {
-              var i = fns.length;
-              while (i--) {
-                  this.autoRegister(fns[i]);
-              }
-          };
-          Container.prototype.unregister = function (key) {
-              this._resolvers.delete(key);
-          };
-          Container.prototype.hasResolver = function (key, checkParent) {
-              if (checkParent === void 0) { checkParent = false; }
-              validateKey(key);
-              return (this._resolvers.has(key) ||
-                  (checkParent &&
-                      this.parent !== null &&
-                      this.parent.hasResolver(key, checkParent)));
-          };
-          Container.prototype.getResolver = function (key) {
-              return this._resolvers.get(key);
-          };
-          Container.prototype.get = function (key) {
-              validateKey(key);
-              if (key === Container) {
-                  return this;
-              }
-              if (resolverDecorates(key)) {
-                  return key.get(this, key);
-              }
-              var resolver$$1 = this._resolvers.get(key);
-              if (resolver$$1 === undefined) {
-                  if (this.parent === null) {
-                      return this.autoRegister(key).get(this, key);
-                  }
-                  var registration = metadata.get(metadata.registration, key);
-                  if (registration === undefined) {
-                      return this.parent._get(key);
-                  }
-                  return registration.registerResolver(this, key, key).get(this, key);
-              }
-              return resolver$$1.get(this, key);
-          };
-          Container.prototype._get = function (key) {
-              var resolver$$1 = this._resolvers.get(key);
-              if (resolver$$1 === undefined) {
-                  if (this.parent === null) {
-                      return this.autoRegister(key).get(this, key);
-                  }
-                  return this.parent._get(key);
-              }
-              return resolver$$1.get(this, key);
-          };
-          Container.prototype.getAll = function (key) {
-              validateKey(key);
-              var resolver$$1 = this._resolvers.get(key);
-              if (resolver$$1 === undefined) {
-                  if (this.parent === null) {
-                      return _emptyParameters;
-                  }
-                  return this.parent.getAll(key);
-              }
-              if (resolver$$1.strategy === 4) {
-                  var state = resolver$$1.state;
-                  var i = state.length;
-                  var results = new Array(i);
-                  while (i--) {
-                      results[i] = state[i].get(this, key);
-                  }
-                  return results;
-              }
-              return [resolver$$1.get(this, key)];
-          };
-          Container.prototype.createChild = function () {
-              var child = new Container(this._configuration);
-              child.root = this.root;
-              child.parent = this;
-              return child;
-          };
-          Container.prototype.invoke = function (fn, dynamicDependencies) {
-              try {
-                  var handler = this._handlers.get(fn);
-                  if (handler === undefined) {
-                      handler = this._createInvocationHandler(fn);
-                      this._handlers.set(fn, handler);
-                  }
-                  return handler.invoke(this, dynamicDependencies);
-              }
-              catch (e) {
-                  throw new AggregateError("Error invoking " + fn.name + ". Check the inner error for details.", e, true);
-              }
-          };
-          Container.prototype._createInvocationHandler = function (fn) {
-              var dependencies;
-              if (fn.inject === undefined) {
-                  dependencies =
-                      metadata.getOwn(metadata.paramTypes, fn) || _emptyParameters;
-              }
-              else {
-                  dependencies = [];
-                  var ctor = fn;
-                  while (typeof ctor === 'function') {
-                      dependencies.push.apply(dependencies, getDependencies(ctor));
-                      ctor = Object.getPrototypeOf(ctor);
-                  }
-              }
-              var invoker = metadata.getOwn(metadata.invoker, fn) || classInvoker;
-              var handler = new InvocationHandler(fn, invoker, dependencies);
-              return this._onHandlerCreated !== undefined
-                  ? this._onHandlerCreated(handler)
-                  : handler;
-          };
-          return Container;
+      function validateKey(key) {
+          if (key === null || key === undefined) {
+              throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+          }
+      }
+      var _emptyParameters = exports('_emptyParameters', Object.freeze([]));
+      metadata.registration = 'aurelia:registration';
+      metadata.invoker = 'aurelia:invoker';
+      var resolverDecorates = resolver.decorates;
+      var InvocationHandler = exports('InvocationHandler', (function () {
+          function InvocationHandler(fn, invoker, dependencies) {
+              this.fn = fn;
+              this.invoker = invoker;
+              this.dependencies = dependencies;
+          }
+          InvocationHandler.prototype.invoke = function (container, dynamicDependencies) {
+              return dynamicDependencies !== undefined
+                  ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
+                  : this.invoker.invoke(container, this.fn, this.dependencies);
+          };
+          return InvocationHandler;
+      }()));
+      function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
+          var i = staticDependencies.length;
+          var args = new Array(i);
+          var lookup;
+          while (i--) {
+              lookup = staticDependencies[i];
+              if (lookup === null || lookup === undefined) {
+                  throw new Error('Constructor Parameter with index ' +
+                      i +
+                      ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+              }
+              else {
+                  args[i] = container.get(lookup);
+              }
+          }
+          if (dynamicDependencies !== undefined) {
+              args = args.concat(dynamicDependencies);
+          }
+          return Reflect.construct(fn, args);
+      }
+      var classInvoker = {
+          invoke: function (container, Type, deps) {
+              var instances = deps.map(function (dep) { return container.get(dep); });
+              return Reflect.construct(Type, instances);
+          },
+          invokeWithDynamicDependencies: invokeWithDynamicDependencies
+      };
+      function getDependencies(f) {
+          if (!f.hasOwnProperty('inject')) {
+              return [];
+          }
+          if (typeof f.inject === 'function') {
+              return f.inject();
+          }
+          return f.inject;
+      }
+      var Container = exports('Container', (function () {
+          function Container(configuration) {
+              if (configuration === undefined) {
+                  configuration = {};
+              }
+              this._configuration = configuration;
+              this._onHandlerCreated = configuration.onHandlerCreated;
+              this._handlers =
+                  configuration.handlers || (configuration.handlers = new Map());
+              this._resolvers = new Map();
+              this.root = this;
+              this.parent = null;
+          }
+          Container.prototype.makeGlobal = function () {
+              Container.instance = this;
+              return this;
+          };
+          Container.prototype.setHandlerCreatedCallback = function (onHandlerCreated) {
+              this._onHandlerCreated = onHandlerCreated;
+              this._configuration.onHandlerCreated = onHandlerCreated;
+          };
+          Container.prototype.registerInstance = function (key, instance) {
+              return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
+          };
+          Container.prototype.registerSingleton = function (key, fn) {
+              return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
+          };
+          Container.prototype.registerTransient = function (key, fn) {
+              return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
+          };
+          Container.prototype.registerHandler = function (key, handler) {
+              return this.registerResolver(key, new StrategyResolver(3, handler));
+          };
+          Container.prototype.registerAlias = function (originalKey, aliasKey) {
+              return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
+          };
+          Container.prototype.registerResolver = function (key, resolver$$1) {
+              validateKey(key);
+              var allResolvers = this._resolvers;
+              var result = allResolvers.get(key);
+              if (result === undefined) {
+                  allResolvers.set(key, resolver$$1);
+              }
+              else if (result.strategy === 4) {
+                  result.state.push(resolver$$1);
+              }
+              else {
+                  allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
+              }
+              return resolver$$1;
+          };
+          Container.prototype.autoRegister = function (key, fn) {
+              fn = fn === undefined ? key : fn;
+              if (typeof fn === 'function') {
+                  var registration = metadata.get(metadata.registration, fn);
+                  if (registration === undefined) {
+                      return this.registerResolver(key, new StrategyResolver(1, fn));
+                  }
+                  return registration.registerResolver(this, key, fn);
+              }
+              return this.registerResolver(key, new StrategyResolver(0, fn));
+          };
+          Container.prototype.autoRegisterAll = function (fns) {
+              var i = fns.length;
+              while (i--) {
+                  this.autoRegister(fns[i]);
+              }
+          };
+          Container.prototype.unregister = function (key) {
+              this._resolvers.delete(key);
+          };
+          Container.prototype.hasResolver = function (key, checkParent) {
+              if (checkParent === void 0) { checkParent = false; }
+              validateKey(key);
+              return (this._resolvers.has(key) ||
+                  (checkParent &&
+                      this.parent !== null &&
+                      this.parent.hasResolver(key, checkParent)));
+          };
+          Container.prototype.getResolver = function (key) {
+              return this._resolvers.get(key);
+          };
+          Container.prototype.get = function (key) {
+              validateKey(key);
+              if (key === Container) {
+                  return this;
+              }
+              if (resolverDecorates(key)) {
+                  return key.get(this, key);
+              }
+              var resolver$$1 = this._resolvers.get(key);
+              if (resolver$$1 === undefined) {
+                  if (this.parent === null) {
+                      return this.autoRegister(key).get(this, key);
+                  }
+                  var registration = metadata.get(metadata.registration, key);
+                  if (registration === undefined) {
+                      return this.parent._get(key);
+                  }
+                  return registration.registerResolver(this, key, key).get(this, key);
+              }
+              return resolver$$1.get(this, key);
+          };
+          Container.prototype._get = function (key) {
+              var resolver$$1 = this._resolvers.get(key);
+              if (resolver$$1 === undefined) {
+                  if (this.parent === null) {
+                      return this.autoRegister(key).get(this, key);
+                  }
+                  return this.parent._get(key);
+              }
+              return resolver$$1.get(this, key);
+          };
+          Container.prototype.getAll = function (key) {
+              validateKey(key);
+              var resolver$$1 = this._resolvers.get(key);
+              if (resolver$$1 === undefined) {
+                  if (this.parent === null) {
+                      return _emptyParameters;
+                  }
+                  return this.parent.getAll(key);
+              }
+              if (resolver$$1.strategy === 4) {
+                  var state = resolver$$1.state;
+                  var i = state.length;
+                  var results = new Array(i);
+                  while (i--) {
+                      results[i] = state[i].get(this, key);
+                  }
+                  return results;
+              }
+              return [resolver$$1.get(this, key)];
+          };
+          Container.prototype.createChild = function () {
+              var child = new Container(this._configuration);
+              child.root = this.root;
+              child.parent = this;
+              return child;
+          };
+          Container.prototype.invoke = function (fn, dynamicDependencies) {
+              try {
+                  var handler = this._handlers.get(fn);
+                  if (handler === undefined) {
+                      handler = this._createInvocationHandler(fn);
+                      this._handlers.set(fn, handler);
+                  }
+                  return handler.invoke(this, dynamicDependencies);
+              }
+              catch (e) {
+                  throw new AggregateError("Error invoking " + fn.name + ". Check the inner error for details.", e, true);
+              }
+          };
+          Container.prototype._createInvocationHandler = function (fn) {
+              var dependencies;
+              if (fn.inject === undefined) {
+                  dependencies =
+                      metadata.getOwn(metadata.paramTypes, fn) || _emptyParameters;
+              }
+              else {
+                  dependencies = [];
+                  var ctor = fn;
+                  while (typeof ctor === 'function') {
+                      dependencies.push.apply(dependencies, getDependencies(ctor));
+                      ctor = Object.getPrototypeOf(ctor);
+                  }
+              }
+              var invoker = metadata.getOwn(metadata.invoker, fn) || classInvoker;
+              var handler = new InvocationHandler(fn, invoker, dependencies);
+              return this._onHandlerCreated !== undefined
+                  ? this._onHandlerCreated(handler)
+                  : handler;
+          };
+          return Container;
       }()));
 
-      function invoker(value) {
-          return function (target) {
-              metadata.define(metadata.invoker, value, target);
-          };
-      }
-      function invokeAsFactory(potentialTarget) {
-          var deco = function (target) {
-              metadata.define(metadata.invoker, FactoryInvoker.instance, target);
-          };
-          return potentialTarget ? deco(potentialTarget) : deco;
-      }
-      var FactoryInvoker = exports('FactoryInvoker', (function () {
-          function FactoryInvoker() {
-          }
-          FactoryInvoker.prototype.invoke = function (container, fn, dependencies) {
-              var i = dependencies.length;
-              var args = new Array(i);
-              while (i--) {
-                  args[i] = container.get(dependencies[i]);
-              }
-              return fn.apply(undefined, args);
-          };
-          FactoryInvoker.prototype.invokeWithDynamicDependencies = function (container, fn, staticDependencies, dynamicDependencies) {
-              var i = staticDependencies.length;
-              var args = new Array(i);
-              while (i--) {
-                  args[i] = container.get(staticDependencies[i]);
-              }
-              if (dynamicDependencies !== undefined) {
-                  args = args.concat(dynamicDependencies);
-              }
-              return fn.apply(undefined, args);
-          };
-          return FactoryInvoker;
-      }()));
+      function invoker(value) {
+          return function (target) {
+              metadata.define(metadata.invoker, value, target);
+          };
+      }
+      function invokeAsFactory(potentialTarget) {
+          var deco = function (target) {
+              metadata.define(metadata.invoker, FactoryInvoker.instance, target);
+          };
+          return potentialTarget ? deco(potentialTarget) : deco;
+      }
+      var FactoryInvoker = exports('FactoryInvoker', (function () {
+          function FactoryInvoker() {
+          }
+          FactoryInvoker.prototype.invoke = function (container, fn, dependencies) {
+              var i = dependencies.length;
+              var args = new Array(i);
+              while (i--) {
+                  args[i] = container.get(dependencies[i]);
+              }
+              return fn.apply(undefined, args);
+          };
+          FactoryInvoker.prototype.invokeWithDynamicDependencies = function (container, fn, staticDependencies, dynamicDependencies) {
+              var i = staticDependencies.length;
+              var args = new Array(i);
+              while (i--) {
+                  args[i] = container.get(staticDependencies[i]);
+              }
+              if (dynamicDependencies !== undefined) {
+                  args = args.concat(dynamicDependencies);
+              }
+              return fn.apply(undefined, args);
+          };
+          return FactoryInvoker;
+      }()));
       FactoryInvoker.instance = new FactoryInvoker();
 
-      function registration(value) {
-          return function (target) {
-              metadata.define(metadata.registration, value, target);
-          };
-      }
-      function transient(key) {
-          return registration(new TransientRegistration(key));
-      }
-      function singleton(keyOrRegisterInChild, registerInChild) {
-          if (registerInChild === void 0) { registerInChild = false; }
-          return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
-      }
-      var TransientRegistration = exports('TransientRegistration', (function () {
-          function TransientRegistration(key) {
-              this._key = key;
-          }
-          TransientRegistration.prototype.registerResolver = function (container, key, fn) {
-              var existingResolver = container.getResolver(this._key || key);
-              return existingResolver === undefined
-                  ? container.registerTransient((this._key || key), fn)
-                  : existingResolver;
-          };
-          return TransientRegistration;
-      }()));
-      var SingletonRegistration = exports('SingletonRegistration', (function () {
-          function SingletonRegistration(keyOrRegisterInChild, registerInChild) {
-              if (registerInChild === void 0) { registerInChild = false; }
-              if (typeof keyOrRegisterInChild === 'boolean') {
-                  this._registerInChild = keyOrRegisterInChild;
-              }
-              else {
-                  this._key = keyOrRegisterInChild;
-                  this._registerInChild = registerInChild;
-              }
-          }
-          SingletonRegistration.prototype.registerResolver = function (container, key, fn) {
-              var targetContainer = this._registerInChild ? container : container.root;
-              var existingResolver = targetContainer.getResolver(this._key || key);
-              return existingResolver === undefined
-                  ? targetContainer.registerSingleton(this._key || key, fn)
-                  : existingResolver;
-          };
-          return SingletonRegistration;
+      function registration(value) {
+          return function (target) {
+              metadata.define(metadata.registration, value, target);
+          };
+      }
+      function transient(key) {
+          return registration(new TransientRegistration(key));
+      }
+      function singleton(keyOrRegisterInChild, registerInChild) {
+          if (registerInChild === void 0) { registerInChild = false; }
+          return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
+      }
+      var TransientRegistration = exports('TransientRegistration', (function () {
+          function TransientRegistration(key) {
+              this._key = key;
+          }
+          TransientRegistration.prototype.registerResolver = function (container, key, fn) {
+              var existingResolver = container.getResolver(this._key || key);
+              return existingResolver === undefined
+                  ? container.registerTransient((this._key || key), fn)
+                  : existingResolver;
+          };
+          return TransientRegistration;
+      }()));
+      var SingletonRegistration = exports('SingletonRegistration', (function () {
+          function SingletonRegistration(keyOrRegisterInChild, registerInChild) {
+              if (registerInChild === void 0) { registerInChild = false; }
+              if (typeof keyOrRegisterInChild === 'boolean') {
+                  this._registerInChild = keyOrRegisterInChild;
+              }
+              else {
+                  this._key = keyOrRegisterInChild;
+                  this._registerInChild = registerInChild;
+              }
+          }
+          SingletonRegistration.prototype.registerResolver = function (container, key, fn) {
+              var targetContainer = this._registerInChild ? container : container.root;
+              var existingResolver = targetContainer.getResolver(this._key || key);
+              return existingResolver === undefined
+                  ? targetContainer.registerSingleton(this._key || key, fn)
+                  : existingResolver;
+          };
+          return SingletonRegistration;
       }()));
 
     }
diff --git a/dist/umd-es2015/aurelia-dependency-injection.js b/dist/umd-es2015/aurelia-dependency-injection.js
index aa85b48..edc073e 100644
--- a/dist/umd-es2015/aurelia-dependency-injection.js
+++ b/dist/umd-es2015/aurelia-dependency-injection.js
@@ -4,583 +4,583 @@
   (factory((global.au = global.au || {}, global.au.validation = {}),global.aureliaMetadata,global.au));
 }(this, (function (exports,aureliaMetadata,aureliaPal) { 'use strict';
 
-  /*! *****************************************************************************
-  Copyright (c) Microsoft Corporation. All rights reserved.
-  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-  this file except in compliance with the License. You may obtain a copy of the
-  License at http://www.apache.org/licenses/LICENSE-2.0
-
-  THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-  WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-  MERCHANTABLITY OR NON-INFRINGEMENT.
-
-  See the Apache Version 2.0 License for specific language governing permissions
-  and limitations under the License.
-  ***************************************************************************** */
-
-  function __decorate(decorators, target, key, desc) {
-      var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-      if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-      else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-      return c > 3 && r && Object.defineProperty(target, key, r), r;
+  /*! *****************************************************************************
+  Copyright (c) Microsoft Corporation. All rights reserved.
+  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+  this file except in compliance with the License. You may obtain a copy of the
+  License at http://www.apache.org/licenses/LICENSE-2.0
+
+  THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+  WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+  MERCHANTABLITY OR NON-INFRINGEMENT.
+
+  See the Apache Version 2.0 License for specific language governing permissions
+  and limitations under the License.
+  ***************************************************************************** */
+
+  function __decorate(decorators, target, key, desc) {
+      var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+      if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+      else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+      return c > 3 && r && Object.defineProperty(target, key, r), r;
+  }
+
+  function __metadata(metadataKey, metadataValue) {
+      if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
   }
 
-  function __metadata(metadataKey, metadataValue) {
-      if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-  }
-
-  function autoinject(potentialTarget) {
-      const deco = (target) => {
-          if (!target.hasOwnProperty('inject')) {
-              target.inject = (aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, target) ||
-                  _emptyParameters).slice();
-              if (target.inject && target.inject.length > 0) {
-                  if (target.inject[target.inject.length - 1] === Object) {
-                      target.inject.splice(-1, 1);
-                  }
-              }
-          }
-      };
-      return potentialTarget ? deco(potentialTarget) : deco;
-  }
-  function inject(...rest) {
-      return (target, _key, descriptor) => {
-          if (typeof descriptor === 'number') {
-              autoinject(target);
-              if (rest.length === 1) {
-                  target.inject[descriptor] = rest[0];
-              }
-              return;
-          }
-          if (descriptor) {
-              const fn = descriptor.value;
-              fn.inject = rest;
-          }
-          else {
-              target.inject = rest;
-          }
-      };
+  function autoinject(potentialTarget) {
+      const deco = (target) => {
+          if (!target.hasOwnProperty('inject')) {
+              target.inject = (aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, target) ||
+                  _emptyParameters).slice();
+              if (target.inject && target.inject.length > 0) {
+                  if (target.inject[target.inject.length - 1] === Object) {
+                      target.inject.splice(-1, 1);
+                  }
+              }
+          }
+      };
+      return potentialTarget ? deco(potentialTarget) : deco;
+  }
+  function inject(...rest) {
+      return (target, _key, descriptor) => {
+          if (typeof descriptor === 'number') {
+              autoinject(target);
+              if (rest.length === 1) {
+                  target.inject[descriptor] = rest[0];
+              }
+              return;
+          }
+          if (descriptor) {
+              const fn = descriptor.value;
+              fn.inject = rest;
+          }
+          else {
+              target.inject = rest;
+          }
+      };
   }
 
-  var Lazy_1, All_1, Optional_1, Parent_1, Factory_1, NewInstance_1;
-  const resolver = aureliaMetadata.protocol.create('aurelia:resolver', (target) => {
-      if (!(typeof target.get === 'function')) {
-          return 'Resolvers must implement: get(container: Container, key: any): any';
-      }
-      return true;
-  });
-  function isStrategy(actual, expected, state) {
-      return actual === expected;
-  }
-  exports.StrategyResolver = class StrategyResolver {
-      constructor(strategy, state) {
-          this.strategy = strategy;
-          this.state = state;
-      }
-      get(container, key) {
-          if (isStrategy(this.strategy, 0, this.state)) {
-              return this.state;
-          }
-          if (isStrategy(this.strategy, 1, this.state)) {
-              const singleton = container.invoke(this.state);
-              this.state = singleton;
-              this.strategy = 0;
-              return singleton;
-          }
-          if (isStrategy(this.strategy, 2, this.state)) {
-              return container.invoke(this.state);
-          }
-          if (isStrategy(this.strategy, 3, this.state)) {
-              return this.state(container, key, this);
-          }
-          if (isStrategy(this.strategy, 4, this.state)) {
-              return this.state[0].get(container, key);
-          }
-          if (isStrategy(this.strategy, 5, this.state)) {
-              return container.get(this.state);
-          }
-          throw new Error('Invalid strategy: ' + this.strategy);
-      }
-  };
-  exports.StrategyResolver = __decorate([
-      resolver(),
-      __metadata("design:paramtypes", [Number, Object])
-  ], exports.StrategyResolver);
-  exports.Lazy = Lazy_1 = class Lazy {
-      constructor(key) {
-          this._key = key;
-      }
-      get(container) {
-          return () => container.get(this._key);
-      }
-      static of(key) {
-          return new Lazy_1(key);
-      }
-  };
-  exports.Lazy = Lazy_1 = __decorate([
-      resolver(),
-      __metadata("design:paramtypes", [Object])
-  ], exports.Lazy);
-  exports.All = All_1 = class All {
-      constructor(key) {
-          this._key = key;
-      }
-      get(container) {
-          return container.getAll(this._key);
-      }
-      static of(key) {
-          return new All_1(key);
-      }
-  };
-  exports.All = All_1 = __decorate([
-      resolver(),
-      __metadata("design:paramtypes", [Object])
-  ], exports.All);
-  exports.Optional = Optional_1 = class Optional {
-      constructor(key, checkParent = true) {
-          this._key = key;
-          this._checkParent = checkParent;
-      }
-      get(container) {
-          if (container.hasResolver(this._key, this._checkParent)) {
-              return container.get(this._key);
-          }
-          return null;
-      }
-      static of(key, checkParent = true) {
-          return new Optional_1(key, checkParent);
-      }
-  };
-  exports.Optional = Optional_1 = __decorate([
-      resolver(),
-      __metadata("design:paramtypes", [Object, Boolean])
-  ], exports.Optional);
-  exports.Parent = Parent_1 = class Parent {
-      constructor(key) {
-          this._key = key;
-      }
-      get(container) {
-          return container.parent ? container.parent.get(this._key) : null;
-      }
-      static of(key) {
-          return new Parent_1(key);
-      }
-  };
-  exports.Parent = Parent_1 = __decorate([
-      resolver(),
-      __metadata("design:paramtypes", [Object])
-  ], exports.Parent);
-  exports.Factory = Factory_1 = class Factory {
-      constructor(key) {
-          this._key = key;
-      }
-      get(container) {
-          let fn = this._key;
-          const resolver = container.getResolver(fn);
-          if (resolver && resolver.strategy === 3) {
-              fn = resolver.state;
-          }
-          return (...rest) => container.invoke(fn, rest);
-      }
-      static of(key) {
-          return new Factory_1(key);
-      }
-  };
-  exports.Factory = Factory_1 = __decorate([
-      resolver(),
-      __metadata("design:paramtypes", [Object])
-  ], exports.Factory);
-  exports.NewInstance = NewInstance_1 = class NewInstance {
-      constructor(key, ...dynamicDependencies) {
-          this.key = key;
-          this.asKey = key;
-          this.dynamicDependencies = dynamicDependencies;
-      }
-      get(container) {
-          const dynamicDependencies = this.dynamicDependencies.length > 0
-              ? this.dynamicDependencies.map(dependency => dependency['protocol:aurelia:resolver']
-                  ? dependency.get(container)
-                  : container.get(dependency))
-              : undefined;
-          let fn = this.key;
-          const resolver = container.getResolver(fn);
-          if (resolver && resolver.strategy === 3) {
-              fn = resolver.state;
-          }
-          const instance = container.invoke(fn, dynamicDependencies);
-          container.registerInstance(this.asKey, instance);
-          return instance;
-      }
-      as(key) {
-          this.asKey = key;
-          return this;
-      }
-      static of(key, ...dynamicDependencies) {
-          return new NewInstance_1(key, ...dynamicDependencies);
-      }
-  };
-  exports.NewInstance = NewInstance_1 = __decorate([
-      resolver(),
-      __metadata("design:paramtypes", [Object, Object])
-  ], exports.NewInstance);
-  function getDecoratorDependencies(target) {
-      autoinject(target);
-      return target.inject;
-  }
-  function lazy(keyValue) {
-      return (target, _key, index) => {
-          const inject$$1 = getDecoratorDependencies(target);
-          inject$$1[index] = exports.Lazy.of(keyValue);
-      };
-  }
-  function all(keyValue) {
-      return (target, _key, index) => {
-          const inject$$1 = getDecoratorDependencies(target);
-          inject$$1[index] = exports.All.of(keyValue);
-      };
-  }
-  function optional(checkParentOrTarget = true) {
-      const deco = (checkParent) => {
-          return (target, _key, index) => {
-              const inject$$1 = getDecoratorDependencies(target);
-              inject$$1[index] = exports.Optional.of(inject$$1[index], checkParent);
-          };
-      };
-      if (typeof checkParentOrTarget === 'boolean') {
-          return deco(checkParentOrTarget);
-      }
-      return deco(true);
-  }
-  function parent(target, _key, index) {
-      const inject$$1 = getDecoratorDependencies(target);
-      inject$$1[index] = exports.Parent.of(inject$$1[index]);
-  }
-  function factory(keyValue) {
-      return (target, _key, index) => {
-          const inject$$1 = getDecoratorDependencies(target);
-          inject$$1[index] = exports.Factory.of(keyValue);
-      };
-  }
-  function newInstance(asKeyOrTarget, ...dynamicDependencies) {
-      const deco = (asKey) => {
-          return (target, _key, index) => {
-              const inject$$1 = getDecoratorDependencies(target);
-              inject$$1[index] = exports.NewInstance.of(inject$$1[index], ...dynamicDependencies);
-              if (!!asKey) {
-                  inject$$1[index].as(asKey);
-              }
-          };
-      };
-      if (arguments.length >= 1) {
-          return deco(asKeyOrTarget);
-      }
-      return deco();
+  var Lazy_1, All_1, Optional_1, Parent_1, Factory_1, NewInstance_1;
+  const resolver = aureliaMetadata.protocol.create('aurelia:resolver', (target) => {
+      if (!(typeof target.get === 'function')) {
+          return 'Resolvers must implement: get(container: Container, key: any): any';
+      }
+      return true;
+  });
+  function isStrategy(actual, expected, state) {
+      return actual === expected;
+  }
+  exports.StrategyResolver = class StrategyResolver {
+      constructor(strategy, state) {
+          this.strategy = strategy;
+          this.state = state;
+      }
+      get(container, key) {
+          if (isStrategy(this.strategy, 0, this.state)) {
+              return this.state;
+          }
+          if (isStrategy(this.strategy, 1, this.state)) {
+              const singleton = container.invoke(this.state);
+              this.state = singleton;
+              this.strategy = 0;
+              return singleton;
+          }
+          if (isStrategy(this.strategy, 2, this.state)) {
+              return container.invoke(this.state);
+          }
+          if (isStrategy(this.strategy, 3, this.state)) {
+              return this.state(container, key, this);
+          }
+          if (isStrategy(this.strategy, 4, this.state)) {
+              return this.state[0].get(container, key);
+          }
+          if (isStrategy(this.strategy, 5, this.state)) {
+              return container.get(this.state);
+          }
+          throw new Error('Invalid strategy: ' + this.strategy);
+      }
+  };
+  exports.StrategyResolver = __decorate([
+      resolver(),
+      __metadata("design:paramtypes", [Number, Object])
+  ], exports.StrategyResolver);
+  exports.Lazy = Lazy_1 = class Lazy {
+      constructor(key) {
+          this._key = key;
+      }
+      get(container) {
+          return () => container.get(this._key);
+      }
+      static of(key) {
+          return new Lazy_1(key);
+      }
+  };
+  exports.Lazy = Lazy_1 = __decorate([
+      resolver(),
+      __metadata("design:paramtypes", [Object])
+  ], exports.Lazy);
+  exports.All = All_1 = class All {
+      constructor(key) {
+          this._key = key;
+      }
+      get(container) {
+          return container.getAll(this._key);
+      }
+      static of(key) {
+          return new All_1(key);
+      }
+  };
+  exports.All = All_1 = __decorate([
+      resolver(),
+      __metadata("design:paramtypes", [Object])
+  ], exports.All);
+  exports.Optional = Optional_1 = class Optional {
+      constructor(key, checkParent = true) {
+          this._key = key;
+          this._checkParent = checkParent;
+      }
+      get(container) {
+          if (container.hasResolver(this._key, this._checkParent)) {
+              return container.get(this._key);
+          }
+          return null;
+      }
+      static of(key, checkParent = true) {
+          return new Optional_1(key, checkParent);
+      }
+  };
+  exports.Optional = Optional_1 = __decorate([
+      resolver(),
+      __metadata("design:paramtypes", [Object, Boolean])
+  ], exports.Optional);
+  exports.Parent = Parent_1 = class Parent {
+      constructor(key) {
+          this._key = key;
+      }
+      get(container) {
+          return container.parent ? container.parent.get(this._key) : null;
+      }
+      static of(key) {
+          return new Parent_1(key);
+      }
+  };
+  exports.Parent = Parent_1 = __decorate([
+      resolver(),
+      __metadata("design:paramtypes", [Object])
+  ], exports.Parent);
+  exports.Factory = Factory_1 = class Factory {
+      constructor(key) {
+          this._key = key;
+      }
+      get(container) {
+          let fn = this._key;
+          const resolver = container.getResolver(fn);
+          if (resolver && resolver.strategy === 3) {
+              fn = resolver.state;
+          }
+          return (...rest) => container.invoke(fn, rest);
+      }
+      static of(key) {
+          return new Factory_1(key);
+      }
+  };
+  exports.Factory = Factory_1 = __decorate([
+      resolver(),
+      __metadata("design:paramtypes", [Object])
+  ], exports.Factory);
+  exports.NewInstance = NewInstance_1 = class NewInstance {
+      constructor(key, ...dynamicDependencies) {
+          this.key = key;
+          this.asKey = key;
+          this.dynamicDependencies = dynamicDependencies;
+      }
+      get(container) {
+          const dynamicDependencies = this.dynamicDependencies.length > 0
+              ? this.dynamicDependencies.map(dependency => dependency['protocol:aurelia:resolver']
+                  ? dependency.get(container)
+                  : container.get(dependency))
+              : undefined;
+          let fn = this.key;
+          const resolver = container.getResolver(fn);
+          if (resolver && resolver.strategy === 3) {
+              fn = resolver.state;
+          }
+          const instance = container.invoke(fn, dynamicDependencies);
+          container.registerInstance(this.asKey, instance);
+          return instance;
+      }
+      as(key) {
+          this.asKey = key;
+          return this;
+      }
+      static of(key, ...dynamicDependencies) {
+          return new NewInstance_1(key, ...dynamicDependencies);
+      }
+  };
+  exports.NewInstance = NewInstance_1 = __decorate([
+      resolver(),
+      __metadata("design:paramtypes", [Object, Object])
+  ], exports.NewInstance);
+  function getDecoratorDependencies(target) {
+      autoinject(target);
+      return target.inject;
+  }
+  function lazy(keyValue) {
+      return (target, _key, index) => {
+          const inject$$1 = getDecoratorDependencies(target);
+          inject$$1[index] = exports.Lazy.of(keyValue);
+      };
+  }
+  function all(keyValue) {
+      return (target, _key, index) => {
+          const inject$$1 = getDecoratorDependencies(target);
+          inject$$1[index] = exports.All.of(keyValue);
+      };
+  }
+  function optional(checkParentOrTarget = true) {
+      const deco = (checkParent) => {
+          return (target, _key, index) => {
+              const inject$$1 = getDecoratorDependencies(target);
+              inject$$1[index] = exports.Optional.of(inject$$1[index], checkParent);
+          };
+      };
+      if (typeof checkParentOrTarget === 'boolean') {
+          return deco(checkParentOrTarget);
+      }
+      return deco(true);
+  }
+  function parent(target, _key, index) {
+      const inject$$1 = getDecoratorDependencies(target);
+      inject$$1[index] = exports.Parent.of(inject$$1[index]);
+  }
+  function factory(keyValue) {
+      return (target, _key, index) => {
+          const inject$$1 = getDecoratorDependencies(target);
+          inject$$1[index] = exports.Factory.of(keyValue);
+      };
+  }
+  function newInstance(asKeyOrTarget, ...dynamicDependencies) {
+      const deco = (asKey) => {
+          return (target, _key, index) => {
+              const inject$$1 = getDecoratorDependencies(target);
+              inject$$1[index] = exports.NewInstance.of(inject$$1[index], ...dynamicDependencies);
+              if (!!asKey) {
+                  inject$$1[index].as(asKey);
+              }
+          };
+      };
+      if (arguments.length >= 1) {
+          return deco(asKeyOrTarget);
+      }
+      return deco();
   }
 
-  function validateKey(key) {
-      if (key === null || key === undefined) {
-          throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-      }
-  }
-  const _emptyParameters = Object.freeze([]);
-  aureliaMetadata.metadata.registration = 'aurelia:registration';
-  aureliaMetadata.metadata.invoker = 'aurelia:invoker';
-  const resolverDecorates = resolver.decorates;
-  class InvocationHandler {
-      constructor(fn, invoker, dependencies) {
-          this.fn = fn;
-          this.invoker = invoker;
-          this.dependencies = dependencies;
-      }
-      invoke(container, dynamicDependencies) {
-          return dynamicDependencies !== undefined
-              ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
-              : this.invoker.invoke(container, this.fn, this.dependencies);
-      }
-  }
-  function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
-      let i = staticDependencies.length;
-      let args = new Array(i);
-      let lookup;
-      while (i--) {
-          lookup = staticDependencies[i];
-          if (lookup === null || lookup === undefined) {
-              throw new Error('Constructor Parameter with index ' +
-                  i +
-                  ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-          }
-          else {
-              args[i] = container.get(lookup);
-          }
-      }
-      if (dynamicDependencies !== undefined) {
-          args = args.concat(dynamicDependencies);
-      }
-      return Reflect.construct(fn, args);
-  }
-  const classInvoker = {
-      invoke(container, Type, deps) {
-          const instances = deps.map((dep) => container.get(dep));
-          return Reflect.construct(Type, instances);
-      },
-      invokeWithDynamicDependencies
-  };
-  function getDependencies(f) {
-      if (!f.hasOwnProperty('inject')) {
-          return [];
-      }
-      if (typeof f.inject === 'function') {
-          return f.inject();
-      }
-      return f.inject;
-  }
-  class Container {
-      constructor(configuration) {
-          if (configuration === undefined) {
-              configuration = {};
-          }
-          this._configuration = configuration;
-          this._onHandlerCreated = configuration.onHandlerCreated;
-          this._handlers =
-              configuration.handlers || (configuration.handlers = new Map());
-          this._resolvers = new Map();
-          this.root = this;
-          this.parent = null;
-      }
-      makeGlobal() {
-          Container.instance = this;
-          return this;
-      }
-      setHandlerCreatedCallback(onHandlerCreated) {
-          this._onHandlerCreated = onHandlerCreated;
-          this._configuration.onHandlerCreated = onHandlerCreated;
-      }
-      registerInstance(key, instance) {
-          return this.registerResolver(key, new exports.StrategyResolver(0, instance === undefined ? key : instance));
-      }
-      registerSingleton(key, fn) {
-          return this.registerResolver(key, new exports.StrategyResolver(1, fn === undefined ? key : fn));
-      }
-      registerTransient(key, fn) {
-          return this.registerResolver(key, new exports.StrategyResolver(2, fn === undefined ? key : fn));
-      }
-      registerHandler(key, handler) {
-          return this.registerResolver(key, new exports.StrategyResolver(3, handler));
-      }
-      registerAlias(originalKey, aliasKey) {
-          return this.registerResolver(aliasKey, new exports.StrategyResolver(5, originalKey));
-      }
-      registerResolver(key, resolver$$1) {
-          validateKey(key);
-          const allResolvers = this._resolvers;
-          const result = allResolvers.get(key);
-          if (result === undefined) {
-              allResolvers.set(key, resolver$$1);
-          }
-          else if (result.strategy === 4) {
-              result.state.push(resolver$$1);
-          }
-          else {
-              allResolvers.set(key, new exports.StrategyResolver(4, [result, resolver$$1]));
-          }
-          return resolver$$1;
-      }
-      autoRegister(key, fn) {
-          fn = fn === undefined ? key : fn;
-          if (typeof fn === 'function') {
-              const registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, fn);
-              if (registration === undefined) {
-                  return this.registerResolver(key, new exports.StrategyResolver(1, fn));
-              }
-              return registration.registerResolver(this, key, fn);
-          }
-          return this.registerResolver(key, new exports.StrategyResolver(0, fn));
-      }
-      autoRegisterAll(fns) {
-          let i = fns.length;
-          while (i--) {
-              this.autoRegister(fns[i]);
-          }
-      }
-      unregister(key) {
-          this._resolvers.delete(key);
-      }
-      hasResolver(key, checkParent = false) {
-          validateKey(key);
-          return (this._resolvers.has(key) ||
-              (checkParent &&
-                  this.parent !== null &&
-                  this.parent.hasResolver(key, checkParent)));
-      }
-      getResolver(key) {
-          return this._resolvers.get(key);
-      }
-      get(key) {
-          validateKey(key);
-          if (key === Container) {
-              return this;
-          }
-          if (resolverDecorates(key)) {
-              return key.get(this, key);
-          }
-          const resolver$$1 = this._resolvers.get(key);
-          if (resolver$$1 === undefined) {
-              if (this.parent === null) {
-                  return this.autoRegister(key).get(this, key);
-              }
-              const registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, key);
-              if (registration === undefined) {
-                  return this.parent._get(key);
-              }
-              return registration.registerResolver(this, key, key).get(this, key);
-          }
-          return resolver$$1.get(this, key);
-      }
-      _get(key) {
-          const resolver$$1 = this._resolvers.get(key);
-          if (resolver$$1 === undefined) {
-              if (this.parent === null) {
-                  return this.autoRegister(key).get(this, key);
-              }
-              return this.parent._get(key);
-          }
-          return resolver$$1.get(this, key);
-      }
-      getAll(key) {
-          validateKey(key);
-          const resolver$$1 = this._resolvers.get(key);
-          if (resolver$$1 === undefined) {
-              if (this.parent === null) {
-                  return _emptyParameters;
-              }
-              return this.parent.getAll(key);
-          }
-          if (resolver$$1.strategy === 4) {
-              const state = resolver$$1.state;
-              let i = state.length;
-              const results = new Array(i);
-              while (i--) {
-                  results[i] = state[i].get(this, key);
-              }
-              return results;
-          }
-          return [resolver$$1.get(this, key)];
-      }
-      createChild() {
-          const child = new Container(this._configuration);
-          child.root = this.root;
-          child.parent = this;
-          return child;
-      }
-      invoke(fn, dynamicDependencies) {
-          try {
-              let handler = this._handlers.get(fn);
-              if (handler === undefined) {
-                  handler = this._createInvocationHandler(fn);
-                  this._handlers.set(fn, handler);
-              }
-              return handler.invoke(this, dynamicDependencies);
-          }
-          catch (e) {
-              throw new aureliaPal.AggregateError(`Error invoking ${fn.name}. Check the inner error for details.`, e, true);
-          }
-      }
-      _createInvocationHandler(fn) {
-          let dependencies;
-          if (fn.inject === undefined) {
-              dependencies =
-                  aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, fn) || _emptyParameters;
-          }
-          else {
-              dependencies = [];
-              let ctor = fn;
-              while (typeof ctor === 'function') {
-                  dependencies.push(...getDependencies(ctor));
-                  ctor = Object.getPrototypeOf(ctor);
-              }
-          }
-          const invoker = aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.invoker, fn) || classInvoker;
-          const handler = new InvocationHandler(fn, invoker, dependencies);
-          return this._onHandlerCreated !== undefined
-              ? this._onHandlerCreated(handler)
-              : handler;
-      }
+  function validateKey(key) {
+      if (key === null || key === undefined) {
+          throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+      }
+  }
+  const _emptyParameters = Object.freeze([]);
+  aureliaMetadata.metadata.registration = 'aurelia:registration';
+  aureliaMetadata.metadata.invoker = 'aurelia:invoker';
+  const resolverDecorates = resolver.decorates;
+  class InvocationHandler {
+      constructor(fn, invoker, dependencies) {
+          this.fn = fn;
+          this.invoker = invoker;
+          this.dependencies = dependencies;
+      }
+      invoke(container, dynamicDependencies) {
+          return dynamicDependencies !== undefined
+              ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
+              : this.invoker.invoke(container, this.fn, this.dependencies);
+      }
+  }
+  function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
+      let i = staticDependencies.length;
+      let args = new Array(i);
+      let lookup;
+      while (i--) {
+          lookup = staticDependencies[i];
+          if (lookup === null || lookup === undefined) {
+              throw new Error('Constructor Parameter with index ' +
+                  i +
+                  ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+          }
+          else {
+              args[i] = container.get(lookup);
+          }
+      }
+      if (dynamicDependencies !== undefined) {
+          args = args.concat(dynamicDependencies);
+      }
+      return Reflect.construct(fn, args);
+  }
+  const classInvoker = {
+      invoke(container, Type, deps) {
+          const instances = deps.map((dep) => container.get(dep));
+          return Reflect.construct(Type, instances);
+      },
+      invokeWithDynamicDependencies
+  };
+  function getDependencies(f) {
+      if (!f.hasOwnProperty('inject')) {
+          return [];
+      }
+      if (typeof f.inject === 'function') {
+          return f.inject();
+      }
+      return f.inject;
+  }
+  class Container {
+      constructor(configuration) {
+          if (configuration === undefined) {
+              configuration = {};
+          }
+          this._configuration = configuration;
+          this._onHandlerCreated = configuration.onHandlerCreated;
+          this._handlers =
+              configuration.handlers || (configuration.handlers = new Map());
+          this._resolvers = new Map();
+          this.root = this;
+          this.parent = null;
+      }
+      makeGlobal() {
+          Container.instance = this;
+          return this;
+      }
+      setHandlerCreatedCallback(onHandlerCreated) {
+          this._onHandlerCreated = onHandlerCreated;
+          this._configuration.onHandlerCreated = onHandlerCreated;
+      }
+      registerInstance(key, instance) {
+          return this.registerResolver(key, new exports.StrategyResolver(0, instance === undefined ? key : instance));
+      }
+      registerSingleton(key, fn) {
+          return this.registerResolver(key, new exports.StrategyResolver(1, fn === undefined ? key : fn));
+      }
+      registerTransient(key, fn) {
+          return this.registerResolver(key, new exports.StrategyResolver(2, fn === undefined ? key : fn));
+      }
+      registerHandler(key, handler) {
+          return this.registerResolver(key, new exports.StrategyResolver(3, handler));
+      }
+      registerAlias(originalKey, aliasKey) {
+          return this.registerResolver(aliasKey, new exports.StrategyResolver(5, originalKey));
+      }
+      registerResolver(key, resolver$$1) {
+          validateKey(key);
+          const allResolvers = this._resolvers;
+          const result = allResolvers.get(key);
+          if (result === undefined) {
+              allResolvers.set(key, resolver$$1);
+          }
+          else if (result.strategy === 4) {
+              result.state.push(resolver$$1);
+          }
+          else {
+              allResolvers.set(key, new exports.StrategyResolver(4, [result, resolver$$1]));
+          }
+          return resolver$$1;
+      }
+      autoRegister(key, fn) {
+          fn = fn === undefined ? key : fn;
+          if (typeof fn === 'function') {
+              const registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, fn);
+              if (registration === undefined) {
+                  return this.registerResolver(key, new exports.StrategyResolver(1, fn));
+              }
+              return registration.registerResolver(this, key, fn);
+          }
+          return this.registerResolver(key, new exports.StrategyResolver(0, fn));
+      }
+      autoRegisterAll(fns) {
+          let i = fns.length;
+          while (i--) {
+              this.autoRegister(fns[i]);
+          }
+      }
+      unregister(key) {
+          this._resolvers.delete(key);
+      }
+      hasResolver(key, checkParent = false) {
+          validateKey(key);
+          return (this._resolvers.has(key) ||
+              (checkParent &&
+                  this.parent !== null &&
+                  this.parent.hasResolver(key, checkParent)));
+      }
+      getResolver(key) {
+          return this._resolvers.get(key);
+      }
+      get(key) {
+          validateKey(key);
+          if (key === Container) {
+              return this;
+          }
+          if (resolverDecorates(key)) {
+              return key.get(this, key);
+          }
+          const resolver$$1 = this._resolvers.get(key);
+          if (resolver$$1 === undefined) {
+              if (this.parent === null) {
+                  return this.autoRegister(key).get(this, key);
+              }
+              const registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, key);
+              if (registration === undefined) {
+                  return this.parent._get(key);
+              }
+              return registration.registerResolver(this, key, key).get(this, key);
+          }
+          return resolver$$1.get(this, key);
+      }
+      _get(key) {
+          const resolver$$1 = this._resolvers.get(key);
+          if (resolver$$1 === undefined) {
+              if (this.parent === null) {
+                  return this.autoRegister(key).get(this, key);
+              }
+              return this.parent._get(key);
+          }
+          return resolver$$1.get(this, key);
+      }
+      getAll(key) {
+          validateKey(key);
+          const resolver$$1 = this._resolvers.get(key);
+          if (resolver$$1 === undefined) {
+              if (this.parent === null) {
+                  return _emptyParameters;
+              }
+              return this.parent.getAll(key);
+          }
+          if (resolver$$1.strategy === 4) {
+              const state = resolver$$1.state;
+              let i = state.length;
+              const results = new Array(i);
+              while (i--) {
+                  results[i] = state[i].get(this, key);
+              }
+              return results;
+          }
+          return [resolver$$1.get(this, key)];
+      }
+      createChild() {
+          const child = new Container(this._configuration);
+          child.root = this.root;
+          child.parent = this;
+          return child;
+      }
+      invoke(fn, dynamicDependencies) {
+          try {
+              let handler = this._handlers.get(fn);
+              if (handler === undefined) {
+                  handler = this._createInvocationHandler(fn);
+                  this._handlers.set(fn, handler);
+              }
+              return handler.invoke(this, dynamicDependencies);
+          }
+          catch (e) {
+              throw new aureliaPal.AggregateError(`Error invoking ${fn.name}. Check the inner error for details.`, e, true);
+          }
+      }
+      _createInvocationHandler(fn) {
+          let dependencies;
+          if (fn.inject === undefined) {
+              dependencies =
+                  aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, fn) || _emptyParameters;
+          }
+          else {
+              dependencies = [];
+              let ctor = fn;
+              while (typeof ctor === 'function') {
+                  dependencies.push(...getDependencies(ctor));
+                  ctor = Object.getPrototypeOf(ctor);
+              }
+          }
+          const invoker = aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.invoker, fn) || classInvoker;
+          const handler = new InvocationHandler(fn, invoker, dependencies);
+          return this._onHandlerCreated !== undefined
+              ? this._onHandlerCreated(handler)
+              : handler;
+      }
   }
 
-  function invoker(value) {
-      return target => {
-          aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, value, target);
-      };
-  }
-  function invokeAsFactory(potentialTarget) {
-      const deco = (target) => {
-          aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, FactoryInvoker.instance, target);
-      };
-      return potentialTarget ? deco(potentialTarget) : deco;
-  }
-  class FactoryInvoker {
-      invoke(container, fn, dependencies) {
-          let i = dependencies.length;
-          const args = new Array(i);
-          while (i--) {
-              args[i] = container.get(dependencies[i]);
-          }
-          return fn.apply(undefined, args);
-      }
-      invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
-          let i = staticDependencies.length;
-          let args = new Array(i);
-          while (i--) {
-              args[i] = container.get(staticDependencies[i]);
-          }
-          if (dynamicDependencies !== undefined) {
-              args = args.concat(dynamicDependencies);
-          }
-          return fn.apply(undefined, args);
-      }
-  }
+  function invoker(value) {
+      return target => {
+          aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, value, target);
+      };
+  }
+  function invokeAsFactory(potentialTarget) {
+      const deco = (target) => {
+          aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, FactoryInvoker.instance, target);
+      };
+      return potentialTarget ? deco(potentialTarget) : deco;
+  }
+  class FactoryInvoker {
+      invoke(container, fn, dependencies) {
+          let i = dependencies.length;
+          const args = new Array(i);
+          while (i--) {
+              args[i] = container.get(dependencies[i]);
+          }
+          return fn.apply(undefined, args);
+      }
+      invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
+          let i = staticDependencies.length;
+          let args = new Array(i);
+          while (i--) {
+              args[i] = container.get(staticDependencies[i]);
+          }
+          if (dynamicDependencies !== undefined) {
+              args = args.concat(dynamicDependencies);
+          }
+          return fn.apply(undefined, args);
+      }
+  }
   FactoryInvoker.instance = new FactoryInvoker();
 
-  function registration(value) {
-      return (target) => {
-          aureliaMetadata.metadata.define(aureliaMetadata.metadata.registration, value, target);
-      };
-  }
-  function transient(key) {
-      return registration(new TransientRegistration(key));
-  }
-  function singleton(keyOrRegisterInChild, registerInChild = false) {
-      return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
-  }
-  class TransientRegistration {
-      constructor(key) {
-          this._key = key;
-      }
-      registerResolver(container, key, fn) {
-          const existingResolver = container.getResolver(this._key || key);
-          return existingResolver === undefined
-              ? container.registerTransient((this._key || key), fn)
-              : existingResolver;
-      }
-  }
-  class SingletonRegistration {
-      constructor(keyOrRegisterInChild, registerInChild = false) {
-          if (typeof keyOrRegisterInChild === 'boolean') {
-              this._registerInChild = keyOrRegisterInChild;
-          }
-          else {
-              this._key = keyOrRegisterInChild;
-              this._registerInChild = registerInChild;
-          }
-      }
-      registerResolver(container, key, fn) {
-          const targetContainer = this._registerInChild ? container : container.root;
-          const existingResolver = targetContainer.getResolver(this._key || key);
-          return existingResolver === undefined
-              ? targetContainer.registerSingleton(this._key || key, fn)
-              : existingResolver;
-      }
+  function registration(value) {
+      return (target) => {
+          aureliaMetadata.metadata.define(aureliaMetadata.metadata.registration, value, target);
+      };
+  }
+  function transient(key) {
+      return registration(new TransientRegistration(key));
+  }
+  function singleton(keyOrRegisterInChild, registerInChild = false) {
+      return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
+  }
+  class TransientRegistration {
+      constructor(key) {
+          this._key = key;
+      }
+      registerResolver(container, key, fn) {
+          const existingResolver = container.getResolver(this._key || key);
+          return existingResolver === undefined
+              ? container.registerTransient((this._key || key), fn)
+              : existingResolver;
+      }
+  }
+  class SingletonRegistration {
+      constructor(keyOrRegisterInChild, registerInChild = false) {
+          if (typeof keyOrRegisterInChild === 'boolean') {
+              this._registerInChild = keyOrRegisterInChild;
+          }
+          else {
+              this._key = keyOrRegisterInChild;
+              this._registerInChild = registerInChild;
+          }
+      }
+      registerResolver(container, key, fn) {
+          const targetContainer = this._registerInChild ? container : container.root;
+          const existingResolver = targetContainer.getResolver(this._key || key);
+          return existingResolver === undefined
+              ? targetContainer.registerSingleton(this._key || key, fn)
+              : existingResolver;
+      }
   }
 
   exports._emptyParameters = _emptyParameters;
diff --git a/dist/umd/aurelia-dependency-injection.js b/dist/umd/aurelia-dependency-injection.js
index d0280b9..ded65b6 100644
--- a/dist/umd/aurelia-dependency-injection.js
+++ b/dist/umd/aurelia-dependency-injection.js
@@ -4,639 +4,639 @@
   (factory((global.au = global.au || {}, global.au.validation = {}),global.aureliaMetadata,global.au));
 }(this, (function (exports,aureliaMetadata,aureliaPal) { 'use strict';
 
-  /*! *****************************************************************************
-  Copyright (c) Microsoft Corporation. All rights reserved.
-  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-  this file except in compliance with the License. You may obtain a copy of the
-  License at http://www.apache.org/licenses/LICENSE-2.0
-
-  THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-  WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-  MERCHANTABLITY OR NON-INFRINGEMENT.
-
-  See the Apache Version 2.0 License for specific language governing permissions
-  and limitations under the License.
-  ***************************************************************************** */
-
-  function __decorate(decorators, target, key, desc) {
-      var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-      if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-      else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-      return c > 3 && r && Object.defineProperty(target, key, r), r;
+  /*! *****************************************************************************
+  Copyright (c) Microsoft Corporation. All rights reserved.
+  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+  this file except in compliance with the License. You may obtain a copy of the
+  License at http://www.apache.org/licenses/LICENSE-2.0
+
+  THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+  WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+  MERCHANTABLITY OR NON-INFRINGEMENT.
+
+  See the Apache Version 2.0 License for specific language governing permissions
+  and limitations under the License.
+  ***************************************************************************** */
+
+  function __decorate(decorators, target, key, desc) {
+      var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+      if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+      else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+      return c > 3 && r && Object.defineProperty(target, key, r), r;
+  }
+
+  function __metadata(metadataKey, metadataValue) {
+      if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
   }
 
-  function __metadata(metadataKey, metadataValue) {
-      if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+  function autoinject(potentialTarget) {
+      var deco = function (target) {
+          if (!target.hasOwnProperty('inject')) {
+              target.inject = (aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, target) ||
+                  _emptyParameters).slice();
+              if (target.inject && target.inject.length > 0) {
+                  if (target.inject[target.inject.length - 1] === Object) {
+                      target.inject.splice(-1, 1);
+                  }
+              }
+          }
+      };
+      return potentialTarget ? deco(potentialTarget) : deco;
+  }
+  function inject() {
+      var rest = [];
+      for (var _i = 0; _i < arguments.length; _i++) {
+          rest[_i] = arguments[_i];
+      }
+      return function (target, _key, descriptor) {
+          if (typeof descriptor === 'number') {
+              autoinject(target);
+              if (rest.length === 1) {
+                  target.inject[descriptor] = rest[0];
+              }
+              return;
+          }
+          if (descriptor) {
+              var fn = descriptor.value;
+              fn.inject = rest;
+          }
+          else {
+              target.inject = rest;
+          }
+      };
   }
 
-  function autoinject(potentialTarget) {
-      var deco = function (target) {
-          if (!target.hasOwnProperty('inject')) {
-              target.inject = (aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, target) ||
-                  _emptyParameters).slice();
-              if (target.inject && target.inject.length > 0) {
-                  if (target.inject[target.inject.length - 1] === Object) {
-                      target.inject.splice(-1, 1);
-                  }
-              }
-          }
-      };
-      return potentialTarget ? deco(potentialTarget) : deco;
-  }
-  function inject() {
-      var rest = [];
-      for (var _i = 0; _i < arguments.length; _i++) {
-          rest[_i] = arguments[_i];
-      }
-      return function (target, _key, descriptor) {
-          if (typeof descriptor === 'number') {
-              autoinject(target);
-              if (rest.length === 1) {
-                  target.inject[descriptor] = rest[0];
-              }
-              return;
-          }
-          if (descriptor) {
-              var fn = descriptor.value;
-              fn.inject = rest;
-          }
-          else {
-              target.inject = rest;
-          }
-      };
+  var resolver = aureliaMetadata.protocol.create('aurelia:resolver', function (target) {
+      if (!(typeof target.get === 'function')) {
+          return 'Resolvers must implement: get(container: Container, key: any): any';
+      }
+      return true;
+  });
+  function isStrategy(actual, expected, state) {
+      return actual === expected;
+  }
+  var StrategyResolver = (function () {
+      function StrategyResolver(strategy, state) {
+          this.strategy = strategy;
+          this.state = state;
+      }
+      StrategyResolver.prototype.get = function (container, key) {
+          if (isStrategy(this.strategy, 0, this.state)) {
+              return this.state;
+          }
+          if (isStrategy(this.strategy, 1, this.state)) {
+              var singleton = container.invoke(this.state);
+              this.state = singleton;
+              this.strategy = 0;
+              return singleton;
+          }
+          if (isStrategy(this.strategy, 2, this.state)) {
+              return container.invoke(this.state);
+          }
+          if (isStrategy(this.strategy, 3, this.state)) {
+              return this.state(container, key, this);
+          }
+          if (isStrategy(this.strategy, 4, this.state)) {
+              return this.state[0].get(container, key);
+          }
+          if (isStrategy(this.strategy, 5, this.state)) {
+              return container.get(this.state);
+          }
+          throw new Error('Invalid strategy: ' + this.strategy);
+      };
+      StrategyResolver = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Number, Object])
+      ], StrategyResolver);
+      return StrategyResolver;
+  }());
+  var Lazy = (function () {
+      function Lazy(key) {
+          this._key = key;
+      }
+      Lazy_1 = Lazy;
+      Lazy.prototype.get = function (container) {
+          var _this = this;
+          return function () { return container.get(_this._key); };
+      };
+      Lazy.of = function (key) {
+          return new Lazy_1(key);
+      };
+      var Lazy_1;
+      Lazy = Lazy_1 = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Object])
+      ], Lazy);
+      return Lazy;
+  }());
+  var All = (function () {
+      function All(key) {
+          this._key = key;
+      }
+      All_1 = All;
+      All.prototype.get = function (container) {
+          return container.getAll(this._key);
+      };
+      All.of = function (key) {
+          return new All_1(key);
+      };
+      var All_1;
+      All = All_1 = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Object])
+      ], All);
+      return All;
+  }());
+  var Optional = (function () {
+      function Optional(key, checkParent) {
+          if (checkParent === void 0) { checkParent = true; }
+          this._key = key;
+          this._checkParent = checkParent;
+      }
+      Optional_1 = Optional;
+      Optional.prototype.get = function (container) {
+          if (container.hasResolver(this._key, this._checkParent)) {
+              return container.get(this._key);
+          }
+          return null;
+      };
+      Optional.of = function (key, checkParent) {
+          if (checkParent === void 0) { checkParent = true; }
+          return new Optional_1(key, checkParent);
+      };
+      var Optional_1;
+      Optional = Optional_1 = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Object, Boolean])
+      ], Optional);
+      return Optional;
+  }());
+  var Parent = (function () {
+      function Parent(key) {
+          this._key = key;
+      }
+      Parent_1 = Parent;
+      Parent.prototype.get = function (container) {
+          return container.parent ? container.parent.get(this._key) : null;
+      };
+      Parent.of = function (key) {
+          return new Parent_1(key);
+      };
+      var Parent_1;
+      Parent = Parent_1 = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Object])
+      ], Parent);
+      return Parent;
+  }());
+  var Factory = (function () {
+      function Factory(key) {
+          this._key = key;
+      }
+      Factory_1 = Factory;
+      Factory.prototype.get = function (container) {
+          var fn = this._key;
+          var resolver = container.getResolver(fn);
+          if (resolver && resolver.strategy === 3) {
+              fn = resolver.state;
+          }
+          return function () {
+              var rest = [];
+              for (var _i = 0; _i < arguments.length; _i++) {
+                  rest[_i] = arguments[_i];
+              }
+              return container.invoke(fn, rest);
+          };
+      };
+      Factory.of = function (key) {
+          return new Factory_1(key);
+      };
+      var Factory_1;
+      Factory = Factory_1 = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Object])
+      ], Factory);
+      return Factory;
+  }());
+  var NewInstance = (function () {
+      function NewInstance(key) {
+          var dynamicDependencies = [];
+          for (var _i = 1; _i < arguments.length; _i++) {
+              dynamicDependencies[_i - 1] = arguments[_i];
+          }
+          this.key = key;
+          this.asKey = key;
+          this.dynamicDependencies = dynamicDependencies;
+      }
+      NewInstance_1 = NewInstance;
+      NewInstance.prototype.get = function (container) {
+          var dynamicDependencies = this.dynamicDependencies.length > 0
+              ? this.dynamicDependencies.map(function (dependency) {
+                  return dependency['protocol:aurelia:resolver']
+                      ? dependency.get(container)
+                      : container.get(dependency);
+              })
+              : undefined;
+          var fn = this.key;
+          var resolver = container.getResolver(fn);
+          if (resolver && resolver.strategy === 3) {
+              fn = resolver.state;
+          }
+          var instance = container.invoke(fn, dynamicDependencies);
+          container.registerInstance(this.asKey, instance);
+          return instance;
+      };
+      NewInstance.prototype.as = function (key) {
+          this.asKey = key;
+          return this;
+      };
+      NewInstance.of = function (key) {
+          var dynamicDependencies = [];
+          for (var _i = 1; _i < arguments.length; _i++) {
+              dynamicDependencies[_i - 1] = arguments[_i];
+          }
+          return new (NewInstance_1.bind.apply(NewInstance_1, [void 0, key].concat(dynamicDependencies)))();
+      };
+      var NewInstance_1;
+      NewInstance = NewInstance_1 = __decorate([
+          resolver(),
+          __metadata("design:paramtypes", [Object, Object])
+      ], NewInstance);
+      return NewInstance;
+  }());
+  function getDecoratorDependencies(target) {
+      autoinject(target);
+      return target.inject;
+  }
+  function lazy(keyValue) {
+      return function (target, _key, index) {
+          var inject$$1 = getDecoratorDependencies(target);
+          inject$$1[index] = Lazy.of(keyValue);
+      };
+  }
+  function all(keyValue) {
+      return function (target, _key, index) {
+          var inject$$1 = getDecoratorDependencies(target);
+          inject$$1[index] = All.of(keyValue);
+      };
+  }
+  function optional(checkParentOrTarget) {
+      if (checkParentOrTarget === void 0) { checkParentOrTarget = true; }
+      var deco = function (checkParent) {
+          return function (target, _key, index) {
+              var inject$$1 = getDecoratorDependencies(target);
+              inject$$1[index] = Optional.of(inject$$1[index], checkParent);
+          };
+      };
+      if (typeof checkParentOrTarget === 'boolean') {
+          return deco(checkParentOrTarget);
+      }
+      return deco(true);
+  }
+  function parent(target, _key, index) {
+      var inject$$1 = getDecoratorDependencies(target);
+      inject$$1[index] = Parent.of(inject$$1[index]);
+  }
+  function factory(keyValue) {
+      return function (target, _key, index) {
+          var inject$$1 = getDecoratorDependencies(target);
+          inject$$1[index] = Factory.of(keyValue);
+      };
+  }
+  function newInstance(asKeyOrTarget) {
+      var dynamicDependencies = [];
+      for (var _i = 1; _i < arguments.length; _i++) {
+          dynamicDependencies[_i - 1] = arguments[_i];
+      }
+      var deco = function (asKey) {
+          return function (target, _key, index) {
+              var inject$$1 = getDecoratorDependencies(target);
+              inject$$1[index] = NewInstance.of.apply(NewInstance, [inject$$1[index]].concat(dynamicDependencies));
+              if (!!asKey) {
+                  inject$$1[index].as(asKey);
+              }
+          };
+      };
+      if (arguments.length >= 1) {
+          return deco(asKeyOrTarget);
+      }
+      return deco();
   }
 
-  var resolver = aureliaMetadata.protocol.create('aurelia:resolver', function (target) {
-      if (!(typeof target.get === 'function')) {
-          return 'Resolvers must implement: get(container: Container, key: any): any';
-      }
-      return true;
-  });
-  function isStrategy(actual, expected, state) {
-      return actual === expected;
-  }
-  var StrategyResolver = (function () {
-      function StrategyResolver(strategy, state) {
-          this.strategy = strategy;
-          this.state = state;
-      }
-      StrategyResolver.prototype.get = function (container, key) {
-          if (isStrategy(this.strategy, 0, this.state)) {
-              return this.state;
-          }
-          if (isStrategy(this.strategy, 1, this.state)) {
-              var singleton = container.invoke(this.state);
-              this.state = singleton;
-              this.strategy = 0;
-              return singleton;
-          }
-          if (isStrategy(this.strategy, 2, this.state)) {
-              return container.invoke(this.state);
-          }
-          if (isStrategy(this.strategy, 3, this.state)) {
-              return this.state(container, key, this);
-          }
-          if (isStrategy(this.strategy, 4, this.state)) {
-              return this.state[0].get(container, key);
-          }
-          if (isStrategy(this.strategy, 5, this.state)) {
-              return container.get(this.state);
-          }
-          throw new Error('Invalid strategy: ' + this.strategy);
-      };
-      StrategyResolver = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Number, Object])
-      ], StrategyResolver);
-      return StrategyResolver;
-  }());
-  var Lazy = (function () {
-      function Lazy(key) {
-          this._key = key;
-      }
-      Lazy_1 = Lazy;
-      Lazy.prototype.get = function (container) {
-          var _this = this;
-          return function () { return container.get(_this._key); };
-      };
-      Lazy.of = function (key) {
-          return new Lazy_1(key);
-      };
-      var Lazy_1;
-      Lazy = Lazy_1 = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Object])
-      ], Lazy);
-      return Lazy;
-  }());
-  var All = (function () {
-      function All(key) {
-          this._key = key;
-      }
-      All_1 = All;
-      All.prototype.get = function (container) {
-          return container.getAll(this._key);
-      };
-      All.of = function (key) {
-          return new All_1(key);
-      };
-      var All_1;
-      All = All_1 = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Object])
-      ], All);
-      return All;
-  }());
-  var Optional = (function () {
-      function Optional(key, checkParent) {
-          if (checkParent === void 0) { checkParent = true; }
-          this._key = key;
-          this._checkParent = checkParent;
-      }
-      Optional_1 = Optional;
-      Optional.prototype.get = function (container) {
-          if (container.hasResolver(this._key, this._checkParent)) {
-              return container.get(this._key);
-          }
-          return null;
-      };
-      Optional.of = function (key, checkParent) {
-          if (checkParent === void 0) { checkParent = true; }
-          return new Optional_1(key, checkParent);
-      };
-      var Optional_1;
-      Optional = Optional_1 = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Object, Boolean])
-      ], Optional);
-      return Optional;
-  }());
-  var Parent = (function () {
-      function Parent(key) {
-          this._key = key;
-      }
-      Parent_1 = Parent;
-      Parent.prototype.get = function (container) {
-          return container.parent ? container.parent.get(this._key) : null;
-      };
-      Parent.of = function (key) {
-          return new Parent_1(key);
-      };
-      var Parent_1;
-      Parent = Parent_1 = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Object])
-      ], Parent);
-      return Parent;
-  }());
-  var Factory = (function () {
-      function Factory(key) {
-          this._key = key;
-      }
-      Factory_1 = Factory;
-      Factory.prototype.get = function (container) {
-          var fn = this._key;
-          var resolver = container.getResolver(fn);
-          if (resolver && resolver.strategy === 3) {
-              fn = resolver.state;
-          }
-          return function () {
-              var rest = [];
-              for (var _i = 0; _i < arguments.length; _i++) {
-                  rest[_i] = arguments[_i];
-              }
-              return container.invoke(fn, rest);
-          };
-      };
-      Factory.of = function (key) {
-          return new Factory_1(key);
-      };
-      var Factory_1;
-      Factory = Factory_1 = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Object])
-      ], Factory);
-      return Factory;
-  }());
-  var NewInstance = (function () {
-      function NewInstance(key) {
-          var dynamicDependencies = [];
-          for (var _i = 1; _i < arguments.length; _i++) {
-              dynamicDependencies[_i - 1] = arguments[_i];
-          }
-          this.key = key;
-          this.asKey = key;
-          this.dynamicDependencies = dynamicDependencies;
-      }
-      NewInstance_1 = NewInstance;
-      NewInstance.prototype.get = function (container) {
-          var dynamicDependencies = this.dynamicDependencies.length > 0
-              ? this.dynamicDependencies.map(function (dependency) {
-                  return dependency['protocol:aurelia:resolver']
-                      ? dependency.get(container)
-                      : container.get(dependency);
-              })
-              : undefined;
-          var fn = this.key;
-          var resolver = container.getResolver(fn);
-          if (resolver && resolver.strategy === 3) {
-              fn = resolver.state;
-          }
-          var instance = container.invoke(fn, dynamicDependencies);
-          container.registerInstance(this.asKey, instance);
-          return instance;
-      };
-      NewInstance.prototype.as = function (key) {
-          this.asKey = key;
-          return this;
-      };
-      NewInstance.of = function (key) {
-          var dynamicDependencies = [];
-          for (var _i = 1; _i < arguments.length; _i++) {
-              dynamicDependencies[_i - 1] = arguments[_i];
-          }
-          return new (NewInstance_1.bind.apply(NewInstance_1, [void 0, key].concat(dynamicDependencies)))();
-      };
-      var NewInstance_1;
-      NewInstance = NewInstance_1 = __decorate([
-          resolver(),
-          __metadata("design:paramtypes", [Object, Object])
-      ], NewInstance);
-      return NewInstance;
-  }());
-  function getDecoratorDependencies(target) {
-      autoinject(target);
-      return target.inject;
-  }
-  function lazy(keyValue) {
-      return function (target, _key, index) {
-          var inject$$1 = getDecoratorDependencies(target);
-          inject$$1[index] = Lazy.of(keyValue);
-      };
-  }
-  function all(keyValue) {
-      return function (target, _key, index) {
-          var inject$$1 = getDecoratorDependencies(target);
-          inject$$1[index] = All.of(keyValue);
-      };
-  }
-  function optional(checkParentOrTarget) {
-      if (checkParentOrTarget === void 0) { checkParentOrTarget = true; }
-      var deco = function (checkParent) {
-          return function (target, _key, index) {
-              var inject$$1 = getDecoratorDependencies(target);
-              inject$$1[index] = Optional.of(inject$$1[index], checkParent);
-          };
-      };
-      if (typeof checkParentOrTarget === 'boolean') {
-          return deco(checkParentOrTarget);
-      }
-      return deco(true);
-  }
-  function parent(target, _key, index) {
-      var inject$$1 = getDecoratorDependencies(target);
-      inject$$1[index] = Parent.of(inject$$1[index]);
-  }
-  function factory(keyValue) {
-      return function (target, _key, index) {
-          var inject$$1 = getDecoratorDependencies(target);
-          inject$$1[index] = Factory.of(keyValue);
-      };
-  }
-  function newInstance(asKeyOrTarget) {
-      var dynamicDependencies = [];
-      for (var _i = 1; _i < arguments.length; _i++) {
-          dynamicDependencies[_i - 1] = arguments[_i];
-      }
-      var deco = function (asKey) {
-          return function (target, _key, index) {
-              var inject$$1 = getDecoratorDependencies(target);
-              inject$$1[index] = NewInstance.of.apply(NewInstance, [inject$$1[index]].concat(dynamicDependencies));
-              if (!!asKey) {
-                  inject$$1[index].as(asKey);
-              }
-          };
-      };
-      if (arguments.length >= 1) {
-          return deco(asKeyOrTarget);
-      }
-      return deco();
-  }
-
-  function validateKey(key) {
-      if (key === null || key === undefined) {
-          throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-      }
-  }
-  var _emptyParameters = Object.freeze([]);
-  aureliaMetadata.metadata.registration = 'aurelia:registration';
-  aureliaMetadata.metadata.invoker = 'aurelia:invoker';
-  var resolverDecorates = resolver.decorates;
-  var InvocationHandler = (function () {
-      function InvocationHandler(fn, invoker, dependencies) {
-          this.fn = fn;
-          this.invoker = invoker;
-          this.dependencies = dependencies;
-      }
-      InvocationHandler.prototype.invoke = function (container, dynamicDependencies) {
-          return dynamicDependencies !== undefined
-              ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
-              : this.invoker.invoke(container, this.fn, this.dependencies);
-      };
-      return InvocationHandler;
-  }());
-  function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
-      var i = staticDependencies.length;
-      var args = new Array(i);
-      var lookup;
-      while (i--) {
-          lookup = staticDependencies[i];
-          if (lookup === null || lookup === undefined) {
-              throw new Error('Constructor Parameter with index ' +
-                  i +
-                  ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
-          }
-          else {
-              args[i] = container.get(lookup);
-          }
-      }
-      if (dynamicDependencies !== undefined) {
-          args = args.concat(dynamicDependencies);
-      }
-      return Reflect.construct(fn, args);
-  }
-  var classInvoker = {
-      invoke: function (container, Type, deps) {
-          var instances = deps.map(function (dep) { return container.get(dep); });
-          return Reflect.construct(Type, instances);
-      },
-      invokeWithDynamicDependencies: invokeWithDynamicDependencies
-  };
-  function getDependencies(f) {
-      if (!f.hasOwnProperty('inject')) {
-          return [];
-      }
-      if (typeof f.inject === 'function') {
-          return f.inject();
-      }
-      return f.inject;
-  }
-  var Container = (function () {
-      function Container(configuration) {
-          if (configuration === undefined) {
-              configuration = {};
-          }
-          this._configuration = configuration;
-          this._onHandlerCreated = configuration.onHandlerCreated;
-          this._handlers =
-              configuration.handlers || (configuration.handlers = new Map());
-          this._resolvers = new Map();
-          this.root = this;
-          this.parent = null;
-      }
-      Container.prototype.makeGlobal = function () {
-          Container.instance = this;
-          return this;
-      };
-      Container.prototype.setHandlerCreatedCallback = function (onHandlerCreated) {
-          this._onHandlerCreated = onHandlerCreated;
-          this._configuration.onHandlerCreated = onHandlerCreated;
-      };
-      Container.prototype.registerInstance = function (key, instance) {
-          return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
-      };
-      Container.prototype.registerSingleton = function (key, fn) {
-          return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
-      };
-      Container.prototype.registerTransient = function (key, fn) {
-          return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
-      };
-      Container.prototype.registerHandler = function (key, handler) {
-          return this.registerResolver(key, new StrategyResolver(3, handler));
-      };
-      Container.prototype.registerAlias = function (originalKey, aliasKey) {
-          return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
-      };
-      Container.prototype.registerResolver = function (key, resolver$$1) {
-          validateKey(key);
-          var allResolvers = this._resolvers;
-          var result = allResolvers.get(key);
-          if (result === undefined) {
-              allResolvers.set(key, resolver$$1);
-          }
-          else if (result.strategy === 4) {
-              result.state.push(resolver$$1);
-          }
-          else {
-              allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
-          }
-          return resolver$$1;
-      };
-      Container.prototype.autoRegister = function (key, fn) {
-          fn = fn === undefined ? key : fn;
-          if (typeof fn === 'function') {
-              var registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, fn);
-              if (registration === undefined) {
-                  return this.registerResolver(key, new StrategyResolver(1, fn));
-              }
-              return registration.registerResolver(this, key, fn);
-          }
-          return this.registerResolver(key, new StrategyResolver(0, fn));
-      };
-      Container.prototype.autoRegisterAll = function (fns) {
-          var i = fns.length;
-          while (i--) {
-              this.autoRegister(fns[i]);
-          }
-      };
-      Container.prototype.unregister = function (key) {
-          this._resolvers.delete(key);
-      };
-      Container.prototype.hasResolver = function (key, checkParent) {
-          if (checkParent === void 0) { checkParent = false; }
-          validateKey(key);
-          return (this._resolvers.has(key) ||
-              (checkParent &&
-                  this.parent !== null &&
-                  this.parent.hasResolver(key, checkParent)));
-      };
-      Container.prototype.getResolver = function (key) {
-          return this._resolvers.get(key);
-      };
-      Container.prototype.get = function (key) {
-          validateKey(key);
-          if (key === Container) {
-              return this;
-          }
-          if (resolverDecorates(key)) {
-              return key.get(this, key);
-          }
-          var resolver$$1 = this._resolvers.get(key);
-          if (resolver$$1 === undefined) {
-              if (this.parent === null) {
-                  return this.autoRegister(key).get(this, key);
-              }
-              var registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, key);
-              if (registration === undefined) {
-                  return this.parent._get(key);
-              }
-              return registration.registerResolver(this, key, key).get(this, key);
-          }
-          return resolver$$1.get(this, key);
-      };
-      Container.prototype._get = function (key) {
-          var resolver$$1 = this._resolvers.get(key);
-          if (resolver$$1 === undefined) {
-              if (this.parent === null) {
-                  return this.autoRegister(key).get(this, key);
-              }
-              return this.parent._get(key);
-          }
-          return resolver$$1.get(this, key);
-      };
-      Container.prototype.getAll = function (key) {
-          validateKey(key);
-          var resolver$$1 = this._resolvers.get(key);
-          if (resolver$$1 === undefined) {
-              if (this.parent === null) {
-                  return _emptyParameters;
-              }
-              return this.parent.getAll(key);
-          }
-          if (resolver$$1.strategy === 4) {
-              var state = resolver$$1.state;
-              var i = state.length;
-              var results = new Array(i);
-              while (i--) {
-                  results[i] = state[i].get(this, key);
-              }
-              return results;
-          }
-          return [resolver$$1.get(this, key)];
-      };
-      Container.prototype.createChild = function () {
-          var child = new Container(this._configuration);
-          child.root = this.root;
-          child.parent = this;
-          return child;
-      };
-      Container.prototype.invoke = function (fn, dynamicDependencies) {
-          try {
-              var handler = this._handlers.get(fn);
-              if (handler === undefined) {
-                  handler = this._createInvocationHandler(fn);
-                  this._handlers.set(fn, handler);
-              }
-              return handler.invoke(this, dynamicDependencies);
-          }
-          catch (e) {
-              throw new aureliaPal.AggregateError("Error invoking " + fn.name + ". Check the inner error for details.", e, true);
-          }
-      };
-      Container.prototype._createInvocationHandler = function (fn) {
-          var dependencies;
-          if (fn.inject === undefined) {
-              dependencies =
-                  aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, fn) || _emptyParameters;
-          }
-          else {
-              dependencies = [];
-              var ctor = fn;
-              while (typeof ctor === 'function') {
-                  dependencies.push.apply(dependencies, getDependencies(ctor));
-                  ctor = Object.getPrototypeOf(ctor);
-              }
-          }
-          var invoker = aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.invoker, fn) || classInvoker;
-          var handler = new InvocationHandler(fn, invoker, dependencies);
-          return this._onHandlerCreated !== undefined
-              ? this._onHandlerCreated(handler)
-              : handler;
-      };
-      return Container;
+  function validateKey(key) {
+      if (key === null || key === undefined) {
+          throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+      }
+  }
+  var _emptyParameters = Object.freeze([]);
+  aureliaMetadata.metadata.registration = 'aurelia:registration';
+  aureliaMetadata.metadata.invoker = 'aurelia:invoker';
+  var resolverDecorates = resolver.decorates;
+  var InvocationHandler = (function () {
+      function InvocationHandler(fn, invoker, dependencies) {
+          this.fn = fn;
+          this.invoker = invoker;
+          this.dependencies = dependencies;
+      }
+      InvocationHandler.prototype.invoke = function (container, dynamicDependencies) {
+          return dynamicDependencies !== undefined
+              ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)
+              : this.invoker.invoke(container, this.fn, this.dependencies);
+      };
+      return InvocationHandler;
+  }());
+  function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {
+      var i = staticDependencies.length;
+      var args = new Array(i);
+      var lookup;
+      while (i--) {
+          lookup = staticDependencies[i];
+          if (lookup === null || lookup === undefined) {
+              throw new Error('Constructor Parameter with index ' +
+                  i +
+                  ' cannot be null or undefined. Are you trying to inject/register something that doesn\'t exist with DI?');
+          }
+          else {
+              args[i] = container.get(lookup);
+          }
+      }
+      if (dynamicDependencies !== undefined) {
+          args = args.concat(dynamicDependencies);
+      }
+      return Reflect.construct(fn, args);
+  }
+  var classInvoker = {
+      invoke: function (container, Type, deps) {
+          var instances = deps.map(function (dep) { return container.get(dep); });
+          return Reflect.construct(Type, instances);
+      },
+      invokeWithDynamicDependencies: invokeWithDynamicDependencies
+  };
+  function getDependencies(f) {
+      if (!f.hasOwnProperty('inject')) {
+          return [];
+      }
+      if (typeof f.inject === 'function') {
+          return f.inject();
+      }
+      return f.inject;
+  }
+  var Container = (function () {
+      function Container(configuration) {
+          if (configuration === undefined) {
+              configuration = {};
+          }
+          this._configuration = configuration;
+          this._onHandlerCreated = configuration.onHandlerCreated;
+          this._handlers =
+              configuration.handlers || (configuration.handlers = new Map());
+          this._resolvers = new Map();
+          this.root = this;
+          this.parent = null;
+      }
+      Container.prototype.makeGlobal = function () {
+          Container.instance = this;
+          return this;
+      };
+      Container.prototype.setHandlerCreatedCallback = function (onHandlerCreated) {
+          this._onHandlerCreated = onHandlerCreated;
+          this._configuration.onHandlerCreated = onHandlerCreated;
+      };
+      Container.prototype.registerInstance = function (key, instance) {
+          return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));
+      };
+      Container.prototype.registerSingleton = function (key, fn) {
+          return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));
+      };
+      Container.prototype.registerTransient = function (key, fn) {
+          return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));
+      };
+      Container.prototype.registerHandler = function (key, handler) {
+          return this.registerResolver(key, new StrategyResolver(3, handler));
+      };
+      Container.prototype.registerAlias = function (originalKey, aliasKey) {
+          return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));
+      };
+      Container.prototype.registerResolver = function (key, resolver$$1) {
+          validateKey(key);
+          var allResolvers = this._resolvers;
+          var result = allResolvers.get(key);
+          if (result === undefined) {
+              allResolvers.set(key, resolver$$1);
+          }
+          else if (result.strategy === 4) {
+              result.state.push(resolver$$1);
+          }
+          else {
+              allResolvers.set(key, new StrategyResolver(4, [result, resolver$$1]));
+          }
+          return resolver$$1;
+      };
+      Container.prototype.autoRegister = function (key, fn) {
+          fn = fn === undefined ? key : fn;
+          if (typeof fn === 'function') {
+              var registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, fn);
+              if (registration === undefined) {
+                  return this.registerResolver(key, new StrategyResolver(1, fn));
+              }
+              return registration.registerResolver(this, key, fn);
+          }
+          return this.registerResolver(key, new StrategyResolver(0, fn));
+      };
+      Container.prototype.autoRegisterAll = function (fns) {
+          var i = fns.length;
+          while (i--) {
+              this.autoRegister(fns[i]);
+          }
+      };
+      Container.prototype.unregister = function (key) {
+          this._resolvers.delete(key);
+      };
+      Container.prototype.hasResolver = function (key, checkParent) {
+          if (checkParent === void 0) { checkParent = false; }
+          validateKey(key);
+          return (this._resolvers.has(key) ||
+              (checkParent &&
+                  this.parent !== null &&
+                  this.parent.hasResolver(key, checkParent)));
+      };
+      Container.prototype.getResolver = function (key) {
+          return this._resolvers.get(key);
+      };
+      Container.prototype.get = function (key) {
+          validateKey(key);
+          if (key === Container) {
+              return this;
+          }
+          if (resolverDecorates(key)) {
+              return key.get(this, key);
+          }
+          var resolver$$1 = this._resolvers.get(key);
+          if (resolver$$1 === undefined) {
+              if (this.parent === null) {
+                  return this.autoRegister(key).get(this, key);
+              }
+              var registration = aureliaMetadata.metadata.get(aureliaMetadata.metadata.registration, key);
+              if (registration === undefined) {
+                  return this.parent._get(key);
+              }
+              return registration.registerResolver(this, key, key).get(this, key);
+          }
+          return resolver$$1.get(this, key);
+      };
+      Container.prototype._get = function (key) {
+          var resolver$$1 = this._resolvers.get(key);
+          if (resolver$$1 === undefined) {
+              if (this.parent === null) {
+                  return this.autoRegister(key).get(this, key);
+              }
+              return this.parent._get(key);
+          }
+          return resolver$$1.get(this, key);
+      };
+      Container.prototype.getAll = function (key) {
+          validateKey(key);
+          var resolver$$1 = this._resolvers.get(key);
+          if (resolver$$1 === undefined) {
+              if (this.parent === null) {
+                  return _emptyParameters;
+              }
+              return this.parent.getAll(key);
+          }
+          if (resolver$$1.strategy === 4) {
+              var state = resolver$$1.state;
+              var i = state.length;
+              var results = new Array(i);
+              while (i--) {
+                  results[i] = state[i].get(this, key);
+              }
+              return results;
+          }
+          return [resolver$$1.get(this, key)];
+      };
+      Container.prototype.createChild = function () {
+          var child = new Container(this._configuration);
+          child.root = this.root;
+          child.parent = this;
+          return child;
+      };
+      Container.prototype.invoke = function (fn, dynamicDependencies) {
+          try {
+              var handler = this._handlers.get(fn);
+              if (handler === undefined) {
+                  handler = this._createInvocationHandler(fn);
+                  this._handlers.set(fn, handler);
+              }
+              return handler.invoke(this, dynamicDependencies);
+          }
+          catch (e) {
+              throw new aureliaPal.AggregateError("Error invoking " + fn.name + ". Check the inner error for details.", e, true);
+          }
+      };
+      Container.prototype._createInvocationHandler = function (fn) {
+          var dependencies;
+          if (fn.inject === undefined) {
+              dependencies =
+                  aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.paramTypes, fn) || _emptyParameters;
+          }
+          else {
+              dependencies = [];
+              var ctor = fn;
+              while (typeof ctor === 'function') {
+                  dependencies.push.apply(dependencies, getDependencies(ctor));
+                  ctor = Object.getPrototypeOf(ctor);
+              }
+          }
+          var invoker = aureliaMetadata.metadata.getOwn(aureliaMetadata.metadata.invoker, fn) || classInvoker;
+          var handler = new InvocationHandler(fn, invoker, dependencies);
+          return this._onHandlerCreated !== undefined
+              ? this._onHandlerCreated(handler)
+              : handler;
+      };
+      return Container;
   }());
 
-  function invoker(value) {
-      return function (target) {
-          aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, value, target);
-      };
-  }
-  function invokeAsFactory(potentialTarget) {
-      var deco = function (target) {
-          aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, FactoryInvoker.instance, target);
-      };
-      return potentialTarget ? deco(potentialTarget) : deco;
-  }
-  var FactoryInvoker = (function () {
-      function FactoryInvoker() {
-      }
-      FactoryInvoker.prototype.invoke = function (container, fn, dependencies) {
-          var i = dependencies.length;
-          var args = new Array(i);
-          while (i--) {
-              args[i] = container.get(dependencies[i]);
-          }
-          return fn.apply(undefined, args);
-      };
-      FactoryInvoker.prototype.invokeWithDynamicDependencies = function (container, fn, staticDependencies, dynamicDependencies) {
-          var i = staticDependencies.length;
-          var args = new Array(i);
-          while (i--) {
-              args[i] = container.get(staticDependencies[i]);
-          }
-          if (dynamicDependencies !== undefined) {
-              args = args.concat(dynamicDependencies);
-          }
-          return fn.apply(undefined, args);
-      };
-      return FactoryInvoker;
-  }());
+  function invoker(value) {
+      return function (target) {
+          aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, value, target);
+      };
+  }
+  function invokeAsFactory(potentialTarget) {
+      var deco = function (target) {
+          aureliaMetadata.metadata.define(aureliaMetadata.metadata.invoker, FactoryInvoker.instance, target);
+      };
+      return potentialTarget ? deco(potentialTarget) : deco;
+  }
+  var FactoryInvoker = (function () {
+      function FactoryInvoker() {
+      }
+      FactoryInvoker.prototype.invoke = function (container, fn, dependencies) {
+          var i = dependencies.length;
+          var args = new Array(i);
+          while (i--) {
+              args[i] = container.get(dependencies[i]);
+          }
+          return fn.apply(undefined, args);
+      };
+      FactoryInvoker.prototype.invokeWithDynamicDependencies = function (container, fn, staticDependencies, dynamicDependencies) {
+          var i = staticDependencies.length;
+          var args = new Array(i);
+          while (i--) {
+              args[i] = container.get(staticDependencies[i]);
+          }
+          if (dynamicDependencies !== undefined) {
+              args = args.concat(dynamicDependencies);
+          }
+          return fn.apply(undefined, args);
+      };
+      return FactoryInvoker;
+  }());
   FactoryInvoker.instance = new FactoryInvoker();
 
-  function registration(value) {
-      return function (target) {
-          aureliaMetadata.metadata.define(aureliaMetadata.metadata.registration, value, target);
-      };
-  }
-  function transient(key) {
-      return registration(new TransientRegistration(key));
-  }
-  function singleton(keyOrRegisterInChild, registerInChild) {
-      if (registerInChild === void 0) { registerInChild = false; }
-      return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
-  }
-  var TransientRegistration = (function () {
-      function TransientRegistration(key) {
-          this._key = key;
-      }
-      TransientRegistration.prototype.registerResolver = function (container, key, fn) {
-          var existingResolver = container.getResolver(this._key || key);
-          return existingResolver === undefined
-              ? container.registerTransient((this._key || key), fn)
-              : existingResolver;
-      };
-      return TransientRegistration;
-  }());
-  var SingletonRegistration = (function () {
-      function SingletonRegistration(keyOrRegisterInChild, registerInChild) {
-          if (registerInChild === void 0) { registerInChild = false; }
-          if (typeof keyOrRegisterInChild === 'boolean') {
-              this._registerInChild = keyOrRegisterInChild;
-          }
-          else {
-              this._key = keyOrRegisterInChild;
-              this._registerInChild = registerInChild;
-          }
-      }
-      SingletonRegistration.prototype.registerResolver = function (container, key, fn) {
-          var targetContainer = this._registerInChild ? container : container.root;
-          var existingResolver = targetContainer.getResolver(this._key || key);
-          return existingResolver === undefined
-              ? targetContainer.registerSingleton(this._key || key, fn)
-              : existingResolver;
-      };
-      return SingletonRegistration;
+  function registration(value) {
+      return function (target) {
+          aureliaMetadata.metadata.define(aureliaMetadata.metadata.registration, value, target);
+      };
+  }
+  function transient(key) {
+      return registration(new TransientRegistration(key));
+  }
+  function singleton(keyOrRegisterInChild, registerInChild) {
+      if (registerInChild === void 0) { registerInChild = false; }
+      return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
+  }
+  var TransientRegistration = (function () {
+      function TransientRegistration(key) {
+          this._key = key;
+      }
+      TransientRegistration.prototype.registerResolver = function (container, key, fn) {
+          var existingResolver = container.getResolver(this._key || key);
+          return existingResolver === undefined
+              ? container.registerTransient((this._key || key), fn)
+              : existingResolver;
+      };
+      return TransientRegistration;
+  }());
+  var SingletonRegistration = (function () {
+      function SingletonRegistration(keyOrRegisterInChild, registerInChild) {
+          if (registerInChild === void 0) { registerInChild = false; }
+          if (typeof keyOrRegisterInChild === 'boolean') {
+              this._registerInChild = keyOrRegisterInChild;
+          }
+          else {
+              this._key = keyOrRegisterInChild;
+              this._registerInChild = registerInChild;
+          }
+      }
+      SingletonRegistration.prototype.registerResolver = function (container, key, fn) {
+          var targetContainer = this._registerInChild ? container : container.root;
+          var existingResolver = targetContainer.getResolver(this._key || key);
+          return existingResolver === undefined
+              ? targetContainer.registerSingleton(this._key || key, fn)
+              : existingResolver;
+      };
+      return SingletonRegistration;
   }());
 
   exports._emptyParameters = _emptyParameters;
diff --git a/doc/CHANGELOG.md b/doc/CHANGELOG.md
index 4d257fc..f72469c 100644
--- a/doc/CHANGELOG.md
+++ b/doc/CHANGELOG.md
@@ -1,597 +1,597 @@
-# Change Log
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-## [1.4.3](https://github.com/aurelia/dependency-injection/compare/1.4.2...1.4.3) (2019-07-06)
-
-#### Breaking Changes
-
-* Added typings to a majority of the framework. Previously all instances
-  retrieved from a container or functor were cast to any. Now they're typed by
-  inference to the key. If the key is a class the instance will be typed to an
-  instance of that class. If the key is a functor, it will be resolved to the
-  return type of the functor. All other keys will be typed to any.
-
- ([e5e277df](http://github.com/aurelia/dependency-injection/commit/e5e277dfa74d99ee9952f0b731eae4ec30e628ea))
-
-
-### Bug Fixes
-
-* **ci:** add dev dep jspm ([ad4be00](https://github.com/aurelia/dependency-injection/commit/ad4be00))
-* **ci:** take our circle ci ([9899197](https://github.com/aurelia/dependency-injection/commit/9899197))
-
-
-
-<a name="1.4.2"></a>
-## [1.4.2](https://github.com/aurelia/dependency-injection/compare/1.4.1...1.4.2) (2018-12-18)
-
-
-### Bug Fixes
-
-* **dependency-injection:** add more tests using cases suggested by [@fkleuver](https://github.com/fkleuver) ([ac4e6f9](https://github.com/aurelia/dependency-injection/commit/ac4e6f9)), closes [#171](https://github.com/aurelia/dependency-injection/issues/171)
-* **dependency-injection:** adjust based on review ([dc756f4](https://github.com/aurelia/dependency-injection/commit/dc756f4)), closes [#171](https://github.com/aurelia/dependency-injection/issues/171)
-* **dependency-injection:** ignore ...rest TypeScript metadata ([c093756](https://github.com/aurelia/dependency-injection/commit/c093756)), closes [#171](https://github.com/aurelia/dependency-injection/issues/171)
-
-
-
-<a name="1.4.0"></a>
-# [1.4.0](https://github.com/aurelia/dependency-injection/compare/1.3.2...1.4.0) (2018-06-18)
-
-
-### Bug Fixes
-
-* **injection:** fail with autoinject and own static inject ([e230bda](https://github.com/aurelia/dependency-injection/commit/e230bda))
-* **resolver:** use own property 'inject' in autoinject and parameter decorators ([724ff08](https://github.com/aurelia/dependency-injection/commit/724ff08))
-* **resolvers:** remove unusable asValue option of the factory decorator ([5739152](https://github.com/aurelia/dependency-injection/commit/5739152))
-
-
-### Features
-
-* **resolvers:** allow using Factory.of and NewInstance.of with registered handlers ([991cbb5](https://github.com/aurelia/dependency-injection/commit/991cbb5))
-
-
-
-<a name="1.3.2"></a>
-## [1.3.2](https://github.com/aurelia/dependency-injection/compare/1.3.1...v1.3.2) (2017-08-22)
-
-
-### Performance Improvements
-
-* **container:** improve dynamic construction of static depencies ([01b2988](https://github.com/aurelia/dependency-injection/commit/01b2988))
-
-
-
-<a name="1.3.1"></a>
-## [1.3.1](https://github.com/aurelia/dependency-injection/compare/1.3.0...v1.3.1) (2017-04-05)
-
-* Documentation update.
-
-<a name="1.3.0"></a>
-# [1.3.0](https://github.com/aurelia/dependency-injection/compare/1.2.1...v1.3.0) (2017-01-12)
-
-
-### Bug Fixes
-
-* **registrations:** incorrect behavior for auto resolution when... ([708b5fd](https://github.com/aurelia/dependency-injection/commit/708b5fd))
-
-
-
-<a name="1.2.1"></a>
-## [1.2.1](https://github.com/aurelia/dependency-injection/compare/1.2.0...v1.2.1) (2016-12-13)
-
-
-### Bug Fixes
-
-* **autoinject:** prevent changing inject of parent classes ([aa38a34](https://github.com/aurelia/dependency-injection/commit/aa38a34))
-* **container:** check for custom registration before bubbling ([98739f2](https://github.com/aurelia/dependency-injection/commit/98739f2))
-
-
-
-# 1.2.0
-
-## Bug Fixes
-
-* **autoinject**: merge issue caused incorrect branching logic
-* **invokers:** remove duplicate export name
-
-<a name="1.1.0"></a>
-# [1.1.0](https://github.com/aurelia/dependency-injection/compare/1.0.0...v1.1.0) (2016-10-05)
-
-### Bug Fixes
-
-* **injection:** correct internal loop error and enable inheritence with autoinject
-
-### Features
-
-* **resolvers:** let NewInstance have resolved dynamics dependencies ([0fcda8b](https://github.com/aurelia/dependency-injection/commit/0fcda8b))
-* **resolvers:** let NewInstance resolver have dynamics dependencies ([c6275a5](https://github.com/aurelia/dependency-injection/commit/c6275a5))
-
-
-
-<a name="1.0.0"></a>
-# [1.0.0](https://github.com/aurelia/dependency-injection/compare/1.0.0-rc.1.0.1...v1.0.0) (2016-07-27)
-
-
-### Bug Fixes
-
-* **injection:** allow combining with [@autoinject](https://github.com/autoinject) ([7219579](https://github.com/aurelia/dependency-injection/commit/7219579))
-
-
-### Features
-
-* **resolver:** added decorators for lazy, all, optional, parent, factory and newInstance ([24e19a2](https://github.com/aurelia/dependency-injection/commit/24e19a2))
-* **resolvers:** add asValue to factory argument decorator ([28db168](https://github.com/aurelia/dependency-injection/commit/28db168))
-
-
-
-<a name="1.0.0-rc.1.0.1"></a>
-# [1.0.0-rc.1.0.1](https://github.com/aurelia/dependency-injection/compare/1.0.0-rc.1.0.0...v1.0.0-rc.1.0.1) (2016-07-12)
-
-
-### Bug Fixes
-
-* **Optional:** change checkParent default to true ([a8a8620](https://github.com/aurelia/dependency-injection/commit/a8a8620)), closes [#94](https://github.com/aurelia/dependency-injection/issues/94)
-
-
-### Features
-
-* **container:** return Resolvers from registration methods ([3fc10cb](https://github.com/aurelia/dependency-injection/commit/3fc10cb)), closes [#82](https://github.com/aurelia/dependency-injection/issues/82)
-
-
-
-<a name="1.0.0-rc.1.0.0"></a>
-# [1.0.0-rc.1.0.0](https://github.com/aurelia/dependency-injection/compare/1.0.0-beta.2.1.1...v1.0.0-rc.1.0.0) (2016-06-22)
-
-
-
-### 1.0.0-beta.1.2.3 (2016-05-10)
-
-
-### 1.0.0-beta.1.2.2 (2016-04-29)
-
-* docs update
-
-### 1.0.0-beta.1.2.1 (2016-04-29)
-
-* docs release
-
-### 1.0.0-beta.1.2.0 (2016-03-22)
-
-
-#### Features
-
-* **inheritence:** allow injection w/ inheritence ([0615ac1d](http://github.com/aurelia/dependency-injection/commit/0615ac1db4c2f2e91fc1bb028217cc3540a8e6c7))
-
-
-### 1.0.0-beta.1.1.5 (2016-03-04)
-
-
-#### Features
-
-* **resolver:** add factory resolver ([0d59042d](http://github.com/aurelia/dependency-injection/commit/0d59042dff1d4987c67be789e0688b6e85ce587a))
-
-
-### 1.0.0-beta.1.1.4 (2016-03-01)
-
-
-#### Bug Fixes
-
-* **all:** remove core-js dependency ([4dff5f15](http://github.com/aurelia/dependency-injection/commit/4dff5f15761485ca744f82b950f9b6e9e719350e))
-
-
-### 1.0.0-beta.1.1.3 (2016-02-08)
-
-
-### 1.0.0-beta.1.1.1 (2016-01-28)
-
-* fix package metadata for jspm
-
-### 1.0.0-beta.1.1.0 (2016-01-28)
-
-
-#### Bug Fixes
-
-* **container:** correct inconsistent return type from getAll ([bbbef9e5](http://github.com/aurelia/dependency-injection/commit/bbbef9e582e4a81497db5655c7a7e9d2d1e5c10a), closes [#71](http://github.com/aurelia/dependency-injection/issues/71))
-
-
-#### Features
-
-* **all:** update for jspm; update core-js; update aurelia deps ([11d16867](http://github.com/aurelia/dependency-injection/commit/11d1686765c626896dbb3d5edb7f5b40da9dd5ca))
-
-
-### 1.0.0-beta.1.0.1 (2016-01-08)
-
-* minor perf work
-
-### 1.0.0-beta.1 (2015-11-16)
-
-
-### 0.12.1 (2015-11-11)
-
-
-#### Bug Fixes
-
-* **all:** TS fixes for decorators ([04257368](http://github.com/aurelia/dependency-injection/commit/0425736875302f80c0216c7caaa9421182f4184d))
-
-
-## 0.12.0 (2015-11-09)
-
-
-#### Bug Fixes
-
-* **container:** bug with build combining and renamed imports ([090c041a](http://github.com/aurelia/dependency-injection/commit/090c041a53cd7d653cf034aa753ce90e9c0b3df1))
-* **resolvers:** typo in resolver protocol name ([befe9668](http://github.com/aurelia/dependency-injection/commit/befe966899781d3c54710e75b901ebf0ebaa8d34))
-
-
-#### Features
-
-* **all:**
-  * further refining of data structures and hooks; api lockdown and docs complete ([0ee0c34c](http://github.com/aurelia/dependency-injection/commit/0ee0c34cb0b63f5ca89a5ddca9c2a34cf6ed6ebc))
-  * new resolver marker, fixed registrations, onActivate hook, invokers ([ca5ccf7d](http://github.com/aurelia/dependency-injection/commit/ca5ccf7d03e907ce9fb794dcbe9f0065ceba3c43))
-
-
-### 0.11.2 (2015-10-15)
-
-
-#### Bug Fixes
-
-* **registrations:** move configuration to correct instance ([e6d4b542](http://github.com/aurelia/dependency-injection/commit/e6d4b5420aec12940fbce21852a44c248deb4340))
-
-
-### 0.11.1 (2015-10-15)
-
-
-#### Bug Fixes
-
-* **registrations:** properly handle registrations that want to target different containers ([b60c1039](http://github.com/aurelia/dependency-injection/commit/b60c10392588b49b6b3ea2fb20c75c27c2a73bb5))
-
-
-## 0.11.0 (2015-10-13)
-
-
-#### Bug Fixes
-
-* repair error msg for broken view model ([60880447](http://github.com/aurelia/dependency-injection/commit/60880447d758ebe2ce003bee4a5714557957045e))
-* **Container:** remove new in function call ([08cd06fd](http://github.com/aurelia/dependency-injection/commit/08cd06fd6393e8941a2a2a0df012df3a209eedda))
-* **all:**
-  * update to latest metadata api ([bfa78327](http://github.com/aurelia/dependency-injection/commit/bfa78327ffd2992f18214ab6da0e25f37559cfc0))
-  * address lint errors ([d2e36a57](http://github.com/aurelia/dependency-injection/commit/d2e36a5704a0f890142021fba4d2f0bc9d9dc67a))
-  * improve some type info ([2aa55dea](http://github.com/aurelia/dependency-injection/commit/2aa55deaedee4fbc2a948df1547449cae7d49bd5))
-  * switch to new metadata abstraction ([05f3bfde](http://github.com/aurelia/dependency-injection/commit/05f3bfde7b032d83df14eb7b23b6292534c91c02))
-  * update compiler to latest version ([b6a3dd03](http://github.com/aurelia/dependency-injection/commit/b6a3dd034ce3b55a08770b969af2f113803cbd0e))
-  * explicit import of core-js and switch to Reflect.construct ([5ebe60be](http://github.com/aurelia/dependency-injection/commit/5ebe60be9170dd8ecf34b19dc9b6e88144dfc13b))
-  * switch to metadata api ([19c60ad9](http://github.com/aurelia/dependency-injection/commit/19c60ad976a6bd8216dfbddbe8f7ac12ca1325d2))
-* **bower:** correct semver range ([3b7670c3](http://github.com/aurelia/dependency-injection/commit/3b7670c3ead8cc1b5e41874029f1e6fef86ed187))
-* **build:**
-  * update linting, testing and tools ([97d032c8](http://github.com/aurelia/dependency-injection/commit/97d032c85c747e25eb1bcd87d46f211916d2f239))
-  * add missing bower bump ([39ab3d07](http://github.com/aurelia/dependency-injection/commit/39ab3d07d0c0d893206f61ebfe4f658a66303895))
-* **container:**
-  * improved alias handling ([a2eb66c3](http://github.com/aurelia/dependency-injection/commit/a2eb66c34ec05112ab9d702d2ee211b6a7f7714d))
-  * prevent a breaking api change ([9198b164](http://github.com/aurelia/dependency-injection/commit/9198b1649d0e2405da32600e5aca3960f7bd1834))
-  * add generics to Map type info ([072262ef](http://github.com/aurelia/dependency-injection/commit/072262ef7ca9656739e9bbda49fd3d75ba6c113c))
-  * dry out bad key error message ([58a1036f](http://github.com/aurelia/dependency-injection/commit/58a1036f5e52eadfc1b3bd65a22ebaebf94d715c))
-  * Improve error message on bad key for DI ([6495ad3b](http://github.com/aurelia/dependency-injection/commit/6495ad3b84938ea66749e07f8c271b87e0a53074), closes [#36](http://github.com/aurelia/dependency-injection/issues/36))
-  * enable autoregister of non-functions ([c40ac432](http://github.com/aurelia/dependency-injection/commit/c40ac432ca6c3d63ccddb6c6c5bcaa2ffa6c5ba9), closes [#31](http://github.com/aurelia/dependency-injection/issues/31))
-  * remove initialize hack ([5c9fdd09](http://github.com/aurelia/dependency-injection/commit/5c9fdd09dd1d0848da0b24c694c95e20ca82c01c))
-  * better errors for instantiation failures ([8c5e3a64](http://github.com/aurelia/dependency-injection/commit/8c5e3a647bb4354f2c420d37e405792b9cc8601f))
-  * factories are explicit ([667a16e4](http://github.com/aurelia/dependency-injection/commit/667a16e4dbd07b75493e0690ac4232d8c0cb508c), closes [#13](http://github.com/aurelia/dependency-injection/issues/13))
-  * remove bogus createTypedChild api ([42b2ae2a](http://github.com/aurelia/dependency-injection/commit/42b2ae2a1507672f95503c0bc9257c755324a520))
-  * discover registration attributes on base classes ([b7af69d1](http://github.com/aurelia/dependency-injection/commit/b7af69d101bad032acaf41e37140e57e52b6c07f))
-* **decorators:** remove unnecessary returns ([150607d1](http://github.com/aurelia/dependency-injection/commit/150607d1cde449b8065440d5ca90b1a0a8e07721))
-* **dependency-injection:** Use correct import for core-js We were previously using `import core from core-j ([625c1eea](http://github.com/aurelia/dependency-injection/commit/625c1eea4d2b90b7fbb22ebb75fb9feec3676829))
-* **emptyParameters:** import from ./container ([7d4cfc92](http://github.com/aurelia/dependency-injection/commit/7d4cfc929514519138cc1af36661951dd5ff42c8))
-* **optional:** add Optional annotation to public api ([1d688334](http://github.com/aurelia/dependency-injection/commit/1d688334ac5fe16ec692fe8a4bb09d63a7698632))
-* **package:**
-  * update aurelia tools and dts generator ([83c1e2cb](http://github.com/aurelia/dependency-injection/commit/83c1e2cb096ce8f6802d78419a5e9f0afb895776))
-  * change jspm directories ([cef0da35](http://github.com/aurelia/dependency-injection/commit/cef0da351e26aa549e45b48dc6cd98e3e6b6fcaa))
-  * update dependencies ([25e924ca](http://github.com/aurelia/dependency-injection/commit/25e924caccdfd033657047a22b93428b90363700))
-  * update dependencies ([247d9ff9](http://github.com/aurelia/dependency-injection/commit/247d9ff925af07488d9ce6337e64e977370ab43a))
-  * update Aurelia dependencies ([ccf09589](http://github.com/aurelia/dependency-injection/commit/ccf09589cfdd76ac77df12fad7e4ae6383000f48))
-  * change doc json media type ([b82feb82](http://github.com/aurelia/dependency-injection/commit/b82feb82f758ddc820039d7e32b1079908706020))
-  * update dependencies to latest ([54a0bda1](http://github.com/aurelia/dependency-injection/commit/54a0bda1a217200c07cbee81193b044038b2b09a))
-  * add es6-shim polyfill ([4732acee](http://github.com/aurelia/dependency-injection/commit/4732acee560080be01ea579ac5124e63079e8571))
-* **singleton:** alway register in the root container ([186b573e](http://github.com/aurelia/dependency-injection/commit/186b573e0e3d09f57bedf8fd7c37ab862dc2f5d1), closes [#22](http://github.com/aurelia/dependency-injection/issues/22))
-* **util:**
-  * fix ridiculously dumb error ([8cfe89f0](http://github.com/aurelia/dependency-injection/commit/8cfe89f0de5d2d6101f5421bf941dc84352bba9d))
-  * function name polyfill should minify correctly ([85358c53](http://github.com/aurelia/dependency-injection/commit/85358c5359ddc0a069c4d049fd28d760052cb437))
-
-
-#### Features
-
-* **all:**
-  * add pal dependency ([e2e1b6f9](http://github.com/aurelia/dependency-injection/commit/e2e1b6f9654ea26223a3ab5a7a9d5ca884e0e927))
-  * new implementation ([481b29b9](http://github.com/aurelia/dependency-injection/commit/481b29b9a15518c82915c5f5a19a9958762e1b3e))
-  * update to using the new metadata api ([51bfdd1e](http://github.com/aurelia/dependency-injection/commit/51bfdd1e1042178a301346a263b642e14aa5f394))
-  * add decorator support ([120e61a3](http://github.com/aurelia/dependency-injection/commit/120e61a3aa686cee4a2cb7008a59d3b0eab8fb1c))
-  * update to fluent metadata and add helpers ([8e3b7576](http://github.com/aurelia/dependency-injection/commit/8e3b7576bd7fda89bec4b2c79154c6a7a296a6aa))
-* **annotations:** add optional resolver ([27a580d3](http://github.com/aurelia/dependency-injection/commit/27a580d38d1ea899fd10ba4dbe80639dda1422e0))
-* **build:** update compiler and switch to register module format ([e959d7bb](http://github.com/aurelia/dependency-injection/commit/e959d7bb8f06cdc4bee5ee48afa5bdb62ed79ab3))
-* **container:**
-  * add ability to register aliases for any DI key ([d4451482](http://github.com/aurelia/dependency-injection/commit/d4451482ea8c9f48000e40cf7cdbdc850ec3c09e))
-  * enable the invoke helper to take additional deps ([eec36d2a](http://github.com/aurelia/dependency-injection/commit/eec36d2a69e3ca35eef4798d91e66192dcb103d6))
-  * turn a container instance into a globally reachable singleton instance ([3c02164b](http://github.com/aurelia/dependency-injection/commit/3c02164bdb04c2e0b9f3927f20cec453e67e6833))
-  * improve helpfulness of activation errors ([47aa4871](http://github.com/aurelia/dependency-injection/commit/47aa48711a905101b83452daa5ded82242c186bd))
-  * remove AtScript support ([6ed8891a](http://github.com/aurelia/dependency-injection/commit/6ed8891a3543d800475674343869c2e34e66107f))
-  * use new logging AggregateError ([6e2548ef](http://github.com/aurelia/dependency-injection/commit/6e2548ef6f6b0e339f53793db1c76dc81ef6650c))
-  * add unregister method ([2755688c](http://github.com/aurelia/dependency-injection/commit/2755688ce0a2bd13ef71adcda5ed7fa05092d3b4), closes [#19](http://github.com/aurelia/dependency-injection/issues/19))
-  * consume atscript annotation parameters as arrays ([7303cb36](http://github.com/aurelia/dependency-injection/commit/7303cb36599873ec14fac9dd020b7aafe1e7d756), closes [#15](http://github.com/aurelia/dependency-injection/issues/15))
-  * enable custom class init before constructor ([33b4cc1c](http://github.com/aurelia/dependency-injection/commit/33b4cc1c48502d5a321aced22111b4f5251f648d))
-  * enable simple registration when key and value are the same ([9f1f502c](http://github.com/aurelia/dependency-injection/commit/9f1f502c9fa67d832b9b28397cbc1e3b5edc7082))
-* **cotainer:** add InstanceActivator abstraction ([0fc2a317](http://github.com/aurelia/dependency-injection/commit/0fc2a3178183169ebb2c067c142e9cc7b3645e02))
-* **docs:** generate api.json from .d.ts file ([c6acb7cf](http://github.com/aurelia/dependency-injection/commit/c6acb7cf6cca87343217aafdcea82321ec39ea71))
-* **metadata:**  singleton metadata can now indicate root container target ([4a99d4f5](http://github.com/aurelia/dependency-injection/commit/4a99d4f5694ddeeba89a63331f1fb651b7df4b8c))
-* **package:** switch from es6-shim to core-js ([90a501d4](http://github.com/aurelia/dependency-injection/commit/90a501d42409e50703c869e98ed8431b8ccb54d8))
-* **resolver:** add parent resolver ([f035f1f5](http://github.com/aurelia/dependency-injection/commit/f035f1f5dece5c0316f18500e28ad37bdf9ac066))
-
-
-#### Breaking Changes
-
-* Removed base classes for registrations and instance
-activators since metadata now uses key/value pairs rather than
-inheritance.
-
- ([51bfdd1e](http://github.com/aurelia/dependency-injection/commit/51bfdd1e1042178a301346a263b642e14aa5f394))
-
-
-### 0.10.1 (2015-09-06)
-
-
-#### Bug Fixes
-
-* repair error msg for broken view model ([60880447](http://github.com/aurelia/dependency-injection/commit/60880447d758ebe2ce003bee4a5714557957045e))
-
-
-## 0.10.0 (2015-09-04)
-
-
-#### Bug Fixes
-
-* **all:** address lint errors ([d2e36a57](http://github.com/aurelia/dependency-injection/commit/d2e36a5704a0f890142021fba4d2f0bc9d9dc67a))
-* **build:** update linting, testing and tools ([97d032c8](http://github.com/aurelia/dependency-injection/commit/97d032c85c747e25eb1bcd87d46f211916d2f239))
-
-
-#### Features
-
-* **docs:** generate api.json from .d.ts file ([c6acb7cf](http://github.com/aurelia/dependency-injection/commit/c6acb7cf6cca87343217aafdcea82321ec39ea71))
-
-
-### 0.9.2 (2015-08-14)
-
-
-#### Bug Fixes
-
-* **all:** improve some type info ([2aa55dea](http://github.com/aurelia/dependency-injection/commit/2aa55deaedee4fbc2a948df1547449cae7d49bd5))
-* **dependency-injection:** Use correct import for core-js We were previously using `import core from core-j ([625c1eea](http://github.com/aurelia/dependency-injection/commit/625c1eea4d2b90b7fbb22ebb75fb9feec3676829))
-
-
-### 0.9.1 (2015-07-29)
-
-* improve output file name
-
-## 0.9.0 (2015-07-01)
-
-
-#### Bug Fixes
-
-* **all:** switch to new metadata abstraction ([05f3bfde](http://github.com/aurelia/dependency-injection/commit/05f3bfde7b032d83df14eb7b23b6292534c91c02))
-* **container:**
-  * add generics to Map type info ([072262ef](http://github.com/aurelia/dependency-injection/commit/072262ef7ca9656739e9bbda49fd3d75ba6c113c))
-  * dry out bad key error message ([58a1036f](http://github.com/aurelia/dependency-injection/commit/58a1036f5e52eadfc1b3bd65a22ebaebf94d715c))
-  * Improve error message on bad key for DI ([6495ad3b](http://github.com/aurelia/dependency-injection/commit/6495ad3b84938ea66749e07f8c271b87e0a53074), closes [#36](http://github.com/aurelia/dependency-injection/issues/36))
-* **package:** update aurelia tools and dts generator ([83c1e2cb](http://github.com/aurelia/dependency-injection/commit/83c1e2cb096ce8f6802d78419a5e9f0afb895776))
-
-
-#### Features
-
-* **container:**
-  * enable the invoke helper to take additional deps ([eec36d2a](http://github.com/aurelia/dependency-injection/commit/eec36d2a69e3ca35eef4798d91e66192dcb103d6))
-  * turn a container instance into a globally reachable singleton instance ([3c02164b](http://github.com/aurelia/dependency-injection/commit/3c02164bdb04c2e0b9f3927f20cec453e67e6833))
-
-
-## 0.8.0 (2015-06-08)
-
-
-#### Bug Fixes
-
-* **container:** enable autoregister of non-functions ([c40ac432](http://github.com/aurelia/dependency-injection/commit/c40ac432ca6c3d63ccddb6c6c5bcaa2ffa6c5ba9), closes [#31](http://github.com/aurelia/dependency-injection/issues/31))
-
-
-#### Features
-
-* **container:** improve helpfulness of activation errors ([47aa4871](http://github.com/aurelia/dependency-injection/commit/47aa48711a905101b83452daa5ded82242c186bd))
-
-
-### 0.7.1 (2015-05-06)
-
-
-#### Bug Fixes
-
-* **emptyParameters:** import from ./container ([7d4cfc92](http://github.com/aurelia/dependency-injection/commit/7d4cfc929514519138cc1af36661951dd5ff42c8))
-
-
-## 0.7.0 (2015-04-30)
-
-
-#### Features
-
-* **all:** update to using the new metadata api ([51bfdd1e](http://github.com/aurelia/dependency-injection/commit/51bfdd1e1042178a301346a263b642e14aa5f394))
-
-
-#### Breaking Changes
-
-* Removed base classes for registrations and instance
-activators since metadata now uses key/value pairs rather than
-inheritance.
-
- ([51bfdd1e](http://github.com/aurelia/dependency-injection/commit/51bfdd1e1042178a301346a263b642e14aa5f394))
-
-
-## 0.6.0 (2015-04-09)
-
-
-#### Bug Fixes
-
-* **Container:** remove new in function call ([08cd06fd](http://github.com/aurelia/dependency-injection/commit/08cd06fd6393e8941a2a2a0df012df3a209eedda))
-* **all:**
-  * update compiler to latest version ([b6a3dd03](http://github.com/aurelia/dependency-injection/commit/b6a3dd034ce3b55a08770b969af2f113803cbd0e))
-  * explicit import of core-js and switch to Reflect.construct ([5ebe60be](http://github.com/aurelia/dependency-injection/commit/5ebe60be9170dd8ecf34b19dc9b6e88144dfc13b))
-* **container:** remove initialize hack ([5c9fdd09](http://github.com/aurelia/dependency-injection/commit/5c9fdd09dd1d0848da0b24c694c95e20ca82c01c))
-* **decorators:** remove unnecessary returns ([150607d1](http://github.com/aurelia/dependency-injection/commit/150607d1cde449b8065440d5ca90b1a0a8e07721))
-
-
-#### Features
-
-* **all:** add decorator support ([120e61a3](http://github.com/aurelia/dependency-injection/commit/120e61a3aa686cee4a2cb7008a59d3b0eab8fb1c))
-* **container:** remove AtScript support ([6ed8891a](http://github.com/aurelia/dependency-injection/commit/6ed8891a3543d800475674343869c2e34e66107f))
-* **cotainer:** add InstanceActivator abstraction ([0fc2a317](http://github.com/aurelia/dependency-injection/commit/0fc2a3178183169ebb2c067c142e9cc7b3645e02))
-
-
-### 0.5.1 (2015-03-27)
-
-
-#### Bug Fixes
-
-* **container:** better errors for instantiation failures ([8c5e3a64](http://github.com/aurelia/dependency-injection/commit/8c5e3a647bb4354f2c420d37e405792b9cc8601f))
-
-
-## 0.5.0 (2015-03-24)
-
-
-#### Bug Fixes
-
-* **container:** factories are explicit ([667a16e4](http://github.com/aurelia/dependency-injection/commit/667a16e4dbd07b75493e0690ac4232d8c0cb508c), closes [#13](http://github.com/aurelia/dependency-injection/issues/13))
-* **singleton:** always register in the root container ([186b573e](http://github.com/aurelia/dependency-injection/commit/186b573e0e3d09f57bedf8fd7c37ab862dc2f5d1), closes [#22](http://github.com/aurelia/dependency-injection/issues/22))
-
-
-#### Features
-
-* **container:**
-  * use new logging AggregateError ([6e2548ef](http://github.com/aurelia/dependency-injection/commit/6e2548ef6f6b0e339f53793db1c76dc81ef6650c))
-  * add unregister method ([2755688c](http://github.com/aurelia/dependency-injection/commit/2755688ce0a2bd13ef71adcda5ed7fa05092d3b4), closes [#19](http://github.com/aurelia/dependency-injection/issues/19))
-
-
-### 0.4.5 (2015-02-28)
-
-
-#### Bug Fixes
-
-* **package:** change jspm directories ([cef0da35](http://github.com/aurelia/dependency-injection/commit/cef0da351e26aa549e45b48dc6cd98e3e6b6fcaa))
-
-
-### 0.4.4 (2015-02-27)
-
-
-#### Bug Fixes
-
-* **package:** update dependencies ([25e924ca](http://github.com/aurelia/dependency-injection/commit/25e924caccdfd033657047a22b93428b90363700))
-
-
-### 0.4.3 (2015-02-18)
-
-
-#### Bug Fixes
-
-* **build:** add missing bower bump ([39ab3d07](http://github.com/aurelia/dependency-injection/commit/39ab3d07d0c0d893206f61ebfe4f658a66303895))
-
-
-#### Features
-
-* **metadata:**  singleton metadata can now indicate root container target ([4a99d4f5](http://github.com/aurelia/dependency-injection/commit/4a99d4f5694ddeeba89a63331f1fb651b7df4b8c))
-
-
-### 0.4.2 (2015-02-03)
-
-
-#### Bug Fixes
-
-* **util:**
-  * fix ridiculously dumb error ([8cfe89f0](http://github.com/aurelia/dependency-injection/commit/8cfe89f0de5d2d6101f5421bf941dc84352bba9d))
-  * function name polyfill should minify correctly ([85358c53](http://github.com/aurelia/dependency-injection/commit/85358c5359ddc0a069c4d049fd28d760052cb437))
-
-
-#### Features
-
-* **container:** consume atscript annotation parameters as arrays ([7303cb36](http://github.com/aurelia/dependency-injection/commit/7303cb36599873ec14fac9dd020b7aafe1e7d756), closes [#15](http://github.com/aurelia/dependency-injection/issues/15))
-
-
-### 0.4.1 (2015-01-24)
-
-
-#### Bug Fixes
-
-* **bower:** correct semver range ([3b7670c3](http://github.com/aurelia/dependency-injection/commit/3b7670c3ead8cc1b5e41874029f1e6fef86ed187))
-
-
-## 0.4.0 (2015-01-22)
-
-
-#### Bug Fixes
-
-* **all:** switch to metadata api ([19c60ad9](http://github.com/aurelia/dependency-injection/commit/19c60ad976a6bd8216dfbddbe8f7ac12ca1325d2))
-* **package:** update dependencies ([247d9ff9](http://github.com/aurelia/dependency-injection/commit/247d9ff925af07488d9ce6337e64e977370ab43a))
-
-
-#### Features
-
-* **all:** update to fluent metadata and add helpers ([8e3b7576](http://github.com/aurelia/dependency-injection/commit/8e3b7576bd7fda89bec4b2c79154c6a7a296a6aa))
-* **container:** enable custom class init before constructor ([33b4cc1c](http://github.com/aurelia/dependency-injection/commit/33b4cc1c48502d5a321aced22111b4f5251f648d))
-
-
-### 0.3.1 (2015-01-12)
-
-* Update compiled output.
-
-
-## 0.3.0 (2015-01-12)
-
-
-#### Bug Fixes
-
-* **container:** remove bogus createTypedChild api ([42b2ae2a](http://github.com/aurelia/dependency-injection/commit/42b2ae2a1507672f95503c0bc9257c755324a520))
-* **package:** update Aurelia dependencies ([ccf09589](http://github.com/aurelia/dependency-injection/commit/ccf09589cfdd76ac77df12fad7e4ae6383000f48))
-
-
-#### Features
-
-* **resolver:** add parent resolver ([f035f1f5](http://github.com/aurelia/dependency-injection/commit/f035f1f5dece5c0316f18500e28ad37bdf9ac066))
-
-
-### 0.2.1 (2015-01-06)
-
-
-#### Bug Fixes
-
-* **package:** change doc json media type ([b82feb82](http://github.com/aurelia/dependency-injection/commit/b82feb82f758ddc820039d7e32b1079908706020))
-
-
-## 0.2.0 (2015-01-06)
-
-
-#### Bug Fixes
-
-* **container:** discover registration attributes on base classes ([b7af69d1](http://github.com/aurelia/dependency-injection/commit/b7af69d101bad032acaf41e37140e57e52b6c07f))
-* **optional:** add Optional annotation to public api ([1d688334](http://github.com/aurelia/dependency-injection/commit/1d688334ac5fe16ec692fe8a4bb09d63a7698632))
-
-
-#### Features
-
-* **annotations:** add optional resolver ([27a580d3](http://github.com/aurelia/dependency-injection/commit/27a580d38d1ea899fd10ba4dbe80639dda1422e0))
-* **build:** update compiler and switch to register module format ([e959d7bb](http://github.com/aurelia/dependency-injection/commit/e959d7bb8f06cdc4bee5ee48afa5bdb62ed79ab3))
-* **container:** enable simple registration when key and value are the same ([9f1f502c](http://github.com/aurelia/dependency-injection/commit/9f1f502c9fa67d832b9b28397cbc1e3b5edc7082))
-* **package:** switch from es6-shim to core-js ([90a501d4](http://github.com/aurelia/dependency-injection/commit/90a501d42409e50703c869e98ed8431b8ccb54d8))
-
-
-### 0.1.1 (2014-12-17)
-
-
-#### Bug Fixes
-
-* **package:** update dependencies to latest ([54a0bda1](http://github.com/aurelia/dependency-injection/commit/54a0bda1a217200c07cbee81193b044038b2b09a))
-
-
-## 0.1.0 (2014-12-11)
-
-
-#### Bug Fixes
-
-* **package:** add es6-shim polyfill ([4732acee](http://github.com/aurelia/dependency-injection/commit/4732acee560080be01ea579ac5124e63079e8571))
+# Change Log
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+## [1.5.0](https://github.com/aurelia/dependency-injection/compare/1.4.2...1.5.0) (2019-08-06)
+
+
+### Bug Fixes
+
+* **ci:** add dev dep jspm ([ad4be00](https://github.com/aurelia/dependency-injection/commit/ad4be00))
+* **ci:** take our circle ci ([9899197](https://github.com/aurelia/dependency-injection/commit/9899197))
+
+
+#### Breaking Changes
+
+* Added typings to a majority of the framework. Previously all instances
+  retrieved from a container or functor were cast to any. Now they're typed by
+  inference to the key. If the key is a class the instance will be typed to an
+  instance of that class. If the key is a functor, it will be resolved to the
+  return type of the functor. All other keys will be typed to any.
+
+ ([e5e277df](http://github.com/aurelia/dependency-injection/commit/e5e277dfa74d99ee9952f0b731eae4ec30e628ea))
+
+
+<a name="1.4.2"></a>
+## [1.4.2](https://github.com/aurelia/dependency-injection/compare/1.4.1...1.4.2) (2018-12-18)
+
+
+### Bug Fixes
+
+* **dependency-injection:** add more tests using cases suggested by [@fkleuver](https://github.com/fkleuver) ([ac4e6f9](https://github.com/aurelia/dependency-injection/commit/ac4e6f9)), closes [#171](https://github.com/aurelia/dependency-injection/issues/171)
+* **dependency-injection:** adjust based on review ([dc756f4](https://github.com/aurelia/dependency-injection/commit/dc756f4)), closes [#171](https://github.com/aurelia/dependency-injection/issues/171)
+* **dependency-injection:** ignore ...rest TypeScript metadata ([c093756](https://github.com/aurelia/dependency-injection/commit/c093756)), closes [#171](https://github.com/aurelia/dependency-injection/issues/171)
+
+
+
+<a name="1.4.0"></a>
+# [1.4.0](https://github.com/aurelia/dependency-injection/compare/1.3.2...1.4.0) (2018-06-18)
+
+
+### Bug Fixes
+
+* **injection:** fail with autoinject and own static inject ([e230bda](https://github.com/aurelia/dependency-injection/commit/e230bda))
+* **resolver:** use own property 'inject' in autoinject and parameter decorators ([724ff08](https://github.com/aurelia/dependency-injection/commit/724ff08))
+* **resolvers:** remove unusable asValue option of the factory decorator ([5739152](https://github.com/aurelia/dependency-injection/commit/5739152))
+
+
+### Features
+
+* **resolvers:** allow using Factory.of and NewInstance.of with registered handlers ([991cbb5](https://github.com/aurelia/dependency-injection/commit/991cbb5))
+
+
+
+<a name="1.3.2"></a>
+## [1.3.2](https://github.com/aurelia/dependency-injection/compare/1.3.1...v1.3.2) (2017-08-22)
+
+
+### Performance Improvements
+
+* **container:** improve dynamic construction of static depencies ([01b2988](https://github.com/aurelia/dependency-injection/commit/01b2988))
+
+
+
+<a name="1.3.1"></a>
+## [1.3.1](https://github.com/aurelia/dependency-injection/compare/1.3.0...v1.3.1) (2017-04-05)
+
+* Documentation update.
+
+<a name="1.3.0"></a>
+# [1.3.0](https://github.com/aurelia/dependency-injection/compare/1.2.1...v1.3.0) (2017-01-12)
+
+
+### Bug Fixes
+
+* **registrations:** incorrect behavior for auto resolution when... ([708b5fd](https://github.com/aurelia/dependency-injection/commit/708b5fd))
+
+
+
+<a name="1.2.1"></a>
+## [1.2.1](https://github.com/aurelia/dependency-injection/compare/1.2.0...v1.2.1) (2016-12-13)
+
+
+### Bug Fixes
+
+* **autoinject:** prevent changing inject of parent classes ([aa38a34](https://github.com/aurelia/dependency-injection/commit/aa38a34))
+* **container:** check for custom registration before bubbling ([98739f2](https://github.com/aurelia/dependency-injection/commit/98739f2))
+
+
+
+# 1.2.0
+
+## Bug Fixes
+
+* **autoinject**: merge issue caused incorrect branching logic
+* **invokers:** remove duplicate export name
+
+<a name="1.1.0"></a>
+# [1.1.0](https://github.com/aurelia/dependency-injection/compare/1.0.0...v1.1.0) (2016-10-05)
+
+### Bug Fixes
+
+* **injection:** correct internal loop error and enable inheritence with autoinject
+
+### Features
+
+* **resolvers:** let NewInstance have resolved dynamics dependencies ([0fcda8b](https://github.com/aurelia/dependency-injection/commit/0fcda8b))
+* **resolvers:** let NewInstance resolver have dynamics dependencies ([c6275a5](https://github.com/aurelia/dependency-injection/commit/c6275a5))
+
+
+
+<a name="1.0.0"></a>
+# [1.0.0](https://github.com/aurelia/dependency-injection/compare/1.0.0-rc.1.0.1...v1.0.0) (2016-07-27)
+
+
+### Bug Fixes
+
+* **injection:** allow combining with [@autoinject](https://github.com/autoinject) ([7219579](https://github.com/aurelia/dependency-injection/commit/7219579))
+
+
+### Features
+
+* **resolver:** added decorators for lazy, all, optional, parent, factory and newInstance ([24e19a2](https://github.com/aurelia/dependency-injection/commit/24e19a2))
+* **resolvers:** add asValue to factory argument decorator ([28db168](https://github.com/aurelia/dependency-injection/commit/28db168))
+
+
+
+<a name="1.0.0-rc.1.0.1"></a>
+# [1.0.0-rc.1.0.1](https://github.com/aurelia/dependency-injection/compare/1.0.0-rc.1.0.0...v1.0.0-rc.1.0.1) (2016-07-12)
+
+
+### Bug Fixes
+
+* **Optional:** change checkParent default to true ([a8a8620](https://github.com/aurelia/dependency-injection/commit/a8a8620)), closes [#94](https://github.com/aurelia/dependency-injection/issues/94)
+
+
+### Features
+
+* **container:** return Resolvers from registration methods ([3fc10cb](https://github.com/aurelia/dependency-injection/commit/3fc10cb)), closes [#82](https://github.com/aurelia/dependency-injection/issues/82)
+
+
+
+<a name="1.0.0-rc.1.0.0"></a>
+# [1.0.0-rc.1.0.0](https://github.com/aurelia/dependency-injection/compare/1.0.0-beta.2.1.1...v1.0.0-rc.1.0.0) (2016-06-22)
+
+
+
+### 1.0.0-beta.1.2.3 (2016-05-10)
+
+
+### 1.0.0-beta.1.2.2 (2016-04-29)
+
+* docs update
+
+### 1.0.0-beta.1.2.1 (2016-04-29)
+
+* docs release
+
+### 1.0.0-beta.1.2.0 (2016-03-22)
+
+
+#### Features
+
+* **inheritence:** allow injection w/ inheritence ([0615ac1d](http://github.com/aurelia/dependency-injection/commit/0615ac1db4c2f2e91fc1bb028217cc3540a8e6c7))
+
+
+### 1.0.0-beta.1.1.5 (2016-03-04)
+
+
+#### Features
+
+* **resolver:** add factory resolver ([0d59042d](http://github.com/aurelia/dependency-injection/commit/0d59042dff1d4987c67be789e0688b6e85ce587a))
+
+
+### 1.0.0-beta.1.1.4 (2016-03-01)
+
+
+#### Bug Fixes
+
+* **all:** remove core-js dependency ([4dff5f15](http://github.com/aurelia/dependency-injection/commit/4dff5f15761485ca744f82b950f9b6e9e719350e))
+
+
+### 1.0.0-beta.1.1.3 (2016-02-08)
+
+
+### 1.0.0-beta.1.1.1 (2016-01-28)
+
+* fix package metadata for jspm
+
+### 1.0.0-beta.1.1.0 (2016-01-28)
+
+
+#### Bug Fixes
+
+* **container:** correct inconsistent return type from getAll ([bbbef9e5](http://github.com/aurelia/dependency-injection/commit/bbbef9e582e4a81497db5655c7a7e9d2d1e5c10a), closes [#71](http://github.com/aurelia/dependency-injection/issues/71))
+
+
+#### Features
+
+* **all:** update for jspm; update core-js; update aurelia deps ([11d16867](http://github.com/aurelia/dependency-injection/commit/11d1686765c626896dbb3d5edb7f5b40da9dd5ca))
+
+
+### 1.0.0-beta.1.0.1 (2016-01-08)
+
+* minor perf work
+
+### 1.0.0-beta.1 (2015-11-16)
+
+
+### 0.12.1 (2015-11-11)
+
+
+#### Bug Fixes
+
+* **all:** TS fixes for decorators ([04257368](http://github.com/aurelia/dependency-injection/commit/0425736875302f80c0216c7caaa9421182f4184d))
+
+
+## 0.12.0 (2015-11-09)
+
+
+#### Bug Fixes
+
+* **container:** bug with build combining and renamed imports ([090c041a](http://github.com/aurelia/dependency-injection/commit/090c041a53cd7d653cf034aa753ce90e9c0b3df1))
+* **resolvers:** typo in resolver protocol name ([befe9668](http://github.com/aurelia/dependency-injection/commit/befe966899781d3c54710e75b901ebf0ebaa8d34))
+
+
+#### Features
+
+* **all:**
+  * further refining of data structures and hooks; api lockdown and docs complete ([0ee0c34c](http://github.com/aurelia/dependency-injection/commit/0ee0c34cb0b63f5ca89a5ddca9c2a34cf6ed6ebc))
+  * new resolver marker, fixed registrations, onActivate hook, invokers ([ca5ccf7d](http://github.com/aurelia/dependency-injection/commit/ca5ccf7d03e907ce9fb794dcbe9f0065ceba3c43))
+
+
+### 0.11.2 (2015-10-15)
+
+
+#### Bug Fixes
+
+* **registrations:** move configuration to correct instance ([e6d4b542](http://github.com/aurelia/dependency-injection/commit/e6d4b5420aec12940fbce21852a44c248deb4340))
+
+
+### 0.11.1 (2015-10-15)
+
+
+#### Bug Fixes
+
+* **registrations:** properly handle registrations that want to target different containers ([b60c1039](http://github.com/aurelia/dependency-injection/commit/b60c10392588b49b6b3ea2fb20c75c27c2a73bb5))
+
+
+## 0.11.0 (2015-10-13)
+
+
+#### Bug Fixes
+
+* repair error msg for broken view model ([60880447](http://github.com/aurelia/dependency-injection/commit/60880447d758ebe2ce003bee4a5714557957045e))
+* **Container:** remove new in function call ([08cd06fd](http://github.com/aurelia/dependency-injection/commit/08cd06fd6393e8941a2a2a0df012df3a209eedda))
+* **all:**
+  * update to latest metadata api ([bfa78327](http://github.com/aurelia/dependency-injection/commit/bfa78327ffd2992f18214ab6da0e25f37559cfc0))
+  * address lint errors ([d2e36a57](http://github.com/aurelia/dependency-injection/commit/d2e36a5704a0f890142021fba4d2f0bc9d9dc67a))
+  * improve some type info ([2aa55dea](http://github.com/aurelia/dependency-injection/commit/2aa55deaedee4fbc2a948df1547449cae7d49bd5))
+  * switch to new metadata abstraction ([05f3bfde](http://github.com/aurelia/dependency-injection/commit/05f3bfde7b032d83df14eb7b23b6292534c91c02))
+  * update compiler to latest version ([b6a3dd03](http://github.com/aurelia/dependency-injection/commit/b6a3dd034ce3b55a08770b969af2f113803cbd0e))
+  * explicit import of core-js and switch to Reflect.construct ([5ebe60be](http://github.com/aurelia/dependency-injection/commit/5ebe60be9170dd8ecf34b19dc9b6e88144dfc13b))
+  * switch to metadata api ([19c60ad9](http://github.com/aurelia/dependency-injection/commit/19c60ad976a6bd8216dfbddbe8f7ac12ca1325d2))
+* **bower:** correct semver range ([3b7670c3](http://github.com/aurelia/dependency-injection/commit/3b7670c3ead8cc1b5e41874029f1e6fef86ed187))
+* **build:**
+  * update linting, testing and tools ([97d032c8](http://github.com/aurelia/dependency-injection/commit/97d032c85c747e25eb1bcd87d46f211916d2f239))
+  * add missing bower bump ([39ab3d07](http://github.com/aurelia/dependency-injection/commit/39ab3d07d0c0d893206f61ebfe4f658a66303895))
+* **container:**
+  * improved alias handling ([a2eb66c3](http://github.com/aurelia/dependency-injection/commit/a2eb66c34ec05112ab9d702d2ee211b6a7f7714d))
+  * prevent a breaking api change ([9198b164](http://github.com/aurelia/dependency-injection/commit/9198b1649d0e2405da32600e5aca3960f7bd1834))
+  * add generics to Map type info ([072262ef](http://github.com/aurelia/dependency-injection/commit/072262ef7ca9656739e9bbda49fd3d75ba6c113c))
+  * dry out bad key error message ([58a1036f](http://github.com/aurelia/dependency-injection/commit/58a1036f5e52eadfc1b3bd65a22ebaebf94d715c))
+  * Improve error message on bad key for DI ([6495ad3b](http://github.com/aurelia/dependency-injection/commit/6495ad3b84938ea66749e07f8c271b87e0a53074), closes [#36](http://github.com/aurelia/dependency-injection/issues/36))
+  * enable autoregister of non-functions ([c40ac432](http://github.com/aurelia/dependency-injection/commit/c40ac432ca6c3d63ccddb6c6c5bcaa2ffa6c5ba9), closes [#31](http://github.com/aurelia/dependency-injection/issues/31))
+  * remove initialize hack ([5c9fdd09](http://github.com/aurelia/dependency-injection/commit/5c9fdd09dd1d0848da0b24c694c95e20ca82c01c))
+  * better errors for instantiation failures ([8c5e3a64](http://github.com/aurelia/dependency-injection/commit/8c5e3a647bb4354f2c420d37e405792b9cc8601f))
+  * factories are explicit ([667a16e4](http://github.com/aurelia/dependency-injection/commit/667a16e4dbd07b75493e0690ac4232d8c0cb508c), closes [#13](http://github.com/aurelia/dependency-injection/issues/13))
+  * remove bogus createTypedChild api ([42b2ae2a](http://github.com/aurelia/dependency-injection/commit/42b2ae2a1507672f95503c0bc9257c755324a520))
+  * discover registration attributes on base classes ([b7af69d1](http://github.com/aurelia/dependency-injection/commit/b7af69d101bad032acaf41e37140e57e52b6c07f))
+* **decorators:** remove unnecessary returns ([150607d1](http://github.com/aurelia/dependency-injection/commit/150607d1cde449b8065440d5ca90b1a0a8e07721))
+* **dependency-injection:** Use correct import for core-js We were previously using `import core from core-j ([625c1eea](http://github.com/aurelia/dependency-injection/commit/625c1eea4d2b90b7fbb22ebb75fb9feec3676829))
+* **emptyParameters:** import from ./container ([7d4cfc92](http://github.com/aurelia/dependency-injection/commit/7d4cfc929514519138cc1af36661951dd5ff42c8))
+* **optional:** add Optional annotation to public api ([1d688334](http://github.com/aurelia/dependency-injection/commit/1d688334ac5fe16ec692fe8a4bb09d63a7698632))
+* **package:**
+  * update aurelia tools and dts generator ([83c1e2cb](http://github.com/aurelia/dependency-injection/commit/83c1e2cb096ce8f6802d78419a5e9f0afb895776))
+  * change jspm directories ([cef0da35](http://github.com/aurelia/dependency-injection/commit/cef0da351e26aa549e45b48dc6cd98e3e6b6fcaa))
+  * update dependencies ([25e924ca](http://github.com/aurelia/dependency-injection/commit/25e924caccdfd033657047a22b93428b90363700))
+  * update dependencies ([247d9ff9](http://github.com/aurelia/dependency-injection/commit/247d9ff925af07488d9ce6337e64e977370ab43a))
+  * update Aurelia dependencies ([ccf09589](http://github.com/aurelia/dependency-injection/commit/ccf09589cfdd76ac77df12fad7e4ae6383000f48))
+  * change doc json media type ([b82feb82](http://github.com/aurelia/dependency-injection/commit/b82feb82f758ddc820039d7e32b1079908706020))
+  * update dependencies to latest ([54a0bda1](http://github.com/aurelia/dependency-injection/commit/54a0bda1a217200c07cbee81193b044038b2b09a))
+  * add es6-shim polyfill ([4732acee](http://github.com/aurelia/dependency-injection/commit/4732acee560080be01ea579ac5124e63079e8571))
+* **singleton:** alway register in the root container ([186b573e](http://github.com/aurelia/dependency-injection/commit/186b573e0e3d09f57bedf8fd7c37ab862dc2f5d1), closes [#22](http://github.com/aurelia/dependency-injection/issues/22))
+* **util:**
+  * fix ridiculously dumb error ([8cfe89f0](http://github.com/aurelia/dependency-injection/commit/8cfe89f0de5d2d6101f5421bf941dc84352bba9d))
+  * function name polyfill should minify correctly ([85358c53](http://github.com/aurelia/dependency-injection/commit/85358c5359ddc0a069c4d049fd28d760052cb437))
+
+
+#### Features
+
+* **all:**
+  * add pal dependency ([e2e1b6f9](http://github.com/aurelia/dependency-injection/commit/e2e1b6f9654ea26223a3ab5a7a9d5ca884e0e927))
+  * new implementation ([481b29b9](http://github.com/aurelia/dependency-injection/commit/481b29b9a15518c82915c5f5a19a9958762e1b3e))
+  * update to using the new metadata api ([51bfdd1e](http://github.com/aurelia/dependency-injection/commit/51bfdd1e1042178a301346a263b642e14aa5f394))
+  * add decorator support ([120e61a3](http://github.com/aurelia/dependency-injection/commit/120e61a3aa686cee4a2cb7008a59d3b0eab8fb1c))
+  * update to fluent metadata and add helpers ([8e3b7576](http://github.com/aurelia/dependency-injection/commit/8e3b7576bd7fda89bec4b2c79154c6a7a296a6aa))
+* **annotations:** add optional resolver ([27a580d3](http://github.com/aurelia/dependency-injection/commit/27a580d38d1ea899fd10ba4dbe80639dda1422e0))
+* **build:** update compiler and switch to register module format ([e959d7bb](http://github.com/aurelia/dependency-injection/commit/e959d7bb8f06cdc4bee5ee48afa5bdb62ed79ab3))
+* **container:**
+  * add ability to register aliases for any DI key ([d4451482](http://github.com/aurelia/dependency-injection/commit/d4451482ea8c9f48000e40cf7cdbdc850ec3c09e))
+  * enable the invoke helper to take additional deps ([eec36d2a](http://github.com/aurelia/dependency-injection/commit/eec36d2a69e3ca35eef4798d91e66192dcb103d6))
+  * turn a container instance into a globally reachable singleton instance ([3c02164b](http://github.com/aurelia/dependency-injection/commit/3c02164bdb04c2e0b9f3927f20cec453e67e6833))
+  * improve helpfulness of activation errors ([47aa4871](http://github.com/aurelia/dependency-injection/commit/47aa48711a905101b83452daa5ded82242c186bd))
+  * remove AtScript support ([6ed8891a](http://github.com/aurelia/dependency-injection/commit/6ed8891a3543d800475674343869c2e34e66107f))
+  * use new logging AggregateError ([6e2548ef](http://github.com/aurelia/dependency-injection/commit/6e2548ef6f6b0e339f53793db1c76dc81ef6650c))
+  * add unregister method ([2755688c](http://github.com/aurelia/dependency-injection/commit/2755688ce0a2bd13ef71adcda5ed7fa05092d3b4), closes [#19](http://github.com/aurelia/dependency-injection/issues/19))
+  * consume atscript annotation parameters as arrays ([7303cb36](http://github.com/aurelia/dependency-injection/commit/7303cb36599873ec14fac9dd020b7aafe1e7d756), closes [#15](http://github.com/aurelia/dependency-injection/issues/15))
+  * enable custom class init before constructor ([33b4cc1c](http://github.com/aurelia/dependency-injection/commit/33b4cc1c48502d5a321aced22111b4f5251f648d))
+  * enable simple registration when key and value are the same ([9f1f502c](http://github.com/aurelia/dependency-injection/commit/9f1f502c9fa67d832b9b28397cbc1e3b5edc7082))
+* **cotainer:** add InstanceActivator abstraction ([0fc2a317](http://github.com/aurelia/dependency-injection/commit/0fc2a3178183169ebb2c067c142e9cc7b3645e02))
+* **docs:** generate api.json from .d.ts file ([c6acb7cf](http://github.com/aurelia/dependency-injection/commit/c6acb7cf6cca87343217aafdcea82321ec39ea71))
+* **metadata:**  singleton metadata can now indicate root container target ([4a99d4f5](http://github.com/aurelia/dependency-injection/commit/4a99d4f5694ddeeba89a63331f1fb651b7df4b8c))
+* **package:** switch from es6-shim to core-js ([90a501d4](http://github.com/aurelia/dependency-injection/commit/90a501d42409e50703c869e98ed8431b8ccb54d8))
+* **resolver:** add parent resolver ([f035f1f5](http://github.com/aurelia/dependency-injection/commit/f035f1f5dece5c0316f18500e28ad37bdf9ac066))
+
+
+#### Breaking Changes
+
+* Removed base classes for registrations and instance
+activators since metadata now uses key/value pairs rather than
+inheritance.
+
+ ([51bfdd1e](http://github.com/aurelia/dependency-injection/commit/51bfdd1e1042178a301346a263b642e14aa5f394))
+
+
+### 0.10.1 (2015-09-06)
+
+
+#### Bug Fixes
+
+* repair error msg for broken view model ([60880447](http://github.com/aurelia/dependency-injection/commit/60880447d758ebe2ce003bee4a5714557957045e))
+
+
+## 0.10.0 (2015-09-04)
+
+
+#### Bug Fixes
+
+* **all:** address lint errors ([d2e36a57](http://github.com/aurelia/dependency-injection/commit/d2e36a5704a0f890142021fba4d2f0bc9d9dc67a))
+* **build:** update linting, testing and tools ([97d032c8](http://github.com/aurelia/dependency-injection/commit/97d032c85c747e25eb1bcd87d46f211916d2f239))
+
+
+#### Features
+
+* **docs:** generate api.json from .d.ts file ([c6acb7cf](http://github.com/aurelia/dependency-injection/commit/c6acb7cf6cca87343217aafdcea82321ec39ea71))
+
+
+### 0.9.2 (2015-08-14)
+
+
+#### Bug Fixes
+
+* **all:** improve some type info ([2aa55dea](http://github.com/aurelia/dependency-injection/commit/2aa55deaedee4fbc2a948df1547449cae7d49bd5))
+* **dependency-injection:** Use correct import for core-js We were previously using `import core from core-j ([625c1eea](http://github.com/aurelia/dependency-injection/commit/625c1eea4d2b90b7fbb22ebb75fb9feec3676829))
+
+
+### 0.9.1 (2015-07-29)
+
+* improve output file name
+
+## 0.9.0 (2015-07-01)
+
+
+#### Bug Fixes
+
+* **all:** switch to new metadata abstraction ([05f3bfde](http://github.com/aurelia/dependency-injection/commit/05f3bfde7b032d83df14eb7b23b6292534c91c02))
+* **container:**
+  * add generics to Map type info ([072262ef](http://github.com/aurelia/dependency-injection/commit/072262ef7ca9656739e9bbda49fd3d75ba6c113c))
+  * dry out bad key error message ([58a1036f](http://github.com/aurelia/dependency-injection/commit/58a1036f5e52eadfc1b3bd65a22ebaebf94d715c))
+  * Improve error message on bad key for DI ([6495ad3b](http://github.com/aurelia/dependency-injection/commit/6495ad3b84938ea66749e07f8c271b87e0a53074), closes [#36](http://github.com/aurelia/dependency-injection/issues/36))
+* **package:** update aurelia tools and dts generator ([83c1e2cb](http://github.com/aurelia/dependency-injection/commit/83c1e2cb096ce8f6802d78419a5e9f0afb895776))
+
+
+#### Features
+
+* **container:**
+  * enable the invoke helper to take additional deps ([eec36d2a](http://github.com/aurelia/dependency-injection/commit/eec36d2a69e3ca35eef4798d91e66192dcb103d6))
+  * turn a container instance into a globally reachable singleton instance ([3c02164b](http://github.com/aurelia/dependency-injection/commit/3c02164bdb04c2e0b9f3927f20cec453e67e6833))
+
+
+## 0.8.0 (2015-06-08)
+
+
+#### Bug Fixes
+
+* **container:** enable autoregister of non-functions ([c40ac432](http://github.com/aurelia/dependency-injection/commit/c40ac432ca6c3d63ccddb6c6c5bcaa2ffa6c5ba9), closes [#31](http://github.com/aurelia/dependency-injection/issues/31))
+
+
+#### Features
+
+* **container:** improve helpfulness of activation errors ([47aa4871](http://github.com/aurelia/dependency-injection/commit/47aa48711a905101b83452daa5ded82242c186bd))
+
+
+### 0.7.1 (2015-05-06)
+
+
+#### Bug Fixes
+
+* **emptyParameters:** import from ./container ([7d4cfc92](http://github.com/aurelia/dependency-injection/commit/7d4cfc929514519138cc1af36661951dd5ff42c8))
+
+
+## 0.7.0 (2015-04-30)
+
+
+#### Features
+
+* **all:** update to using the new metadata api ([51bfdd1e](http://github.com/aurelia/dependency-injection/commit/51bfdd1e1042178a301346a263b642e14aa5f394))
+
+
+#### Breaking Changes
+
+* Removed base classes for registrations and instance
+activators since metadata now uses key/value pairs rather than
+inheritance.
+
+ ([51bfdd1e](http://github.com/aurelia/dependency-injection/commit/51bfdd1e1042178a301346a263b642e14aa5f394))
+
+
+## 0.6.0 (2015-04-09)
+
+
+#### Bug Fixes
+
+* **Container:** remove new in function call ([08cd06fd](http://github.com/aurelia/dependency-injection/commit/08cd06fd6393e8941a2a2a0df012df3a209eedda))
+* **all:**
+  * update compiler to latest version ([b6a3dd03](http://github.com/aurelia/dependency-injection/commit/b6a3dd034ce3b55a08770b969af2f113803cbd0e))
+  * explicit import of core-js and switch to Reflect.construct ([5ebe60be](http://github.com/aurelia/dependency-injection/commit/5ebe60be9170dd8ecf34b19dc9b6e88144dfc13b))
+* **container:** remove initialize hack ([5c9fdd09](http://github.com/aurelia/dependency-injection/commit/5c9fdd09dd1d0848da0b24c694c95e20ca82c01c))
+* **decorators:** remove unnecessary returns ([150607d1](http://github.com/aurelia/dependency-injection/commit/150607d1cde449b8065440d5ca90b1a0a8e07721))
+
+
+#### Features
+
+* **all:** add decorator support ([120e61a3](http://github.com/aurelia/dependency-injection/commit/120e61a3aa686cee4a2cb7008a59d3b0eab8fb1c))
+* **container:** remove AtScript support ([6ed8891a](http://github.com/aurelia/dependency-injection/commit/6ed8891a3543d800475674343869c2e34e66107f))
+* **cotainer:** add InstanceActivator abstraction ([0fc2a317](http://github.com/aurelia/dependency-injection/commit/0fc2a3178183169ebb2c067c142e9cc7b3645e02))
+
+
+### 0.5.1 (2015-03-27)
+
+
+#### Bug Fixes
+
+* **container:** better errors for instantiation failures ([8c5e3a64](http://github.com/aurelia/dependency-injection/commit/8c5e3a647bb4354f2c420d37e405792b9cc8601f))
+
+
+## 0.5.0 (2015-03-24)
+
+
+#### Bug Fixes
+
+* **container:** factories are explicit ([667a16e4](http://github.com/aurelia/dependency-injection/commit/667a16e4dbd07b75493e0690ac4232d8c0cb508c), closes [#13](http://github.com/aurelia/dependency-injection/issues/13))
+* **singleton:** always register in the root container ([186b573e](http://github.com/aurelia/dependency-injection/commit/186b573e0e3d09f57bedf8fd7c37ab862dc2f5d1), closes [#22](http://github.com/aurelia/dependency-injection/issues/22))
+
+
+#### Features
+
+* **container:**
+  * use new logging AggregateError ([6e2548ef](http://github.com/aurelia/dependency-injection/commit/6e2548ef6f6b0e339f53793db1c76dc81ef6650c))
+  * add unregister method ([2755688c](http://github.com/aurelia/dependency-injection/commit/2755688ce0a2bd13ef71adcda5ed7fa05092d3b4), closes [#19](http://github.com/aurelia/dependency-injection/issues/19))
+
+
+### 0.4.5 (2015-02-28)
+
+
+#### Bug Fixes
+
+* **package:** change jspm directories ([cef0da35](http://github.com/aurelia/dependency-injection/commit/cef0da351e26aa549e45b48dc6cd98e3e6b6fcaa))
+
+
+### 0.4.4 (2015-02-27)
+
+
+#### Bug Fixes
+
+* **package:** update dependencies ([25e924ca](http://github.com/aurelia/dependency-injection/commit/25e924caccdfd033657047a22b93428b90363700))
+
+
+### 0.4.3 (2015-02-18)
+
+
+#### Bug Fixes
+
+* **build:** add missing bower bump ([39ab3d07](http://github.com/aurelia/dependency-injection/commit/39ab3d07d0c0d893206f61ebfe4f658a66303895))
+
+
+#### Features
+
+* **metadata:**  singleton metadata can now indicate root container target ([4a99d4f5](http://github.com/aurelia/dependency-injection/commit/4a99d4f5694ddeeba89a63331f1fb651b7df4b8c))
+
+
+### 0.4.2 (2015-02-03)
+
+
+#### Bug Fixes
+
+* **util:**
+  * fix ridiculously dumb error ([8cfe89f0](http://github.com/aurelia/dependency-injection/commit/8cfe89f0de5d2d6101f5421bf941dc84352bba9d))
+  * function name polyfill should minify correctly ([85358c53](http://github.com/aurelia/dependency-injection/commit/85358c5359ddc0a069c4d049fd28d760052cb437))
+
+
+#### Features
+
+* **container:** consume atscript annotation parameters as arrays ([7303cb36](http://github.com/aurelia/dependency-injection/commit/7303cb36599873ec14fac9dd020b7aafe1e7d756), closes [#15](http://github.com/aurelia/dependency-injection/issues/15))
+
+
+### 0.4.1 (2015-01-24)
+
+
+#### Bug Fixes
+
+* **bower:** correct semver range ([3b7670c3](http://github.com/aurelia/dependency-injection/commit/3b7670c3ead8cc1b5e41874029f1e6fef86ed187))
+
+
+## 0.4.0 (2015-01-22)
+
+
+#### Bug Fixes
+
+* **all:** switch to metadata api ([19c60ad9](http://github.com/aurelia/dependency-injection/commit/19c60ad976a6bd8216dfbddbe8f7ac12ca1325d2))
+* **package:** update dependencies ([247d9ff9](http://github.com/aurelia/dependency-injection/commit/247d9ff925af07488d9ce6337e64e977370ab43a))
+
+
+#### Features
+
+* **all:** update to fluent metadata and add helpers ([8e3b7576](http://github.com/aurelia/dependency-injection/commit/8e3b7576bd7fda89bec4b2c79154c6a7a296a6aa))
+* **container:** enable custom class init before constructor ([33b4cc1c](http://github.com/aurelia/dependency-injection/commit/33b4cc1c48502d5a321aced22111b4f5251f648d))
+
+
+### 0.3.1 (2015-01-12)
+
+* Update compiled output.
+
+
+## 0.3.0 (2015-01-12)
+
+
+#### Bug Fixes
+
+* **container:** remove bogus createTypedChild api ([42b2ae2a](http://github.com/aurelia/dependency-injection/commit/42b2ae2a1507672f95503c0bc9257c755324a520))
+* **package:** update Aurelia dependencies ([ccf09589](http://github.com/aurelia/dependency-injection/commit/ccf09589cfdd76ac77df12fad7e4ae6383000f48))
+
+
+#### Features
+
+* **resolver:** add parent resolver ([f035f1f5](http://github.com/aurelia/dependency-injection/commit/f035f1f5dece5c0316f18500e28ad37bdf9ac066))
+
+
+### 0.2.1 (2015-01-06)
+
+
+#### Bug Fixes
+
+* **package:** change doc json media type ([b82feb82](http://github.com/aurelia/dependency-injection/commit/b82feb82f758ddc820039d7e32b1079908706020))
+
+
+## 0.2.0 (2015-01-06)
+
+
+#### Bug Fixes
+
+* **container:** discover registration attributes on base classes ([b7af69d1](http://github.com/aurelia/dependency-injection/commit/b7af69d101bad032acaf41e37140e57e52b6c07f))
+* **optional:** add Optional annotation to public api ([1d688334](http://github.com/aurelia/dependency-injection/commit/1d688334ac5fe16ec692fe8a4bb09d63a7698632))
+
+
+#### Features
+
+* **annotations:** add optional resolver ([27a580d3](http://github.com/aurelia/dependency-injection/commit/27a580d38d1ea899fd10ba4dbe80639dda1422e0))
+* **build:** update compiler and switch to register module format ([e959d7bb](http://github.com/aurelia/dependency-injection/commit/e959d7bb8f06cdc4bee5ee48afa5bdb62ed79ab3))
+* **container:** enable simple registration when key and value are the same ([9f1f502c](http://github.com/aurelia/dependency-injection/commit/9f1f502c9fa67d832b9b28397cbc1e3b5edc7082))
+* **package:** switch from es6-shim to core-js ([90a501d4](http://github.com/aurelia/dependency-injection/commit/90a501d42409e50703c869e98ed8431b8ccb54d8))
+
+
+### 0.1.1 (2014-12-17)
+
+
+#### Bug Fixes
+
+* **package:** update dependencies to latest ([54a0bda1](http://github.com/aurelia/dependency-injection/commit/54a0bda1a217200c07cbee81193b044038b2b09a))
+
+
+## 0.1.0 (2014-12-11)
+
+
+#### Bug Fixes
+
+* **package:** add es6-shim polyfill ([4732acee](http://github.com/aurelia/dependency-injection/commit/4732acee560080be01ea579ac5124e63079e8571))
diff --git a/doc/api.json b/doc/api.json
index 00b26d7..7ce4ef3 100644
--- a/doc/api.json
+++ b/doc/api.json
@@ -1 +1 @@
-{"name":"aurelia-dependency-injection","children":[{"id":13,"name":"alias","kind":16,"kindString":"Enumeration member","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":56,"character":6}],"defaultValue":"5"},{"id":12,"name":"array","kind":16,"kindString":"Enumeration member","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":55,"character":6}],"defaultValue":"4"},{"id":11,"name":"function","kind":16,"kindString":"Enumeration member","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":54,"character":9}],"defaultValue":"3"},{"id":8,"name":"instance","kind":16,"kindString":"Enumeration member","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":51,"character":9}],"defaultValue":"0"},{"id":9,"name":"singleton","kind":16,"kindString":"Enumeration member","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":52,"character":10}],"defaultValue":"1"},{"id":10,"name":"transient","kind":16,"kindString":"Enumeration member","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":53,"character":10}],"defaultValue":"2"}],"groups":[{"title":"Enumeration members","kind":16,"children":[13,12,11,8,9,10]}]}
+{"name":"aurelia-dependency-injection","children":[{"id":7,"name":"Strategy","kind":4,"kindString":"Enumeration","flags":{"isExported":true},"children":[{"id":13,"name":"alias","kind":16,"kindString":"Enumeration member","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":56,"character":6}],"defaultValue":"5"},{"id":12,"name":"array","kind":16,"kindString":"Enumeration member","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":55,"character":6}],"defaultValue":"4"},{"id":11,"name":"function","kind":16,"kindString":"Enumeration member","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":54,"character":9}],"defaultValue":"3"},{"id":8,"name":"instance","kind":16,"kindString":"Enumeration member","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":51,"character":9}],"defaultValue":"0"},{"id":9,"name":"singleton","kind":16,"kindString":"Enumeration member","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":52,"character":10}],"defaultValue":"1"},{"id":10,"name":"transient","kind":16,"kindString":"Enumeration member","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":53,"character":10}],"defaultValue":"2"}],"groups":[{"title":"Enumeration members","kind":16,"children":[13,12,11,8,9,10]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":50,"character":34}]},{"id":58,"name":"All","kind":128,"kindString":"Class","flags":{"isExported":true},"typeParameter":[{"id":59,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":60,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":61,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":62,"name":"constructor","kind":512,"kindString":"Constructor","flags":{"isExported":true},"signatures":[{"id":63,"name":"new All","kind":16384,"kindString":"Constructor signature","flags":{},"parameters":[{"id":64,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"All","id":58}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":81,"character":115}]},{"id":65,"name":"get","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":66,"name":"get","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":67,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}}],"type":{"type":"array","elementType":{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":83,"character":4}]},{"id":68,"name":"of","kind":2048,"kindString":"Method","flags":{"isStatic":true,"isExported":true},"signatures":[{"id":69,"name":"of","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":70,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":71,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":72,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":73,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"All","id":58,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":84,"character":10}]}],"groups":[{"title":"Constructors","kind":512,"children":[62]},{"title":"Methods","kind":2048,"children":[65,68]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":81,"character":24}]},{"id":198,"name":"Container","kind":128,"kindString":"Class","flags":{"isExported":true},"children":[{"id":202,"name":"constructor","kind":512,"kindString":"Constructor","flags":{"isExported":true},"signatures":[{"id":203,"name":"new Container","kind":16384,"kindString":"Constructor signature","flags":{},"parameters":[{"id":204,"name":"configuration","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"ContainerConfiguration","id":192}}],"type":{"type":"reference","name":"Container","id":198}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":156,"character":17}]},{"id":200,"name":"parent","kind":1024,"kindString":"Property","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":155,"character":7}],"type":{"type":"reference","name":"Container","id":198}},{"id":201,"name":"root","kind":1024,"kindString":"Property","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":156,"character":5}],"type":{"type":"reference","name":"Container","id":198}},{"id":199,"name":"instance","kind":1024,"kindString":"Property","flags":{"isStatic":true,"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":154,"character":16}],"type":{"type":"reference","name":"Container","id":198}},{"id":337,"name":"_createInvocationHandler","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":338,"name":"_createInvocationHandler","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":339,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":340,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":341,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":342,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intersection","types":[{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reflection","declaration":{"id":343,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":344,"name":"inject","kind":32,"kindString":"Variable","flags":{"isOptional":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":181,"character":8}],"type":{"type":"intrinsic","name":"any"}}],"groups":[{"title":"Variables","kind":32,"children":[344]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":180,"character":165}]}}]}}],"type":{"type":"reference","name":"InvocationHandler","id":176,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":180,"character":25}]},{"id":319,"name":"_get","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":320,"name":"_get","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":321,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}}],"type":{"type":"intrinsic","name":"any"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":176,"character":5}]},{"id":275,"name":"autoRegister","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":276,"name":"autoRegister","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":277,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":278,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":279,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":280,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Primitive","id":379}},{"id":281,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Resolver","id":2}},{"id":282,"name":"autoRegister","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":283,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":284,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":285,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":286,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":287,"name":"fn","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Resolver","id":2}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":168,"character":13},{"fileName":"aurelia-dependency-injection.d.ts","line":169,"character":13}]},{"id":288,"name":"autoRegisterAll","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":289,"name":"autoRegisterAll","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":290,"name":"fns","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"array","elementType":{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"}]}}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":170,"character":16}]},{"id":328,"name":"createChild","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":329,"name":"createChild","kind":4096,"kindString":"Call signature","flags":{},"type":{"type":"reference","name":"Container","id":198}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":178,"character":12}]},{"id":308,"name":"get","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":309,"name":"get","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":310,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":311,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":312,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":313,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"ImplOrAny","id":407,"typeArguments":[{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":314,"name":"get","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":315,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":316,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":317,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":318,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}}],"type":{"type":"reference","name":"Container","id":198}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":174,"character":4},{"fileName":"aurelia-dependency-injection.d.ts","line":175,"character":4}]},{"id":322,"name":"getAll","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":323,"name":"getAll","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":324,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":325,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":326,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":327,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"array","elementType":{"type":"reference","name":"ImplOrAny","id":407,"typeArguments":[{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":177,"character":7}]},{"id":301,"name":"getResolver","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":302,"name":"getResolver","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":303,"name":"TStrategyKey","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"StrategyState","typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl"},{"type":"typeParameter","name":"TArgs"}]}}},{"id":304,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":305,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":306,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":307,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtorOrFunctor","id":417,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"StrategyResolver","id":25,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TStrategyKey","constraint":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"StrategyState","typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl"},{"type":"typeParameter","name":"TArgs"}]}}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":173,"character":12}]},{"id":294,"name":"hasResolver","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":295,"name":"hasResolver","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":296,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":297,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":298,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":299,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":300,"name":"checkParent","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"intrinsic","name":"boolean"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":172,"character":12}]},{"id":330,"name":"invoke","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":331,"name":"invoke","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":332,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":333,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":334,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":335,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":336,"name":"dynamicDependencies","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"type":{"type":"reference","name":"ImplOrAny","id":407,"typeArguments":[{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":179,"character":7}]},{"id":205,"name":"makeGlobal","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":206,"name":"makeGlobal","kind":4096,"kindString":"Call signature","flags":{},"type":{"type":"reference","name":"Container","id":198}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":158,"character":11}]},{"id":261,"name":"registerAlias","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":262,"name":"registerAlias","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":263,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":264,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":265,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":266,"name":"originalKey","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":267,"name":"aliasKey","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Resolver","id":2}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":166,"character":14}]},{"id":249,"name":"registerHandler","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":250,"name":"registerHandler","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":251,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":252,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":253,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":254,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":255,"name":"handler","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reflection","declaration":{"id":256,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":257,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":258,"name":"container","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"Container","id":198}},{"id":259,"name":"key","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":260,"name":"resolver","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"Resolver","id":2}}],"type":{"type":"intrinsic","name":"any"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":165,"character":167}]}}}],"type":{"type":"reference","name":"Resolver","id":2}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":165,"character":16}]},{"id":216,"name":"registerInstance","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":217,"name":"registerInstance","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":218,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":219,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":220,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":221,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":222,"name":"instance","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}}],"type":{"type":"reference","name":"Resolver","id":2}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":160,"character":17}]},{"id":268,"name":"registerResolver","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":269,"name":"registerResolver","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":270,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":271,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":272,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":273,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":274,"name":"resolver","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Resolver","id":2}}],"type":{"type":"reference","name":"Resolver","id":2}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":167,"character":17}]},{"id":223,"name":"registerSingleton","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":224,"name":"registerSingleton","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":225,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":226,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":227,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":228,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Primitive","id":379}},{"id":229,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Resolver","id":2}},{"id":230,"name":"registerSingleton","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":231,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":232,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":233,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":234,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":235,"name":"fn","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Resolver","id":2}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":161,"character":18},{"fileName":"aurelia-dependency-injection.d.ts","line":162,"character":18}]},{"id":236,"name":"registerTransient","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":237,"name":"registerTransient","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":238,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":239,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":240,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":241,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Primitive","id":379}},{"id":242,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Resolver","id":2}},{"id":243,"name":"registerTransient","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":244,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":245,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":246,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":247,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":248,"name":"fn","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Resolver","id":2}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":163,"character":18},{"fileName":"aurelia-dependency-injection.d.ts","line":164,"character":18}]},{"id":207,"name":"setHandlerCreatedCallback","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":208,"name":"setHandlerCreatedCallback","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":209,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":210,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":211,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":212,"name":"onHandlerCreated","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reflection","declaration":{"id":213,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":214,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":215,"name":"handler","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"InvocationHandler","id":176,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"InvocationHandler","id":176,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":159,"character":133}]}}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":159,"character":26}]},{"id":291,"name":"unregister","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":292,"name":"unregister","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":293,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":171,"character":11}]}],"groups":[{"title":"Constructors","kind":512,"children":[202]},{"title":"Properties","kind":1024,"children":[200,201,199]},{"title":"Methods","kind":2048,"children":[337,319,275,288,328,308,322,301,294,330,205,261,249,216,268,223,236,207,291]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":153,"character":30}]},{"id":108,"name":"Factory","kind":128,"kindString":"Class","flags":{"isExported":true},"typeParameter":[{"id":109,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":110,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":111,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":112,"name":"constructor","kind":512,"kindString":"Constructor","flags":{"isExported":true},"signatures":[{"id":113,"name":"new Factory","kind":16384,"kindString":"Constructor signature","flags":{},"parameters":[{"id":114,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtorOrFunctor","id":417,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Factory","id":108}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":96,"character":119}]},{"id":115,"name":"get","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":116,"name":"get","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":117,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}}],"type":{"type":"reference","name":"DependencyFunctor","id":400,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":98,"character":4}]},{"id":118,"name":"of","kind":2048,"kindString":"Method","flags":{"isStatic":true,"isExported":true},"signatures":[{"id":119,"name":"of","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":120,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":121,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":122,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":123,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Factory","id":108,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":99,"character":10}]}],"groups":[{"title":"Constructors","kind":512,"children":[112]},{"title":"Methods","kind":2048,"children":[115,118]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":96,"character":28}]},{"id":160,"name":"FactoryInvoker","kind":128,"kindString":"Class","flags":{"isExported":true},"typeParameter":[{"id":161,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":162,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":163,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":164,"name":"instance","kind":1024,"kindString":"Property","flags":{"isStatic":true,"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":137,"character":16}],"type":{"type":"reference","name":"FactoryInvoker","id":160,"typeArguments":[{"type":"intrinsic","name":"any"}]}},{"id":165,"name":"invoke","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":166,"name":"invoke","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":167,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}},{"id":168,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":169,"name":"dependencies","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}}],"type":{"type":"reference","name":"ImplOrAny","id":407,"typeArguments":[{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},"implementationOf":{"type":"reference","name":"Invoker.invoke","id":150}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":138,"character":7}],"implementationOf":{"type":"reference","name":"Invoker.invoke","id":149}},{"id":170,"name":"invokeWithDynamicDependencies","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":171,"name":"invokeWithDynamicDependencies","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":172,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}},{"id":173,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":174,"name":"staticDependencies","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}},{"id":175,"name":"dynamicDependencies","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"type":{"type":"reference","name":"ImplOrAny","id":407,"typeArguments":[{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},"implementationOf":{"type":"reference","name":"Invoker.invokeWithDynamicDependencies","id":155}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":139,"character":30}],"implementationOf":{"type":"reference","name":"Invoker.invokeWithDynamicDependencies","id":154}}],"groups":[{"title":"Properties","kind":1024,"children":[164]},{"title":"Methods","kind":2048,"children":[165,170]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":136,"character":35}],"implementedTypes":[{"type":"reference","name":"Invoker","id":145,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}]},{"id":176,"name":"InvocationHandler","kind":128,"kindString":"Class","flags":{"isExported":true},"typeParameter":[{"id":177,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":178,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":179,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":183,"name":"constructor","kind":512,"kindString":"Constructor","flags":{"isExported":true},"signatures":[{"id":184,"name":"new InvocationHandler","kind":16384,"kindString":"Constructor signature","flags":{},"parameters":[{"id":185,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":186,"name":"invoker","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Invoker","id":145,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":187,"name":"dependencies","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}}],"type":{"type":"reference","name":"InvocationHandler","id":176}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":145,"character":21}]},{"id":182,"name":"dependencies","kind":1024,"kindString":"Property","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":145,"character":13}],"type":{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}},{"id":180,"name":"fn","kind":1024,"kindString":"Property","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":143,"character":3}],"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":181,"name":"invoker","kind":1024,"kindString":"Property","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":144,"character":8}],"type":{"type":"reference","name":"Invoker","id":145,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":188,"name":"invoke","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":189,"name":"invoke","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":190,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}},{"id":191,"name":"dynamicDependencies","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"array","elementType":{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}}}],"type":{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":147,"character":7}]}],"groups":[{"title":"Constructors","kind":512,"children":[183]},{"title":"Properties","kind":1024,"children":[182,180,181]},{"title":"Methods","kind":2048,"children":[188]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":142,"character":38}]},{"id":40,"name":"Lazy","kind":128,"kindString":"Class","flags":{"isExported":true},"typeParameter":[{"id":41,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":42,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":43,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":44,"name":"constructor","kind":512,"kindString":"Constructor","flags":{"isExported":true},"signatures":[{"id":45,"name":"new Lazy","kind":16384,"kindString":"Constructor signature","flags":{},"parameters":[{"id":46,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Lazy","id":40}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":76,"character":116}]},{"id":47,"name":"get","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":48,"name":"get","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":49,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}}],"type":{"type":"reflection","declaration":{"id":50,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":51,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"type":{"type":"reference","name":"ImplOrAny","id":407,"typeArguments":[{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":78,"character":27}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":78,"character":4}]},{"id":52,"name":"of","kind":2048,"kindString":"Method","flags":{"isStatic":true,"isExported":true},"signatures":[{"id":53,"name":"of","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":54,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":55,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":56,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":57,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Lazy","id":40,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":79,"character":10}]}],"groups":[{"title":"Constructors","kind":512,"children":[44]},{"title":"Methods","kind":2048,"children":[47,52]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":76,"character":25}]},{"id":124,"name":"NewInstance","kind":128,"kindString":"Class","flags":{"isExported":true},"typeParameter":[{"id":125,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":126,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":127,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":128,"name":"constructor","kind":512,"kindString":"Constructor","flags":{"isExported":true},"signatures":[{"id":129,"name":"new NewInstance","kind":16384,"kindString":"Constructor signature","flags":{},"parameters":[{"id":130,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtorOrFunctor","id":417,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":131,"name":"dynamicDependencies","kind":32768,"kindString":"Parameter","flags":{"isRest":true},"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"type":{"type":"reference","name":"NewInstance","id":124}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":101,"character":123}]},{"id":135,"name":"as","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":136,"name":"as","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":137,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtorOrFunctor","id":417,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"intrinsic","name":"this"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":104,"character":3}]},{"id":132,"name":"get","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":133,"name":"get","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":134,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}}],"type":{"type":"reference","name":"ImplOrAny","id":407,"typeArguments":[{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":103,"character":4}]},{"id":138,"name":"of","kind":2048,"kindString":"Method","flags":{"isStatic":true,"isExported":true},"signatures":[{"id":139,"name":"of","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":140,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":141,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":142,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":143,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtorOrFunctor","id":417,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":144,"name":"dynamicDependencies","kind":32768,"kindString":"Parameter","flags":{"isRest":true},"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"type":{"type":"reference","name":"NewInstance","id":124,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":105,"character":10}]}],"groups":[{"title":"Constructors","kind":512,"children":[128]},{"title":"Methods","kind":2048,"children":[135,132,138]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":101,"character":32}]},{"id":74,"name":"Optional","kind":128,"kindString":"Class","flags":{"isExported":true},"typeParameter":[{"id":75,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":76,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":77,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":78,"name":"constructor","kind":512,"kindString":"Constructor","flags":{"isExported":true},"signatures":[{"id":79,"name":"new Optional","kind":16384,"kindString":"Constructor signature","flags":{},"parameters":[{"id":80,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":81,"name":"checkParent","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"reference","name":"Optional","id":74}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":86,"character":120}]},{"id":82,"name":"get","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":83,"name":"get","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":84,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}}],"type":{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":88,"character":4}]},{"id":85,"name":"of","kind":2048,"kindString":"Method","flags":{"isStatic":true,"isExported":true},"signatures":[{"id":86,"name":"of","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":87,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":88,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":89,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":90,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":91,"name":"checkParent","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"reference","name":"Optional","id":74,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":89,"character":10}]}],"groups":[{"title":"Constructors","kind":512,"children":[78]},{"title":"Methods","kind":2048,"children":[82,85]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":86,"character":29}]},{"id":92,"name":"Parent","kind":128,"kindString":"Class","flags":{"isExported":true},"typeParameter":[{"id":93,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":94,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":95,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":96,"name":"constructor","kind":512,"kindString":"Constructor","flags":{"isExported":true},"signatures":[{"id":97,"name":"new Parent","kind":16384,"kindString":"Constructor signature","flags":{},"parameters":[{"id":98,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Parent","id":92}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":91,"character":118}]},{"id":99,"name":"get","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":100,"name":"get","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":101,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}}],"type":{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":93,"character":4}]},{"id":102,"name":"of","kind":2048,"kindString":"Method","flags":{"isStatic":true,"isExported":true},"signatures":[{"id":103,"name":"of","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":104,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":105,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":106,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":107,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Parent","id":92,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":94,"character":10}]}],"groups":[{"title":"Constructors","kind":512,"children":[96]},{"title":"Methods","kind":2048,"children":[99,102]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":91,"character":27}]},{"id":366,"name":"SingletonRegistration","kind":128,"kindString":"Class","flags":{"isExported":true},"typeParameter":[{"id":367,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":368,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":369,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":370,"name":"constructor","kind":512,"kindString":"Constructor","flags":{"isExported":true},"signatures":[{"id":371,"name":"new SingletonRegistration","kind":16384,"kindString":"Constructor signature","flags":{},"parameters":[{"id":372,"name":"keyOrRegisterInChild","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"union","types":[{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"intrinsic","name":"boolean"}]}},{"id":373,"name":"registerInChild","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"reference","name":"SingletonRegistration","id":366}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":197,"character":150}]},{"id":374,"name":"registerResolver","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":375,"name":"registerResolver","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":376,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}},{"id":377,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":378,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Resolver","id":2},"implementationOf":{"type":"reference","name":"Registration.registerResolver","id":350}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":199,"character":17}],"implementationOf":{"type":"reference","name":"Registration.registerResolver","id":349}}],"groups":[{"title":"Constructors","kind":512,"children":[370]},{"title":"Methods","kind":2048,"children":[374]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":197,"character":42}],"implementedTypes":[{"type":"reference","name":"Registration","id":345,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}]},{"id":25,"name":"StrategyResolver","kind":128,"kindString":"Class","flags":{"isExported":true},"typeParameter":[{"id":26,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":27,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":28,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":29,"name":"TStrategyKey","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"StrategyState","typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl"},{"type":"typeParameter","name":"TArgs"}]}}}],"children":[{"id":32,"name":"constructor","kind":512,"kindString":"Constructor","flags":{"isExported":true},"signatures":[{"id":33,"name":"new StrategyResolver","kind":16384,"kindString":"Constructor signature","flags":{},"parameters":[{"id":34,"name":"strategy","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"typeParameter","name":"TStrategyKey","constraint":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"StrategyState","typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl"},{"type":"typeParameter","name":"TArgs"}]}}}},{"id":35,"name":"state","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"unknown","name":"StrategyState<TBase, TImpl, TArgs>[TStrategyKey]"}}],"type":{"type":"reference","name":"StrategyResolver","id":25}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":72,"character":85}]},{"id":31,"name":"state","kind":1024,"kindString":"Property","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":72,"character":6}],"type":{"type":"intrinsic","name":"any"}},{"id":30,"name":"strategy","kind":1024,"kindString":"Property","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":71,"character":9}],"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"StrategyState","typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}},{"id":36,"name":"get","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":37,"name":"get","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":38,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}},{"id":39,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":74,"character":4}]}],"groups":[{"title":"Constructors","kind":512,"children":[32]},{"title":"Properties","kind":1024,"children":[31,30]},{"title":"Methods","kind":2048,"children":[36]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":70,"character":37}]},{"id":354,"name":"TransientRegistration","kind":128,"kindString":"Class","flags":{"isExported":true},"typeParameter":[{"id":355,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":356,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":357,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":358,"name":"constructor","kind":512,"kindString":"Constructor","flags":{"isExported":true},"signatures":[{"id":359,"name":"new TransientRegistration","kind":16384,"kindString":"Constructor signature","flags":{},"parameters":[{"id":360,"name":"key","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"TransientRegistration","id":354}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":193,"character":150}]},{"id":361,"name":"registerResolver","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":362,"name":"registerResolver","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":363,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}},{"id":364,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":365,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Resolver","id":2},"implementationOf":{"type":"reference","name":"Registration.registerResolver","id":350}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":195,"character":17}],"implementationOf":{"type":"reference","name":"Registration.registerResolver","id":349}}],"groups":[{"title":"Constructors","kind":512,"children":[358]},{"title":"Methods","kind":2048,"children":[361]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":193,"character":42}],"implementedTypes":[{"type":"reference","name":"Registration","id":345,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}]},{"id":192,"name":"ContainerConfiguration","kind":256,"kindString":"Interface","flags":{"isExported":true},"children":[{"id":197,"name":"handlers","kind":1024,"kindString":"Property","flags":{"isExported":true,"isOptional":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":151,"character":9}],"type":{"type":"reference","name":"Map","typeArguments":[{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"}]}},{"id":193,"name":"onHandlerCreated","kind":1024,"kindString":"Property","flags":{"isExported":true,"isOptional":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":150,"character":17}],"type":{"type":"reflection","declaration":{"id":194,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":195,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":196,"name":"handler","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"InvocationHandler","id":176,"typeArguments":[{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"}]}}],"type":{"type":"reference","name":"InvocationHandler","id":176,"typeArguments":[{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":150,"character":19}]}}}],"groups":[{"title":"Properties","kind":1024,"children":[197,193]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":149,"character":39}]},{"id":145,"name":"Invoker","kind":256,"kindString":"Interface","flags":{"isExported":true},"typeParameter":[{"id":146,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":147,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":148,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":149,"name":"invoke","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":150,"name":"invoke","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":151,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}},{"id":152,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":153,"name":"dependencies","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}}],"type":{"type":"reference","name":"ImplOrAny","id":407,"typeArguments":[{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":133,"character":7}]},{"id":154,"name":"invokeWithDynamicDependencies","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":155,"name":"invokeWithDynamicDependencies","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":156,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}},{"id":157,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":158,"name":"staticDependencies","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}},{"id":159,"name":"dynamicDependencies","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"type":{"type":"reference","name":"ImplOrAny","id":407,"typeArguments":[{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":134,"character":30}]}],"groups":[{"title":"Methods","kind":2048,"children":[149,154]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":132,"character":24}],"implementedBy":[{"type":"reference","name":"FactoryInvoker","id":160}]},{"id":345,"name":"Registration","kind":256,"kindString":"Interface","flags":{"isExported":true},"typeParameter":[{"id":346,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":347,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":348,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":349,"name":"registerResolver","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":350,"name":"registerResolver","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":351,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}},{"id":352,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":353,"name":"fn","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtorOrFunctor","id":409,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reference","name":"Resolver","id":2}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":191,"character":17}]}],"groups":[{"title":"Methods","kind":2048,"children":[349]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":190,"character":29}],"implementedBy":[{"type":"reference","name":"SingletonRegistration","id":366},{"type":"reference","name":"TransientRegistration","id":354}]},{"id":2,"name":"Resolver","kind":256,"kindString":"Interface","flags":{"isExported":true},"children":[{"id":3,"name":"get","kind":2048,"kindString":"Method","flags":{"isExported":true},"signatures":[{"id":4,"name":"get","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":5,"name":"container","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Container","id":198}},{"id":6,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}}],"type":{"type":"intrinsic","name":"any"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":48,"character":4}]}],"groups":[{"title":"Methods","kind":2048,"children":[3]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":47,"character":25}]},{"id":14,"name":"StrategyState","kind":256,"kindString":"Interface","flags":{"isExported":true},"typeParameter":[{"id":15,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":16,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":17,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"children":[{"id":18,"name":"__computed","kind":1024,"kindString":"Property","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":61,"character":20},{"fileName":"aurelia-dependency-injection.d.ts","line":62,"character":21},{"fileName":"aurelia-dependency-injection.d.ts","line":63,"character":21},{"fileName":"aurelia-dependency-injection.d.ts","line":64,"character":20},{"fileName":"aurelia-dependency-injection.d.ts","line":65,"character":17},{"fileName":"aurelia-dependency-injection.d.ts","line":68,"character":17}],"type":{"type":"intrinsic","name":"any"}}],"groups":[{"title":"Properties","kind":1024,"children":[18]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":60,"character":30}]},{"id":391,"name":"Args","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":392,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":12,"character":16}],"type":{"type":"union","types":[{"type":"reference","name":"CtorArgs","id":383,"typeArguments":[{"type":"typeParameter","name":"TBase"}]},{"type":"reference","name":"FuncArgs","id":387,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}]}},{"id":383,"name":"CtorArgs","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":384,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":8,"character":20}],"type":{"type":"unknown","name":"CtorArgs<TBase>"}},{"id":385,"name":"CtorImpl","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":386,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":9,"character":20}],"type":{"type":"unknown","name":"CtorImpl<TBase>"}},{"id":395,"name":"DependencyCtor","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":396,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":397,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":398,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":14,"character":26}],"type":{"type":"reflection","declaration":{"id":399,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":18,"character":5}]}}},{"id":409,"name":"DependencyCtorOrFunctor","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":410,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":411,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":412,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":25,"character":35}],"type":{"type":"union","types":[{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reference","name":"DependencyFunctor","id":400,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}]}},{"id":400,"name":"DependencyFunctor","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":401,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":402,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":403,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":19,"character":29}],"type":{"type":"reflection","declaration":{"id":404,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":405,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":406,"name":"args","kind":32768,"kindString":"Parameter","flags":{"isRest":true},"type":{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}}],"type":{"type":"union","types":[{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TBase"}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":23,"character":5}]}}},{"id":387,"name":"FuncArgs","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":388,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":10,"character":20}],"type":{"type":"unknown","name":"FuncArgs<TBase>"}},{"id":389,"name":"FuncReturns","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":390,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":11,"character":23}],"type":{"type":"unknown","name":"FuncReturns<TBase>"}},{"id":429,"name":"IStrategy","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":58,"character":29}],"type":{"type":"union","types":[{"type":"unknown","name":"1"},{"type":"unknown","name":"2"},{"type":"unknown","name":"3"},{"type":"unknown","name":"4"},{"type":"unknown","name":"5"}]}},{"id":393,"name":"Impl","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":394,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":13,"character":16}],"type":{"type":"union","types":[{"type":"reference","name":"CtorImpl","id":385,"typeArguments":[{"type":"typeParameter","name":"TBase"}]},{"type":"reference","name":"FuncReturns","id":389,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}]}},{"id":407,"name":"ImplOrAny","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":408,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":24,"character":21}],"type":{"type":"unknown","name":"ImplOrAny<TImpl>"}},{"id":379,"name":"Primitive","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":1,"character":21}],"type":{"type":"union","types":[{"type":"intrinsic","name":"boolean"},{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"number"},{"type":"intrinsic","name":"symbol"},{"type":"intrinsic","name":"any"},{"type":"reflection","declaration":{"id":380,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":381,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":382,"name":"args","kind":32768,"kindString":"Parameter","flags":{"isRest":true},"type":{"type":"array","elementType":{"type":"intrinsic","name":"any"}}}],"type":{"type":"intrinsic","name":"any"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":6,"character":3}]}},{"type":"reference","name":"Array","typeArguments":[{"type":"intrinsic","name":"any"}]}]}},{"id":413,"name":"PrimitiveOrDependencyCtor","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":414,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":415,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":416,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":30,"character":37}],"type":{"type":"union","types":[{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reference","name":"Primitive","id":379}]}},{"id":417,"name":"PrimitiveOrDependencyCtorOrFunctor","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":418,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":419,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":420,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":35,"character":46}],"type":{"type":"union","types":[{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reference","name":"DependencyFunctor","id":400,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reference","name":"Primitive","id":379}]}},{"id":430,"name":"StrategyFunctor","kind":4194304,"kindString":"Type alias","flags":{"isExported":true},"typeParameter":[{"id":431,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":432,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":433,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":59,"character":35}],"type":{"type":"reflection","declaration":{"id":434,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":435,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":436,"name":"container","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"Container","id":198}},{"id":437,"name":"ctor","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"PrimitiveOrDependencyCtorOrFunctor","id":417,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":438,"name":"strategyResolver","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"intrinsic","name":"any"}}],"type":{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":59,"character":126}]}}},{"id":543,"name":"_emptyParameters","kind":32,"kindString":"Variable","flags":{"isExported":true,"isConst":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":141,"character":37}],"type":{"type":"tuple"}},{"id":421,"name":"resolver","kind":32,"kindString":"Variable","flags":{"isExported":true,"isConst":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":42,"character":29}],"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"id":422,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":423,"name":"decorates","kind":32,"kindString":"Variable","flags":{"isOptional":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":43,"character":10}],"type":{"type":"reflection","declaration":{"id":424,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":425,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":426,"name":"key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}}],"type":{"type":"intrinsic","name":"boolean"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":43,"character":12}]}}}],"groups":[{"title":"Variables","kind":32,"children":[423]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":42,"character":30}]}},{"type":"reflection","declaration":{"id":427,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":428,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"type":{"type":"intrinsic","name":"any"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":46,"character":3}]}}]}},{"id":460,"name":"all","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":461,"name":"all","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":462,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":463,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":464,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":465,"name":"keyValue","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}}],"type":{"type":"reflection","declaration":{"id":466,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":467,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":468,"name":"target","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intersection","types":[{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reflection","declaration":{"id":469,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":470,"name":"inject","kind":32,"kindString":"Variable","flags":{"isOptional":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":114,"character":7}],"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"groups":[{"title":"Variables","kind":32,"children":[470]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":113,"character":179}]}}]}},{"id":471,"name":"_key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}},{"id":472,"name":"index","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":113,"character":132}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":113,"character":27}]},{"id":544,"name":"autoinject","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":545,"name":"autoinject","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":546,"name":"potentialTarget","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"}]}}],"type":{"type":"intrinsic","name":"any"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":184,"character":34}]},{"id":496,"name":"factory","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":497,"name":"factory","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":498,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":499,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":500,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":501,"name":"keyValue","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}}],"type":{"type":"reflection","declaration":{"id":502,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":503,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":504,"name":"target","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intersection","types":[{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reflection","declaration":{"id":505,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":506,"name":"inject","kind":32,"kindString":"Variable","flags":{"isOptional":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":123,"character":7}],"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"groups":[{"title":"Variables","kind":32,"children":[506]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":122,"character":183}]}}]}},{"id":507,"name":"_key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}},{"id":508,"name":"index","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":122,"character":136}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":122,"character":31}]},{"id":439,"name":"getDecoratorDependencies","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":440,"name":"getDecoratorDependencies","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":441,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":442,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":443,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":444,"name":"target","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intersection","types":[{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reflection","declaration":{"id":445,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":446,"name":"inject","kind":32,"kindString":"Variable","flags":{"isOptional":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":108,"character":7}],"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"groups":[{"title":"Variables","kind":32,"children":[446]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":107,"character":183}]}}]}}],"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":107,"character":48}]},{"id":547,"name":"inject","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":548,"name":"inject","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":549,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":550,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":551,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":552,"name":"rest","kind":32768,"kindString":"Parameter","flags":{"isRest":true},"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"type":{"type":"intrinsic","name":"any"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":185,"character":30}]},{"id":534,"name":"invokeAsFactory","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":535,"name":"invokeAsFactory","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":536,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":537,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":538,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":539,"name":"potentialTarget","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"void"},{"type":"reflection","declaration":{"id":540,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":541,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":542,"name":"target","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":131,"character":163}]}}]}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":131,"character":39}]},{"id":525,"name":"invoker","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":526,"name":"invoker","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":527,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":528,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":529,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":530,"name":"value","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Invoker","id":145,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reflection","declaration":{"id":531,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":532,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":533,"name":"target","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":130,"character":130}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":130,"character":31}]},{"id":447,"name":"lazy","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":448,"name":"lazy","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":449,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":450,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":451,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":452,"name":"keyValue","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}}],"type":{"type":"reflection","declaration":{"id":453,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":454,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":455,"name":"target","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intersection","types":[{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reflection","declaration":{"id":456,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":457,"name":"inject","kind":32,"kindString":"Variable","flags":{"isOptional":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":111,"character":7}],"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"groups":[{"title":"Variables","kind":32,"children":[457]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":110,"character":180}]}}]}},{"id":458,"name":"_key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}},{"id":459,"name":"index","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":110,"character":133}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":110,"character":28}]},{"id":509,"name":"newInstance","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":510,"name":"newInstance","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":511,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":512,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":513,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":514,"name":"asKeyOrTarget","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"intersection","types":[{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reflection","declaration":{"id":515,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":516,"name":"inject","kind":32,"kindString":"Variable","flags":{"isOptional":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":126,"character":7}],"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"groups":[{"title":"Variables","kind":32,"children":[516]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":125,"character":189}]}}]}},{"id":517,"name":"dynamicDependencies","kind":32768,"kindString":"Parameter","flags":{"isRest":true},"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"type":{"type":"reflection","declaration":{"id":518,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":519,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":520,"name":"target","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intersection","types":[{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reflection","declaration":{"id":521,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":522,"name":"inject","kind":32,"kindString":"Variable","flags":{"isOptional":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":128,"character":7}],"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"groups":[{"title":"Variables","kind":32,"children":[522]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":127,"character":91}]}}]}},{"id":523,"name":"_key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}},{"id":524,"name":"index","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":127,"character":44}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":125,"character":35}]},{"id":473,"name":"optional","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":474,"name":"optional","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":475,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":476,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":477,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":478,"name":"checkParentOrTarget","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"reflection","declaration":{"id":479,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":480,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":481,"name":"target","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intersection","types":[{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reflection","declaration":{"id":482,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":483,"name":"inject","kind":32,"kindString":"Variable","flags":{"isOptional":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":117,"character":7}],"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"groups":[{"title":"Variables","kind":32,"children":[483]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":116,"character":200}]}}]}},{"id":484,"name":"_key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}},{"id":485,"name":"index","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":116,"character":153}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":116,"character":32}]},{"id":486,"name":"parent","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":487,"name":"parent","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":488,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":489,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":490,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":491,"name":"target","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intersection","types":[{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]},{"type":"reflection","declaration":{"id":492,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":493,"name":"inject","kind":32,"kindString":"Variable","flags":{"isOptional":true},"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":120,"character":7}],"type":{"type":"array","elementType":{"type":"unknown","name":"TArgs[number]"}}}],"groups":[{"title":"Variables","kind":32,"children":[493]}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":119,"character":165}]}}]}},{"id":494,"name":"_key","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"any"}},{"id":495,"name":"index","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":119,"character":30}]},{"id":553,"name":"registration","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":554,"name":"registration","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":555,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":556,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":557,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":558,"name":"value","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Registration","id":345,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reflection","declaration":{"id":559,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":560,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":561,"name":"target","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":186,"character":140}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":186,"character":36}]},{"id":571,"name":"singleton","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":572,"name":"singleton","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":573,"name":"registerInChild","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"intrinsic","name":"any"}},{"id":574,"name":"singleton","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":575,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":576,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":577,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":578,"name":"key","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}},{"id":579,"name":"registerInChild","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"intrinsic","name":"any"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":188,"character":33},{"fileName":"aurelia-dependency-injection.d.ts","line":189,"character":33}]},{"id":562,"name":"transient","kind":64,"kindString":"Function","flags":{"isExported":true},"signatures":[{"id":563,"name":"transient","kind":4096,"kindString":"Call signature","flags":{},"typeParameter":[{"id":564,"name":"TBase","kind":131072,"kindString":"Type parameter","flags":{}},{"id":565,"name":"TImpl","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"id":566,"name":"TArgs","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}],"parameters":[{"id":567,"name":"key","kind":32768,"kindString":"Parameter","flags":{"isOptional":true},"type":{"type":"reference","name":"PrimitiveOrDependencyCtor","id":413,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"reflection","declaration":{"id":568,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"signatures":[{"id":569,"name":"__call","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":570,"name":"target","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"DependencyCtor","id":395,"typeArguments":[{"type":"typeParameter","name":"TBase"},{"type":"typeParameter","name":"TImpl","constraint":{"type":"reference","name":"Impl","id":393,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}},{"type":"typeParameter","name":"TArgs","constraint":{"type":"reference","name":"Args","id":391,"typeArguments":[{"type":"typeParameter","name":"TBase"}]}}]}}],"type":{"type":"intrinsic","name":"void"}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":187,"character":149}]}}}],"sources":[{"fileName":"aurelia-dependency-injection.d.ts","line":187,"character":33}]}],"groups":[{"title":"Enumerations","kind":4,"children":[7]},{"title":"Classes","kind":128,"children":[58,198,108,160,176,40,124,74,92,366,25,354]},{"title":"Interfaces","kind":256,"children":[192,145,345,2,14]},{"title":"Type aliases","kind":4194304,"children":[391,383,385,395,409,400,387,389,429,393,407,379,413,417,430]},{"title":"Variables","kind":32,"children":[543,421]},{"title":"Functions","kind":64,"children":[460,544,496,439,547,534,525,447,509,473,486,553,571,562]}]}
diff --git a/package-lock.json b/package-lock.json
index b491a11..1809414 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,8328 +1,8328 @@
-{
-  "name": "aurelia-dependency-injection",
-  "version": "1.4.2",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "@types/estree": {
-      "version": "0.0.39",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
-      "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
-      "dev": true
-    },
-    "@types/events": {
-      "version": "1.2.0",
-      "resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
-      "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==",
-      "dev": true
-    },
-    "@types/fs-extra": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.4.tgz",
-      "integrity": "sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g==",
-      "dev": true,
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/glob": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
-      "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
-      "dev": true,
-      "requires": {
-        "@types/events": "*",
-        "@types/minimatch": "*",
-        "@types/node": "*"
-      }
-    },
-    "@types/handlebars": {
-      "version": "4.0.39",
-      "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.0.39.tgz",
-      "integrity": "sha512-vjaS7Q0dVqFp85QhyPSZqDKnTTCemcSHNHFvDdalO1s0Ifz5KuE64jQD5xoUkfdWwF4WpqdJEl7LsWH8rzhKJA==",
-      "dev": true
-    },
-    "@types/highlight.js": {
-      "version": "9.12.3",
-      "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.12.3.tgz",
-      "integrity": "sha512-pGF/zvYOACZ/gLGWdQH8zSwteQS1epp68yRcVLJMgUck/MjEn/FBYmPub9pXT8C1e4a8YZfHo1CKyV8q1vKUnQ==",
-      "dev": true
-    },
-    "@types/jsdom": {
-      "version": "12.2.0",
-      "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-12.2.0.tgz",
-      "integrity": "sha512-8LQPkE7S3IuuJyHOIghXf+AjpcfhleEG63z9pveKFJ+Aqu9h/PXefU4gF6PSvCyOeNzlfFjMWO1Vtctowq2jRg==",
-      "dev": true,
-      "requires": {
-        "@types/node": "*",
-        "@types/tough-cookie": "*",
-        "parse5": "^4.0.0"
-      },
-      "dependencies": {
-        "parse5": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
-          "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
-          "dev": true
-        }
-      }
-    },
-    "@types/lodash": {
-      "version": "4.14.117",
-      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.117.tgz",
-      "integrity": "sha512-xyf2m6tRbz8qQKcxYZa7PA4SllYcay+eh25DN3jmNYY6gSTL7Htc/bttVdkqj2wfJGbeWlQiX8pIyJpKU+tubw==",
-      "dev": true
-    },
-    "@types/marked": {
-      "version": "0.4.2",
-      "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.4.2.tgz",
-      "integrity": "sha512-cDB930/7MbzaGF6U3IwSQp6XBru8xWajF5PV2YZZeV8DyiliTuld11afVztGI9+yJZ29il5E+NpGA6ooV/Cjkg==",
-      "dev": true
-    },
-    "@types/minimatch": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
-      "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
-      "dev": true
-    },
-    "@types/node": {
-      "version": "8.9.5",
-      "resolved": "http://registry.npmjs.org/@types/node/-/node-8.9.5.tgz",
-      "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==",
-      "dev": true
-    },
-    "@types/shelljs": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.0.tgz",
-      "integrity": "sha512-vs1hCC8RxLHRu2bwumNyYRNrU3o8BtZhLysH5A4I98iYmA2APl6R3uNQb5ihl+WiwH0xdC9LLO+vRrXLs/Kyxg==",
-      "dev": true,
-      "requires": {
-        "@types/glob": "*",
-        "@types/node": "*"
-      }
-    },
-    "@types/tough-cookie": {
-      "version": "2.3.4",
-      "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.4.tgz",
-      "integrity": "sha512-Set5ZdrAaKI/qHdFlVMgm/GsAv/wkXhSTuZFkJ+JI7HK+wIkIlOaUXSXieIvJ0+OvGIqtREFoE+NHJtEq0gtEw==",
-      "dev": true
-    },
-    "JSONStream": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
-      "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
-      "dev": true,
-      "requires": {
-        "jsonparse": "^1.2.0",
-        "through": ">=2.2.7 <3"
-      }
-    },
-    "abab": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
-      "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
-      "dev": true
-    },
-    "accepts": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
-      "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
-      "dev": true,
-      "requires": {
-        "mime-types": "~2.1.18",
-        "negotiator": "0.6.1"
-      }
-    },
-    "acorn": {
-      "version": "5.7.3",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
-      "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
-      "dev": true
-    },
-    "acorn-globals": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz",
-      "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==",
-      "dev": true,
-      "requires": {
-        "acorn": "^6.0.1",
-        "acorn-walk": "^6.0.1"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.2.tgz",
-          "integrity": "sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg==",
-          "dev": true
-        }
-      }
-    },
-    "acorn-walk": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.0.tgz",
-      "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==",
-      "dev": true
-    },
-    "add-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
-      "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=",
-      "dev": true
-    },
-    "after": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
-      "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
-      "dev": true
-    },
-    "ajv": {
-      "version": "5.5.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
-      "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
-      "dev": true,
-      "requires": {
-        "co": "^4.6.0",
-        "fast-deep-equal": "^1.0.0",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.3.0"
-      }
-    },
-    "align-text": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
-      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2",
-        "longest": "^1.0.1",
-        "repeat-string": "^1.5.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "amdefine": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
-      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
-      "dev": true
-    },
-    "ansi-regex": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-      "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-      "dev": true
-    },
-    "ansi-styles": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-      "dev": true,
-      "requires": {
-        "color-convert": "^1.9.0"
-      }
-    },
-    "anymatch": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-      "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-      "dev": true,
-      "requires": {
-        "micromatch": "^3.1.4",
-        "normalize-path": "^2.1.1"
-      }
-    },
-    "argparse": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-      "dev": true,
-      "requires": {
-        "sprintf-js": "~1.0.2"
-      }
-    },
-    "arr-diff": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
-      "dev": true
-    },
-    "arr-flatten": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-      "dev": true
-    },
-    "arr-union": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
-      "dev": true
-    },
-    "array-each": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
-      "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
-      "dev": true
-    },
-    "array-equal": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
-      "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
-      "dev": true
-    },
-    "array-find-index": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
-      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
-      "dev": true
-    },
-    "array-ify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
-      "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
-      "dev": true
-    },
-    "array-slice": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
-      "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
-      "dev": true
-    },
-    "array-unique": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
-      "dev": true
-    },
-    "arraybuffer.slice": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
-      "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==",
-      "dev": true
-    },
-    "arrify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
-      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
-      "dev": true
-    },
-    "asn1": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
-      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
-      "dev": true,
-      "requires": {
-        "safer-buffer": "~2.1.0"
-      }
-    },
-    "assert-plus": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-      "dev": true
-    },
-    "assign-symbols": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
-      "dev": true
-    },
-    "async": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
-      "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.17.10"
-      },
-      "dependencies": {
-        "lodash": {
-          "version": "4.17.11",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
-          "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
-          "dev": true
-        }
-      }
-    },
-    "async-each": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
-      "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
-      "dev": true
-    },
-    "async-limiter": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
-      "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
-      "dev": true
-    },
-    "asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
-      "dev": true
-    },
-    "atob": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
-      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
-      "dev": true
-    },
-    "aurelia-binding": {
-      "version": "2.1.6",
-      "resolved": "https://registry.npmjs.org/aurelia-binding/-/aurelia-binding-2.1.6.tgz",
-      "integrity": "sha512-M/za0p+LIEv0lLhJqzIIxufGbwVDMKDTuICiZ9hXFVrsTruT18axFWKW4OOuen3rpxTmhrzWCtukn5YxYG95XQ==",
-      "dev": true,
-      "requires": {
-        "aurelia-logging": "^1.0.0",
-        "aurelia-metadata": "^1.0.0",
-        "aurelia-pal": "^1.0.0",
-        "aurelia-task-queue": "^1.0.0"
-      }
-    },
-    "aurelia-bootstrapper": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/aurelia-bootstrapper/-/aurelia-bootstrapper-2.3.0.tgz",
-      "integrity": "sha512-JQ0yo5EbdoMPGQkeeNr2COMeOniZErb7cqLSKKjOdJ9SxYAfQDfbN4cF60NlOW6dJ3nR94ZpKXKjed2yF6nTVQ==",
-      "dev": true,
-      "requires": {
-        "aurelia-event-aggregator": "^1.0.0",
-        "aurelia-framework": "^1.3.0",
-        "aurelia-history": "^1.1.0",
-        "aurelia-history-browser": "^1.1.0",
-        "aurelia-loader-default": "^1.0.0",
-        "aurelia-logging-console": "^1.0.0",
-        "aurelia-pal": "^1.3.0",
-        "aurelia-pal-browser": "^1.0.0",
-        "aurelia-polyfills": "^1.0.0",
-        "aurelia-router": "^1.5.0",
-        "aurelia-templating": "^1.8.1",
-        "aurelia-templating-binding": "^1.0.0",
-        "aurelia-templating-resources": "^1.7.0",
-        "aurelia-templating-router": "^1.0.0"
-      }
-    },
-    "aurelia-dependency-injection": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/aurelia-dependency-injection/-/aurelia-dependency-injection-1.4.1.tgz",
-      "integrity": "sha512-NexdxbXQKVhg8ywHosauccKbnn3vAeLyNg3oPa0l+z1fgOMf3/jvVYpcdmWelJP5yfBmYNyTYVBffCKeaS2m0w==",
-      "dev": true,
-      "requires": {
-        "aurelia-metadata": "^1.0.0",
-        "aurelia-pal": "^1.0.0"
-      }
-    },
-    "aurelia-event-aggregator": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/aurelia-event-aggregator/-/aurelia-event-aggregator-1.0.1.tgz",
-      "integrity": "sha1-nXx8Hh7+HvOnh4Xnar6AYB4tNMg=",
-      "dev": true,
-      "requires": {
-        "aurelia-logging": "^1.0.0"
-      }
-    },
-    "aurelia-framework": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/aurelia-framework/-/aurelia-framework-1.3.0.tgz",
-      "integrity": "sha512-yuKdy3LQx0tN/2CMKM8KTBcVLCeAcmcjXyEgWmRUlxJHCBAIT63ECrjkRWYkUzRNz8EQ0qnuH4jLUaWykXgJwg==",
-      "dev": true,
-      "requires": {
-        "aurelia-binding": "^2.0.0",
-        "aurelia-dependency-injection": "^1.0.0",
-        "aurelia-loader": "^1.0.0",
-        "aurelia-logging": "^1.0.0",
-        "aurelia-metadata": "^1.0.0",
-        "aurelia-pal": "^1.0.0",
-        "aurelia-path": "^1.0.0",
-        "aurelia-task-queue": "^1.0.0",
-        "aurelia-templating": "^1.8.1"
-      }
-    },
-    "aurelia-history": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/aurelia-history/-/aurelia-history-1.1.0.tgz",
-      "integrity": "sha1-d5qjhtVoA6qkvbfXFDWld2hQX1c=",
-      "dev": true
-    },
-    "aurelia-history-browser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/aurelia-history-browser/-/aurelia-history-browser-1.2.0.tgz",
-      "integrity": "sha512-3sAHq1xVX3fx8tyDb1LookueTRddB+hPVyfCVFR5Az2MbAfiovxXTzU6EX4VsOcuMweuER26NW4FTCgTA+sTuQ==",
-      "dev": true,
-      "requires": {
-        "aurelia-history": "^1.0.0",
-        "aurelia-pal": "^1.0.0"
-      }
-    },
-    "aurelia-loader": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/aurelia-loader/-/aurelia-loader-1.0.0.tgz",
-      "integrity": "sha1-t4wqKBOqjkQSRyN91m/WLl1OGeo=",
-      "dev": true,
-      "requires": {
-        "aurelia-metadata": "^1.0.0",
-        "aurelia-path": "^1.0.0"
-      }
-    },
-    "aurelia-loader-default": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/aurelia-loader-default/-/aurelia-loader-default-1.0.4.tgz",
-      "integrity": "sha512-xHo8Qb/xpl/ncKJcPGN3h2WHVwjNtNEqZZn7APc+AT/AZMSr9zubWorPmYBp3b3mZp27lEhcIttL0NKJnHcYSg==",
-      "dev": true,
-      "requires": {
-        "aurelia-loader": "^1.0.0",
-        "aurelia-metadata": "^1.0.0",
-        "aurelia-pal": "^1.0.0"
-      }
-    },
-    "aurelia-logging": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/aurelia-logging/-/aurelia-logging-1.5.0.tgz",
-      "integrity": "sha512-u9Hhoj3yDHthKgTyj2svr7PaO41e2WFM2dSITxzOMzW8dC9hGVsIo9Hl6cereTP4+GMfMMQF5ZFp6Kfg87Ov0Q==",
-      "dev": true
-    },
-    "aurelia-logging-console": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/aurelia-logging-console/-/aurelia-logging-console-1.0.0.tgz",
-      "integrity": "sha1-7fdQepf8aLQFE6F8Z31wQUEBrbQ=",
-      "dev": true,
-      "requires": {
-        "aurelia-logging": "^1.0.0"
-      }
-    },
-    "aurelia-metadata": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/aurelia-metadata/-/aurelia-metadata-1.0.4.tgz",
-      "integrity": "sha512-9CgVH+kgrMIqWPAtdhhEJLoEPRMFz4RMsaLkYfYnK7LUCcOtZtPrOrAHCaU7jVa67JjGcsXkEqoN+xaTs0NL3g==",
-      "requires": {
-        "aurelia-pal": "^1.0.0"
-      }
-    },
-    "aurelia-pal": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/aurelia-pal/-/aurelia-pal-1.8.0.tgz",
-      "integrity": "sha512-Nc9S/JTUh1ErSUwg4INhgwBTe99ef8gYXZLjBnP4JJBmLcc/ChhOvj/dSRwluPkosggQgyj2pjla/9VAYHAXPg=="
-    },
-    "aurelia-pal-browser": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/aurelia-pal-browser/-/aurelia-pal-browser-1.8.0.tgz",
-      "integrity": "sha512-YcJyzMJ9I2NvUwac1Dcct5ZTL4NsNlB2MvLMKK5onTIlMI+azg8PSjM8OPRgms/h6cxUlKtzIiraq+KEmSqCuw==",
-      "dev": true,
-      "requires": {
-        "aurelia-pal": "^1.4.0"
-      }
-    },
-    "aurelia-pal-nodejs": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/aurelia-pal-nodejs/-/aurelia-pal-nodejs-1.2.0.tgz",
-      "integrity": "sha512-Ghca3sai7ju3Z5YVSmNDwKVn1dQ4nmDP+cirBlhL3N0PWf4+bE43g6dbVa91+muQ7HULZ23uGFVWTIM0s1OKBw==",
-      "dev": true,
-      "requires": {
-        "aurelia-pal": "^1.1.0",
-        "jsdom": "~11.5.1"
-      }
-    },
-    "aurelia-path": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/aurelia-path/-/aurelia-path-1.1.1.tgz",
-      "integrity": "sha1-yqnSC8hRWl+fKG2aOxjYGyyFsN0=",
-      "dev": true
-    },
-    "aurelia-polyfills": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/aurelia-polyfills/-/aurelia-polyfills-1.3.0.tgz",
-      "integrity": "sha1-iZ7ABR92qXHDFpNBJ57WLH859wc=",
-      "dev": true,
-      "requires": {
-        "aurelia-pal": "^1.0.0"
-      }
-    },
-    "aurelia-route-recognizer": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/aurelia-route-recognizer/-/aurelia-route-recognizer-1.2.0.tgz",
-      "integrity": "sha512-ABpfGBNclwWJik/DRSwJ5pUXAjMoD5mqGLMFbovroeWjdPQKonLh1G0BByngaWOdsIi3KrOglmktCFXqLn2jxg==",
-      "dev": true,
-      "requires": {
-        "aurelia-path": "^1.0.0"
-      }
-    },
-    "aurelia-router": {
-      "version": "1.6.3",
-      "resolved": "https://registry.npmjs.org/aurelia-router/-/aurelia-router-1.6.3.tgz",
-      "integrity": "sha512-6Dsr+8cSq4Bf61OOHhTQgkZvis4mhjqh1QbIKO7Ny+oRYdhnFjz1izHDYAosD52spXl/mVtlC1pJSg/ooAtHqA==",
-      "dev": true,
-      "requires": {
-        "aurelia-dependency-injection": "^1.0.0",
-        "aurelia-event-aggregator": "^1.0.0",
-        "aurelia-history": "^1.1.0",
-        "aurelia-logging": "^1.0.0",
-        "aurelia-path": "^1.0.0",
-        "aurelia-route-recognizer": "^1.2.0"
-      }
-    },
-    "aurelia-task-queue": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/aurelia-task-queue/-/aurelia-task-queue-1.3.1.tgz",
-      "integrity": "sha512-Eyto+EVcezwrY3qHZwBvueKb3j+e/lgKp2nNbX1y6KVJmoO9XzK/KctViprpn7ZFl9YGYjJ9s+zJM8nFlQUr1g==",
-      "dev": true,
-      "requires": {
-        "aurelia-pal": "^1.0.0"
-      }
-    },
-    "aurelia-templating": {
-      "version": "1.10.1",
-      "resolved": "https://registry.npmjs.org/aurelia-templating/-/aurelia-templating-1.10.1.tgz",
-      "integrity": "sha512-GDClZWk+32SUYMsEttRFE3+dIbzZeDf5vl9dvuO6ULe+erTUOq2TUf9pHknWZuzoXXdGSD2qQnk+AEZZWW3MOQ==",
-      "dev": true,
-      "requires": {
-        "aurelia-binding": "^2.0.0",
-        "aurelia-dependency-injection": "^1.0.0",
-        "aurelia-loader": "^1.0.0",
-        "aurelia-logging": "^1.0.0",
-        "aurelia-metadata": "^1.0.0",
-        "aurelia-pal": "^1.0.0",
-        "aurelia-path": "^1.0.0",
-        "aurelia-task-queue": "^1.1.0"
-      }
-    },
-    "aurelia-templating-binding": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/aurelia-templating-binding/-/aurelia-templating-binding-1.5.2.tgz",
-      "integrity": "sha512-G2zMZGse1n6o/pWjlvSmTevgXBq+ZapHWA9SlRyChoZOwz1/+wzPUF/0a+EqHpAB5cW/nqWCo9a53GRqmzLR1w==",
-      "dev": true,
-      "requires": {
-        "aurelia-binding": "^2.0.0",
-        "aurelia-logging": "^1.0.0",
-        "aurelia-templating": "^1.3.0"
-      }
-    },
-    "aurelia-templating-resources": {
-      "version": "1.7.1",
-      "resolved": "https://registry.npmjs.org/aurelia-templating-resources/-/aurelia-templating-resources-1.7.1.tgz",
-      "integrity": "sha512-zLiy1a4ivnyzcnD9TPHY6jMF+pnoYpTC5riIWQXlRQOK/qsTBiojknhE64tgFAA9H/BxJfUkqCfqeWYVIartSA==",
-      "dev": true,
-      "requires": {
-        "aurelia-binding": "^2.0.0",
-        "aurelia-dependency-injection": "^1.0.0",
-        "aurelia-loader": "^1.0.0",
-        "aurelia-logging": "^1.0.0",
-        "aurelia-metadata": "^1.0.0",
-        "aurelia-pal": "^1.3.0",
-        "aurelia-path": "^1.0.0",
-        "aurelia-task-queue": "^1.0.0",
-        "aurelia-templating": "^1.8.1"
-      }
-    },
-    "aurelia-templating-router": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/aurelia-templating-router/-/aurelia-templating-router-1.3.3.tgz",
-      "integrity": "sha512-Bfl3QwXSJtyN5Q1kNgOn4vM+Q3aYrZ+lShumbhn349/TjHRUPz73CihJvdTQoMBYPV8CwEeZt2qgmrPc1MmQYA==",
-      "dev": true,
-      "requires": {
-        "aurelia-binding": "^2.0.0",
-        "aurelia-dependency-injection": "^1.0.0",
-        "aurelia-logging": "^1.0.0",
-        "aurelia-metadata": "^1.0.0",
-        "aurelia-pal": "^1.3.0",
-        "aurelia-path": "^1.0.0",
-        "aurelia-router": "^1.5.0",
-        "aurelia-templating": "^1.8.1"
-      }
-    },
-    "aurelia-testing": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/aurelia-testing/-/aurelia-testing-1.0.0.tgz",
-      "integrity": "sha512-eLzP7Run0PyN0l1YWQobr2H/OEd0zSPabPKcbMD9gAxfGEKpotTQFFEEhCXEJu9ykLWqjO1TARB5SqoXpfdfGg==",
-      "dev": true,
-      "requires": {
-        "aurelia-dependency-injection": "^1.0.0",
-        "aurelia-framework": "^1.0.0",
-        "aurelia-logging": "^1.0.0",
-        "aurelia-pal": "^1.0.0",
-        "aurelia-templating": "^1.0.0"
-      }
-    },
-    "aws-sign2": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
-      "dev": true
-    },
-    "aws4": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
-      "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
-      "dev": true
-    },
-    "babel-code-frame": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
-      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
-      "dev": true,
-      "requires": {
-        "chalk": "^1.1.3",
-        "esutils": "^2.0.2",
-        "js-tokens": "^3.0.2"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-          "dev": true
-        },
-        "chalk": {
-          "version": "1.1.3",
-          "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^2.2.1",
-            "escape-string-regexp": "^1.0.2",
-            "has-ansi": "^2.0.0",
-            "strip-ansi": "^3.0.0",
-            "supports-color": "^2.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true
-        }
-      }
-    },
-    "babel-core": {
-      "version": "6.26.3",
-      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
-      "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
-      "dev": true,
-      "requires": {
-        "babel-code-frame": "^6.26.0",
-        "babel-generator": "^6.26.0",
-        "babel-helpers": "^6.24.1",
-        "babel-messages": "^6.23.0",
-        "babel-register": "^6.26.0",
-        "babel-runtime": "^6.26.0",
-        "babel-template": "^6.26.0",
-        "babel-traverse": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "babylon": "^6.18.0",
-        "convert-source-map": "^1.5.1",
-        "debug": "^2.6.9",
-        "json5": "^0.5.1",
-        "lodash": "^4.17.4",
-        "minimatch": "^3.0.4",
-        "path-is-absolute": "^1.0.1",
-        "private": "^0.1.8",
-        "slash": "^1.0.0",
-        "source-map": "^0.5.7"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-          "dev": true
-        }
-      }
-    },
-    "babel-generator": {
-      "version": "6.26.1",
-      "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
-      "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
-      "dev": true,
-      "requires": {
-        "babel-messages": "^6.23.0",
-        "babel-runtime": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "detect-indent": "^4.0.0",
-        "jsesc": "^1.3.0",
-        "lodash": "^4.17.4",
-        "source-map": "^0.5.7",
-        "trim-right": "^1.0.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-          "dev": true
-        }
-      }
-    },
-    "babel-helper-hoist-variables": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
-      "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "^6.22.0",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-helpers": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
-      "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "^6.22.0",
-        "babel-template": "^6.24.1"
-      }
-    },
-    "babel-messages": {
-      "version": "6.23.0",
-      "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
-      "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-cjs-system-wrapper": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-cjs-system-wrapper/-/babel-plugin-transform-cjs-system-wrapper-0.3.0.tgz",
-      "integrity": "sha1-9XWfKb7NNW+qt69SyZzejnutCyE=",
-      "dev": true,
-      "requires": {
-        "babel-template": "^6.9.0"
-      }
-    },
-    "babel-plugin-transform-es2015-modules-systemjs": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
-      "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
-      "dev": true,
-      "requires": {
-        "babel-helper-hoist-variables": "^6.24.1",
-        "babel-runtime": "^6.22.0",
-        "babel-template": "^6.24.1"
-      }
-    },
-    "babel-plugin-transform-global-system-wrapper": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-global-system-wrapper/-/babel-plugin-transform-global-system-wrapper-0.0.1.tgz",
-      "integrity": "sha1-r7RpzsDgRom5/n6LH9KA/JSm2PI=",
-      "dev": true,
-      "requires": {
-        "babel-template": "^6.9.0"
-      }
-    },
-    "babel-plugin-transform-system-register": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-system-register/-/babel-plugin-transform-system-register-0.0.1.tgz",
-      "integrity": "sha1-nf9AOQwnY6xRjwsq18XqT2WlviU=",
-      "dev": true
-    },
-    "babel-register": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
-      "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
-      "dev": true,
-      "requires": {
-        "babel-core": "^6.26.0",
-        "babel-runtime": "^6.26.0",
-        "core-js": "^2.5.0",
-        "home-or-tmp": "^2.0.0",
-        "lodash": "^4.17.4",
-        "mkdirp": "^0.5.1",
-        "source-map-support": "^0.4.15"
-      }
-    },
-    "babel-runtime": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
-      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
-      "dev": true,
-      "requires": {
-        "core-js": "^2.4.0",
-        "regenerator-runtime": "^0.11.0"
-      }
-    },
-    "babel-template": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
-      "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "^6.26.0",
-        "babel-traverse": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "babylon": "^6.18.0",
-        "lodash": "^4.17.4"
-      }
-    },
-    "babel-traverse": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
-      "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
-      "dev": true,
-      "requires": {
-        "babel-code-frame": "^6.26.0",
-        "babel-messages": "^6.23.0",
-        "babel-runtime": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "babylon": "^6.18.0",
-        "debug": "^2.6.8",
-        "globals": "^9.18.0",
-        "invariant": "^2.2.2",
-        "lodash": "^4.17.4"
-      }
-    },
-    "babel-types": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
-      "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "^6.26.0",
-        "esutils": "^2.0.2",
-        "lodash": "^4.17.4",
-        "to-fast-properties": "^1.0.3"
-      }
-    },
-    "babylon": {
-      "version": "6.18.0",
-      "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
-      "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
-      "dev": true
-    },
-    "backo2": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
-      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
-      "dev": true
-    },
-    "balanced-match": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-      "dev": true
-    },
-    "base": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-      "dev": true,
-      "requires": {
-        "cache-base": "^1.0.1",
-        "class-utils": "^0.3.5",
-        "component-emitter": "^1.2.1",
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.1",
-        "mixin-deep": "^1.2.0",
-        "pascalcase": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "base64-arraybuffer": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
-      "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
-      "dev": true
-    },
-    "base64id": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
-      "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
-      "dev": true
-    },
-    "bcrypt-pbkdf": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
-      "dev": true,
-      "requires": {
-        "tweetnacl": "^0.14.3"
-      }
-    },
-    "better-assert": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
-      "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
-      "dev": true,
-      "requires": {
-        "callsite": "1.0.0"
-      }
-    },
-    "binary-extensions": {
-      "version": "1.12.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
-      "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
-      "dev": true
-    },
-    "blob": {
-      "version": "0.0.4",
-      "resolved": "http://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
-      "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
-      "dev": true
-    },
-    "block-stream": {
-      "version": "0.0.9",
-      "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
-      "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
-      "dev": true,
-      "requires": {
-        "inherits": "~2.0.0"
-      }
-    },
-    "bluebird": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz",
-      "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==",
-      "dev": true
-    },
-    "body-parser": {
-      "version": "1.18.3",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
-      "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
-      "dev": true,
-      "requires": {
-        "bytes": "3.0.0",
-        "content-type": "~1.0.4",
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "http-errors": "~1.6.3",
-        "iconv-lite": "0.4.23",
-        "on-finished": "~2.3.0",
-        "qs": "6.5.2",
-        "raw-body": "2.3.3",
-        "type-is": "~1.6.16"
-      },
-      "dependencies": {
-        "iconv-lite": {
-          "version": "0.4.23",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
-          "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
-          "dev": true,
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3"
-          }
-        }
-      }
-    },
-    "brace-expansion": {
-      "version": "1.1.8",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
-      "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
-      "dev": true,
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "braces": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-      "dev": true,
-      "requires": {
-        "arr-flatten": "^1.1.0",
-        "array-unique": "^0.3.2",
-        "extend-shallow": "^2.0.1",
-        "fill-range": "^4.0.0",
-        "isobject": "^3.0.1",
-        "repeat-element": "^1.1.2",
-        "snapdragon": "^0.8.1",
-        "snapdragon-node": "^2.0.1",
-        "split-string": "^3.0.2",
-        "to-regex": "^3.0.1"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "browser-process-hrtime": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
-      "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==",
-      "dev": true
-    },
-    "buffer-alloc": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
-      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
-      "dev": true,
-      "requires": {
-        "buffer-alloc-unsafe": "^1.1.0",
-        "buffer-fill": "^1.0.0"
-      }
-    },
-    "buffer-alloc-unsafe": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
-      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
-      "dev": true
-    },
-    "buffer-crc32": {
-      "version": "0.2.13",
-      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
-      "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
-      "dev": true
-    },
-    "buffer-fill": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
-      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
-      "dev": true
-    },
-    "buffer-from": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
-      "dev": true
-    },
-    "buffer-peek-stream": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/buffer-peek-stream/-/buffer-peek-stream-1.0.1.tgz",
-      "integrity": "sha1-U7R1cKE0d4fFutTKLKMCH52LPP0=",
-      "dev": true
-    },
-    "builtin-modules": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
-      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
-      "dev": true
-    },
-    "bytes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
-      "dev": true
-    },
-    "cache-base": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
-      "dev": true,
-      "requires": {
-        "collection-visit": "^1.0.0",
-        "component-emitter": "^1.2.1",
-        "get-value": "^2.0.6",
-        "has-value": "^1.0.0",
-        "isobject": "^3.0.1",
-        "set-value": "^2.0.0",
-        "to-object-path": "^0.3.0",
-        "union-value": "^1.0.0",
-        "unset-value": "^1.0.0"
-      }
-    },
-    "callsite": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
-      "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
-      "dev": true
-    },
-    "camelcase": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
-      "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
-      "dev": true
-    },
-    "camelcase-keys": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
-      "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
-      "dev": true,
-      "requires": {
-        "camelcase": "^4.1.0",
-        "map-obj": "^2.0.0",
-        "quick-lru": "^1.0.0"
-      }
-    },
-    "caseless": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
-      "dev": true
-    },
-    "center-align": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
-      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
-      "dev": true,
-      "requires": {
-        "align-text": "^0.1.3",
-        "lazy-cache": "^1.0.3"
-      }
-    },
-    "chalk": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
-      "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^3.2.1",
-        "escape-string-regexp": "^1.0.5",
-        "supports-color": "^5.3.0"
-      },
-      "dependencies": {
-        "supports-color": {
-          "version": "5.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
-      }
-    },
-    "chokidar": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
-      "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
-      "dev": true,
-      "requires": {
-        "anymatch": "^2.0.0",
-        "async-each": "^1.0.0",
-        "braces": "^2.3.0",
-        "fsevents": "^1.2.2",
-        "glob-parent": "^3.1.0",
-        "inherits": "^2.0.1",
-        "is-binary-path": "^1.0.0",
-        "is-glob": "^4.0.0",
-        "lodash.debounce": "^4.0.8",
-        "normalize-path": "^2.1.1",
-        "path-is-absolute": "^1.0.0",
-        "readdirp": "^2.0.0",
-        "upath": "^1.0.5"
-      }
-    },
-    "circular-json": {
-      "version": "0.5.9",
-      "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz",
-      "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==",
-      "dev": true
-    },
-    "class-utils": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
-      "dev": true,
-      "requires": {
-        "arr-union": "^3.1.0",
-        "define-property": "^0.2.5",
-        "isobject": "^3.0.0",
-        "static-extend": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
-      }
-    },
-    "cliui": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
-      "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
-      "dev": true,
-      "requires": {
-        "string-width": "^2.1.1",
-        "strip-ansi": "^4.0.0",
-        "wrap-ansi": "^2.0.0"
-      }
-    },
-    "co": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
-      "dev": true
-    },
-    "code-point-at": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
-      "dev": true
-    },
-    "collection-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
-      "dev": true,
-      "requires": {
-        "map-visit": "^1.0.0",
-        "object-visit": "^1.0.0"
-      }
-    },
-    "color-convert": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-      "dev": true,
-      "requires": {
-        "color-name": "1.1.3"
-      }
-    },
-    "color-name": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
-      "dev": true
-    },
-    "colors": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz",
-      "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==",
-      "dev": true
-    },
-    "combine-lists": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz",
-      "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.5.0"
-      }
-    },
-    "combined-stream": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
-      "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
-      "dev": true,
-      "requires": {
-        "delayed-stream": "~1.0.0"
-      }
-    },
-    "commander": {
-      "version": "2.17.1",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
-      "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
-      "dev": true
-    },
-    "compare-func": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz",
-      "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=",
-      "dev": true,
-      "requires": {
-        "array-ify": "^1.0.0",
-        "dot-prop": "^3.0.0"
-      }
-    },
-    "component-bind": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
-      "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
-      "dev": true
-    },
-    "component-emitter": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
-      "dev": true
-    },
-    "component-inherit": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
-      "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
-      "dev": true
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-      "dev": true
-    },
-    "concat-stream": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-      "dev": true,
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
-      }
-    },
-    "concurrently": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-4.0.1.tgz",
-      "integrity": "sha512-D8UI+mlI/bfvrA57SeKOht6sEpb01dKk+8Yee4fbnkk1Ue8r3S+JXoEdFZIpzQlXJGtnxo47Wvvg/kG4ba3U6Q==",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.4.1",
-        "date-fns": "^1.23.0",
-        "lodash": "^4.17.10",
-        "read-pkg": "^4.0.1",
-        "rxjs": "6.2.2",
-        "spawn-command": "^0.0.2-1",
-        "supports-color": "^4.5.0",
-        "tree-kill": "^1.1.0",
-        "yargs": "^12.0.1"
-      },
-      "dependencies": {
-        "lodash": {
-          "version": "4.17.11",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
-          "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
-          "dev": true
-        }
-      }
-    },
-    "connect": {
-      "version": "3.6.6",
-      "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
-      "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=",
-      "dev": true,
-      "requires": {
-        "debug": "2.6.9",
-        "finalhandler": "1.1.0",
-        "parseurl": "~1.3.2",
-        "utils-merge": "1.0.1"
-      }
-    },
-    "content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
-      "dev": true
-    },
-    "content-type-parser": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz",
-      "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==",
-      "dev": true
-    },
-    "conventional-changelog": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-2.0.3.tgz",
-      "integrity": "sha512-4bcII9cJHSKb2qi9e8qGF6aJHLf/AB0dokhyR+X6QILTMl77s4l163vK+reXhajvfOYbbHQvsrWybr5+PKZwNA==",
-      "dev": true,
-      "requires": {
-        "conventional-changelog-angular": "^1.6.6",
-        "conventional-changelog-atom": "^2.0.0",
-        "conventional-changelog-codemirror": "^2.0.0",
-        "conventional-changelog-core": "^3.1.0",
-        "conventional-changelog-ember": "^2.0.1",
-        "conventional-changelog-eslint": "^3.0.0",
-        "conventional-changelog-express": "^2.0.0",
-        "conventional-changelog-jquery": "^0.1.0",
-        "conventional-changelog-jscs": "^0.1.0",
-        "conventional-changelog-jshint": "^2.0.0",
-        "conventional-changelog-preset-loader": "^2.0.1"
-      }
-    },
-    "conventional-changelog-angular": {
-      "version": "1.6.6",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz",
-      "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==",
-      "dev": true,
-      "requires": {
-        "compare-func": "^1.3.1",
-        "q": "^1.5.1"
-      }
-    },
-    "conventional-changelog-atom": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.0.tgz",
-      "integrity": "sha512-ygwkwyTQYAm4S0tsDt+1yg8tHhRrv7qu9SOWPhNQlVrInFLsfKc0FActCA3de2ChknxpVPY2B53yhKvCAtkBCg==",
-      "dev": true,
-      "requires": {
-        "q": "^1.5.1"
-      }
-    },
-    "conventional-changelog-cli": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-2.0.5.tgz",
-      "integrity": "sha512-StqCVo10g194UhyLIhg+M/tTVu6YjGnON/IiQ9Ty/h+dgi9obYAkknwpmmgGJMQ3P3vNRljuZBupz0N2tpdxXg==",
-      "dev": true,
-      "requires": {
-        "add-stream": "^1.0.0",
-        "conventional-changelog": "^2.0.3",
-        "lodash": "^4.2.1",
-        "meow": "^4.0.0",
-        "tempfile": "^1.1.1"
-      }
-    },
-    "conventional-changelog-codemirror": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.0.tgz",
-      "integrity": "sha512-pZt/YynJ5m8C9MGV5wkBuhM1eX+8a84fmNrdOylxg/lJV+lgtAiNhnpskNuixtf71iKVWSlEqMQ6z6CH7/Uo5A==",
-      "dev": true,
-      "requires": {
-        "q": "^1.5.1"
-      }
-    },
-    "conventional-changelog-core": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.1.0.tgz",
-      "integrity": "sha512-bcZkcFXkqVgG2W8m/1wjlp2wn/BKDcrPgw3/mvSEQtzs8Pax8JbAPFpEQReHY92+EKNNXC67wLA8y2xcNx0rDA==",
-      "dev": true,
-      "requires": {
-        "conventional-changelog-writer": "^4.0.0",
-        "conventional-commits-parser": "^3.0.0",
-        "dateformat": "^3.0.0",
-        "get-pkg-repo": "^1.0.0",
-        "git-raw-commits": "^2.0.0",
-        "git-remote-origin-url": "^2.0.0",
-        "git-semver-tags": "^2.0.0",
-        "lodash": "^4.2.1",
-        "normalize-package-data": "^2.3.5",
-        "q": "^1.5.1",
-        "read-pkg": "^1.1.0",
-        "read-pkg-up": "^1.0.1",
-        "through2": "^2.0.0"
-      },
-      "dependencies": {
-        "load-json-file": {
-          "version": "1.1.0",
-          "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
-          "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "parse-json": "^2.2.0",
-            "pify": "^2.0.0",
-            "pinkie-promise": "^2.0.0",
-            "strip-bom": "^2.0.0"
-          }
-        },
-        "parse-json": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
-          "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
-          "dev": true,
-          "requires": {
-            "error-ex": "^1.2.0"
-          }
-        },
-        "path-type": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
-          "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "pify": "^2.0.0",
-            "pinkie-promise": "^2.0.0"
-          }
-        },
-        "pify": {
-          "version": "2.3.0",
-          "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true
-        },
-        "read-pkg": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
-          "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
-          "dev": true,
-          "requires": {
-            "load-json-file": "^1.0.0",
-            "normalize-package-data": "^2.3.2",
-            "path-type": "^1.0.0"
-          }
-        },
-        "strip-bom": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
-          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
-          "dev": true,
-          "requires": {
-            "is-utf8": "^0.2.0"
-          }
-        }
-      }
-    },
-    "conventional-changelog-ember": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.1.tgz",
-      "integrity": "sha512-Ym1xLi7YLGooLUpHCJhlXJW5V7u/g+hlYD/+HKt0KqG2qbiBi7e7/HO9aScXTEKUBGMm7m4C443R+eCWQI2ynA==",
-      "dev": true,
-      "requires": {
-        "q": "^1.5.1"
-      }
-    },
-    "conventional-changelog-eslint": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.0.tgz",
-      "integrity": "sha512-Acn20v+13c+o1OAWKvc9sCCl73Nj2vOMyn+G82euiMZwgYNE9CcBkTnw/GKdBi9KiZMK9uy+SCQ/QyAEE+8vZA==",
-      "dev": true,
-      "requires": {
-        "q": "^1.5.1"
-      }
-    },
-    "conventional-changelog-express": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.0.tgz",
-      "integrity": "sha512-2svPjeXCrjwwqnzu/f3qU5LWoLO0jmUIEbtbbSRXAAP9Ag+137b484eJsiRt9DPYXSVzog0Eoek3rvCzfHcphQ==",
-      "dev": true,
-      "requires": {
-        "q": "^1.5.1"
-      }
-    },
-    "conventional-changelog-jquery": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz",
-      "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=",
-      "dev": true,
-      "requires": {
-        "q": "^1.4.1"
-      }
-    },
-    "conventional-changelog-jscs": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz",
-      "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=",
-      "dev": true,
-      "requires": {
-        "q": "^1.4.1"
-      }
-    },
-    "conventional-changelog-jshint": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.0.tgz",
-      "integrity": "sha512-+4fCln755N0ZzRUEdcDWR5Due71Dsqkbov6K/UmVCnljZvhVh0/wpT4YROoSsAnhfZO8shyWDPFKm6EP20pLQg==",
-      "dev": true,
-      "requires": {
-        "compare-func": "^1.3.1",
-        "q": "^1.5.1"
-      }
-    },
-    "conventional-changelog-preset-loader": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.1.tgz",
-      "integrity": "sha512-HiSfhXNzAzG9klIqJaA97MMiNBR4js+53g4Px0k7tgKeCNVXmrDrm+CY+nIqcmG5NVngEPf8rAr7iji1TWW7zg==",
-      "dev": true
-    },
-    "conventional-changelog-writer": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.0.tgz",
-      "integrity": "sha512-hMZPe0AQ6Bi05epeK/7hz80xxk59nPA5z/b63TOHq2wigM0/akreOc8N4Jam5b9nFgKWX1e9PdPv2ewgW6bcfg==",
-      "dev": true,
-      "requires": {
-        "compare-func": "^1.3.1",
-        "conventional-commits-filter": "^2.0.0",
-        "dateformat": "^3.0.0",
-        "handlebars": "^4.0.2",
-        "json-stringify-safe": "^5.0.1",
-        "lodash": "^4.2.1",
-        "meow": "^4.0.0",
-        "semver": "^5.5.0",
-        "split": "^1.0.0",
-        "through2": "^2.0.0"
-      }
-    },
-    "conventional-commits-filter": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.0.tgz",
-      "integrity": "sha512-Cfl0j1/NquB/TMVx7Wrmyq7uRM+/rPQbtVVGwzfkhZ6/yH6fcMmP0Q/9044TBZPTNdGzm46vXFXL14wbET0/Mg==",
-      "dev": true,
-      "requires": {
-        "is-subset": "^0.1.1",
-        "modify-values": "^1.0.0"
-      }
-    },
-    "conventional-commits-parser": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.0.tgz",
-      "integrity": "sha512-GWh71U26BLWgMykCp+VghZ4s64wVbtseECcKQ/PvcPZR2cUnz+FUc2J9KjxNl7/ZbCxST8R03c9fc+Vi0umS9Q==",
-      "dev": true,
-      "requires": {
-        "JSONStream": "^1.0.4",
-        "is-text-path": "^1.0.0",
-        "lodash": "^4.2.1",
-        "meow": "^4.0.0",
-        "split2": "^2.0.0",
-        "through2": "^2.0.0",
-        "trim-off-newlines": "^1.0.0"
-      }
-    },
-    "conventional-recommended-bump": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-4.0.4.tgz",
-      "integrity": "sha512-9mY5Yoblq+ZMqJpBzgS+RpSq+SUfP2miOR3H/NR9drGf08WCrY9B6HAGJZEm6+ThsVP917VHAahSOjM6k1vhPg==",
-      "dev": true,
-      "requires": {
-        "concat-stream": "^1.6.0",
-        "conventional-changelog-preset-loader": "^2.0.2",
-        "conventional-commits-filter": "^2.0.1",
-        "conventional-commits-parser": "^3.0.1",
-        "git-raw-commits": "2.0.0",
-        "git-semver-tags": "^2.0.2",
-        "meow": "^4.0.0",
-        "q": "^1.5.1"
-      },
-      "dependencies": {
-        "conventional-changelog-preset-loader": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.2.tgz",
-          "integrity": "sha512-pBY+qnUoJPXAXXqVGwQaVmcye05xi6z231QM98wHWamGAmu/ghkBprQAwmF5bdmyobdVxiLhPY3PrCfSeUNzRQ==",
-          "dev": true
-        },
-        "conventional-commits-filter": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz",
-          "integrity": "sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A==",
-          "dev": true,
-          "requires": {
-            "is-subset": "^0.1.1",
-            "modify-values": "^1.0.0"
-          }
-        },
-        "conventional-commits-parser": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz",
-          "integrity": "sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg==",
-          "dev": true,
-          "requires": {
-            "JSONStream": "^1.0.4",
-            "is-text-path": "^1.0.0",
-            "lodash": "^4.2.1",
-            "meow": "^4.0.0",
-            "split2": "^2.0.0",
-            "through2": "^2.0.0",
-            "trim-off-newlines": "^1.0.0"
-          }
-        },
-        "git-semver-tags": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.2.tgz",
-          "integrity": "sha512-34lMF7Yo1xEmsK2EkbArdoU79umpvm0MfzaDkSNYSJqtM5QLAVTPWgpiXSVI5o/O9EvZPSrP4Zvnec/CqhSd5w==",
-          "dev": true,
-          "requires": {
-            "meow": "^4.0.0",
-            "semver": "^5.5.0"
-          }
-        }
-      }
-    },
-    "convert-source-map": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
-      "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "~5.1.1"
-      }
-    },
-    "cookie": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
-      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
-      "dev": true
-    },
-    "copy-descriptor": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
-      "dev": true
-    },
-    "copyfiles": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.1.0.tgz",
-      "integrity": "sha512-cAeDE0vL/koE9WSEGxqPpSyvU638Kgfu6wfrnj7kqp9FWa1CWsU54Coo6sdYZP4GstWa39tL/wIVJWfXcujgNA==",
-      "dev": true,
-      "requires": {
-        "glob": "^7.0.5",
-        "minimatch": "^3.0.3",
-        "mkdirp": "^0.5.1",
-        "noms": "0.0.0",
-        "through2": "^2.0.1",
-        "yargs": "^11.0.0"
-      },
-      "dependencies": {
-        "cross-spawn": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
-          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^4.0.1",
-            "shebang-command": "^1.2.0",
-            "which": "^1.2.9"
-          }
-        },
-        "decamelize": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-          "dev": true
-        },
-        "execa": {
-          "version": "0.7.0",
-          "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
-          "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
-          "dev": true,
-          "requires": {
-            "cross-spawn": "^5.0.1",
-            "get-stream": "^3.0.0",
-            "is-stream": "^1.1.0",
-            "npm-run-path": "^2.0.0",
-            "p-finally": "^1.0.0",
-            "signal-exit": "^3.0.0",
-            "strip-eof": "^1.0.0"
-          }
-        },
-        "find-up": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
-          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
-          "dev": true,
-          "requires": {
-            "locate-path": "^2.0.0"
-          }
-        },
-        "invert-kv": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
-          "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
-          "dev": true
-        },
-        "lcid": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
-          "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
-          "dev": true,
-          "requires": {
-            "invert-kv": "^1.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
-          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
-          "dev": true,
-          "requires": {
-            "p-locate": "^2.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "mem": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
-          "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
-          "dev": true,
-          "requires": {
-            "mimic-fn": "^1.0.0"
-          }
-        },
-        "os-locale": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
-          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
-          "dev": true,
-          "requires": {
-            "execa": "^0.7.0",
-            "lcid": "^1.0.0",
-            "mem": "^1.1.0"
-          }
-        },
-        "p-limit": {
-          "version": "1.3.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
-          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
-          "dev": true,
-          "requires": {
-            "p-try": "^1.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
-          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
-          "dev": true,
-          "requires": {
-            "p-limit": "^1.1.0"
-          }
-        },
-        "p-try": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
-          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
-          "dev": true
-        },
-        "y18n": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
-          "dev": true
-        },
-        "yargs": {
-          "version": "11.1.0",
-          "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
-          "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
-          "dev": true,
-          "requires": {
-            "cliui": "^4.0.0",
-            "decamelize": "^1.1.1",
-            "find-up": "^2.1.0",
-            "get-caller-file": "^1.0.1",
-            "os-locale": "^2.0.0",
-            "require-directory": "^2.1.1",
-            "require-main-filename": "^1.0.1",
-            "set-blocking": "^2.0.0",
-            "string-width": "^2.0.0",
-            "which-module": "^2.0.0",
-            "y18n": "^3.2.1",
-            "yargs-parser": "^9.0.2"
-          }
-        },
-        "yargs-parser": {
-          "version": "9.0.2",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
-          "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
-          "dev": true,
-          "requires": {
-            "camelcase": "^4.1.0"
-          }
-        }
-      }
-    },
-    "core-js": {
-      "version": "2.5.7",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
-      "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
-      "dev": true
-    },
-    "core-util-is": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
-      "dev": true
-    },
-    "cross-env": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz",
-      "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==",
-      "dev": true,
-      "requires": {
-        "cross-spawn": "^6.0.5",
-        "is-windows": "^1.0.0"
-      }
-    },
-    "cross-spawn": {
-      "version": "6.0.5",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-      "dev": true,
-      "requires": {
-        "nice-try": "^1.0.4",
-        "path-key": "^2.0.1",
-        "semver": "^5.5.0",
-        "shebang-command": "^1.2.0",
-        "which": "^1.2.9"
-      }
-    },
-    "cssom": {
-      "version": "0.3.4",
-      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz",
-      "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==",
-      "dev": true
-    },
-    "cssstyle": {
-      "version": "0.2.37",
-      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
-      "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
-      "dev": true,
-      "requires": {
-        "cssom": "0.3.x"
-      }
-    },
-    "currently-unhandled": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
-      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
-      "dev": true,
-      "requires": {
-        "array-find-index": "^1.0.1"
-      }
-    },
-    "custom-event": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
-      "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
-      "dev": true
-    },
-    "d": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
-      "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
-      "dev": true,
-      "requires": {
-        "es5-ext": "^0.10.9"
-      }
-    },
-    "dargs": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz",
-      "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=",
-      "dev": true,
-      "requires": {
-        "number-is-nan": "^1.0.0"
-      }
-    },
-    "dashdash": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "data-uri-to-buffer": {
-      "version": "0.0.4",
-      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-0.0.4.tgz",
-      "integrity": "sha1-RuE6udqOMJdFyNAc5UchPr2y/j8=",
-      "dev": true
-    },
-    "date-fns": {
-      "version": "1.29.0",
-      "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz",
-      "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==",
-      "dev": true
-    },
-    "date-format": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz",
-      "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=",
-      "dev": true
-    },
-    "dateformat": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
-      "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
-      "dev": true
-    },
-    "debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "requires": {
-        "ms": "2.0.0"
-      }
-    },
-    "decamelize": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
-      "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
-      "dev": true,
-      "requires": {
-        "xregexp": "4.0.0"
-      }
-    },
-    "decamelize-keys": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
-      "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
-      "dev": true,
-      "requires": {
-        "decamelize": "^1.1.0",
-        "map-obj": "^1.0.0"
-      },
-      "dependencies": {
-        "decamelize": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-          "dev": true
-        },
-        "map-obj": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
-          "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
-          "dev": true
-        }
-      }
-    },
-    "decode-uri-component": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
-      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
-      "dev": true
-    },
-    "deep-is": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
-      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
-      "dev": true
-    },
-    "define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "requires": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "dependencies": {
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "delayed-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
-      "dev": true
-    },
-    "depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
-      "dev": true
-    },
-    "detect-file": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
-      "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
-      "dev": true
-    },
-    "detect-indent": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
-      "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
-      "dev": true,
-      "requires": {
-        "repeating": "^2.0.0"
-      }
-    },
-    "detect-newline": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
-      "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
-      "dev": true
-    },
-    "di": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
-      "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
-      "dev": true
-    },
-    "diff": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
-      "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
-      "dev": true
-    },
-    "dom-serialize": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
-      "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
-      "dev": true,
-      "requires": {
-        "custom-event": "~1.0.0",
-        "ent": "~2.2.0",
-        "extend": "^3.0.0",
-        "void-elements": "^2.0.0"
-      }
-    },
-    "domexception": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
-      "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
-      "dev": true,
-      "requires": {
-        "webidl-conversions": "^4.0.2"
-      }
-    },
-    "dot-prop": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
-      "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
-      "dev": true,
-      "requires": {
-        "is-obj": "^1.0.0"
-      }
-    },
-    "dotgitignore": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz",
-      "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==",
-      "dev": true,
-      "requires": {
-        "find-up": "^3.0.0",
-        "minimatch": "^3.0.4"
-      }
-    },
-    "dts-bundle-generator": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-2.1.0.tgz",
-      "integrity": "sha512-uxMppo4puP84czkGS6XzOLBaG1Qn/Mlgz2qKMy8wdQrTb+kgI/Yx7sUwRHXE1YRJIzHVg9gtE7ldxlyIVhCfDw==",
-      "dev": true,
-      "requires": {
-        "typescript": ">=2.6.1",
-        "yargs": "~11.1.0"
-      },
-      "dependencies": {
-        "cross-spawn": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
-          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^4.0.1",
-            "shebang-command": "^1.2.0",
-            "which": "^1.2.9"
-          }
-        },
-        "decamelize": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-          "dev": true
-        },
-        "execa": {
-          "version": "0.7.0",
-          "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
-          "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
-          "dev": true,
-          "requires": {
-            "cross-spawn": "^5.0.1",
-            "get-stream": "^3.0.0",
-            "is-stream": "^1.1.0",
-            "npm-run-path": "^2.0.0",
-            "p-finally": "^1.0.0",
-            "signal-exit": "^3.0.0",
-            "strip-eof": "^1.0.0"
-          }
-        },
-        "find-up": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
-          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
-          "dev": true,
-          "requires": {
-            "locate-path": "^2.0.0"
-          }
-        },
-        "invert-kv": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
-          "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
-          "dev": true
-        },
-        "lcid": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
-          "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
-          "dev": true,
-          "requires": {
-            "invert-kv": "^1.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
-          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
-          "dev": true,
-          "requires": {
-            "p-locate": "^2.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "mem": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
-          "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
-          "dev": true,
-          "requires": {
-            "mimic-fn": "^1.0.0"
-          }
-        },
-        "os-locale": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
-          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
-          "dev": true,
-          "requires": {
-            "execa": "^0.7.0",
-            "lcid": "^1.0.0",
-            "mem": "^1.1.0"
-          }
-        },
-        "p-limit": {
-          "version": "1.3.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
-          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
-          "dev": true,
-          "requires": {
-            "p-try": "^1.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
-          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
-          "dev": true,
-          "requires": {
-            "p-limit": "^1.1.0"
-          }
-        },
-        "p-try": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
-          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
-          "dev": true
-        },
-        "y18n": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
-          "dev": true
-        },
-        "yargs": {
-          "version": "11.1.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
-          "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
-          "dev": true,
-          "requires": {
-            "cliui": "^4.0.0",
-            "decamelize": "^1.1.1",
-            "find-up": "^2.1.0",
-            "get-caller-file": "^1.0.1",
-            "os-locale": "^2.0.0",
-            "require-directory": "^2.1.1",
-            "require-main-filename": "^1.0.1",
-            "set-blocking": "^2.0.0",
-            "string-width": "^2.0.0",
-            "which-module": "^2.0.0",
-            "y18n": "^3.2.1",
-            "yargs-parser": "^9.0.2"
-          }
-        },
-        "yargs-parser": {
-          "version": "9.0.2",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
-          "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
-          "dev": true,
-          "requires": {
-            "camelcase": "^4.1.0"
-          }
-        }
-      }
-    },
-    "ecc-jsbn": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
-      "dev": true,
-      "requires": {
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.1.0"
-      }
-    },
-    "ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
-      "dev": true
-    },
-    "encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
-      "dev": true
-    },
-    "engine.io": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.0.tgz",
-      "integrity": "sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw==",
-      "dev": true,
-      "requires": {
-        "accepts": "~1.3.4",
-        "base64id": "1.0.0",
-        "cookie": "0.3.1",
-        "debug": "~3.1.0",
-        "engine.io-parser": "~2.1.0",
-        "ws": "~3.3.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        }
-      }
-    },
-    "engine.io-client": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
-      "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==",
-      "dev": true,
-      "requires": {
-        "component-emitter": "1.2.1",
-        "component-inherit": "0.0.3",
-        "debug": "~3.1.0",
-        "engine.io-parser": "~2.1.1",
-        "has-cors": "1.1.0",
-        "indexof": "0.0.1",
-        "parseqs": "0.0.5",
-        "parseuri": "0.0.5",
-        "ws": "~3.3.1",
-        "xmlhttprequest-ssl": "~1.5.4",
-        "yeast": "0.1.2"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        }
-      }
-    },
-    "engine.io-parser": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz",
-      "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==",
-      "dev": true,
-      "requires": {
-        "after": "0.8.2",
-        "arraybuffer.slice": "~0.0.7",
-        "base64-arraybuffer": "0.1.5",
-        "blob": "0.0.4",
-        "has-binary2": "~1.0.2"
-      }
-    },
-    "ent": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
-      "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
-      "dev": true
-    },
-    "err-code": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
-      "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=",
-      "dev": true
-    },
-    "error-ex": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
-      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "dev": true,
-      "requires": {
-        "is-arrayish": "^0.2.1"
-      }
-    },
-    "es5-ext": {
-      "version": "0.10.47",
-      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.47.tgz",
-      "integrity": "sha512-/1TItLfj+TTfWoeRcDn/0FbGV6SNo4R+On2GGVucPU/j3BWnXE2Co8h8CTo4Tu34gFJtnmwS9xiScKs4EjZhdw==",
-      "dev": true,
-      "requires": {
-        "es6-iterator": "~2.0.3",
-        "es6-symbol": "~3.1.1",
-        "next-tick": "1"
-      }
-    },
-    "es6-iterator": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
-      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
-      "dev": true,
-      "requires": {
-        "d": "1",
-        "es5-ext": "^0.10.35",
-        "es6-symbol": "^3.1.1"
-      }
-    },
-    "es6-symbol": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
-      "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
-      "dev": true,
-      "requires": {
-        "d": "1",
-        "es5-ext": "~0.10.14"
-      }
-    },
-    "es6-template-strings": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/es6-template-strings/-/es6-template-strings-2.0.1.tgz",
-      "integrity": "sha1-sWbGpiVi9Hi7d3X2ypYQOlmbSyw=",
-      "dev": true,
-      "requires": {
-        "es5-ext": "^0.10.12",
-        "esniff": "^1.1"
-      }
-    },
-    "escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
-      "dev": true
-    },
-    "escape-string-regexp": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
-      "dev": true
-    },
-    "escodegen": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz",
-      "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==",
-      "dev": true,
-      "requires": {
-        "esprima": "^3.1.3",
-        "estraverse": "^4.2.0",
-        "esutils": "^2.0.2",
-        "optionator": "^0.8.1",
-        "source-map": "~0.6.1"
-      }
-    },
-    "esniff": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/esniff/-/esniff-1.1.0.tgz",
-      "integrity": "sha1-xmhJIp+RRk3t4uDUAgHtar9l8qw=",
-      "dev": true,
-      "requires": {
-        "d": "1",
-        "es5-ext": "^0.10.12"
-      }
-    },
-    "esprima": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
-      "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
-      "dev": true
-    },
-    "estraverse": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
-      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
-      "dev": true
-    },
-    "estree-walker": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz",
-      "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==",
-      "dev": true
-    },
-    "esutils": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
-      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
-      "dev": true
-    },
-    "eventemitter3": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
-      "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==",
-      "dev": true
-    },
-    "execa": {
-      "version": "0.10.0",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
-      "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
-      "dev": true,
-      "requires": {
-        "cross-spawn": "^6.0.0",
-        "get-stream": "^3.0.0",
-        "is-stream": "^1.1.0",
-        "npm-run-path": "^2.0.0",
-        "p-finally": "^1.0.0",
-        "signal-exit": "^3.0.0",
-        "strip-eof": "^1.0.0"
-      }
-    },
-    "expand-braces": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz",
-      "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=",
-      "dev": true,
-      "requires": {
-        "array-slice": "^0.2.3",
-        "array-unique": "^0.2.1",
-        "braces": "^0.1.2"
-      },
-      "dependencies": {
-        "array-unique": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
-          "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
-          "dev": true
-        },
-        "braces": {
-          "version": "0.1.5",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz",
-          "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=",
-          "dev": true,
-          "requires": {
-            "expand-range": "^0.1.0"
-          }
-        }
-      }
-    },
-    "expand-brackets": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-      "dev": true,
-      "requires": {
-        "debug": "^2.3.3",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "posix-character-classes": "^0.1.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "expand-range": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz",
-      "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=",
-      "dev": true,
-      "requires": {
-        "is-number": "^0.1.1",
-        "repeat-string": "^0.2.2"
-      },
-      "dependencies": {
-        "is-number": {
-          "version": "0.1.1",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz",
-          "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=",
-          "dev": true
-        },
-        "repeat-string": {
-          "version": "0.2.2",
-          "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz",
-          "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=",
-          "dev": true
-        }
-      }
-    },
-    "expand-tilde": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz",
-      "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=",
-      "dev": true,
-      "requires": {
-        "os-homedir": "^1.0.1"
-      }
-    },
-    "extend": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
-      "dev": true
-    },
-    "extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-      "dev": true,
-      "requires": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "extglob": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-      "dev": true,
-      "requires": {
-        "array-unique": "^0.3.2",
-        "define-property": "^1.0.0",
-        "expand-brackets": "^2.1.4",
-        "extend-shallow": "^2.0.1",
-        "fragment-cache": "^0.2.1",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "extsprintf": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
-      "dev": true
-    },
-    "fast-deep-equal": {
-      "version": "1.1.0",
-      "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
-      "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
-      "dev": true
-    },
-    "fast-json-stable-stringify": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
-      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
-      "dev": true
-    },
-    "fast-levenshtein": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
-      "dev": true
-    },
-    "fd-slicer": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
-      "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
-      "dev": true,
-      "requires": {
-        "pend": "~1.2.0"
-      }
-    },
-    "figures": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
-      "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
-      "dev": true,
-      "requires": {
-        "escape-string-regexp": "^1.0.5"
-      }
-    },
-    "filename-regex": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
-      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
-      "dev": true
-    },
-    "fill-range": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^2.0.1",
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1",
-        "to-regex-range": "^2.1.0"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "finalhandler": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
-      "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
-      "dev": true,
-      "requires": {
-        "debug": "2.6.9",
-        "encodeurl": "~1.0.1",
-        "escape-html": "~1.0.3",
-        "on-finished": "~2.3.0",
-        "parseurl": "~1.3.2",
-        "statuses": "~1.3.1",
-        "unpipe": "~1.0.0"
-      },
-      "dependencies": {
-        "statuses": {
-          "version": "1.3.1",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
-          "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
-          "dev": true
-        }
-      }
-    },
-    "find-up": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-      "dev": true,
-      "requires": {
-        "locate-path": "^3.0.0"
-      }
-    },
-    "findup-sync": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
-      "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
-      "dev": true,
-      "requires": {
-        "detect-file": "^1.0.0",
-        "is-glob": "^3.1.0",
-        "micromatch": "^3.0.4",
-        "resolve-dir": "^1.0.1"
-      },
-      "dependencies": {
-        "is-glob": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^2.1.0"
-          }
-        }
-      }
-    },
-    "fined": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.1.tgz",
-      "integrity": "sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==",
-      "dev": true,
-      "requires": {
-        "expand-tilde": "^2.0.2",
-        "is-plain-object": "^2.0.3",
-        "object.defaults": "^1.1.0",
-        "object.pick": "^1.2.0",
-        "parse-filepath": "^1.0.1"
-      },
-      "dependencies": {
-        "expand-tilde": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
-          "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
-          "dev": true,
-          "requires": {
-            "homedir-polyfill": "^1.0.1"
-          }
-        }
-      }
-    },
-    "flagged-respawn": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
-      "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
-      "dev": true
-    },
-    "follow-redirects": {
-      "version": "1.5.9",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz",
-      "integrity": "sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w==",
-      "dev": true,
-      "requires": {
-        "debug": "=3.1.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        }
-      }
-    },
-    "for-in": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
-      "dev": true
-    },
-    "for-own": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
-      "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
-      "dev": true,
-      "requires": {
-        "for-in": "^1.0.1"
-      }
-    },
-    "forever-agent": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
-      "dev": true
-    },
-    "form-data": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
-      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
-      "dev": true,
-      "requires": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.6",
-        "mime-types": "^2.1.12"
-      }
-    },
-    "fragment-cache": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
-      "dev": true,
-      "requires": {
-        "map-cache": "^0.2.2"
-      }
-    },
-    "fs-access": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
-      "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
-      "dev": true,
-      "requires": {
-        "null-check": "^1.0.0"
-      }
-    },
-    "fs-extra": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.0.tgz",
-      "integrity": "sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      }
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-      "dev": true
-    },
-    "fsevents": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
-      "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "nan": "^2.9.2",
-        "node-pre-gyp": "^0.10.0"
-      },
-      "dependencies": {
-        "abbrev": {
-          "version": "1.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "ansi-regex": {
-          "version": "2.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "aproba": {
-          "version": "1.2.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "are-we-there-yet": {
-          "version": "1.1.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "delegates": "^1.0.0",
-            "readable-stream": "^2.0.6"
-          }
-        },
-        "balanced-match": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "brace-expansion": {
-          "version": "1.1.11",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "balanced-match": "^1.0.0",
-            "concat-map": "0.0.1"
-          }
-        },
-        "chownr": {
-          "version": "1.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "code-point-at": {
-          "version": "1.1.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "concat-map": {
-          "version": "0.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "console-control-strings": {
-          "version": "1.1.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "core-util-is": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "debug": {
-          "version": "2.6.9",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "deep-extend": {
-          "version": "0.5.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "delegates": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "detect-libc": {
-          "version": "1.0.3",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "fs-minipass": {
-          "version": "1.2.5",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minipass": "^2.2.1"
-          }
-        },
-        "fs.realpath": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "gauge": {
-          "version": "2.7.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "aproba": "^1.0.3",
-            "console-control-strings": "^1.0.0",
-            "has-unicode": "^2.0.0",
-            "object-assign": "^4.1.0",
-            "signal-exit": "^3.0.0",
-            "string-width": "^1.0.1",
-            "strip-ansi": "^3.0.1",
-            "wide-align": "^1.1.0"
-          }
-        },
-        "glob": {
-          "version": "7.1.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "has-unicode": {
-          "version": "2.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "iconv-lite": {
-          "version": "0.4.21",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "safer-buffer": "^2.1.0"
-          }
-        },
-        "ignore-walk": {
-          "version": "3.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minimatch": "^3.0.4"
-          }
-        },
-        "inflight": {
-          "version": "1.0.6",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "once": "^1.3.0",
-            "wrappy": "1"
-          }
-        },
-        "inherits": {
-          "version": "2.0.3",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "ini": {
-          "version": "1.3.5",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "number-is-nan": "^1.0.0"
-          }
-        },
-        "isarray": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "minimatch": {
-          "version": "3.0.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "brace-expansion": "^1.1.7"
-          }
-        },
-        "minimist": {
-          "version": "0.0.8",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "minipass": {
-          "version": "2.2.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "safe-buffer": "^5.1.1",
-            "yallist": "^3.0.0"
-          }
-        },
-        "minizlib": {
-          "version": "1.1.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minipass": "^2.2.1"
-          }
-        },
-        "mkdirp": {
-          "version": "0.5.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minimist": "0.0.8"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "needle": {
-          "version": "2.2.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "debug": "^2.1.2",
-            "iconv-lite": "^0.4.4",
-            "sax": "^1.2.4"
-          }
-        },
-        "node-pre-gyp": {
-          "version": "0.10.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "detect-libc": "^1.0.2",
-            "mkdirp": "^0.5.1",
-            "needle": "^2.2.0",
-            "nopt": "^4.0.1",
-            "npm-packlist": "^1.1.6",
-            "npmlog": "^4.0.2",
-            "rc": "^1.1.7",
-            "rimraf": "^2.6.1",
-            "semver": "^5.3.0",
-            "tar": "^4"
-          }
-        },
-        "nopt": {
-          "version": "4.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "abbrev": "1",
-            "osenv": "^0.1.4"
-          }
-        },
-        "npm-bundled": {
-          "version": "1.0.3",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "npm-packlist": {
-          "version": "1.1.10",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ignore-walk": "^3.0.1",
-            "npm-bundled": "^1.0.1"
-          }
-        },
-        "npmlog": {
-          "version": "4.1.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "are-we-there-yet": "~1.1.2",
-            "console-control-strings": "~1.1.0",
-            "gauge": "~2.7.3",
-            "set-blocking": "~2.0.0"
-          }
-        },
-        "number-is-nan": {
-          "version": "1.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "object-assign": {
-          "version": "4.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "once": {
-          "version": "1.4.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "wrappy": "1"
-          }
-        },
-        "os-homedir": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "os-tmpdir": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "osenv": {
-          "version": "0.1.5",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "os-homedir": "^1.0.0",
-            "os-tmpdir": "^1.0.0"
-          }
-        },
-        "path-is-absolute": {
-          "version": "1.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "process-nextick-args": {
-          "version": "2.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "rc": {
-          "version": "1.2.7",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "deep-extend": "^0.5.1",
-            "ini": "~1.3.0",
-            "minimist": "^1.2.0",
-            "strip-json-comments": "~2.0.1"
-          },
-          "dependencies": {
-            "minimist": {
-              "version": "1.2.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            }
-          }
-        },
-        "readable-stream": {
-          "version": "2.3.6",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.3",
-            "isarray": "~1.0.0",
-            "process-nextick-args": "~2.0.0",
-            "safe-buffer": "~5.1.1",
-            "string_decoder": "~1.1.1",
-            "util-deprecate": "~1.0.1"
-          }
-        },
-        "rimraf": {
-          "version": "2.6.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "glob": "^7.0.5"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "safer-buffer": {
-          "version": "2.1.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "sax": {
-          "version": "1.2.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "semver": {
-          "version": "5.5.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "set-blocking": {
-          "version": "2.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "signal-exit": {
-          "version": "3.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "string-width": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "code-point-at": "^1.0.0",
-            "is-fullwidth-code-point": "^1.0.0",
-            "strip-ansi": "^3.0.0"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "safe-buffer": "~5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "strip-json-comments": {
-          "version": "2.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "tar": {
-          "version": "4.4.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "chownr": "^1.0.1",
-            "fs-minipass": "^1.2.5",
-            "minipass": "^2.2.4",
-            "minizlib": "^1.1.0",
-            "mkdirp": "^0.5.0",
-            "safe-buffer": "^5.1.1",
-            "yallist": "^3.0.2"
-          }
-        },
-        "util-deprecate": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "wide-align": {
-          "version": "1.1.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "string-width": "^1.0.2"
-          }
-        },
-        "wrappy": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "yallist": {
-          "version": "3.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "fstream": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
-      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "inherits": "~2.0.0",
-        "mkdirp": ">=0.5 0",
-        "rimraf": "2"
-      }
-    },
-    "get-caller-file": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
-      "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
-      "dev": true
-    },
-    "get-pkg-repo": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz",
-      "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=",
-      "dev": true,
-      "requires": {
-        "hosted-git-info": "^2.1.4",
-        "meow": "^3.3.0",
-        "normalize-package-data": "^2.3.0",
-        "parse-github-repo-url": "^1.3.0",
-        "through2": "^2.0.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
-          "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
-          "dev": true
-        },
-        "camelcase-keys": {
-          "version": "2.1.0",
-          "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
-          "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
-          "dev": true,
-          "requires": {
-            "camelcase": "^2.0.0",
-            "map-obj": "^1.0.0"
-          }
-        },
-        "decamelize": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-          "dev": true
-        },
-        "indent-string": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
-          "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
-          "dev": true,
-          "requires": {
-            "repeating": "^2.0.0"
-          }
-        },
-        "map-obj": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
-          "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
-          "dev": true
-        },
-        "meow": {
-          "version": "3.7.0",
-          "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
-          "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
-          "dev": true,
-          "requires": {
-            "camelcase-keys": "^2.0.0",
-            "decamelize": "^1.1.2",
-            "loud-rejection": "^1.0.0",
-            "map-obj": "^1.0.1",
-            "minimist": "^1.1.3",
-            "normalize-package-data": "^2.3.4",
-            "object-assign": "^4.0.1",
-            "read-pkg-up": "^1.0.1",
-            "redent": "^1.0.0",
-            "trim-newlines": "^1.0.0"
-          }
-        },
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        },
-        "redent": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
-          "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
-          "dev": true,
-          "requires": {
-            "indent-string": "^2.1.0",
-            "strip-indent": "^1.0.1"
-          }
-        },
-        "strip-indent": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
-          "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
-          "dev": true,
-          "requires": {
-            "get-stdin": "^4.0.1"
-          }
-        },
-        "trim-newlines": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
-          "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
-          "dev": true
-        }
-      }
-    },
-    "get-stdin": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
-      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
-      "dev": true
-    },
-    "get-stream": {
-      "version": "3.0.0",
-      "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
-      "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
-      "dev": true
-    },
-    "get-value": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
-      "dev": true
-    },
-    "getpass": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "git-raw-commits": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz",
-      "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==",
-      "dev": true,
-      "requires": {
-        "dargs": "^4.0.1",
-        "lodash.template": "^4.0.2",
-        "meow": "^4.0.0",
-        "split2": "^2.0.0",
-        "through2": "^2.0.0"
-      }
-    },
-    "git-remote-origin-url": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
-      "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
-      "dev": true,
-      "requires": {
-        "gitconfiglocal": "^1.0.0",
-        "pify": "^2.3.0"
-      },
-      "dependencies": {
-        "pify": {
-          "version": "2.3.0",
-          "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true
-        }
-      }
-    },
-    "git-semver-tags": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.0.tgz",
-      "integrity": "sha512-lSgFc3zQTul31nFje2Q8XdNcTOI6B4I3mJRPCgFzHQQLfxfqdWTYzdtCaynkK5Xmb2wQlSJoKolhXJ1VhKROnQ==",
-      "dev": true,
-      "requires": {
-        "meow": "^4.0.0",
-        "semver": "^5.5.0"
-      }
-    },
-    "gitconfiglocal": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
-      "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
-      "dev": true,
-      "requires": {
-        "ini": "^1.3.2"
-      }
-    },
-    "glob": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
-      "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
-      "dev": true,
-      "requires": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.0.4",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      }
-    },
-    "glob-base": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
-      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
-      "dev": true,
-      "requires": {
-        "glob-parent": "^2.0.0",
-        "is-glob": "^2.0.0"
-      },
-      "dependencies": {
-        "glob-parent": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
-          "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
-          "dev": true,
-          "requires": {
-            "is-glob": "^2.0.0"
-          }
-        },
-        "is-extglob": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
-          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
-          "dev": true
-        },
-        "is-glob": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
-          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^1.0.0"
-          }
-        }
-      }
-    },
-    "glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-      "dev": true,
-      "requires": {
-        "is-glob": "^3.1.0",
-        "path-dirname": "^1.0.0"
-      },
-      "dependencies": {
-        "is-glob": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^2.1.0"
-          }
-        }
-      }
-    },
-    "global-modules": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
-      "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
-      "dev": true,
-      "requires": {
-        "global-prefix": "^1.0.1",
-        "is-windows": "^1.0.1",
-        "resolve-dir": "^1.0.0"
-      }
-    },
-    "global-prefix": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
-      "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
-      "dev": true,
-      "requires": {
-        "expand-tilde": "^2.0.2",
-        "homedir-polyfill": "^1.0.1",
-        "ini": "^1.3.4",
-        "is-windows": "^1.0.1",
-        "which": "^1.2.14"
-      },
-      "dependencies": {
-        "expand-tilde": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
-          "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
-          "dev": true,
-          "requires": {
-            "homedir-polyfill": "^1.0.1"
-          }
-        }
-      }
-    },
-    "globals": {
-      "version": "9.18.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
-      "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
-      "dev": true
-    },
-    "graceful-fs": {
-      "version": "4.1.11",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
-      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
-      "dev": true
-    },
-    "graceful-readlink": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
-      "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
-      "dev": true
-    },
-    "handlebars": {
-      "version": "4.0.12",
-      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz",
-      "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==",
-      "dev": true,
-      "requires": {
-        "async": "^2.5.0",
-        "optimist": "^0.6.1",
-        "source-map": "^0.6.1",
-        "uglify-js": "^3.1.4"
-      }
-    },
-    "har-schema": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
-      "dev": true
-    },
-    "har-validator": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
-      "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
-      "dev": true,
-      "requires": {
-        "ajv": "^5.3.0",
-        "har-schema": "^2.0.0"
-      }
-    },
-    "has-ansi": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
-      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^2.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-          "dev": true
-        }
-      }
-    },
-    "has-binary2": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
-      "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
-      "dev": true,
-      "requires": {
-        "isarray": "2.0.1"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
-          "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
-          "dev": true
-        }
-      }
-    },
-    "has-cors": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
-      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
-      "dev": true
-    },
-    "has-flag": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
-      "dev": true
-    },
-    "has-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
-      "dev": true,
-      "requires": {
-        "get-value": "^2.0.6",
-        "has-values": "^1.0.0",
-        "isobject": "^3.0.0"
-      }
-    },
-    "has-values": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
-      "dev": true,
-      "requires": {
-        "is-number": "^3.0.0",
-        "kind-of": "^4.0.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "highlight.js": {
-      "version": "9.13.1",
-      "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz",
-      "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==",
-      "dev": true
-    },
-    "home-or-tmp": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
-      "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
-      "dev": true,
-      "requires": {
-        "os-homedir": "^1.0.0",
-        "os-tmpdir": "^1.0.1"
-      }
-    },
-    "homedir-polyfill": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
-      "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
-      "dev": true,
-      "requires": {
-        "parse-passwd": "^1.0.0"
-      }
-    },
-    "hosted-git-info": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
-      "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
-      "dev": true
-    },
-    "html-encoding-sniffer": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
-      "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
-      "dev": true,
-      "requires": {
-        "whatwg-encoding": "^1.0.1"
-      }
-    },
-    "http-errors": {
-      "version": "1.6.3",
-      "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
-      "dev": true,
-      "requires": {
-        "depd": "~1.1.2",
-        "inherits": "2.0.3",
-        "setprototypeof": "1.1.0",
-        "statuses": ">= 1.4.0 < 2"
-      }
-    },
-    "http-proxy": {
-      "version": "1.17.0",
-      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
-      "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
-      "dev": true,
-      "requires": {
-        "eventemitter3": "^3.0.0",
-        "follow-redirects": "^1.0.0",
-        "requires-port": "^1.0.0"
-      }
-    },
-    "http-signature": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0",
-        "jsprim": "^1.2.2",
-        "sshpk": "^1.7.0"
-      }
-    },
-    "iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-      "dev": true,
-      "requires": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      }
-    },
-    "indent-string": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
-      "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
-      "dev": true
-    },
-    "indexof": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
-      "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
-      "dev": true
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "dev": true,
-      "requires": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-      "dev": true
-    },
-    "ini": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
-      "dev": true
-    },
-    "interpret": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
-      "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
-      "dev": true
-    },
-    "invariant": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
-      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
-      "dev": true,
-      "requires": {
-        "loose-envify": "^1.0.0"
-      }
-    },
-    "invert-kv": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
-      "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
-      "dev": true
-    },
-    "is-absolute": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
-      "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
-      "dev": true,
-      "requires": {
-        "is-relative": "^1.0.0",
-        "is-windows": "^1.0.1"
-      }
-    },
-    "is-accessor-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "is-arrayish": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
-      "dev": true
-    },
-    "is-binary-path": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
-      "dev": true,
-      "requires": {
-        "binary-extensions": "^1.0.0"
-      }
-    },
-    "is-buffer": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-      "dev": true
-    },
-    "is-builtin-module": {
-      "version": "1.0.0",
-      "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
-      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
-      "dev": true,
-      "requires": {
-        "builtin-modules": "^1.0.0"
-      }
-    },
-    "is-data-descriptor": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "is-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-      "dev": true,
-      "requires": {
-        "is-accessor-descriptor": "^0.1.6",
-        "is-data-descriptor": "^0.1.4",
-        "kind-of": "^5.0.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-          "dev": true
-        }
-      }
-    },
-    "is-dotfile": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
-      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
-      "dev": true
-    },
-    "is-equal-shallow": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
-      "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
-      "dev": true,
-      "requires": {
-        "is-primitive": "^2.0.0"
-      }
-    },
-    "is-extendable": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
-      "dev": true
-    },
-    "is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-      "dev": true
-    },
-    "is-finite": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
-      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
-      "dev": true,
-      "requires": {
-        "number-is-nan": "^1.0.0"
-      }
-    },
-    "is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-      "dev": true
-    },
-    "is-glob": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
-      "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
-      "dev": true,
-      "requires": {
-        "is-extglob": "^2.1.1"
-      }
-    },
-    "is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "is-obj": {
-      "version": "1.0.1",
-      "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
-      "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
-      "dev": true
-    },
-    "is-plain-obj": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
-      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
-      "dev": true
-    },
-    "is-plain-object": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "is-posix-bracket": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
-      "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
-      "dev": true
-    },
-    "is-primitive": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
-      "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
-      "dev": true
-    },
-    "is-relative": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
-      "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
-      "dev": true,
-      "requires": {
-        "is-unc-path": "^1.0.0"
-      }
-    },
-    "is-stream": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
-      "dev": true
-    },
-    "is-subset": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
-      "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
-      "dev": true
-    },
-    "is-text-path": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
-      "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
-      "dev": true,
-      "requires": {
-        "text-extensions": "^1.0.0"
-      }
-    },
-    "is-typedarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
-      "dev": true
-    },
-    "is-unc-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
-      "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
-      "dev": true,
-      "requires": {
-        "unc-path-regex": "^0.1.2"
-      }
-    },
-    "is-utf8": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
-      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
-      "dev": true
-    },
-    "is-windows": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
-      "dev": true
-    },
-    "isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-      "dev": true
-    },
-    "isbinaryfile": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
-      "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
-      "dev": true,
-      "requires": {
-        "buffer-alloc": "^1.2.0"
-      }
-    },
-    "isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-      "dev": true
-    },
-    "isobject": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-      "dev": true
-    },
-    "isstream": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
-      "dev": true
-    },
-    "jasmine-core": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.3.0.tgz",
-      "integrity": "sha512-3/xSmG/d35hf80BEN66Y6g9Ca5l/Isdeg/j6zvbTYlTzeKinzmaTM4p9am5kYqOmE05D7s1t8FGjzdSnbUbceA==",
-      "dev": true
-    },
-    "js-tokens": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
-      "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
-      "dev": true
-    },
-    "js-yaml": {
-      "version": "3.12.0",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
-      "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
-      "dev": true,
-      "requires": {
-        "argparse": "^1.0.7",
-        "esprima": "^4.0.0"
-      },
-      "dependencies": {
-        "esprima": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-          "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-          "dev": true
-        }
-      }
-    },
-    "jsbn": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
-      "dev": true
-    },
-    "jsdom": {
-      "version": "11.5.1",
-      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz",
-      "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==",
-      "dev": true,
-      "requires": {
-        "abab": "^1.0.3",
-        "acorn": "^5.1.2",
-        "acorn-globals": "^4.0.0",
-        "array-equal": "^1.0.0",
-        "browser-process-hrtime": "^0.1.2",
-        "content-type-parser": "^1.0.1",
-        "cssom": ">= 0.3.2 < 0.4.0",
-        "cssstyle": ">= 0.2.37 < 0.3.0",
-        "domexception": "^1.0.0",
-        "escodegen": "^1.9.0",
-        "html-encoding-sniffer": "^1.0.1",
-        "left-pad": "^1.2.0",
-        "nwmatcher": "^1.4.3",
-        "parse5": "^3.0.2",
-        "pn": "^1.0.0",
-        "request": "^2.83.0",
-        "request-promise-native": "^1.0.3",
-        "sax": "^1.2.1",
-        "symbol-tree": "^3.2.1",
-        "tough-cookie": "^2.3.3",
-        "webidl-conversions": "^4.0.2",
-        "whatwg-encoding": "^1.0.1",
-        "whatwg-url": "^6.3.0",
-        "xml-name-validator": "^2.0.1"
-      }
-    },
-    "jsesc": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
-      "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
-      "dev": true
-    },
-    "json-parse-better-errors": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
-      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
-      "dev": true
-    },
-    "json-schema": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
-      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
-      "dev": true
-    },
-    "json-schema-traverse": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
-      "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
-      "dev": true
-    },
-    "json-stringify-safe": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
-      "dev": true
-    },
-    "json5": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
-      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
-      "dev": true
-    },
-    "jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "jsonparse": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
-      "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
-      "dev": true
-    },
-    "jspm": {
-      "version": "0.16.53",
-      "resolved": "https://registry.npmjs.org/jspm/-/jspm-0.16.53.tgz",
-      "integrity": "sha1-VvNR9JWUyJM+XgG2UUWsrr/PtZ4=",
-      "dev": true,
-      "requires": {
-        "chalk": "^1.1.1",
-        "core-js": "^1.2.6",
-        "glob": "^6.0.1",
-        "graceful-fs": "^4.1.2",
-        "jspm-github": "^0.13.17",
-        "jspm-npm": "^0.26.12",
-        "jspm-registry": "^0.4.0",
-        "liftoff": "^2.2.0",
-        "minimatch": "^3.0.0",
-        "mkdirp": "~0.5.1",
-        "ncp": "^2.0.0",
-        "proper-lockfile": "^1.1.2",
-        "request": "^2.67.0",
-        "rimraf": "^2.4.4",
-        "rsvp": "^3.1.0",
-        "semver": "^5.1.0",
-        "systemjs": "0.19.46",
-        "systemjs-builder": "0.15.36",
-        "traceur": "0.0.105",
-        "uglify-js": "^2.6.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-          "dev": true
-        },
-        "camelcase": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
-          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
-          "dev": true
-        },
-        "chalk": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^2.2.1",
-            "escape-string-regexp": "^1.0.2",
-            "has-ansi": "^2.0.0",
-            "strip-ansi": "^3.0.0",
-            "supports-color": "^2.0.0"
-          }
-        },
-        "cliui": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
-          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
-          "dev": true,
-          "requires": {
-            "center-align": "^0.1.1",
-            "right-align": "^0.1.1",
-            "wordwrap": "0.0.2"
-          }
-        },
-        "core-js": {
-          "version": "1.2.7",
-          "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
-          "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=",
-          "dev": true
-        },
-        "decamelize": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-          "dev": true
-        },
-        "glob": {
-          "version": "6.0.4",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
-          "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
-          "dev": true,
-          "requires": {
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "2 || 3",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true
-        },
-        "uglify-js": {
-          "version": "2.8.29",
-          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
-          "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
-          "dev": true,
-          "requires": {
-            "source-map": "~0.5.1",
-            "uglify-to-browserify": "~1.0.0",
-            "yargs": "~3.10.0"
-          }
-        },
-        "wordwrap": {
-          "version": "0.0.2",
-          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
-          "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
-          "dev": true
-        },
-        "yargs": {
-          "version": "3.10.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
-          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
-          "dev": true,
-          "requires": {
-            "camelcase": "^1.0.2",
-            "cliui": "^2.1.0",
-            "decamelize": "^1.0.0",
-            "window-size": "0.1.0"
-          }
-        }
-      }
-    },
-    "jspm-github": {
-      "version": "0.13.20",
-      "resolved": "https://registry.npmjs.org/jspm-github/-/jspm-github-0.13.20.tgz",
-      "integrity": "sha512-q+rg4b7Q9HuH4efrpM6QKmCddFYkKg3javGYPK1rcNvxNFAN2PqhNLgc7TpYgR2k8k+iLZvFWeWmC9WxZrB3Dw==",
-      "dev": true,
-      "requires": {
-        "expand-tilde": "^1.2.0",
-        "graceful-fs": "^4.1.3",
-        "mkdirp": "^0.5.1",
-        "netrc": "^0.1.3",
-        "request": "^2.74.0",
-        "rimraf": "^2.5.4",
-        "rsvp": "^3.0.17",
-        "semver": "^5.0.1",
-        "tar": "^2.2.1",
-        "which": "^1.0.9",
-        "yauzl": "^2.3.1"
-      }
-    },
-    "jspm-npm": {
-      "version": "0.26.14",
-      "resolved": "https://registry.npmjs.org/jspm-npm/-/jspm-npm-0.26.14.tgz",
-      "integrity": "sha512-2kxX7sa0o4J7sVCMLEw91VTdeMBS68To9Pf0Y0dFoKVks95BXF0anPHbpG7fGAXlkUHLFk7lwMowkXlNavDPKg==",
-      "dev": true,
-      "requires": {
-        "buffer-peek-stream": "^1.0.1",
-        "glob": "^5.0.10",
-        "graceful-fs": "^4.1.3",
-        "mkdirp": "^0.5.1",
-        "request": "^2.58.0",
-        "resolve": "^1.1.6",
-        "rsvp": "^3.0.18",
-        "semver": "^5.0.1",
-        "systemjs-builder": "^0.15.0",
-        "tar": "^1.0.3",
-        "which": "^1.1.1"
-      },
-      "dependencies": {
-        "glob": {
-          "version": "5.0.15",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
-          "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
-          "dev": true,
-          "requires": {
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "2 || 3",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "tar": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/tar/-/tar-1.0.3.tgz",
-          "integrity": "sha1-FbzaskT6St1E5CRKAXbtuKqaK0Q=",
-          "dev": true,
-          "requires": {
-            "block-stream": "*",
-            "fstream": "^1.0.2",
-            "inherits": "2"
-          }
-        }
-      }
-    },
-    "jspm-registry": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/jspm-registry/-/jspm-registry-0.4.4.tgz",
-      "integrity": "sha1-1TFmA1qHzc5YXWK6o5dWhUaZbXA=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.3",
-        "rimraf": "^2.3.2",
-        "rsvp": "^3.0.18",
-        "semver": "^4.3.3"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "4.3.6",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
-          "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
-          "dev": true
-        }
-      }
-    },
-    "jsprim": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
-      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "1.0.0",
-        "extsprintf": "1.3.0",
-        "json-schema": "0.2.3",
-        "verror": "1.10.0"
-      }
-    },
-    "karma": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/karma/-/karma-3.1.1.tgz",
-      "integrity": "sha512-NetT3wPCQMNB36uiL9LLyhrOt8SQwrEKt0xD3+KpTCfm0VxVyUJdPL5oTq2Ic5ouemgL/Iz4wqXEbF3zea9kQQ==",
-      "dev": true,
-      "requires": {
-        "bluebird": "^3.3.0",
-        "body-parser": "^1.16.1",
-        "chokidar": "^2.0.3",
-        "colors": "^1.1.0",
-        "combine-lists": "^1.0.0",
-        "connect": "^3.6.0",
-        "core-js": "^2.2.0",
-        "di": "^0.0.1",
-        "dom-serialize": "^2.2.0",
-        "expand-braces": "^0.1.1",
-        "glob": "^7.1.1",
-        "graceful-fs": "^4.1.2",
-        "http-proxy": "^1.13.0",
-        "isbinaryfile": "^3.0.0",
-        "lodash": "^4.17.4",
-        "log4js": "^3.0.0",
-        "mime": "^2.3.1",
-        "minimatch": "^3.0.2",
-        "optimist": "^0.6.1",
-        "qjobs": "^1.1.4",
-        "range-parser": "^1.2.0",
-        "rimraf": "^2.6.0",
-        "safe-buffer": "^5.0.1",
-        "socket.io": "2.1.1",
-        "source-map": "^0.6.1",
-        "tmp": "0.0.33",
-        "useragent": "2.2.1"
-      }
-    },
-    "karma-chrome-launcher": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz",
-      "integrity": "sha1-zxudBxNswY/iOTJ9JGVMPbw2is8=",
-      "dev": true,
-      "requires": {
-        "fs-access": "^1.0.0",
-        "which": "^1.2.1"
-      }
-    },
-    "karma-ie-launcher": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/karma-ie-launcher/-/karma-ie-launcher-1.0.0.tgz",
-      "integrity": "sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw=",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.6.1"
-      }
-    },
-    "karma-jasmine": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz",
-      "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=",
-      "dev": true
-    },
-    "karma-requirejs": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/karma-requirejs/-/karma-requirejs-1.1.0.tgz",
-      "integrity": "sha1-/driy4fX68FvsCIok1ZNf+5Xh5g=",
-      "dev": true
-    },
-    "kind-of": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-      "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
-      "dev": true
-    },
-    "lazy-cache": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
-      "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
-      "dev": true
-    },
-    "lcid": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
-      "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
-      "dev": true,
-      "requires": {
-        "invert-kv": "^2.0.0"
-      }
-    },
-    "left-pad": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
-      "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==",
-      "dev": true
-    },
-    "levn": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
-      "dev": true,
-      "requires": {
-        "prelude-ls": "~1.1.2",
-        "type-check": "~0.3.2"
-      }
-    },
-    "liftoff": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
-      "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
-      "dev": true,
-      "requires": {
-        "extend": "^3.0.0",
-        "findup-sync": "^2.0.0",
-        "fined": "^1.0.1",
-        "flagged-respawn": "^1.0.0",
-        "is-plain-object": "^2.0.4",
-        "object.map": "^1.0.0",
-        "rechoir": "^0.6.2",
-        "resolve": "^1.1.7"
-      }
-    },
-    "load-json-file": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
-      "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "parse-json": "^4.0.0",
-        "pify": "^3.0.0",
-        "strip-bom": "^3.0.0"
-      }
-    },
-    "locate-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-      "dev": true,
-      "requires": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      }
-    },
-    "lodash": {
-      "version": "4.17.4",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
-      "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
-      "dev": true
-    },
-    "lodash._reinterpolate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
-      "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
-      "dev": true
-    },
-    "lodash.debounce": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
-      "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
-      "dev": true
-    },
-    "lodash.sortby": {
-      "version": "4.7.0",
-      "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
-      "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
-      "dev": true
-    },
-    "lodash.template": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
-      "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
-      "dev": true,
-      "requires": {
-        "lodash._reinterpolate": "~3.0.0",
-        "lodash.templatesettings": "^4.0.0"
-      }
-    },
-    "lodash.templatesettings": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz",
-      "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
-      "dev": true,
-      "requires": {
-        "lodash._reinterpolate": "~3.0.0"
-      }
-    },
-    "log4js": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.6.tgz",
-      "integrity": "sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ==",
-      "dev": true,
-      "requires": {
-        "circular-json": "^0.5.5",
-        "date-format": "^1.2.0",
-        "debug": "^3.1.0",
-        "rfdc": "^1.1.2",
-        "streamroller": "0.7.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.6",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
-          "dev": true
-        }
-      }
-    },
-    "longest": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
-      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
-      "dev": true
-    },
-    "loose-envify": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-      "dev": true,
-      "requires": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      }
-    },
-    "loud-rejection": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
-      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
-      "dev": true,
-      "requires": {
-        "currently-unhandled": "^0.4.1",
-        "signal-exit": "^3.0.0"
-      }
-    },
-    "lru-cache": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
-      "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
-      "dev": true,
-      "requires": {
-        "pseudomap": "^1.0.2",
-        "yallist": "^2.1.2"
-      }
-    },
-    "make-iterator": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
-      "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^6.0.2"
-      }
-    },
-    "map-age-cleaner": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz",
-      "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==",
-      "dev": true,
-      "requires": {
-        "p-defer": "^1.0.0"
-      }
-    },
-    "map-cache": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
-      "dev": true
-    },
-    "map-obj": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
-      "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
-      "dev": true
-    },
-    "map-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
-      "dev": true,
-      "requires": {
-        "object-visit": "^1.0.0"
-      }
-    },
-    "marked": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz",
-      "integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw==",
-      "dev": true
-    },
-    "math-random": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
-      "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
-      "dev": true
-    },
-    "media-typer": {
-      "version": "0.3.0",
-      "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
-      "dev": true
-    },
-    "mem": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
-      "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
-      "dev": true,
-      "requires": {
-        "map-age-cleaner": "^0.1.1",
-        "mimic-fn": "^1.0.0",
-        "p-is-promise": "^1.1.0"
-      }
-    },
-    "meow": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
-      "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
-      "dev": true,
-      "requires": {
-        "camelcase-keys": "^4.0.0",
-        "decamelize-keys": "^1.0.0",
-        "loud-rejection": "^1.0.0",
-        "minimist": "^1.1.3",
-        "minimist-options": "^3.0.1",
-        "normalize-package-data": "^2.3.4",
-        "read-pkg-up": "^3.0.0",
-        "redent": "^2.0.0",
-        "trim-newlines": "^2.0.0"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
-          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
-          "dev": true,
-          "requires": {
-            "locate-path": "^2.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
-          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
-          "dev": true,
-          "requires": {
-            "p-locate": "^2.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        },
-        "p-limit": {
-          "version": "1.3.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
-          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
-          "dev": true,
-          "requires": {
-            "p-try": "^1.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
-          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
-          "dev": true,
-          "requires": {
-            "p-limit": "^1.1.0"
-          }
-        },
-        "p-try": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
-          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
-          "dev": true
-        },
-        "read-pkg": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
-          "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
-          "dev": true,
-          "requires": {
-            "load-json-file": "^4.0.0",
-            "normalize-package-data": "^2.3.2",
-            "path-type": "^3.0.0"
-          }
-        },
-        "read-pkg-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
-          "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
-          "dev": true,
-          "requires": {
-            "find-up": "^2.0.0",
-            "read-pkg": "^3.0.0"
-          }
-        }
-      }
-    },
-    "micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-      "dev": true,
-      "requires": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "braces": "^2.3.1",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "extglob": "^2.0.4",
-        "fragment-cache": "^0.2.1",
-        "kind-of": "^6.0.2",
-        "nanomatch": "^1.2.9",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.2"
-      }
-    },
-    "mime": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
-      "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==",
-      "dev": true
-    },
-    "mime-db": {
-      "version": "1.37.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
-      "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
-      "dev": true
-    },
-    "mime-types": {
-      "version": "2.1.21",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
-      "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
-      "dev": true,
-      "requires": {
-        "mime-db": "~1.37.0"
-      }
-    },
-    "mimic-fn": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
-      "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
-      "dev": true
-    },
-    "minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
-      "dev": true,
-      "requires": {
-        "brace-expansion": "^1.1.7"
-      }
-    },
-    "minimist": {
-      "version": "0.0.10",
-      "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
-      "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
-      "dev": true
-    },
-    "minimist-options": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
-      "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
-      "dev": true,
-      "requires": {
-        "arrify": "^1.0.1",
-        "is-plain-obj": "^1.1.0"
-      }
-    },
-    "mixin-deep": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
-      "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
-      "dev": true,
-      "requires": {
-        "for-in": "^1.0.2",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "mkdirp": {
-      "version": "0.5.1",
-      "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
-      "dev": true,
-      "requires": {
-        "minimist": "0.0.8"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "0.0.8",
-          "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
-          "dev": true
-        }
-      }
-    },
-    "modify-values": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
-      "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
-      "dev": true
-    },
-    "ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "nan": {
-      "version": "2.11.1",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz",
-      "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==",
-      "dev": true,
-      "optional": true
-    },
-    "nanomatch": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-      "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
-      "dev": true,
-      "requires": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "fragment-cache": "^0.2.1",
-        "is-windows": "^1.0.2",
-        "kind-of": "^6.0.2",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      }
-    },
-    "ncp": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
-      "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
-      "dev": true
-    },
-    "negotiator": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
-      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
-      "dev": true
-    },
-    "neo-async": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
-      "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
-      "dev": true
-    },
-    "netrc": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz",
-      "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=",
-      "dev": true
-    },
-    "next-tick": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
-      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
-      "dev": true
-    },
-    "nice-try": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
-      "dev": true
-    },
-    "noms": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz",
-      "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "readable-stream": "~1.0.31"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-          "dev": true
-        },
-        "readable-stream": {
-          "version": "1.0.34",
-          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
-          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
-          "dev": true,
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.1",
-            "isarray": "0.0.1",
-            "string_decoder": "~0.10.x"
-          }
-        },
-        "string_decoder": {
-          "version": "0.10.31",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-          "dev": true
-        }
-      }
-    },
-    "normalize-package-data": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
-      "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
-      "dev": true,
-      "requires": {
-        "hosted-git-info": "^2.1.4",
-        "is-builtin-module": "^1.0.0",
-        "semver": "2 || 3 || 4 || 5",
-        "validate-npm-package-license": "^3.0.1"
-      }
-    },
-    "normalize-path": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-      "dev": true,
-      "requires": {
-        "remove-trailing-separator": "^1.0.1"
-      }
-    },
-    "npm-run-path": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
-      "dev": true,
-      "requires": {
-        "path-key": "^2.0.0"
-      }
-    },
-    "null-check": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
-      "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
-      "dev": true
-    },
-    "number-is-nan": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
-      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
-      "dev": true
-    },
-    "nwmatcher": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz",
-      "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==",
-      "dev": true
-    },
-    "oauth-sign": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
-      "dev": true
-    },
-    "object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
-      "dev": true
-    },
-    "object-component": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
-      "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
-      "dev": true
-    },
-    "object-copy": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
-      "dev": true,
-      "requires": {
-        "copy-descriptor": "^0.1.0",
-        "define-property": "^0.2.5",
-        "kind-of": "^3.0.3"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "object-visit": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.0"
-      }
-    },
-    "object.defaults": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
-      "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
-      "dev": true,
-      "requires": {
-        "array-each": "^1.0.1",
-        "array-slice": "^1.0.0",
-        "for-own": "^1.0.0",
-        "isobject": "^3.0.0"
-      },
-      "dependencies": {
-        "array-slice": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
-          "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
-          "dev": true
-        },
-        "for-own": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
-          "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
-          "dev": true,
-          "requires": {
-            "for-in": "^1.0.1"
-          }
-        }
-      }
-    },
-    "object.map": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
-      "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
-      "dev": true,
-      "requires": {
-        "for-own": "^1.0.0",
-        "make-iterator": "^1.0.0"
-      },
-      "dependencies": {
-        "for-own": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
-          "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
-          "dev": true,
-          "requires": {
-            "for-in": "^1.0.1"
-          }
-        }
-      }
-    },
-    "object.omit": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
-      "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
-      "dev": true,
-      "requires": {
-        "for-own": "^0.1.4",
-        "is-extendable": "^0.1.1"
-      }
-    },
-    "object.pick": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "on-finished": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
-      "dev": true,
-      "requires": {
-        "ee-first": "1.1.1"
-      }
-    },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "dev": true,
-      "requires": {
-        "wrappy": "1"
-      }
-    },
-    "optimist": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
-      "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
-      "dev": true,
-      "requires": {
-        "minimist": "~0.0.1",
-        "wordwrap": "~0.0.2"
-      },
-      "dependencies": {
-        "wordwrap": {
-          "version": "0.0.3",
-          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
-          "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
-          "dev": true
-        }
-      }
-    },
-    "optionator": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
-      "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
-      "dev": true,
-      "requires": {
-        "deep-is": "~0.1.3",
-        "fast-levenshtein": "~2.0.4",
-        "levn": "~0.3.0",
-        "prelude-ls": "~1.1.2",
-        "type-check": "~0.3.2",
-        "wordwrap": "~1.0.0"
-      }
-    },
-    "os-homedir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
-      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
-      "dev": true
-    },
-    "os-locale": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz",
-      "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
-      "dev": true,
-      "requires": {
-        "execa": "^0.10.0",
-        "lcid": "^2.0.0",
-        "mem": "^4.0.0"
-      }
-    },
-    "os-tmpdir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
-      "dev": true
-    },
-    "p-defer": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
-      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
-      "dev": true
-    },
-    "p-finally": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
-      "dev": true
-    },
-    "p-is-promise": {
-      "version": "1.1.0",
-      "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
-      "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
-      "dev": true
-    },
-    "p-limit": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
-      "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
-      "dev": true,
-      "requires": {
-        "p-try": "^2.0.0"
-      }
-    },
-    "p-locate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-      "dev": true,
-      "requires": {
-        "p-limit": "^2.0.0"
-      }
-    },
-    "p-try": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
-      "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
-      "dev": true
-    },
-    "parse-filepath": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
-      "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
-      "dev": true,
-      "requires": {
-        "is-absolute": "^1.0.0",
-        "map-cache": "^0.2.0",
-        "path-root": "^0.1.1"
-      }
-    },
-    "parse-github-repo-url": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz",
-      "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=",
-      "dev": true
-    },
-    "parse-glob": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
-      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
-      "dev": true,
-      "requires": {
-        "glob-base": "^0.3.0",
-        "is-dotfile": "^1.0.0",
-        "is-extglob": "^1.0.0",
-        "is-glob": "^2.0.0"
-      },
-      "dependencies": {
-        "is-extglob": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
-          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
-          "dev": true
-        },
-        "is-glob": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
-          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^1.0.0"
-          }
-        }
-      }
-    },
-    "parse-json": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
-      "dev": true,
-      "requires": {
-        "error-ex": "^1.3.1",
-        "json-parse-better-errors": "^1.0.1"
-      }
-    },
-    "parse-passwd": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
-      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
-      "dev": true
-    },
-    "parse5": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
-      "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
-      "dev": true,
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "parseqs": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
-      "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
-      "dev": true,
-      "requires": {
-        "better-assert": "~1.0.0"
-      }
-    },
-    "parseuri": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
-      "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
-      "dev": true,
-      "requires": {
-        "better-assert": "~1.0.0"
-      }
-    },
-    "parseurl": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
-      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
-      "dev": true
-    },
-    "pascalcase": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
-      "dev": true
-    },
-    "path-dirname": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
-      "dev": true
-    },
-    "path-exists": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
-      "dev": true
-    },
-    "path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-      "dev": true
-    },
-    "path-key": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
-      "dev": true
-    },
-    "path-parse": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
-      "dev": true
-    },
-    "path-root": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
-      "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
-      "dev": true,
-      "requires": {
-        "path-root-regex": "^0.1.0"
-      }
-    },
-    "path-root-regex": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
-      "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
-      "dev": true
-    },
-    "path-type": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
-      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
-      "dev": true,
-      "requires": {
-        "pify": "^3.0.0"
-      }
-    },
-    "pend": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
-      "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
-      "dev": true
-    },
-    "performance-now": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
-      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
-      "dev": true
-    },
-    "pify": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-      "dev": true
-    },
-    "pinkie": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
-      "dev": true
-    },
-    "pinkie-promise": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
-      "dev": true,
-      "requires": {
-        "pinkie": "^2.0.0"
-      }
-    },
-    "pn": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
-      "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
-      "dev": true
-    },
-    "posix-character-classes": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
-      "dev": true
-    },
-    "prelude-ls": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
-      "dev": true
-    },
-    "preserve": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
-      "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
-      "dev": true
-    },
-    "private": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
-      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
-      "dev": true
-    },
-    "process-nextick-args": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
-      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
-      "dev": true
-    },
-    "progress": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz",
-      "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==",
-      "dev": true
-    },
-    "proper-lockfile": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-1.2.0.tgz",
-      "integrity": "sha1-zv9d2J0+XxD7deHo52vHWAGlnDQ=",
-      "dev": true,
-      "requires": {
-        "err-code": "^1.0.0",
-        "extend": "^3.0.0",
-        "graceful-fs": "^4.1.2",
-        "retry": "^0.10.0"
-      }
-    },
-    "pseudomap": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
-      "dev": true
-    },
-    "psl": {
-      "version": "1.1.29",
-      "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
-      "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
-      "dev": true
-    },
-    "punycode": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-      "dev": true
-    },
-    "q": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
-      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
-      "dev": true
-    },
-    "qjobs": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
-      "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==",
-      "dev": true
-    },
-    "qs": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
-      "dev": true
-    },
-    "quick-lru": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
-      "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
-      "dev": true
-    },
-    "randomatic": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
-      "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
-      "dev": true,
-      "requires": {
-        "is-number": "^4.0.0",
-        "kind-of": "^6.0.0",
-        "math-random": "^1.0.1"
-      },
-      "dependencies": {
-        "is-number": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
-          "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
-          "dev": true
-        }
-      }
-    },
-    "range-parser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
-      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
-      "dev": true
-    },
-    "raw-body": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
-      "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
-      "dev": true,
-      "requires": {
-        "bytes": "3.0.0",
-        "http-errors": "1.6.3",
-        "iconv-lite": "0.4.23",
-        "unpipe": "1.0.0"
-      },
-      "dependencies": {
-        "iconv-lite": {
-          "version": "0.4.23",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
-          "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
-          "dev": true,
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3"
-          }
-        }
-      }
-    },
-    "read-pkg": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
-      "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
-      "dev": true,
-      "requires": {
-        "normalize-package-data": "^2.3.2",
-        "parse-json": "^4.0.0",
-        "pify": "^3.0.0"
-      }
-    },
-    "read-pkg-up": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
-      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
-      "dev": true,
-      "requires": {
-        "find-up": "^1.0.0",
-        "read-pkg": "^1.0.0"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
-          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
-          "dev": true,
-          "requires": {
-            "path-exists": "^2.0.0",
-            "pinkie-promise": "^2.0.0"
-          }
-        },
-        "load-json-file": {
-          "version": "1.1.0",
-          "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
-          "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "parse-json": "^2.2.0",
-            "pify": "^2.0.0",
-            "pinkie-promise": "^2.0.0",
-            "strip-bom": "^2.0.0"
-          }
-        },
-        "parse-json": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
-          "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
-          "dev": true,
-          "requires": {
-            "error-ex": "^1.2.0"
-          }
-        },
-        "path-exists": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
-          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
-          "dev": true,
-          "requires": {
-            "pinkie-promise": "^2.0.0"
-          }
-        },
-        "path-type": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
-          "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "pify": "^2.0.0",
-            "pinkie-promise": "^2.0.0"
-          }
-        },
-        "pify": {
-          "version": "2.3.0",
-          "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true
-        },
-        "read-pkg": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
-          "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
-          "dev": true,
-          "requires": {
-            "load-json-file": "^1.0.0",
-            "normalize-package-data": "^2.3.2",
-            "path-type": "^1.0.0"
-          }
-        },
-        "strip-bom": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
-          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
-          "dev": true,
-          "requires": {
-            "is-utf8": "^0.2.0"
-          }
-        }
-      }
-    },
-    "readable-stream": {
-      "version": "2.3.6",
-      "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-      "dev": true,
-      "requires": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
-      }
-    },
-    "readdirp": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-      "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.11",
-        "micromatch": "^3.1.10",
-        "readable-stream": "^2.0.2"
-      }
-    },
-    "rechoir": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
-      "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
-      "dev": true,
-      "requires": {
-        "resolve": "^1.1.6"
-      }
-    },
-    "redent": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
-      "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
-      "dev": true,
-      "requires": {
-        "indent-string": "^3.0.0",
-        "strip-indent": "^2.0.0"
-      }
-    },
-    "regenerator-runtime": {
-      "version": "0.11.1",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
-      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
-      "dev": true
-    },
-    "regex-cache": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
-      "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
-      "dev": true,
-      "requires": {
-        "is-equal-shallow": "^0.1.3"
-      }
-    },
-    "regex-not": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^3.0.2",
-        "safe-regex": "^1.1.0"
-      }
-    },
-    "remove-trailing-separator": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
-      "dev": true
-    },
-    "repeat-element": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
-      "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
-      "dev": true
-    },
-    "repeat-string": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
-      "dev": true
-    },
-    "repeating": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
-      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
-      "dev": true,
-      "requires": {
-        "is-finite": "^1.0.0"
-      }
-    },
-    "request": {
-      "version": "2.88.0",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
-      "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
-      "dev": true,
-      "requires": {
-        "aws-sign2": "~0.7.0",
-        "aws4": "^1.8.0",
-        "caseless": "~0.12.0",
-        "combined-stream": "~1.0.6",
-        "extend": "~3.0.2",
-        "forever-agent": "~0.6.1",
-        "form-data": "~2.3.2",
-        "har-validator": "~5.1.0",
-        "http-signature": "~1.2.0",
-        "is-typedarray": "~1.0.0",
-        "isstream": "~0.1.2",
-        "json-stringify-safe": "~5.0.1",
-        "mime-types": "~2.1.19",
-        "oauth-sign": "~0.9.0",
-        "performance-now": "^2.1.0",
-        "qs": "~6.5.2",
-        "safe-buffer": "^5.1.2",
-        "tough-cookie": "~2.4.3",
-        "tunnel-agent": "^0.6.0",
-        "uuid": "^3.3.2"
-      }
-    },
-    "request-promise-core": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz",
-      "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.13.1"
-      }
-    },
-    "request-promise-native": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz",
-      "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=",
-      "dev": true,
-      "requires": {
-        "request-promise-core": "1.1.1",
-        "stealthy-require": "^1.1.0",
-        "tough-cookie": ">=2.3.3"
-      }
-    },
-    "require-directory": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
-      "dev": true
-    },
-    "require-main-filename": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
-      "dev": true
-    },
-    "requirejs": {
-      "version": "2.3.6",
-      "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
-      "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
-      "dev": true
-    },
-    "requirejs-text": {
-      "version": "2.0.15",
-      "resolved": "https://registry.npmjs.org/requirejs-text/-/requirejs-text-2.0.15.tgz",
-      "integrity": "sha1-ExOHM2E/xEV7fhJH6Mt1HfeqVCk=",
-      "dev": true
-    },
-    "requires-port": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
-      "dev": true
-    },
-    "resolve": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
-      "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
-      "dev": true,
-      "requires": {
-        "path-parse": "^1.0.5"
-      }
-    },
-    "resolve-dir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
-      "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
-      "dev": true,
-      "requires": {
-        "expand-tilde": "^2.0.0",
-        "global-modules": "^1.0.0"
-      },
-      "dependencies": {
-        "expand-tilde": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
-          "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
-          "dev": true,
-          "requires": {
-            "homedir-polyfill": "^1.0.1"
-          }
-        }
-      }
-    },
-    "resolve-url": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
-      "dev": true
-    },
-    "ret": {
-      "version": "0.1.15",
-      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
-      "dev": true
-    },
-    "retry": {
-      "version": "0.10.1",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
-      "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=",
-      "dev": true
-    },
-    "rfdc": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz",
-      "integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA==",
-      "dev": true
-    },
-    "right-align": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
-      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
-      "dev": true,
-      "requires": {
-        "align-text": "^0.1.1"
-      }
-    },
-    "rimraf": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
-      "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
-      "dev": true,
-      "requires": {
-        "glob": "^7.0.5"
-      }
-    },
-    "rollup": {
-      "version": "0.66.6",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.66.6.tgz",
-      "integrity": "sha512-J7/SWanrcb83vfIHqa8+aVVGzy457GcjA6GVZEnD0x2u4OnOd0Q1pCrEoNe8yLwM6z6LZP02zBT2uW0yh5TqOw==",
-      "dev": true,
-      "requires": {
-        "@types/estree": "0.0.39",
-        "@types/node": "*"
-      }
-    },
-    "rollup-plugin-typescript2": {
-      "version": "0.17.2",
-      "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.17.2.tgz",
-      "integrity": "sha512-QmrZElI+p4sytmv1S7uvtUbL4XADWWmM/dIuc3agGZTE+fO2X1KoRo8EbeR1x0ZO4I9KwPubGfmw/1rHeUR+Dg==",
-      "dev": true,
-      "requires": {
-        "fs-extra": "7.0.0",
-        "resolve": "1.8.1",
-        "rollup-pluginutils": "2.3.3",
-        "tslib": "1.9.3"
-      }
-    },
-    "rollup-pluginutils": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz",
-      "integrity": "sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==",
-      "dev": true,
-      "requires": {
-        "estree-walker": "^0.5.2",
-        "micromatch": "^2.3.11"
-      },
-      "dependencies": {
-        "arr-diff": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
-          "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
-          "dev": true,
-          "requires": {
-            "arr-flatten": "^1.0.1"
-          }
-        },
-        "array-unique": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
-          "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
-          "dev": true
-        },
-        "braces": {
-          "version": "1.8.5",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
-          "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
-          "dev": true,
-          "requires": {
-            "expand-range": "^1.8.1",
-            "preserve": "^0.2.0",
-            "repeat-element": "^1.1.2"
-          }
-        },
-        "expand-brackets": {
-          "version": "0.1.5",
-          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
-          "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
-          "dev": true,
-          "requires": {
-            "is-posix-bracket": "^0.1.0"
-          }
-        },
-        "expand-range": {
-          "version": "1.8.2",
-          "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
-          "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
-          "dev": true,
-          "requires": {
-            "fill-range": "^2.1.0"
-          }
-        },
-        "extglob": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
-          "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^1.0.0"
-          }
-        },
-        "fill-range": {
-          "version": "2.2.4",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
-          "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
-          "dev": true,
-          "requires": {
-            "is-number": "^2.1.0",
-            "isobject": "^2.0.0",
-            "randomatic": "^3.0.0",
-            "repeat-element": "^1.1.2",
-            "repeat-string": "^1.5.2"
-          }
-        },
-        "is-extglob": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
-          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
-          "dev": true
-        },
-        "is-glob": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
-          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^1.0.0"
-          }
-        },
-        "is-number": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
-          "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          }
-        },
-        "isobject": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-          "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-          "dev": true,
-          "requires": {
-            "isarray": "1.0.0"
-          }
-        },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        },
-        "micromatch": {
-          "version": "2.3.11",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
-          "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
-          "dev": true,
-          "requires": {
-            "arr-diff": "^2.0.0",
-            "array-unique": "^0.2.1",
-            "braces": "^1.8.2",
-            "expand-brackets": "^0.1.4",
-            "extglob": "^0.3.1",
-            "filename-regex": "^2.0.0",
-            "is-extglob": "^1.0.0",
-            "is-glob": "^2.0.1",
-            "kind-of": "^3.0.2",
-            "normalize-path": "^2.0.1",
-            "object.omit": "^2.0.0",
-            "parse-glob": "^3.0.4",
-            "regex-cache": "^0.4.2"
-          }
-        }
-      }
-    },
-    "rsvp": {
-      "version": "3.6.2",
-      "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz",
-      "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==",
-      "dev": true
-    },
-    "rxjs": {
-      "version": "6.2.2",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz",
-      "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
-      "dev": true,
-      "requires": {
-        "tslib": "^1.9.0"
-      }
-    },
-    "safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-      "dev": true
-    },
-    "safe-regex": {
-      "version": "1.1.0",
-      "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
-      "dev": true,
-      "requires": {
-        "ret": "~0.1.10"
-      }
-    },
-    "safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-      "dev": true
-    },
-    "sax": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
-      "dev": true
-    },
-    "semver": {
-      "version": "5.6.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
-      "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
-      "dev": true
-    },
-    "set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
-      "dev": true
-    },
-    "set-value": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
-      "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^2.0.1",
-        "is-extendable": "^0.1.1",
-        "is-plain-object": "^2.0.3",
-        "split-string": "^3.0.1"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "setprototypeof": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
-      "dev": true
-    },
-    "shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-      "dev": true,
-      "requires": {
-        "shebang-regex": "^1.0.0"
-      }
-    },
-    "shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
-      "dev": true
-    },
-    "shelljs": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.2.tgz",
-      "integrity": "sha512-pRXeNrCA2Wd9itwhvLp5LZQvPJ0wU6bcjaTMywHHGX5XWhVN2nzSu7WV0q+oUY7mGK3mgSkDDzP3MgjqdyIgbQ==",
-      "dev": true,
-      "requires": {
-        "glob": "^7.0.0",
-        "interpret": "^1.0.0",
-        "rechoir": "^0.6.2"
-      }
-    },
-    "signal-exit": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
-      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
-      "dev": true
-    },
-    "slash": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
-      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
-      "dev": true
-    },
-    "snapdragon": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
-      "dev": true,
-      "requires": {
-        "base": "^0.11.1",
-        "debug": "^2.2.0",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "map-cache": "^0.2.2",
-        "source-map": "^0.5.6",
-        "source-map-resolve": "^0.5.0",
-        "use": "^3.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-          "dev": true
-        }
-      }
-    },
-    "snapdragon-node": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
-      "dev": true,
-      "requires": {
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.0",
-        "snapdragon-util": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "snapdragon-util": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.2.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "socket.io": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz",
-      "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==",
-      "dev": true,
-      "requires": {
-        "debug": "~3.1.0",
-        "engine.io": "~3.2.0",
-        "has-binary2": "~1.0.2",
-        "socket.io-adapter": "~1.1.0",
-        "socket.io-client": "2.1.1",
-        "socket.io-parser": "~3.2.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        }
-      }
-    },
-    "socket.io-adapter": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz",
-      "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=",
-      "dev": true
-    },
-    "socket.io-client": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz",
-      "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==",
-      "dev": true,
-      "requires": {
-        "backo2": "1.0.2",
-        "base64-arraybuffer": "0.1.5",
-        "component-bind": "1.0.0",
-        "component-emitter": "1.2.1",
-        "debug": "~3.1.0",
-        "engine.io-client": "~3.2.0",
-        "has-binary2": "~1.0.2",
-        "has-cors": "1.1.0",
-        "indexof": "0.0.1",
-        "object-component": "0.0.3",
-        "parseqs": "0.0.5",
-        "parseuri": "0.0.5",
-        "socket.io-parser": "~3.2.0",
-        "to-array": "0.1.4"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        }
-      }
-    },
-    "socket.io-parser": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
-      "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==",
-      "dev": true,
-      "requires": {
-        "component-emitter": "1.2.1",
-        "debug": "~3.1.0",
-        "isarray": "2.0.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "isarray": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
-          "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
-          "dev": true
-        }
-      }
-    },
-    "source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true
-    },
-    "source-map-resolve": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
-      "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
-      "dev": true,
-      "requires": {
-        "atob": "^2.1.1",
-        "decode-uri-component": "^0.2.0",
-        "resolve-url": "^0.2.1",
-        "source-map-url": "^0.4.0",
-        "urix": "^0.1.0"
-      }
-    },
-    "source-map-support": {
-      "version": "0.4.18",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
-      "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
-      "dev": true,
-      "requires": {
-        "source-map": "^0.5.6"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-          "dev": true
-        }
-      }
-    },
-    "source-map-url": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
-      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
-      "dev": true
-    },
-    "spawn-command": {
-      "version": "0.0.2-1",
-      "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
-      "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=",
-      "dev": true
-    },
-    "spdx-correct": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz",
-      "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==",
-      "dev": true,
-      "requires": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-exceptions": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
-      "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
-      "dev": true
-    },
-    "spdx-expression-parse": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
-      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
-      "dev": true,
-      "requires": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-license-ids": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz",
-      "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==",
-      "dev": true
-    },
-    "split": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
-      "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
-      "dev": true,
-      "requires": {
-        "through": "2"
-      }
-    },
-    "split-string": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^3.0.0"
-      }
-    },
-    "split2": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
-      "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
-      "dev": true,
-      "requires": {
-        "through2": "^2.0.2"
-      }
-    },
-    "sprintf-js": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
-      "dev": true
-    },
-    "sshpk": {
-      "version": "1.15.2",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz",
-      "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==",
-      "dev": true,
-      "requires": {
-        "asn1": "~0.2.3",
-        "assert-plus": "^1.0.0",
-        "bcrypt-pbkdf": "^1.0.0",
-        "dashdash": "^1.12.0",
-        "ecc-jsbn": "~0.1.1",
-        "getpass": "^0.1.1",
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.0.2",
-        "tweetnacl": "~0.14.0"
-      }
-    },
-    "standard-version": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-5.0.2.tgz",
-      "integrity": "sha512-vvdWZySinwWU9UZhtgYUGGTkYzqrwYMw3c7CFJ17E7vMbAEqVSui/bm+ZcSukAAU2WmphPTWIKFmn8ni+lk4NA==",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.4.1",
-        "conventional-changelog": "^3.0.6",
-        "conventional-recommended-bump": "^4.0.4",
-        "detect-indent": "^5.0.0",
-        "detect-newline": "^2.1.0",
-        "dotgitignore": "^2.1.0",
-        "figures": "^2.0.0",
-        "fs-access": "^1.0.0",
-        "git-semver-tags": "^2.0.2",
-        "semver": "^5.2.0",
-        "stringify-package": "^1.0.0",
-        "yargs": "^12.0.2"
-      },
-      "dependencies": {
-        "conventional-changelog": {
-          "version": "3.0.6",
-          "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.0.6.tgz",
-          "integrity": "sha512-1b96x3G67lDKakRvMm+VvYGwgRk+C8aapHKL5iZ/TJzzD/RuyGA2diHNEsR+uPHmQ7/A4Ts7j6N+VNqUoOfksg==",
-          "dev": true,
-          "requires": {
-            "conventional-changelog-angular": "^5.0.3",
-            "conventional-changelog-atom": "^2.0.1",
-            "conventional-changelog-codemirror": "^2.0.1",
-            "conventional-changelog-core": "^3.1.6",
-            "conventional-changelog-ember": "^2.0.2",
-            "conventional-changelog-eslint": "^3.0.1",
-            "conventional-changelog-express": "^2.0.1",
-            "conventional-changelog-jquery": "^3.0.4",
-            "conventional-changelog-jshint": "^2.0.1",
-            "conventional-changelog-preset-loader": "^2.0.2"
-          }
-        },
-        "conventional-changelog-angular": {
-          "version": "5.0.3",
-          "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz",
-          "integrity": "sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA==",
-          "dev": true,
-          "requires": {
-            "compare-func": "^1.3.1",
-            "q": "^1.5.1"
-          }
-        },
-        "conventional-changelog-atom": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.1.tgz",
-          "integrity": "sha512-9BniJa4gLwL20Sm7HWSNXd0gd9c5qo49gCi8nylLFpqAHhkFTj7NQfROq3f1VpffRtzfTQp4VKU5nxbe2v+eZQ==",
-          "dev": true,
-          "requires": {
-            "q": "^1.5.1"
-          }
-        },
-        "conventional-changelog-codemirror": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.1.tgz",
-          "integrity": "sha512-23kT5IZWa+oNoUaDUzVXMYn60MCdOygTA2I+UjnOMiYVhZgmVwNd6ri/yDlmQGXHqbKhNR5NoXdBzSOSGxsgIQ==",
-          "dev": true,
-          "requires": {
-            "q": "^1.5.1"
-          }
-        },
-        "conventional-changelog-core": {
-          "version": "3.1.6",
-          "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.1.6.tgz",
-          "integrity": "sha512-5teTAZOtJ4HLR6384h50nPAaKdDr+IaU0rnD2Gg2C3MS7hKsEPH8pZxrDNqam9eOSPQg9tET6uZY79zzgSz+ig==",
-          "dev": true,
-          "requires": {
-            "conventional-changelog-writer": "^4.0.3",
-            "conventional-commits-parser": "^3.0.1",
-            "dateformat": "^3.0.0",
-            "get-pkg-repo": "^1.0.0",
-            "git-raw-commits": "2.0.0",
-            "git-remote-origin-url": "^2.0.0",
-            "git-semver-tags": "^2.0.2",
-            "lodash": "^4.2.1",
-            "normalize-package-data": "^2.3.5",
-            "q": "^1.5.1",
-            "read-pkg": "^3.0.0",
-            "read-pkg-up": "^3.0.0",
-            "through2": "^2.0.0"
-          }
-        },
-        "conventional-changelog-ember": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.2.tgz",
-          "integrity": "sha512-qtZbA3XefO/n6DDmkYywDYi6wDKNNc98MMl2F9PKSaheJ25Trpi3336W8fDlBhq0X+EJRuseceAdKLEMmuX2tg==",
-          "dev": true,
-          "requires": {
-            "q": "^1.5.1"
-          }
-        },
-        "conventional-changelog-eslint": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.1.tgz",
-          "integrity": "sha512-yH3+bYrtvgKxSFChUBQnKNh9/U9kN2JElYBm253VpYs5wXhPHVc9ENcuVGWijh24nnOkei7wEJmnmUzgZ4ok+A==",
-          "dev": true,
-          "requires": {
-            "q": "^1.5.1"
-          }
-        },
-        "conventional-changelog-express": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.1.tgz",
-          "integrity": "sha512-G6uCuCaQhLxdb4eEfAIHpcfcJ2+ao3hJkbLrw/jSK/eROeNfnxCJasaWdDAfFkxsbpzvQT4W01iSynU3OoPLIw==",
-          "dev": true,
-          "requires": {
-            "q": "^1.5.1"
-          }
-        },
-        "conventional-changelog-jquery": {
-          "version": "3.0.4",
-          "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.4.tgz",
-          "integrity": "sha512-IVJGI3MseYoY6eybknnTf9WzeQIKZv7aNTm2KQsiFVJH21bfP2q7XVjfoMibdCg95GmgeFlaygMdeoDDa+ZbEQ==",
-          "dev": true,
-          "requires": {
-            "q": "^1.5.1"
-          }
-        },
-        "conventional-changelog-jshint": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.1.tgz",
-          "integrity": "sha512-kRFJsCOZzPFm2tzRHULWP4tauGMvccOlXYf3zGeuSW4U0mZhk5NsjnRZ7xFWrTFPlCLV+PNmHMuXp5atdoZmEg==",
-          "dev": true,
-          "requires": {
-            "compare-func": "^1.3.1",
-            "q": "^1.5.1"
-          }
-        },
-        "conventional-changelog-preset-loader": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.2.tgz",
-          "integrity": "sha512-pBY+qnUoJPXAXXqVGwQaVmcye05xi6z231QM98wHWamGAmu/ghkBprQAwmF5bdmyobdVxiLhPY3PrCfSeUNzRQ==",
-          "dev": true
-        },
-        "conventional-changelog-writer": {
-          "version": "4.0.3",
-          "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.3.tgz",
-          "integrity": "sha512-bIlpSiQtQZ1+nDVHEEh798Erj2jhN/wEjyw9sfxY9es6h7pREE5BNJjfv0hXGH/FTrAsEpHUq4xzK99eePpwuA==",
-          "dev": true,
-          "requires": {
-            "compare-func": "^1.3.1",
-            "conventional-commits-filter": "^2.0.1",
-            "dateformat": "^3.0.0",
-            "handlebars": "^4.1.0",
-            "json-stringify-safe": "^5.0.1",
-            "lodash": "^4.2.1",
-            "meow": "^4.0.0",
-            "semver": "^5.5.0",
-            "split": "^1.0.0",
-            "through2": "^2.0.0"
-          }
-        },
-        "conventional-commits-filter": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz",
-          "integrity": "sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A==",
-          "dev": true,
-          "requires": {
-            "is-subset": "^0.1.1",
-            "modify-values": "^1.0.0"
-          }
-        },
-        "conventional-commits-parser": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz",
-          "integrity": "sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg==",
-          "dev": true,
-          "requires": {
-            "JSONStream": "^1.0.4",
-            "is-text-path": "^1.0.0",
-            "lodash": "^4.2.1",
-            "meow": "^4.0.0",
-            "split2": "^2.0.0",
-            "through2": "^2.0.0",
-            "trim-off-newlines": "^1.0.0"
-          }
-        },
-        "detect-indent": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz",
-          "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=",
-          "dev": true
-        },
-        "find-up": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
-          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
-          "dev": true,
-          "requires": {
-            "locate-path": "^2.0.0"
-          }
-        },
-        "git-semver-tags": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.2.tgz",
-          "integrity": "sha512-34lMF7Yo1xEmsK2EkbArdoU79umpvm0MfzaDkSNYSJqtM5QLAVTPWgpiXSVI5o/O9EvZPSrP4Zvnec/CqhSd5w==",
-          "dev": true,
-          "requires": {
-            "meow": "^4.0.0",
-            "semver": "^5.5.0"
-          }
-        },
-        "handlebars": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.1.tgz",
-          "integrity": "sha512-3Zhi6C0euYZL5sM0Zcy7lInLXKQ+YLcF/olbN010mzGQ4XVm50JeyBnMqofHh696GrciGruC7kCcApPDJvVgwA==",
-          "dev": true,
-          "requires": {
-            "neo-async": "^2.6.0",
-            "optimist": "^0.6.1",
-            "source-map": "^0.6.1",
-            "uglify-js": "^3.1.4"
-          }
-        },
-        "locate-path": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
-          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
-          "dev": true,
-          "requires": {
-            "p-locate": "^2.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "p-limit": {
-          "version": "1.3.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
-          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
-          "dev": true,
-          "requires": {
-            "p-try": "^1.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
-          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
-          "dev": true,
-          "requires": {
-            "p-limit": "^1.1.0"
-          }
-        },
-        "p-try": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
-          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
-          "dev": true
-        },
-        "read-pkg": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
-          "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
-          "dev": true,
-          "requires": {
-            "load-json-file": "^4.0.0",
-            "normalize-package-data": "^2.3.2",
-            "path-type": "^3.0.0"
-          }
-        },
-        "read-pkg-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
-          "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
-          "dev": true,
-          "requires": {
-            "find-up": "^2.0.0",
-            "read-pkg": "^3.0.0"
-          }
-        }
-      }
-    },
-    "static-extend": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
-      "dev": true,
-      "requires": {
-        "define-property": "^0.2.5",
-        "object-copy": "^0.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
-      }
-    },
-    "statuses": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
-      "dev": true
-    },
-    "stealthy-require": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
-      "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
-      "dev": true
-    },
-    "streamroller": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz",
-      "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==",
-      "dev": true,
-      "requires": {
-        "date-format": "^1.2.0",
-        "debug": "^3.1.0",
-        "mkdirp": "^0.5.1",
-        "readable-stream": "^2.3.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.6",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
-          "dev": true
-        }
-      }
-    },
-    "string-width": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-      "dev": true,
-      "requires": {
-        "is-fullwidth-code-point": "^2.0.0",
-        "strip-ansi": "^4.0.0"
-      }
-    },
-    "string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "stringify-package": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.0.tgz",
-      "integrity": "sha512-JIQqiWmLiEozOC0b0BtxZ/AOUtdUZHCBPgqIZ2kSJJqGwgb9neo44XdTHUC4HZSGqi03hOeB7W/E8rAlKnGe9g==",
-      "dev": true
-    },
-    "strip-ansi": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-      "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^3.0.0"
-      }
-    },
-    "strip-bom": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-      "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
-      "dev": true
-    },
-    "strip-eof": {
-      "version": "1.0.0",
-      "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
-      "dev": true
-    },
-    "strip-indent": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
-      "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
-      "dev": true
-    },
-    "supports-color": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
-      "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
-      "dev": true,
-      "requires": {
-        "has-flag": "^2.0.0"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
-          "dev": true
-        }
-      }
-    },
-    "symbol-tree": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
-      "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=",
-      "dev": true
-    },
-    "systemjs": {
-      "version": "0.19.46",
-      "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.46.tgz",
-      "integrity": "sha1-wEV0szNfBSoOPHoA7kGIxuTB444=",
-      "dev": true,
-      "requires": {
-        "when": "^3.7.5"
-      }
-    },
-    "systemjs-builder": {
-      "version": "0.15.36",
-      "resolved": "https://registry.npmjs.org/systemjs-builder/-/systemjs-builder-0.15.36.tgz",
-      "integrity": "sha1-MLAjctQifPN4gPWA/mfLTtt/FCA=",
-      "dev": true,
-      "requires": {
-        "babel-core": "^6.9.0",
-        "babel-plugin-transform-cjs-system-wrapper": "^0.3.0",
-        "babel-plugin-transform-es2015-modules-systemjs": "^6.6.5",
-        "babel-plugin-transform-global-system-wrapper": "0.0.1",
-        "babel-plugin-transform-system-register": "0.0.1",
-        "bluebird": "^3.3.4",
-        "data-uri-to-buffer": "0.0.4",
-        "es6-template-strings": "^2.0.0",
-        "glob": "^7.0.3",
-        "mkdirp": "^0.5.1",
-        "rollup": "^0.36.3",
-        "source-map": "^0.5.3",
-        "systemjs": "^0.19.43",
-        "traceur": "0.0.105",
-        "uglify-js": "~2.7.5"
-      },
-      "dependencies": {
-        "async": {
-          "version": "0.2.10",
-          "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
-          "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
-          "dev": true
-        },
-        "camelcase": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
-          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
-          "dev": true
-        },
-        "cliui": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
-          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
-          "dev": true,
-          "requires": {
-            "center-align": "^0.1.1",
-            "right-align": "^0.1.1",
-            "wordwrap": "0.0.2"
-          }
-        },
-        "decamelize": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-          "dev": true
-        },
-        "rollup": {
-          "version": "0.36.4",
-          "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.36.4.tgz",
-          "integrity": "sha1-oiRJTFOGwdc9OPe7hvafXrARo9I=",
-          "dev": true,
-          "requires": {
-            "source-map-support": "^0.4.0"
-          }
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-          "dev": true
-        },
-        "uglify-js": {
-          "version": "2.7.5",
-          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz",
-          "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=",
-          "dev": true,
-          "requires": {
-            "async": "~0.2.6",
-            "source-map": "~0.5.1",
-            "uglify-to-browserify": "~1.0.0",
-            "yargs": "~3.10.0"
-          }
-        },
-        "wordwrap": {
-          "version": "0.0.2",
-          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
-          "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
-          "dev": true
-        },
-        "yargs": {
-          "version": "3.10.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
-          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
-          "dev": true,
-          "requires": {
-            "camelcase": "^1.0.2",
-            "cliui": "^2.1.0",
-            "decamelize": "^1.0.0",
-            "window-size": "0.1.0"
-          }
-        }
-      }
-    },
-    "tar": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
-      "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
-      "dev": true,
-      "requires": {
-        "block-stream": "*",
-        "fstream": "^1.0.2",
-        "inherits": "2"
-      }
-    },
-    "tempfile": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz",
-      "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=",
-      "dev": true,
-      "requires": {
-        "os-tmpdir": "^1.0.0",
-        "uuid": "^2.0.1"
-      },
-      "dependencies": {
-        "uuid": {
-          "version": "2.0.3",
-          "resolved": "http://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
-          "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
-          "dev": true
-        }
-      }
-    },
-    "text-extensions": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
-      "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
-      "dev": true
-    },
-    "through": {
-      "version": "2.3.8",
-      "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
-      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
-      "dev": true
-    },
-    "through2": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
-      "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
-      "dev": true,
-      "requires": {
-        "readable-stream": "^2.1.5",
-        "xtend": "~4.0.1"
-      }
-    },
-    "tmp": {
-      "version": "0.0.33",
-      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
-      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
-      "dev": true,
-      "requires": {
-        "os-tmpdir": "~1.0.2"
-      }
-    },
-    "to-array": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
-      "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
-      "dev": true
-    },
-    "to-fast-properties": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
-      "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
-      "dev": true
-    },
-    "to-object-path": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "to-regex": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
-      "dev": true,
-      "requires": {
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "regex-not": "^1.0.2",
-        "safe-regex": "^1.1.0"
-      }
-    },
-    "to-regex-range": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-      "dev": true,
-      "requires": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
-      }
-    },
-    "tough-cookie": {
-      "version": "2.4.3",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
-      "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
-      "dev": true,
-      "requires": {
-        "psl": "^1.1.24",
-        "punycode": "^1.4.1"
-      }
-    },
-    "tr46": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
-      "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
-      "dev": true,
-      "requires": {
-        "punycode": "^2.1.0"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-          "dev": true
-        }
-      }
-    },
-    "traceur": {
-      "version": "0.0.105",
-      "resolved": "https://registry.npmjs.org/traceur/-/traceur-0.0.105.tgz",
-      "integrity": "sha1-XPne6D1rd4YcPWxE1ThZrterBHk=",
-      "dev": true,
-      "requires": {
-        "commander": "2.9.x",
-        "glob": "5.0.x",
-        "rsvp": "^3.0.13",
-        "semver": "^4.3.3",
-        "source-map-support": "~0.2.8"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "2.9.0",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
-          "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
-          "dev": true,
-          "requires": {
-            "graceful-readlink": ">= 1.0.0"
-          }
-        },
-        "glob": {
-          "version": "5.0.15",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
-          "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
-          "dev": true,
-          "requires": {
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "2 || 3",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "semver": {
-          "version": "4.3.6",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
-          "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.1.32",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz",
-          "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=",
-          "dev": true,
-          "requires": {
-            "amdefine": ">=0.0.4"
-          }
-        },
-        "source-map-support": {
-          "version": "0.2.10",
-          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz",
-          "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=",
-          "dev": true,
-          "requires": {
-            "source-map": "0.1.32"
-          }
-        }
-      }
-    },
-    "tree-kill": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz",
-      "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==",
-      "dev": true
-    },
-    "trim-newlines": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
-      "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
-      "dev": true
-    },
-    "trim-off-newlines": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz",
-      "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=",
-      "dev": true
-    },
-    "trim-right": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
-      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
-      "dev": true
-    },
-    "tslib": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
-      "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
-      "dev": true
-    },
-    "tslint": {
-      "version": "5.11.0",
-      "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz",
-      "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=",
-      "dev": true,
-      "requires": {
-        "babel-code-frame": "^6.22.0",
-        "builtin-modules": "^1.1.1",
-        "chalk": "^2.3.0",
-        "commander": "^2.12.1",
-        "diff": "^3.2.0",
-        "glob": "^7.1.1",
-        "js-yaml": "^3.7.0",
-        "minimatch": "^3.0.4",
-        "resolve": "^1.3.2",
-        "semver": "^5.3.0",
-        "tslib": "^1.8.0",
-        "tsutils": "^2.27.2"
-      }
-    },
-    "tsutils": {
-      "version": "2.29.0",
-      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
-      "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
-      "dev": true,
-      "requires": {
-        "tslib": "^1.8.1"
-      }
-    },
-    "tunnel-agent": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "tweetnacl": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
-      "dev": true
-    },
-    "type-check": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
-      "dev": true,
-      "requires": {
-        "prelude-ls": "~1.1.2"
-      }
-    },
-    "type-is": {
-      "version": "1.6.16",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
-      "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
-      "dev": true,
-      "requires": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.18"
-      }
-    },
-    "typedarray": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
-      "dev": true
-    },
-    "typedoc": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.12.0.tgz",
-      "integrity": "sha512-dsdlaYZ7Je8JC+jQ3j2Iroe4uyD0GhqzADNUVyBRgLuytQDP/g0dPkAw5PdM/4drnmmJjRzSWW97FkKo+ITqQg==",
-      "dev": true,
-      "requires": {
-        "@types/fs-extra": "^5.0.3",
-        "@types/handlebars": "^4.0.38",
-        "@types/highlight.js": "^9.12.3",
-        "@types/lodash": "^4.14.110",
-        "@types/marked": "^0.4.0",
-        "@types/minimatch": "3.0.3",
-        "@types/shelljs": "^0.8.0",
-        "fs-extra": "^7.0.0",
-        "handlebars": "^4.0.6",
-        "highlight.js": "^9.0.0",
-        "lodash": "^4.17.10",
-        "marked": "^0.4.0",
-        "minimatch": "^3.0.0",
-        "progress": "^2.0.0",
-        "shelljs": "^0.8.2",
-        "typedoc-default-themes": "^0.5.0",
-        "typescript": "3.0.x"
-      },
-      "dependencies": {
-        "lodash": {
-          "version": "4.17.11",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
-          "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
-          "dev": true
-        },
-        "typescript": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.3.tgz",
-          "integrity": "sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg==",
-          "dev": true
-        }
-      }
-    },
-    "typedoc-default-themes": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.5.0.tgz",
-      "integrity": "sha1-bcJDPnjti+qOiHo6zeLzF4W9Yic=",
-      "dev": true
-    },
-    "typescript": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
-      "integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==",
-      "dev": true
-    },
-    "uglify-js": {
-      "version": "3.4.9",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
-      "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "commander": "~2.17.1",
-        "source-map": "~0.6.1"
-      }
-    },
-    "uglify-to-browserify": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
-      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
-      "dev": true
-    },
-    "ultron": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
-      "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==",
-      "dev": true
-    },
-    "unc-path-regex": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
-      "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
-      "dev": true
-    },
-    "union-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
-      "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
-      "dev": true,
-      "requires": {
-        "arr-union": "^3.1.0",
-        "get-value": "^2.0.6",
-        "is-extendable": "^0.1.1",
-        "set-value": "^0.4.3"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "set-value": {
-          "version": "0.4.3",
-          "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
-          "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-extendable": "^0.1.1",
-            "is-plain-object": "^2.0.1",
-            "to-object-path": "^0.3.0"
-          }
-        }
-      }
-    },
-    "universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
-      "dev": true
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
-      "dev": true
-    },
-    "unset-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
-      "dev": true,
-      "requires": {
-        "has-value": "^0.3.1",
-        "isobject": "^3.0.0"
-      },
-      "dependencies": {
-        "has-value": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
-          "dev": true,
-          "requires": {
-            "get-value": "^2.0.3",
-            "has-values": "^0.1.4",
-            "isobject": "^2.0.0"
-          },
-          "dependencies": {
-            "isobject": {
-              "version": "2.1.0",
-              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-              "dev": true,
-              "requires": {
-                "isarray": "1.0.0"
-              }
-            }
-          }
-        },
-        "has-values": {
-          "version": "0.1.4",
-          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
-          "dev": true
-        }
-      }
-    },
-    "upath": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
-      "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
-      "dev": true
-    },
-    "urix": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
-      "dev": true
-    },
-    "use": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
-      "dev": true
-    },
-    "useragent": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz",
-      "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=",
-      "dev": true,
-      "requires": {
-        "lru-cache": "2.2.x",
-        "tmp": "0.0.x"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "2.2.4",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
-          "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=",
-          "dev": true
-        }
-      }
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-      "dev": true
-    },
-    "utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
-      "dev": true
-    },
-    "uuid": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
-      "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
-      "dev": true
-    },
-    "validate-npm-package-license": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-      "dev": true,
-      "requires": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
-    "verror": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0",
-        "core-util-is": "1.0.2",
-        "extsprintf": "^1.2.0"
-      }
-    },
-    "void-elements": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
-      "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
-      "dev": true
-    },
-    "webidl-conversions": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
-      "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
-      "dev": true
-    },
-    "whatwg-encoding": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
-      "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
-      "dev": true,
-      "requires": {
-        "iconv-lite": "0.4.24"
-      }
-    },
-    "whatwg-url": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz",
-      "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==",
-      "dev": true,
-      "requires": {
-        "lodash.sortby": "^4.7.0",
-        "tr46": "^1.0.1",
-        "webidl-conversions": "^4.0.2"
-      }
-    },
-    "when": {
-      "version": "3.7.8",
-      "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
-      "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=",
-      "dev": true
-    },
-    "which": {
-      "version": "1.2.14",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
-      "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
-      "dev": true,
-      "requires": {
-        "isexe": "^2.0.0"
-      }
-    },
-    "which-module": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
-      "dev": true
-    },
-    "window-size": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
-      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
-      "dev": true
-    },
-    "wordwrap": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
-      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
-      "dev": true
-    },
-    "wrap-ansi": {
-      "version": "2.1.0",
-      "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
-      "dev": true,
-      "requires": {
-        "string-width": "^1.0.1",
-        "strip-ansi": "^3.0.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-          "dev": true,
-          "requires": {
-            "number-is-nan": "^1.0.0"
-          }
-        },
-        "string-width": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-          "dev": true,
-          "requires": {
-            "code-point-at": "^1.0.0",
-            "is-fullwidth-code-point": "^1.0.0",
-            "strip-ansi": "^3.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        }
-      }
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
-      "dev": true
-    },
-    "ws": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
-      "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
-      "dev": true,
-      "requires": {
-        "async-limiter": "~1.0.0",
-        "safe-buffer": "~5.1.0",
-        "ultron": "~1.1.0"
-      }
-    },
-    "xml-name-validator": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz",
-      "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=",
-      "dev": true
-    },
-    "xmlhttprequest-ssl": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
-      "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=",
-      "dev": true
-    },
-    "xregexp": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz",
-      "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==",
-      "dev": true
-    },
-    "xtend": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
-      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
-      "dev": true
-    },
-    "y18n": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
-      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
-      "dev": true
-    },
-    "yallist": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
-      "dev": true
-    },
-    "yargs": {
-      "version": "12.0.2",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
-      "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
-      "dev": true,
-      "requires": {
-        "cliui": "^4.0.0",
-        "decamelize": "^2.0.0",
-        "find-up": "^3.0.0",
-        "get-caller-file": "^1.0.1",
-        "os-locale": "^3.0.0",
-        "require-directory": "^2.1.1",
-        "require-main-filename": "^1.0.1",
-        "set-blocking": "^2.0.0",
-        "string-width": "^2.0.0",
-        "which-module": "^2.0.0",
-        "y18n": "^3.2.1 || ^4.0.0",
-        "yargs-parser": "^10.1.0"
-      }
-    },
-    "yargs-parser": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
-      "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
-      "dev": true,
-      "requires": {
-        "camelcase": "^4.1.0"
-      }
-    },
-    "yauzl": {
-      "version": "2.10.0",
-      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
-      "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
-      "dev": true,
-      "requires": {
-        "buffer-crc32": "~0.2.3",
-        "fd-slicer": "~1.1.0"
-      }
-    },
-    "yeast": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
-      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
-      "dev": true
-    }
-  }
-}
+{
+  "name": "aurelia-dependency-injection",
+  "version": "1.5.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@types/estree": {
+      "version": "0.0.39",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
+      "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+      "dev": true
+    },
+    "@types/events": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
+      "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==",
+      "dev": true
+    },
+    "@types/fs-extra": {
+      "version": "5.0.4",
+      "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.4.tgz",
+      "integrity": "sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@types/glob": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
+      "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
+      "dev": true,
+      "requires": {
+        "@types/events": "*",
+        "@types/minimatch": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/handlebars": {
+      "version": "4.0.39",
+      "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.0.39.tgz",
+      "integrity": "sha512-vjaS7Q0dVqFp85QhyPSZqDKnTTCemcSHNHFvDdalO1s0Ifz5KuE64jQD5xoUkfdWwF4WpqdJEl7LsWH8rzhKJA==",
+      "dev": true
+    },
+    "@types/highlight.js": {
+      "version": "9.12.3",
+      "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.12.3.tgz",
+      "integrity": "sha512-pGF/zvYOACZ/gLGWdQH8zSwteQS1epp68yRcVLJMgUck/MjEn/FBYmPub9pXT8C1e4a8YZfHo1CKyV8q1vKUnQ==",
+      "dev": true
+    },
+    "@types/jsdom": {
+      "version": "12.2.0",
+      "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-12.2.0.tgz",
+      "integrity": "sha512-8LQPkE7S3IuuJyHOIghXf+AjpcfhleEG63z9pveKFJ+Aqu9h/PXefU4gF6PSvCyOeNzlfFjMWO1Vtctowq2jRg==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*",
+        "@types/tough-cookie": "*",
+        "parse5": "^4.0.0"
+      },
+      "dependencies": {
+        "parse5": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
+          "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
+          "dev": true
+        }
+      }
+    },
+    "@types/lodash": {
+      "version": "4.14.117",
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.117.tgz",
+      "integrity": "sha512-xyf2m6tRbz8qQKcxYZa7PA4SllYcay+eh25DN3jmNYY6gSTL7Htc/bttVdkqj2wfJGbeWlQiX8pIyJpKU+tubw==",
+      "dev": true
+    },
+    "@types/marked": {
+      "version": "0.4.2",
+      "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.4.2.tgz",
+      "integrity": "sha512-cDB930/7MbzaGF6U3IwSQp6XBru8xWajF5PV2YZZeV8DyiliTuld11afVztGI9+yJZ29il5E+NpGA6ooV/Cjkg==",
+      "dev": true
+    },
+    "@types/minimatch": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+      "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+      "dev": true
+    },
+    "@types/node": {
+      "version": "8.9.5",
+      "resolved": "http://registry.npmjs.org/@types/node/-/node-8.9.5.tgz",
+      "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==",
+      "dev": true
+    },
+    "@types/shelljs": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.0.tgz",
+      "integrity": "sha512-vs1hCC8RxLHRu2bwumNyYRNrU3o8BtZhLysH5A4I98iYmA2APl6R3uNQb5ihl+WiwH0xdC9LLO+vRrXLs/Kyxg==",
+      "dev": true,
+      "requires": {
+        "@types/glob": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/tough-cookie": {
+      "version": "2.3.4",
+      "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.4.tgz",
+      "integrity": "sha512-Set5ZdrAaKI/qHdFlVMgm/GsAv/wkXhSTuZFkJ+JI7HK+wIkIlOaUXSXieIvJ0+OvGIqtREFoE+NHJtEq0gtEw==",
+      "dev": true
+    },
+    "JSONStream": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
+      "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
+      "dev": true,
+      "requires": {
+        "jsonparse": "^1.2.0",
+        "through": ">=2.2.7 <3"
+      }
+    },
+    "abab": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
+      "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+      "dev": true
+    },
+    "accepts": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+      "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+      "dev": true,
+      "requires": {
+        "mime-types": "~2.1.18",
+        "negotiator": "0.6.1"
+      }
+    },
+    "acorn": {
+      "version": "5.7.3",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+      "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+      "dev": true
+    },
+    "acorn-globals": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz",
+      "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==",
+      "dev": true,
+      "requires": {
+        "acorn": "^6.0.1",
+        "acorn-walk": "^6.0.1"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.2.tgz",
+          "integrity": "sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg==",
+          "dev": true
+        }
+      }
+    },
+    "acorn-walk": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.0.tgz",
+      "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==",
+      "dev": true
+    },
+    "add-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
+      "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=",
+      "dev": true
+    },
+    "after": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
+      "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
+      "dev": true
+    },
+    "ajv": {
+      "version": "5.5.2",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+      "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+      "dev": true,
+      "requires": {
+        "co": "^4.6.0",
+        "fast-deep-equal": "^1.0.0",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.3.0"
+      }
+    },
+    "align-text": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2",
+        "longest": "^1.0.1",
+        "repeat-string": "^1.5.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "amdefine": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+      "dev": true
+    },
+    "ansi-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+      "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "anymatch": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+      "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+      "dev": true,
+      "requires": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      }
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "arr-diff": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+      "dev": true
+    },
+    "arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+      "dev": true
+    },
+    "arr-union": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+      "dev": true
+    },
+    "array-each": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+      "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
+      "dev": true
+    },
+    "array-equal": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
+      "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
+      "dev": true
+    },
+    "array-find-index": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+      "dev": true
+    },
+    "array-ify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
+      "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
+      "dev": true
+    },
+    "array-slice": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+      "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
+      "dev": true
+    },
+    "array-unique": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+      "dev": true
+    },
+    "arraybuffer.slice": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
+      "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==",
+      "dev": true
+    },
+    "arrify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+      "dev": true
+    },
+    "asn1": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+      "dev": true,
+      "requires": {
+        "safer-buffer": "~2.1.0"
+      }
+    },
+    "assert-plus": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+      "dev": true
+    },
+    "assign-symbols": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+      "dev": true
+    },
+    "async": {
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+      "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.10"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "4.17.11",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+          "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+          "dev": true
+        }
+      }
+    },
+    "async-each": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+      "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+      "dev": true
+    },
+    "async-limiter": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
+      "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
+      "dev": true
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+      "dev": true
+    },
+    "atob": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+      "dev": true
+    },
+    "aurelia-binding": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/aurelia-binding/-/aurelia-binding-2.1.6.tgz",
+      "integrity": "sha512-M/za0p+LIEv0lLhJqzIIxufGbwVDMKDTuICiZ9hXFVrsTruT18axFWKW4OOuen3rpxTmhrzWCtukn5YxYG95XQ==",
+      "dev": true,
+      "requires": {
+        "aurelia-logging": "^1.0.0",
+        "aurelia-metadata": "^1.0.0",
+        "aurelia-pal": "^1.0.0",
+        "aurelia-task-queue": "^1.0.0"
+      }
+    },
+    "aurelia-bootstrapper": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/aurelia-bootstrapper/-/aurelia-bootstrapper-2.3.0.tgz",
+      "integrity": "sha512-JQ0yo5EbdoMPGQkeeNr2COMeOniZErb7cqLSKKjOdJ9SxYAfQDfbN4cF60NlOW6dJ3nR94ZpKXKjed2yF6nTVQ==",
+      "dev": true,
+      "requires": {
+        "aurelia-event-aggregator": "^1.0.0",
+        "aurelia-framework": "^1.3.0",
+        "aurelia-history": "^1.1.0",
+        "aurelia-history-browser": "^1.1.0",
+        "aurelia-loader-default": "^1.0.0",
+        "aurelia-logging-console": "^1.0.0",
+        "aurelia-pal": "^1.3.0",
+        "aurelia-pal-browser": "^1.0.0",
+        "aurelia-polyfills": "^1.0.0",
+        "aurelia-router": "^1.5.0",
+        "aurelia-templating": "^1.8.1",
+        "aurelia-templating-binding": "^1.0.0",
+        "aurelia-templating-resources": "^1.7.0",
+        "aurelia-templating-router": "^1.0.0"
+      }
+    },
+    "aurelia-dependency-injection": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/aurelia-dependency-injection/-/aurelia-dependency-injection-1.4.1.tgz",
+      "integrity": "sha512-NexdxbXQKVhg8ywHosauccKbnn3vAeLyNg3oPa0l+z1fgOMf3/jvVYpcdmWelJP5yfBmYNyTYVBffCKeaS2m0w==",
+      "dev": true,
+      "requires": {
+        "aurelia-metadata": "^1.0.0",
+        "aurelia-pal": "^1.0.0"
+      }
+    },
+    "aurelia-event-aggregator": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/aurelia-event-aggregator/-/aurelia-event-aggregator-1.0.1.tgz",
+      "integrity": "sha1-nXx8Hh7+HvOnh4Xnar6AYB4tNMg=",
+      "dev": true,
+      "requires": {
+        "aurelia-logging": "^1.0.0"
+      }
+    },
+    "aurelia-framework": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/aurelia-framework/-/aurelia-framework-1.3.0.tgz",
+      "integrity": "sha512-yuKdy3LQx0tN/2CMKM8KTBcVLCeAcmcjXyEgWmRUlxJHCBAIT63ECrjkRWYkUzRNz8EQ0qnuH4jLUaWykXgJwg==",
+      "dev": true,
+      "requires": {
+        "aurelia-binding": "^2.0.0",
+        "aurelia-dependency-injection": "^1.0.0",
+        "aurelia-loader": "^1.0.0",
+        "aurelia-logging": "^1.0.0",
+        "aurelia-metadata": "^1.0.0",
+        "aurelia-pal": "^1.0.0",
+        "aurelia-path": "^1.0.0",
+        "aurelia-task-queue": "^1.0.0",
+        "aurelia-templating": "^1.8.1"
+      }
+    },
+    "aurelia-history": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/aurelia-history/-/aurelia-history-1.1.0.tgz",
+      "integrity": "sha1-d5qjhtVoA6qkvbfXFDWld2hQX1c=",
+      "dev": true
+    },
+    "aurelia-history-browser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/aurelia-history-browser/-/aurelia-history-browser-1.2.0.tgz",
+      "integrity": "sha512-3sAHq1xVX3fx8tyDb1LookueTRddB+hPVyfCVFR5Az2MbAfiovxXTzU6EX4VsOcuMweuER26NW4FTCgTA+sTuQ==",
+      "dev": true,
+      "requires": {
+        "aurelia-history": "^1.0.0",
+        "aurelia-pal": "^1.0.0"
+      }
+    },
+    "aurelia-loader": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/aurelia-loader/-/aurelia-loader-1.0.0.tgz",
+      "integrity": "sha1-t4wqKBOqjkQSRyN91m/WLl1OGeo=",
+      "dev": true,
+      "requires": {
+        "aurelia-metadata": "^1.0.0",
+        "aurelia-path": "^1.0.0"
+      }
+    },
+    "aurelia-loader-default": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/aurelia-loader-default/-/aurelia-loader-default-1.0.4.tgz",
+      "integrity": "sha512-xHo8Qb/xpl/ncKJcPGN3h2WHVwjNtNEqZZn7APc+AT/AZMSr9zubWorPmYBp3b3mZp27lEhcIttL0NKJnHcYSg==",
+      "dev": true,
+      "requires": {
+        "aurelia-loader": "^1.0.0",
+        "aurelia-metadata": "^1.0.0",
+        "aurelia-pal": "^1.0.0"
+      }
+    },
+    "aurelia-logging": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/aurelia-logging/-/aurelia-logging-1.5.0.tgz",
+      "integrity": "sha512-u9Hhoj3yDHthKgTyj2svr7PaO41e2WFM2dSITxzOMzW8dC9hGVsIo9Hl6cereTP4+GMfMMQF5ZFp6Kfg87Ov0Q==",
+      "dev": true
+    },
+    "aurelia-logging-console": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/aurelia-logging-console/-/aurelia-logging-console-1.0.0.tgz",
+      "integrity": "sha1-7fdQepf8aLQFE6F8Z31wQUEBrbQ=",
+      "dev": true,
+      "requires": {
+        "aurelia-logging": "^1.0.0"
+      }
+    },
+    "aurelia-metadata": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/aurelia-metadata/-/aurelia-metadata-1.0.4.tgz",
+      "integrity": "sha512-9CgVH+kgrMIqWPAtdhhEJLoEPRMFz4RMsaLkYfYnK7LUCcOtZtPrOrAHCaU7jVa67JjGcsXkEqoN+xaTs0NL3g==",
+      "requires": {
+        "aurelia-pal": "^1.0.0"
+      }
+    },
+    "aurelia-pal": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/aurelia-pal/-/aurelia-pal-1.8.0.tgz",
+      "integrity": "sha512-Nc9S/JTUh1ErSUwg4INhgwBTe99ef8gYXZLjBnP4JJBmLcc/ChhOvj/dSRwluPkosggQgyj2pjla/9VAYHAXPg=="
+    },
+    "aurelia-pal-browser": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/aurelia-pal-browser/-/aurelia-pal-browser-1.8.0.tgz",
+      "integrity": "sha512-YcJyzMJ9I2NvUwac1Dcct5ZTL4NsNlB2MvLMKK5onTIlMI+azg8PSjM8OPRgms/h6cxUlKtzIiraq+KEmSqCuw==",
+      "dev": true,
+      "requires": {
+        "aurelia-pal": "^1.4.0"
+      }
+    },
+    "aurelia-pal-nodejs": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/aurelia-pal-nodejs/-/aurelia-pal-nodejs-1.2.0.tgz",
+      "integrity": "sha512-Ghca3sai7ju3Z5YVSmNDwKVn1dQ4nmDP+cirBlhL3N0PWf4+bE43g6dbVa91+muQ7HULZ23uGFVWTIM0s1OKBw==",
+      "dev": true,
+      "requires": {
+        "aurelia-pal": "^1.1.0",
+        "jsdom": "~11.5.1"
+      }
+    },
+    "aurelia-path": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/aurelia-path/-/aurelia-path-1.1.1.tgz",
+      "integrity": "sha1-yqnSC8hRWl+fKG2aOxjYGyyFsN0=",
+      "dev": true
+    },
+    "aurelia-polyfills": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/aurelia-polyfills/-/aurelia-polyfills-1.3.0.tgz",
+      "integrity": "sha1-iZ7ABR92qXHDFpNBJ57WLH859wc=",
+      "dev": true,
+      "requires": {
+        "aurelia-pal": "^1.0.0"
+      }
+    },
+    "aurelia-route-recognizer": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/aurelia-route-recognizer/-/aurelia-route-recognizer-1.2.0.tgz",
+      "integrity": "sha512-ABpfGBNclwWJik/DRSwJ5pUXAjMoD5mqGLMFbovroeWjdPQKonLh1G0BByngaWOdsIi3KrOglmktCFXqLn2jxg==",
+      "dev": true,
+      "requires": {
+        "aurelia-path": "^1.0.0"
+      }
+    },
+    "aurelia-router": {
+      "version": "1.6.3",
+      "resolved": "https://registry.npmjs.org/aurelia-router/-/aurelia-router-1.6.3.tgz",
+      "integrity": "sha512-6Dsr+8cSq4Bf61OOHhTQgkZvis4mhjqh1QbIKO7Ny+oRYdhnFjz1izHDYAosD52spXl/mVtlC1pJSg/ooAtHqA==",
+      "dev": true,
+      "requires": {
+        "aurelia-dependency-injection": "^1.0.0",
+        "aurelia-event-aggregator": "^1.0.0",
+        "aurelia-history": "^1.1.0",
+        "aurelia-logging": "^1.0.0",
+        "aurelia-path": "^1.0.0",
+        "aurelia-route-recognizer": "^1.2.0"
+      }
+    },
+    "aurelia-task-queue": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/aurelia-task-queue/-/aurelia-task-queue-1.3.1.tgz",
+      "integrity": "sha512-Eyto+EVcezwrY3qHZwBvueKb3j+e/lgKp2nNbX1y6KVJmoO9XzK/KctViprpn7ZFl9YGYjJ9s+zJM8nFlQUr1g==",
+      "dev": true,
+      "requires": {
+        "aurelia-pal": "^1.0.0"
+      }
+    },
+    "aurelia-templating": {
+      "version": "1.10.1",
+      "resolved": "https://registry.npmjs.org/aurelia-templating/-/aurelia-templating-1.10.1.tgz",
+      "integrity": "sha512-GDClZWk+32SUYMsEttRFE3+dIbzZeDf5vl9dvuO6ULe+erTUOq2TUf9pHknWZuzoXXdGSD2qQnk+AEZZWW3MOQ==",
+      "dev": true,
+      "requires": {
+        "aurelia-binding": "^2.0.0",
+        "aurelia-dependency-injection": "^1.0.0",
+        "aurelia-loader": "^1.0.0",
+        "aurelia-logging": "^1.0.0",
+        "aurelia-metadata": "^1.0.0",
+        "aurelia-pal": "^1.0.0",
+        "aurelia-path": "^1.0.0",
+        "aurelia-task-queue": "^1.1.0"
+      }
+    },
+    "aurelia-templating-binding": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/aurelia-templating-binding/-/aurelia-templating-binding-1.5.2.tgz",
+      "integrity": "sha512-G2zMZGse1n6o/pWjlvSmTevgXBq+ZapHWA9SlRyChoZOwz1/+wzPUF/0a+EqHpAB5cW/nqWCo9a53GRqmzLR1w==",
+      "dev": true,
+      "requires": {
+        "aurelia-binding": "^2.0.0",
+        "aurelia-logging": "^1.0.0",
+        "aurelia-templating": "^1.3.0"
+      }
+    },
+    "aurelia-templating-resources": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npmjs.org/aurelia-templating-resources/-/aurelia-templating-resources-1.7.1.tgz",
+      "integrity": "sha512-zLiy1a4ivnyzcnD9TPHY6jMF+pnoYpTC5riIWQXlRQOK/qsTBiojknhE64tgFAA9H/BxJfUkqCfqeWYVIartSA==",
+      "dev": true,
+      "requires": {
+        "aurelia-binding": "^2.0.0",
+        "aurelia-dependency-injection": "^1.0.0",
+        "aurelia-loader": "^1.0.0",
+        "aurelia-logging": "^1.0.0",
+        "aurelia-metadata": "^1.0.0",
+        "aurelia-pal": "^1.3.0",
+        "aurelia-path": "^1.0.0",
+        "aurelia-task-queue": "^1.0.0",
+        "aurelia-templating": "^1.8.1"
+      }
+    },
+    "aurelia-templating-router": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/aurelia-templating-router/-/aurelia-templating-router-1.3.3.tgz",
+      "integrity": "sha512-Bfl3QwXSJtyN5Q1kNgOn4vM+Q3aYrZ+lShumbhn349/TjHRUPz73CihJvdTQoMBYPV8CwEeZt2qgmrPc1MmQYA==",
+      "dev": true,
+      "requires": {
+        "aurelia-binding": "^2.0.0",
+        "aurelia-dependency-injection": "^1.0.0",
+        "aurelia-logging": "^1.0.0",
+        "aurelia-metadata": "^1.0.0",
+        "aurelia-pal": "^1.3.0",
+        "aurelia-path": "^1.0.0",
+        "aurelia-router": "^1.5.0",
+        "aurelia-templating": "^1.8.1"
+      }
+    },
+    "aurelia-testing": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/aurelia-testing/-/aurelia-testing-1.0.0.tgz",
+      "integrity": "sha512-eLzP7Run0PyN0l1YWQobr2H/OEd0zSPabPKcbMD9gAxfGEKpotTQFFEEhCXEJu9ykLWqjO1TARB5SqoXpfdfGg==",
+      "dev": true,
+      "requires": {
+        "aurelia-dependency-injection": "^1.0.0",
+        "aurelia-framework": "^1.0.0",
+        "aurelia-logging": "^1.0.0",
+        "aurelia-pal": "^1.0.0",
+        "aurelia-templating": "^1.0.0"
+      }
+    },
+    "aws-sign2": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+      "dev": true
+    },
+    "aws4": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+      "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
+      "dev": true
+    },
+    "babel-code-frame": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+      "dev": true,
+      "requires": {
+        "chalk": "^1.1.3",
+        "esutils": "^2.0.2",
+        "js-tokens": "^3.0.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        }
+      }
+    },
+    "babel-core": {
+      "version": "6.26.3",
+      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
+      "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
+      "dev": true,
+      "requires": {
+        "babel-code-frame": "^6.26.0",
+        "babel-generator": "^6.26.0",
+        "babel-helpers": "^6.24.1",
+        "babel-messages": "^6.23.0",
+        "babel-register": "^6.26.0",
+        "babel-runtime": "^6.26.0",
+        "babel-template": "^6.26.0",
+        "babel-traverse": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "babylon": "^6.18.0",
+        "convert-source-map": "^1.5.1",
+        "debug": "^2.6.9",
+        "json5": "^0.5.1",
+        "lodash": "^4.17.4",
+        "minimatch": "^3.0.4",
+        "path-is-absolute": "^1.0.1",
+        "private": "^0.1.8",
+        "slash": "^1.0.0",
+        "source-map": "^0.5.7"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        }
+      }
+    },
+    "babel-generator": {
+      "version": "6.26.1",
+      "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
+      "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
+      "dev": true,
+      "requires": {
+        "babel-messages": "^6.23.0",
+        "babel-runtime": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "detect-indent": "^4.0.0",
+        "jsesc": "^1.3.0",
+        "lodash": "^4.17.4",
+        "source-map": "^0.5.7",
+        "trim-right": "^1.0.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        }
+      }
+    },
+    "babel-helper-hoist-variables": {
+      "version": "6.24.1",
+      "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
+      "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
+      "dev": true,
+      "requires": {
+        "babel-runtime": "^6.22.0",
+        "babel-types": "^6.24.1"
+      }
+    },
+    "babel-helpers": {
+      "version": "6.24.1",
+      "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
+      "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
+      "dev": true,
+      "requires": {
+        "babel-runtime": "^6.22.0",
+        "babel-template": "^6.24.1"
+      }
+    },
+    "babel-messages": {
+      "version": "6.23.0",
+      "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+      "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+      "dev": true,
+      "requires": {
+        "babel-runtime": "^6.22.0"
+      }
+    },
+    "babel-plugin-transform-cjs-system-wrapper": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-cjs-system-wrapper/-/babel-plugin-transform-cjs-system-wrapper-0.3.0.tgz",
+      "integrity": "sha1-9XWfKb7NNW+qt69SyZzejnutCyE=",
+      "dev": true,
+      "requires": {
+        "babel-template": "^6.9.0"
+      }
+    },
+    "babel-plugin-transform-es2015-modules-systemjs": {
+      "version": "6.24.1",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
+      "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
+      "dev": true,
+      "requires": {
+        "babel-helper-hoist-variables": "^6.24.1",
+        "babel-runtime": "^6.22.0",
+        "babel-template": "^6.24.1"
+      }
+    },
+    "babel-plugin-transform-global-system-wrapper": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-global-system-wrapper/-/babel-plugin-transform-global-system-wrapper-0.0.1.tgz",
+      "integrity": "sha1-r7RpzsDgRom5/n6LH9KA/JSm2PI=",
+      "dev": true,
+      "requires": {
+        "babel-template": "^6.9.0"
+      }
+    },
+    "babel-plugin-transform-system-register": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-system-register/-/babel-plugin-transform-system-register-0.0.1.tgz",
+      "integrity": "sha1-nf9AOQwnY6xRjwsq18XqT2WlviU=",
+      "dev": true
+    },
+    "babel-register": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
+      "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
+      "dev": true,
+      "requires": {
+        "babel-core": "^6.26.0",
+        "babel-runtime": "^6.26.0",
+        "core-js": "^2.5.0",
+        "home-or-tmp": "^2.0.0",
+        "lodash": "^4.17.4",
+        "mkdirp": "^0.5.1",
+        "source-map-support": "^0.4.15"
+      }
+    },
+    "babel-runtime": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+      "dev": true,
+      "requires": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      }
+    },
+    "babel-template": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
+      "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+      "dev": true,
+      "requires": {
+        "babel-runtime": "^6.26.0",
+        "babel-traverse": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "babylon": "^6.18.0",
+        "lodash": "^4.17.4"
+      }
+    },
+    "babel-traverse": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+      "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+      "dev": true,
+      "requires": {
+        "babel-code-frame": "^6.26.0",
+        "babel-messages": "^6.23.0",
+        "babel-runtime": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "babylon": "^6.18.0",
+        "debug": "^2.6.8",
+        "globals": "^9.18.0",
+        "invariant": "^2.2.2",
+        "lodash": "^4.17.4"
+      }
+    },
+    "babel-types": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+      "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+      "dev": true,
+      "requires": {
+        "babel-runtime": "^6.26.0",
+        "esutils": "^2.0.2",
+        "lodash": "^4.17.4",
+        "to-fast-properties": "^1.0.3"
+      }
+    },
+    "babylon": {
+      "version": "6.18.0",
+      "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+      "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+      "dev": true
+    },
+    "backo2": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
+      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
+      "dev": true
+    },
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+      "dev": true
+    },
+    "base": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+      "dev": true,
+      "requires": {
+        "cache-base": "^1.0.1",
+        "class-utils": "^0.3.5",
+        "component-emitter": "^1.2.1",
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.1",
+        "mixin-deep": "^1.2.0",
+        "pascalcase": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "base64-arraybuffer": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
+      "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
+      "dev": true
+    },
+    "base64id": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
+      "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
+      "dev": true
+    },
+    "bcrypt-pbkdf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+      "dev": true,
+      "requires": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "better-assert": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
+      "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+      "dev": true,
+      "requires": {
+        "callsite": "1.0.0"
+      }
+    },
+    "binary-extensions": {
+      "version": "1.12.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
+      "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
+      "dev": true
+    },
+    "blob": {
+      "version": "0.0.4",
+      "resolved": "http://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
+      "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
+      "dev": true
+    },
+    "block-stream": {
+      "version": "0.0.9",
+      "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+      "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.0"
+      }
+    },
+    "bluebird": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz",
+      "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==",
+      "dev": true
+    },
+    "body-parser": {
+      "version": "1.18.3",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
+      "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
+      "dev": true,
+      "requires": {
+        "bytes": "3.0.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "~1.6.3",
+        "iconv-lite": "0.4.23",
+        "on-finished": "~2.3.0",
+        "qs": "6.5.2",
+        "raw-body": "2.3.3",
+        "type-is": "~1.6.16"
+      },
+      "dependencies": {
+        "iconv-lite": {
+          "version": "0.4.23",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
+          "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+          "dev": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3"
+          }
+        }
+      }
+    },
+    "brace-expansion": {
+      "version": "1.1.8",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+      "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+      "dev": true,
+      "requires": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "browser-process-hrtime": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
+      "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==",
+      "dev": true
+    },
+    "buffer-alloc": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+      "dev": true,
+      "requires": {
+        "buffer-alloc-unsafe": "^1.1.0",
+        "buffer-fill": "^1.0.0"
+      }
+    },
+    "buffer-alloc-unsafe": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+      "dev": true
+    },
+    "buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+      "dev": true
+    },
+    "buffer-fill": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+      "dev": true
+    },
+    "buffer-from": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+      "dev": true
+    },
+    "buffer-peek-stream": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/buffer-peek-stream/-/buffer-peek-stream-1.0.1.tgz",
+      "integrity": "sha1-U7R1cKE0d4fFutTKLKMCH52LPP0=",
+      "dev": true
+    },
+    "builtin-modules": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+      "dev": true
+    },
+    "bytes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true
+    },
+    "cache-base": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+      "dev": true,
+      "requires": {
+        "collection-visit": "^1.0.0",
+        "component-emitter": "^1.2.1",
+        "get-value": "^2.0.6",
+        "has-value": "^1.0.0",
+        "isobject": "^3.0.1",
+        "set-value": "^2.0.0",
+        "to-object-path": "^0.3.0",
+        "union-value": "^1.0.0",
+        "unset-value": "^1.0.0"
+      }
+    },
+    "callsite": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+      "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+      "dev": true
+    },
+    "camelcase": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+      "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+      "dev": true
+    },
+    "camelcase-keys": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
+      "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
+      "dev": true,
+      "requires": {
+        "camelcase": "^4.1.0",
+        "map-obj": "^2.0.0",
+        "quick-lru": "^1.0.0"
+      }
+    },
+    "caseless": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+      "dev": true
+    },
+    "center-align": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+      "dev": true,
+      "requires": {
+        "align-text": "^0.1.3",
+        "lazy-cache": "^1.0.3"
+      }
+    },
+    "chalk": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+      "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "dependencies": {
+        "supports-color": {
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "chokidar": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
+      "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+      "dev": true,
+      "requires": {
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.0",
+        "braces": "^2.3.0",
+        "fsevents": "^1.2.2",
+        "glob-parent": "^3.1.0",
+        "inherits": "^2.0.1",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "lodash.debounce": "^4.0.8",
+        "normalize-path": "^2.1.1",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.0.0",
+        "upath": "^1.0.5"
+      }
+    },
+    "circular-json": {
+      "version": "0.5.9",
+      "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz",
+      "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==",
+      "dev": true
+    },
+    "class-utils": {
+      "version": "0.3.6",
+      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "cliui": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+      "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+      "dev": true,
+      "requires": {
+        "string-width": "^2.1.1",
+        "strip-ansi": "^4.0.0",
+        "wrap-ansi": "^2.0.0"
+      }
+    },
+    "co": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+      "dev": true
+    },
+    "code-point-at": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+      "dev": true
+    },
+    "collection-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "dev": true,
+      "requires": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+      "dev": true
+    },
+    "colors": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz",
+      "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==",
+      "dev": true
+    },
+    "combine-lists": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz",
+      "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.5.0"
+      }
+    },
+    "combined-stream": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
+      "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
+      "dev": true,
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "commander": {
+      "version": "2.17.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+      "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+      "dev": true
+    },
+    "compare-func": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz",
+      "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=",
+      "dev": true,
+      "requires": {
+        "array-ify": "^1.0.0",
+        "dot-prop": "^3.0.0"
+      }
+    },
+    "component-bind": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
+      "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
+      "dev": true
+    },
+    "component-emitter": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+      "dev": true
+    },
+    "component-inherit": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
+      "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
+      "dev": true
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "dev": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "concurrently": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-4.0.1.tgz",
+      "integrity": "sha512-D8UI+mlI/bfvrA57SeKOht6sEpb01dKk+8Yee4fbnkk1Ue8r3S+JXoEdFZIpzQlXJGtnxo47Wvvg/kG4ba3U6Q==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.1",
+        "date-fns": "^1.23.0",
+        "lodash": "^4.17.10",
+        "read-pkg": "^4.0.1",
+        "rxjs": "6.2.2",
+        "spawn-command": "^0.0.2-1",
+        "supports-color": "^4.5.0",
+        "tree-kill": "^1.1.0",
+        "yargs": "^12.0.1"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "4.17.11",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+          "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+          "dev": true
+        }
+      }
+    },
+    "connect": {
+      "version": "3.6.6",
+      "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
+      "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "finalhandler": "1.1.0",
+        "parseurl": "~1.3.2",
+        "utils-merge": "1.0.1"
+      }
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+      "dev": true
+    },
+    "content-type-parser": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz",
+      "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==",
+      "dev": true
+    },
+    "conventional-changelog": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-2.0.3.tgz",
+      "integrity": "sha512-4bcII9cJHSKb2qi9e8qGF6aJHLf/AB0dokhyR+X6QILTMl77s4l163vK+reXhajvfOYbbHQvsrWybr5+PKZwNA==",
+      "dev": true,
+      "requires": {
+        "conventional-changelog-angular": "^1.6.6",
+        "conventional-changelog-atom": "^2.0.0",
+        "conventional-changelog-codemirror": "^2.0.0",
+        "conventional-changelog-core": "^3.1.0",
+        "conventional-changelog-ember": "^2.0.1",
+        "conventional-changelog-eslint": "^3.0.0",
+        "conventional-changelog-express": "^2.0.0",
+        "conventional-changelog-jquery": "^0.1.0",
+        "conventional-changelog-jscs": "^0.1.0",
+        "conventional-changelog-jshint": "^2.0.0",
+        "conventional-changelog-preset-loader": "^2.0.1"
+      }
+    },
+    "conventional-changelog-angular": {
+      "version": "1.6.6",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz",
+      "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==",
+      "dev": true,
+      "requires": {
+        "compare-func": "^1.3.1",
+        "q": "^1.5.1"
+      }
+    },
+    "conventional-changelog-atom": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.0.tgz",
+      "integrity": "sha512-ygwkwyTQYAm4S0tsDt+1yg8tHhRrv7qu9SOWPhNQlVrInFLsfKc0FActCA3de2ChknxpVPY2B53yhKvCAtkBCg==",
+      "dev": true,
+      "requires": {
+        "q": "^1.5.1"
+      }
+    },
+    "conventional-changelog-cli": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-2.0.5.tgz",
+      "integrity": "sha512-StqCVo10g194UhyLIhg+M/tTVu6YjGnON/IiQ9Ty/h+dgi9obYAkknwpmmgGJMQ3P3vNRljuZBupz0N2tpdxXg==",
+      "dev": true,
+      "requires": {
+        "add-stream": "^1.0.0",
+        "conventional-changelog": "^2.0.3",
+        "lodash": "^4.2.1",
+        "meow": "^4.0.0",
+        "tempfile": "^1.1.1"
+      }
+    },
+    "conventional-changelog-codemirror": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.0.tgz",
+      "integrity": "sha512-pZt/YynJ5m8C9MGV5wkBuhM1eX+8a84fmNrdOylxg/lJV+lgtAiNhnpskNuixtf71iKVWSlEqMQ6z6CH7/Uo5A==",
+      "dev": true,
+      "requires": {
+        "q": "^1.5.1"
+      }
+    },
+    "conventional-changelog-core": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.1.0.tgz",
+      "integrity": "sha512-bcZkcFXkqVgG2W8m/1wjlp2wn/BKDcrPgw3/mvSEQtzs8Pax8JbAPFpEQReHY92+EKNNXC67wLA8y2xcNx0rDA==",
+      "dev": true,
+      "requires": {
+        "conventional-changelog-writer": "^4.0.0",
+        "conventional-commits-parser": "^3.0.0",
+        "dateformat": "^3.0.0",
+        "get-pkg-repo": "^1.0.0",
+        "git-raw-commits": "^2.0.0",
+        "git-remote-origin-url": "^2.0.0",
+        "git-semver-tags": "^2.0.0",
+        "lodash": "^4.2.1",
+        "normalize-package-data": "^2.3.5",
+        "q": "^1.5.1",
+        "read-pkg": "^1.1.0",
+        "read-pkg-up": "^1.0.1",
+        "through2": "^2.0.0"
+      },
+      "dependencies": {
+        "load-json-file": {
+          "version": "1.1.0",
+          "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+          "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "parse-json": "^2.2.0",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0",
+            "strip-bom": "^2.0.0"
+          }
+        },
+        "parse-json": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+          "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+          "dev": true,
+          "requires": {
+            "error-ex": "^1.2.0"
+          }
+        },
+        "path-type": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+          "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        },
+        "read-pkg": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+          "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "^1.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^1.0.0"
+          }
+        },
+        "strip-bom": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+          "dev": true,
+          "requires": {
+            "is-utf8": "^0.2.0"
+          }
+        }
+      }
+    },
+    "conventional-changelog-ember": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.1.tgz",
+      "integrity": "sha512-Ym1xLi7YLGooLUpHCJhlXJW5V7u/g+hlYD/+HKt0KqG2qbiBi7e7/HO9aScXTEKUBGMm7m4C443R+eCWQI2ynA==",
+      "dev": true,
+      "requires": {
+        "q": "^1.5.1"
+      }
+    },
+    "conventional-changelog-eslint": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.0.tgz",
+      "integrity": "sha512-Acn20v+13c+o1OAWKvc9sCCl73Nj2vOMyn+G82euiMZwgYNE9CcBkTnw/GKdBi9KiZMK9uy+SCQ/QyAEE+8vZA==",
+      "dev": true,
+      "requires": {
+        "q": "^1.5.1"
+      }
+    },
+    "conventional-changelog-express": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.0.tgz",
+      "integrity": "sha512-2svPjeXCrjwwqnzu/f3qU5LWoLO0jmUIEbtbbSRXAAP9Ag+137b484eJsiRt9DPYXSVzog0Eoek3rvCzfHcphQ==",
+      "dev": true,
+      "requires": {
+        "q": "^1.5.1"
+      }
+    },
+    "conventional-changelog-jquery": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz",
+      "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=",
+      "dev": true,
+      "requires": {
+        "q": "^1.4.1"
+      }
+    },
+    "conventional-changelog-jscs": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz",
+      "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=",
+      "dev": true,
+      "requires": {
+        "q": "^1.4.1"
+      }
+    },
+    "conventional-changelog-jshint": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.0.tgz",
+      "integrity": "sha512-+4fCln755N0ZzRUEdcDWR5Due71Dsqkbov6K/UmVCnljZvhVh0/wpT4YROoSsAnhfZO8shyWDPFKm6EP20pLQg==",
+      "dev": true,
+      "requires": {
+        "compare-func": "^1.3.1",
+        "q": "^1.5.1"
+      }
+    },
+    "conventional-changelog-preset-loader": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.1.tgz",
+      "integrity": "sha512-HiSfhXNzAzG9klIqJaA97MMiNBR4js+53g4Px0k7tgKeCNVXmrDrm+CY+nIqcmG5NVngEPf8rAr7iji1TWW7zg==",
+      "dev": true
+    },
+    "conventional-changelog-writer": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.0.tgz",
+      "integrity": "sha512-hMZPe0AQ6Bi05epeK/7hz80xxk59nPA5z/b63TOHq2wigM0/akreOc8N4Jam5b9nFgKWX1e9PdPv2ewgW6bcfg==",
+      "dev": true,
+      "requires": {
+        "compare-func": "^1.3.1",
+        "conventional-commits-filter": "^2.0.0",
+        "dateformat": "^3.0.0",
+        "handlebars": "^4.0.2",
+        "json-stringify-safe": "^5.0.1",
+        "lodash": "^4.2.1",
+        "meow": "^4.0.0",
+        "semver": "^5.5.0",
+        "split": "^1.0.0",
+        "through2": "^2.0.0"
+      }
+    },
+    "conventional-commits-filter": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.0.tgz",
+      "integrity": "sha512-Cfl0j1/NquB/TMVx7Wrmyq7uRM+/rPQbtVVGwzfkhZ6/yH6fcMmP0Q/9044TBZPTNdGzm46vXFXL14wbET0/Mg==",
+      "dev": true,
+      "requires": {
+        "is-subset": "^0.1.1",
+        "modify-values": "^1.0.0"
+      }
+    },
+    "conventional-commits-parser": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.0.tgz",
+      "integrity": "sha512-GWh71U26BLWgMykCp+VghZ4s64wVbtseECcKQ/PvcPZR2cUnz+FUc2J9KjxNl7/ZbCxST8R03c9fc+Vi0umS9Q==",
+      "dev": true,
+      "requires": {
+        "JSONStream": "^1.0.4",
+        "is-text-path": "^1.0.0",
+        "lodash": "^4.2.1",
+        "meow": "^4.0.0",
+        "split2": "^2.0.0",
+        "through2": "^2.0.0",
+        "trim-off-newlines": "^1.0.0"
+      }
+    },
+    "conventional-recommended-bump": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-4.0.4.tgz",
+      "integrity": "sha512-9mY5Yoblq+ZMqJpBzgS+RpSq+SUfP2miOR3H/NR9drGf08WCrY9B6HAGJZEm6+ThsVP917VHAahSOjM6k1vhPg==",
+      "dev": true,
+      "requires": {
+        "concat-stream": "^1.6.0",
+        "conventional-changelog-preset-loader": "^2.0.2",
+        "conventional-commits-filter": "^2.0.1",
+        "conventional-commits-parser": "^3.0.1",
+        "git-raw-commits": "2.0.0",
+        "git-semver-tags": "^2.0.2",
+        "meow": "^4.0.0",
+        "q": "^1.5.1"
+      },
+      "dependencies": {
+        "conventional-changelog-preset-loader": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.2.tgz",
+          "integrity": "sha512-pBY+qnUoJPXAXXqVGwQaVmcye05xi6z231QM98wHWamGAmu/ghkBprQAwmF5bdmyobdVxiLhPY3PrCfSeUNzRQ==",
+          "dev": true
+        },
+        "conventional-commits-filter": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz",
+          "integrity": "sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A==",
+          "dev": true,
+          "requires": {
+            "is-subset": "^0.1.1",
+            "modify-values": "^1.0.0"
+          }
+        },
+        "conventional-commits-parser": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz",
+          "integrity": "sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg==",
+          "dev": true,
+          "requires": {
+            "JSONStream": "^1.0.4",
+            "is-text-path": "^1.0.0",
+            "lodash": "^4.2.1",
+            "meow": "^4.0.0",
+            "split2": "^2.0.0",
+            "through2": "^2.0.0",
+            "trim-off-newlines": "^1.0.0"
+          }
+        },
+        "git-semver-tags": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.2.tgz",
+          "integrity": "sha512-34lMF7Yo1xEmsK2EkbArdoU79umpvm0MfzaDkSNYSJqtM5QLAVTPWgpiXSVI5o/O9EvZPSrP4Zvnec/CqhSd5w==",
+          "dev": true,
+          "requires": {
+            "meow": "^4.0.0",
+            "semver": "^5.5.0"
+          }
+        }
+      }
+    },
+    "convert-source-map": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+      "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.1"
+      }
+    },
+    "cookie": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+      "dev": true
+    },
+    "copy-descriptor": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+      "dev": true
+    },
+    "copyfiles": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.1.0.tgz",
+      "integrity": "sha512-cAeDE0vL/koE9WSEGxqPpSyvU638Kgfu6wfrnj7kqp9FWa1CWsU54Coo6sdYZP4GstWa39tL/wIVJWfXcujgNA==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.0.5",
+        "minimatch": "^3.0.3",
+        "mkdirp": "^0.5.1",
+        "noms": "0.0.0",
+        "through2": "^2.0.1",
+        "yargs": "^11.0.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "decamelize": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+          "dev": true
+        },
+        "execa": {
+          "version": "0.7.0",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+          "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^5.0.1",
+            "get-stream": "^3.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "invert-kv": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+          "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+          "dev": true
+        },
+        "lcid": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+          "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+          "dev": true,
+          "requires": {
+            "invert-kv": "^1.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "mem": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+          "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+          "dev": true,
+          "requires": {
+            "mimic-fn": "^1.0.0"
+          }
+        },
+        "os-locale": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+          "dev": true,
+          "requires": {
+            "execa": "^0.7.0",
+            "lcid": "^1.0.0",
+            "mem": "^1.1.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        },
+        "y18n": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+          "dev": true
+        },
+        "yargs": {
+          "version": "11.1.0",
+          "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
+          "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
+          "dev": true,
+          "requires": {
+            "cliui": "^4.0.0",
+            "decamelize": "^1.1.1",
+            "find-up": "^2.1.0",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^2.0.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^2.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^3.2.1",
+            "yargs-parser": "^9.0.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "9.0.2",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
+          "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^4.1.0"
+          }
+        }
+      }
+    },
+    "core-js": {
+      "version": "2.5.7",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
+      "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
+      "dev": true
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+      "dev": true
+    },
+    "cross-env": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz",
+      "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==",
+      "dev": true,
+      "requires": {
+        "cross-spawn": "^6.0.5",
+        "is-windows": "^1.0.0"
+      }
+    },
+    "cross-spawn": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+      "dev": true,
+      "requires": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "cssom": {
+      "version": "0.3.4",
+      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz",
+      "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==",
+      "dev": true
+    },
+    "cssstyle": {
+      "version": "0.2.37",
+      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
+      "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
+      "dev": true,
+      "requires": {
+        "cssom": "0.3.x"
+      }
+    },
+    "currently-unhandled": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+      "dev": true,
+      "requires": {
+        "array-find-index": "^1.0.1"
+      }
+    },
+    "custom-event": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
+      "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
+      "dev": true
+    },
+    "d": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
+      "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
+      "dev": true,
+      "requires": {
+        "es5-ext": "^0.10.9"
+      }
+    },
+    "dargs": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz",
+      "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=",
+      "dev": true,
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
+    },
+    "dashdash": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "data-uri-to-buffer": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-0.0.4.tgz",
+      "integrity": "sha1-RuE6udqOMJdFyNAc5UchPr2y/j8=",
+      "dev": true
+    },
+    "date-fns": {
+      "version": "1.29.0",
+      "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz",
+      "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==",
+      "dev": true
+    },
+    "date-format": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz",
+      "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=",
+      "dev": true
+    },
+    "dateformat": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+      "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+      "dev": true
+    },
+    "debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "requires": {
+        "ms": "2.0.0"
+      }
+    },
+    "decamelize": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
+      "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
+      "dev": true,
+      "requires": {
+        "xregexp": "4.0.0"
+      }
+    },
+    "decamelize-keys": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
+      "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+      "dev": true,
+      "requires": {
+        "decamelize": "^1.1.0",
+        "map-obj": "^1.0.0"
+      },
+      "dependencies": {
+        "decamelize": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+          "dev": true
+        },
+        "map-obj": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+          "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+          "dev": true
+        }
+      }
+    },
+    "decode-uri-component": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+      "dev": true
+    },
+    "deep-is": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+      "dev": true
+    },
+    "define-property": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+      "dev": true,
+      "requires": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      },
+      "dependencies": {
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+      "dev": true
+    },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true
+    },
+    "detect-file": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+      "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+      "dev": true
+    },
+    "detect-indent": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+      "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+      "dev": true,
+      "requires": {
+        "repeating": "^2.0.0"
+      }
+    },
+    "detect-newline": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
+      "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
+      "dev": true
+    },
+    "di": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
+      "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
+      "dev": true
+    },
+    "diff": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+      "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+      "dev": true
+    },
+    "dom-serialize": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
+      "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
+      "dev": true,
+      "requires": {
+        "custom-event": "~1.0.0",
+        "ent": "~2.2.0",
+        "extend": "^3.0.0",
+        "void-elements": "^2.0.0"
+      }
+    },
+    "domexception": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
+      "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
+      "dev": true,
+      "requires": {
+        "webidl-conversions": "^4.0.2"
+      }
+    },
+    "dot-prop": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
+      "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
+      "dev": true,
+      "requires": {
+        "is-obj": "^1.0.0"
+      }
+    },
+    "dotgitignore": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz",
+      "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==",
+      "dev": true,
+      "requires": {
+        "find-up": "^3.0.0",
+        "minimatch": "^3.0.4"
+      }
+    },
+    "dts-bundle-generator": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-2.1.0.tgz",
+      "integrity": "sha512-uxMppo4puP84czkGS6XzOLBaG1Qn/Mlgz2qKMy8wdQrTb+kgI/Yx7sUwRHXE1YRJIzHVg9gtE7ldxlyIVhCfDw==",
+      "dev": true,
+      "requires": {
+        "typescript": ">=2.6.1",
+        "yargs": "~11.1.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "decamelize": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+          "dev": true
+        },
+        "execa": {
+          "version": "0.7.0",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+          "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^5.0.1",
+            "get-stream": "^3.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "invert-kv": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+          "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+          "dev": true
+        },
+        "lcid": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+          "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+          "dev": true,
+          "requires": {
+            "invert-kv": "^1.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "mem": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+          "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+          "dev": true,
+          "requires": {
+            "mimic-fn": "^1.0.0"
+          }
+        },
+        "os-locale": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+          "dev": true,
+          "requires": {
+            "execa": "^0.7.0",
+            "lcid": "^1.0.0",
+            "mem": "^1.1.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        },
+        "y18n": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+          "dev": true
+        },
+        "yargs": {
+          "version": "11.1.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
+          "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
+          "dev": true,
+          "requires": {
+            "cliui": "^4.0.0",
+            "decamelize": "^1.1.1",
+            "find-up": "^2.1.0",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^2.0.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^2.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^3.2.1",
+            "yargs-parser": "^9.0.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "9.0.2",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
+          "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^4.1.0"
+          }
+        }
+      }
+    },
+    "ecc-jsbn": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+      "dev": true,
+      "requires": {
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "dev": true
+    },
+    "engine.io": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.0.tgz",
+      "integrity": "sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw==",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.4",
+        "base64id": "1.0.0",
+        "cookie": "0.3.1",
+        "debug": "~3.1.0",
+        "engine.io-parser": "~2.1.0",
+        "ws": "~3.3.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "engine.io-client": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
+      "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==",
+      "dev": true,
+      "requires": {
+        "component-emitter": "1.2.1",
+        "component-inherit": "0.0.3",
+        "debug": "~3.1.0",
+        "engine.io-parser": "~2.1.1",
+        "has-cors": "1.1.0",
+        "indexof": "0.0.1",
+        "parseqs": "0.0.5",
+        "parseuri": "0.0.5",
+        "ws": "~3.3.1",
+        "xmlhttprequest-ssl": "~1.5.4",
+        "yeast": "0.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "engine.io-parser": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz",
+      "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==",
+      "dev": true,
+      "requires": {
+        "after": "0.8.2",
+        "arraybuffer.slice": "~0.0.7",
+        "base64-arraybuffer": "0.1.5",
+        "blob": "0.0.4",
+        "has-binary2": "~1.0.2"
+      }
+    },
+    "ent": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
+      "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
+      "dev": true
+    },
+    "err-code": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
+      "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=",
+      "dev": true
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "es5-ext": {
+      "version": "0.10.47",
+      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.47.tgz",
+      "integrity": "sha512-/1TItLfj+TTfWoeRcDn/0FbGV6SNo4R+On2GGVucPU/j3BWnXE2Co8h8CTo4Tu34gFJtnmwS9xiScKs4EjZhdw==",
+      "dev": true,
+      "requires": {
+        "es6-iterator": "~2.0.3",
+        "es6-symbol": "~3.1.1",
+        "next-tick": "1"
+      }
+    },
+    "es6-iterator": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "^0.10.35",
+        "es6-symbol": "^3.1.1"
+      }
+    },
+    "es6-symbol": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+      "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "~0.10.14"
+      }
+    },
+    "es6-template-strings": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/es6-template-strings/-/es6-template-strings-2.0.1.tgz",
+      "integrity": "sha1-sWbGpiVi9Hi7d3X2ypYQOlmbSyw=",
+      "dev": true,
+      "requires": {
+        "es5-ext": "^0.10.12",
+        "esniff": "^1.1"
+      }
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true
+    },
+    "escodegen": {
+      "version": "1.11.0",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz",
+      "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==",
+      "dev": true,
+      "requires": {
+        "esprima": "^3.1.3",
+        "estraverse": "^4.2.0",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1",
+        "source-map": "~0.6.1"
+      }
+    },
+    "esniff": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/esniff/-/esniff-1.1.0.tgz",
+      "integrity": "sha1-xmhJIp+RRk3t4uDUAgHtar9l8qw=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "^0.10.12"
+      }
+    },
+    "esprima": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+      "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+      "dev": true
+    },
+    "estraverse": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+      "dev": true
+    },
+    "estree-walker": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz",
+      "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==",
+      "dev": true
+    },
+    "esutils": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+      "dev": true
+    },
+    "eventemitter3": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
+      "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==",
+      "dev": true
+    },
+    "execa": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
+      "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
+      "dev": true,
+      "requires": {
+        "cross-spawn": "^6.0.0",
+        "get-stream": "^3.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      }
+    },
+    "expand-braces": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz",
+      "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=",
+      "dev": true,
+      "requires": {
+        "array-slice": "^0.2.3",
+        "array-unique": "^0.2.1",
+        "braces": "^0.1.2"
+      },
+      "dependencies": {
+        "array-unique": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+          "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+          "dev": true
+        },
+        "braces": {
+          "version": "0.1.5",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz",
+          "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=",
+          "dev": true,
+          "requires": {
+            "expand-range": "^0.1.0"
+          }
+        }
+      }
+    },
+    "expand-brackets": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "expand-range": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz",
+      "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=",
+      "dev": true,
+      "requires": {
+        "is-number": "^0.1.1",
+        "repeat-string": "^0.2.2"
+      },
+      "dependencies": {
+        "is-number": {
+          "version": "0.1.1",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz",
+          "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=",
+          "dev": true
+        },
+        "repeat-string": {
+          "version": "0.2.2",
+          "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz",
+          "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=",
+          "dev": true
+        }
+      }
+    },
+    "expand-tilde": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz",
+      "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=",
+      "dev": true,
+      "requires": {
+        "os-homedir": "^1.0.1"
+      }
+    },
+    "extend": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+      "dev": true
+    },
+    "extend-shallow": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+      "dev": true,
+      "requires": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "extglob": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+      "dev": true,
+      "requires": {
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "extsprintf": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "dev": true
+    },
+    "fast-deep-equal": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+      "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+      "dev": true
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+      "dev": true
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+      "dev": true
+    },
+    "fd-slicer": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+      "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+      "dev": true,
+      "requires": {
+        "pend": "~1.2.0"
+      }
+    },
+    "figures": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+      "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+      "dev": true,
+      "requires": {
+        "escape-string-regexp": "^1.0.5"
+      }
+    },
+    "filename-regex": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+      "dev": true
+    },
+    "fill-range": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
+      "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.1",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.2",
+        "statuses": "~1.3.1",
+        "unpipe": "~1.0.0"
+      },
+      "dependencies": {
+        "statuses": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+          "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+          "dev": true
+        }
+      }
+    },
+    "find-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+      "dev": true,
+      "requires": {
+        "locate-path": "^3.0.0"
+      }
+    },
+    "findup-sync": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
+      "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
+      "dev": true,
+      "requires": {
+        "detect-file": "^1.0.0",
+        "is-glob": "^3.1.0",
+        "micromatch": "^3.0.4",
+        "resolve-dir": "^1.0.1"
+      },
+      "dependencies": {
+        "is-glob": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.0"
+          }
+        }
+      }
+    },
+    "fined": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.1.tgz",
+      "integrity": "sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.2",
+        "is-plain-object": "^2.0.3",
+        "object.defaults": "^1.1.0",
+        "object.pick": "^1.2.0",
+        "parse-filepath": "^1.0.1"
+      },
+      "dependencies": {
+        "expand-tilde": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+          "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+          "dev": true,
+          "requires": {
+            "homedir-polyfill": "^1.0.1"
+          }
+        }
+      }
+    },
+    "flagged-respawn": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
+      "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
+      "dev": true
+    },
+    "follow-redirects": {
+      "version": "1.5.9",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz",
+      "integrity": "sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w==",
+      "dev": true,
+      "requires": {
+        "debug": "=3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "for-in": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+      "dev": true
+    },
+    "for-own": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+      "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.1"
+      }
+    },
+    "forever-agent": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+      "dev": true
+    },
+    "form-data": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+      "dev": true,
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "fragment-cache": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "dev": true,
+      "requires": {
+        "map-cache": "^0.2.2"
+      }
+    },
+    "fs-access": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
+      "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
+      "dev": true,
+      "requires": {
+        "null-check": "^1.0.0"
+      }
+    },
+    "fs-extra": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.0.tgz",
+      "integrity": "sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "jsonfile": "^4.0.0",
+        "universalify": "^0.1.0"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "fsevents": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
+      "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "nan": "^2.9.2",
+        "node-pre-gyp": "^0.10.0"
+      },
+      "dependencies": {
+        "abbrev": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "ansi-regex": {
+          "version": "2.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "aproba": {
+          "version": "1.2.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "are-we-there-yet": {
+          "version": "1.1.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "delegates": "^1.0.0",
+            "readable-stream": "^2.0.6"
+          }
+        },
+        "balanced-match": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "brace-expansion": {
+          "version": "1.1.11",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "balanced-match": "^1.0.0",
+            "concat-map": "0.0.1"
+          }
+        },
+        "chownr": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "code-point-at": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "concat-map": {
+          "version": "0.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "console-control-strings": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "core-util-is": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "deep-extend": {
+          "version": "0.5.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "delegates": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "detect-libc": {
+          "version": "1.0.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "fs-minipass": {
+          "version": "1.2.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minipass": "^2.2.1"
+          }
+        },
+        "fs.realpath": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "gauge": {
+          "version": "2.7.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "aproba": "^1.0.3",
+            "console-control-strings": "^1.0.0",
+            "has-unicode": "^2.0.0",
+            "object-assign": "^4.1.0",
+            "signal-exit": "^3.0.0",
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1",
+            "wide-align": "^1.1.0"
+          }
+        },
+        "glob": {
+          "version": "7.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "has-unicode": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "iconv-lite": {
+          "version": "0.4.21",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safer-buffer": "^2.1.0"
+          }
+        },
+        "ignore-walk": {
+          "version": "3.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minimatch": "^3.0.4"
+          }
+        },
+        "inflight": {
+          "version": "1.0.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "once": "^1.3.0",
+            "wrappy": "1"
+          }
+        },
+        "inherits": {
+          "version": "2.0.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "ini": {
+          "version": "1.3.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "number-is-nan": "^1.0.0"
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "minimatch": {
+          "version": "3.0.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "minimist": {
+          "version": "0.0.8",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "minipass": {
+          "version": "2.2.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safe-buffer": "^5.1.1",
+            "yallist": "^3.0.0"
+          }
+        },
+        "minizlib": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minipass": "^2.2.1"
+          }
+        },
+        "mkdirp": {
+          "version": "0.5.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minimist": "0.0.8"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "needle": {
+          "version": "2.2.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "debug": "^2.1.2",
+            "iconv-lite": "^0.4.4",
+            "sax": "^1.2.4"
+          }
+        },
+        "node-pre-gyp": {
+          "version": "0.10.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "detect-libc": "^1.0.2",
+            "mkdirp": "^0.5.1",
+            "needle": "^2.2.0",
+            "nopt": "^4.0.1",
+            "npm-packlist": "^1.1.6",
+            "npmlog": "^4.0.2",
+            "rc": "^1.1.7",
+            "rimraf": "^2.6.1",
+            "semver": "^5.3.0",
+            "tar": "^4"
+          }
+        },
+        "nopt": {
+          "version": "4.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "abbrev": "1",
+            "osenv": "^0.1.4"
+          }
+        },
+        "npm-bundled": {
+          "version": "1.0.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "npm-packlist": {
+          "version": "1.1.10",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ignore-walk": "^3.0.1",
+            "npm-bundled": "^1.0.1"
+          }
+        },
+        "npmlog": {
+          "version": "4.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "are-we-there-yet": "~1.1.2",
+            "console-control-strings": "~1.1.0",
+            "gauge": "~2.7.3",
+            "set-blocking": "~2.0.0"
+          }
+        },
+        "number-is-nan": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "object-assign": {
+          "version": "4.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "once": {
+          "version": "1.4.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "wrappy": "1"
+          }
+        },
+        "os-homedir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "os-tmpdir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "osenv": {
+          "version": "0.1.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "os-homedir": "^1.0.0",
+            "os-tmpdir": "^1.0.0"
+          }
+        },
+        "path-is-absolute": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "process-nextick-args": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "rc": {
+          "version": "1.2.7",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "deep-extend": "^0.5.1",
+            "ini": "~1.3.0",
+            "minimist": "^1.2.0",
+            "strip-json-comments": "~2.0.1"
+          },
+          "dependencies": {
+            "minimist": {
+              "version": "1.2.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            }
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "rimraf": {
+          "version": "2.6.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "glob": "^7.0.5"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "safer-buffer": {
+          "version": "2.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "sax": {
+          "version": "1.2.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "semver": {
+          "version": "5.5.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "set-blocking": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "signal-exit": {
+          "version": "3.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "tar": {
+          "version": "4.4.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "chownr": "^1.0.1",
+            "fs-minipass": "^1.2.5",
+            "minipass": "^2.2.4",
+            "minizlib": "^1.1.0",
+            "mkdirp": "^0.5.0",
+            "safe-buffer": "^5.1.1",
+            "yallist": "^3.0.2"
+          }
+        },
+        "util-deprecate": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "wide-align": {
+          "version": "1.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "string-width": "^1.0.2"
+          }
+        },
+        "wrappy": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "yallist": {
+          "version": "3.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "fstream": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
+      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "inherits": "~2.0.0",
+        "mkdirp": ">=0.5 0",
+        "rimraf": "2"
+      }
+    },
+    "get-caller-file": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+      "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+      "dev": true
+    },
+    "get-pkg-repo": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz",
+      "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=",
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^2.1.4",
+        "meow": "^3.3.0",
+        "normalize-package-data": "^2.3.0",
+        "parse-github-repo-url": "^1.3.0",
+        "through2": "^2.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+          "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+          "dev": true
+        },
+        "camelcase-keys": {
+          "version": "2.1.0",
+          "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+          "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^2.0.0",
+            "map-obj": "^1.0.0"
+          }
+        },
+        "decamelize": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+          "dev": true
+        },
+        "indent-string": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+          "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+          "dev": true,
+          "requires": {
+            "repeating": "^2.0.0"
+          }
+        },
+        "map-obj": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+          "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+          "dev": true
+        },
+        "meow": {
+          "version": "3.7.0",
+          "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+          "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+          "dev": true,
+          "requires": {
+            "camelcase-keys": "^2.0.0",
+            "decamelize": "^1.1.2",
+            "loud-rejection": "^1.0.0",
+            "map-obj": "^1.0.1",
+            "minimist": "^1.1.3",
+            "normalize-package-data": "^2.3.4",
+            "object-assign": "^4.0.1",
+            "read-pkg-up": "^1.0.1",
+            "redent": "^1.0.0",
+            "trim-newlines": "^1.0.0"
+          }
+        },
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        },
+        "redent": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+          "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+          "dev": true,
+          "requires": {
+            "indent-string": "^2.1.0",
+            "strip-indent": "^1.0.1"
+          }
+        },
+        "strip-indent": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+          "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+          "dev": true,
+          "requires": {
+            "get-stdin": "^4.0.1"
+          }
+        },
+        "trim-newlines": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+          "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+          "dev": true
+        }
+      }
+    },
+    "get-stdin": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+      "dev": true
+    },
+    "get-stream": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+      "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+      "dev": true
+    },
+    "get-value": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+      "dev": true
+    },
+    "getpass": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "git-raw-commits": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz",
+      "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==",
+      "dev": true,
+      "requires": {
+        "dargs": "^4.0.1",
+        "lodash.template": "^4.0.2",
+        "meow": "^4.0.0",
+        "split2": "^2.0.0",
+        "through2": "^2.0.0"
+      }
+    },
+    "git-remote-origin-url": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
+      "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
+      "dev": true,
+      "requires": {
+        "gitconfiglocal": "^1.0.0",
+        "pify": "^2.3.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        }
+      }
+    },
+    "git-semver-tags": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.0.tgz",
+      "integrity": "sha512-lSgFc3zQTul31nFje2Q8XdNcTOI6B4I3mJRPCgFzHQQLfxfqdWTYzdtCaynkK5Xmb2wQlSJoKolhXJ1VhKROnQ==",
+      "dev": true,
+      "requires": {
+        "meow": "^4.0.0",
+        "semver": "^5.5.0"
+      }
+    },
+    "gitconfiglocal": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
+      "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
+      "dev": true,
+      "requires": {
+        "ini": "^1.3.2"
+      }
+    },
+    "glob": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+      "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-base": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+      "dev": true,
+      "requires": {
+        "glob-parent": "^2.0.0",
+        "is-glob": "^2.0.0"
+      },
+      "dependencies": {
+        "glob-parent": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+          "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^2.0.0"
+          }
+        },
+        "is-extglob": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        }
+      }
+    },
+    "glob-parent": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "dev": true,
+      "requires": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      },
+      "dependencies": {
+        "is-glob": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.0"
+          }
+        }
+      }
+    },
+    "global-modules": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+      "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+      "dev": true,
+      "requires": {
+        "global-prefix": "^1.0.1",
+        "is-windows": "^1.0.1",
+        "resolve-dir": "^1.0.0"
+      }
+    },
+    "global-prefix": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+      "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.2",
+        "homedir-polyfill": "^1.0.1",
+        "ini": "^1.3.4",
+        "is-windows": "^1.0.1",
+        "which": "^1.2.14"
+      },
+      "dependencies": {
+        "expand-tilde": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+          "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+          "dev": true,
+          "requires": {
+            "homedir-polyfill": "^1.0.1"
+          }
+        }
+      }
+    },
+    "globals": {
+      "version": "9.18.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+      "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+      "dev": true
+    },
+    "graceful-fs": {
+      "version": "4.1.11",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+      "dev": true
+    },
+    "graceful-readlink": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
+      "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
+      "dev": true
+    },
+    "handlebars": {
+      "version": "4.0.12",
+      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz",
+      "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==",
+      "dev": true,
+      "requires": {
+        "async": "^2.5.0",
+        "optimist": "^0.6.1",
+        "source-map": "^0.6.1",
+        "uglify-js": "^3.1.4"
+      }
+    },
+    "har-schema": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+      "dev": true
+    },
+    "har-validator": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
+      "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
+      "dev": true,
+      "requires": {
+        "ajv": "^5.3.0",
+        "har-schema": "^2.0.0"
+      }
+    },
+    "has-ansi": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        }
+      }
+    },
+    "has-binary2": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
+      "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
+      "dev": true,
+      "requires": {
+        "isarray": "2.0.1"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
+          "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
+          "dev": true
+        }
+      }
+    },
+    "has-cors": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
+      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
+      "dev": true
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true
+    },
+    "has-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "dev": true,
+      "requires": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      }
+    },
+    "has-values": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "highlight.js": {
+      "version": "9.13.1",
+      "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz",
+      "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==",
+      "dev": true
+    },
+    "home-or-tmp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
+      "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
+      "dev": true,
+      "requires": {
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.1"
+      }
+    },
+    "homedir-polyfill": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
+      "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
+      "dev": true,
+      "requires": {
+        "parse-passwd": "^1.0.0"
+      }
+    },
+    "hosted-git-info": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
+      "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
+      "dev": true
+    },
+    "html-encoding-sniffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
+      "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
+      "dev": true,
+      "requires": {
+        "whatwg-encoding": "^1.0.1"
+      }
+    },
+    "http-errors": {
+      "version": "1.6.3",
+      "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+      "dev": true,
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.0",
+        "statuses": ">= 1.4.0 < 2"
+      }
+    },
+    "http-proxy": {
+      "version": "1.17.0",
+      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
+      "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
+      "dev": true,
+      "requires": {
+        "eventemitter3": "^3.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "http-signature": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      }
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "indent-string": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
+      "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+      "dev": true
+    },
+    "indexof": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+      "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true
+    },
+    "ini": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+      "dev": true
+    },
+    "interpret": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+      "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
+      "dev": true
+    },
+    "invariant": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+      "dev": true,
+      "requires": {
+        "loose-envify": "^1.0.0"
+      }
+    },
+    "invert-kv": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+      "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+      "dev": true
+    },
+    "is-absolute": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+      "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+      "dev": true,
+      "requires": {
+        "is-relative": "^1.0.0",
+        "is-windows": "^1.0.1"
+      }
+    },
+    "is-accessor-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "dev": true
+    },
+    "is-binary-path": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+      "dev": true,
+      "requires": {
+        "binary-extensions": "^1.0.0"
+      }
+    },
+    "is-buffer": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+      "dev": true
+    },
+    "is-builtin-module": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+      "dev": true,
+      "requires": {
+        "builtin-modules": "^1.0.0"
+      }
+    },
+    "is-data-descriptor": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+      "dev": true,
+      "requires": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+          "dev": true
+        }
+      }
+    },
+    "is-dotfile": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+      "dev": true
+    },
+    "is-equal-shallow": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+      "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+      "dev": true,
+      "requires": {
+        "is-primitive": "^2.0.0"
+      }
+    },
+    "is-extendable": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+      "dev": true
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true
+    },
+    "is-finite": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+      "dev": true,
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
+    },
+    "is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+      "dev": true
+    },
+    "is-glob": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+      "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-number": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-obj": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+      "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+      "dev": true
+    },
+    "is-plain-obj": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+      "dev": true
+    },
+    "is-plain-object": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "is-posix-bracket": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+      "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+      "dev": true
+    },
+    "is-primitive": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+      "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+      "dev": true
+    },
+    "is-relative": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+      "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+      "dev": true,
+      "requires": {
+        "is-unc-path": "^1.0.0"
+      }
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+      "dev": true
+    },
+    "is-subset": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
+      "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
+      "dev": true
+    },
+    "is-text-path": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
+      "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
+      "dev": true,
+      "requires": {
+        "text-extensions": "^1.0.0"
+      }
+    },
+    "is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+      "dev": true
+    },
+    "is-unc-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+      "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+      "dev": true,
+      "requires": {
+        "unc-path-regex": "^0.1.2"
+      }
+    },
+    "is-utf8": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+      "dev": true
+    },
+    "is-windows": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+      "dev": true
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true
+    },
+    "isbinaryfile": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
+      "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
+      "dev": true,
+      "requires": {
+        "buffer-alloc": "^1.2.0"
+      }
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "isobject": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+      "dev": true
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+      "dev": true
+    },
+    "jasmine-core": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.3.0.tgz",
+      "integrity": "sha512-3/xSmG/d35hf80BEN66Y6g9Ca5l/Isdeg/j6zvbTYlTzeKinzmaTM4p9am5kYqOmE05D7s1t8FGjzdSnbUbceA==",
+      "dev": true
+    },
+    "js-tokens": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+      "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+      "dev": true
+    },
+    "js-yaml": {
+      "version": "3.12.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
+      "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
+      "dev": true,
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "dependencies": {
+        "esprima": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+          "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+          "dev": true
+        }
+      }
+    },
+    "jsbn": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+      "dev": true
+    },
+    "jsdom": {
+      "version": "11.5.1",
+      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz",
+      "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==",
+      "dev": true,
+      "requires": {
+        "abab": "^1.0.3",
+        "acorn": "^5.1.2",
+        "acorn-globals": "^4.0.0",
+        "array-equal": "^1.0.0",
+        "browser-process-hrtime": "^0.1.2",
+        "content-type-parser": "^1.0.1",
+        "cssom": ">= 0.3.2 < 0.4.0",
+        "cssstyle": ">= 0.2.37 < 0.3.0",
+        "domexception": "^1.0.0",
+        "escodegen": "^1.9.0",
+        "html-encoding-sniffer": "^1.0.1",
+        "left-pad": "^1.2.0",
+        "nwmatcher": "^1.4.3",
+        "parse5": "^3.0.2",
+        "pn": "^1.0.0",
+        "request": "^2.83.0",
+        "request-promise-native": "^1.0.3",
+        "sax": "^1.2.1",
+        "symbol-tree": "^3.2.1",
+        "tough-cookie": "^2.3.3",
+        "webidl-conversions": "^4.0.2",
+        "whatwg-encoding": "^1.0.1",
+        "whatwg-url": "^6.3.0",
+        "xml-name-validator": "^2.0.1"
+      }
+    },
+    "jsesc": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+      "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+      "dev": true
+    },
+    "json-parse-better-errors": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+      "dev": true
+    },
+    "json-schema": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+      "dev": true
+    },
+    "json-schema-traverse": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+      "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+      "dev": true
+    },
+    "json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+      "dev": true
+    },
+    "json5": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+      "dev": true
+    },
+    "jsonfile": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "jsonparse": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+      "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+      "dev": true
+    },
+    "jspm": {
+      "version": "0.16.53",
+      "resolved": "https://registry.npmjs.org/jspm/-/jspm-0.16.53.tgz",
+      "integrity": "sha1-VvNR9JWUyJM+XgG2UUWsrr/PtZ4=",
+      "dev": true,
+      "requires": {
+        "chalk": "^1.1.1",
+        "core-js": "^1.2.6",
+        "glob": "^6.0.1",
+        "graceful-fs": "^4.1.2",
+        "jspm-github": "^0.13.17",
+        "jspm-npm": "^0.26.12",
+        "jspm-registry": "^0.4.0",
+        "liftoff": "^2.2.0",
+        "minimatch": "^3.0.0",
+        "mkdirp": "~0.5.1",
+        "ncp": "^2.0.0",
+        "proper-lockfile": "^1.1.2",
+        "request": "^2.67.0",
+        "rimraf": "^2.4.4",
+        "rsvp": "^3.1.0",
+        "semver": "^5.1.0",
+        "systemjs": "0.19.46",
+        "systemjs-builder": "0.15.36",
+        "traceur": "0.0.105",
+        "uglify-js": "^2.6.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "camelcase": {
+          "version": "1.2.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "cliui": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+          "dev": true,
+          "requires": {
+            "center-align": "^0.1.1",
+            "right-align": "^0.1.1",
+            "wordwrap": "0.0.2"
+          }
+        },
+        "core-js": {
+          "version": "1.2.7",
+          "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+          "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=",
+          "dev": true
+        },
+        "decamelize": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+          "dev": true
+        },
+        "glob": {
+          "version": "6.0.4",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+          "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+          "dev": true,
+          "requires": {
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "2 || 3",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        },
+        "uglify-js": {
+          "version": "2.8.29",
+          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+          "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+          "dev": true,
+          "requires": {
+            "source-map": "~0.5.1",
+            "uglify-to-browserify": "~1.0.0",
+            "yargs": "~3.10.0"
+          }
+        },
+        "wordwrap": {
+          "version": "0.0.2",
+          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+          "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+          "dev": true
+        },
+        "yargs": {
+          "version": "3.10.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^1.0.2",
+            "cliui": "^2.1.0",
+            "decamelize": "^1.0.0",
+            "window-size": "0.1.0"
+          }
+        }
+      }
+    },
+    "jspm-github": {
+      "version": "0.13.20",
+      "resolved": "https://registry.npmjs.org/jspm-github/-/jspm-github-0.13.20.tgz",
+      "integrity": "sha512-q+rg4b7Q9HuH4efrpM6QKmCddFYkKg3javGYPK1rcNvxNFAN2PqhNLgc7TpYgR2k8k+iLZvFWeWmC9WxZrB3Dw==",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^1.2.0",
+        "graceful-fs": "^4.1.3",
+        "mkdirp": "^0.5.1",
+        "netrc": "^0.1.3",
+        "request": "^2.74.0",
+        "rimraf": "^2.5.4",
+        "rsvp": "^3.0.17",
+        "semver": "^5.0.1",
+        "tar": "^2.2.1",
+        "which": "^1.0.9",
+        "yauzl": "^2.3.1"
+      }
+    },
+    "jspm-npm": {
+      "version": "0.26.14",
+      "resolved": "https://registry.npmjs.org/jspm-npm/-/jspm-npm-0.26.14.tgz",
+      "integrity": "sha512-2kxX7sa0o4J7sVCMLEw91VTdeMBS68To9Pf0Y0dFoKVks95BXF0anPHbpG7fGAXlkUHLFk7lwMowkXlNavDPKg==",
+      "dev": true,
+      "requires": {
+        "buffer-peek-stream": "^1.0.1",
+        "glob": "^5.0.10",
+        "graceful-fs": "^4.1.3",
+        "mkdirp": "^0.5.1",
+        "request": "^2.58.0",
+        "resolve": "^1.1.6",
+        "rsvp": "^3.0.18",
+        "semver": "^5.0.1",
+        "systemjs-builder": "^0.15.0",
+        "tar": "^1.0.3",
+        "which": "^1.1.1"
+      },
+      "dependencies": {
+        "glob": {
+          "version": "5.0.15",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+          "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+          "dev": true,
+          "requires": {
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "2 || 3",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "tar": {
+          "version": "1.0.3",
+          "resolved": "https://registry.npmjs.org/tar/-/tar-1.0.3.tgz",
+          "integrity": "sha1-FbzaskT6St1E5CRKAXbtuKqaK0Q=",
+          "dev": true,
+          "requires": {
+            "block-stream": "*",
+            "fstream": "^1.0.2",
+            "inherits": "2"
+          }
+        }
+      }
+    },
+    "jspm-registry": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/jspm-registry/-/jspm-registry-0.4.4.tgz",
+      "integrity": "sha1-1TFmA1qHzc5YXWK6o5dWhUaZbXA=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.3",
+        "rimraf": "^2.3.2",
+        "rsvp": "^3.0.18",
+        "semver": "^4.3.3"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "4.3.6",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
+          "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
+          "dev": true
+        }
+      }
+    },
+    "jsprim": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      }
+    },
+    "karma": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/karma/-/karma-3.1.1.tgz",
+      "integrity": "sha512-NetT3wPCQMNB36uiL9LLyhrOt8SQwrEKt0xD3+KpTCfm0VxVyUJdPL5oTq2Ic5ouemgL/Iz4wqXEbF3zea9kQQ==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.3.0",
+        "body-parser": "^1.16.1",
+        "chokidar": "^2.0.3",
+        "colors": "^1.1.0",
+        "combine-lists": "^1.0.0",
+        "connect": "^3.6.0",
+        "core-js": "^2.2.0",
+        "di": "^0.0.1",
+        "dom-serialize": "^2.2.0",
+        "expand-braces": "^0.1.1",
+        "glob": "^7.1.1",
+        "graceful-fs": "^4.1.2",
+        "http-proxy": "^1.13.0",
+        "isbinaryfile": "^3.0.0",
+        "lodash": "^4.17.4",
+        "log4js": "^3.0.0",
+        "mime": "^2.3.1",
+        "minimatch": "^3.0.2",
+        "optimist": "^0.6.1",
+        "qjobs": "^1.1.4",
+        "range-parser": "^1.2.0",
+        "rimraf": "^2.6.0",
+        "safe-buffer": "^5.0.1",
+        "socket.io": "2.1.1",
+        "source-map": "^0.6.1",
+        "tmp": "0.0.33",
+        "useragent": "2.2.1"
+      }
+    },
+    "karma-chrome-launcher": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz",
+      "integrity": "sha1-zxudBxNswY/iOTJ9JGVMPbw2is8=",
+      "dev": true,
+      "requires": {
+        "fs-access": "^1.0.0",
+        "which": "^1.2.1"
+      }
+    },
+    "karma-ie-launcher": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/karma-ie-launcher/-/karma-ie-launcher-1.0.0.tgz",
+      "integrity": "sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw=",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.6.1"
+      }
+    },
+    "karma-jasmine": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz",
+      "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=",
+      "dev": true
+    },
+    "karma-requirejs": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/karma-requirejs/-/karma-requirejs-1.1.0.tgz",
+      "integrity": "sha1-/driy4fX68FvsCIok1ZNf+5Xh5g=",
+      "dev": true
+    },
+    "kind-of": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+      "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+      "dev": true
+    },
+    "lazy-cache": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+      "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+      "dev": true
+    },
+    "lcid": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+      "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+      "dev": true,
+      "requires": {
+        "invert-kv": "^2.0.0"
+      }
+    },
+    "left-pad": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
+      "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==",
+      "dev": true
+    },
+    "levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      }
+    },
+    "liftoff": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
+      "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
+      "dev": true,
+      "requires": {
+        "extend": "^3.0.0",
+        "findup-sync": "^2.0.0",
+        "fined": "^1.0.1",
+        "flagged-respawn": "^1.0.0",
+        "is-plain-object": "^2.0.4",
+        "object.map": "^1.0.0",
+        "rechoir": "^0.6.2",
+        "resolve": "^1.1.7"
+      }
+    },
+    "load-json-file": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+      "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^4.0.0",
+        "pify": "^3.0.0",
+        "strip-bom": "^3.0.0"
+      }
+    },
+    "locate-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+      "dev": true,
+      "requires": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.4",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+      "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+      "dev": true
+    },
+    "lodash._reinterpolate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+      "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+      "dev": true
+    },
+    "lodash.debounce": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+      "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+      "dev": true
+    },
+    "lodash.sortby": {
+      "version": "4.7.0",
+      "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+      "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
+      "dev": true
+    },
+    "lodash.template": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
+      "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
+      "dev": true,
+      "requires": {
+        "lodash._reinterpolate": "~3.0.0",
+        "lodash.templatesettings": "^4.0.0"
+      }
+    },
+    "lodash.templatesettings": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz",
+      "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
+      "dev": true,
+      "requires": {
+        "lodash._reinterpolate": "~3.0.0"
+      }
+    },
+    "log4js": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.6.tgz",
+      "integrity": "sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ==",
+      "dev": true,
+      "requires": {
+        "circular-json": "^0.5.5",
+        "date-format": "^1.2.0",
+        "debug": "^3.1.0",
+        "rfdc": "^1.1.2",
+        "streamroller": "0.7.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "dev": true
+        }
+      }
+    },
+    "longest": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+      "dev": true
+    },
+    "loose-envify": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+      "dev": true,
+      "requires": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      }
+    },
+    "loud-rejection": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+      "dev": true,
+      "requires": {
+        "currently-unhandled": "^0.4.1",
+        "signal-exit": "^3.0.0"
+      }
+    },
+    "lru-cache": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
+      "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
+      "dev": true,
+      "requires": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "make-iterator": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
+      "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+      "dev": true,
+      "requires": {
+        "kind-of": "^6.0.2"
+      }
+    },
+    "map-age-cleaner": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz",
+      "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==",
+      "dev": true,
+      "requires": {
+        "p-defer": "^1.0.0"
+      }
+    },
+    "map-cache": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+      "dev": true
+    },
+    "map-obj": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
+      "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
+      "dev": true
+    },
+    "map-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "dev": true,
+      "requires": {
+        "object-visit": "^1.0.0"
+      }
+    },
+    "marked": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz",
+      "integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw==",
+      "dev": true
+    },
+    "math-random": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
+      "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
+      "dev": true
+    },
+    "media-typer": {
+      "version": "0.3.0",
+      "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "dev": true
+    },
+    "mem": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
+      "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
+      "dev": true,
+      "requires": {
+        "map-age-cleaner": "^0.1.1",
+        "mimic-fn": "^1.0.0",
+        "p-is-promise": "^1.1.0"
+      }
+    },
+    "meow": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
+      "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
+      "dev": true,
+      "requires": {
+        "camelcase-keys": "^4.0.0",
+        "decamelize-keys": "^1.0.0",
+        "loud-rejection": "^1.0.0",
+        "minimist": "^1.1.3",
+        "minimist-options": "^3.0.1",
+        "normalize-package-data": "^2.3.4",
+        "read-pkg-up": "^3.0.0",
+        "redent": "^2.0.0",
+        "trim-newlines": "^2.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        },
+        "read-pkg": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+          "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "^4.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^3.0.0"
+          }
+        },
+        "read-pkg-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+          "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+          "dev": true,
+          "requires": {
+            "find-up": "^2.0.0",
+            "read-pkg": "^3.0.0"
+          }
+        }
+      }
+    },
+    "micromatch": {
+      "version": "3.1.10",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      }
+    },
+    "mime": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
+      "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==",
+      "dev": true
+    },
+    "mime-db": {
+      "version": "1.37.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
+      "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
+      "dev": true
+    },
+    "mime-types": {
+      "version": "2.1.21",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
+      "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
+      "dev": true,
+      "requires": {
+        "mime-db": "~1.37.0"
+      }
+    },
+    "mimic-fn": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+      "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "0.0.10",
+      "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+      "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+      "dev": true
+    },
+    "minimist-options": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
+      "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
+      "dev": true,
+      "requires": {
+        "arrify": "^1.0.1",
+        "is-plain-obj": "^1.1.0"
+      }
+    },
+    "mixin-deep": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+      "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.1",
+      "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "dev": true,
+      "requires": {
+        "minimist": "0.0.8"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "0.0.8",
+          "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+          "dev": true
+        }
+      }
+    },
+    "modify-values": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
+      "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
+      "dev": true
+    },
+    "ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "nan": {
+      "version": "2.11.1",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz",
+      "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==",
+      "dev": true,
+      "optional": true
+    },
+    "nanomatch": {
+      "version": "1.2.13",
+      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+      "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "fragment-cache": "^0.2.1",
+        "is-windows": "^1.0.2",
+        "kind-of": "^6.0.2",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      }
+    },
+    "ncp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
+      "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
+      "dev": true
+    },
+    "negotiator": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+      "dev": true
+    },
+    "neo-async": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
+      "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
+      "dev": true
+    },
+    "netrc": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz",
+      "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=",
+      "dev": true
+    },
+    "next-tick": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
+      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
+      "dev": true
+    },
+    "nice-try": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+      "dev": true
+    },
+    "noms": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz",
+      "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "readable-stream": "~1.0.31"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "1.0.34",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+          "dev": true
+        }
+      }
+    },
+    "normalize-package-data": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+      "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^2.1.4",
+        "is-builtin-module": "^1.0.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "normalize-path": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+      "dev": true,
+      "requires": {
+        "remove-trailing-separator": "^1.0.1"
+      }
+    },
+    "npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "dev": true,
+      "requires": {
+        "path-key": "^2.0.0"
+      }
+    },
+    "null-check": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
+      "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
+      "dev": true
+    },
+    "number-is-nan": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+      "dev": true
+    },
+    "nwmatcher": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz",
+      "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==",
+      "dev": true
+    },
+    "oauth-sign": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+      "dev": true
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+      "dev": true
+    },
+    "object-component": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
+      "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
+      "dev": true
+    },
+    "object-copy": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+      "dev": true,
+      "requires": {
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "object-visit": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.0"
+      }
+    },
+    "object.defaults": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+      "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+      "dev": true,
+      "requires": {
+        "array-each": "^1.0.1",
+        "array-slice": "^1.0.0",
+        "for-own": "^1.0.0",
+        "isobject": "^3.0.0"
+      },
+      "dependencies": {
+        "array-slice": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+          "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+          "dev": true
+        },
+        "for-own": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+          "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+          "dev": true,
+          "requires": {
+            "for-in": "^1.0.1"
+          }
+        }
+      }
+    },
+    "object.map": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+      "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+      "dev": true,
+      "requires": {
+        "for-own": "^1.0.0",
+        "make-iterator": "^1.0.0"
+      },
+      "dependencies": {
+        "for-own": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+          "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+          "dev": true,
+          "requires": {
+            "for-in": "^1.0.1"
+          }
+        }
+      }
+    },
+    "object.omit": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+      "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+      "dev": true,
+      "requires": {
+        "for-own": "^0.1.4",
+        "is-extendable": "^0.1.1"
+      }
+    },
+    "object.pick": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "optimist": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+      "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+      "dev": true,
+      "requires": {
+        "minimist": "~0.0.1",
+        "wordwrap": "~0.0.2"
+      },
+      "dependencies": {
+        "wordwrap": {
+          "version": "0.0.3",
+          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+          "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+          "dev": true
+        }
+      }
+    },
+    "optionator": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+      "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+      "dev": true,
+      "requires": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.4",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "wordwrap": "~1.0.0"
+      }
+    },
+    "os-homedir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+      "dev": true
+    },
+    "os-locale": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz",
+      "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
+      "dev": true,
+      "requires": {
+        "execa": "^0.10.0",
+        "lcid": "^2.0.0",
+        "mem": "^4.0.0"
+      }
+    },
+    "os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+      "dev": true
+    },
+    "p-defer": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+      "dev": true
+    },
+    "p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+      "dev": true
+    },
+    "p-is-promise": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
+      "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
+      "dev": true
+    },
+    "p-limit": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
+      "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
+      "dev": true,
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+      "dev": true,
+      "requires": {
+        "p-limit": "^2.0.0"
+      }
+    },
+    "p-try": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+      "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+      "dev": true
+    },
+    "parse-filepath": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+      "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
+      "dev": true,
+      "requires": {
+        "is-absolute": "^1.0.0",
+        "map-cache": "^0.2.0",
+        "path-root": "^0.1.1"
+      }
+    },
+    "parse-github-repo-url": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz",
+      "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=",
+      "dev": true
+    },
+    "parse-glob": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+      "dev": true,
+      "requires": {
+        "glob-base": "^0.3.0",
+        "is-dotfile": "^1.0.0",
+        "is-extglob": "^1.0.0",
+        "is-glob": "^2.0.0"
+      },
+      "dependencies": {
+        "is-extglob": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        }
+      }
+    },
+    "parse-json": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+      "dev": true,
+      "requires": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      }
+    },
+    "parse-passwd": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+      "dev": true
+    },
+    "parse5": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
+      "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "parseqs": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
+      "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
+      "dev": true,
+      "requires": {
+        "better-assert": "~1.0.0"
+      }
+    },
+    "parseuri": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
+      "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
+      "dev": true,
+      "requires": {
+        "better-assert": "~1.0.0"
+      }
+    },
+    "parseurl": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+      "dev": true
+    },
+    "pascalcase": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+      "dev": true
+    },
+    "path-dirname": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+      "dev": true
+    },
+    "path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+      "dev": true
+    },
+    "path-parse": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+      "dev": true
+    },
+    "path-root": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+      "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+      "dev": true,
+      "requires": {
+        "path-root-regex": "^0.1.0"
+      }
+    },
+    "path-root-regex": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+      "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
+      "dev": true
+    },
+    "path-type": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+      "dev": true,
+      "requires": {
+        "pify": "^3.0.0"
+      }
+    },
+    "pend": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+      "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+      "dev": true
+    },
+    "performance-now": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+      "dev": true
+    },
+    "pify": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+      "dev": true
+    },
+    "pinkie": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true
+    },
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "requires": {
+        "pinkie": "^2.0.0"
+      }
+    },
+    "pn": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
+      "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
+      "dev": true
+    },
+    "posix-character-classes": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+      "dev": true
+    },
+    "prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+      "dev": true
+    },
+    "preserve": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+      "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+      "dev": true
+    },
+    "private": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
+      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
+      "dev": true
+    },
+    "process-nextick-args": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+      "dev": true
+    },
+    "progress": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz",
+      "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==",
+      "dev": true
+    },
+    "proper-lockfile": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-1.2.0.tgz",
+      "integrity": "sha1-zv9d2J0+XxD7deHo52vHWAGlnDQ=",
+      "dev": true,
+      "requires": {
+        "err-code": "^1.0.0",
+        "extend": "^3.0.0",
+        "graceful-fs": "^4.1.2",
+        "retry": "^0.10.0"
+      }
+    },
+    "pseudomap": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "dev": true
+    },
+    "psl": {
+      "version": "1.1.29",
+      "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
+      "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
+      "dev": true
+    },
+    "punycode": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+      "dev": true
+    },
+    "q": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true
+    },
+    "qjobs": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
+      "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==",
+      "dev": true
+    },
+    "qs": {
+      "version": "6.5.2",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+      "dev": true
+    },
+    "quick-lru": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
+      "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
+      "dev": true
+    },
+    "randomatic": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
+      "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
+      "dev": true,
+      "requires": {
+        "is-number": "^4.0.0",
+        "kind-of": "^6.0.0",
+        "math-random": "^1.0.1"
+      },
+      "dependencies": {
+        "is-number": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+          "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+          "dev": true
+        }
+      }
+    },
+    "range-parser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+      "dev": true
+    },
+    "raw-body": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
+      "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
+      "dev": true,
+      "requires": {
+        "bytes": "3.0.0",
+        "http-errors": "1.6.3",
+        "iconv-lite": "0.4.23",
+        "unpipe": "1.0.0"
+      },
+      "dependencies": {
+        "iconv-lite": {
+          "version": "0.4.23",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
+          "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+          "dev": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3"
+          }
+        }
+      }
+    },
+    "read-pkg": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
+      "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
+      "dev": true,
+      "requires": {
+        "normalize-package-data": "^2.3.2",
+        "parse-json": "^4.0.0",
+        "pify": "^3.0.0"
+      }
+    },
+    "read-pkg-up": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+      "dev": true,
+      "requires": {
+        "find-up": "^1.0.0",
+        "read-pkg": "^1.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+          "dev": true,
+          "requires": {
+            "path-exists": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "load-json-file": {
+          "version": "1.1.0",
+          "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+          "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "parse-json": "^2.2.0",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0",
+            "strip-bom": "^2.0.0"
+          }
+        },
+        "parse-json": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+          "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+          "dev": true,
+          "requires": {
+            "error-ex": "^1.2.0"
+          }
+        },
+        "path-exists": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+          "dev": true,
+          "requires": {
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "path-type": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+          "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        },
+        "read-pkg": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+          "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "^1.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^1.0.0"
+          }
+        },
+        "strip-bom": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+          "dev": true,
+          "requires": {
+            "is-utf8": "^0.2.0"
+          }
+        }
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.6",
+      "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+      "dev": true,
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "readdirp": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+      "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "rechoir": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+      "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+      "dev": true,
+      "requires": {
+        "resolve": "^1.1.6"
+      }
+    },
+    "redent": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
+      "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
+      "dev": true,
+      "requires": {
+        "indent-string": "^3.0.0",
+        "strip-indent": "^2.0.0"
+      }
+    },
+    "regenerator-runtime": {
+      "version": "0.11.1",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+      "dev": true
+    },
+    "regex-cache": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+      "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+      "dev": true,
+      "requires": {
+        "is-equal-shallow": "^0.1.3"
+      }
+    },
+    "regex-not": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "dev": true
+    },
+    "repeat-element": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+      "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+      "dev": true
+    },
+    "repeat-string": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+      "dev": true
+    },
+    "repeating": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+      "dev": true,
+      "requires": {
+        "is-finite": "^1.0.0"
+      }
+    },
+    "request": {
+      "version": "2.88.0",
+      "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+      "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+      "dev": true,
+      "requires": {
+        "aws-sign2": "~0.7.0",
+        "aws4": "^1.8.0",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.6",
+        "extend": "~3.0.2",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.3.2",
+        "har-validator": "~5.1.0",
+        "http-signature": "~1.2.0",
+        "is-typedarray": "~1.0.0",
+        "isstream": "~0.1.2",
+        "json-stringify-safe": "~5.0.1",
+        "mime-types": "~2.1.19",
+        "oauth-sign": "~0.9.0",
+        "performance-now": "^2.1.0",
+        "qs": "~6.5.2",
+        "safe-buffer": "^5.1.2",
+        "tough-cookie": "~2.4.3",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.3.2"
+      }
+    },
+    "request-promise-core": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz",
+      "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.13.1"
+      }
+    },
+    "request-promise-native": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz",
+      "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=",
+      "dev": true,
+      "requires": {
+        "request-promise-core": "1.1.1",
+        "stealthy-require": "^1.1.0",
+        "tough-cookie": ">=2.3.3"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+      "dev": true
+    },
+    "require-main-filename": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+      "dev": true
+    },
+    "requirejs": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
+      "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
+      "dev": true
+    },
+    "requirejs-text": {
+      "version": "2.0.15",
+      "resolved": "https://registry.npmjs.org/requirejs-text/-/requirejs-text-2.0.15.tgz",
+      "integrity": "sha1-ExOHM2E/xEV7fhJH6Mt1HfeqVCk=",
+      "dev": true
+    },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+      "dev": true
+    },
+    "resolve": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
+      "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
+      "dev": true,
+      "requires": {
+        "path-parse": "^1.0.5"
+      }
+    },
+    "resolve-dir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+      "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.0",
+        "global-modules": "^1.0.0"
+      },
+      "dependencies": {
+        "expand-tilde": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+          "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+          "dev": true,
+          "requires": {
+            "homedir-polyfill": "^1.0.1"
+          }
+        }
+      }
+    },
+    "resolve-url": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+      "dev": true
+    },
+    "ret": {
+      "version": "0.1.15",
+      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+      "dev": true
+    },
+    "retry": {
+      "version": "0.10.1",
+      "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
+      "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=",
+      "dev": true
+    },
+    "rfdc": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz",
+      "integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA==",
+      "dev": true
+    },
+    "right-align": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+      "dev": true,
+      "requires": {
+        "align-text": "^0.1.1"
+      }
+    },
+    "rimraf": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+      "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.0.5"
+      }
+    },
+    "rollup": {
+      "version": "0.66.6",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.66.6.tgz",
+      "integrity": "sha512-J7/SWanrcb83vfIHqa8+aVVGzy457GcjA6GVZEnD0x2u4OnOd0Q1pCrEoNe8yLwM6z6LZP02zBT2uW0yh5TqOw==",
+      "dev": true,
+      "requires": {
+        "@types/estree": "0.0.39",
+        "@types/node": "*"
+      }
+    },
+    "rollup-plugin-typescript2": {
+      "version": "0.17.2",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.17.2.tgz",
+      "integrity": "sha512-QmrZElI+p4sytmv1S7uvtUbL4XADWWmM/dIuc3agGZTE+fO2X1KoRo8EbeR1x0ZO4I9KwPubGfmw/1rHeUR+Dg==",
+      "dev": true,
+      "requires": {
+        "fs-extra": "7.0.0",
+        "resolve": "1.8.1",
+        "rollup-pluginutils": "2.3.3",
+        "tslib": "1.9.3"
+      }
+    },
+    "rollup-pluginutils": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz",
+      "integrity": "sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==",
+      "dev": true,
+      "requires": {
+        "estree-walker": "^0.5.2",
+        "micromatch": "^2.3.11"
+      },
+      "dependencies": {
+        "arr-diff": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+          "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.0.1"
+          }
+        },
+        "array-unique": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+          "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+          "dev": true
+        },
+        "braces": {
+          "version": "1.8.5",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+          "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+          "dev": true,
+          "requires": {
+            "expand-range": "^1.8.1",
+            "preserve": "^0.2.0",
+            "repeat-element": "^1.1.2"
+          }
+        },
+        "expand-brackets": {
+          "version": "0.1.5",
+          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+          "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+          "dev": true,
+          "requires": {
+            "is-posix-bracket": "^0.1.0"
+          }
+        },
+        "expand-range": {
+          "version": "1.8.2",
+          "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+          "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+          "dev": true,
+          "requires": {
+            "fill-range": "^2.1.0"
+          }
+        },
+        "extglob": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+          "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        },
+        "fill-range": {
+          "version": "2.2.4",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+          "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+          "dev": true,
+          "requires": {
+            "is-number": "^2.1.0",
+            "isobject": "^2.0.0",
+            "randomatic": "^3.0.0",
+            "repeat-element": "^1.1.2",
+            "repeat-string": "^1.5.2"
+          }
+        },
+        "is-extglob": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        },
+        "is-number": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+          "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          }
+        },
+        "isobject": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+          "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+          "dev": true,
+          "requires": {
+            "isarray": "1.0.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        },
+        "micromatch": {
+          "version": "2.3.11",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+          "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^2.0.0",
+            "array-unique": "^0.2.1",
+            "braces": "^1.8.2",
+            "expand-brackets": "^0.1.4",
+            "extglob": "^0.3.1",
+            "filename-regex": "^2.0.0",
+            "is-extglob": "^1.0.0",
+            "is-glob": "^2.0.1",
+            "kind-of": "^3.0.2",
+            "normalize-path": "^2.0.1",
+            "object.omit": "^2.0.0",
+            "parse-glob": "^3.0.4",
+            "regex-cache": "^0.4.2"
+          }
+        }
+      }
+    },
+    "rsvp": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz",
+      "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==",
+      "dev": true
+    },
+    "rxjs": {
+      "version": "6.2.2",
+      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz",
+      "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+      "dev": true
+    },
+    "safe-regex": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "dev": true,
+      "requires": {
+        "ret": "~0.1.10"
+      }
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true
+    },
+    "sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+      "dev": true
+    },
+    "semver": {
+      "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+      "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
+      "dev": true
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+      "dev": true
+    },
+    "set-value": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
+      "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "setprototypeof": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+      "dev": true
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+      "dev": true
+    },
+    "shelljs": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.2.tgz",
+      "integrity": "sha512-pRXeNrCA2Wd9itwhvLp5LZQvPJ0wU6bcjaTMywHHGX5XWhVN2nzSu7WV0q+oUY7mGK3mgSkDDzP3MgjqdyIgbQ==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.0.0",
+        "interpret": "^1.0.0",
+        "rechoir": "^0.6.2"
+      }
+    },
+    "signal-exit": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+      "dev": true
+    },
+    "slash": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+      "dev": true
+    },
+    "snapdragon": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+      "dev": true,
+      "requires": {
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        }
+      }
+    },
+    "snapdragon-node": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+      "dev": true,
+      "requires": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "snapdragon-util": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.2.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "socket.io": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz",
+      "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==",
+      "dev": true,
+      "requires": {
+        "debug": "~3.1.0",
+        "engine.io": "~3.2.0",
+        "has-binary2": "~1.0.2",
+        "socket.io-adapter": "~1.1.0",
+        "socket.io-client": "2.1.1",
+        "socket.io-parser": "~3.2.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "socket.io-adapter": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz",
+      "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=",
+      "dev": true
+    },
+    "socket.io-client": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz",
+      "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==",
+      "dev": true,
+      "requires": {
+        "backo2": "1.0.2",
+        "base64-arraybuffer": "0.1.5",
+        "component-bind": "1.0.0",
+        "component-emitter": "1.2.1",
+        "debug": "~3.1.0",
+        "engine.io-client": "~3.2.0",
+        "has-binary2": "~1.0.2",
+        "has-cors": "1.1.0",
+        "indexof": "0.0.1",
+        "object-component": "0.0.3",
+        "parseqs": "0.0.5",
+        "parseuri": "0.0.5",
+        "socket.io-parser": "~3.2.0",
+        "to-array": "0.1.4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "socket.io-parser": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
+      "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==",
+      "dev": true,
+      "requires": {
+        "component-emitter": "1.2.1",
+        "debug": "~3.1.0",
+        "isarray": "2.0.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "isarray": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
+          "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
+          "dev": true
+        }
+      }
+    },
+    "source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "dev": true
+    },
+    "source-map-resolve": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+      "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+      "dev": true,
+      "requires": {
+        "atob": "^2.1.1",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
+      }
+    },
+    "source-map-support": {
+      "version": "0.4.18",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+      "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+      "dev": true,
+      "requires": {
+        "source-map": "^0.5.6"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        }
+      }
+    },
+    "source-map-url": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+      "dev": true
+    },
+    "spawn-command": {
+      "version": "0.0.2-1",
+      "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
+      "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=",
+      "dev": true
+    },
+    "spdx-correct": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz",
+      "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==",
+      "dev": true,
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+      "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+      "dev": true
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+      "dev": true,
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz",
+      "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==",
+      "dev": true
+    },
+    "split": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+      "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+      "dev": true,
+      "requires": {
+        "through": "2"
+      }
+    },
+    "split-string": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.0"
+      }
+    },
+    "split2": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
+      "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
+      "dev": true,
+      "requires": {
+        "through2": "^2.0.2"
+      }
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "sshpk": {
+      "version": "1.15.2",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz",
+      "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==",
+      "dev": true,
+      "requires": {
+        "asn1": "~0.2.3",
+        "assert-plus": "^1.0.0",
+        "bcrypt-pbkdf": "^1.0.0",
+        "dashdash": "^1.12.0",
+        "ecc-jsbn": "~0.1.1",
+        "getpass": "^0.1.1",
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.0.2",
+        "tweetnacl": "~0.14.0"
+      }
+    },
+    "standard-version": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-5.0.2.tgz",
+      "integrity": "sha512-vvdWZySinwWU9UZhtgYUGGTkYzqrwYMw3c7CFJ17E7vMbAEqVSui/bm+ZcSukAAU2WmphPTWIKFmn8ni+lk4NA==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.1",
+        "conventional-changelog": "^3.0.6",
+        "conventional-recommended-bump": "^4.0.4",
+        "detect-indent": "^5.0.0",
+        "detect-newline": "^2.1.0",
+        "dotgitignore": "^2.1.0",
+        "figures": "^2.0.0",
+        "fs-access": "^1.0.0",
+        "git-semver-tags": "^2.0.2",
+        "semver": "^5.2.0",
+        "stringify-package": "^1.0.0",
+        "yargs": "^12.0.2"
+      },
+      "dependencies": {
+        "conventional-changelog": {
+          "version": "3.0.6",
+          "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.0.6.tgz",
+          "integrity": "sha512-1b96x3G67lDKakRvMm+VvYGwgRk+C8aapHKL5iZ/TJzzD/RuyGA2diHNEsR+uPHmQ7/A4Ts7j6N+VNqUoOfksg==",
+          "dev": true,
+          "requires": {
+            "conventional-changelog-angular": "^5.0.3",
+            "conventional-changelog-atom": "^2.0.1",
+            "conventional-changelog-codemirror": "^2.0.1",
+            "conventional-changelog-core": "^3.1.6",
+            "conventional-changelog-ember": "^2.0.2",
+            "conventional-changelog-eslint": "^3.0.1",
+            "conventional-changelog-express": "^2.0.1",
+            "conventional-changelog-jquery": "^3.0.4",
+            "conventional-changelog-jshint": "^2.0.1",
+            "conventional-changelog-preset-loader": "^2.0.2"
+          }
+        },
+        "conventional-changelog-angular": {
+          "version": "5.0.3",
+          "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz",
+          "integrity": "sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA==",
+          "dev": true,
+          "requires": {
+            "compare-func": "^1.3.1",
+            "q": "^1.5.1"
+          }
+        },
+        "conventional-changelog-atom": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.1.tgz",
+          "integrity": "sha512-9BniJa4gLwL20Sm7HWSNXd0gd9c5qo49gCi8nylLFpqAHhkFTj7NQfROq3f1VpffRtzfTQp4VKU5nxbe2v+eZQ==",
+          "dev": true,
+          "requires": {
+            "q": "^1.5.1"
+          }
+        },
+        "conventional-changelog-codemirror": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.1.tgz",
+          "integrity": "sha512-23kT5IZWa+oNoUaDUzVXMYn60MCdOygTA2I+UjnOMiYVhZgmVwNd6ri/yDlmQGXHqbKhNR5NoXdBzSOSGxsgIQ==",
+          "dev": true,
+          "requires": {
+            "q": "^1.5.1"
+          }
+        },
+        "conventional-changelog-core": {
+          "version": "3.1.6",
+          "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.1.6.tgz",
+          "integrity": "sha512-5teTAZOtJ4HLR6384h50nPAaKdDr+IaU0rnD2Gg2C3MS7hKsEPH8pZxrDNqam9eOSPQg9tET6uZY79zzgSz+ig==",
+          "dev": true,
+          "requires": {
+            "conventional-changelog-writer": "^4.0.3",
+            "conventional-commits-parser": "^3.0.1",
+            "dateformat": "^3.0.0",
+            "get-pkg-repo": "^1.0.0",
+            "git-raw-commits": "2.0.0",
+            "git-remote-origin-url": "^2.0.0",
+            "git-semver-tags": "^2.0.2",
+            "lodash": "^4.2.1",
+            "normalize-package-data": "^2.3.5",
+            "q": "^1.5.1",
+            "read-pkg": "^3.0.0",
+            "read-pkg-up": "^3.0.0",
+            "through2": "^2.0.0"
+          }
+        },
+        "conventional-changelog-ember": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.2.tgz",
+          "integrity": "sha512-qtZbA3XefO/n6DDmkYywDYi6wDKNNc98MMl2F9PKSaheJ25Trpi3336W8fDlBhq0X+EJRuseceAdKLEMmuX2tg==",
+          "dev": true,
+          "requires": {
+            "q": "^1.5.1"
+          }
+        },
+        "conventional-changelog-eslint": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.1.tgz",
+          "integrity": "sha512-yH3+bYrtvgKxSFChUBQnKNh9/U9kN2JElYBm253VpYs5wXhPHVc9ENcuVGWijh24nnOkei7wEJmnmUzgZ4ok+A==",
+          "dev": true,
+          "requires": {
+            "q": "^1.5.1"
+          }
+        },
+        "conventional-changelog-express": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.1.tgz",
+          "integrity": "sha512-G6uCuCaQhLxdb4eEfAIHpcfcJ2+ao3hJkbLrw/jSK/eROeNfnxCJasaWdDAfFkxsbpzvQT4W01iSynU3OoPLIw==",
+          "dev": true,
+          "requires": {
+            "q": "^1.5.1"
+          }
+        },
+        "conventional-changelog-jquery": {
+          "version": "3.0.4",
+          "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.4.tgz",
+          "integrity": "sha512-IVJGI3MseYoY6eybknnTf9WzeQIKZv7aNTm2KQsiFVJH21bfP2q7XVjfoMibdCg95GmgeFlaygMdeoDDa+ZbEQ==",
+          "dev": true,
+          "requires": {
+            "q": "^1.5.1"
+          }
+        },
+        "conventional-changelog-jshint": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.1.tgz",
+          "integrity": "sha512-kRFJsCOZzPFm2tzRHULWP4tauGMvccOlXYf3zGeuSW4U0mZhk5NsjnRZ7xFWrTFPlCLV+PNmHMuXp5atdoZmEg==",
+          "dev": true,
+          "requires": {
+            "compare-func": "^1.3.1",
+            "q": "^1.5.1"
+          }
+        },
+        "conventional-changelog-preset-loader": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.2.tgz",
+          "integrity": "sha512-pBY+qnUoJPXAXXqVGwQaVmcye05xi6z231QM98wHWamGAmu/ghkBprQAwmF5bdmyobdVxiLhPY3PrCfSeUNzRQ==",
+          "dev": true
+        },
+        "conventional-changelog-writer": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.3.tgz",
+          "integrity": "sha512-bIlpSiQtQZ1+nDVHEEh798Erj2jhN/wEjyw9sfxY9es6h7pREE5BNJjfv0hXGH/FTrAsEpHUq4xzK99eePpwuA==",
+          "dev": true,
+          "requires": {
+            "compare-func": "^1.3.1",
+            "conventional-commits-filter": "^2.0.1",
+            "dateformat": "^3.0.0",
+            "handlebars": "^4.1.0",
+            "json-stringify-safe": "^5.0.1",
+            "lodash": "^4.2.1",
+            "meow": "^4.0.0",
+            "semver": "^5.5.0",
+            "split": "^1.0.0",
+            "through2": "^2.0.0"
+          }
+        },
+        "conventional-commits-filter": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz",
+          "integrity": "sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A==",
+          "dev": true,
+          "requires": {
+            "is-subset": "^0.1.1",
+            "modify-values": "^1.0.0"
+          }
+        },
+        "conventional-commits-parser": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz",
+          "integrity": "sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg==",
+          "dev": true,
+          "requires": {
+            "JSONStream": "^1.0.4",
+            "is-text-path": "^1.0.0",
+            "lodash": "^4.2.1",
+            "meow": "^4.0.0",
+            "split2": "^2.0.0",
+            "through2": "^2.0.0",
+            "trim-off-newlines": "^1.0.0"
+          }
+        },
+        "detect-indent": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz",
+          "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=",
+          "dev": true
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "git-semver-tags": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.2.tgz",
+          "integrity": "sha512-34lMF7Yo1xEmsK2EkbArdoU79umpvm0MfzaDkSNYSJqtM5QLAVTPWgpiXSVI5o/O9EvZPSrP4Zvnec/CqhSd5w==",
+          "dev": true,
+          "requires": {
+            "meow": "^4.0.0",
+            "semver": "^5.5.0"
+          }
+        },
+        "handlebars": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.1.tgz",
+          "integrity": "sha512-3Zhi6C0euYZL5sM0Zcy7lInLXKQ+YLcF/olbN010mzGQ4XVm50JeyBnMqofHh696GrciGruC7kCcApPDJvVgwA==",
+          "dev": true,
+          "requires": {
+            "neo-async": "^2.6.0",
+            "optimist": "^0.6.1",
+            "source-map": "^0.6.1",
+            "uglify-js": "^3.1.4"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        },
+        "read-pkg": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+          "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "^4.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^3.0.0"
+          }
+        },
+        "read-pkg-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+          "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+          "dev": true,
+          "requires": {
+            "find-up": "^2.0.0",
+            "read-pkg": "^3.0.0"
+          }
+        }
+      }
+    },
+    "static-extend": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+      "dev": true,
+      "requires": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+      "dev": true
+    },
+    "stealthy-require": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
+      "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
+      "dev": true
+    },
+    "streamroller": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz",
+      "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==",
+      "dev": true,
+      "requires": {
+        "date-format": "^1.2.0",
+        "debug": "^3.1.0",
+        "mkdirp": "^0.5.1",
+        "readable-stream": "^2.3.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "dev": true
+        }
+      }
+    },
+    "string-width": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+      "dev": true,
+      "requires": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "stringify-package": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.0.tgz",
+      "integrity": "sha512-JIQqiWmLiEozOC0b0BtxZ/AOUtdUZHCBPgqIZ2kSJJqGwgb9neo44XdTHUC4HZSGqi03hOeB7W/E8rAlKnGe9g==",
+      "dev": true
+    },
+    "strip-ansi": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+      "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^3.0.0"
+      }
+    },
+    "strip-bom": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+      "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+      "dev": true
+    },
+    "strip-eof": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+      "dev": true
+    },
+    "strip-indent": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
+      "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+      "dev": true
+    },
+    "supports-color": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+      "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+      "dev": true,
+      "requires": {
+        "has-flag": "^2.0.0"
+      },
+      "dependencies": {
+        "has-flag": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+          "dev": true
+        }
+      }
+    },
+    "symbol-tree": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
+      "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=",
+      "dev": true
+    },
+    "systemjs": {
+      "version": "0.19.46",
+      "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.46.tgz",
+      "integrity": "sha1-wEV0szNfBSoOPHoA7kGIxuTB444=",
+      "dev": true,
+      "requires": {
+        "when": "^3.7.5"
+      }
+    },
+    "systemjs-builder": {
+      "version": "0.15.36",
+      "resolved": "https://registry.npmjs.org/systemjs-builder/-/systemjs-builder-0.15.36.tgz",
+      "integrity": "sha1-MLAjctQifPN4gPWA/mfLTtt/FCA=",
+      "dev": true,
+      "requires": {
+        "babel-core": "^6.9.0",
+        "babel-plugin-transform-cjs-system-wrapper": "^0.3.0",
+        "babel-plugin-transform-es2015-modules-systemjs": "^6.6.5",
+        "babel-plugin-transform-global-system-wrapper": "0.0.1",
+        "babel-plugin-transform-system-register": "0.0.1",
+        "bluebird": "^3.3.4",
+        "data-uri-to-buffer": "0.0.4",
+        "es6-template-strings": "^2.0.0",
+        "glob": "^7.0.3",
+        "mkdirp": "^0.5.1",
+        "rollup": "^0.36.3",
+        "source-map": "^0.5.3",
+        "systemjs": "^0.19.43",
+        "traceur": "0.0.105",
+        "uglify-js": "~2.7.5"
+      },
+      "dependencies": {
+        "async": {
+          "version": "0.2.10",
+          "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+          "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+          "dev": true
+        },
+        "camelcase": {
+          "version": "1.2.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+          "dev": true
+        },
+        "cliui": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+          "dev": true,
+          "requires": {
+            "center-align": "^0.1.1",
+            "right-align": "^0.1.1",
+            "wordwrap": "0.0.2"
+          }
+        },
+        "decamelize": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+          "dev": true
+        },
+        "rollup": {
+          "version": "0.36.4",
+          "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.36.4.tgz",
+          "integrity": "sha1-oiRJTFOGwdc9OPe7hvafXrARo9I=",
+          "dev": true,
+          "requires": {
+            "source-map-support": "^0.4.0"
+          }
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        },
+        "uglify-js": {
+          "version": "2.7.5",
+          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz",
+          "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=",
+          "dev": true,
+          "requires": {
+            "async": "~0.2.6",
+            "source-map": "~0.5.1",
+            "uglify-to-browserify": "~1.0.0",
+            "yargs": "~3.10.0"
+          }
+        },
+        "wordwrap": {
+          "version": "0.0.2",
+          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+          "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+          "dev": true
+        },
+        "yargs": {
+          "version": "3.10.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^1.0.2",
+            "cliui": "^2.1.0",
+            "decamelize": "^1.0.0",
+            "window-size": "0.1.0"
+          }
+        }
+      }
+    },
+    "tar": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
+      "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+      "dev": true,
+      "requires": {
+        "block-stream": "*",
+        "fstream": "^1.0.2",
+        "inherits": "2"
+      }
+    },
+    "tempfile": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz",
+      "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=",
+      "dev": true,
+      "requires": {
+        "os-tmpdir": "^1.0.0",
+        "uuid": "^2.0.1"
+      },
+      "dependencies": {
+        "uuid": {
+          "version": "2.0.3",
+          "resolved": "http://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
+          "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
+          "dev": true
+        }
+      }
+    },
+    "text-extensions": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
+      "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
+      "dev": true
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+      "dev": true
+    },
+    "through2": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+      "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.1.5",
+        "xtend": "~4.0.1"
+      }
+    },
+    "tmp": {
+      "version": "0.0.33",
+      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+      "dev": true,
+      "requires": {
+        "os-tmpdir": "~1.0.2"
+      }
+    },
+    "to-array": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
+      "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
+      "dev": true
+    },
+    "to-fast-properties": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+      "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+      "dev": true
+    },
+    "to-object-path": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "to-regex": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+      "dev": true,
+      "requires": {
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "to-regex-range": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      }
+    },
+    "tough-cookie": {
+      "version": "2.4.3",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+      "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+      "dev": true,
+      "requires": {
+        "psl": "^1.1.24",
+        "punycode": "^1.4.1"
+      }
+    },
+    "tr46": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+      "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+          "dev": true
+        }
+      }
+    },
+    "traceur": {
+      "version": "0.0.105",
+      "resolved": "https://registry.npmjs.org/traceur/-/traceur-0.0.105.tgz",
+      "integrity": "sha1-XPne6D1rd4YcPWxE1ThZrterBHk=",
+      "dev": true,
+      "requires": {
+        "commander": "2.9.x",
+        "glob": "5.0.x",
+        "rsvp": "^3.0.13",
+        "semver": "^4.3.3",
+        "source-map-support": "~0.2.8"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.9.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
+          "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
+          "dev": true,
+          "requires": {
+            "graceful-readlink": ">= 1.0.0"
+          }
+        },
+        "glob": {
+          "version": "5.0.15",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+          "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+          "dev": true,
+          "requires": {
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "2 || 3",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "semver": {
+          "version": "4.3.6",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
+          "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.1.32",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz",
+          "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=",
+          "dev": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        },
+        "source-map-support": {
+          "version": "0.2.10",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz",
+          "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=",
+          "dev": true,
+          "requires": {
+            "source-map": "0.1.32"
+          }
+        }
+      }
+    },
+    "tree-kill": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz",
+      "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==",
+      "dev": true
+    },
+    "trim-newlines": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
+      "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
+      "dev": true
+    },
+    "trim-off-newlines": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz",
+      "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=",
+      "dev": true
+    },
+    "trim-right": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+      "dev": true
+    },
+    "tslib": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
+      "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
+      "dev": true
+    },
+    "tslint": {
+      "version": "5.11.0",
+      "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz",
+      "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=",
+      "dev": true,
+      "requires": {
+        "babel-code-frame": "^6.22.0",
+        "builtin-modules": "^1.1.1",
+        "chalk": "^2.3.0",
+        "commander": "^2.12.1",
+        "diff": "^3.2.0",
+        "glob": "^7.1.1",
+        "js-yaml": "^3.7.0",
+        "minimatch": "^3.0.4",
+        "resolve": "^1.3.2",
+        "semver": "^5.3.0",
+        "tslib": "^1.8.0",
+        "tsutils": "^2.27.2"
+      }
+    },
+    "tsutils": {
+      "version": "2.29.0",
+      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
+      "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.8.1"
+      }
+    },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "dev": true
+    },
+    "type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2"
+      }
+    },
+    "type-is": {
+      "version": "1.6.16",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
+      "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+      "dev": true,
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.18"
+      }
+    },
+    "typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+      "dev": true
+    },
+    "typedoc": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.12.0.tgz",
+      "integrity": "sha512-dsdlaYZ7Je8JC+jQ3j2Iroe4uyD0GhqzADNUVyBRgLuytQDP/g0dPkAw5PdM/4drnmmJjRzSWW97FkKo+ITqQg==",
+      "dev": true,
+      "requires": {
+        "@types/fs-extra": "^5.0.3",
+        "@types/handlebars": "^4.0.38",
+        "@types/highlight.js": "^9.12.3",
+        "@types/lodash": "^4.14.110",
+        "@types/marked": "^0.4.0",
+        "@types/minimatch": "3.0.3",
+        "@types/shelljs": "^0.8.0",
+        "fs-extra": "^7.0.0",
+        "handlebars": "^4.0.6",
+        "highlight.js": "^9.0.0",
+        "lodash": "^4.17.10",
+        "marked": "^0.4.0",
+        "minimatch": "^3.0.0",
+        "progress": "^2.0.0",
+        "shelljs": "^0.8.2",
+        "typedoc-default-themes": "^0.5.0",
+        "typescript": "3.0.x"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "4.17.11",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+          "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+          "dev": true
+        },
+        "typescript": {
+          "version": "3.0.3",
+          "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.3.tgz",
+          "integrity": "sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg==",
+          "dev": true
+        }
+      }
+    },
+    "typedoc-default-themes": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.5.0.tgz",
+      "integrity": "sha1-bcJDPnjti+qOiHo6zeLzF4W9Yic=",
+      "dev": true
+    },
+    "typescript": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
+      "integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==",
+      "dev": true
+    },
+    "uglify-js": {
+      "version": "3.4.9",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
+      "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "commander": "~2.17.1",
+        "source-map": "~0.6.1"
+      }
+    },
+    "uglify-to-browserify": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+      "dev": true
+    },
+    "ultron": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
+      "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==",
+      "dev": true
+    },
+    "unc-path-regex": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+      "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
+      "dev": true
+    },
+    "union-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+      "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^0.4.3"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "set-value": {
+          "version": "0.4.3",
+          "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
+          "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-extendable": "^0.1.1",
+            "is-plain-object": "^2.0.1",
+            "to-object-path": "^0.3.0"
+          }
+        }
+      }
+    },
+    "universalify": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+      "dev": true
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true
+    },
+    "unset-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "dev": true,
+      "requires": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "dependencies": {
+        "has-value": {
+          "version": "0.3.1",
+          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+          "dev": true,
+          "requires": {
+            "get-value": "^2.0.3",
+            "has-values": "^0.1.4",
+            "isobject": "^2.0.0"
+          },
+          "dependencies": {
+            "isobject": {
+              "version": "2.1.0",
+              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+              "dev": true,
+              "requires": {
+                "isarray": "1.0.0"
+              }
+            }
+          }
+        },
+        "has-values": {
+          "version": "0.1.4",
+          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+          "dev": true
+        }
+      }
+    },
+    "upath": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
+      "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
+      "dev": true
+    },
+    "urix": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+      "dev": true
+    },
+    "use": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+      "dev": true
+    },
+    "useragent": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz",
+      "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=",
+      "dev": true,
+      "requires": {
+        "lru-cache": "2.2.x",
+        "tmp": "0.0.x"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "2.2.4",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
+          "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=",
+          "dev": true
+        }
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true
+    },
+    "utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true
+    },
+    "uuid": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+      "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+      "dev": true
+    },
+    "validate-npm-package-license": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+      "dev": true,
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "verror": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      }
+    },
+    "void-elements": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
+      "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
+      "dev": true
+    },
+    "webidl-conversions": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+      "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+      "dev": true
+    },
+    "whatwg-encoding": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+      "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+      "dev": true,
+      "requires": {
+        "iconv-lite": "0.4.24"
+      }
+    },
+    "whatwg-url": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz",
+      "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==",
+      "dev": true,
+      "requires": {
+        "lodash.sortby": "^4.7.0",
+        "tr46": "^1.0.1",
+        "webidl-conversions": "^4.0.2"
+      }
+    },
+    "when": {
+      "version": "3.7.8",
+      "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
+      "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=",
+      "dev": true
+    },
+    "which": {
+      "version": "1.2.14",
+      "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
+      "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-module": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+      "dev": true
+    },
+    "window-size": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+      "dev": true
+    },
+    "wordwrap": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+      "dev": true
+    },
+    "wrap-ansi": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+          "dev": true,
+          "requires": {
+            "number-is-nan": "^1.0.0"
+          }
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "dev": true,
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        }
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "ws": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
+      "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
+      "dev": true,
+      "requires": {
+        "async-limiter": "~1.0.0",
+        "safe-buffer": "~5.1.0",
+        "ultron": "~1.1.0"
+      }
+    },
+    "xml-name-validator": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz",
+      "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=",
+      "dev": true
+    },
+    "xmlhttprequest-ssl": {
+      "version": "1.5.5",
+      "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
+      "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=",
+      "dev": true
+    },
+    "xregexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz",
+      "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==",
+      "dev": true
+    },
+    "xtend": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+      "dev": true
+    },
+    "y18n": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+      "dev": true
+    },
+    "yallist": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+      "dev": true
+    },
+    "yargs": {
+      "version": "12.0.2",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
+      "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
+      "dev": true,
+      "requires": {
+        "cliui": "^4.0.0",
+        "decamelize": "^2.0.0",
+        "find-up": "^3.0.0",
+        "get-caller-file": "^1.0.1",
+        "os-locale": "^3.0.0",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^1.0.1",
+        "set-blocking": "^2.0.0",
+        "string-width": "^2.0.0",
+        "which-module": "^2.0.0",
+        "y18n": "^3.2.1 || ^4.0.0",
+        "yargs-parser": "^10.1.0"
+      }
+    },
+    "yargs-parser": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
+      "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
+      "dev": true,
+      "requires": {
+        "camelcase": "^4.1.0"
+      }
+    },
+    "yauzl": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+      "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
+      "dev": true,
+      "requires": {
+        "buffer-crc32": "~0.2.3",
+        "fd-slicer": "~1.1.0"
+      }
+    },
+    "yeast": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
+      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
+      "dev": true
+    }
+  }
+}
diff --git a/package.json b/package.json
index 14daa23..ffe5b0f 100644
--- a/package.json
+++ b/package.json
@@ -1,115 +1,105 @@
-{
-  "name": "aurelia-dependency-injection",
-  "version": "1.4.2",
-  "description": "A lightweight, extensible dependency injection container for JavaScript.",
-  "keywords": [
-    "aurelia",
-    "di",
-    "dependency injection",
-    "ioc"
-  ],
-  "homepage": "http://aurelia.io",
-  "bugs": {
-    "url": "https://github.com/aurelia/dependency-injection/issues"
-  },
-  "license": "MIT",
-  "author": "Rob Eisenberg <rob@bluespire.com> (http://robeisenberg.com/)",
-  "main": "dist/commonjs/aurelia-dependency-injection.js",
-  "module": "dist/es2015/aurelia-dependency-injection.js",
-  "typings": "dist/aurelia-dependency-injection.d.ts",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/aurelia/dependency-injection"
-  },
-  "files": [
-    "dist",
-    "doc",
-    "src",
-    "typings.json",
-    "README.md",
-    "LICENSE"
-  ],
-  "scripts": {
-    "lint": "cross-env tslint --project tsconfig.json",
-    "pretest": "cross-env npm run lint",
-    "test": "cross-env rimraf dist && tsc && karma start --single-run",
-    "develop": "concurrently \"./node_modules/.bin/tsc --watch\" \"./node_modules/.bin/karma start\"",
-    "prebuild": "cross-env rimraf dist",
-    "build": "rollup -c --environment NODE_ENV:production",
-    "postbuild": "npm run build:dts",
-    "build:dts": "dts-bundle-generator ./src/aurelia-dependency-injection.ts -o dist/aurelia-dependency-injection.d.ts",
-    "predoc": "cross-env rimraf doc/api.json && rimraf dist/doc-temp && tsc --project tsconfig.build.json && node doc/shape-defs && copyfiles tsconfig.json dist/doc-temp",
-    "doc": "cross-env typedoc --json doc/api.json --excludeExternals --includeDeclarations --mode modules --target ES6 --name aurelia-dependency-injection-docs dist",
-    "postdoc": "cross-env node doc/shape-doc && rimraf dist/doc-temp",
-    "precut-release": "cross-env npm run test",
-    "cut-release": "standard-version -t \"\" -i doc/CHANGELOG.md && npm run build && npm run doc"
-  },
-  "jspm": {
-    "registry": "npm",
-    "jspmPackage": true,
-    "main": "aurelia-dependency-injection",
-    "format": "amd",
-    "directories": {
-      "dist": "dist/amd"
-    },
-    "peerDependencies": {
-      "aurelia-metadata": "^1.0.0",
-      "aurelia-pal": "^1.0.0"
-    },
-    "dependencies": {
-      "aurelia-metadata": "^1.0.0",
-      "aurelia-pal": "^1.0.0"
-    },
-    "devDependencies": {
-      "aurelia-polyfills": "^1.0.0-beta.1.0.1",
-      "babel": "babel-core@^5.1.13",
-      "babel-runtime": "^5.1.13",
-      "core-js": "^2.0.3"
-    }
-  },
-  "dependencies": {
-    "aurelia-metadata": "^1.0.0",
-    "aurelia-pal": "^1.0.0"
-  },
-  "devDependencies": {
-    "@types/jsdom": "^12.2.0",
-    "@types/node": "^8.5.1",
-    "aurelia-bootstrapper": "^2.3.0",
-    "aurelia-pal-browser": "^1.8.0",
-    "aurelia-pal-nodejs": "^1.1.1",
-    "aurelia-polyfills": "^1.3.0",
-    "aurelia-testing": "^1.0.0",
-    "concurrently": "^4.0.1",
-    "conventional-changelog-cli": "^2.0.5",
-    "copyfiles": "^2.1.0",
-    "cross-env": "^5.2.0",
-    "dts-bundle-generator": "^2.1.0",
-    "jasmine-core": "^3.2.1",
-    "jspm": "^0.16.53",
-    "karma": "^3.0.0",
-    "karma-chrome-launcher": "^2.2.0",
-    "karma-ie-launcher": "^1.0.0",
-    "karma-jasmine": "^1.1.2",
-    "karma-requirejs": "^1.1.0",
-    "requirejs": "^2.3.6",
-    "requirejs-text": "^2.0.15",
-    "rimraf": "^2.6.2",
-    "rollup": "^0.66.2",
-    "rollup-plugin-typescript2": "^0.17.0",
-    "standard-version": "^5.0.2",
-    "tslib": "^1.9.3",
-    "tslint": "^5.11.0",
-    "typedoc": "^0.12.0",
-    "typescript": "^3.4.1"
-  },
-  "aurelia": {
-    "documentation": {
-      "articles": [
-        {
-          "title": "Dependency Injection: Basics",
-          "href": "doc/article/en-US/dependency-injection-basics.md"
-        }
-      ]
-    }
-  }
-}
+{
+  "name": "aurelia-dependency-injection",
+  "version": "1.5.0",
+  "description": "A lightweight, extensible dependency injection container for JavaScript.",
+  "keywords": [
+    "aurelia",
+    "di",
+    "dependency injection",
+    "ioc"
+  ],
+  "homepage": "http://aurelia.io",
+  "bugs": {
+    "url": "https://github.com/aurelia/dependency-injection/issues"
+  },
+  "license": "MIT",
+  "author": "Rob Eisenberg <rob@bluespire.com> (http://robeisenberg.com/)",
+  "main": "dist/commonjs/aurelia-dependency-injection.js",
+  "module": "dist/es2015/aurelia-dependency-injection.js",
+  "typings": "dist/aurelia-dependency-injection.d.ts",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/aurelia/dependency-injection"
+  },
+  "files": [
+    "dist",
+    "doc",
+    "src",
+    "typings.json",
+    "README.md",
+    "LICENSE"
+  ],
+  "scripts": {
+    "lint": "cross-env tslint --project tsconfig.json",
+    "pretest": "cross-env npm run lint",
+    "test": "cross-env rimraf dist && tsc && karma start --single-run",
+    "develop": "concurrently \"./node_modules/.bin/tsc --watch\" \"./node_modules/.bin/karma start\"",
+    "prebuild": "cross-env rimraf dist",
+    "build": "rollup -c --environment NODE_ENV:production",
+    "postbuild": "npm run build:dts",
+    "build:dts": "dts-bundle-generator ./src/aurelia-dependency-injection.ts -o dist/aurelia-dependency-injection.d.ts",
+    "predoc": "cross-env rimraf doc/api.json && rimraf dist/doc-temp && tsc --project tsconfig.build.json && node doc/shape-defs && copyfiles tsconfig.json dist/doc-temp",
+    "doc": "cross-env typedoc --json doc/api.json --excludeExternals --includeDeclarations --mode modules --target ES6 --name aurelia-dependency-injection-docs dist",
+    "postdoc": "cross-env node doc/shape-doc && rimraf dist/doc-temp",
+    "precut-release": "cross-env npm run test",
+    "cut-release": "standard-version -t \"\" -i doc/CHANGELOG.md && npm run build && npm run doc"
+  },
+  "jspm": {
+    "registry": "npm",
+    "jspmPackage": true,
+    "main": "aurelia-dependency-injection",
+    "format": "amd",
+    "directories": {
+      "dist": "dist/amd"
+    },
+    "peerDependencies": {
+      "aurelia-metadata": "^1.0.0",
+      "aurelia-pal": "^1.0.0"
+    },
+    "dependencies": {
+      "aurelia-metadata": "^1.0.0",
+      "aurelia-pal": "^1.0.0"
+    },
+    "devDependencies": {
+      "aurelia-polyfills": "^1.0.0-beta.1.0.1",
+      "babel": "babel-core@^5.1.13",
+      "babel-runtime": "^5.1.13",
+      "core-js": "^2.0.3"
+    }
+  },
+  "dependencies": {
+    "aurelia-metadata": "^1.0.0",
+    "aurelia-pal": "^1.0.0"
+  },
+  "devDependencies": {
+    "@types/jsdom": "^12.2.0",
+    "@types/node": "^8.5.1",
+    "aurelia-bootstrapper": "^2.3.0",
+    "aurelia-pal-browser": "^1.8.0",
+    "aurelia-pal-nodejs": "^1.1.1",
+    "aurelia-polyfills": "^1.3.0",
+    "aurelia-testing": "^1.0.0",
+    "concurrently": "^4.0.1",
+    "conventional-changelog-cli": "^2.0.5",
+    "copyfiles": "^2.1.0",
+    "cross-env": "^5.2.0",
+    "dts-bundle-generator": "^2.1.0",
+    "jasmine-core": "^3.2.1",
+    "jspm": "^0.16.53",
+    "karma": "^3.0.0",
+    "karma-chrome-launcher": "^2.2.0",
+    "karma-ie-launcher": "^1.0.0",
+    "karma-jasmine": "^1.1.2",
+    "karma-requirejs": "^1.1.0",
+    "requirejs": "^2.3.6",
+    "requirejs-text": "^2.0.15",
+    "rimraf": "^2.6.2",
+    "rollup": "^0.66.2",
+    "rollup-plugin-typescript2": "^0.17.0",
+    "standard-version": "^5.0.2",
+    "tslib": "^1.9.3",
+    "tslint": "^5.11.0",
+    "typedoc": "^0.12.0",
+    "typescript": "^3.4.1"
+  }
+}