{"version":3,"sources":["webpack:///./node_modules/aurelia-route-recognizer/dist/native-modules/aurelia-route-recognizer.js","webpack:///./node_modules/aurelia-router/dist/native-modules/aurelia-router.js","webpack:///./node_modules/aurelia-polyfills/dist/native-modules/aurelia-polyfills.js","webpack:///./node_modules/aurelia-path/dist/native-modules/aurelia-path.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAEkE;;AAE3D;AACP;;;AAGA;AACA;AACA;;AAEA;AACA,wJAAwJ;AACxJ;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C,OAAO;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED,oEAAoE,KAAK;;AAEzE;;AAEO;AACP;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA,gBAAgB,4EAA4E;AAC5F;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;;;AAGA;AACA;AACA;;AAEA;AACA,cAAc,kCAAkC;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;;;AAGA;AACA;;AAEA;AACA,cAAc,iCAAiC;AAC/C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kDAAkD,QAAQ;AAC1D;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,kBAAkB;AACzD;AACA;;AAEA,qBAAqB,uCAAuC;;AAE5D,oCAAoC,yCAAyC;AAC7E;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA,yCAAyC;AACzC;AACA;AACA;;AAEA,qBAAqB,8BAA8B;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;AACA;;AAEA,wCAAwC,OAAO;AAC/C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,qEAAgB;AACtC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,qEAAgB;AACpC;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC,UAAU;AACnD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,yCAAyC,QAAQ;AACjD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,OAAO;AAC7C;AACA;AACA;;AAEA,sCAAsC,OAAO;AAC7C;AACA;;AAEA,iBAAiB,yEAAyE;AAC1F;;AAEA;AACA;;AAEA;AACA,qCAAqC,kBAAkB;AACvD;AACA;AACA;AACA,GAAG;;AAEH;AACA,C;;;;;;;;;;;;ACpfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;;;AAI9b;AACa;AACF;AACI;AACF;;AAEpD;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;AACA;AACA;;AAEA;AACA;;AAEO;AACP;;AAEA;AACA,6CAA6C,QAAQ;AACrD,oCAAoC;AACpC;AACA;AACA;AACA,GAAG;AACH,sCAAsC;AACtC;;AAEA;AACA;;AAEA;AACA;;AAEO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,CAAC;;AAEM;AACP;;;AAGA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL,mDAAmD;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,iCAAiC,0BAA0B,gCAAgC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B,+DAA+D;AAC5F;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEO;AACP;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;;;;AAIA;AACA,kCAAkC,+BAA+B;AACjE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;AACA;AACA;;;;AAIA;AACA;AACA,kCAAkC,+BAA+B;AACjE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,uCAAuC,OAAO;AAC9C;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA,4BAA4B,iFAAiF;AAC7G;AACA;;AAEO;AACP;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B,yBAAyB;AACtD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,UAAU;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;;AAEO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wEAAe;AAC1C,gCAAgC,wEAAe;AAC/C;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC,4DAA4D;;AAElG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,oEAAoE;AACpE,iBAAiB,iBAAiB;AAClC,uDAAuD;AACvD,sBAAsB;;AAEtB;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,sEAAsE;AACtE,mBAAmB,iBAAiB;AACpC,yDAAyD;AACzD;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB,OAAO;AACP;AACA;;AAEA;AACA,KAAK;AACL,sCAAsC,cAAc;AACpD,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEO;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEO;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;AACA;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,mBAAmB,6EAA6E;;AAEhG;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA,CAAC;;AAEM;AACP;AACA,YAAY,sEAAS;AACrB;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,aAAa,yDAAoB;;AAE1B;AACP;;AAEA;AACA,YAAY,sEAAS,EAAE,uDAAO,oBAAoB,wEAAe;AACjE;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gEAAgE,2BAA2B;AAC3F,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP,gBAAgB;AAChB,OAAO;AACP;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,sDAAsD,gCAAgC;AACtF,GAAG;AACH,2CAA2C,+BAA+B;AAC1E,GAAG;AACH;AACA;AACA,C;;;;;;;;;;;;ACv4DA;AAAA;AAAA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAEnO;;AAEvC;;AAEA;AACA;;AAEA;;AAEA;AACA,YAAY,oDAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,+BAA+B;AAC/B;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C;AAC9C;AACA,+CAA+C,eAAe;AAC9D;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,aAAa,IAAI;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,aAAa,IAAI;AAC1C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,gCAAgC;AAC3F;AACA;AACA,SAAS;AACT;AACA,sCAAsC,gBAAgB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gDAAgD,QAAQ;AACxD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,8CAA8C;AAC9C;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,wDAAwD,0BAA0B,IAAI;AACtF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,oDAAQ;AACb;;AAEA;;AAEA;;AAEA,aAAa,oDAAQ;AACrB,IAAI,oDAAQ;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,sCAAsC;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8FAA8F;AAC9F;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AC90BA;AAAA;AAAA;AAAA;AAAA;AAAA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,mCAAmC,QAAQ;AAC3C;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA,qCAAqC,UAAU;AAC/C;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO;AACP;AACA,qCAAqC;AACrC,oCAAoC,SAAS;AAC7C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA,gFAAgF;AAChF,KAAK;AACL;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,C","file":"vendors~50e8d500.eee850ece001fdc3778a.chunk.js","sourcesContent":["\n\nimport { buildQueryString, parseQueryString } from 'aurelia-path';\n\nexport var State = function () {\n  function State(charSpec) {\n    \n\n    this.charSpec = charSpec;\n    this.nextStates = [];\n  }\n\n  State.prototype.get = function get(charSpec) {\n    for (var _iterator = this.nextStates, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n      var _ref;\n\n      if (_isArray) {\n        if (_i >= _iterator.length) break;\n        _ref = _iterator[_i++];\n      } else {\n        _i = _iterator.next();\n        if (_i.done) break;\n        _ref = _i.value;\n      }\n\n      var child = _ref;\n\n      var isEqual = child.charSpec.validChars === charSpec.validChars && child.charSpec.invalidChars === charSpec.invalidChars;\n\n      if (isEqual) {\n        return child;\n      }\n    }\n\n    return undefined;\n  };\n\n  State.prototype.put = function put(charSpec) {\n    var state = this.get(charSpec);\n\n    if (state) {\n      return state;\n    }\n\n    state = new State(charSpec);\n\n    this.nextStates.push(state);\n\n    if (charSpec.repeat) {\n      state.nextStates.push(state);\n    }\n\n    return state;\n  };\n\n  State.prototype.match = function match(ch) {\n    var nextStates = this.nextStates;\n    var results = [];\n\n    for (var i = 0, l = nextStates.length; i < l; i++) {\n      var child = nextStates[i];\n      var charSpec = child.charSpec;\n\n      if (charSpec.validChars !== undefined) {\n        if (charSpec.validChars.indexOf(ch) !== -1) {\n          results.push(child);\n        }\n      } else if (charSpec.invalidChars !== undefined) {\n        if (charSpec.invalidChars.indexOf(ch) === -1) {\n          results.push(child);\n        }\n      }\n    }\n\n    return results;\n  };\n\n  return State;\n}();\n\nvar specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\'];\n\nvar escapeRegex = new RegExp('(\\\\' + specials.join('|\\\\') + ')', 'g');\n\nexport var StaticSegment = function () {\n  function StaticSegment(string, caseSensitive) {\n    \n\n    this.string = string;\n    this.caseSensitive = caseSensitive;\n  }\n\n  StaticSegment.prototype.eachChar = function eachChar(callback) {\n    var s = this.string;\n    for (var i = 0, ii = s.length; i < ii; ++i) {\n      var ch = s[i];\n      callback({ validChars: this.caseSensitive ? ch : ch.toUpperCase() + ch.toLowerCase() });\n    }\n  };\n\n  StaticSegment.prototype.regex = function regex() {\n    return this.string.replace(escapeRegex, '\\\\$1');\n  };\n\n  StaticSegment.prototype.generate = function generate() {\n    return this.string;\n  };\n\n  return StaticSegment;\n}();\n\nexport var DynamicSegment = function () {\n  function DynamicSegment(name, optional) {\n    \n\n    this.name = name;\n    this.optional = optional;\n  }\n\n  DynamicSegment.prototype.eachChar = function eachChar(callback) {\n    callback({ invalidChars: '/', repeat: true });\n  };\n\n  DynamicSegment.prototype.regex = function regex() {\n    return '([^/]+)';\n  };\n\n  DynamicSegment.prototype.generate = function generate(params, consumed) {\n    consumed[this.name] = true;\n    return params[this.name];\n  };\n\n  return DynamicSegment;\n}();\n\nexport var StarSegment = function () {\n  function StarSegment(name) {\n    \n\n    this.name = name;\n  }\n\n  StarSegment.prototype.eachChar = function eachChar(callback) {\n    callback({ invalidChars: '', repeat: true });\n  };\n\n  StarSegment.prototype.regex = function regex() {\n    return '(.+)';\n  };\n\n  StarSegment.prototype.generate = function generate(params, consumed) {\n    consumed[this.name] = true;\n    return params[this.name];\n  };\n\n  return StarSegment;\n}();\n\nexport var EpsilonSegment = function () {\n  function EpsilonSegment() {\n    \n  }\n\n  EpsilonSegment.prototype.eachChar = function eachChar() {};\n\n  EpsilonSegment.prototype.regex = function regex() {\n    return '';\n  };\n\n  EpsilonSegment.prototype.generate = function generate() {\n    return '';\n  };\n\n  return EpsilonSegment;\n}();\n\nexport var RouteRecognizer = function () {\n  function RouteRecognizer() {\n    \n\n    this.rootState = new State();\n    this.names = {};\n    this.routes = new Map();\n  }\n\n  RouteRecognizer.prototype.add = function add(route) {\n    var _this = this;\n\n    if (Array.isArray(route)) {\n      route.forEach(function (r) {\n        return _this.add(r);\n      });\n      return undefined;\n    }\n\n    var currentState = this.rootState;\n    var skippableStates = [];\n    var regex = '^';\n    var types = { statics: 0, dynamics: 0, stars: 0 };\n    var names = [];\n    var routeName = route.handler.name;\n    var isEmpty = true;\n    var segments = parse(route.path, names, types, route.caseSensitive);\n\n    for (var i = 0, ii = segments.length; i < ii; i++) {\n      var segment = segments[i];\n      if (segment instanceof EpsilonSegment) {\n        continue;\n      }\n\n      var _addSegment = addSegment(currentState, segment),\n          firstState = _addSegment[0],\n          nextState = _addSegment[1];\n\n      for (var j = 0, jj = skippableStates.length; j < jj; j++) {\n        skippableStates[j].nextStates.push(firstState);\n      }\n\n      if (segment.optional) {\n        skippableStates.push(nextState);\n        regex += '(?:/' + segment.regex() + ')?';\n      } else {\n        currentState = nextState;\n        regex += '/' + segment.regex();\n        skippableStates.length = 0;\n        isEmpty = false;\n      }\n    }\n\n    if (isEmpty) {\n      currentState = currentState.put({ validChars: '/' });\n      regex += '/?';\n    }\n\n    var handlers = [{ handler: route.handler, names: names }];\n\n    this.routes.set(route.handler, { segments: segments, handlers: handlers });\n    if (routeName) {\n      var routeNames = Array.isArray(routeName) ? routeName : [routeName];\n      for (var _i2 = 0; _i2 < routeNames.length; _i2++) {\n        if (!(routeNames[_i2] in this.names)) {\n          this.names[routeNames[_i2]] = { segments: segments, handlers: handlers };\n        }\n      }\n    }\n\n    for (var _i3 = 0; _i3 < skippableStates.length; _i3++) {\n      var state = skippableStates[_i3];\n      state.handlers = handlers;\n      state.regex = new RegExp(regex + '$', route.caseSensitive ? '' : 'i');\n      state.types = types;\n    }\n\n    currentState.handlers = handlers;\n    currentState.regex = new RegExp(regex + '$', route.caseSensitive ? '' : 'i');\n    currentState.types = types;\n\n    return currentState;\n  };\n\n  RouteRecognizer.prototype.getRoute = function getRoute(nameOrRoute) {\n    return typeof nameOrRoute === 'string' ? this.names[nameOrRoute] : this.routes.get(nameOrRoute);\n  };\n\n  RouteRecognizer.prototype.handlersFor = function handlersFor(nameOrRoute) {\n    var route = this.getRoute(nameOrRoute);\n    if (!route) {\n      throw new Error('There is no route named ' + nameOrRoute);\n    }\n\n    return [].concat(route.handlers);\n  };\n\n  RouteRecognizer.prototype.hasRoute = function hasRoute(nameOrRoute) {\n    return !!this.getRoute(nameOrRoute);\n  };\n\n  RouteRecognizer.prototype.generate = function generate(nameOrRoute, params) {\n    var route = this.getRoute(nameOrRoute);\n    if (!route) {\n      throw new Error('There is no route named ' + nameOrRoute);\n    }\n\n    var handler = route.handlers[0].handler;\n    if (handler.generationUsesHref) {\n      return handler.href;\n    }\n\n    var routeParams = Object.assign({}, params);\n    var segments = route.segments;\n    var consumed = {};\n    var output = '';\n\n    for (var i = 0, l = segments.length; i < l; i++) {\n      var segment = segments[i];\n\n      if (segment instanceof EpsilonSegment) {\n        continue;\n      }\n\n      var segmentValue = segment.generate(routeParams, consumed);\n      if (segmentValue === null || segmentValue === undefined) {\n        if (!segment.optional) {\n          throw new Error('A value is required for route parameter \\'' + segment.name + '\\' in route \\'' + nameOrRoute + '\\'.');\n        }\n      } else {\n        output += '/';\n        output += segmentValue;\n      }\n    }\n\n    if (output.charAt(0) !== '/') {\n      output = '/' + output;\n    }\n\n    for (var param in consumed) {\n      delete routeParams[param];\n    }\n\n    var queryString = buildQueryString(routeParams);\n    output += queryString ? '?' + queryString : '';\n\n    return output;\n  };\n\n  RouteRecognizer.prototype.recognize = function recognize(path) {\n    var states = [this.rootState];\n    var queryParams = {};\n    var isSlashDropped = false;\n    var normalizedPath = path;\n\n    var queryStart = normalizedPath.indexOf('?');\n    if (queryStart !== -1) {\n      var queryString = normalizedPath.substr(queryStart + 1, normalizedPath.length);\n      normalizedPath = normalizedPath.substr(0, queryStart);\n      queryParams = parseQueryString(queryString);\n    }\n\n    normalizedPath = decodeURI(normalizedPath);\n\n    if (normalizedPath.charAt(0) !== '/') {\n      normalizedPath = '/' + normalizedPath;\n    }\n\n    var pathLen = normalizedPath.length;\n    if (pathLen > 1 && normalizedPath.charAt(pathLen - 1) === '/') {\n      normalizedPath = normalizedPath.substr(0, pathLen - 1);\n      isSlashDropped = true;\n    }\n\n    for (var i = 0, l = normalizedPath.length; i < l; i++) {\n      states = recognizeChar(states, normalizedPath.charAt(i));\n      if (!states.length) {\n        break;\n      }\n    }\n\n    var solutions = [];\n    for (var _i4 = 0, _l = states.length; _i4 < _l; _i4++) {\n      if (states[_i4].handlers) {\n        solutions.push(states[_i4]);\n      }\n    }\n\n    states = sortSolutions(solutions);\n\n    var state = solutions[0];\n    if (state && state.handlers) {\n      if (isSlashDropped && state.regex.source.slice(-5) === '(.+)$') {\n        normalizedPath = normalizedPath + '/';\n      }\n\n      return findHandler(state, normalizedPath, queryParams);\n    }\n  };\n\n  return RouteRecognizer;\n}();\n\nvar RecognizeResults = function RecognizeResults(queryParams) {\n  \n\n  this.splice = Array.prototype.splice;\n  this.slice = Array.prototype.slice;\n  this.push = Array.prototype.push;\n  this.length = 0;\n  this.queryParams = queryParams || {};\n};\n\nfunction parse(route, names, types, caseSensitive) {\n  var normalizedRoute = route;\n  if (route.charAt(0) === '/') {\n    normalizedRoute = route.substr(1);\n  }\n\n  var results = [];\n\n  var splitRoute = normalizedRoute.split('/');\n  for (var i = 0, ii = splitRoute.length; i < ii; ++i) {\n    var segment = splitRoute[i];\n\n    var match = segment.match(/^:([^?]+)(\\?)?$/);\n    if (match) {\n      var _match = match,\n          _name = _match[1],\n          optional = _match[2];\n\n      if (_name.indexOf('=') !== -1) {\n        throw new Error('Parameter ' + _name + ' in route ' + route + ' has a default value, which is not supported.');\n      }\n      results.push(new DynamicSegment(_name, !!optional));\n      names.push(_name);\n      types.dynamics++;\n      continue;\n    }\n\n    match = segment.match(/^\\*(.+)$/);\n    if (match) {\n      results.push(new StarSegment(match[1]));\n      names.push(match[1]);\n      types.stars++;\n    } else if (segment === '') {\n      results.push(new EpsilonSegment());\n    } else {\n      results.push(new StaticSegment(segment, caseSensitive));\n      types.statics++;\n    }\n  }\n\n  return results;\n}\n\nfunction sortSolutions(states) {\n  return states.sort(function (a, b) {\n    if (a.types.stars !== b.types.stars) {\n      return a.types.stars - b.types.stars;\n    }\n\n    if (a.types.stars) {\n      if (a.types.statics !== b.types.statics) {\n        return b.types.statics - a.types.statics;\n      }\n      if (a.types.dynamics !== b.types.dynamics) {\n        return b.types.dynamics - a.types.dynamics;\n      }\n    }\n\n    if (a.types.dynamics !== b.types.dynamics) {\n      return a.types.dynamics - b.types.dynamics;\n    }\n\n    if (a.types.statics !== b.types.statics) {\n      return b.types.statics - a.types.statics;\n    }\n\n    return 0;\n  });\n}\n\nfunction recognizeChar(states, ch) {\n  var nextStates = [];\n\n  for (var i = 0, l = states.length; i < l; i++) {\n    var state = states[i];\n    nextStates.push.apply(nextStates, state.match(ch));\n  }\n\n  return nextStates;\n}\n\nfunction findHandler(state, path, queryParams) {\n  var handlers = state.handlers;\n  var regex = state.regex;\n  var captures = path.match(regex);\n  var currentCapture = 1;\n  var result = new RecognizeResults(queryParams);\n\n  for (var i = 0, l = handlers.length; i < l; i++) {\n    var _handler = handlers[i];\n    var _names = _handler.names;\n    var _params = {};\n\n    for (var j = 0, m = _names.length; j < m; j++) {\n      _params[_names[j]] = captures[currentCapture++];\n    }\n\n    result.push({ handler: _handler.handler, params: _params, isDynamic: !!_names.length });\n  }\n\n  return result;\n}\n\nfunction addSegment(currentState, segment) {\n  var firstState = currentState.put({ validChars: '/' });\n  var nextState = firstState;\n  segment.eachChar(function (ch) {\n    nextState = nextState.put(ch);\n  });\n\n  return [firstState, nextState];\n}","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\nimport * as LogManager from 'aurelia-logging';\nimport { RouteRecognizer } from 'aurelia-route-recognizer';\nimport { Container } from 'aurelia-dependency-injection';\nimport { History, NavigationOptions } from 'aurelia-history';\nimport { EventAggregator } from 'aurelia-event-aggregator';\n\nexport function _normalizeAbsolutePath(path, hasPushState) {\n  var absolute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  if (!hasPushState && path[0] !== '#') {\n    path = '#' + path;\n  }\n\n  if (hasPushState && absolute) {\n    path = path.substring(1, path.length);\n  }\n\n  return path;\n}\n\nexport function _createRootedPath(fragment, baseUrl, hasPushState, absolute) {\n  if (isAbsoluteUrl.test(fragment)) {\n    return fragment;\n  }\n\n  var path = '';\n\n  if (baseUrl.length && baseUrl[0] !== '/') {\n    path += '/';\n  }\n\n  path += baseUrl;\n\n  if ((!path.length || path[path.length - 1] !== '/') && fragment[0] !== '/') {\n    path += '/';\n  }\n\n  if (path.length && path[path.length - 1] === '/' && fragment[0] === '/') {\n    path = path.substring(0, path.length - 1);\n  }\n\n  return _normalizeAbsolutePath(path + fragment, hasPushState, absolute);\n}\n\nexport function _resolveUrl(fragment, baseUrl, hasPushState) {\n  if (isRootedPath.test(fragment)) {\n    return _normalizeAbsolutePath(fragment, hasPushState);\n  }\n\n  return _createRootedPath(fragment, baseUrl, hasPushState);\n}\n\nexport function _ensureArrayWithSingleRoutePerConfig(config) {\n  var routeConfigs = [];\n\n  if (Array.isArray(config.route)) {\n    for (var i = 0, ii = config.route.length; i < ii; ++i) {\n      var current = Object.assign({}, config);\n      current.route = config.route[i];\n      routeConfigs.push(current);\n    }\n  } else {\n    routeConfigs.push(Object.assign({}, config));\n  }\n\n  return routeConfigs;\n}\n\nvar isRootedPath = /^#?\\//;\nvar isAbsoluteUrl = /^([a-z][a-z0-9+\\-.]*:)?\\/\\//i;\n\nexport var CommitChangesStep = function () {\n  function CommitChangesStep() {\n    \n  }\n\n  CommitChangesStep.prototype.run = function run(navigationInstruction, next) {\n    return navigationInstruction._commitChanges(true).then(function () {\n      navigationInstruction._updateTitle();\n      return next();\n    });\n  };\n\n  return CommitChangesStep;\n}();\n\nexport var NavigationInstruction = function () {\n  function NavigationInstruction(init) {\n    \n\n    this.plan = null;\n    this.options = {};\n\n    Object.assign(this, init);\n\n    this.params = this.params || {};\n    this.viewPortInstructions = {};\n\n    var ancestorParams = [];\n    var current = this;\n    do {\n      var currentParams = Object.assign({}, current.params);\n      if (current.config && current.config.hasChildRouter) {\n        delete currentParams[current.getWildCardName()];\n      }\n\n      ancestorParams.unshift(currentParams);\n      current = current.parentInstruction;\n    } while (current);\n\n    var allParams = Object.assign.apply(Object, [{}, this.queryParams].concat(ancestorParams));\n    this.lifecycleArgs = [allParams, this.config, this];\n  }\n\n  NavigationInstruction.prototype.getAllInstructions = function getAllInstructions() {\n    var instructions = [this];\n    for (var _key in this.viewPortInstructions) {\n      var childInstruction = this.viewPortInstructions[_key].childNavigationInstruction;\n      if (childInstruction) {\n        instructions.push.apply(instructions, childInstruction.getAllInstructions());\n      }\n    }\n\n    return instructions;\n  };\n\n  NavigationInstruction.prototype.getAllPreviousInstructions = function getAllPreviousInstructions() {\n    return this.getAllInstructions().map(function (c) {\n      return c.previousInstruction;\n    }).filter(function (c) {\n      return c;\n    });\n  };\n\n  NavigationInstruction.prototype.addViewPortInstruction = function addViewPortInstruction(viewPortName, strategy, moduleId, component) {\n    var config = Object.assign({}, this.lifecycleArgs[1], { currentViewPort: viewPortName });\n    var viewportInstruction = this.viewPortInstructions[viewPortName] = {\n      name: viewPortName,\n      strategy: strategy,\n      moduleId: moduleId,\n      component: component,\n      childRouter: component.childRouter,\n      lifecycleArgs: [].concat(this.lifecycleArgs[0], config, this.lifecycleArgs[2])\n    };\n\n    return viewportInstruction;\n  };\n\n  NavigationInstruction.prototype.getWildCardName = function getWildCardName() {\n    var wildcardIndex = this.config.route.lastIndexOf('*');\n    return this.config.route.substr(wildcardIndex + 1);\n  };\n\n  NavigationInstruction.prototype.getWildcardPath = function getWildcardPath() {\n    var wildcardName = this.getWildCardName();\n    var path = this.params[wildcardName] || '';\n\n    if (this.queryString) {\n      path += '?' + this.queryString;\n    }\n\n    return path;\n  };\n\n  NavigationInstruction.prototype.getBaseUrl = function getBaseUrl() {\n    var _this = this;\n\n    var fragment = decodeURI(this.fragment);\n\n    if (fragment === '') {\n      var nonEmptyRoute = this.router.routes.find(function (route) {\n        return route.name === _this.config.name && route.route !== '';\n      });\n      if (nonEmptyRoute) {\n        fragment = nonEmptyRoute.route;\n      }\n    }\n\n    if (!this.params) {\n      return encodeURI(fragment);\n    }\n\n    var wildcardName = this.getWildCardName();\n    var path = this.params[wildcardName] || '';\n\n    if (!path) {\n      return encodeURI(fragment);\n    }\n\n    return encodeURI(fragment.substr(0, fragment.lastIndexOf(path)));\n  };\n\n  NavigationInstruction.prototype._commitChanges = function _commitChanges(waitToSwap) {\n    var _this2 = this;\n\n    var router = this.router;\n    router.currentInstruction = this;\n\n    if (this.previousInstruction) {\n      this.previousInstruction.config.navModel.isActive = false;\n    }\n\n    this.config.navModel.isActive = true;\n\n    router.refreshNavigation();\n\n    var loads = [];\n    var delaySwaps = [];\n\n    var _loop = function _loop(viewPortName) {\n      var viewPortInstruction = _this2.viewPortInstructions[viewPortName];\n      var viewPort = router.viewPorts[viewPortName];\n\n      if (!viewPort) {\n        throw new Error('There was no router-view found in the view for ' + viewPortInstruction.moduleId + '.');\n      }\n\n      if (viewPortInstruction.strategy === activationStrategy.replace) {\n        if (viewPortInstruction.childNavigationInstruction && viewPortInstruction.childNavigationInstruction.parentCatchHandler) {\n          loads.push(viewPortInstruction.childNavigationInstruction._commitChanges(waitToSwap));\n        } else {\n          if (waitToSwap) {\n            delaySwaps.push({ viewPort: viewPort, viewPortInstruction: viewPortInstruction });\n          }\n          loads.push(viewPort.process(viewPortInstruction, waitToSwap).then(function (x) {\n            if (viewPortInstruction.childNavigationInstruction) {\n              return viewPortInstruction.childNavigationInstruction._commitChanges(waitToSwap);\n            }\n          }));\n        }\n      } else {\n        if (viewPortInstruction.childNavigationInstruction) {\n          loads.push(viewPortInstruction.childNavigationInstruction._commitChanges(waitToSwap));\n        }\n      }\n    };\n\n    for (var viewPortName in this.viewPortInstructions) {\n      _loop(viewPortName);\n    }\n\n    return Promise.all(loads).then(function () {\n      delaySwaps.forEach(function (x) {\n        return x.viewPort.swap(x.viewPortInstruction);\n      });\n      return null;\n    }).then(function () {\n      return prune(_this2);\n    });\n  };\n\n  NavigationInstruction.prototype._updateTitle = function _updateTitle() {\n    var title = this._buildTitle(this.router.titleSeparator);\n    if (title) {\n      this.router.history.setTitle(title);\n    }\n  };\n\n  NavigationInstruction.prototype._buildTitle = function _buildTitle() {\n    var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' | ';\n\n    var title = '';\n    var childTitles = [];\n\n    if (this.config.navModel.title) {\n      title = this.router.transformTitle(this.config.navModel.title);\n    }\n\n    for (var viewPortName in this.viewPortInstructions) {\n      var _viewPortInstruction = this.viewPortInstructions[viewPortName];\n\n      if (_viewPortInstruction.childNavigationInstruction) {\n        var childTitle = _viewPortInstruction.childNavigationInstruction._buildTitle(separator);\n        if (childTitle) {\n          childTitles.push(childTitle);\n        }\n      }\n    }\n\n    if (childTitles.length) {\n      title = childTitles.join(separator) + (title ? separator : '') + title;\n    }\n\n    if (this.router.title) {\n      title += (title ? separator : '') + this.router.transformTitle(this.router.title);\n    }\n\n    return title;\n  };\n\n  return NavigationInstruction;\n}();\n\nfunction prune(instruction) {\n  instruction.previousInstruction = null;\n  instruction.plan = null;\n}\n\nexport var NavModel = function () {\n  function NavModel(router, relativeHref) {\n    \n\n    this.isActive = false;\n    this.title = null;\n    this.href = null;\n    this.relativeHref = null;\n    this.settings = {};\n    this.config = null;\n\n    this.router = router;\n    this.relativeHref = relativeHref;\n  }\n\n  NavModel.prototype.setTitle = function setTitle(title) {\n    this.title = title;\n\n    if (this.isActive) {\n      this.router.updateTitle();\n    }\n  };\n\n  return NavModel;\n}();\n\nexport function isNavigationCommand(obj) {\n  return obj && typeof obj.navigate === 'function';\n}\n\nexport var Redirect = function () {\n  function Redirect(url) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    \n\n    this.url = url;\n    this.options = Object.assign({ trigger: true, replace: true }, options);\n    this.shouldContinueProcessing = false;\n  }\n\n  Redirect.prototype.setRouter = function setRouter(router) {\n    this.router = router;\n  };\n\n  Redirect.prototype.navigate = function navigate(appRouter) {\n    var navigatingRouter = this.options.useAppRouter ? appRouter : this.router || appRouter;\n    navigatingRouter.navigate(this.url, this.options);\n  };\n\n  return Redirect;\n}();\n\nexport var RedirectToRoute = function () {\n  function RedirectToRoute(route) {\n    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    \n\n    this.route = route;\n    this.params = params;\n    this.options = Object.assign({ trigger: true, replace: true }, options);\n    this.shouldContinueProcessing = false;\n  }\n\n  RedirectToRoute.prototype.setRouter = function setRouter(router) {\n    this.router = router;\n  };\n\n  RedirectToRoute.prototype.navigate = function navigate(appRouter) {\n    var navigatingRouter = this.options.useAppRouter ? appRouter : this.router || appRouter;\n    navigatingRouter.navigateToRoute(this.route, this.params, this.options);\n  };\n\n  return RedirectToRoute;\n}();\n\nexport var pipelineStatus = {\n  completed: 'completed',\n  canceled: 'canceled',\n  rejected: 'rejected',\n  running: 'running'\n};\n\nexport var Pipeline = function () {\n  function Pipeline() {\n    \n\n    this.steps = [];\n  }\n\n  Pipeline.prototype.addStep = function addStep(step) {\n    var run = void 0;\n\n    if (typeof step === 'function') {\n      run = step;\n    } else if (typeof step.getSteps === 'function') {\n      var steps = step.getSteps();\n      for (var i = 0, l = steps.length; i < l; i++) {\n        this.addStep(steps[i]);\n      }\n\n      return this;\n    } else {\n      run = step.run.bind(step);\n    }\n\n    this.steps.push(run);\n\n    return this;\n  };\n\n  Pipeline.prototype.run = function run(instruction) {\n    var index = -1;\n    var steps = this.steps;\n\n    function next() {\n      index++;\n\n      if (index < steps.length) {\n        var currentStep = steps[index];\n\n        try {\n          return currentStep(instruction, next);\n        } catch (e) {\n          return next.reject(e);\n        }\n      } else {\n        return next.complete();\n      }\n    }\n\n    next.complete = createCompletionHandler(next, pipelineStatus.completed);\n    next.cancel = createCompletionHandler(next, pipelineStatus.canceled);\n    next.reject = createCompletionHandler(next, pipelineStatus.rejected);\n\n    return next();\n  };\n\n  return Pipeline;\n}();\n\nfunction createCompletionHandler(next, status) {\n  return function (output) {\n    return Promise.resolve({ status: status, output: output, completed: status === pipelineStatus.completed });\n  };\n}\n\nexport var RouterConfiguration = function () {\n  function RouterConfiguration() {\n    \n\n    this.instructions = [];\n    this.options = {};\n    this.pipelineSteps = [];\n  }\n\n  RouterConfiguration.prototype.addPipelineStep = function addPipelineStep(name, step) {\n    if (step === null || step === undefined) {\n      throw new Error('Pipeline step cannot be null or undefined.');\n    }\n    this.pipelineSteps.push({ name: name, step: step });\n    return this;\n  };\n\n  RouterConfiguration.prototype.addAuthorizeStep = function addAuthorizeStep(step) {\n    return this.addPipelineStep('authorize', step);\n  };\n\n  RouterConfiguration.prototype.addPreActivateStep = function addPreActivateStep(step) {\n    return this.addPipelineStep('preActivate', step);\n  };\n\n  RouterConfiguration.prototype.addPreRenderStep = function addPreRenderStep(step) {\n    return this.addPipelineStep('preRender', step);\n  };\n\n  RouterConfiguration.prototype.addPostRenderStep = function addPostRenderStep(step) {\n    return this.addPipelineStep('postRender', step);\n  };\n\n  RouterConfiguration.prototype.fallbackRoute = function fallbackRoute(fragment) {\n    this._fallbackRoute = fragment;\n    return this;\n  };\n\n  RouterConfiguration.prototype.map = function map(route) {\n    if (Array.isArray(route)) {\n      route.forEach(this.map.bind(this));\n      return this;\n    }\n\n    return this.mapRoute(route);\n  };\n\n  RouterConfiguration.prototype.useViewPortDefaults = function useViewPortDefaults(viewPortConfig) {\n    this.viewPortDefaults = viewPortConfig;\n    return this;\n  };\n\n  RouterConfiguration.prototype.mapRoute = function mapRoute(config) {\n    this.instructions.push(function (router) {\n      var routeConfigs = _ensureArrayWithSingleRoutePerConfig(config);\n\n      var navModel = void 0;\n      for (var i = 0, ii = routeConfigs.length; i < ii; ++i) {\n        var _routeConfig = routeConfigs[i];\n        _routeConfig.settings = _routeConfig.settings || {};\n        if (!navModel) {\n          navModel = router.createNavModel(_routeConfig);\n        }\n\n        router.addRoute(_routeConfig, navModel);\n      }\n    });\n\n    return this;\n  };\n\n  RouterConfiguration.prototype.mapUnknownRoutes = function mapUnknownRoutes(config) {\n    this.unknownRouteConfig = config;\n    return this;\n  };\n\n  RouterConfiguration.prototype.exportToRouter = function exportToRouter(router) {\n    var instructions = this.instructions;\n    for (var i = 0, ii = instructions.length; i < ii; ++i) {\n      instructions[i](router);\n    }\n\n    if (this.title) {\n      router.title = this.title;\n    }\n\n    if (this.titleSeparator) {\n      router.titleSeparator = this.titleSeparator;\n    }\n\n    if (this.unknownRouteConfig) {\n      router.handleUnknownRoutes(this.unknownRouteConfig);\n    }\n\n    if (this._fallbackRoute) {\n      router.fallbackRoute = this._fallbackRoute;\n    }\n\n    if (this.viewPortDefaults) {\n      router.useViewPortDefaults(this.viewPortDefaults);\n    }\n\n    Object.assign(router.options, this.options);\n\n    var pipelineSteps = this.pipelineSteps;\n    if (pipelineSteps.length) {\n      if (!router.isRoot) {\n        throw new Error('Pipeline steps can only be added to the root router');\n      }\n\n      var pipelineProvider = router.pipelineProvider;\n      for (var _i = 0, _ii = pipelineSteps.length; _i < _ii; ++_i) {\n        var _pipelineSteps$_i = pipelineSteps[_i],\n            _name = _pipelineSteps$_i.name,\n            _step = _pipelineSteps$_i.step;\n\n        pipelineProvider.addStep(_name, _step);\n      }\n    }\n  };\n\n  return RouterConfiguration;\n}();\n\nexport var activationStrategy = {\n  noChange: 'no-change',\n  invokeLifecycle: 'invoke-lifecycle',\n  replace: 'replace'\n};\n\nexport var BuildNavigationPlanStep = function () {\n  function BuildNavigationPlanStep() {\n    \n  }\n\n  BuildNavigationPlanStep.prototype.run = function run(navigationInstruction, next) {\n    return _buildNavigationPlan(navigationInstruction).then(function (plan) {\n      if (plan instanceof Redirect) {\n        return next.cancel(plan);\n      }\n      navigationInstruction.plan = plan;\n      return next();\n    }).catch(next.cancel);\n  };\n\n  return BuildNavigationPlanStep;\n}();\n\nexport function _buildNavigationPlan(instruction, forceLifecycleMinimum) {\n  var config = instruction.config;\n\n  if ('redirect' in config) {\n    var _router = instruction.router;\n    return _router._createNavigationInstruction(config.redirect).then(function (newInstruction) {\n      var params = {};\n      for (var _key2 in newInstruction.params) {\n        var val = newInstruction.params[_key2];\n        if (typeof val === 'string' && val[0] === ':') {\n          val = val.slice(1);\n\n          if (val in instruction.params) {\n            params[_key2] = instruction.params[val];\n          }\n        } else {\n          params[_key2] = newInstruction.params[_key2];\n        }\n      }\n      var redirectLocation = _router.generate(newInstruction.config.name, params, instruction.options);\n\n      if (instruction.queryString) {\n        redirectLocation += '?' + instruction.queryString;\n      }\n\n      return Promise.resolve(new Redirect(redirectLocation));\n    });\n  }\n\n  var prev = instruction.previousInstruction;\n  var plan = {};\n  var defaults = instruction.router.viewPortDefaults;\n\n  if (prev) {\n    var newParams = hasDifferentParameterValues(prev, instruction);\n    var pending = [];\n\n    var _loop2 = function _loop2(viewPortName) {\n      var prevViewPortInstruction = prev.viewPortInstructions[viewPortName];\n      var nextViewPortConfig = viewPortName in config.viewPorts ? config.viewPorts[viewPortName] : prevViewPortInstruction;\n      if (nextViewPortConfig.moduleId === null && viewPortName in instruction.router.viewPortDefaults) {\n        nextViewPortConfig = defaults[viewPortName];\n      }\n\n      var viewPortPlan = plan[viewPortName] = {\n        name: viewPortName,\n        config: nextViewPortConfig,\n        prevComponent: prevViewPortInstruction.component,\n        prevModuleId: prevViewPortInstruction.moduleId\n      };\n\n      if (prevViewPortInstruction.moduleId !== nextViewPortConfig.moduleId) {\n        viewPortPlan.strategy = activationStrategy.replace;\n      } else if ('determineActivationStrategy' in prevViewPortInstruction.component.viewModel) {\n        var _prevViewPortInstruct;\n\n        viewPortPlan.strategy = (_prevViewPortInstruct = prevViewPortInstruction.component.viewModel).determineActivationStrategy.apply(_prevViewPortInstruct, instruction.lifecycleArgs);\n      } else if (config.activationStrategy) {\n        viewPortPlan.strategy = config.activationStrategy;\n      } else if (newParams || forceLifecycleMinimum) {\n        viewPortPlan.strategy = activationStrategy.invokeLifecycle;\n      } else {\n        viewPortPlan.strategy = activationStrategy.noChange;\n      }\n\n      if (viewPortPlan.strategy !== activationStrategy.replace && prevViewPortInstruction.childRouter) {\n        var path = instruction.getWildcardPath();\n        var task = prevViewPortInstruction.childRouter._createNavigationInstruction(path, instruction).then(function (childInstruction) {\n          viewPortPlan.childNavigationInstruction = childInstruction;\n\n          return _buildNavigationPlan(childInstruction, viewPortPlan.strategy === activationStrategy.invokeLifecycle).then(function (childPlan) {\n            if (childPlan instanceof Redirect) {\n              return Promise.reject(childPlan);\n            }\n            childInstruction.plan = childPlan;\n          });\n        });\n\n        pending.push(task);\n      }\n    };\n\n    for (var viewPortName in prev.viewPortInstructions) {\n      _loop2(viewPortName);\n    }\n\n    return Promise.all(pending).then(function () {\n      return plan;\n    });\n  }\n\n  for (var viewPortName in config.viewPorts) {\n    var viewPortConfig = config.viewPorts[viewPortName];\n    if (viewPortConfig.moduleId === null && viewPortName in instruction.router.viewPortDefaults) {\n      viewPortConfig = defaults[viewPortName];\n    }\n    plan[viewPortName] = {\n      name: viewPortName,\n      strategy: activationStrategy.replace,\n      config: viewPortConfig\n    };\n  }\n\n  return Promise.resolve(plan);\n}\n\nfunction hasDifferentParameterValues(prev, next) {\n  var prevParams = prev.params;\n  var nextParams = next.params;\n  var nextWildCardName = next.config.hasChildRouter ? next.getWildCardName() : null;\n\n  for (var _key3 in nextParams) {\n    if (_key3 === nextWildCardName) {\n      continue;\n    }\n\n    if (prevParams[_key3] !== nextParams[_key3]) {\n      return true;\n    }\n  }\n\n  for (var _key4 in prevParams) {\n    if (_key4 === nextWildCardName) {\n      continue;\n    }\n\n    if (prevParams[_key4] !== nextParams[_key4]) {\n      return true;\n    }\n  }\n\n  if (!next.options.compareQueryParams) {\n    return false;\n  }\n\n  var prevQueryParams = prev.queryParams;\n  var nextQueryParams = next.queryParams;\n  for (var _key5 in nextQueryParams) {\n    if (prevQueryParams[_key5] !== nextQueryParams[_key5]) {\n      return true;\n    }\n  }\n\n  for (var _key6 in prevQueryParams) {\n    if (prevQueryParams[_key6] !== nextQueryParams[_key6]) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nexport var Router = function () {\n  function Router(container, history) {\n    var _this3 = this;\n\n    \n\n    this.parent = null;\n    this.options = {};\n    this.viewPortDefaults = {};\n\n    this.transformTitle = function (title) {\n      if (_this3.parent) {\n        return _this3.parent.transformTitle(title);\n      }\n      return title;\n    };\n\n    this.container = container;\n    this.history = history;\n    this.reset();\n  }\n\n  Router.prototype.reset = function reset() {\n    var _this4 = this;\n\n    this.viewPorts = {};\n    this.routes = [];\n    this.baseUrl = '';\n    this.isConfigured = false;\n    this.isNavigating = false;\n    this.isExplicitNavigation = false;\n    this.isExplicitNavigationBack = false;\n    this.isNavigatingFirst = false;\n    this.isNavigatingNew = false;\n    this.isNavigatingRefresh = false;\n    this.isNavigatingForward = false;\n    this.isNavigatingBack = false;\n    this.couldDeactivate = false;\n    this.navigation = [];\n    this.currentInstruction = null;\n    this.viewPortDefaults = {};\n    this._fallbackOrder = 100;\n    this._recognizer = new RouteRecognizer();\n    this._childRecognizer = new RouteRecognizer();\n    this._configuredPromise = new Promise(function (resolve) {\n      _this4._resolveConfiguredPromise = resolve;\n    });\n  };\n\n  Router.prototype.registerViewPort = function registerViewPort(viewPort, name) {\n    name = name || 'default';\n    this.viewPorts[name] = viewPort;\n  };\n\n  Router.prototype.ensureConfigured = function ensureConfigured() {\n    return this._configuredPromise;\n  };\n\n  Router.prototype.configure = function configure(callbackOrConfig) {\n    var _this5 = this;\n\n    this.isConfigured = true;\n\n    var result = callbackOrConfig;\n    var config = void 0;\n    if (typeof callbackOrConfig === 'function') {\n      config = new RouterConfiguration();\n      result = callbackOrConfig(config);\n    }\n\n    return Promise.resolve(result).then(function (c) {\n      if (c && c.exportToRouter) {\n        config = c;\n      }\n\n      config.exportToRouter(_this5);\n      _this5.isConfigured = true;\n      _this5._resolveConfiguredPromise();\n    });\n  };\n\n  Router.prototype.navigate = function navigate(fragment, options) {\n    if (!this.isConfigured && this.parent) {\n      return this.parent.navigate(fragment, options);\n    }\n\n    this.isExplicitNavigation = true;\n    return this.history.navigate(_resolveUrl(fragment, this.baseUrl, this.history._hasPushState), options);\n  };\n\n  Router.prototype.navigateToRoute = function navigateToRoute(route, params, options) {\n    var path = this.generate(route, params);\n    return this.navigate(path, options);\n  };\n\n  Router.prototype.navigateBack = function navigateBack() {\n    this.isExplicitNavigationBack = true;\n    this.history.navigateBack();\n  };\n\n  Router.prototype.createChild = function createChild(container) {\n    var childRouter = new Router(container || this.container.createChild(), this.history);\n    childRouter.parent = this;\n    return childRouter;\n  };\n\n  Router.prototype.generate = function generate(name, params) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    var hasRoute = this._recognizer.hasRoute(name);\n    if ((!this.isConfigured || !hasRoute) && this.parent) {\n      return this.parent.generate(name, params, options);\n    }\n\n    if (!hasRoute) {\n      throw new Error('A route with name \\'' + name + '\\' could not be found. Check that `name: \\'' + name + '\\'` was specified in the route\\'s config.');\n    }\n\n    var path = this._recognizer.generate(name, params);\n    var rootedPath = _createRootedPath(path, this.baseUrl, this.history._hasPushState, options.absolute);\n    return options.absolute ? '' + this.history.getAbsoluteRoot() + rootedPath : rootedPath;\n  };\n\n  Router.prototype.createNavModel = function createNavModel(config) {\n    var navModel = new NavModel(this, 'href' in config ? config.href : config.route);\n    navModel.title = config.title;\n    navModel.order = config.nav;\n    navModel.href = config.href;\n    navModel.settings = config.settings;\n    navModel.config = config;\n\n    return navModel;\n  };\n\n  Router.prototype.addRoute = function addRoute(config, navModel) {\n    if (Array.isArray(config.route)) {\n      var routeConfigs = _ensureArrayWithSingleRoutePerConfig(config);\n      routeConfigs.forEach(this.addRoute.bind(this));\n      return;\n    }\n\n    validateRouteConfig(config, this.routes);\n\n    if (!('viewPorts' in config) && !config.navigationStrategy) {\n      config.viewPorts = {\n        'default': {\n          moduleId: config.moduleId,\n          view: config.view\n        }\n      };\n    }\n\n    if (!navModel) {\n      navModel = this.createNavModel(config);\n    }\n\n    this.routes.push(config);\n\n    var path = config.route;\n    if (path.charAt(0) === '/') {\n      path = path.substr(1);\n    }\n    var caseSensitive = config.caseSensitive === true;\n    var state = this._recognizer.add({ path: path, handler: config, caseSensitive: caseSensitive });\n\n    if (path) {\n      var _settings = config.settings;\n      delete config.settings;\n      var withChild = JSON.parse(JSON.stringify(config));\n      config.settings = _settings;\n      withChild.route = path + '/*childRoute';\n      withChild.hasChildRouter = true;\n      this._childRecognizer.add({\n        path: withChild.route,\n        handler: withChild,\n        caseSensitive: caseSensitive\n      });\n\n      withChild.navModel = navModel;\n      withChild.settings = config.settings;\n      withChild.navigationStrategy = config.navigationStrategy;\n    }\n\n    config.navModel = navModel;\n\n    if ((navModel.order || navModel.order === 0) && this.navigation.indexOf(navModel) === -1) {\n      if (!navModel.href && navModel.href !== '' && (state.types.dynamics || state.types.stars)) {\n        throw new Error('Invalid route config for \"' + config.route + '\" : dynamic routes must specify an \"href:\" to be included in the navigation model.');\n      }\n\n      if (typeof navModel.order !== 'number') {\n        navModel.order = ++this._fallbackOrder;\n      }\n\n      this.navigation.push(navModel);\n      this.navigation = this.navigation.sort(function (a, b) {\n        return a.order - b.order;\n      });\n    }\n  };\n\n  Router.prototype.hasRoute = function hasRoute(name) {\n    return !!(this._recognizer.hasRoute(name) || this.parent && this.parent.hasRoute(name));\n  };\n\n  Router.prototype.hasOwnRoute = function hasOwnRoute(name) {\n    return this._recognizer.hasRoute(name);\n  };\n\n  Router.prototype.handleUnknownRoutes = function handleUnknownRoutes(config) {\n    var _this6 = this;\n\n    if (!config) {\n      throw new Error('Invalid unknown route handler');\n    }\n\n    this.catchAllHandler = function (instruction) {\n      return _this6._createRouteConfig(config, instruction).then(function (c) {\n        instruction.config = c;\n        return instruction;\n      });\n    };\n  };\n\n  Router.prototype.updateTitle = function updateTitle() {\n    if (this.parent) {\n      return this.parent.updateTitle();\n    }\n\n    if (this.currentInstruction) {\n      this.currentInstruction._updateTitle();\n    }\n    return undefined;\n  };\n\n  Router.prototype.refreshNavigation = function refreshNavigation() {\n    var nav = this.navigation;\n\n    for (var i = 0, length = nav.length; i < length; i++) {\n      var _current = nav[i];\n      if (!_current.config.href) {\n        _current.href = _createRootedPath(_current.relativeHref, this.baseUrl, this.history._hasPushState);\n      } else {\n        _current.href = _normalizeAbsolutePath(_current.config.href, this.history._hasPushState);\n      }\n    }\n  };\n\n  Router.prototype.useViewPortDefaults = function useViewPortDefaults(viewPortDefaults) {\n    for (var viewPortName in viewPortDefaults) {\n      var viewPortConfig = viewPortDefaults[viewPortName];\n      this.viewPortDefaults[viewPortName] = {\n        moduleId: viewPortConfig.moduleId\n      };\n    }\n  };\n\n  Router.prototype._refreshBaseUrl = function _refreshBaseUrl() {\n    if (this.parent) {\n      this.baseUrl = generateBaseUrl(this.parent, this.parent.currentInstruction);\n    }\n  };\n\n  Router.prototype._createNavigationInstruction = function _createNavigationInstruction() {\n    var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    var parentInstruction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n    var fragment = url;\n    var queryString = '';\n\n    var queryIndex = url.indexOf('?');\n    if (queryIndex !== -1) {\n      fragment = url.substr(0, queryIndex);\n      queryString = url.substr(queryIndex + 1);\n    }\n\n    var results = this._recognizer.recognize(url);\n    if (!results || !results.length) {\n      results = this._childRecognizer.recognize(url);\n    }\n\n    var instructionInit = {\n      fragment: fragment,\n      queryString: queryString,\n      config: null,\n      parentInstruction: parentInstruction,\n      previousInstruction: this.currentInstruction,\n      router: this,\n      options: {\n        compareQueryParams: this.options.compareQueryParams\n      }\n    };\n\n    var result = void 0;\n\n    if (results && results.length) {\n      var first = results[0];\n      var _instruction = new NavigationInstruction(Object.assign({}, instructionInit, {\n        params: first.params,\n        queryParams: first.queryParams || results.queryParams,\n        config: first.config || first.handler\n      }));\n\n      if (typeof first.handler === 'function') {\n        result = evaluateNavigationStrategy(_instruction, first.handler, first);\n      } else if (first.handler && typeof first.handler.navigationStrategy === 'function') {\n        result = evaluateNavigationStrategy(_instruction, first.handler.navigationStrategy, first.handler);\n      } else {\n        result = Promise.resolve(_instruction);\n      }\n    } else if (this.catchAllHandler) {\n      var _instruction2 = new NavigationInstruction(Object.assign({}, instructionInit, {\n        params: { path: fragment },\n        queryParams: results ? results.queryParams : {},\n        config: null }));\n\n      result = evaluateNavigationStrategy(_instruction2, this.catchAllHandler);\n    } else if (this.parent) {\n      var _router2 = this._parentCatchAllHandler(this.parent);\n\n      if (_router2) {\n        var newParentInstruction = this._findParentInstructionFromRouter(_router2, parentInstruction);\n\n        var _instruction3 = new NavigationInstruction(Object.assign({}, instructionInit, {\n          params: { path: fragment },\n          queryParams: results ? results.queryParams : {},\n          router: _router2,\n          parentInstruction: newParentInstruction,\n          parentCatchHandler: true,\n          config: null }));\n\n        result = evaluateNavigationStrategy(_instruction3, _router2.catchAllHandler);\n      }\n    }\n\n    if (result && parentInstruction) {\n      this.baseUrl = generateBaseUrl(this.parent, parentInstruction);\n    }\n\n    return result || Promise.reject(new Error('Route not found: ' + url));\n  };\n\n  Router.prototype._findParentInstructionFromRouter = function _findParentInstructionFromRouter(router, instruction) {\n    if (instruction.router === router) {\n      instruction.fragment = router.baseUrl;\n      return instruction;\n    } else if (instruction.parentInstruction) {\n      return this._findParentInstructionFromRouter(router, instruction.parentInstruction);\n    }\n    return undefined;\n  };\n\n  Router.prototype._parentCatchAllHandler = function _parentCatchAllHandler(router) {\n    if (router.catchAllHandler) {\n      return router;\n    } else if (router.parent) {\n      return this._parentCatchAllHandler(router.parent);\n    }\n    return false;\n  };\n\n  Router.prototype._createRouteConfig = function _createRouteConfig(config, instruction) {\n    var _this7 = this;\n\n    return Promise.resolve(config).then(function (c) {\n      if (typeof c === 'string') {\n        return { moduleId: c };\n      } else if (typeof c === 'function') {\n        return c(instruction);\n      }\n\n      return c;\n    }).then(function (c) {\n      return typeof c === 'string' ? { moduleId: c } : c;\n    }).then(function (c) {\n      c.route = instruction.params.path;\n      validateRouteConfig(c, _this7.routes);\n\n      if (!c.navModel) {\n        c.navModel = _this7.createNavModel(c);\n      }\n\n      return c;\n    });\n  };\n\n  _createClass(Router, [{\n    key: 'isRoot',\n    get: function get() {\n      return !this.parent;\n    }\n  }]);\n\n  return Router;\n}();\n\nfunction generateBaseUrl(router, instruction) {\n  return '' + (router.baseUrl || '') + (instruction.getBaseUrl() || '');\n}\n\nfunction validateRouteConfig(config, routes) {\n  if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) !== 'object') {\n    throw new Error('Invalid Route Config');\n  }\n\n  if (typeof config.route !== 'string') {\n    var _name2 = config.name || '(no name)';\n    throw new Error('Invalid Route Config for \"' + _name2 + '\": You must specify a \"route:\" pattern.');\n  }\n\n  if (!('redirect' in config || config.moduleId || config.navigationStrategy || config.viewPorts)) {\n    throw new Error('Invalid Route Config for \"' + config.route + '\": You must specify a \"moduleId:\", \"redirect:\", \"navigationStrategy:\", or \"viewPorts:\".');\n  }\n}\n\nfunction evaluateNavigationStrategy(instruction, evaluator, context) {\n  return Promise.resolve(evaluator.call(context, instruction)).then(function () {\n    if (!('viewPorts' in instruction.config)) {\n      instruction.config.viewPorts = {\n        'default': {\n          moduleId: instruction.config.moduleId\n        }\n      };\n    }\n\n    return instruction;\n  });\n}\n\nexport var CanDeactivatePreviousStep = function () {\n  function CanDeactivatePreviousStep() {\n    \n  }\n\n  CanDeactivatePreviousStep.prototype.run = function run(navigationInstruction, next) {\n    return processDeactivatable(navigationInstruction, 'canDeactivate', next);\n  };\n\n  return CanDeactivatePreviousStep;\n}();\n\nexport var CanActivateNextStep = function () {\n  function CanActivateNextStep() {\n    \n  }\n\n  CanActivateNextStep.prototype.run = function run(navigationInstruction, next) {\n    return processActivatable(navigationInstruction, 'canActivate', next);\n  };\n\n  return CanActivateNextStep;\n}();\n\nexport var DeactivatePreviousStep = function () {\n  function DeactivatePreviousStep() {\n    \n  }\n\n  DeactivatePreviousStep.prototype.run = function run(navigationInstruction, next) {\n    return processDeactivatable(navigationInstruction, 'deactivate', next, true);\n  };\n\n  return DeactivatePreviousStep;\n}();\n\nexport var ActivateNextStep = function () {\n  function ActivateNextStep() {\n    \n  }\n\n  ActivateNextStep.prototype.run = function run(navigationInstruction, next) {\n    return processActivatable(navigationInstruction, 'activate', next, true);\n  };\n\n  return ActivateNextStep;\n}();\n\nfunction processDeactivatable(navigationInstruction, callbackName, next, ignoreResult) {\n  var plan = navigationInstruction.plan;\n  var infos = findDeactivatable(plan, callbackName);\n  var i = infos.length;\n\n  function inspect(val) {\n    if (ignoreResult || shouldContinue(val)) {\n      return iterate();\n    }\n\n    return next.cancel(val);\n  }\n\n  function iterate() {\n    if (i--) {\n      try {\n        var viewModel = infos[i];\n        var _result = viewModel[callbackName](navigationInstruction);\n        return processPotential(_result, inspect, next.cancel);\n      } catch (error) {\n        return next.cancel(error);\n      }\n    }\n\n    navigationInstruction.router.couldDeactivate = true;\n\n    return next();\n  }\n\n  return iterate();\n}\n\nfunction findDeactivatable(plan, callbackName) {\n  var list = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n  for (var viewPortName in plan) {\n    var _viewPortPlan = plan[viewPortName];\n    var prevComponent = _viewPortPlan.prevComponent;\n\n    if ((_viewPortPlan.strategy === activationStrategy.invokeLifecycle || _viewPortPlan.strategy === activationStrategy.replace) && prevComponent) {\n      var viewModel = prevComponent.viewModel;\n\n      if (callbackName in viewModel) {\n        list.push(viewModel);\n      }\n    }\n\n    if (_viewPortPlan.strategy === activationStrategy.replace && prevComponent) {\n      addPreviousDeactivatable(prevComponent, callbackName, list);\n    } else if (_viewPortPlan.childNavigationInstruction) {\n      findDeactivatable(_viewPortPlan.childNavigationInstruction.plan, callbackName, list);\n    }\n  }\n\n  return list;\n}\n\nfunction addPreviousDeactivatable(component, callbackName, list) {\n  var childRouter = component.childRouter;\n\n  if (childRouter && childRouter.currentInstruction) {\n    var viewPortInstructions = childRouter.currentInstruction.viewPortInstructions;\n\n    for (var viewPortName in viewPortInstructions) {\n      var _viewPortInstruction2 = viewPortInstructions[viewPortName];\n      var prevComponent = _viewPortInstruction2.component;\n      var prevViewModel = prevComponent.viewModel;\n\n      if (callbackName in prevViewModel) {\n        list.push(prevViewModel);\n      }\n\n      addPreviousDeactivatable(prevComponent, callbackName, list);\n    }\n  }\n}\n\nfunction processActivatable(navigationInstruction, callbackName, next, ignoreResult) {\n  var infos = findActivatable(navigationInstruction, callbackName);\n  var length = infos.length;\n  var i = -1;\n\n  function inspect(val, router) {\n    if (ignoreResult || shouldContinue(val, router)) {\n      return iterate();\n    }\n\n    return next.cancel(val);\n  }\n\n  function iterate() {\n    i++;\n\n    if (i < length) {\n      try {\n        var _current2$viewModel;\n\n        var _current2 = infos[i];\n        var _result2 = (_current2$viewModel = _current2.viewModel)[callbackName].apply(_current2$viewModel, _current2.lifecycleArgs);\n        return processPotential(_result2, function (val) {\n          return inspect(val, _current2.router);\n        }, next.cancel);\n      } catch (error) {\n        return next.cancel(error);\n      }\n    }\n\n    return next();\n  }\n\n  return iterate();\n}\n\nfunction findActivatable(navigationInstruction, callbackName) {\n  var list = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n  var router = arguments[3];\n\n  var plan = navigationInstruction.plan;\n\n  Object.keys(plan).filter(function (viewPortName) {\n    var viewPortPlan = plan[viewPortName];\n    var viewPortInstruction = navigationInstruction.viewPortInstructions[viewPortName];\n    var viewModel = viewPortInstruction.component.viewModel;\n\n    if ((viewPortPlan.strategy === activationStrategy.invokeLifecycle || viewPortPlan.strategy === activationStrategy.replace) && callbackName in viewModel) {\n      list.push({\n        viewModel: viewModel,\n        lifecycleArgs: viewPortInstruction.lifecycleArgs,\n        router: router\n      });\n    }\n\n    if (viewPortPlan.childNavigationInstruction) {\n      findActivatable(viewPortPlan.childNavigationInstruction, callbackName, list, viewPortInstruction.component.childRouter || router);\n    }\n  });\n\n  return list;\n}\n\nfunction shouldContinue(output, router) {\n  if (output instanceof Error) {\n    return false;\n  }\n\n  if (isNavigationCommand(output)) {\n    if (typeof output.setRouter === 'function') {\n      output.setRouter(router);\n    }\n\n    return !!output.shouldContinueProcessing;\n  }\n\n  if (output === undefined) {\n    return true;\n  }\n\n  return output;\n}\n\nvar SafeSubscription = function () {\n  function SafeSubscription(subscriptionFunc) {\n    \n\n    this._subscribed = true;\n    this._subscription = subscriptionFunc(this);\n\n    if (!this._subscribed) this.unsubscribe();\n  }\n\n  SafeSubscription.prototype.unsubscribe = function unsubscribe() {\n    if (this._subscribed && this._subscription) this._subscription.unsubscribe();\n\n    this._subscribed = false;\n  };\n\n  _createClass(SafeSubscription, [{\n    key: 'subscribed',\n    get: function get() {\n      return this._subscribed;\n    }\n  }]);\n\n  return SafeSubscription;\n}();\n\nfunction processPotential(obj, resolve, reject) {\n  if (obj && typeof obj.then === 'function') {\n    return Promise.resolve(obj).then(resolve).catch(reject);\n  }\n\n  if (obj && typeof obj.subscribe === 'function') {\n    var obs = obj;\n    return new SafeSubscription(function (sub) {\n      return obs.subscribe({\n        next: function next() {\n          if (sub.subscribed) {\n            sub.unsubscribe();\n            resolve(obj);\n          }\n        },\n        error: function error(_error) {\n          if (sub.subscribed) {\n            sub.unsubscribe();\n            reject(_error);\n          }\n        },\n        complete: function complete() {\n          if (sub.subscribed) {\n            sub.unsubscribe();\n            resolve(obj);\n          }\n        }\n      });\n    });\n  }\n\n  try {\n    return resolve(obj);\n  } catch (error) {\n    return reject(error);\n  }\n}\n\nexport var RouteLoader = function () {\n  function RouteLoader() {\n    \n  }\n\n  RouteLoader.prototype.loadRoute = function loadRoute(router, config, navigationInstruction) {\n    throw Error('Route loaders must implement \"loadRoute(router, config, navigationInstruction)\".');\n  };\n\n  return RouteLoader;\n}();\n\nexport var LoadRouteStep = function () {\n  LoadRouteStep.inject = function inject() {\n    return [RouteLoader];\n  };\n\n  function LoadRouteStep(routeLoader) {\n    \n\n    this.routeLoader = routeLoader;\n  }\n\n  LoadRouteStep.prototype.run = function run(navigationInstruction, next) {\n    return loadNewRoute(this.routeLoader, navigationInstruction).then(next).catch(next.cancel);\n  };\n\n  return LoadRouteStep;\n}();\n\nfunction loadNewRoute(routeLoader, navigationInstruction) {\n  var toLoad = determineWhatToLoad(navigationInstruction);\n  var loadPromises = toLoad.map(function (current) {\n    return loadRoute(routeLoader, current.navigationInstruction, current.viewPortPlan);\n  });\n\n  return Promise.all(loadPromises);\n}\n\nfunction determineWhatToLoad(navigationInstruction) {\n  var toLoad = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n  var plan = navigationInstruction.plan;\n\n  for (var viewPortName in plan) {\n    var _viewPortPlan2 = plan[viewPortName];\n\n    if (_viewPortPlan2.strategy === activationStrategy.replace) {\n      toLoad.push({ viewPortPlan: _viewPortPlan2, navigationInstruction: navigationInstruction });\n\n      if (_viewPortPlan2.childNavigationInstruction) {\n        determineWhatToLoad(_viewPortPlan2.childNavigationInstruction, toLoad);\n      }\n    } else {\n      var _viewPortInstruction3 = navigationInstruction.addViewPortInstruction(viewPortName, _viewPortPlan2.strategy, _viewPortPlan2.prevModuleId, _viewPortPlan2.prevComponent);\n\n      if (_viewPortPlan2.childNavigationInstruction) {\n        _viewPortInstruction3.childNavigationInstruction = _viewPortPlan2.childNavigationInstruction;\n        determineWhatToLoad(_viewPortPlan2.childNavigationInstruction, toLoad);\n      }\n    }\n  }\n\n  return toLoad;\n}\n\nfunction loadRoute(routeLoader, navigationInstruction, viewPortPlan) {\n  var moduleId = viewPortPlan.config ? viewPortPlan.config.moduleId : null;\n\n  return loadComponent(routeLoader, navigationInstruction, viewPortPlan.config).then(function (component) {\n    var viewPortInstruction = navigationInstruction.addViewPortInstruction(viewPortPlan.name, viewPortPlan.strategy, moduleId, component);\n\n    var childRouter = component.childRouter;\n    if (childRouter) {\n      var path = navigationInstruction.getWildcardPath();\n\n      return childRouter._createNavigationInstruction(path, navigationInstruction).then(function (childInstruction) {\n        viewPortPlan.childNavigationInstruction = childInstruction;\n\n        return _buildNavigationPlan(childInstruction).then(function (childPlan) {\n          if (childPlan instanceof Redirect) {\n            return Promise.reject(childPlan);\n          }\n          childInstruction.plan = childPlan;\n          viewPortInstruction.childNavigationInstruction = childInstruction;\n\n          return loadNewRoute(routeLoader, childInstruction);\n        });\n      });\n    }\n\n    return undefined;\n  });\n}\n\nfunction loadComponent(routeLoader, navigationInstruction, config) {\n  var router = navigationInstruction.router;\n  var lifecycleArgs = navigationInstruction.lifecycleArgs;\n\n  return routeLoader.loadRoute(router, config, navigationInstruction).then(function (component) {\n    var viewModel = component.viewModel,\n        childContainer = component.childContainer;\n\n    component.router = router;\n    component.config = config;\n\n    if ('configureRouter' in viewModel) {\n      var childRouter = childContainer.getChildRouter();\n      component.childRouter = childRouter;\n\n      return childRouter.configure(function (c) {\n        return viewModel.configureRouter.apply(viewModel, [c, childRouter].concat(lifecycleArgs));\n      }).then(function () {\n        return component;\n      });\n    }\n\n    return component;\n  });\n}\n\nvar PipelineSlot = function () {\n  function PipelineSlot(container, name, alias) {\n    \n\n    this.steps = [];\n\n    this.container = container;\n    this.slotName = name;\n    this.slotAlias = alias;\n  }\n\n  PipelineSlot.prototype.getSteps = function getSteps() {\n    var _this8 = this;\n\n    return this.steps.map(function (x) {\n      return _this8.container.get(x);\n    });\n  };\n\n  return PipelineSlot;\n}();\n\nexport var PipelineProvider = function () {\n  PipelineProvider.inject = function inject() {\n    return [Container];\n  };\n\n  function PipelineProvider(container) {\n    \n\n    this.container = container;\n    this.steps = [BuildNavigationPlanStep, CanDeactivatePreviousStep, LoadRouteStep, this._createPipelineSlot('authorize'), CanActivateNextStep, this._createPipelineSlot('preActivate', 'modelbind'), DeactivatePreviousStep, ActivateNextStep, this._createPipelineSlot('preRender', 'precommit'), CommitChangesStep, this._createPipelineSlot('postRender', 'postcomplete')];\n  }\n\n  PipelineProvider.prototype.createPipeline = function createPipeline() {\n    var _this9 = this;\n\n    var useCanDeactivateStep = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n    var pipeline = new Pipeline();\n    this.steps.forEach(function (step) {\n      if (useCanDeactivateStep || step !== CanDeactivatePreviousStep) {\n        pipeline.addStep(_this9.container.get(step));\n      }\n    });\n    return pipeline;\n  };\n\n  PipelineProvider.prototype._findStep = function _findStep(name) {\n    return this.steps.find(function (x) {\n      return x.slotName === name || x.slotAlias === name;\n    });\n  };\n\n  PipelineProvider.prototype.addStep = function addStep(name, step) {\n    var found = this._findStep(name);\n    if (found) {\n      if (!found.steps.includes(step)) {\n        found.steps.push(step);\n      }\n    } else {\n      throw new Error('Invalid pipeline slot name: ' + name + '.');\n    }\n  };\n\n  PipelineProvider.prototype.removeStep = function removeStep(name, step) {\n    var slot = this._findStep(name);\n    if (slot) {\n      slot.steps.splice(slot.steps.indexOf(step), 1);\n    }\n  };\n\n  PipelineProvider.prototype._clearSteps = function _clearSteps() {\n    var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n    var slot = this._findStep(name);\n    if (slot) {\n      slot.steps = [];\n    }\n  };\n\n  PipelineProvider.prototype.reset = function reset() {\n    this._clearSteps('authorize');\n    this._clearSteps('preActivate');\n    this._clearSteps('preRender');\n    this._clearSteps('postRender');\n  };\n\n  PipelineProvider.prototype._createPipelineSlot = function _createPipelineSlot(name, alias) {\n    return new PipelineSlot(this.container, name, alias);\n  };\n\n  return PipelineProvider;\n}();\n\nvar logger = LogManager.getLogger('app-router');\n\nexport var AppRouter = function (_Router) {\n  _inherits(AppRouter, _Router);\n\n  AppRouter.inject = function inject() {\n    return [Container, History, PipelineProvider, EventAggregator];\n  };\n\n  function AppRouter(container, history, pipelineProvider, events) {\n    \n\n    var _this10 = _possibleConstructorReturn(this, _Router.call(this, container, history));\n\n    _this10.pipelineProvider = pipelineProvider;\n    _this10.events = events;\n    return _this10;\n  }\n\n  AppRouter.prototype.reset = function reset() {\n    _Router.prototype.reset.call(this);\n    this.maxInstructionCount = 10;\n    if (!this._queue) {\n      this._queue = [];\n    } else {\n      this._queue.length = 0;\n    }\n  };\n\n  AppRouter.prototype.loadUrl = function loadUrl(url) {\n    var _this11 = this;\n\n    return this._createNavigationInstruction(url).then(function (instruction) {\n      return _this11._queueInstruction(instruction);\n    }).catch(function (error) {\n      logger.error(error);\n      restorePreviousLocation(_this11);\n    });\n  };\n\n  AppRouter.prototype.registerViewPort = function registerViewPort(viewPort, name) {\n    var _this12 = this;\n\n    _Router.prototype.registerViewPort.call(this, viewPort, name);\n\n    if (!this.isActive) {\n      var viewModel = this._findViewModel(viewPort);\n      if ('configureRouter' in viewModel) {\n        if (!this.isConfigured) {\n          var resolveConfiguredPromise = this._resolveConfiguredPromise;\n          this._resolveConfiguredPromise = function () {};\n          return this.configure(function (config) {\n            return viewModel.configureRouter(config, _this12);\n          }).then(function () {\n            _this12.activate();\n            resolveConfiguredPromise();\n          });\n        }\n      } else {\n        this.activate();\n      }\n    } else {\n      this._dequeueInstruction();\n    }\n\n    return Promise.resolve();\n  };\n\n  AppRouter.prototype.activate = function activate(options) {\n    if (this.isActive) {\n      return;\n    }\n\n    this.isActive = true;\n    this.options = Object.assign({ routeHandler: this.loadUrl.bind(this) }, this.options, options);\n    this.history.activate(this.options);\n    this._dequeueInstruction();\n  };\n\n  AppRouter.prototype.deactivate = function deactivate() {\n    this.isActive = false;\n    this.history.deactivate();\n  };\n\n  AppRouter.prototype._queueInstruction = function _queueInstruction(instruction) {\n    var _this13 = this;\n\n    return new Promise(function (resolve) {\n      instruction.resolve = resolve;\n      _this13._queue.unshift(instruction);\n      _this13._dequeueInstruction();\n    });\n  };\n\n  AppRouter.prototype._dequeueInstruction = function _dequeueInstruction() {\n    var _this14 = this;\n\n    var instructionCount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n    return Promise.resolve().then(function () {\n      if (_this14.isNavigating && !instructionCount) {\n        return undefined;\n      }\n\n      var instruction = _this14._queue.shift();\n      _this14._queue.length = 0;\n\n      if (!instruction) {\n        return undefined;\n      }\n\n      _this14.isNavigating = true;\n\n      var navtracker = _this14.history.getState('NavigationTracker');\n      if (!navtracker && !_this14.currentNavigationTracker) {\n        _this14.isNavigatingFirst = true;\n        _this14.isNavigatingNew = true;\n      } else if (!navtracker) {\n        _this14.isNavigatingNew = true;\n      } else if (!_this14.currentNavigationTracker) {\n        _this14.isNavigatingRefresh = true;\n      } else if (_this14.currentNavigationTracker < navtracker) {\n        _this14.isNavigatingForward = true;\n      } else if (_this14.currentNavigationTracker > navtracker) {\n        _this14.isNavigatingBack = true;\n      }if (!navtracker) {\n        navtracker = Date.now();\n        _this14.history.setState('NavigationTracker', navtracker);\n      }\n      _this14.currentNavigationTracker = navtracker;\n\n      instruction.previousInstruction = _this14.currentInstruction;\n\n      if (!instructionCount) {\n        _this14.events.publish('router:navigation:processing', { instruction: instruction });\n      } else if (instructionCount === _this14.maxInstructionCount - 1) {\n        logger.error(instructionCount + 1 + ' navigation instructions have been attempted without success. Restoring last known good location.');\n        restorePreviousLocation(_this14);\n        return _this14._dequeueInstruction(instructionCount + 1);\n      } else if (instructionCount > _this14.maxInstructionCount) {\n        throw new Error('Maximum navigation attempts exceeded. Giving up.');\n      }\n\n      var pipeline = _this14.pipelineProvider.createPipeline(!_this14.couldDeactivate);\n\n      return pipeline.run(instruction).then(function (result) {\n        return processResult(instruction, result, instructionCount, _this14);\n      }).catch(function (error) {\n        return { output: error instanceof Error ? error : new Error(error) };\n      }).then(function (result) {\n        return resolveInstruction(instruction, result, !!instructionCount, _this14);\n      });\n    });\n  };\n\n  AppRouter.prototype._findViewModel = function _findViewModel(viewPort) {\n    if (this.container.viewModel) {\n      return this.container.viewModel;\n    }\n\n    if (viewPort.container) {\n      var container = viewPort.container;\n\n      while (container) {\n        if (container.viewModel) {\n          this.container.viewModel = container.viewModel;\n          return container.viewModel;\n        }\n\n        container = container.parent;\n      }\n    }\n\n    return undefined;\n  };\n\n  return AppRouter;\n}(Router);\n\nfunction processResult(instruction, result, instructionCount, router) {\n  if (!(result && 'completed' in result && 'output' in result)) {\n    result = result || {};\n    result.output = new Error('Expected router pipeline to return a navigation result, but got [' + JSON.stringify(result) + '] instead.');\n  }\n\n  var finalResult = null;\n  var navigationCommandResult = null;\n  if (isNavigationCommand(result.output)) {\n    navigationCommandResult = result.output.navigate(router);\n  } else {\n    finalResult = result;\n\n    if (!result.completed) {\n      if (result.output instanceof Error) {\n        logger.error(result.output);\n      }\n\n      restorePreviousLocation(router);\n    }\n  }\n\n  return Promise.resolve(navigationCommandResult).then(function (_) {\n    return router._dequeueInstruction(instructionCount + 1);\n  }).then(function (innerResult) {\n    return finalResult || innerResult || result;\n  });\n}\n\nfunction resolveInstruction(instruction, result, isInnerInstruction, router) {\n  instruction.resolve(result);\n\n  var eventArgs = { instruction: instruction, result: result };\n  if (!isInnerInstruction) {\n    router.isNavigating = false;\n    router.isExplicitNavigation = false;\n    router.isExplicitNavigationBack = false;\n    router.isNavigatingFirst = false;\n    router.isNavigatingNew = false;\n    router.isNavigatingRefresh = false;\n    router.isNavigatingForward = false;\n    router.isNavigatingBack = false;\n    router.couldDeactivate = false;\n\n    var eventName = void 0;\n\n    if (result.output instanceof Error) {\n      eventName = 'error';\n    } else if (!result.completed) {\n      eventName = 'canceled';\n    } else {\n      var _queryString = instruction.queryString ? '?' + instruction.queryString : '';\n      router.history.previousLocation = instruction.fragment + _queryString;\n      eventName = 'success';\n    }\n\n    router.events.publish('router:navigation:' + eventName, eventArgs);\n    router.events.publish('router:navigation:complete', eventArgs);\n  } else {\n    router.events.publish('router:navigation:child:complete', eventArgs);\n  }\n\n  return result;\n}\n\nfunction restorePreviousLocation(router) {\n  var previousLocation = router.history.previousLocation;\n  if (previousLocation) {\n    router.navigate(router.history.previousLocation, { trigger: false, replace: true });\n  } else if (router.fallbackRoute) {\n    router.navigate(router.fallbackRoute, { trigger: true, replace: true });\n  } else {\n    logger.error('Router navigation failed, and no previous location or fallbackRoute could be restored.');\n  }\n}","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nimport { PLATFORM } from 'aurelia-pal';\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n  (function (Object, GOPS) {\n    'use strict';\n\n    if (GOPS in Object) return;\n\n    var setDescriptor,\n        G = PLATFORM.global,\n        id = 0,\n        random = '' + Math.random(),\n        prefix = '__\\x01symbol:',\n        prefixLength = prefix.length,\n        internalSymbol = '__\\x01symbol@@' + random,\n        DP = 'defineProperty',\n        DPies = 'defineProperties',\n        GOPN = 'getOwnPropertyNames',\n        GOPD = 'getOwnPropertyDescriptor',\n        PIE = 'propertyIsEnumerable',\n        gOPN = Object[GOPN],\n        gOPD = Object[GOPD],\n        create = Object.create,\n        keys = Object.keys,\n        defineProperty = Object[DP],\n        $defineProperties = Object[DPies],\n        descriptor = gOPD(Object, GOPN),\n        ObjectProto = Object.prototype,\n        hOP = ObjectProto.hasOwnProperty,\n        pIE = ObjectProto[PIE],\n        toString = ObjectProto.toString,\n        indexOf = Array.prototype.indexOf || function (v) {\n      for (var i = this.length; i-- && this[i] !== v;) {}\n      return i;\n    },\n        addInternalIfNeeded = function addInternalIfNeeded(o, uid, enumerable) {\n      if (!hOP.call(o, internalSymbol)) {\n        defineProperty(o, internalSymbol, {\n          enumerable: false,\n          configurable: false,\n          writable: false,\n          value: {}\n        });\n      }\n      o[internalSymbol]['@@' + uid] = enumerable;\n    },\n        createWithSymbols = function createWithSymbols(proto, descriptors) {\n      var self = create(proto);\n      if (descriptors !== null && (typeof descriptors === 'undefined' ? 'undefined' : _typeof(descriptors)) === 'object') {\n        gOPN(descriptors).forEach(function (key) {\n          if (propertyIsEnumerable.call(descriptors, key)) {\n            $defineProperty(self, key, descriptors[key]);\n          }\n        });\n      }\n      return self;\n    },\n        copyAsNonEnumerable = function copyAsNonEnumerable(descriptor) {\n      var newDescriptor = create(descriptor);\n      newDescriptor.enumerable = false;\n      return newDescriptor;\n    },\n        get = function get() {},\n        onlyNonSymbols = function onlyNonSymbols(name) {\n      return name != internalSymbol && !hOP.call(source, name);\n    },\n        onlySymbols = function onlySymbols(name) {\n      return name != internalSymbol && hOP.call(source, name);\n    },\n        propertyIsEnumerable = function propertyIsEnumerable(key) {\n      var uid = '' + key;\n      return onlySymbols(uid) ? hOP.call(this, uid) && this[internalSymbol] && this[internalSymbol]['@@' + uid] : pIE.call(this, key);\n    },\n        setAndGetSymbol = function setAndGetSymbol(uid) {\n      var descriptor = {\n        enumerable: false,\n        configurable: true,\n        get: get,\n        set: function set(value) {\n          setDescriptor(this, uid, {\n            enumerable: false,\n            configurable: true,\n            writable: true,\n            value: value\n          });\n          addInternalIfNeeded(this, uid, true);\n        }\n      };\n      defineProperty(ObjectProto, uid, descriptor);\n      return source[uid] = defineProperty(Object(uid), 'constructor', sourceConstructor);\n    },\n        _Symbol = function _Symbol2(description) {\n      if (this && this !== G) {\n        throw new TypeError('Symbol is not a constructor');\n      }\n      return setAndGetSymbol(prefix.concat(description || '', random, ++id));\n    },\n        source = create(null),\n        sourceConstructor = { value: _Symbol },\n        sourceMap = function sourceMap(uid) {\n      return source[uid];\n    },\n        $defineProperty = function defineProp(o, key, descriptor) {\n      var uid = '' + key;\n      if (onlySymbols(uid)) {\n        setDescriptor(o, uid, descriptor.enumerable ? copyAsNonEnumerable(descriptor) : descriptor);\n        addInternalIfNeeded(o, uid, !!descriptor.enumerable);\n      } else {\n        defineProperty(o, key, descriptor);\n      }\n      return o;\n    },\n        $getOwnPropertySymbols = function getOwnPropertySymbols(o) {\n      var cof = toString.call(o);\n      o = cof === '[object String]' ? o.split('') : Object(o);\n      return gOPN(o).filter(onlySymbols).map(sourceMap);\n    };\n\n    descriptor.value = $defineProperty;\n    defineProperty(Object, DP, descriptor);\n\n    descriptor.value = $getOwnPropertySymbols;\n    defineProperty(Object, GOPS, descriptor);\n\n    var cachedWindowNames = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' ? Object.getOwnPropertyNames(window) : [];\n    var originalObjectGetOwnPropertyNames = Object.getOwnPropertyNames;\n    descriptor.value = function getOwnPropertyNames(o) {\n      if (toString.call(o) === '[object Window]') {\n        try {\n          return originalObjectGetOwnPropertyNames(o);\n        } catch (e) {\n          return [].concat([], cachedWindowNames);\n        }\n      }\n      return gOPN(o).filter(onlyNonSymbols);\n    };\n    defineProperty(Object, GOPN, descriptor);\n\n    descriptor.value = function defineProperties(o, descriptors) {\n      var symbols = $getOwnPropertySymbols(descriptors);\n      if (symbols.length) {\n        keys(descriptors).concat(symbols).forEach(function (uid) {\n          if (propertyIsEnumerable.call(descriptors, uid)) {\n            $defineProperty(o, uid, descriptors[uid]);\n          }\n        });\n      } else {\n        $defineProperties(o, descriptors);\n      }\n      return o;\n    };\n    defineProperty(Object, DPies, descriptor);\n\n    descriptor.value = propertyIsEnumerable;\n    defineProperty(ObjectProto, PIE, descriptor);\n\n    descriptor.value = _Symbol;\n    defineProperty(G, 'Symbol', descriptor);\n\n    descriptor.value = function (key) {\n      var uid = prefix.concat(prefix, key, random);\n      return uid in ObjectProto ? source[uid] : setAndGetSymbol(uid);\n    };\n    defineProperty(_Symbol, 'for', descriptor);\n\n    descriptor.value = function (symbol) {\n      return hOP.call(source, symbol) ? symbol.slice(prefixLength * 2, -random.length) : void 0;\n    };\n    defineProperty(_Symbol, 'keyFor', descriptor);\n\n    descriptor.value = function getOwnPropertyDescriptor(o, key) {\n      var descriptor = gOPD(o, key);\n      if (descriptor && onlySymbols(key)) {\n        descriptor.enumerable = propertyIsEnumerable.call(o, key);\n      }\n      return descriptor;\n    };\n    defineProperty(Object, GOPD, descriptor);\n\n    descriptor.value = function (proto, descriptors) {\n      return arguments.length === 1 ? create(proto) : createWithSymbols(proto, descriptors);\n    };\n    defineProperty(Object, 'create', descriptor);\n\n    descriptor.value = function () {\n      var str = toString.call(this);\n      return str === '[object String]' && onlySymbols(this) ? '[object Symbol]' : str;\n    };\n    defineProperty(ObjectProto, 'toString', descriptor);\n\n    try {\n      setDescriptor = create(defineProperty({}, prefix, {\n        get: function get() {\n          return defineProperty(this, prefix, { value: false })[prefix];\n        }\n      }))[prefix] || defineProperty;\n    } catch (o_O) {\n      setDescriptor = function setDescriptor(o, key, descriptor) {\n        var protoDescriptor = gOPD(ObjectProto, key);\n        delete ObjectProto[key];\n        defineProperty(o, key, descriptor);\n        defineProperty(ObjectProto, key, protoDescriptor);\n      };\n    }\n  })(Object, 'getOwnPropertySymbols');\n\n  (function (O, S) {\n    var dP = O.defineProperty,\n        ObjectProto = O.prototype,\n        toString = ObjectProto.toString,\n        toStringTag = 'toStringTag',\n        descriptor;\n    ['iterator', 'match', 'replace', 'search', 'split', 'hasInstance', 'isConcatSpreadable', 'unscopables', 'species', 'toPrimitive', toStringTag].forEach(function (name) {\n      if (!(name in Symbol)) {\n        dP(Symbol, name, { value: Symbol(name) });\n        switch (name) {\n          case toStringTag:\n            descriptor = O.getOwnPropertyDescriptor(ObjectProto, 'toString');\n            descriptor.value = function () {\n              var str = toString.call(this),\n                  tst = typeof this === 'undefined' || this === null ? undefined : this[Symbol.toStringTag];\n              return typeof tst === 'undefined' ? str : '[object ' + tst + ']';\n            };\n            dP(ObjectProto, 'toString', descriptor);\n            break;\n        }\n      }\n    });\n  })(Object, Symbol);\n\n  (function (Si, AP, SP) {\n\n    function returnThis() {\n      return this;\n    }\n\n    if (!AP[Si]) AP[Si] = function () {\n      var i = 0,\n          self = this,\n          iterator = {\n        next: function next() {\n          var done = self.length <= i;\n          return done ? { done: done } : { done: done, value: self[i++] };\n        }\n      };\n      iterator[Si] = returnThis;\n      return iterator;\n    };\n\n    if (!SP[Si]) SP[Si] = function () {\n      var fromCodePoint = String.fromCodePoint,\n          self = this,\n          i = 0,\n          length = self.length,\n          iterator = {\n        next: function next() {\n          var done = length <= i,\n              c = done ? '' : fromCodePoint(self.codePointAt(i));\n          i += c.length;\n          return done ? { done: done } : { done: done, value: c };\n        }\n      };\n      iterator[Si] = returnThis;\n      return iterator;\n    };\n  })(Symbol.iterator, Array.prototype, String.prototype);\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n  Number.isNaN = Number.isNaN || function (value) {\n    return value !== value;\n  };\n\n  Number.isFinite = Number.isFinite || function (value) {\n    return typeof value === \"number\" && isFinite(value);\n  };\n}\n\nif (!String.prototype.endsWith || function () {\n  try {\n    return !\"ab\".endsWith(\"a\", 1);\n  } catch (e) {\n    return true;\n  }\n}()) {\n  String.prototype.endsWith = function (searchString, position) {\n    var subjectString = this.toString();\n    if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n      position = subjectString.length;\n    }\n    position -= searchString.length;\n    var lastIndex = subjectString.indexOf(searchString, position);\n    return lastIndex !== -1 && lastIndex === position;\n  };\n}\n\nif (!String.prototype.startsWith || function () {\n  try {\n    return !\"ab\".startsWith(\"b\", 1);\n  } catch (e) {\n    return true;\n  }\n}()) {\n  String.prototype.startsWith = function (searchString, position) {\n    position = position || 0;\n    return this.substr(position, searchString.length) === searchString;\n  };\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n  if (!Array.from) {\n    Array.from = function () {\n      var toInteger = function toInteger(it) {\n        return isNaN(it = +it) ? 0 : (it > 0 ? Math.floor : Math.ceil)(it);\n      };\n      var toLength = function toLength(it) {\n        return it > 0 ? Math.min(toInteger(it), 0x1fffffffffffff) : 0;\n      };\n      var iterCall = function iterCall(iter, fn, val, index) {\n        try {\n          return fn(val, index);\n        } catch (E) {\n          if (typeof iter.return == 'function') iter.return();\n          throw E;\n        }\n      };\n\n      return function from(arrayLike) {\n        var O = Object(arrayLike),\n            C = typeof this == 'function' ? this : Array,\n            aLen = arguments.length,\n            mapfn = aLen > 1 ? arguments[1] : undefined,\n            mapping = mapfn !== undefined,\n            index = 0,\n            iterFn = O[Symbol.iterator],\n            length,\n            result,\n            step,\n            iterator;\n        if (mapping) mapfn = mapfn.bind(aLen > 2 ? arguments[2] : undefined);\n        if (iterFn != undefined && !Array.isArray(arrayLike)) {\n          for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n            result[index] = mapping ? iterCall(iterator, mapfn, step.value, index) : step.value;\n          }\n        } else {\n          length = toLength(O.length);\n          for (result = new C(length); length > index; index++) {\n            result[index] = mapping ? mapfn(O[index], index) : O[index];\n          }\n        }\n        result.length = index;\n        return result;\n      };\n    }();\n  }\n\n  if (!Array.prototype.find) {\n    Object.defineProperty(Array.prototype, 'find', {\n      configurable: true,\n      writable: true,\n      enumerable: false,\n      value: function value(predicate) {\n        if (this === null) {\n          throw new TypeError('Array.prototype.find called on null or undefined');\n        }\n        if (typeof predicate !== 'function') {\n          throw new TypeError('predicate must be a function');\n        }\n        var list = Object(this);\n        var length = list.length >>> 0;\n        var thisArg = arguments[1];\n        var value;\n\n        for (var i = 0; i < length; i++) {\n          value = list[i];\n          if (predicate.call(thisArg, value, i, list)) {\n            return value;\n          }\n        }\n        return undefined;\n      }\n    });\n  }\n\n  if (!Array.prototype.findIndex) {\n    Object.defineProperty(Array.prototype, 'findIndex', {\n      configurable: true,\n      writable: true,\n      enumerable: false,\n      value: function value(predicate) {\n        if (this === null) {\n          throw new TypeError('Array.prototype.findIndex called on null or undefined');\n        }\n        if (typeof predicate !== 'function') {\n          throw new TypeError('predicate must be a function');\n        }\n        var list = Object(this);\n        var length = list.length >>> 0;\n        var thisArg = arguments[1];\n        var value;\n\n        for (var i = 0; i < length; i++) {\n          value = list[i];\n          if (predicate.call(thisArg, value, i, list)) {\n            return i;\n          }\n        }\n        return -1;\n      }\n    });\n  }\n}\n\nif (typeof FEATURE_NO_ES2016 === 'undefined' && !Array.prototype.includes) {\n  Object.defineProperty(Array.prototype, 'includes', {\n    configurable: true,\n    writable: true,\n    enumerable: false,\n    value: function value(searchElement) {\n      var O = Object(this);\n      var len = parseInt(O.length) || 0;\n      if (len === 0) {\n        return false;\n      }\n      var n = parseInt(arguments[1]) || 0;\n      var k;\n      if (n >= 0) {\n        k = n;\n      } else {\n        k = len + n;\n        if (k < 0) {\n          k = 0;\n        }\n      }\n      var currentElement;\n      while (k < len) {\n        currentElement = O[k];\n        if (searchElement === currentElement || searchElement !== searchElement && currentElement !== currentElement) {\n          return true;\n        }\n        k++;\n      }\n      return false;\n    }\n  });\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n  (function () {\n    var needsFix = false;\n\n    try {\n      var s = Object.keys('a');\n      needsFix = s.length !== 1 || s[0] !== '0';\n    } catch (e) {\n      needsFix = true;\n    }\n\n    if (needsFix) {\n      Object.keys = function () {\n        var hasOwnProperty = Object.prototype.hasOwnProperty,\n            hasDontEnumBug = !{ toString: null }.propertyIsEnumerable('toString'),\n            dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'],\n            dontEnumsLength = dontEnums.length;\n\n        return function (obj) {\n          if (obj === undefined || obj === null) {\n            throw TypeError('Cannot convert undefined or null to object');\n          }\n\n          obj = Object(obj);\n\n          var result = [],\n              prop,\n              i;\n\n          for (prop in obj) {\n            if (hasOwnProperty.call(obj, prop)) {\n              result.push(prop);\n            }\n          }\n\n          if (hasDontEnumBug) {\n            for (i = 0; i < dontEnumsLength; i++) {\n              if (hasOwnProperty.call(obj, dontEnums[i])) {\n                result.push(dontEnums[i]);\n              }\n            }\n          }\n\n          return result;\n        };\n      }();\n    }\n  })();\n\n  (function (O) {\n    if ('assign' in O) {\n      return;\n    }\n\n    O.defineProperty(O, 'assign', {\n      configurable: true,\n      writable: true,\n      value: function () {\n        var gOPS = O.getOwnPropertySymbols,\n            pIE = O.propertyIsEnumerable,\n            filterOS = gOPS ? function (self) {\n          return gOPS(self).filter(pIE, self);\n        } : function () {\n          return Array.prototype;\n        };\n\n        return function assign(where) {\n          if (gOPS && !(where instanceof O)) {\n            console.warn('problematic Symbols', where);\n          }\n\n          function set(keyOrSymbol) {\n            where[keyOrSymbol] = arg[keyOrSymbol];\n          }\n\n          for (var i = 1, ii = arguments.length; i < ii; ++i) {\n            var arg = arguments[i];\n\n            if (arg === null || arg === undefined) {\n              continue;\n            }\n\n            O.keys(arg).concat(filterOS(arg)).forEach(set);\n          }\n\n          return where;\n        };\n      }()\n    });\n  })(Object);\n\n  if (!Object.is) {\n    Object.is = function (x, y) {\n      if (x === y) {\n        return x !== 0 || 1 / x === 1 / y;\n      } else {\n        return x !== x && y !== y;\n      }\n    };\n  }\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n  (function (global) {\n    var i;\n\n    var defineProperty = Object.defineProperty,\n        is = function is(a, b) {\n      return a === b || a !== a && b !== b;\n    };\n\n    if (typeof WeakMap == 'undefined') {\n      global.WeakMap = createCollection({\n        'delete': sharedDelete,\n\n        clear: sharedClear,\n\n        get: sharedGet,\n\n        has: mapHas,\n\n        set: sharedSet\n      }, true);\n    }\n\n    if (typeof Map == 'undefined' || typeof new Map().values !== 'function' || !new Map().values().next) {\n      var _createCollection;\n\n      global.Map = createCollection((_createCollection = {\n        'delete': sharedDelete,\n\n        has: mapHas,\n\n        get: sharedGet,\n\n        set: sharedSet,\n\n        keys: sharedKeys,\n\n        values: sharedValues,\n\n        entries: mapEntries,\n\n        forEach: sharedForEach,\n\n        clear: sharedClear\n      }, _createCollection[Symbol.iterator] = mapEntries, _createCollection));\n    }\n\n    if (typeof Set == 'undefined' || typeof new Set().values !== 'function' || !new Set().values().next) {\n      var _createCollection2;\n\n      global.Set = createCollection((_createCollection2 = {\n        has: setHas,\n\n        add: sharedAdd,\n\n        'delete': sharedDelete,\n\n        clear: sharedClear,\n\n        keys: sharedValues,\n        values: sharedValues,\n\n        entries: setEntries,\n\n        forEach: sharedForEach\n      }, _createCollection2[Symbol.iterator] = sharedValues, _createCollection2));\n    }\n\n    if (typeof WeakSet == 'undefined') {\n      global.WeakSet = createCollection({\n        'delete': sharedDelete,\n\n        add: sharedAdd,\n\n        clear: sharedClear,\n\n        has: setHas\n      }, true);\n    }\n\n    function createCollection(proto, objectOnly) {\n      function Collection(a) {\n        if (!this || this.constructor !== Collection) return new Collection(a);\n        this._keys = [];\n        this._values = [];\n        this._itp = [];\n        this.objectOnly = objectOnly;\n\n        if (a) init.call(this, a);\n      }\n\n      if (!objectOnly) {\n        defineProperty(proto, 'size', {\n          get: sharedSize\n        });\n      }\n\n      proto.constructor = Collection;\n      Collection.prototype = proto;\n\n      return Collection;\n    }\n\n    function init(a) {\n      var i;\n\n      if (this.add) a.forEach(this.add, this);else a.forEach(function (a) {\n          this.set(a[0], a[1]);\n        }, this);\n    }\n\n    function sharedDelete(key) {\n      if (this.has(key)) {\n        this._keys.splice(i, 1);\n        this._values.splice(i, 1);\n\n        this._itp.forEach(function (p) {\n          if (i < p[0]) p[0]--;\n        });\n      }\n\n      return -1 < i;\n    };\n\n    function sharedGet(key) {\n      return this.has(key) ? this._values[i] : undefined;\n    }\n\n    function has(list, key) {\n      if (this.objectOnly && key !== Object(key)) throw new TypeError(\"Invalid value used as weak collection key\");\n\n      if (key != key || key === 0) for (i = list.length; i-- && !is(list[i], key);) {} else i = list.indexOf(key);\n      return -1 < i;\n    }\n\n    function setHas(value) {\n      return has.call(this, this._values, value);\n    }\n\n    function mapHas(value) {\n      return has.call(this, this._keys, value);\n    }\n\n    function sharedSet(key, value) {\n      this.has(key) ? this._values[i] = value : this._values[this._keys.push(key) - 1] = value;\n      return this;\n    }\n\n    function sharedAdd(value) {\n      if (!this.has(value)) this._values.push(value);\n      return this;\n    }\n\n    function sharedClear() {\n      (this._keys || 0).length = this._values.length = 0;\n    }\n\n    function sharedKeys() {\n      return sharedIterator(this._itp, this._keys);\n    }\n\n    function sharedValues() {\n      return sharedIterator(this._itp, this._values);\n    }\n\n    function mapEntries() {\n      return sharedIterator(this._itp, this._keys, this._values);\n    }\n\n    function setEntries() {\n      return sharedIterator(this._itp, this._values, this._values);\n    }\n\n    function sharedIterator(itp, array, array2) {\n      var _ref;\n\n      var p = [0],\n          done = false;\n      itp.push(p);\n      return _ref = {}, _ref[Symbol.iterator] = function () {\n        return this;\n      }, _ref.next = function next() {\n        var v,\n            k = p[0];\n        if (!done && k < array.length) {\n          v = array2 ? [array[k], array2[k]] : array[k];\n          p[0]++;\n        } else {\n          done = true;\n          itp.splice(itp.indexOf(p), 1);\n        }\n        return { done: done, value: v };\n      }, _ref;\n    }\n\n    function sharedSize() {\n      return this._values.length;\n    }\n\n    function sharedForEach(callback, context) {\n      var it = this.entries();\n      for (;;) {\n        var r = it.next();\n        if (r.done) break;\n        callback.call(context, r.value[1], r.value[0], this);\n      }\n    }\n  })(PLATFORM.global);\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n  var bind = Function.prototype.bind;\n\n  if (typeof PLATFORM.global.Reflect === 'undefined') {\n    PLATFORM.global.Reflect = {};\n  }\n\n  if (typeof Reflect.defineProperty !== 'function') {\n    Reflect.defineProperty = function (target, propertyKey, descriptor) {\n      if ((typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' ? target === null : typeof target !== 'function') {\n        throw new TypeError('Reflect.defineProperty called on non-object');\n      }\n      try {\n        Object.defineProperty(target, propertyKey, descriptor);\n        return true;\n      } catch (e) {\n        return false;\n      }\n    };\n  }\n\n  if (typeof Reflect.construct !== 'function') {\n    Reflect.construct = function (Target, args) {\n      if (args) {\n        switch (args.length) {\n          case 0:\n            return new Target();\n          case 1:\n            return new Target(args[0]);\n          case 2:\n            return new Target(args[0], args[1]);\n          case 3:\n            return new Target(args[0], args[1], args[2]);\n          case 4:\n            return new Target(args[0], args[1], args[2], args[3]);\n        }\n      }\n\n      var a = [null];\n      a.push.apply(a, args);\n      return new (bind.apply(Target, a))();\n    };\n  }\n\n  if (typeof Reflect.ownKeys !== 'function') {\n    Reflect.ownKeys = function (o) {\n      return Object.getOwnPropertyNames(o).concat(Object.getOwnPropertySymbols(o));\n    };\n  }\n}\n\nif (typeof FEATURE_NO_ESNEXT === 'undefined') {\n\n  var emptyMetadata = Object.freeze({});\n  var metadataContainerKey = '__metadata__';\n\n  if (typeof Reflect.getOwnMetadata !== 'function') {\n    Reflect.getOwnMetadata = function (metadataKey, target, targetKey) {\n      if (target.hasOwnProperty(metadataContainerKey)) {\n        return (target[metadataContainerKey][targetKey] || emptyMetadata)[metadataKey];\n      }\n    };\n  }\n\n  if (typeof Reflect.defineMetadata !== 'function') {\n    Reflect.defineMetadata = function (metadataKey, metadataValue, target, targetKey) {\n      var metadataContainer = target.hasOwnProperty(metadataContainerKey) ? target[metadataContainerKey] : target[metadataContainerKey] = {};\n      var targetContainer = metadataContainer[targetKey] || (metadataContainer[targetKey] = {});\n      targetContainer[metadataKey] = metadataValue;\n    };\n  }\n\n  if (typeof Reflect.metadata !== 'function') {\n    Reflect.metadata = function (metadataKey, metadataValue) {\n      return function (target, targetKey) {\n        Reflect.defineMetadata(metadataKey, metadataValue, target, targetKey);\n      };\n    };\n  }\n}","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction trimDots(ary) {\n  for (var i = 0; i < ary.length; ++i) {\n    var part = ary[i];\n    if (part === '.') {\n      ary.splice(i, 1);\n      i -= 1;\n    } else if (part === '..') {\n      if (i === 0 || i === 1 && ary[2] === '..' || ary[i - 1] === '..') {\n        continue;\n      } else if (i > 0) {\n        ary.splice(i - 1, 2);\n        i -= 2;\n      }\n    }\n  }\n}\n\nexport function relativeToFile(name, file) {\n  var fileParts = file && file.split('/');\n  var nameParts = name.trim().split('/');\n\n  if (nameParts[0].charAt(0) === '.' && fileParts) {\n    var normalizedBaseParts = fileParts.slice(0, fileParts.length - 1);\n    nameParts.unshift.apply(nameParts, normalizedBaseParts);\n  }\n\n  trimDots(nameParts);\n\n  return nameParts.join('/');\n}\n\nexport function join(path1, path2) {\n  if (!path1) {\n    return path2;\n  }\n\n  if (!path2) {\n    return path1;\n  }\n\n  var schemeMatch = path1.match(/^([^/]*?:)\\//);\n  var scheme = schemeMatch && schemeMatch.length > 0 ? schemeMatch[1] : '';\n  path1 = path1.substr(scheme.length);\n\n  var urlPrefix = void 0;\n  if (path1.indexOf('///') === 0 && scheme === 'file:') {\n    urlPrefix = '///';\n  } else if (path1.indexOf('//') === 0) {\n    urlPrefix = '//';\n  } else if (path1.indexOf('/') === 0) {\n    urlPrefix = '/';\n  } else {\n    urlPrefix = '';\n  }\n\n  var trailingSlash = path2.slice(-1) === '/' ? '/' : '';\n\n  var url1 = path1.split('/');\n  var url2 = path2.split('/');\n  var url3 = [];\n\n  for (var i = 0, ii = url1.length; i < ii; ++i) {\n    if (url1[i] === '..') {\n      url3.pop();\n    } else if (url1[i] === '.' || url1[i] === '') {\n      continue;\n    } else {\n      url3.push(url1[i]);\n    }\n  }\n\n  for (var _i = 0, _ii = url2.length; _i < _ii; ++_i) {\n    if (url2[_i] === '..') {\n      url3.pop();\n    } else if (url2[_i] === '.' || url2[_i] === '') {\n      continue;\n    } else {\n      url3.push(url2[_i]);\n    }\n  }\n\n  return scheme + urlPrefix + url3.join('/') + trailingSlash;\n}\n\nvar encode = encodeURIComponent;\nvar encodeKey = function encodeKey(k) {\n  return encode(k).replace('%24', '$');\n};\n\nfunction buildParam(key, value, traditional) {\n  var result = [];\n  if (value === null || value === undefined) {\n    return result;\n  }\n  if (Array.isArray(value)) {\n    for (var i = 0, l = value.length; i < l; i++) {\n      if (traditional) {\n        result.push(encodeKey(key) + '=' + encode(value[i]));\n      } else {\n        var arrayKey = key + '[' + (_typeof(value[i]) === 'object' && value[i] !== null ? i : '') + ']';\n        result = result.concat(buildParam(arrayKey, value[i]));\n      }\n    }\n  } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !traditional) {\n    for (var propertyName in value) {\n      result = result.concat(buildParam(key + '[' + propertyName + ']', value[propertyName]));\n    }\n  } else {\n    result.push(encodeKey(key) + '=' + encode(value));\n  }\n  return result;\n}\n\nexport function buildQueryString(params, traditional) {\n  var pairs = [];\n  var keys = Object.keys(params || {}).sort();\n  for (var i = 0, len = keys.length; i < len; i++) {\n    var key = keys[i];\n    pairs = pairs.concat(buildParam(key, params[key], traditional));\n  }\n\n  if (pairs.length === 0) {\n    return '';\n  }\n\n  return pairs.join('&');\n}\n\nfunction processScalarParam(existedParam, value) {\n  if (Array.isArray(existedParam)) {\n    existedParam.push(value);\n    return existedParam;\n  }\n  if (existedParam !== undefined) {\n    return [existedParam, value];\n  }\n\n  return value;\n}\n\nfunction parseComplexParam(queryParams, keys, value) {\n  var currentParams = queryParams;\n  var keysLastIndex = keys.length - 1;\n  for (var j = 0; j <= keysLastIndex; j++) {\n    var key = keys[j] === '' ? currentParams.length : keys[j];\n    if (j < keysLastIndex) {\n      var prevValue = !currentParams[key] || _typeof(currentParams[key]) === 'object' ? currentParams[key] : [currentParams[key]];\n      currentParams = currentParams[key] = prevValue || (isNaN(keys[j + 1]) ? {} : []);\n    } else {\n      currentParams = currentParams[key] = value;\n    }\n  }\n}\n\nexport function parseQueryString(queryString) {\n  var queryParams = {};\n  if (!queryString || typeof queryString !== 'string') {\n    return queryParams;\n  }\n\n  var query = queryString;\n  if (query.charAt(0) === '?') {\n    query = query.substr(1);\n  }\n\n  var pairs = query.replace(/\\+/g, ' ').split('&');\n  for (var i = 0; i < pairs.length; i++) {\n    var pair = pairs[i].split('=');\n    var key = decodeURIComponent(pair[0]);\n    if (!key) {\n      continue;\n    }\n\n    var keys = key.split('][');\n    var keysLastIndex = keys.length - 1;\n\n    if (/\\[/.test(keys[0]) && /\\]$/.test(keys[keysLastIndex])) {\n      keys[keysLastIndex] = keys[keysLastIndex].replace(/\\]$/, '');\n      keys = keys.shift().split('[').concat(keys);\n      keysLastIndex = keys.length - 1;\n    } else {\n      keysLastIndex = 0;\n    }\n\n    if (pair.length >= 2) {\n      var value = pair[1] ? decodeURIComponent(pair[1]) : '';\n      if (keysLastIndex) {\n        parseComplexParam(queryParams, keys, value);\n      } else {\n        queryParams[key] = processScalarParam(queryParams[key], value);\n      }\n    } else {\n      queryParams[key] = true;\n    }\n  }\n  return queryParams;\n}"],"sourceRoot":""}