{"version":3,"sources":["webpack:///./~/aurelia-logging/dist/native-modules/aurelia-logging.js","webpack:///./~/aurelia-task-queue/dist/native-modules/aurelia-task-queue.js","webpack:///./~/aurelia-history/dist/native-modules/aurelia-history.js","webpack:///./~/aurelia-binding/dist/native-modules/aurelia-binding.js","webpack:///./~/aurelia-templating/dist/native-modules/aurelia-templating.js","webpack:///./~/aurelia-dependency-injection/dist/es2015/aurelia-dependency-injection.js","webpack:///./~/aurelia-event-aggregator/dist/native-modules/aurelia-event-aggregator.js","webpack:///./~/aurelia-framework/dist/es2015/aurelia-framework.js","webpack:///./~/aurelia-history-browser/dist/native-modules/aurelia-history-browser.js","webpack:///./~/aurelia-logging-console/dist/native-modules/aurelia-logging-console.js","webpack:///./~/aurelia-route-recognizer/dist/native-modules/aurelia-route-recognizer.js","webpack:///./~/aurelia-router/dist/es2015/aurelia-router.js","webpack:///./~/aurelia-templating-binding/dist/native-modules/aurelia-templating-binding.js","webpack:///./~/aurelia-templating-resources/dist/native-modules/aurelia-templating-resources.js","webpack:///./~/aurelia-templating-router/dist/es2015/aurelia-templating-router.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,G;;;;;;;;;ACpLD;AAAA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;;;AAInP;;AAEvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8DAA8D,kBAAkB;AAChF;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,C;;;;;;;;;;;ACzLA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpDO;AACA;AACA;;AAER,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;;AAEA,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;;;AAI5e;AACwB;AACJ;AACD;;AAEnB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;;AAEA,oBAAoB,eAAe;AACnC,sBAAsB,kBAAkB;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD,wDAAwD,WAAW;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6CAA6C,YAAY;AACzD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yCAAyC,YAAY;AACrD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;;AAEQ;AACR;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,2CAA2C,YAAY;AACvD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,2CAA2C,YAAY;AACvD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,2CAA2C,YAAY;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,+CAA+C,YAAY;AAC3D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB;;AAEnB,2CAA2C,YAAY;AACvD;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,2BAA2B,EAAE;AAC7B;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4EAA4E,UAAU;;AAEtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,UAAU;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qCAAqC;AAChF;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2FAA2F;AAC3F;AACA;AACA,OAAO;AACP,0EAA0E,4FAA4F;AACtK;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF;AACxF;AACA;AACA,OAAO;AACP,6DAA6D,yCAAyC;AACtG;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,OAAO;AACP,sMAAsM,YAAY;AAClN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,4CAA4C,sDAAsD;AAClG;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iEAAiE,aAAa;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,oBAAoB;;AAE3E;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACh/KA;AAAA,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;;;;AAIA;AACqC;AACJ;AACO;AACf;AACiK;AACpJ;AAClB;;AAEpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+FAAkD,2DAA2D;AAC7G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,+CAA+C,QAAQ;AACvD;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+CAA+C,QAAQ;AACvD;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,uJAAuJ;AACvJ;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;;AAEA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA,+CAA+C,QAAQ;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,QAAQ;AACzD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,qBAAqB,QAAQ;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,QAAQ;AAC9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb,OAAO;AACP;AACA;AACA,eAAe;AACf,SAAS;AACT;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,OAAO;AACP;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA,iCAAiC;;AAEjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA,qDAAqD,QAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC,QAAQ;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,qCAAqC,QAAQ;AAC7C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,QAAQ;AAChD;AACA;;AAEA;AACA,qCAAqC,QAAQ;AAC7C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uCAAuC,QAAQ;AAC/C;AACA;;AAEA;AACA,0CAA0C,QAAQ;AAClD;AACA;;AAEA;AACA,uCAAuC,QAAQ;AAC/C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,wCAAwC,QAAQ;AAChD;AACA;;AAEA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0CAA0C,QAAQ;AAClD;AACA;;AAEA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,oCAAoC;AACpC,8BAA8B;AAC9B,kCAAkC;AAClC,sCAAsC;AACtC;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;;AAEA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;;AAEA;AACA,mBAAmB,QAAQ;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA,mBAAmB,QAAQ;AAC3B;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,QAAQ;AAC9C;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;;AAEA;;AAEA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,iDAAiD,QAAQ;AACzD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sCAAsC,QAAQ;AAC9C;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,qCAAqC;AACrC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,QAAQ;AAC/C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,QAAQ;AAC3D;AACA;AACA;AACA;;AAEA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,qDAAqD,QAAQ;AAC7D;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,KAAK;AACL;AACA,+CAA+C,WAAW;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,sDAAsD,QAAQ;AAC9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,QAAQ;AAC9C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,QAAQ;AAClD;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,uCAAuC,QAAQ;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mDAAmD,YAAY;AAC/D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0FAA0F;AAC1F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,gCAAgC,kEAAkE;AAClG,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,KAAK;AACL,yCAAyC,QAAQ;AACjD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;;AAEA;AACA;AACA,4DAA4D,YAAY;AACxE;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT,wDAAwD,YAAY;AACpE;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,wDAAwD,YAAY;AACpE;AACA;AACA;AACA,OAAO;AACP,sDAAsD,YAAY;AAClE;AACA;AACA;AACA,KAAK;AACL,oDAAoD,YAAY;AAChE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,uCAAuC,QAAQ;AAC/C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA,wDAAwD,YAAY;AACpE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,6CAA6C,aAAa;AAC1D;AACA;AACA;;AAEA,wCAAwC,QAAQ;AAChD;AACA;AACA,uBAAuB,mBAAmB;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC,UAAU;AAClD;AACA;AACA,wBAAwB,oBAAoB;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kDAAkD,cAAc;AAChE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+BAA+B;;AAE/B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uEAAuE,cAAc;AACrF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;;AAEA,gCAAgC;AAChC;;AAEA;;AAEA;AACA;AACA;;AAEA,8CAA8C;;AAE9C;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC,iB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7oKD;AAAA;;AAE6B;AACJ;;AAEzB;AACA;AACA;AACA;;AAEA;AACA,CAAC;AAAA;AAAA;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL,8FAAiD,QAAQ;AACzD;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,C;;;;;;;;;;;;;;ACpoBA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvIA;AACoB;AACH;AAC8G;AACvG;AACO;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,uGAA0D,kCAAkC;AAC5F;AACA;AACA,KAAK;AACL;;AAEA,6BAA6B;AAC7B;;AAEA;AACA;AACA,kCAAkC,2GAA2G;AAC7I;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sGAAyD,kCAAkC;AAC3F;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAiC,cAAc;AAC/C;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,gFAAgF;AAChF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA,4CAA4C,cAAc;AAC1D,SAAS;AACT;;AAEA;AACA,oCAAoC,cAAc;AAClD,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,KAAK,IAAI,IAAI,KAAK,KAAK;AAC3C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,wBAAwB,oDAAoD;AAC5E;;AAEA;AACA,wBAAwB,wCAAwC,EAAE;AAClE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0CAA0C;AAC1C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,gFAAgF;AAChG;AACA;AACA,gBAAgB,8CAA8C;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,sEAAsE;AACxF;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iE;;;;;;;;;;;;;;;;;ACnekB;AACM;;AAExB;AACA;AACA,+DAA+D;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;;AAEA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA;AACA;AACA,yDAAyD;AACzD,oDAAoD;AACpD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,wCAAwC,8BAA8B;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,GAAG,YAAY;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEQ;AACR;;;;;;;;;;;;ACjSA;AACA;;AAEA;;AAEA;AACA;;AAEA,sFAAsF,aAAa;AACnG;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0FAA0F,eAAe;AACzG;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0FAA0F,eAAe;AACzG;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0FAA0F,eAAe;AACzG;AACA;;AAEA;AACA;;AAEA;AACA,CAAC,G;;;;;;;;;;;;;;;;;AC9C4C;;AAE7C;AACA;;;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;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA,gBAAgB,4EAA4E;AAC5F;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,cAAc,kCAAkC;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;;AAEA;AACA,cAAc,iCAAiC;AAC/C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;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;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpfoB;AACA;AACF;AACQ;AACA;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,qBAAqB,gCAAgC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,6BAA6B;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gCAAgC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gBAAgB,WAAW,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA,aAAa,8EAA8E;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,QAAQ;AAC3D,qBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF;AACtF,iBAAiB,OAAO;AACxB;AACA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY,4CAA4C,YAAY;AACtH;AACA;AACA;AACA,qCAAqC,+BAA+B,EAAE,WAAW;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iCAAiC,KAAK;AACtC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE,yBAAyB,iBAAiB;AAC1C,+FAA+F;AAC/F;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E,6BAA6B,iBAAiB;AAC9C,mGAAmG;AACnG;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,IAAI;AAC1E;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kDAAkD,cAAc;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc,qBAAqB,EAAE,+BAA+B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,sCAAsC,+BAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,cAAc;AAChD;AACA;AACA,sCAAsC,+BAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,IAAI;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sCAAsC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gEAAgE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kFAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,KAAK;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yOAAgE;AACrF;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,wCAAwC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,cAAc;AACpG;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sGAAsG,uBAAuB;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gCAAgC;AAC3E;AACA;AACA,+CAA+C,+BAA+B;AAC9E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;;AAErC;AACR;;;;;;;;;;;;;;;;;;;;;;;AClqEA;AAAA;;AAEA,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;;;AAI5e;AACkP;AACnM;;AAE/C;AACA;;;AAGA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,QAAQ;AAC9C;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,iOAA2L,kBAAkB;AAC7M;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA,SAAS,qBAAqB;AAC9B;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC11BsC;AACf;AACH;AACmM;AACJ;AAC/L;AACH;AACQ;AACT;;AAEhB;AACA;AACA,+DAA+D;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;;AAEA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,sEAAsE,uBAAuB,EAAE;AAC/F;AACA;AACA;AACA;AACA,2DAA2D,oBAAoB,EAAE;AACjF;AACA;AACA;AACA,6FAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,qBAAqB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,yCAAyC,EAAE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gBAAgB;AACrD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,qBAAqB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,qBAAqB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,8DAA8D;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,mDAAmD,EAAE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,mDAAmD,EAAE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,mDAAmD,EAAE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,2CAA2C,8CAA8C,EAAE;AAC3F,2CAA2C,+BAA+B,EAAE;AAC5E,2CAA2C,6BAA6B,EAAE;AAC1E,2CAA2C,6BAA6B,EAAE;AAC1E,2CAA2C,kCAAkC,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,qCAAqC,EAAE;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,sCAAsC;AACpF,0CAA0C,+BAA+B;AACzE,8CAA8C,sCAAsC;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,yBAAyB,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,aAAa,EAAE;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,8CAA8C,qCAAqC,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,gDAAgD,0BAA0B;AAC1E;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA,qGAA0B,eAAe;AACzC;AACA;AACA,qGAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,iBAAiB,EAAE;AAClG;AACA;AACA;AACA;AACA;AACA,8BAA8B,oCAAoC,iGAAiG;AACnK,aAAa;AACb;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,yEAAyE,+DAA+D,EAAE;AAC1I;;AAEQ;AACR;;;;;;;;;;;;;;;;;;;;;;ACl6DyC;AACxB;AACQ;AACsI;AAC3I;AACY;AAClB;AACM;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAAmG;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uEAAuE;AAChF,SAAS,iDAAiD;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEQ;AACR","file":"aurelia.b1f69b9d63894c95b62c.bundle.js","sourcesContent":["\n\nexport var logLevel = {\n none: 0,\n error: 10,\n warn: 20,\n info: 30,\n debug: 40\n};\n\nvar loggers = {};\nvar appenders = [];\nvar globalDefaultLevel = logLevel.none;\n\nvar standardLevels = ['none', 'error', 'warn', 'info', 'debug'];\nfunction isStandardLevel(level) {\n return standardLevels.filter(function (l) {\n return l === level;\n }).length > 0;\n}\n\nfunction appendArgs() {\n return [this].concat(Array.prototype.slice.call(arguments));\n}\n\nfunction logFactory(level) {\n var threshold = logLevel[level];\n return function () {\n if (this.level < threshold) {\n return;\n }\n\n var args = appendArgs.apply(this, arguments);\n var i = appenders.length;\n while (i--) {\n var _appenders$i;\n\n (_appenders$i = appenders[i])[level].apply(_appenders$i, args);\n }\n };\n}\n\nfunction logFactoryCustom(level) {\n var threshold = logLevel[level];\n return function () {\n if (this.level < threshold) {\n return;\n }\n\n var args = appendArgs.apply(this, arguments);\n var i = appenders.length;\n while (i--) {\n var appender = appenders[i];\n if (appender[level] !== undefined) {\n appender[level].apply(appender, args);\n }\n }\n };\n}\n\nfunction connectLoggers() {\n var proto = Logger.prototype;\n for (var _level in logLevel) {\n if (isStandardLevel(_level)) {\n if (_level !== 'none') {\n proto[_level] = logFactory(_level);\n }\n } else {\n proto[_level] = logFactoryCustom(_level);\n }\n }\n}\n\nfunction disconnectLoggers() {\n var proto = Logger.prototype;\n for (var _level2 in logLevel) {\n if (_level2 !== 'none') {\n proto[_level2] = function () {};\n }\n }\n}\n\nexport function getLogger(id) {\n return loggers[id] || new Logger(id);\n}\n\nexport function addAppender(appender) {\n if (appenders.push(appender) === 1) {\n connectLoggers();\n }\n}\n\nexport function removeAppender(appender) {\n appenders = appenders.filter(function (a) {\n return a !== appender;\n });\n}\n\nexport function getAppenders() {\n return [].concat(appenders);\n}\n\nexport function clearAppenders() {\n appenders = [];\n disconnectLoggers();\n}\n\nexport function addCustomLevel(name, value) {\n if (logLevel[name] !== undefined) {\n throw Error('Log level \"' + name + '\" already exists.');\n }\n\n if (isNaN(value)) {\n throw Error('Value must be a number.');\n }\n\n logLevel[name] = value;\n\n if (appenders.length > 0) {\n connectLoggers();\n } else {\n Logger.prototype[name] = function () {};\n }\n}\n\nexport function removeCustomLevel(name) {\n if (logLevel[name] === undefined) {\n return;\n }\n\n if (isStandardLevel(name)) {\n throw Error('Built-in log level \"' + name + '\" cannot be removed.');\n }\n\n delete logLevel[name];\n delete Logger.prototype[name];\n}\n\nexport function setLevel(level) {\n globalDefaultLevel = level;\n for (var key in loggers) {\n loggers[key].setLevel(level);\n }\n}\n\nexport function getLevel() {\n return globalDefaultLevel;\n}\n\nexport var Logger = function () {\n function Logger(id) {\n \n\n var cached = loggers[id];\n if (cached) {\n return cached;\n }\n\n loggers[id] = this;\n this.id = id;\n this.level = globalDefaultLevel;\n }\n\n Logger.prototype.debug = function debug(message) {};\n\n Logger.prototype.info = function info(message) {};\n\n Logger.prototype.warn = function warn(message) {};\n\n Logger.prototype.error = function error(message) {};\n\n Logger.prototype.setLevel = function setLevel(level) {\n this.level = level;\n };\n\n Logger.prototype.isDebugEnabled = function isDebugEnabled() {\n return this.level === logLevel.debug;\n };\n\n return Logger;\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-logging/dist/native-modules/aurelia-logging.js\n// module id = 1\n// module chunks = 2","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\n\n\nimport { DOM, FEATURE } from 'aurelia-pal';\n\nvar stackSeparator = '\\nEnqueued in TaskQueue by:\\n';\nvar microStackSeparator = '\\nEnqueued in MicroTaskQueue by:\\n';\n\nfunction makeRequestFlushFromMutationObserver(flush) {\n var observer = DOM.createMutationObserver(flush);\n var val = 'a';\n var node = DOM.createTextNode('a');\n var values = Object.create(null);\n values.a = 'b';\n values.b = 'a';\n observer.observe(node, { characterData: true });\n return function requestFlush() {\n node.data = val = values[val];\n };\n}\n\nfunction makeRequestFlushFromTimer(flush) {\n return function requestFlush() {\n var timeoutHandle = setTimeout(handleFlushTimer, 0);\n\n var intervalHandle = setInterval(handleFlushTimer, 50);\n function handleFlushTimer() {\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n flush();\n }\n };\n}\n\nfunction onError(error, task, longStacks) {\n if (longStacks && task.stack && (typeof error === 'undefined' ? 'undefined' : _typeof(error)) === 'object' && error !== null) {\n error.stack = filterFlushStack(error.stack) + task.stack;\n }\n\n if ('onError' in task) {\n task.onError(error);\n } else {\n setTimeout(function () {\n throw error;\n }, 0);\n }\n}\n\nexport var TaskQueue = function () {\n function TaskQueue() {\n var _this = this;\n\n \n\n this.flushing = false;\n this.longStacks = false;\n\n this.microTaskQueue = [];\n this.microTaskQueueCapacity = 1024;\n this.taskQueue = [];\n\n if (FEATURE.mutationObserver) {\n this.requestFlushMicroTaskQueue = makeRequestFlushFromMutationObserver(function () {\n return _this.flushMicroTaskQueue();\n });\n } else {\n this.requestFlushMicroTaskQueue = makeRequestFlushFromTimer(function () {\n return _this.flushMicroTaskQueue();\n });\n }\n\n this.requestFlushTaskQueue = makeRequestFlushFromTimer(function () {\n return _this.flushTaskQueue();\n });\n }\n\n TaskQueue.prototype._flushQueue = function _flushQueue(queue, capacity) {\n var index = 0;\n var task = void 0;\n\n try {\n this.flushing = true;\n while (index < queue.length) {\n task = queue[index];\n if (this.longStacks) {\n this.stack = typeof task.stack === 'string' ? task.stack : undefined;\n }\n task.call();\n index++;\n\n if (index > capacity) {\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n\n queue.length -= index;\n index = 0;\n }\n }\n } catch (error) {\n onError(error, task, this.longStacks);\n } finally {\n this.flushing = false;\n }\n };\n\n TaskQueue.prototype.queueMicroTask = function queueMicroTask(task) {\n if (this.microTaskQueue.length < 1) {\n this.requestFlushMicroTaskQueue();\n }\n\n if (this.longStacks) {\n task.stack = this.prepareQueueStack(microStackSeparator);\n }\n\n this.microTaskQueue.push(task);\n };\n\n TaskQueue.prototype.queueTask = function queueTask(task) {\n if (this.taskQueue.length < 1) {\n this.requestFlushTaskQueue();\n }\n\n if (this.longStacks) {\n task.stack = this.prepareQueueStack(stackSeparator);\n }\n\n this.taskQueue.push(task);\n };\n\n TaskQueue.prototype.flushTaskQueue = function flushTaskQueue() {\n var queue = this.taskQueue;\n this.taskQueue = [];\n this._flushQueue(queue, Number.MAX_VALUE);\n };\n\n TaskQueue.prototype.flushMicroTaskQueue = function flushMicroTaskQueue() {\n var queue = this.microTaskQueue;\n this._flushQueue(queue, this.microTaskQueueCapacity);\n queue.length = 0;\n };\n\n TaskQueue.prototype.prepareQueueStack = function prepareQueueStack(separator) {\n var stack = separator + filterQueueStack(captureStack());\n\n if (typeof this.stack === 'string') {\n stack = filterFlushStack(stack) + this.stack;\n }\n\n return stack;\n };\n\n return TaskQueue;\n}();\n\nfunction captureStack() {\n var error = new Error();\n\n if (error.stack) {\n return error.stack;\n }\n\n try {\n throw error;\n } catch (e) {\n return e.stack;\n }\n}\n\nfunction filterQueueStack(stack) {\n return stack.replace(/^[\\s\\S]*?\\bqueue(Micro)?Task\\b[^\\n]*\\n/, '');\n}\n\nfunction filterFlushStack(stack) {\n var index = stack.lastIndexOf('flushMicroTaskQueue');\n\n if (index < 0) {\n index = stack.lastIndexOf('flushTaskQueue');\n if (index < 0) {\n return stack;\n }\n }\n\n index = stack.lastIndexOf('\\n', index);\n\n return index < 0 ? stack : stack.substr(0, index);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-task-queue/dist/native-modules/aurelia-task-queue.js\n// module id = 10\n// module chunks = 2","\n\nfunction mi(name) {\n throw new Error('History must implement ' + name + '().');\n}\n\nexport var History = function () {\n function History() {\n \n }\n\n History.prototype.activate = function activate(options) {\n mi('activate');\n };\n\n History.prototype.deactivate = function deactivate() {\n mi('deactivate');\n };\n\n History.prototype.getAbsoluteRoot = function getAbsoluteRoot() {\n mi('getAbsoluteRoot');\n };\n\n History.prototype.navigate = function navigate(fragment, options) {\n mi('navigate');\n };\n\n History.prototype.navigateBack = function navigateBack() {\n mi('navigateBack');\n };\n\n History.prototype.setTitle = function setTitle(title) {\n mi('setTitle');\n };\n\n History.prototype.setState = function setState(key, value) {\n mi('setState');\n };\n\n History.prototype.getState = function getState(key) {\n mi('getState');\n };\n\n History.prototype.getHistoryIndex = function getHistoryIndex() {\n mi('getHistoryIndex');\n };\n\n History.prototype.go = function go(movement) {\n mi('go');\n };\n\n return History;\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-history/dist/native-modules/aurelia-history.js\n// module id = 16\n// module chunks = 2","export { _getArrayObserver as getArrayObserver };\nexport { _getMapObserver as getMapObserver };\nexport { _getSetObserver as getSetObserver };\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\nvar _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 _dec, _dec2, _class, _dec3, _class2, _dec4, _class3, _dec5, _class5, _dec6, _class7, _dec7, _class8, _dec8, _class9, _dec9, _class10, _class12, _temp, _dec10, _class13, _class14, _temp2;\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 { PLATFORM, DOM } from 'aurelia-pal';\nimport { TaskQueue } from 'aurelia-task-queue';\nimport { metadata } from 'aurelia-metadata';\n\nexport var targetContext = 'Binding:target';\nexport var sourceContext = 'Binding:source';\n\nvar map = Object.create(null);\n\nexport function camelCase(name) {\n if (name in map) {\n return map[name];\n }\n var result = name.charAt(0).toLowerCase() + name.slice(1).replace(/[_.-](\\w|$)/g, function (_, x) {\n return x.toUpperCase();\n });\n map[name] = result;\n return result;\n}\n\nexport function createOverrideContext(bindingContext, parentOverrideContext) {\n return {\n bindingContext: bindingContext,\n parentOverrideContext: parentOverrideContext || null\n };\n}\n\nexport function getContextFor(name, scope, ancestor) {\n var oc = scope.overrideContext;\n\n if (ancestor) {\n while (ancestor && oc) {\n ancestor--;\n oc = oc.parentOverrideContext;\n }\n if (ancestor || !oc) {\n return undefined;\n }\n return name in oc ? oc : oc.bindingContext;\n }\n\n while (oc && !(name in oc) && !(oc.bindingContext && name in oc.bindingContext)) {\n oc = oc.parentOverrideContext;\n }\n if (oc) {\n return name in oc ? oc : oc.bindingContext;\n }\n\n return scope.bindingContext || scope.overrideContext;\n}\n\nexport function createScopeForTest(bindingContext, parentBindingContext) {\n if (parentBindingContext) {\n return {\n bindingContext: bindingContext,\n overrideContext: createOverrideContext(bindingContext, createOverrideContext(parentBindingContext))\n };\n }\n return {\n bindingContext: bindingContext,\n overrideContext: createOverrideContext(bindingContext)\n };\n}\n\nvar slotNames = [];\nvar versionSlotNames = [];\nvar lastSlot = -1;\nfunction ensureEnoughSlotNames(currentSlot) {\n if (currentSlot === lastSlot) {\n lastSlot += 5;\n var ii = slotNames.length = versionSlotNames.length = lastSlot + 1;\n for (var i = currentSlot + 1; i < ii; ++i) {\n slotNames[i] = '_observer' + i;\n versionSlotNames[i] = '_observerVersion' + i;\n }\n }\n}\nensureEnoughSlotNames(-1);\n\nfunction addObserver(observer) {\n var observerSlots = this._observerSlots === undefined ? 0 : this._observerSlots;\n var i = observerSlots;\n while (i-- && this[slotNames[i]] !== observer) {}\n\n if (i === -1) {\n i = 0;\n while (this[slotNames[i]]) {\n i++;\n }\n this[slotNames[i]] = observer;\n observer.subscribe(sourceContext, this);\n\n if (i === observerSlots) {\n this._observerSlots = i + 1;\n }\n }\n\n if (this._version === undefined) {\n this._version = 0;\n }\n this[versionSlotNames[i]] = this._version;\n ensureEnoughSlotNames(i);\n}\n\nfunction observeProperty(obj, propertyName) {\n var observer = this.observerLocator.getObserver(obj, propertyName);\n addObserver.call(this, observer);\n}\n\nfunction observeArray(array) {\n var observer = this.observerLocator.getArrayObserver(array);\n addObserver.call(this, observer);\n}\n\nfunction unobserve(all) {\n var i = this._observerSlots;\n while (i--) {\n if (all || this[versionSlotNames[i]] !== this._version) {\n var observer = this[slotNames[i]];\n this[slotNames[i]] = null;\n if (observer) {\n observer.unsubscribe(sourceContext, this);\n }\n }\n }\n}\n\nexport function connectable() {\n return function (target) {\n target.prototype.observeProperty = observeProperty;\n target.prototype.observeArray = observeArray;\n target.prototype.unobserve = unobserve;\n target.prototype.addObserver = addObserver;\n };\n}\n\nvar queue = [];\nvar queued = {};\nvar nextId = 0;\nvar minimumImmediate = 100;\nvar frameBudget = 15;\n\nvar isFlushRequested = false;\nvar immediate = 0;\n\nfunction flush(animationFrameStart) {\n var length = queue.length;\n var i = 0;\n while (i < length) {\n var binding = queue[i];\n queued[binding.__connectQueueId] = false;\n binding.connect(true);\n i++;\n\n if (i % 100 === 0 && PLATFORM.performance.now() - animationFrameStart > frameBudget) {\n break;\n }\n }\n queue.splice(0, i);\n\n if (queue.length) {\n PLATFORM.requestAnimationFrame(flush);\n } else {\n isFlushRequested = false;\n immediate = 0;\n }\n}\n\nexport function enqueueBindingConnect(binding) {\n if (immediate < minimumImmediate) {\n immediate++;\n binding.connect(false);\n } else {\n var id = binding.__connectQueueId;\n if (id === undefined) {\n id = nextId;\n nextId++;\n binding.__connectQueueId = id;\n }\n\n if (!queued[id]) {\n queue.push(binding);\n queued[id] = true;\n }\n }\n if (!isFlushRequested) {\n isFlushRequested = true;\n PLATFORM.requestAnimationFrame(flush);\n }\n}\n\nexport function setConnectQueueThreshold(value) {\n minimumImmediate = value;\n}\n\nexport function enableConnectQueue() {\n setConnectQueueThreshold(100);\n}\n\nexport function disableConnectQueue() {\n setConnectQueueThreshold(Number.MAX_SAFE_INTEGER);\n}\n\nexport function getConnectQueueSize() {\n return queue.length;\n}\n\nfunction addSubscriber(context, callable) {\n if (this.hasSubscriber(context, callable)) {\n return false;\n }\n if (!this._context0) {\n this._context0 = context;\n this._callable0 = callable;\n return true;\n }\n if (!this._context1) {\n this._context1 = context;\n this._callable1 = callable;\n return true;\n }\n if (!this._context2) {\n this._context2 = context;\n this._callable2 = callable;\n return true;\n }\n if (!this._contextsRest) {\n this._contextsRest = [context];\n this._callablesRest = [callable];\n return true;\n }\n this._contextsRest.push(context);\n this._callablesRest.push(callable);\n return true;\n}\n\nfunction removeSubscriber(context, callable) {\n if (this._context0 === context && this._callable0 === callable) {\n this._context0 = null;\n this._callable0 = null;\n return true;\n }\n if (this._context1 === context && this._callable1 === callable) {\n this._context1 = null;\n this._callable1 = null;\n return true;\n }\n if (this._context2 === context && this._callable2 === callable) {\n this._context2 = null;\n this._callable2 = null;\n return true;\n }\n var callables = this._callablesRest;\n if (callables === undefined || callables.length === 0) {\n return false;\n }\n var contexts = this._contextsRest;\n var i = 0;\n while (!(callables[i] === callable && contexts[i] === context) && callables.length > i) {\n i++;\n }\n if (i >= callables.length) {\n return false;\n }\n contexts.splice(i, 1);\n callables.splice(i, 1);\n return true;\n}\n\nvar arrayPool1 = [];\nvar arrayPool2 = [];\nvar poolUtilization = [];\n\nfunction callSubscribers(newValue, oldValue) {\n var context0 = this._context0;\n var callable0 = this._callable0;\n var context1 = this._context1;\n var callable1 = this._callable1;\n var context2 = this._context2;\n var callable2 = this._callable2;\n var length = this._contextsRest ? this._contextsRest.length : 0;\n var contextsRest = void 0;\n var callablesRest = void 0;\n var poolIndex = void 0;\n var i = void 0;\n if (length) {\n poolIndex = poolUtilization.length;\n while (poolIndex-- && poolUtilization[poolIndex]) {}\n if (poolIndex < 0) {\n poolIndex = poolUtilization.length;\n contextsRest = [];\n callablesRest = [];\n poolUtilization.push(true);\n arrayPool1.push(contextsRest);\n arrayPool2.push(callablesRest);\n } else {\n poolUtilization[poolIndex] = true;\n contextsRest = arrayPool1[poolIndex];\n callablesRest = arrayPool2[poolIndex];\n }\n\n i = length;\n while (i--) {\n contextsRest[i] = this._contextsRest[i];\n callablesRest[i] = this._callablesRest[i];\n }\n }\n\n if (context0) {\n if (callable0) {\n callable0.call(context0, newValue, oldValue);\n } else {\n context0(newValue, oldValue);\n }\n }\n if (context1) {\n if (callable1) {\n callable1.call(context1, newValue, oldValue);\n } else {\n context1(newValue, oldValue);\n }\n }\n if (context2) {\n if (callable2) {\n callable2.call(context2, newValue, oldValue);\n } else {\n context2(newValue, oldValue);\n }\n }\n if (length) {\n for (i = 0; i < length; i++) {\n var callable = callablesRest[i];\n var context = contextsRest[i];\n if (callable) {\n callable.call(context, newValue, oldValue);\n } else {\n context(newValue, oldValue);\n }\n contextsRest[i] = null;\n callablesRest[i] = null;\n }\n poolUtilization[poolIndex] = false;\n }\n}\n\nfunction hasSubscribers() {\n return !!(this._context0 || this._context1 || this._context2 || this._contextsRest && this._contextsRest.length);\n}\n\nfunction hasSubscriber(context, callable) {\n var has = this._context0 === context && this._callable0 === callable || this._context1 === context && this._callable1 === callable || this._context2 === context && this._callable2 === callable;\n if (has) {\n return true;\n }\n var index = void 0;\n var contexts = this._contextsRest;\n if (!contexts || (index = contexts.length) === 0) {\n return false;\n }\n var callables = this._callablesRest;\n while (index--) {\n if (contexts[index] === context && callables[index] === callable) {\n return true;\n }\n }\n return false;\n}\n\nexport function subscriberCollection() {\n return function (target) {\n target.prototype.addSubscriber = addSubscriber;\n target.prototype.removeSubscriber = removeSubscriber;\n target.prototype.callSubscribers = callSubscribers;\n target.prototype.hasSubscribers = hasSubscribers;\n target.prototype.hasSubscriber = hasSubscriber;\n };\n}\n\nexport var ExpressionObserver = (_dec = connectable(), _dec2 = subscriberCollection(), _dec(_class = _dec2(_class = function () {\n function ExpressionObserver(scope, expression, observerLocator, lookupFunctions) {\n \n\n this.scope = scope;\n this.expression = expression;\n this.observerLocator = observerLocator;\n this.lookupFunctions = lookupFunctions;\n }\n\n ExpressionObserver.prototype.getValue = function getValue() {\n return this.expression.evaluate(this.scope, this.lookupFunctions);\n };\n\n ExpressionObserver.prototype.setValue = function setValue(newValue) {\n this.expression.assign(this.scope, newValue);\n };\n\n ExpressionObserver.prototype.subscribe = function subscribe(context, callable) {\n var _this = this;\n\n if (!this.hasSubscribers()) {\n this.oldValue = this.expression.evaluate(this.scope, this.lookupFunctions);\n this.expression.connect(this, this.scope);\n }\n this.addSubscriber(context, callable);\n if (arguments.length === 1 && context instanceof Function) {\n return {\n dispose: function dispose() {\n _this.unsubscribe(context, callable);\n }\n };\n }\n };\n\n ExpressionObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n this.unobserve(true);\n this.oldValue = undefined;\n }\n };\n\n ExpressionObserver.prototype.call = function call() {\n var newValue = this.expression.evaluate(this.scope, this.lookupFunctions);\n var oldValue = this.oldValue;\n if (newValue !== oldValue) {\n this.oldValue = newValue;\n this.callSubscribers(newValue, oldValue);\n }\n this._version++;\n this.expression.connect(this, this.scope);\n this.unobserve(false);\n };\n\n return ExpressionObserver;\n}()) || _class) || _class);\n\nfunction isIndex(s) {\n return +s === s >>> 0;\n}\n\nfunction toNumber(s) {\n return +s;\n}\n\nfunction newSplice(index, removed, addedCount) {\n return {\n index: index,\n removed: removed,\n addedCount: addedCount\n };\n}\n\nvar EDIT_LEAVE = 0;\nvar EDIT_UPDATE = 1;\nvar EDIT_ADD = 2;\nvar EDIT_DELETE = 3;\n\nfunction ArraySplice() {}\n\nArraySplice.prototype = {\n calcEditDistances: function calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd) {\n var rowCount = oldEnd - oldStart + 1;\n var columnCount = currentEnd - currentStart + 1;\n var distances = new Array(rowCount);\n var north = void 0;\n var west = void 0;\n\n for (var i = 0; i < rowCount; ++i) {\n distances[i] = new Array(columnCount);\n distances[i][0] = i;\n }\n\n for (var j = 0; j < columnCount; ++j) {\n distances[0][j] = j;\n }\n\n for (var _i = 1; _i < rowCount; ++_i) {\n for (var _j = 1; _j < columnCount; ++_j) {\n if (this.equals(current[currentStart + _j - 1], old[oldStart + _i - 1])) {\n distances[_i][_j] = distances[_i - 1][_j - 1];\n } else {\n north = distances[_i - 1][_j] + 1;\n west = distances[_i][_j - 1] + 1;\n distances[_i][_j] = north < west ? north : west;\n }\n }\n }\n\n return distances;\n },\n\n spliceOperationsFromEditDistances: function spliceOperationsFromEditDistances(distances) {\n var i = distances.length - 1;\n var j = distances[0].length - 1;\n var current = distances[i][j];\n var edits = [];\n while (i > 0 || j > 0) {\n if (i === 0) {\n edits.push(EDIT_ADD);\n j--;\n continue;\n }\n if (j === 0) {\n edits.push(EDIT_DELETE);\n i--;\n continue;\n }\n var northWest = distances[i - 1][j - 1];\n var west = distances[i - 1][j];\n var north = distances[i][j - 1];\n\n var min = void 0;\n if (west < north) {\n min = west < northWest ? west : northWest;\n } else {\n min = north < northWest ? north : northWest;\n }\n\n if (min === northWest) {\n if (northWest === current) {\n edits.push(EDIT_LEAVE);\n } else {\n edits.push(EDIT_UPDATE);\n current = northWest;\n }\n i--;\n j--;\n } else if (min === west) {\n edits.push(EDIT_DELETE);\n i--;\n current = west;\n } else {\n edits.push(EDIT_ADD);\n j--;\n current = north;\n }\n }\n\n edits.reverse();\n return edits;\n },\n\n calcSplices: function calcSplices(current, currentStart, currentEnd, old, oldStart, oldEnd) {\n var prefixCount = 0;\n var suffixCount = 0;\n\n var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);\n if (currentStart === 0 && oldStart === 0) {\n prefixCount = this.sharedPrefix(current, old, minLength);\n }\n\n if (currentEnd === current.length && oldEnd === old.length) {\n suffixCount = this.sharedSuffix(current, old, minLength - prefixCount);\n }\n\n currentStart += prefixCount;\n oldStart += prefixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCount;\n\n if (currentEnd - currentStart === 0 && oldEnd - oldStart === 0) {\n return [];\n }\n\n if (currentStart === currentEnd) {\n var _splice = newSplice(currentStart, [], 0);\n while (oldStart < oldEnd) {\n _splice.removed.push(old[oldStart++]);\n }\n\n return [_splice];\n } else if (oldStart === oldEnd) {\n return [newSplice(currentStart, [], currentEnd - currentStart)];\n }\n\n var ops = this.spliceOperationsFromEditDistances(this.calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd));\n\n var splice = undefined;\n var splices = [];\n var index = currentStart;\n var oldIndex = oldStart;\n for (var i = 0; i < ops.length; ++i) {\n switch (ops[i]) {\n case EDIT_LEAVE:\n if (splice) {\n splices.push(splice);\n splice = undefined;\n }\n\n index++;\n oldIndex++;\n break;\n case EDIT_UPDATE:\n if (!splice) {\n splice = newSplice(index, [], 0);\n }\n\n splice.addedCount++;\n index++;\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n case EDIT_ADD:\n if (!splice) {\n splice = newSplice(index, [], 0);\n }\n\n splice.addedCount++;\n index++;\n break;\n case EDIT_DELETE:\n if (!splice) {\n splice = newSplice(index, [], 0);\n }\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n }\n }\n\n if (splice) {\n splices.push(splice);\n }\n return splices;\n },\n\n sharedPrefix: function sharedPrefix(current, old, searchLength) {\n for (var i = 0; i < searchLength; ++i) {\n if (!this.equals(current[i], old[i])) {\n return i;\n }\n }\n\n return searchLength;\n },\n\n sharedSuffix: function sharedSuffix(current, old, searchLength) {\n var index1 = current.length;\n var index2 = old.length;\n var count = 0;\n while (count < searchLength && this.equals(current[--index1], old[--index2])) {\n count++;\n }\n\n return count;\n },\n\n calculateSplices: function calculateSplices(current, previous) {\n return this.calcSplices(current, 0, current.length, previous, 0, previous.length);\n },\n\n equals: function equals(currentValue, previousValue) {\n return currentValue === previousValue;\n }\n};\n\nvar arraySplice = new ArraySplice();\n\nexport function calcSplices(current, currentStart, currentEnd, old, oldStart, oldEnd) {\n return arraySplice.calcSplices(current, currentStart, currentEnd, old, oldStart, oldEnd);\n}\n\nfunction intersect(start1, end1, start2, end2) {\n if (end1 < start2 || end2 < start1) {\n return -1;\n }\n\n if (end1 === start2 || end2 === start1) {\n return 0;\n }\n\n if (start1 < start2) {\n if (end1 < end2) {\n return end1 - start2;\n }\n\n return end2 - start2;\n }\n\n if (end2 < end1) {\n return end2 - start1;\n }\n\n return end1 - start1;\n}\n\nexport function mergeSplice(splices, index, removed, addedCount) {\n var splice = newSplice(index, removed, addedCount);\n\n var inserted = false;\n var insertionOffset = 0;\n\n for (var i = 0; i < splices.length; i++) {\n var current = splices[i];\n current.index += insertionOffset;\n\n if (inserted) {\n continue;\n }\n\n var intersectCount = intersect(splice.index, splice.index + splice.removed.length, current.index, current.index + current.addedCount);\n\n if (intersectCount >= 0) {\n\n splices.splice(i, 1);\n i--;\n\n insertionOffset -= current.addedCount - current.removed.length;\n\n splice.addedCount += current.addedCount - intersectCount;\n var deleteCount = splice.removed.length + current.removed.length - intersectCount;\n\n if (!splice.addedCount && !deleteCount) {\n inserted = true;\n } else {\n var currentRemoved = current.removed;\n\n if (splice.index < current.index) {\n var prepend = splice.removed.slice(0, current.index - splice.index);\n Array.prototype.push.apply(prepend, currentRemoved);\n currentRemoved = prepend;\n }\n\n if (splice.index + splice.removed.length > current.index + current.addedCount) {\n var append = splice.removed.slice(current.index + current.addedCount - splice.index);\n Array.prototype.push.apply(currentRemoved, append);\n }\n\n splice.removed = currentRemoved;\n if (current.index < splice.index) {\n splice.index = current.index;\n }\n }\n } else if (splice.index < current.index) {\n\n inserted = true;\n\n splices.splice(i, 0, splice);\n i++;\n\n var offset = splice.addedCount - splice.removed.length;\n current.index += offset;\n insertionOffset += offset;\n }\n }\n\n if (!inserted) {\n splices.push(splice);\n }\n}\n\nfunction createInitialSplices(array, changeRecords) {\n var splices = [];\n\n for (var i = 0; i < changeRecords.length; i++) {\n var record = changeRecords[i];\n switch (record.type) {\n case 'splice':\n mergeSplice(splices, record.index, record.removed.slice(), record.addedCount);\n break;\n case 'add':\n case 'update':\n case 'delete':\n if (!isIndex(record.name)) {\n continue;\n }\n\n var index = toNumber(record.name);\n if (index < 0) {\n continue;\n }\n\n mergeSplice(splices, index, [record.oldValue], record.type === 'delete' ? 0 : 1);\n break;\n default:\n console.error('Unexpected record type: ' + JSON.stringify(record));\n break;\n }\n }\n\n return splices;\n}\n\nexport function projectArraySplices(array, changeRecords) {\n var splices = [];\n\n createInitialSplices(array, changeRecords).forEach(function (splice) {\n if (splice.addedCount === 1 && splice.removed.length === 1) {\n if (splice.removed[0] !== array[splice.index]) {\n splices.push(splice);\n }\n\n return;\n }\n\n splices = splices.concat(calcSplices(array, splice.index, splice.index + splice.addedCount, splice.removed, 0, splice.removed.length));\n });\n\n return splices;\n}\n\nfunction newRecord(type, object, key, oldValue) {\n return {\n type: type,\n object: object,\n key: key,\n oldValue: oldValue\n };\n}\n\nexport function getChangeRecords(map) {\n var entries = new Array(map.size);\n var keys = map.keys();\n var i = 0;\n var item = void 0;\n\n while (item = keys.next()) {\n if (item.done) {\n break;\n }\n\n entries[i] = newRecord('added', map, item.value);\n i++;\n }\n\n return entries;\n}\n\nexport var ModifyCollectionObserver = (_dec3 = subscriberCollection(), _dec3(_class2 = function () {\n function ModifyCollectionObserver(taskQueue, collection) {\n \n\n this.taskQueue = taskQueue;\n this.queued = false;\n this.changeRecords = null;\n this.oldCollection = null;\n this.collection = collection;\n this.lengthPropertyName = collection instanceof Map || collection instanceof Set ? 'size' : 'length';\n }\n\n ModifyCollectionObserver.prototype.subscribe = function subscribe(context, callable) {\n this.addSubscriber(context, callable);\n };\n\n ModifyCollectionObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n this.removeSubscriber(context, callable);\n };\n\n ModifyCollectionObserver.prototype.addChangeRecord = function addChangeRecord(changeRecord) {\n if (!this.hasSubscribers() && !this.lengthObserver) {\n return;\n }\n\n if (changeRecord.type === 'splice') {\n var index = changeRecord.index;\n var arrayLength = changeRecord.object.length;\n if (index > arrayLength) {\n index = arrayLength - changeRecord.addedCount;\n } else if (index < 0) {\n index = arrayLength + changeRecord.removed.length + index - changeRecord.addedCount;\n }\n if (index < 0) {\n index = 0;\n }\n changeRecord.index = index;\n }\n\n if (this.changeRecords === null) {\n this.changeRecords = [changeRecord];\n } else {\n this.changeRecords.push(changeRecord);\n }\n\n if (!this.queued) {\n this.queued = true;\n this.taskQueue.queueMicroTask(this);\n }\n };\n\n ModifyCollectionObserver.prototype.flushChangeRecords = function flushChangeRecords() {\n if (this.changeRecords && this.changeRecords.length || this.oldCollection) {\n this.call();\n }\n };\n\n ModifyCollectionObserver.prototype.reset = function reset(oldCollection) {\n this.oldCollection = oldCollection;\n\n if (this.hasSubscribers() && !this.queued) {\n this.queued = true;\n this.taskQueue.queueMicroTask(this);\n }\n };\n\n ModifyCollectionObserver.prototype.getLengthObserver = function getLengthObserver() {\n return this.lengthObserver || (this.lengthObserver = new CollectionLengthObserver(this.collection));\n };\n\n ModifyCollectionObserver.prototype.call = function call() {\n var changeRecords = this.changeRecords;\n var oldCollection = this.oldCollection;\n var records = void 0;\n\n this.queued = false;\n this.changeRecords = [];\n this.oldCollection = null;\n\n if (this.hasSubscribers()) {\n if (oldCollection) {\n if (this.collection instanceof Map || this.collection instanceof Set) {\n records = getChangeRecords(oldCollection);\n } else {\n records = calcSplices(this.collection, 0, this.collection.length, oldCollection, 0, oldCollection.length);\n }\n } else {\n if (this.collection instanceof Map || this.collection instanceof Set) {\n records = changeRecords;\n } else {\n records = projectArraySplices(this.collection, changeRecords);\n }\n }\n\n this.callSubscribers(records);\n }\n\n if (this.lengthObserver) {\n this.lengthObserver.call(this.collection[this.lengthPropertyName]);\n }\n };\n\n return ModifyCollectionObserver;\n}()) || _class2);\n\nexport var CollectionLengthObserver = (_dec4 = subscriberCollection(), _dec4(_class3 = function () {\n function CollectionLengthObserver(collection) {\n \n\n this.collection = collection;\n this.lengthPropertyName = collection instanceof Map || collection instanceof Set ? 'size' : 'length';\n this.currentValue = collection[this.lengthPropertyName];\n }\n\n CollectionLengthObserver.prototype.getValue = function getValue() {\n return this.collection[this.lengthPropertyName];\n };\n\n CollectionLengthObserver.prototype.setValue = function setValue(newValue) {\n this.collection[this.lengthPropertyName] = newValue;\n };\n\n CollectionLengthObserver.prototype.subscribe = function subscribe(context, callable) {\n this.addSubscriber(context, callable);\n };\n\n CollectionLengthObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n this.removeSubscriber(context, callable);\n };\n\n CollectionLengthObserver.prototype.call = function call(newValue) {\n var oldValue = this.currentValue;\n this.callSubscribers(newValue, oldValue);\n this.currentValue = newValue;\n };\n\n return CollectionLengthObserver;\n}()) || _class3);\n\nvar arrayProto = Array.prototype;\nvar pop = arrayProto.pop;\nvar push = arrayProto.push;\nvar reverse = arrayProto.reverse;\nvar shift = arrayProto.shift;\nvar sort = arrayProto.sort;\nvar splice = arrayProto.splice;\nvar unshift = arrayProto.unshift;\n\nif (arrayProto.__au_patched__) {\n LogManager.getLogger('array-observation').warn('Detected 2nd attempt of patching array from Aurelia binding.' + ' This is probably caused by dependency mismatch between core modules and a 3rd party plugin.' + ' Please see https://github.com/aurelia/cli/pull/906 if you are using webpack.');\n} else {\n Reflect.defineProperty(arrayProto, '__au_patched__', { value: 1 });\n arrayProto.pop = function () {\n var notEmpty = this.length > 0;\n var methodCallResult = pop.apply(this, arguments);\n if (notEmpty && this.__array_observer__ !== undefined) {\n this.__array_observer__.addChangeRecord({\n type: 'delete',\n object: this,\n name: this.length,\n oldValue: methodCallResult\n });\n }\n return methodCallResult;\n };\n\n arrayProto.push = function () {\n var methodCallResult = push.apply(this, arguments);\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.addChangeRecord({\n type: 'splice',\n object: this,\n index: this.length - arguments.length,\n removed: [],\n addedCount: arguments.length\n });\n }\n return methodCallResult;\n };\n\n arrayProto.reverse = function () {\n var oldArray = void 0;\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.flushChangeRecords();\n oldArray = this.slice();\n }\n var methodCallResult = reverse.apply(this, arguments);\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.reset(oldArray);\n }\n return methodCallResult;\n };\n\n arrayProto.shift = function () {\n var notEmpty = this.length > 0;\n var methodCallResult = shift.apply(this, arguments);\n if (notEmpty && this.__array_observer__ !== undefined) {\n this.__array_observer__.addChangeRecord({\n type: 'delete',\n object: this,\n name: 0,\n oldValue: methodCallResult\n });\n }\n return methodCallResult;\n };\n\n arrayProto.sort = function () {\n var oldArray = void 0;\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.flushChangeRecords();\n oldArray = this.slice();\n }\n var methodCallResult = sort.apply(this, arguments);\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.reset(oldArray);\n }\n return methodCallResult;\n };\n\n arrayProto.splice = function () {\n var methodCallResult = splice.apply(this, arguments);\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.addChangeRecord({\n type: 'splice',\n object: this,\n index: +arguments[0],\n removed: methodCallResult,\n addedCount: arguments.length > 2 ? arguments.length - 2 : 0\n });\n }\n return methodCallResult;\n };\n\n arrayProto.unshift = function () {\n var methodCallResult = unshift.apply(this, arguments);\n if (this.__array_observer__ !== undefined) {\n this.__array_observer__.addChangeRecord({\n type: 'splice',\n object: this,\n index: 0,\n removed: [],\n addedCount: arguments.length\n });\n }\n return methodCallResult;\n };\n}\n\nfunction _getArrayObserver(taskQueue, array) {\n return ModifyArrayObserver.for(taskQueue, array);\n}\n\nvar ModifyArrayObserver = function (_ModifyCollectionObse) {\n _inherits(ModifyArrayObserver, _ModifyCollectionObse);\n\n function ModifyArrayObserver(taskQueue, array) {\n \n\n return _possibleConstructorReturn(this, _ModifyCollectionObse.call(this, taskQueue, array));\n }\n\n ModifyArrayObserver.for = function _for(taskQueue, array) {\n if (!('__array_observer__' in array)) {\n Reflect.defineProperty(array, '__array_observer__', {\n value: ModifyArrayObserver.create(taskQueue, array),\n enumerable: false, configurable: false\n });\n }\n return array.__array_observer__;\n };\n\n ModifyArrayObserver.create = function create(taskQueue, array) {\n return new ModifyArrayObserver(taskQueue, array);\n };\n\n return ModifyArrayObserver;\n}(ModifyCollectionObserver);\n\nexport var Expression = function () {\n function Expression() {\n \n\n this.isAssignable = false;\n }\n\n Expression.prototype.evaluate = function evaluate(scope, lookupFunctions, args) {\n throw new Error('Binding expression \"' + this + '\" cannot be evaluated.');\n };\n\n Expression.prototype.assign = function assign(scope, value, lookupFunctions) {\n throw new Error('Binding expression \"' + this + '\" cannot be assigned to.');\n };\n\n Expression.prototype.toString = function toString() {\n return typeof FEATURE_NO_UNPARSER === 'undefined' ? _Unparser.unparse(this) : Function.prototype.toString.call(this);\n };\n\n return Expression;\n}();\n\nexport var BindingBehavior = function (_Expression) {\n _inherits(BindingBehavior, _Expression);\n\n function BindingBehavior(expression, name, args) {\n \n\n var _this3 = _possibleConstructorReturn(this, _Expression.call(this));\n\n _this3.expression = expression;\n _this3.name = name;\n _this3.args = args;\n return _this3;\n }\n\n BindingBehavior.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return this.expression.evaluate(scope, lookupFunctions);\n };\n\n BindingBehavior.prototype.assign = function assign(scope, value, lookupFunctions) {\n return this.expression.assign(scope, value, lookupFunctions);\n };\n\n BindingBehavior.prototype.accept = function accept(visitor) {\n return visitor.visitBindingBehavior(this);\n };\n\n BindingBehavior.prototype.connect = function connect(binding, scope) {\n this.expression.connect(binding, scope);\n };\n\n BindingBehavior.prototype.bind = function bind(binding, scope, lookupFunctions) {\n if (this.expression.expression && this.expression.bind) {\n this.expression.bind(binding, scope, lookupFunctions);\n }\n var behavior = lookupFunctions.bindingBehaviors(this.name);\n if (!behavior) {\n throw new Error('No BindingBehavior named \"' + this.name + '\" was found!');\n }\n var behaviorKey = 'behavior-' + this.name;\n if (binding[behaviorKey]) {\n throw new Error('A binding behavior named \"' + this.name + '\" has already been applied to \"' + this.expression + '\"');\n }\n binding[behaviorKey] = behavior;\n behavior.bind.apply(behavior, [binding, scope].concat(evalList(scope, this.args, binding.lookupFunctions)));\n };\n\n BindingBehavior.prototype.unbind = function unbind(binding, scope) {\n var behaviorKey = 'behavior-' + this.name;\n binding[behaviorKey].unbind(binding, scope);\n binding[behaviorKey] = null;\n if (this.expression.expression && this.expression.unbind) {\n this.expression.unbind(binding, scope);\n }\n };\n\n return BindingBehavior;\n}(Expression);\n\nexport var ValueConverter = function (_Expression2) {\n _inherits(ValueConverter, _Expression2);\n\n function ValueConverter(expression, name, args) {\n \n\n var _this4 = _possibleConstructorReturn(this, _Expression2.call(this));\n\n _this4.expression = expression;\n _this4.name = name;\n _this4.args = args;\n _this4.allArgs = [expression].concat(args);\n return _this4;\n }\n\n ValueConverter.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var converter = lookupFunctions.valueConverters(this.name);\n if (!converter) {\n throw new Error('No ValueConverter named \"' + this.name + '\" was found!');\n }\n\n if ('toView' in converter) {\n return converter.toView.apply(converter, evalList(scope, this.allArgs, lookupFunctions));\n }\n\n return this.allArgs[0].evaluate(scope, lookupFunctions);\n };\n\n ValueConverter.prototype.assign = function assign(scope, value, lookupFunctions) {\n var converter = lookupFunctions.valueConverters(this.name);\n if (!converter) {\n throw new Error('No ValueConverter named \"' + this.name + '\" was found!');\n }\n\n if ('fromView' in converter) {\n value = converter.fromView.apply(converter, [value].concat(evalList(scope, this.args, lookupFunctions)));\n }\n\n return this.allArgs[0].assign(scope, value, lookupFunctions);\n };\n\n ValueConverter.prototype.accept = function accept(visitor) {\n return visitor.visitValueConverter(this);\n };\n\n ValueConverter.prototype.connect = function connect(binding, scope) {\n var expressions = this.allArgs;\n var i = expressions.length;\n while (i--) {\n expressions[i].connect(binding, scope);\n }\n var converter = binding.lookupFunctions.valueConverters(this.name);\n if (!converter) {\n throw new Error('No ValueConverter named \"' + this.name + '\" was found!');\n }\n var signals = converter.signals;\n if (signals === undefined) {\n return;\n }\n i = signals.length;\n while (i--) {\n connectBindingToSignal(binding, signals[i]);\n }\n };\n\n return ValueConverter;\n}(Expression);\n\nexport var Assign = function (_Expression3) {\n _inherits(Assign, _Expression3);\n\n function Assign(target, value) {\n \n\n var _this5 = _possibleConstructorReturn(this, _Expression3.call(this));\n\n _this5.target = target;\n _this5.value = value;\n _this5.isAssignable = true;\n return _this5;\n }\n\n Assign.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return this.target.assign(scope, this.value.evaluate(scope, lookupFunctions));\n };\n\n Assign.prototype.accept = function accept(vistor) {\n vistor.visitAssign(this);\n };\n\n Assign.prototype.connect = function connect(binding, scope) {};\n\n Assign.prototype.assign = function assign(scope, value) {\n this.value.assign(scope, value);\n this.target.assign(scope, value);\n };\n\n return Assign;\n}(Expression);\n\nexport var Conditional = function (_Expression4) {\n _inherits(Conditional, _Expression4);\n\n function Conditional(condition, yes, no) {\n \n\n var _this6 = _possibleConstructorReturn(this, _Expression4.call(this));\n\n _this6.condition = condition;\n _this6.yes = yes;\n _this6.no = no;\n return _this6;\n }\n\n Conditional.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return !!this.condition.evaluate(scope, lookupFunctions) ? this.yes.evaluate(scope, lookupFunctions) : this.no.evaluate(scope, lookupFunctions);\n };\n\n Conditional.prototype.accept = function accept(visitor) {\n return visitor.visitConditional(this);\n };\n\n Conditional.prototype.connect = function connect(binding, scope) {\n this.condition.connect(binding, scope);\n if (this.condition.evaluate(scope)) {\n this.yes.connect(binding, scope);\n } else {\n this.no.connect(binding, scope);\n }\n };\n\n return Conditional;\n}(Expression);\n\nexport var AccessThis = function (_Expression5) {\n _inherits(AccessThis, _Expression5);\n\n function AccessThis(ancestor) {\n \n\n var _this7 = _possibleConstructorReturn(this, _Expression5.call(this));\n\n _this7.ancestor = ancestor;\n return _this7;\n }\n\n AccessThis.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var oc = scope.overrideContext;\n var i = this.ancestor;\n while (i-- && oc) {\n oc = oc.parentOverrideContext;\n }\n return i < 1 && oc ? oc.bindingContext : undefined;\n };\n\n AccessThis.prototype.accept = function accept(visitor) {\n return visitor.visitAccessThis(this);\n };\n\n AccessThis.prototype.connect = function connect(binding, scope) {};\n\n return AccessThis;\n}(Expression);\n\nexport var AccessScope = function (_Expression6) {\n _inherits(AccessScope, _Expression6);\n\n function AccessScope(name, ancestor) {\n \n\n var _this8 = _possibleConstructorReturn(this, _Expression6.call(this));\n\n _this8.name = name;\n _this8.ancestor = ancestor;\n _this8.isAssignable = true;\n return _this8;\n }\n\n AccessScope.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var context = getContextFor(this.name, scope, this.ancestor);\n return context[this.name];\n };\n\n AccessScope.prototype.assign = function assign(scope, value) {\n var context = getContextFor(this.name, scope, this.ancestor);\n return context ? context[this.name] = value : undefined;\n };\n\n AccessScope.prototype.accept = function accept(visitor) {\n return visitor.visitAccessScope(this);\n };\n\n AccessScope.prototype.connect = function connect(binding, scope) {\n var context = getContextFor(this.name, scope, this.ancestor);\n binding.observeProperty(context, this.name);\n };\n\n return AccessScope;\n}(Expression);\n\nexport var AccessMember = function (_Expression7) {\n _inherits(AccessMember, _Expression7);\n\n function AccessMember(object, name) {\n \n\n var _this9 = _possibleConstructorReturn(this, _Expression7.call(this));\n\n _this9.object = object;\n _this9.name = name;\n _this9.isAssignable = true;\n return _this9;\n }\n\n AccessMember.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var instance = this.object.evaluate(scope, lookupFunctions);\n return instance === null || instance === undefined ? instance : instance[this.name];\n };\n\n AccessMember.prototype.assign = function assign(scope, value) {\n var instance = this.object.evaluate(scope);\n\n if (instance === null || instance === undefined) {\n instance = {};\n this.object.assign(scope, instance);\n }\n\n instance[this.name] = value;\n return value;\n };\n\n AccessMember.prototype.accept = function accept(visitor) {\n return visitor.visitAccessMember(this);\n };\n\n AccessMember.prototype.connect = function connect(binding, scope) {\n this.object.connect(binding, scope);\n var obj = this.object.evaluate(scope);\n if (obj) {\n binding.observeProperty(obj, this.name);\n }\n };\n\n return AccessMember;\n}(Expression);\n\nexport var AccessKeyed = function (_Expression8) {\n _inherits(AccessKeyed, _Expression8);\n\n function AccessKeyed(object, key) {\n \n\n var _this10 = _possibleConstructorReturn(this, _Expression8.call(this));\n\n _this10.object = object;\n _this10.key = key;\n _this10.isAssignable = true;\n return _this10;\n }\n\n AccessKeyed.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var instance = this.object.evaluate(scope, lookupFunctions);\n var lookup = this.key.evaluate(scope, lookupFunctions);\n return getKeyed(instance, lookup);\n };\n\n AccessKeyed.prototype.assign = function assign(scope, value) {\n var instance = this.object.evaluate(scope);\n var lookup = this.key.evaluate(scope);\n return setKeyed(instance, lookup, value);\n };\n\n AccessKeyed.prototype.accept = function accept(visitor) {\n return visitor.visitAccessKeyed(this);\n };\n\n AccessKeyed.prototype.connect = function connect(binding, scope) {\n this.object.connect(binding, scope);\n var obj = this.object.evaluate(scope);\n if (obj instanceof Object) {\n this.key.connect(binding, scope);\n var key = this.key.evaluate(scope);\n\n if (key !== null && key !== undefined && !(Array.isArray(obj) && typeof key === 'number')) {\n binding.observeProperty(obj, key);\n }\n }\n };\n\n return AccessKeyed;\n}(Expression);\n\nexport var CallScope = function (_Expression9) {\n _inherits(CallScope, _Expression9);\n\n function CallScope(name, args, ancestor) {\n \n\n var _this11 = _possibleConstructorReturn(this, _Expression9.call(this));\n\n _this11.name = name;\n _this11.args = args;\n _this11.ancestor = ancestor;\n return _this11;\n }\n\n CallScope.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) {\n var args = evalList(scope, this.args, lookupFunctions);\n var context = getContextFor(this.name, scope, this.ancestor);\n var func = getFunction(context, this.name, mustEvaluate);\n if (func) {\n return func.apply(context, args);\n }\n return undefined;\n };\n\n CallScope.prototype.accept = function accept(visitor) {\n return visitor.visitCallScope(this);\n };\n\n CallScope.prototype.connect = function connect(binding, scope) {\n var args = this.args;\n var i = args.length;\n while (i--) {\n args[i].connect(binding, scope);\n }\n };\n\n return CallScope;\n}(Expression);\n\nexport var CallMember = function (_Expression10) {\n _inherits(CallMember, _Expression10);\n\n function CallMember(object, name, args) {\n \n\n var _this12 = _possibleConstructorReturn(this, _Expression10.call(this));\n\n _this12.object = object;\n _this12.name = name;\n _this12.args = args;\n return _this12;\n }\n\n CallMember.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) {\n var instance = this.object.evaluate(scope, lookupFunctions);\n var args = evalList(scope, this.args, lookupFunctions);\n var func = getFunction(instance, this.name, mustEvaluate);\n if (func) {\n return func.apply(instance, args);\n }\n return undefined;\n };\n\n CallMember.prototype.accept = function accept(visitor) {\n return visitor.visitCallMember(this);\n };\n\n CallMember.prototype.connect = function connect(binding, scope) {\n this.object.connect(binding, scope);\n var obj = this.object.evaluate(scope);\n if (getFunction(obj, this.name, false)) {\n var args = this.args;\n var i = args.length;\n while (i--) {\n args[i].connect(binding, scope);\n }\n }\n };\n\n return CallMember;\n}(Expression);\n\nexport var CallFunction = function (_Expression11) {\n _inherits(CallFunction, _Expression11);\n\n function CallFunction(func, args) {\n \n\n var _this13 = _possibleConstructorReturn(this, _Expression11.call(this));\n\n _this13.func = func;\n _this13.args = args;\n return _this13;\n }\n\n CallFunction.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) {\n var func = this.func.evaluate(scope, lookupFunctions);\n if (typeof func === 'function') {\n return func.apply(null, evalList(scope, this.args, lookupFunctions));\n }\n if (!mustEvaluate && (func === null || func === undefined)) {\n return undefined;\n }\n throw new Error(this.func + ' is not a function');\n };\n\n CallFunction.prototype.accept = function accept(visitor) {\n return visitor.visitCallFunction(this);\n };\n\n CallFunction.prototype.connect = function connect(binding, scope) {\n this.func.connect(binding, scope);\n var func = this.func.evaluate(scope);\n if (typeof func === 'function') {\n var args = this.args;\n var i = args.length;\n while (i--) {\n args[i].connect(binding, scope);\n }\n }\n };\n\n return CallFunction;\n}(Expression);\n\nexport var Binary = function (_Expression12) {\n _inherits(Binary, _Expression12);\n\n function Binary(operation, left, right) {\n \n\n var _this14 = _possibleConstructorReturn(this, _Expression12.call(this));\n\n _this14.operation = operation;\n _this14.left = left;\n _this14.right = right;\n return _this14;\n }\n\n Binary.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var left = this.left.evaluate(scope, lookupFunctions);\n\n switch (this.operation) {\n case '&&':\n return left && this.right.evaluate(scope, lookupFunctions);\n case '||':\n return left || this.right.evaluate(scope, lookupFunctions);\n }\n\n var right = this.right.evaluate(scope, lookupFunctions);\n\n switch (this.operation) {\n case '==':\n return left == right;\n case '===':\n return left === right;\n case '!=':\n return left != right;\n case '!==':\n return left !== right;\n case 'instanceof':\n return typeof right === 'function' && left instanceof right;\n case 'in':\n return (typeof right === 'undefined' ? 'undefined' : _typeof(right)) === 'object' && right !== null && left in right;\n }\n\n if (left === null || right === null || left === undefined || right === undefined) {\n switch (this.operation) {\n case '+':\n if (left !== null && left !== undefined) return left;\n if (right !== null && right !== undefined) return right;\n return 0;\n case '-':\n if (left !== null && left !== undefined) return left;\n if (right !== null && right !== undefined) return 0 - right;\n return 0;\n }\n\n return null;\n }\n\n switch (this.operation) {\n case '+':\n return autoConvertAdd(left, right);\n case '-':\n return left - right;\n case '*':\n return left * right;\n case '/':\n return left / right;\n case '%':\n return left % right;\n case '<':\n return left < right;\n case '>':\n return left > right;\n case '<=':\n return left <= right;\n case '>=':\n return left >= right;\n case '^':\n return left ^ right;\n }\n\n throw new Error('Internal error [' + this.operation + '] not handled');\n };\n\n Binary.prototype.accept = function accept(visitor) {\n return visitor.visitBinary(this);\n };\n\n Binary.prototype.connect = function connect(binding, scope) {\n this.left.connect(binding, scope);\n var left = this.left.evaluate(scope);\n if (this.operation === '&&' && !left || this.operation === '||' && left) {\n return;\n }\n this.right.connect(binding, scope);\n };\n\n return Binary;\n}(Expression);\n\nexport var Unary = function (_Expression13) {\n _inherits(Unary, _Expression13);\n\n function Unary(operation, expression) {\n \n\n var _this15 = _possibleConstructorReturn(this, _Expression13.call(this));\n\n _this15.operation = operation;\n _this15.expression = expression;\n return _this15;\n }\n\n Unary.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n switch (this.operation) {\n case '!':\n return !this.expression.evaluate(scope, lookupFunctions);\n case 'typeof':\n return _typeof(this.expression.evaluate(scope, lookupFunctions));\n case 'void':\n return void this.expression.evaluate(scope, lookupFunctions);\n }\n\n throw new Error('Internal error [' + this.operation + '] not handled');\n };\n\n Unary.prototype.accept = function accept(visitor) {\n return visitor.visitPrefix(this);\n };\n\n Unary.prototype.connect = function connect(binding, scope) {\n this.expression.connect(binding, scope);\n };\n\n return Unary;\n}(Expression);\n\nexport var LiteralPrimitive = function (_Expression14) {\n _inherits(LiteralPrimitive, _Expression14);\n\n function LiteralPrimitive(value) {\n \n\n var _this16 = _possibleConstructorReturn(this, _Expression14.call(this));\n\n _this16.value = value;\n return _this16;\n }\n\n LiteralPrimitive.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return this.value;\n };\n\n LiteralPrimitive.prototype.accept = function accept(visitor) {\n return visitor.visitLiteralPrimitive(this);\n };\n\n LiteralPrimitive.prototype.connect = function connect(binding, scope) {};\n\n return LiteralPrimitive;\n}(Expression);\n\nexport var LiteralString = function (_Expression15) {\n _inherits(LiteralString, _Expression15);\n\n function LiteralString(value) {\n \n\n var _this17 = _possibleConstructorReturn(this, _Expression15.call(this));\n\n _this17.value = value;\n return _this17;\n }\n\n LiteralString.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return this.value;\n };\n\n LiteralString.prototype.accept = function accept(visitor) {\n return visitor.visitLiteralString(this);\n };\n\n LiteralString.prototype.connect = function connect(binding, scope) {};\n\n return LiteralString;\n}(Expression);\n\nexport var LiteralTemplate = function (_Expression16) {\n _inherits(LiteralTemplate, _Expression16);\n\n function LiteralTemplate(cooked, expressions, raw, tag) {\n \n\n var _this18 = _possibleConstructorReturn(this, _Expression16.call(this));\n\n _this18.cooked = cooked;\n _this18.expressions = expressions || [];\n _this18.length = _this18.expressions.length;\n _this18.tagged = tag !== undefined;\n if (_this18.tagged) {\n _this18.cooked.raw = raw;\n _this18.tag = tag;\n if (tag instanceof AccessScope) {\n _this18.contextType = 'Scope';\n } else if (tag instanceof AccessMember || tag instanceof AccessKeyed) {\n _this18.contextType = 'Object';\n } else {\n throw new Error(_this18.tag + ' is not a valid template tag');\n }\n }\n return _this18;\n }\n\n LiteralTemplate.prototype.getScopeContext = function getScopeContext(scope, lookupFunctions) {\n return getContextFor(this.tag.name, scope, this.tag.ancestor);\n };\n\n LiteralTemplate.prototype.getObjectContext = function getObjectContext(scope, lookupFunctions) {\n return this.tag.object.evaluate(scope, lookupFunctions);\n };\n\n LiteralTemplate.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) {\n var results = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n results[i] = this.expressions[i].evaluate(scope, lookupFunctions);\n }\n if (this.tagged) {\n var func = this.tag.evaluate(scope, lookupFunctions);\n if (typeof func === 'function') {\n var context = this['get' + this.contextType + 'Context'](scope, lookupFunctions);\n return func.call.apply(func, [context, this.cooked].concat(results));\n }\n if (!mustEvaluate) {\n return null;\n }\n throw new Error(this.tag + ' is not a function');\n }\n var result = this.cooked[0];\n for (var _i2 = 0; _i2 < this.length; _i2++) {\n result = String.prototype.concat(result, results[_i2], this.cooked[_i2 + 1]);\n }\n return result;\n };\n\n LiteralTemplate.prototype.accept = function accept(visitor) {\n return visitor.visitLiteralTemplate(this);\n };\n\n LiteralTemplate.prototype.connect = function connect(binding, scope) {\n for (var i = 0; i < this.length; i++) {\n this.expressions[i].connect(binding, scope);\n }\n if (this.tagged) {\n this.tag.connect(binding, scope);\n }\n };\n\n return LiteralTemplate;\n}(Expression);\n\nexport var LiteralArray = function (_Expression17) {\n _inherits(LiteralArray, _Expression17);\n\n function LiteralArray(elements) {\n \n\n var _this19 = _possibleConstructorReturn(this, _Expression17.call(this));\n\n _this19.elements = elements;\n return _this19;\n }\n\n LiteralArray.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var elements = this.elements;\n var result = [];\n\n for (var i = 0, length = elements.length; i < length; ++i) {\n result[i] = elements[i].evaluate(scope, lookupFunctions);\n }\n\n return result;\n };\n\n LiteralArray.prototype.accept = function accept(visitor) {\n return visitor.visitLiteralArray(this);\n };\n\n LiteralArray.prototype.connect = function connect(binding, scope) {\n var length = this.elements.length;\n for (var i = 0; i < length; i++) {\n this.elements[i].connect(binding, scope);\n }\n };\n\n return LiteralArray;\n}(Expression);\n\nexport var LiteralObject = function (_Expression18) {\n _inherits(LiteralObject, _Expression18);\n\n function LiteralObject(keys, values) {\n \n\n var _this20 = _possibleConstructorReturn(this, _Expression18.call(this));\n\n _this20.keys = keys;\n _this20.values = values;\n return _this20;\n }\n\n LiteralObject.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n var instance = {};\n var keys = this.keys;\n var values = this.values;\n\n for (var i = 0, length = keys.length; i < length; ++i) {\n instance[keys[i]] = values[i].evaluate(scope, lookupFunctions);\n }\n\n return instance;\n };\n\n LiteralObject.prototype.accept = function accept(visitor) {\n return visitor.visitLiteralObject(this);\n };\n\n LiteralObject.prototype.connect = function connect(binding, scope) {\n var length = this.keys.length;\n for (var i = 0; i < length; i++) {\n this.values[i].connect(binding, scope);\n }\n };\n\n return LiteralObject;\n}(Expression);\n\nfunction evalList(scope, list, lookupFunctions) {\n var length = list.length;\n var result = [];\n for (var i = 0; i < length; i++) {\n result[i] = list[i].evaluate(scope, lookupFunctions);\n }\n return result;\n}\n\nfunction autoConvertAdd(a, b) {\n if (a !== null && b !== null) {\n if (typeof a === 'string' && typeof b !== 'string') {\n return a + b.toString();\n }\n\n if (typeof a !== 'string' && typeof b === 'string') {\n return a.toString() + b;\n }\n\n return a + b;\n }\n\n if (a !== null) {\n return a;\n }\n\n if (b !== null) {\n return b;\n }\n\n return 0;\n}\n\nfunction getFunction(obj, name, mustExist) {\n var func = obj === null || obj === undefined ? null : obj[name];\n if (typeof func === 'function') {\n return func;\n }\n if (!mustExist && (func === null || func === undefined)) {\n return null;\n }\n throw new Error(name + ' is not a function');\n}\n\nfunction getKeyed(obj, key) {\n if (Array.isArray(obj)) {\n return obj[parseInt(key, 10)];\n } else if (obj) {\n return obj[key];\n } else if (obj === null || obj === undefined) {\n return undefined;\n }\n\n return obj[key];\n}\n\nfunction setKeyed(obj, key, value) {\n if (Array.isArray(obj)) {\n var index = parseInt(key, 10);\n\n if (obj.length <= index) {\n obj.length = index + 1;\n }\n\n obj[index] = value;\n } else {\n obj[key] = value;\n }\n\n return value;\n}\n\nvar _Unparser = null;\n\nexport { _Unparser as Unparser };\nif (typeof FEATURE_NO_UNPARSER === 'undefined') {\n _Unparser = function () {\n function Unparser(buffer) {\n \n\n this.buffer = buffer;\n }\n\n Unparser.unparse = function unparse(expression) {\n var buffer = [];\n var visitor = new _Unparser(buffer);\n\n expression.accept(visitor);\n\n return buffer.join('');\n };\n\n Unparser.prototype.write = function write(text) {\n this.buffer.push(text);\n };\n\n Unparser.prototype.writeArgs = function writeArgs(args) {\n this.write('(');\n\n for (var i = 0, length = args.length; i < length; ++i) {\n if (i !== 0) {\n this.write(',');\n }\n\n args[i].accept(this);\n }\n\n this.write(')');\n };\n\n Unparser.prototype.visitBindingBehavior = function visitBindingBehavior(behavior) {\n var args = behavior.args;\n\n behavior.expression.accept(this);\n this.write('&' + behavior.name);\n\n for (var i = 0, length = args.length; i < length; ++i) {\n this.write(':');\n args[i].accept(this);\n }\n };\n\n Unparser.prototype.visitValueConverter = function visitValueConverter(converter) {\n var args = converter.args;\n\n converter.expression.accept(this);\n this.write('|' + converter.name);\n\n for (var i = 0, length = args.length; i < length; ++i) {\n this.write(':');\n args[i].accept(this);\n }\n };\n\n Unparser.prototype.visitAssign = function visitAssign(assign) {\n assign.target.accept(this);\n this.write('=');\n assign.value.accept(this);\n };\n\n Unparser.prototype.visitConditional = function visitConditional(conditional) {\n conditional.condition.accept(this);\n this.write('?');\n conditional.yes.accept(this);\n this.write(':');\n conditional.no.accept(this);\n };\n\n Unparser.prototype.visitAccessThis = function visitAccessThis(access) {\n if (access.ancestor === 0) {\n this.write('$this');\n return;\n }\n this.write('$parent');\n var i = access.ancestor - 1;\n while (i--) {\n this.write('.$parent');\n }\n };\n\n Unparser.prototype.visitAccessScope = function visitAccessScope(access) {\n var i = access.ancestor;\n while (i--) {\n this.write('$parent.');\n }\n this.write(access.name);\n };\n\n Unparser.prototype.visitAccessMember = function visitAccessMember(access) {\n access.object.accept(this);\n this.write('.' + access.name);\n };\n\n Unparser.prototype.visitAccessKeyed = function visitAccessKeyed(access) {\n access.object.accept(this);\n this.write('[');\n access.key.accept(this);\n this.write(']');\n };\n\n Unparser.prototype.visitCallScope = function visitCallScope(call) {\n var i = call.ancestor;\n while (i--) {\n this.write('$parent.');\n }\n this.write(call.name);\n this.writeArgs(call.args);\n };\n\n Unparser.prototype.visitCallFunction = function visitCallFunction(call) {\n call.func.accept(this);\n this.writeArgs(call.args);\n };\n\n Unparser.prototype.visitCallMember = function visitCallMember(call) {\n call.object.accept(this);\n this.write('.' + call.name);\n this.writeArgs(call.args);\n };\n\n Unparser.prototype.visitPrefix = function visitPrefix(prefix) {\n this.write('(' + prefix.operation);\n if (prefix.operation.charCodeAt(0) >= 97) {\n this.write(' ');\n }\n prefix.expression.accept(this);\n this.write(')');\n };\n\n Unparser.prototype.visitBinary = function visitBinary(binary) {\n binary.left.accept(this);\n if (binary.operation.charCodeAt(0) === 105) {\n this.write(' ' + binary.operation + ' ');\n } else {\n this.write(binary.operation);\n }\n binary.right.accept(this);\n };\n\n Unparser.prototype.visitLiteralPrimitive = function visitLiteralPrimitive(literal) {\n this.write('' + literal.value);\n };\n\n Unparser.prototype.visitLiteralArray = function visitLiteralArray(literal) {\n var elements = literal.elements;\n\n this.write('[');\n\n for (var i = 0, length = elements.length; i < length; ++i) {\n if (i !== 0) {\n this.write(',');\n }\n\n elements[i].accept(this);\n }\n\n this.write(']');\n };\n\n Unparser.prototype.visitLiteralObject = function visitLiteralObject(literal) {\n var keys = literal.keys;\n var values = literal.values;\n\n this.write('{');\n\n for (var i = 0, length = keys.length; i < length; ++i) {\n if (i !== 0) {\n this.write(',');\n }\n\n this.write('\\'' + keys[i] + '\\':');\n values[i].accept(this);\n }\n\n this.write('}');\n };\n\n Unparser.prototype.visitLiteralString = function visitLiteralString(literal) {\n var escaped = literal.value.replace(/'/g, \"\\'\");\n this.write('\\'' + escaped + '\\'');\n };\n\n Unparser.prototype.visitLiteralTemplate = function visitLiteralTemplate(literal) {\n var cooked = literal.cooked,\n expressions = literal.expressions;\n\n var length = expressions.length;\n this.write('`');\n this.write(cooked[0]);\n for (var i = 0; i < length; i++) {\n expressions[i].accept(this);\n this.write(cooked[i + 1]);\n }\n this.write('`');\n };\n\n return Unparser;\n }();\n}\n\nexport var ExpressionCloner = function () {\n function ExpressionCloner() {\n \n }\n\n ExpressionCloner.prototype.cloneExpressionArray = function cloneExpressionArray(array) {\n var clonedArray = [];\n var i = array.length;\n while (i--) {\n clonedArray[i] = array[i].accept(this);\n }\n return clonedArray;\n };\n\n ExpressionCloner.prototype.visitBindingBehavior = function visitBindingBehavior(behavior) {\n return new BindingBehavior(behavior.expression.accept(this), behavior.name, this.cloneExpressionArray(behavior.args));\n };\n\n ExpressionCloner.prototype.visitValueConverter = function visitValueConverter(converter) {\n return new ValueConverter(converter.expression.accept(this), converter.name, this.cloneExpressionArray(converter.args));\n };\n\n ExpressionCloner.prototype.visitAssign = function visitAssign(assign) {\n return new Assign(assign.target.accept(this), assign.value.accept(this));\n };\n\n ExpressionCloner.prototype.visitConditional = function visitConditional(conditional) {\n return new Conditional(conditional.condition.accept(this), conditional.yes.accept(this), conditional.no.accept(this));\n };\n\n ExpressionCloner.prototype.visitAccessThis = function visitAccessThis(access) {\n return new AccessThis(access.ancestor);\n };\n\n ExpressionCloner.prototype.visitAccessScope = function visitAccessScope(access) {\n return new AccessScope(access.name, access.ancestor);\n };\n\n ExpressionCloner.prototype.visitAccessMember = function visitAccessMember(access) {\n return new AccessMember(access.object.accept(this), access.name);\n };\n\n ExpressionCloner.prototype.visitAccessKeyed = function visitAccessKeyed(access) {\n return new AccessKeyed(access.object.accept(this), access.key.accept(this));\n };\n\n ExpressionCloner.prototype.visitCallScope = function visitCallScope(call) {\n return new CallScope(call.name, this.cloneExpressionArray(call.args), call.ancestor);\n };\n\n ExpressionCloner.prototype.visitCallFunction = function visitCallFunction(call) {\n return new CallFunction(call.func.accept(this), this.cloneExpressionArray(call.args));\n };\n\n ExpressionCloner.prototype.visitCallMember = function visitCallMember(call) {\n return new CallMember(call.object.accept(this), call.name, this.cloneExpressionArray(call.args));\n };\n\n ExpressionCloner.prototype.visitUnary = function visitUnary(unary) {\n return new Unary(prefix.operation, prefix.expression.accept(this));\n };\n\n ExpressionCloner.prototype.visitBinary = function visitBinary(binary) {\n return new Binary(binary.operation, binary.left.accept(this), binary.right.accept(this));\n };\n\n ExpressionCloner.prototype.visitLiteralPrimitive = function visitLiteralPrimitive(literal) {\n return new LiteralPrimitive(literal);\n };\n\n ExpressionCloner.prototype.visitLiteralArray = function visitLiteralArray(literal) {\n return new LiteralArray(this.cloneExpressionArray(literal.elements));\n };\n\n ExpressionCloner.prototype.visitLiteralObject = function visitLiteralObject(literal) {\n return new LiteralObject(literal.keys, this.cloneExpressionArray(literal.values));\n };\n\n ExpressionCloner.prototype.visitLiteralString = function visitLiteralString(literal) {\n return new LiteralString(literal.value);\n };\n\n ExpressionCloner.prototype.visitLiteralTemplate = function visitLiteralTemplate(literal) {\n return new LiteralTemplate(literal.cooked, this.cloneExpressionArray(literal.expressions), literal.raw, literal.tag && literal.tag.accept(this));\n };\n\n return ExpressionCloner;\n}();\n\nexport function cloneExpression(expression) {\n var visitor = new ExpressionCloner();\n return expression.accept(visitor);\n}\n\nexport var bindingMode = {\n oneTime: 0,\n toView: 1,\n oneWay: 1,\n twoWay: 2,\n fromView: 3\n};\n\nexport var Parser = function () {\n function Parser() {\n \n\n this.cache = Object.create(null);\n }\n\n Parser.prototype.parse = function parse(src) {\n src = src || '';\n\n return this.cache[src] || (this.cache[src] = new ParserImplementation(src).parseBindingBehavior());\n };\n\n return Parser;\n}();\n\nvar fromCharCode = String.fromCharCode;\n\nexport var ParserImplementation = function () {\n _createClass(ParserImplementation, [{\n key: 'raw',\n get: function get() {\n return this.src.slice(this.start, this.idx);\n }\n }]);\n\n function ParserImplementation(src) {\n \n\n this.idx = 0;\n\n this.start = 0;\n\n this.src = src;\n this.len = src.length;\n\n this.tkn = T$EOF;\n\n this.val = undefined;\n\n this.ch = src.charCodeAt(0);\n }\n\n ParserImplementation.prototype.parseBindingBehavior = function parseBindingBehavior() {\n this.nextToken();\n if (this.tkn & T$ExpressionTerminal) {\n this.err('Invalid start of expression');\n }\n var result = this.parseValueConverter();\n while (this.opt(T$Ampersand)) {\n result = new BindingBehavior(result, this.val, this.parseVariadicArgs());\n }\n if (this.tkn !== T$EOF) {\n this.err('Unconsumed token ' + this.raw);\n }\n return result;\n };\n\n ParserImplementation.prototype.parseValueConverter = function parseValueConverter() {\n var result = this.parseExpression();\n while (this.opt(T$Bar)) {\n result = new ValueConverter(result, this.val, this.parseVariadicArgs());\n }\n return result;\n };\n\n ParserImplementation.prototype.parseVariadicArgs = function parseVariadicArgs() {\n this.nextToken();\n var result = [];\n while (this.opt(T$Colon)) {\n result.push(this.parseExpression());\n }\n return result;\n };\n\n ParserImplementation.prototype.parseExpression = function parseExpression() {\n var exprStart = this.idx;\n var result = this.parseConditional();\n\n while (this.tkn === T$Eq) {\n if (!result.isAssignable) {\n this.err('Expression ' + this.src.slice(exprStart, this.start) + ' is not assignable');\n }\n this.nextToken();\n exprStart = this.idx;\n result = new Assign(result, this.parseConditional());\n }\n return result;\n };\n\n ParserImplementation.prototype.parseConditional = function parseConditional() {\n var result = this.parseBinary(0);\n\n if (this.opt(T$Question)) {\n var yes = this.parseExpression();\n this.expect(T$Colon);\n result = new Conditional(result, yes, this.parseExpression());\n }\n return result;\n };\n\n ParserImplementation.prototype.parseBinary = function parseBinary(minPrecedence) {\n var left = this.parseLeftHandSide(0);\n\n while (this.tkn & T$BinaryOp) {\n var opToken = this.tkn;\n if ((opToken & T$Precedence) <= minPrecedence) {\n break;\n }\n this.nextToken();\n left = new Binary(TokenValues[opToken & T$TokenMask], left, this.parseBinary(opToken & T$Precedence));\n }\n return left;\n };\n\n ParserImplementation.prototype.parseLeftHandSide = function parseLeftHandSide(context) {\n var result = void 0;\n\n primary: switch (this.tkn) {\n case T$Plus:\n this.nextToken();\n return this.parseLeftHandSide(0);\n case T$Minus:\n this.nextToken();\n return new Binary('-', new LiteralPrimitive(0), this.parseLeftHandSide(0));\n case T$Bang:\n case T$TypeofKeyword:\n case T$VoidKeyword:\n var op = TokenValues[this.tkn & T$TokenMask];\n this.nextToken();\n return new Unary(op, this.parseLeftHandSide(0));\n case T$ParentScope:\n {\n do {\n this.nextToken();\n context++;\n if (this.opt(T$Period)) {\n if (this.tkn === T$Period) {\n this.err();\n }\n continue;\n } else if (this.tkn & T$AccessScopeTerminal) {\n result = new AccessThis(context & C$Ancestor);\n\n context = context & C$ShorthandProp | C$This;\n break primary;\n } else {\n this.err();\n }\n } while (this.tkn === T$ParentScope);\n }\n\n case T$Identifier:\n {\n result = new AccessScope(this.val, context & C$Ancestor);\n this.nextToken();\n context = context & C$ShorthandProp | C$Scope;\n break;\n }\n case T$ThisScope:\n this.nextToken();\n result = new AccessThis(0);\n context = context & C$ShorthandProp | C$This;\n break;\n case T$LParen:\n this.nextToken();\n result = this.parseExpression();\n this.expect(T$RParen);\n context = C$Primary;\n break;\n case T$LBracket:\n {\n this.nextToken();\n var _elements = [];\n if (this.tkn !== T$RBracket) {\n do {\n _elements.push(this.parseExpression());\n } while (this.opt(T$Comma));\n }\n this.expect(T$RBracket);\n result = new LiteralArray(_elements);\n context = C$Primary;\n break;\n }\n case T$LBrace:\n {\n var keys = [];\n var values = [];\n this.nextToken();\n while (this.tkn !== T$RBrace) {\n if (this.tkn & T$IdentifierOrKeyword) {\n var ch = this.ch,\n tkn = this.tkn,\n idx = this.idx;\n\n keys.push(this.val);\n this.nextToken();\n if (this.opt(T$Colon)) {\n values.push(this.parseExpression());\n } else {\n this.ch = ch;\n this.tkn = tkn;\n this.idx = idx;\n values.push(this.parseLeftHandSide(C$ShorthandProp));\n }\n } else if (this.tkn & T$Literal) {\n keys.push(this.val);\n this.nextToken();\n this.expect(T$Colon);\n values.push(this.parseExpression());\n } else {\n this.err();\n }\n if (this.tkn !== T$RBrace) {\n this.expect(T$Comma);\n }\n }\n this.expect(T$RBrace);\n result = new LiteralObject(keys, values);\n context = C$Primary;\n break;\n }\n case T$StringLiteral:\n result = new LiteralString(this.val);\n this.nextToken();\n context = C$Primary;\n break;\n case T$TemplateTail:\n result = new LiteralTemplate([this.val]);\n this.nextToken();\n context = C$Primary;\n break;\n case T$TemplateContinuation:\n result = this.parseTemplate(0);\n context = C$Primary;\n break;\n case T$NumericLiteral:\n {\n result = new LiteralPrimitive(this.val);\n this.nextToken();\n\n break;\n }\n case T$NullKeyword:\n case T$UndefinedKeyword:\n case T$TrueKeyword:\n case T$FalseKeyword:\n result = new LiteralPrimitive(TokenValues[this.tkn & T$TokenMask]);\n this.nextToken();\n context = C$Primary;\n break;\n default:\n if (this.idx >= this.len) {\n this.err('Unexpected end of expression');\n } else {\n this.err();\n }\n }\n\n if (context & C$ShorthandProp) {\n return result;\n }\n\n var name = this.val;\n while (this.tkn & T$MemberOrCallExpression) {\n switch (this.tkn) {\n case T$Period:\n this.nextToken();\n if (!(this.tkn & T$IdentifierOrKeyword)) {\n this.err();\n }\n name = this.val;\n this.nextToken();\n\n context = context & C$Primary | (context & (C$This | C$Scope)) << 1 | context & C$Member | (context & C$Keyed) >> 1 | (context & C$Call) >> 2;\n if (this.tkn === T$LParen) {\n continue;\n }\n if (context & C$Scope) {\n result = new AccessScope(name, result.ancestor);\n } else {\n result = new AccessMember(result, name);\n }\n continue;\n case T$LBracket:\n this.nextToken();\n context = C$Keyed;\n result = new AccessKeyed(result, this.parseExpression());\n this.expect(T$RBracket);\n break;\n case T$LParen:\n this.nextToken();\n var args = [];\n while (this.tkn !== T$RParen) {\n args.push(this.parseExpression());\n if (!this.opt(T$Comma)) {\n break;\n }\n }\n this.expect(T$RParen);\n if (context & C$Scope) {\n result = new CallScope(name, args, result.ancestor);\n } else if (context & (C$Member | C$Primary)) {\n result = new CallMember(result, name, args);\n } else {\n result = new CallFunction(result, args);\n }\n context = C$Call;\n break;\n case T$TemplateTail:\n result = new LiteralTemplate([this.val], [], [this.raw], result);\n this.nextToken();\n break;\n case T$TemplateContinuation:\n result = this.parseTemplate(context | C$Tagged, result);\n }\n }\n\n return result;\n };\n\n ParserImplementation.prototype.parseTemplate = function parseTemplate(context, func) {\n var cooked = [this.val];\n var raw = context & C$Tagged ? [this.raw] : undefined;\n this.expect(T$TemplateContinuation);\n var expressions = [this.parseExpression()];\n\n while ((this.tkn = this.scanTemplateTail()) !== T$TemplateTail) {\n cooked.push(this.val);\n if (context & C$Tagged) {\n raw.push(this.raw);\n }\n this.expect(T$TemplateContinuation);\n expressions.push(this.parseExpression());\n }\n\n cooked.push(this.val);\n if (context & C$Tagged) {\n raw.push(this.raw);\n }\n this.nextToken();\n return new LiteralTemplate(cooked, expressions, raw, func);\n };\n\n ParserImplementation.prototype.nextToken = function nextToken() {\n while (this.idx < this.len) {\n if (this.ch <= 0x20) {\n this.next();\n continue;\n }\n this.start = this.idx;\n if (this.ch === 0x24 || this.ch >= 0x61 && this.ch <= 0x7A) {\n this.tkn = this.scanIdentifier();\n return;\n }\n\n if ((this.tkn = CharScanners[this.ch](this)) !== null) {\n return;\n }\n }\n this.tkn = T$EOF;\n };\n\n ParserImplementation.prototype.next = function next() {\n return this.ch = this.src.charCodeAt(++this.idx);\n };\n\n ParserImplementation.prototype.scanIdentifier = function scanIdentifier() {\n while (AsciiIdParts.has(this.next()) || this.ch > 0x7F && IdParts[this.ch]) {}\n\n return KeywordLookup[this.val = this.raw] || T$Identifier;\n };\n\n ParserImplementation.prototype.scanNumber = function scanNumber(isFloat) {\n if (isFloat) {\n this.val = 0;\n } else {\n this.val = this.ch - 0x30;\n while (this.next() <= 0x39 && this.ch >= 0x30) {\n this.val = this.val * 10 + this.ch - 0x30;\n }\n }\n\n if (isFloat || this.ch === 0x2E) {\n if (!isFloat) {\n this.next();\n }\n var start = this.idx;\n var value = this.ch - 0x30;\n while (this.next() <= 0x39 && this.ch >= 0x30) {\n value = value * 10 + this.ch - 0x30;\n }\n this.val = this.val + value / Math.pow(10, this.idx - start);\n }\n\n if (this.ch === 0x65 || this.ch === 0x45) {\n var _start = this.idx;\n\n this.next();\n if (this.ch === 0x2D || this.ch === 0x2B) {\n this.next();\n }\n\n if (!(this.ch >= 0x30 && this.ch <= 0x39)) {\n this.idx = _start;\n this.err('Invalid exponent');\n }\n while (this.next() <= 0x39 && this.ch >= 0x30) {}\n this.val = parseFloat(this.src.slice(this.start, this.idx));\n }\n\n return T$NumericLiteral;\n };\n\n ParserImplementation.prototype.scanString = function scanString() {\n var quote = this.ch;\n this.next();\n\n var buffer = void 0;\n var marker = this.idx;\n\n while (this.ch !== quote) {\n if (this.ch === 0x5C) {\n if (!buffer) {\n buffer = [];\n }\n\n buffer.push(this.src.slice(marker, this.idx));\n\n this.next();\n\n var _unescaped = void 0;\n\n if (this.ch === 0x75) {\n this.next();\n\n if (this.idx + 4 < this.len) {\n var hex = this.src.slice(this.idx, this.idx + 4);\n\n if (!/[A-Z0-9]{4}/i.test(hex)) {\n this.err('Invalid unicode escape [\\\\u' + hex + ']');\n }\n\n _unescaped = parseInt(hex, 16);\n this.idx += 4;\n this.ch = this.src.charCodeAt(this.idx);\n } else {\n this.err();\n }\n } else {\n _unescaped = unescape(this.ch);\n this.next();\n }\n\n buffer.push(fromCharCode(_unescaped));\n marker = this.idx;\n } else if (this.ch === 0 || this.idx >= this.len) {\n this.err('Unterminated quote');\n } else {\n this.next();\n }\n }\n\n var last = this.src.slice(marker, this.idx);\n this.next();\n var unescaped = last;\n\n if (buffer !== null && buffer !== undefined) {\n buffer.push(last);\n unescaped = buffer.join('');\n }\n\n this.val = unescaped;\n return T$StringLiteral;\n };\n\n ParserImplementation.prototype.scanTemplate = function scanTemplate() {\n var tail = true;\n var result = '';\n\n while (this.next() !== 0x60) {\n if (this.ch === 0x24) {\n if (this.idx + 1 < this.len && this.src.charCodeAt(this.idx + 1) === 0x7B) {\n this.idx++;\n tail = false;\n break;\n } else {\n result += '$';\n }\n } else if (this.ch === 0x5C) {\n result += fromCharCode(unescape(this.next()));\n } else if (this.ch === 0 || this.idx >= this.len) {\n this.err('Unterminated template literal');\n } else {\n result += fromCharCode(this.ch);\n }\n }\n\n this.next();\n this.val = result;\n if (tail) {\n return T$TemplateTail;\n }\n return T$TemplateContinuation;\n };\n\n ParserImplementation.prototype.scanTemplateTail = function scanTemplateTail() {\n if (this.idx >= this.len) {\n this.err('Unterminated template');\n }\n this.idx--;\n return this.scanTemplate();\n };\n\n ParserImplementation.prototype.err = function err() {\n var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Unexpected token ' + this.raw;\n var column = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.start;\n\n throw new Error('Parser Error: ' + message + ' at column ' + column + ' in expression [' + this.src + ']');\n };\n\n ParserImplementation.prototype.opt = function opt(token) {\n if (this.tkn === token) {\n this.nextToken();\n return true;\n }\n\n return false;\n };\n\n ParserImplementation.prototype.expect = function expect(token) {\n if (this.tkn === token) {\n this.nextToken();\n } else {\n this.err('Missing expected token ' + TokenValues[token & T$TokenMask], this.idx);\n }\n };\n\n return ParserImplementation;\n}();\n\nfunction unescape(code) {\n switch (code) {\n case 0x66:\n return 0xC;\n case 0x6E:\n return 0xA;\n case 0x72:\n return 0xD;\n case 0x74:\n return 0x9;\n case 0x76:\n return 0xB;\n default:\n return code;\n }\n}\n\nvar C$This = 1 << 10;\nvar C$Scope = 1 << 11;\nvar C$Member = 1 << 12;\nvar C$Keyed = 1 << 13;\nvar C$Call = 1 << 14;\nvar C$Primary = 1 << 15;\nvar C$ShorthandProp = 1 << 16;\nvar C$Tagged = 1 << 17;\n\nvar C$Ancestor = (1 << 9) - 1;\n\nvar T$TokenMask = (1 << 6) - 1;\n\nvar T$PrecShift = 6;\n\nvar T$Precedence = 7 << T$PrecShift;\n\nvar T$ExpressionTerminal = 1 << 11;\n\nvar T$ClosingToken = 1 << 12;\n\nvar T$OpeningToken = 1 << 13;\n\nvar T$AccessScopeTerminal = 1 << 14;\nvar T$Keyword = 1 << 15;\nvar T$EOF = 1 << 16 | T$AccessScopeTerminal | T$ExpressionTerminal;\nvar T$Identifier = 1 << 17;\nvar T$IdentifierOrKeyword = T$Identifier | T$Keyword;\nvar T$Literal = 1 << 18;\nvar T$NumericLiteral = 1 << 19 | T$Literal;\nvar T$StringLiteral = 1 << 20 | T$Literal;\nvar T$BinaryOp = 1 << 21;\n\nvar T$UnaryOp = 1 << 22;\n\nvar T$MemberExpression = 1 << 23;\n\nvar T$MemberOrCallExpression = 1 << 24;\nvar T$TemplateTail = 1 << 25 | T$MemberOrCallExpression;\nvar T$TemplateContinuation = 1 << 26 | T$MemberOrCallExpression;\n\nvar T$FalseKeyword = 0 | T$Keyword | T$Literal;\nvar T$TrueKeyword = 1 | T$Keyword | T$Literal;\nvar T$NullKeyword = 2 | T$Keyword | T$Literal;\nvar T$UndefinedKeyword = 3 | T$Keyword | T$Literal;\nvar T$ThisScope = 4 | T$IdentifierOrKeyword;\nvar T$ParentScope = 5 | T$IdentifierOrKeyword;\n\nvar T$LParen = 6 | T$OpeningToken | T$AccessScopeTerminal | T$MemberOrCallExpression;\nvar T$LBrace = 7 | T$OpeningToken;\nvar T$Period = 8 | T$MemberExpression | T$MemberOrCallExpression;\nvar T$RBrace = 9 | T$AccessScopeTerminal | T$ClosingToken | T$ExpressionTerminal;\nvar T$RParen = 10 | T$AccessScopeTerminal | T$ClosingToken | T$ExpressionTerminal;\nvar T$Comma = 11 | T$AccessScopeTerminal;\nvar T$LBracket = 12 | T$OpeningToken | T$AccessScopeTerminal | T$MemberExpression | T$MemberOrCallExpression;\nvar T$RBracket = 13 | T$ClosingToken | T$ExpressionTerminal;\nvar T$Colon = 14 | T$AccessScopeTerminal;\nvar T$Question = 15;\n\nvar T$Ampersand = 18 | T$AccessScopeTerminal;\nvar T$Bar = 19 | T$AccessScopeTerminal;\nvar T$BarBar = 20 | 1 << T$PrecShift | T$BinaryOp;\nvar T$AmpersandAmpersand = 21 | 2 << T$PrecShift | T$BinaryOp;\nvar T$Caret = 22 | 3 << T$PrecShift | T$BinaryOp;\nvar T$EqEq = 23 | 4 << T$PrecShift | T$BinaryOp;\nvar T$BangEq = 24 | 4 << T$PrecShift | T$BinaryOp;\nvar T$EqEqEq = 25 | 4 << T$PrecShift | T$BinaryOp;\nvar T$BangEqEq = 26 | 4 << T$PrecShift | T$BinaryOp;\nvar T$Lt = 27 | 5 << T$PrecShift | T$BinaryOp;\nvar T$Gt = 28 | 5 << T$PrecShift | T$BinaryOp;\nvar T$LtEq = 29 | 5 << T$PrecShift | T$BinaryOp;\nvar T$GtEq = 30 | 5 << T$PrecShift | T$BinaryOp;\nvar T$InKeyword = 31 | 5 << T$PrecShift | T$BinaryOp | T$Keyword;\nvar T$InstanceOfKeyword = 32 | 5 << T$PrecShift | T$BinaryOp | T$Keyword;\nvar T$Plus = 33 | 6 << T$PrecShift | T$BinaryOp | T$UnaryOp;\nvar T$Minus = 34 | 6 << T$PrecShift | T$BinaryOp | T$UnaryOp;\nvar T$TypeofKeyword = 35 | T$UnaryOp | T$Keyword;\nvar T$VoidKeyword = 36 | T$UnaryOp | T$Keyword;\nvar T$Star = 37 | 7 << T$PrecShift | T$BinaryOp;\nvar T$Percent = 38 | 7 << T$PrecShift | T$BinaryOp;\nvar T$Slash = 39 | 7 << T$PrecShift | T$BinaryOp;\nvar T$Eq = 40;\nvar T$Bang = 41 | T$UnaryOp;\n\nvar KeywordLookup = Object.create(null);\nKeywordLookup.true = T$TrueKeyword;\nKeywordLookup.null = T$NullKeyword;\nKeywordLookup.false = T$FalseKeyword;\nKeywordLookup.undefined = T$UndefinedKeyword;\nKeywordLookup.$this = T$ThisScope;\nKeywordLookup.$parent = T$ParentScope;\nKeywordLookup.in = T$InKeyword;\nKeywordLookup.instanceof = T$InstanceOfKeyword;\nKeywordLookup.typeof = T$TypeofKeyword;\nKeywordLookup.void = T$VoidKeyword;\n\nvar TokenValues = [false, true, null, undefined, '$this', '$parent', '(', '{', '.', '}', ')', ',', '[', ']', ':', '?', '\\'', '\"', '&', '|', '||', '&&', '^', '==', '!=', '===', '!==', '<', '>', '<=', '>=', 'in', 'instanceof', '+', '-', 'typeof', 'void', '*', '%', '/', '=', '!'];\n\nvar codes = {\n AsciiIdPart: [0x24, 0, 0x30, 0x3A, 0x41, 0x5B, 0x5F, 0, 0x61, 0x7B],\n IdStart: [0x24, 0, 0x41, 0x5B, 0x5F, 0, 0x61, 0x7B, 0xAA, 0, 0xBA, 0, 0xC0, 0xD7, 0xD8, 0xF7, 0xF8, 0x2B9, 0x2E0, 0x2E5, 0x1D00, 0x1D26, 0x1D2C, 0x1D5D, 0x1D62, 0x1D66, 0x1D6B, 0x1D78, 0x1D79, 0x1DBF, 0x1E00, 0x1F00, 0x2071, 0, 0x207F, 0, 0x2090, 0x209D, 0x212A, 0x212C, 0x2132, 0, 0x214E, 0, 0x2160, 0x2189, 0x2C60, 0x2C80, 0xA722, 0xA788, 0xA78B, 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, 0xA800, 0xAB30, 0xAB5B, 0xAB5C, 0xAB65, 0xFB00, 0xFB07, 0xFF21, 0xFF3B, 0xFF41, 0xFF5B],\n Digit: [0x30, 0x3A],\n Skip: [0, 0x21, 0x7F, 0xA1]\n};\n\nfunction decompress(lookup, set, compressed, value) {\n var rangeCount = compressed.length;\n for (var i = 0; i < rangeCount; i += 2) {\n var start = compressed[i];\n var end = compressed[i + 1];\n end = end > 0 ? end : start + 1;\n if (lookup) {\n var j = start;\n while (j < end) {\n lookup[j] = value;\n j++;\n }\n }\n if (set) {\n for (var ch = start; ch < end; ch++) {\n set.add(ch);\n }\n }\n }\n}\n\nfunction returnToken(token) {\n return function (p) {\n p.next();\n return token;\n };\n}\nfunction unexpectedCharacter(p) {\n p.err('Unexpected character [' + fromCharCode(p.ch) + ']');\n return null;\n}\n\nvar AsciiIdParts = new Set();\ndecompress(null, AsciiIdParts, codes.AsciiIdPart, true);\n\nvar IdParts = new Uint8Array(0xFFFF);\ndecompress(IdParts, null, codes.IdStart, 1);\ndecompress(IdParts, null, codes.Digit, 1);\n\nvar CharScanners = new Array(0xFFFF);\nvar ci = 0;\nwhile (ci < 0xFFFF) {\n CharScanners[ci] = unexpectedCharacter;\n ci++;\n}\n\ndecompress(CharScanners, null, codes.Skip, function (p) {\n p.next();\n return null;\n});\ndecompress(CharScanners, null, codes.IdStart, function (p) {\n return p.scanIdentifier();\n});\ndecompress(CharScanners, null, codes.Digit, function (p) {\n return p.scanNumber(false);\n});\n\nCharScanners[0x22] = CharScanners[0x27] = function (p) {\n return p.scanString();\n};\nCharScanners[0x60] = function (p) {\n return p.scanTemplate();\n};\n\nCharScanners[0x21] = function (p) {\n if (p.next() !== 0x3D) {\n return T$Bang;\n }\n if (p.next() !== 0x3D) {\n return T$BangEq;\n }\n p.next();\n return T$BangEqEq;\n};\n\nCharScanners[0x3D] = function (p) {\n if (p.next() !== 0x3D) {\n return T$Eq;\n }\n if (p.next() !== 0x3D) {\n return T$EqEq;\n }\n p.next();\n return T$EqEqEq;\n};\n\nCharScanners[0x26] = function (p) {\n if (p.next() !== 0x26) {\n return T$Ampersand;\n }\n p.next();\n return T$AmpersandAmpersand;\n};\n\nCharScanners[0x7C] = function (p) {\n if (p.next() !== 0x7C) {\n return T$Bar;\n }\n p.next();\n return T$BarBar;\n};\n\nCharScanners[0x2E] = function (p) {\n if (p.next() <= 0x39 && p.ch >= 0x30) {\n return p.scanNumber(true);\n }\n return T$Period;\n};\n\nCharScanners[0x3C] = function (p) {\n if (p.next() !== 0x3D) {\n return T$Lt;\n }\n p.next();\n return T$LtEq;\n};\n\nCharScanners[0x3E] = function (p) {\n if (p.next() !== 0x3D) {\n return T$Gt;\n }\n p.next();\n return T$GtEq;\n};\n\nCharScanners[0x25] = returnToken(T$Percent);\nCharScanners[0x28] = returnToken(T$LParen);\nCharScanners[0x29] = returnToken(T$RParen);\nCharScanners[0x2A] = returnToken(T$Star);\nCharScanners[0x2B] = returnToken(T$Plus);\nCharScanners[0x2C] = returnToken(T$Comma);\nCharScanners[0x2D] = returnToken(T$Minus);\nCharScanners[0x2F] = returnToken(T$Slash);\nCharScanners[0x3A] = returnToken(T$Colon);\nCharScanners[0x3F] = returnToken(T$Question);\nCharScanners[0x5B] = returnToken(T$LBracket);\nCharScanners[0x5D] = returnToken(T$RBracket);\nCharScanners[0x5E] = returnToken(T$Caret);\nCharScanners[0x7B] = returnToken(T$LBrace);\nCharScanners[0x7D] = returnToken(T$RBrace);\n\nvar mapProto = Map.prototype;\n\nfunction _getMapObserver(taskQueue, map) {\n return ModifyMapObserver.for(taskQueue, map);\n}\n\nvar ModifyMapObserver = function (_ModifyCollectionObse2) {\n _inherits(ModifyMapObserver, _ModifyCollectionObse2);\n\n function ModifyMapObserver(taskQueue, map) {\n \n\n return _possibleConstructorReturn(this, _ModifyCollectionObse2.call(this, taskQueue, map));\n }\n\n ModifyMapObserver.for = function _for(taskQueue, map) {\n if (!('__map_observer__' in map)) {\n Reflect.defineProperty(map, '__map_observer__', {\n value: ModifyMapObserver.create(taskQueue, map),\n enumerable: false, configurable: false\n });\n }\n return map.__map_observer__;\n };\n\n ModifyMapObserver.create = function create(taskQueue, map) {\n var observer = new ModifyMapObserver(taskQueue, map);\n\n var proto = mapProto;\n if (proto.set !== map.set || proto.delete !== map.delete || proto.clear !== map.clear) {\n proto = {\n set: map.set,\n delete: map.delete,\n clear: map.clear\n };\n }\n\n map.set = function () {\n var hasValue = map.has(arguments[0]);\n var type = hasValue ? 'update' : 'add';\n var oldValue = map.get(arguments[0]);\n var methodCallResult = proto.set.apply(map, arguments);\n if (!hasValue || oldValue !== map.get(arguments[0])) {\n observer.addChangeRecord({\n type: type,\n object: map,\n key: arguments[0],\n oldValue: oldValue\n });\n }\n return methodCallResult;\n };\n\n map.delete = function () {\n var hasValue = map.has(arguments[0]);\n var oldValue = map.get(arguments[0]);\n var methodCallResult = proto.delete.apply(map, arguments);\n if (hasValue) {\n observer.addChangeRecord({\n type: 'delete',\n object: map,\n key: arguments[0],\n oldValue: oldValue\n });\n }\n return methodCallResult;\n };\n\n map.clear = function () {\n var methodCallResult = proto.clear.apply(map, arguments);\n observer.addChangeRecord({\n type: 'clear',\n object: map\n });\n return methodCallResult;\n };\n\n return observer;\n };\n\n return ModifyMapObserver;\n}(ModifyCollectionObserver);\n\nvar emLogger = LogManager.getLogger('event-manager');\n\nfunction findOriginalEventTarget(event) {\n return event.composedPath && event.composedPath()[0] || event.deepPath && event.deepPath()[0] || event.path && event.path[0] || event.target;\n}\n\nfunction stopPropagation() {\n this.standardStopPropagation();\n this.propagationStopped = true;\n}\n\nfunction handleCapturedEvent(event) {\n event.propagationStopped = false;\n var target = findOriginalEventTarget(event);\n\n var orderedCallbacks = [];\n\n while (target) {\n if (target.capturedCallbacks) {\n var callback = target.capturedCallbacks[event.type];\n if (callback) {\n if (event.stopPropagation !== stopPropagation) {\n event.standardStopPropagation = event.stopPropagation;\n event.stopPropagation = stopPropagation;\n }\n orderedCallbacks.push(callback);\n }\n }\n target = target.parentNode;\n }\n for (var i = orderedCallbacks.length - 1; i >= 0 && !event.propagationStopped; i--) {\n var orderedCallback = orderedCallbacks[i];\n if ('handleEvent' in orderedCallback) {\n orderedCallback.handleEvent(event);\n } else {\n orderedCallback(event);\n }\n }\n}\n\nvar CapturedHandlerEntry = function () {\n function CapturedHandlerEntry(eventName) {\n \n\n this.eventName = eventName;\n this.count = 0;\n }\n\n CapturedHandlerEntry.prototype.increment = function increment() {\n this.count++;\n\n if (this.count === 1) {\n DOM.addEventListener(this.eventName, handleCapturedEvent, true);\n }\n };\n\n CapturedHandlerEntry.prototype.decrement = function decrement() {\n if (this.count === 0) {\n emLogger.warn('The same EventListener was disposed multiple times.');\n } else if (--this.count === 0) {\n DOM.removeEventListener(this.eventName, handleCapturedEvent, true);\n }\n };\n\n return CapturedHandlerEntry;\n}();\n\nvar DelegateHandlerEntry = function () {\n function DelegateHandlerEntry(eventName, eventManager) {\n \n\n this.eventName = eventName;\n this.count = 0;\n this.eventManager = eventManager;\n }\n\n DelegateHandlerEntry.prototype.handleEvent = function handleEvent(event) {\n event.propagationStopped = false;\n var target = findOriginalEventTarget(event);\n\n while (target && !event.propagationStopped) {\n if (target.delegatedCallbacks) {\n var callback = target.delegatedCallbacks[event.type];\n if (callback) {\n if (event.stopPropagation !== stopPropagation) {\n event.standardStopPropagation = event.stopPropagation;\n event.stopPropagation = stopPropagation;\n }\n if ('handleEvent' in callback) {\n callback.handleEvent(event);\n } else {\n callback(event);\n }\n }\n }\n\n var parent = target.parentNode;\n var shouldEscapeShadowRoot = this.eventManager.escapeShadowRoot && parent instanceof ShadowRoot;\n\n target = shouldEscapeShadowRoot ? parent.host : parent;\n }\n };\n\n DelegateHandlerEntry.prototype.increment = function increment() {\n this.count++;\n\n if (this.count === 1) {\n DOM.addEventListener(this.eventName, this, false);\n }\n };\n\n DelegateHandlerEntry.prototype.decrement = function decrement() {\n if (this.count === 0) {\n emLogger.warn('The same EventListener was disposed multiple times.');\n } else if (--this.count === 0) {\n DOM.removeEventListener(this.eventName, this, false);\n }\n };\n\n return DelegateHandlerEntry;\n}();\n\nvar DelegationEntryHandler = function () {\n function DelegationEntryHandler(entry, lookup, targetEvent) {\n \n\n this.entry = entry;\n this.lookup = lookup;\n this.targetEvent = targetEvent;\n }\n\n DelegationEntryHandler.prototype.dispose = function dispose() {\n if (this.lookup[this.targetEvent]) {\n this.entry.decrement();\n this.lookup[this.targetEvent] = null;\n } else {\n emLogger.warn('Calling .dispose() on already disposed eventListener');\n }\n };\n\n return DelegationEntryHandler;\n}();\n\nvar EventHandler = function () {\n function EventHandler(target, targetEvent, callback) {\n \n\n this.target = target;\n this.targetEvent = targetEvent;\n this.callback = callback;\n }\n\n EventHandler.prototype.dispose = function dispose() {\n this.target.removeEventListener(this.targetEvent, this.callback);\n };\n\n return EventHandler;\n}();\n\nvar DefaultEventStrategy = function () {\n function DefaultEventStrategy(eventManager) {\n \n\n this.delegatedHandlers = {};\n this.capturedHandlers = {};\n\n this.eventManager = eventManager;\n }\n\n DefaultEventStrategy.prototype.subscribe = function subscribe(target, targetEvent, callback, strategy, disposable) {\n var delegatedHandlers = void 0;\n var capturedHandlers = void 0;\n var handlerEntry = void 0;\n\n if (strategy === delegationStrategy.bubbling) {\n delegatedHandlers = this.delegatedHandlers;\n handlerEntry = delegatedHandlers[targetEvent] || (delegatedHandlers[targetEvent] = new DelegateHandlerEntry(targetEvent, this.eventManager));\n var delegatedCallbacks = target.delegatedCallbacks || (target.delegatedCallbacks = {});\n if (!delegatedCallbacks[targetEvent]) {\n handlerEntry.increment();\n } else {\n emLogger.warn('Overriding previous callback for event listener', { event: targetEvent, callback: callback, previousCallback: delegatedCallbacks[targetEvent] });\n }\n delegatedCallbacks[targetEvent] = callback;\n\n if (disposable === true) {\n return new DelegationEntryHandler(handlerEntry, delegatedCallbacks, targetEvent);\n }\n\n return function () {\n handlerEntry.decrement();\n delegatedCallbacks[targetEvent] = null;\n };\n }\n if (strategy === delegationStrategy.capturing) {\n capturedHandlers = this.capturedHandlers;\n handlerEntry = capturedHandlers[targetEvent] || (capturedHandlers[targetEvent] = new CapturedHandlerEntry(targetEvent));\n var capturedCallbacks = target.capturedCallbacks || (target.capturedCallbacks = {});\n if (!capturedCallbacks[targetEvent]) {\n handlerEntry.increment();\n } else {\n emLogger.error('already have a callback for event', { event: targetEvent, callback: callback });\n }\n capturedCallbacks[targetEvent] = callback;\n\n if (disposable === true) {\n return new DelegationEntryHandler(handlerEntry, capturedCallbacks, targetEvent);\n }\n\n return function () {\n handlerEntry.decrement();\n capturedCallbacks[targetEvent] = null;\n };\n }\n\n target.addEventListener(targetEvent, callback);\n\n if (disposable === true) {\n return new EventHandler(target, targetEvent, callback);\n }\n\n return function () {\n target.removeEventListener(targetEvent, callback);\n };\n };\n\n return DefaultEventStrategy;\n}();\n\nexport var delegationStrategy = {\n none: 0,\n capturing: 1,\n bubbling: 2\n};\n\nexport var EventManager = function () {\n function EventManager() {\n var escapeShadowRoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n \n\n this.elementHandlerLookup = {};\n this.eventStrategyLookup = {};\n this.escapeShadowRoot = escapeShadowRoot;\n\n this.registerElementConfig({\n tagName: 'input',\n properties: {\n value: ['change', 'input'],\n checked: ['change', 'input'],\n files: ['change', 'input']\n }\n });\n\n this.registerElementConfig({\n tagName: 'textarea',\n properties: {\n value: ['change', 'input']\n }\n });\n\n this.registerElementConfig({\n tagName: 'select',\n properties: {\n value: ['change']\n }\n });\n\n this.registerElementConfig({\n tagName: 'content editable',\n properties: {\n value: ['change', 'input', 'blur', 'keyup', 'paste']\n }\n });\n\n this.registerElementConfig({\n tagName: 'scrollable element',\n properties: {\n scrollTop: ['scroll'],\n scrollLeft: ['scroll']\n }\n });\n\n this.defaultEventStrategy = new DefaultEventStrategy(this);\n }\n\n EventManager.prototype.registerElementConfig = function registerElementConfig(config) {\n var tagName = config.tagName.toLowerCase();\n var properties = config.properties;\n var propertyName = void 0;\n\n var lookup = this.elementHandlerLookup[tagName] = {};\n\n for (propertyName in properties) {\n if (properties.hasOwnProperty(propertyName)) {\n lookup[propertyName] = properties[propertyName];\n }\n }\n };\n\n EventManager.prototype.registerEventStrategy = function registerEventStrategy(eventName, strategy) {\n this.eventStrategyLookup[eventName] = strategy;\n };\n\n EventManager.prototype.getElementHandler = function getElementHandler(target, propertyName) {\n var tagName = void 0;\n var lookup = this.elementHandlerLookup;\n\n if (target.tagName) {\n tagName = target.tagName.toLowerCase();\n\n if (lookup[tagName] && lookup[tagName][propertyName]) {\n return new EventSubscriber(lookup[tagName][propertyName]);\n }\n\n if (propertyName === 'textContent' || propertyName === 'innerHTML') {\n return new EventSubscriber(lookup['content editable'].value);\n }\n\n if (propertyName === 'scrollTop' || propertyName === 'scrollLeft') {\n return new EventSubscriber(lookup['scrollable element'][propertyName]);\n }\n }\n\n return null;\n };\n\n EventManager.prototype.addEventListener = function addEventListener(target, targetEvent, callbackOrListener, delegate, disposable) {\n return (this.eventStrategyLookup[targetEvent] || this.defaultEventStrategy).subscribe(target, targetEvent, callbackOrListener, delegate, disposable);\n };\n\n return EventManager;\n}();\n\nexport var EventSubscriber = function () {\n function EventSubscriber(events) {\n \n\n this.events = events;\n this.element = null;\n this.handler = null;\n }\n\n EventSubscriber.prototype.subscribe = function subscribe(element, callbackOrListener) {\n this.element = element;\n this.handler = callbackOrListener;\n\n var events = this.events;\n for (var i = 0, ii = events.length; ii > i; ++i) {\n element.addEventListener(events[i], callbackOrListener);\n }\n };\n\n EventSubscriber.prototype.dispose = function dispose() {\n if (this.element === null) {\n return;\n }\n var element = this.element;\n var callbackOrListener = this.handler;\n var events = this.events;\n for (var i = 0, ii = events.length; ii > i; ++i) {\n element.removeEventListener(events[i], callbackOrListener);\n }\n this.element = this.handler = null;\n };\n\n return EventSubscriber;\n}();\n\nexport var DirtyChecker = function () {\n function DirtyChecker() {\n \n\n this.tracked = [];\n this.checkDelay = 120;\n }\n\n DirtyChecker.prototype.addProperty = function addProperty(property) {\n var tracked = this.tracked;\n\n tracked.push(property);\n\n if (tracked.length === 1) {\n this.scheduleDirtyCheck();\n }\n };\n\n DirtyChecker.prototype.removeProperty = function removeProperty(property) {\n var tracked = this.tracked;\n tracked.splice(tracked.indexOf(property), 1);\n };\n\n DirtyChecker.prototype.scheduleDirtyCheck = function scheduleDirtyCheck() {\n var _this22 = this;\n\n setTimeout(function () {\n return _this22.check();\n }, this.checkDelay);\n };\n\n DirtyChecker.prototype.check = function check() {\n var tracked = this.tracked;\n var i = tracked.length;\n\n while (i--) {\n var current = tracked[i];\n\n if (current.isDirty()) {\n current.call();\n }\n }\n\n if (tracked.length) {\n this.scheduleDirtyCheck();\n }\n };\n\n return DirtyChecker;\n}();\n\nexport var DirtyCheckProperty = (_dec5 = subscriberCollection(), _dec5(_class5 = function () {\n function DirtyCheckProperty(dirtyChecker, obj, propertyName) {\n \n\n this.dirtyChecker = dirtyChecker;\n this.obj = obj;\n this.propertyName = propertyName;\n }\n\n DirtyCheckProperty.prototype.getValue = function getValue() {\n return this.obj[this.propertyName];\n };\n\n DirtyCheckProperty.prototype.setValue = function setValue(newValue) {\n this.obj[this.propertyName] = newValue;\n };\n\n DirtyCheckProperty.prototype.call = function call() {\n var oldValue = this.oldValue;\n var newValue = this.getValue();\n\n this.callSubscribers(newValue, oldValue);\n\n this.oldValue = newValue;\n };\n\n DirtyCheckProperty.prototype.isDirty = function isDirty() {\n return this.oldValue !== this.obj[this.propertyName];\n };\n\n DirtyCheckProperty.prototype.subscribe = function subscribe(context, callable) {\n if (!this.hasSubscribers()) {\n this.oldValue = this.getValue();\n this.dirtyChecker.addProperty(this);\n }\n this.addSubscriber(context, callable);\n };\n\n DirtyCheckProperty.prototype.unsubscribe = function unsubscribe(context, callable) {\n if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n this.dirtyChecker.removeProperty(this);\n }\n };\n\n return DirtyCheckProperty;\n}()) || _class5);\n\nvar logger = LogManager.getLogger('property-observation');\n\nexport var propertyAccessor = {\n getValue: function getValue(obj, propertyName) {\n return obj[propertyName];\n },\n setValue: function setValue(value, obj, propertyName) {\n obj[propertyName] = value;\n }\n};\n\nexport var PrimitiveObserver = function () {\n function PrimitiveObserver(primitive, propertyName) {\n \n\n this.doNotCache = true;\n\n this.primitive = primitive;\n this.propertyName = propertyName;\n }\n\n PrimitiveObserver.prototype.getValue = function getValue() {\n return this.primitive[this.propertyName];\n };\n\n PrimitiveObserver.prototype.setValue = function setValue() {\n var type = _typeof(this.primitive);\n throw new Error('The ' + this.propertyName + ' property of a ' + type + ' (' + this.primitive + ') cannot be assigned.');\n };\n\n PrimitiveObserver.prototype.subscribe = function subscribe() {};\n\n PrimitiveObserver.prototype.unsubscribe = function unsubscribe() {};\n\n return PrimitiveObserver;\n}();\n\nexport var SetterObserver = (_dec6 = subscriberCollection(), _dec6(_class7 = function () {\n function SetterObserver(taskQueue, obj, propertyName) {\n \n\n this.taskQueue = taskQueue;\n this.obj = obj;\n this.propertyName = propertyName;\n this.queued = false;\n this.observing = false;\n }\n\n SetterObserver.prototype.getValue = function getValue() {\n return this.obj[this.propertyName];\n };\n\n SetterObserver.prototype.setValue = function setValue(newValue) {\n this.obj[this.propertyName] = newValue;\n };\n\n SetterObserver.prototype.getterValue = function getterValue() {\n return this.currentValue;\n };\n\n SetterObserver.prototype.setterValue = function setterValue(newValue) {\n var oldValue = this.currentValue;\n\n if (oldValue !== newValue) {\n if (!this.queued) {\n this.oldValue = oldValue;\n this.queued = true;\n this.taskQueue.queueMicroTask(this);\n }\n\n this.currentValue = newValue;\n }\n };\n\n SetterObserver.prototype.call = function call() {\n var oldValue = this.oldValue;\n var newValue = this.oldValue = this.currentValue;\n\n this.queued = false;\n\n this.callSubscribers(newValue, oldValue);\n };\n\n SetterObserver.prototype.subscribe = function subscribe(context, callable) {\n if (!this.observing) {\n this.convertProperty();\n }\n this.addSubscriber(context, callable);\n };\n\n SetterObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n this.removeSubscriber(context, callable);\n };\n\n SetterObserver.prototype.convertProperty = function convertProperty() {\n this.observing = true;\n this.currentValue = this.obj[this.propertyName];\n this.setValue = this.setterValue;\n this.getValue = this.getterValue;\n\n if (!Reflect.defineProperty(this.obj, this.propertyName, {\n configurable: true,\n enumerable: this.propertyName in this.obj ? this.obj.propertyIsEnumerable(this.propertyName) : true,\n get: this.getValue.bind(this),\n set: this.setValue.bind(this)\n })) {\n logger.warn('Cannot observe property \\'' + this.propertyName + '\\' of object', this.obj);\n }\n };\n\n return SetterObserver;\n}()) || _class7);\n\nexport var XLinkAttributeObserver = function () {\n function XLinkAttributeObserver(element, propertyName, attributeName) {\n \n\n this.element = element;\n this.propertyName = propertyName;\n this.attributeName = attributeName;\n }\n\n XLinkAttributeObserver.prototype.getValue = function getValue() {\n return this.element.getAttributeNS('http://www.w3.org/1999/xlink', this.attributeName);\n };\n\n XLinkAttributeObserver.prototype.setValue = function setValue(newValue) {\n return this.element.setAttributeNS('http://www.w3.org/1999/xlink', this.attributeName, newValue);\n };\n\n XLinkAttributeObserver.prototype.subscribe = function subscribe() {\n throw new Error('Observation of a \"' + this.element.nodeName + '\" element\\'s \"' + this.propertyName + '\" property is not supported.');\n };\n\n return XLinkAttributeObserver;\n}();\n\nexport var dataAttributeAccessor = {\n getValue: function getValue(obj, propertyName) {\n return obj.getAttribute(propertyName);\n },\n setValue: function setValue(value, obj, propertyName) {\n if (value === null || value === undefined) {\n obj.removeAttribute(propertyName);\n } else {\n obj.setAttribute(propertyName, value);\n }\n }\n};\n\nexport var DataAttributeObserver = function () {\n function DataAttributeObserver(element, propertyName) {\n \n\n this.element = element;\n this.propertyName = propertyName;\n }\n\n DataAttributeObserver.prototype.getValue = function getValue() {\n return this.element.getAttribute(this.propertyName);\n };\n\n DataAttributeObserver.prototype.setValue = function setValue(newValue) {\n if (newValue === null || newValue === undefined) {\n return this.element.removeAttribute(this.propertyName);\n }\n return this.element.setAttribute(this.propertyName, newValue);\n };\n\n DataAttributeObserver.prototype.subscribe = function subscribe() {\n throw new Error('Observation of a \"' + this.element.nodeName + '\" element\\'s \"' + this.propertyName + '\" property is not supported.');\n };\n\n return DataAttributeObserver;\n}();\n\nexport var StyleObserver = function () {\n function StyleObserver(element, propertyName) {\n \n\n this.element = element;\n this.propertyName = propertyName;\n\n this.styles = null;\n this.version = 0;\n }\n\n StyleObserver.prototype.getValue = function getValue() {\n return this.element.style.cssText;\n };\n\n StyleObserver.prototype._setProperty = function _setProperty(style, value) {\n var priority = '';\n\n if (value !== null && value !== undefined && typeof value.indexOf === 'function' && value.indexOf('!important') !== -1) {\n priority = 'important';\n value = value.replace('!important', '');\n }\n this.element.style.setProperty(style, value, priority);\n };\n\n StyleObserver.prototype.setValue = function setValue(newValue) {\n var styles = this.styles || {};\n var style = void 0;\n var version = this.version;\n\n if (newValue !== null && newValue !== undefined) {\n if (newValue instanceof Object) {\n var value = void 0;\n for (style in newValue) {\n if (newValue.hasOwnProperty(style)) {\n value = newValue[style];\n style = style.replace(/([A-Z])/g, function (m) {\n return '-' + m.toLowerCase();\n });\n styles[style] = version;\n this._setProperty(style, value);\n }\n }\n } else if (newValue.length) {\n var rx = /\\s*([\\w\\-]+)\\s*:\\s*((?:(?:[\\w\\-]+\\(\\s*(?:\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[\\w\\-]+\\(\\s*(?:^\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^\\)]*)\\),?|[^\\)]*)\\),?|\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^;]*),?\\s*)+);?/g;\n var pair = void 0;\n while ((pair = rx.exec(newValue)) !== null) {\n style = pair[1];\n if (!style) {\n continue;\n }\n\n styles[style] = version;\n this._setProperty(style, pair[2]);\n }\n }\n }\n\n this.styles = styles;\n this.version += 1;\n\n if (version === 0) {\n return;\n }\n\n version -= 1;\n for (style in styles) {\n if (!styles.hasOwnProperty(style) || styles[style] !== version) {\n continue;\n }\n\n this.element.style.removeProperty(style);\n }\n };\n\n StyleObserver.prototype.subscribe = function subscribe() {\n throw new Error('Observation of a \"' + this.element.nodeName + '\" element\\'s \"' + this.propertyName + '\" property is not supported.');\n };\n\n return StyleObserver;\n}();\n\nexport var ValueAttributeObserver = (_dec7 = subscriberCollection(), _dec7(_class8 = function () {\n function ValueAttributeObserver(element, propertyName, handler) {\n \n\n this.element = element;\n this.propertyName = propertyName;\n this.handler = handler;\n if (propertyName === 'files') {\n this.setValue = function () {};\n }\n }\n\n ValueAttributeObserver.prototype.getValue = function getValue() {\n return this.element[this.propertyName];\n };\n\n ValueAttributeObserver.prototype.setValue = function setValue(newValue) {\n newValue = newValue === undefined || newValue === null ? '' : newValue;\n if (this.element[this.propertyName] !== newValue) {\n this.element[this.propertyName] = newValue;\n this.notify();\n }\n };\n\n ValueAttributeObserver.prototype.notify = function notify() {\n var oldValue = this.oldValue;\n var newValue = this.getValue();\n\n this.callSubscribers(newValue, oldValue);\n\n this.oldValue = newValue;\n };\n\n ValueAttributeObserver.prototype.handleEvent = function handleEvent() {\n this.notify();\n };\n\n ValueAttributeObserver.prototype.subscribe = function subscribe(context, callable) {\n if (!this.hasSubscribers()) {\n this.oldValue = this.getValue();\n this.handler.subscribe(this.element, this);\n }\n\n this.addSubscriber(context, callable);\n };\n\n ValueAttributeObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n this.handler.dispose();\n }\n };\n\n return ValueAttributeObserver;\n}()) || _class8);\n\nvar checkedArrayContext = 'CheckedObserver:array';\nvar checkedValueContext = 'CheckedObserver:value';\n\nexport var CheckedObserver = (_dec8 = subscriberCollection(), _dec8(_class9 = function () {\n function CheckedObserver(element, handler, observerLocator) {\n \n\n this.element = element;\n this.handler = handler;\n this.observerLocator = observerLocator;\n }\n\n CheckedObserver.prototype.getValue = function getValue() {\n return this.value;\n };\n\n CheckedObserver.prototype.setValue = function setValue(newValue) {\n if (this.initialSync && this.value === newValue) {\n return;\n }\n\n if (this.arrayObserver) {\n this.arrayObserver.unsubscribe(checkedArrayContext, this);\n this.arrayObserver = null;\n }\n\n if (this.element.type === 'checkbox' && Array.isArray(newValue)) {\n this.arrayObserver = this.observerLocator.getArrayObserver(newValue);\n this.arrayObserver.subscribe(checkedArrayContext, this);\n }\n\n this.oldValue = this.value;\n this.value = newValue;\n this.synchronizeElement();\n this.notify();\n\n if (!this.initialSync) {\n this.initialSync = true;\n this.observerLocator.taskQueue.queueMicroTask(this);\n }\n };\n\n CheckedObserver.prototype.call = function call(context, splices) {\n this.synchronizeElement();\n\n if (!this.valueObserver) {\n this.valueObserver = this.element.__observers__.model || this.element.__observers__.value;\n if (this.valueObserver) {\n this.valueObserver.subscribe(checkedValueContext, this);\n }\n }\n };\n\n CheckedObserver.prototype.synchronizeElement = function synchronizeElement() {\n var value = this.value;\n var element = this.element;\n var elementValue = element.hasOwnProperty('model') ? element.model : element.value;\n var isRadio = element.type === 'radio';\n var matcher = element.matcher || function (a, b) {\n return a === b;\n };\n\n element.checked = isRadio && !!matcher(value, elementValue) || !isRadio && value === true || !isRadio && Array.isArray(value) && value.findIndex(function (item) {\n return !!matcher(item, elementValue);\n }) !== -1;\n };\n\n CheckedObserver.prototype.synchronizeValue = function synchronizeValue() {\n var value = this.value;\n var element = this.element;\n var elementValue = element.hasOwnProperty('model') ? element.model : element.value;\n var index = void 0;\n var matcher = element.matcher || function (a, b) {\n return a === b;\n };\n\n if (element.type === 'checkbox') {\n if (Array.isArray(value)) {\n index = value.findIndex(function (item) {\n return !!matcher(item, elementValue);\n });\n if (element.checked && index === -1) {\n value.push(elementValue);\n } else if (!element.checked && index !== -1) {\n value.splice(index, 1);\n }\n\n return;\n }\n\n value = element.checked;\n } else if (element.checked) {\n value = elementValue;\n } else {\n return;\n }\n\n this.oldValue = this.value;\n this.value = value;\n this.notify();\n };\n\n CheckedObserver.prototype.notify = function notify() {\n var oldValue = this.oldValue;\n var newValue = this.value;\n\n if (newValue === oldValue) {\n return;\n }\n\n this.callSubscribers(newValue, oldValue);\n };\n\n CheckedObserver.prototype.handleEvent = function handleEvent() {\n this.synchronizeValue();\n };\n\n CheckedObserver.prototype.subscribe = function subscribe(context, callable) {\n if (!this.hasSubscribers()) {\n this.handler.subscribe(this.element, this);\n }\n this.addSubscriber(context, callable);\n };\n\n CheckedObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n this.handler.dispose();\n }\n };\n\n CheckedObserver.prototype.unbind = function unbind() {\n if (this.arrayObserver) {\n this.arrayObserver.unsubscribe(checkedArrayContext, this);\n this.arrayObserver = null;\n }\n if (this.valueObserver) {\n this.valueObserver.unsubscribe(checkedValueContext, this);\n }\n };\n\n return CheckedObserver;\n}()) || _class9);\n\nvar selectArrayContext = 'SelectValueObserver:array';\n\nexport var SelectValueObserver = (_dec9 = subscriberCollection(), _dec9(_class10 = function () {\n function SelectValueObserver(element, handler, observerLocator) {\n \n\n this.element = element;\n this.handler = handler;\n this.observerLocator = observerLocator;\n }\n\n SelectValueObserver.prototype.getValue = function getValue() {\n return this.value;\n };\n\n SelectValueObserver.prototype.setValue = function setValue(newValue) {\n if (newValue !== null && newValue !== undefined && this.element.multiple && !Array.isArray(newValue)) {\n throw new Error('Only null or Array instances can be bound to a multi-select.');\n }\n if (this.value === newValue) {\n return;\n }\n\n if (this.arrayObserver) {\n this.arrayObserver.unsubscribe(selectArrayContext, this);\n this.arrayObserver = null;\n }\n\n if (Array.isArray(newValue)) {\n this.arrayObserver = this.observerLocator.getArrayObserver(newValue);\n this.arrayObserver.subscribe(selectArrayContext, this);\n }\n\n this.oldValue = this.value;\n this.value = newValue;\n this.synchronizeOptions();\n this.notify();\n\n if (!this.initialSync) {\n this.initialSync = true;\n this.observerLocator.taskQueue.queueMicroTask(this);\n }\n };\n\n SelectValueObserver.prototype.call = function call(context, splices) {\n this.synchronizeOptions();\n };\n\n SelectValueObserver.prototype.synchronizeOptions = function synchronizeOptions() {\n var value = this.value;\n var isArray = void 0;\n\n if (Array.isArray(value)) {\n isArray = true;\n }\n\n var options = this.element.options;\n var i = options.length;\n var matcher = this.element.matcher || function (a, b) {\n return a === b;\n };\n\n var _loop = function _loop() {\n var option = options.item(i);\n var optionValue = option.hasOwnProperty('model') ? option.model : option.value;\n if (isArray) {\n option.selected = value.findIndex(function (item) {\n return !!matcher(optionValue, item);\n }) !== -1;\n return 'continue';\n }\n option.selected = !!matcher(optionValue, value);\n };\n\n while (i--) {\n var _ret = _loop();\n\n if (_ret === 'continue') continue;\n }\n };\n\n SelectValueObserver.prototype.synchronizeValue = function synchronizeValue() {\n var _this23 = this;\n\n var options = this.element.options;\n var count = 0;\n var value = [];\n\n for (var i = 0, ii = options.length; i < ii; i++) {\n var _option = options.item(i);\n if (!_option.selected) {\n continue;\n }\n value.push(_option.hasOwnProperty('model') ? _option.model : _option.value);\n count++;\n }\n\n if (this.element.multiple) {\n if (Array.isArray(this.value)) {\n var _ret2 = function () {\n var matcher = _this23.element.matcher || function (a, b) {\n return a === b;\n };\n\n var i = 0;\n\n var _loop2 = function _loop2() {\n var a = _this23.value[i];\n if (value.findIndex(function (b) {\n return matcher(a, b);\n }) === -1) {\n _this23.value.splice(i, 1);\n } else {\n i++;\n }\n };\n\n while (i < _this23.value.length) {\n _loop2();\n }\n\n i = 0;\n\n var _loop3 = function _loop3() {\n var a = value[i];\n if (_this23.value.findIndex(function (b) {\n return matcher(a, b);\n }) === -1) {\n _this23.value.push(a);\n }\n i++;\n };\n\n while (i < value.length) {\n _loop3();\n }\n return {\n v: void 0\n };\n }();\n\n if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === \"object\") return _ret2.v;\n }\n } else {\n if (count === 0) {\n value = null;\n } else {\n value = value[0];\n }\n }\n\n if (value !== this.value) {\n this.oldValue = this.value;\n this.value = value;\n this.notify();\n }\n };\n\n SelectValueObserver.prototype.notify = function notify() {\n var oldValue = this.oldValue;\n var newValue = this.value;\n\n this.callSubscribers(newValue, oldValue);\n };\n\n SelectValueObserver.prototype.handleEvent = function handleEvent() {\n this.synchronizeValue();\n };\n\n SelectValueObserver.prototype.subscribe = function subscribe(context, callable) {\n if (!this.hasSubscribers()) {\n this.handler.subscribe(this.element, this);\n }\n this.addSubscriber(context, callable);\n };\n\n SelectValueObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n this.handler.dispose();\n }\n };\n\n SelectValueObserver.prototype.bind = function bind() {\n var _this24 = this;\n\n this.domObserver = DOM.createMutationObserver(function () {\n _this24.synchronizeOptions();\n _this24.synchronizeValue();\n });\n this.domObserver.observe(this.element, { childList: true, subtree: true, characterData: true });\n };\n\n SelectValueObserver.prototype.unbind = function unbind() {\n this.domObserver.disconnect();\n this.domObserver = null;\n\n if (this.arrayObserver) {\n this.arrayObserver.unsubscribe(selectArrayContext, this);\n this.arrayObserver = null;\n }\n };\n\n return SelectValueObserver;\n}()) || _class10);\n\nexport var ClassObserver = function () {\n function ClassObserver(element) {\n \n\n this.element = element;\n this.doNotCache = true;\n this.value = '';\n this.version = 0;\n }\n\n ClassObserver.prototype.getValue = function getValue() {\n return this.value;\n };\n\n ClassObserver.prototype.setValue = function setValue(newValue) {\n var nameIndex = this.nameIndex || {};\n var version = this.version;\n var names = void 0;\n var name = void 0;\n\n if (newValue !== null && newValue !== undefined && newValue.length) {\n names = newValue.split(/\\s+/);\n for (var i = 0, length = names.length; i < length; i++) {\n name = names[i];\n if (name === '') {\n continue;\n }\n nameIndex[name] = version;\n this.element.classList.add(name);\n }\n }\n\n this.value = newValue;\n this.nameIndex = nameIndex;\n this.version += 1;\n\n if (version === 0) {\n return;\n }\n\n version -= 1;\n for (name in nameIndex) {\n if (!nameIndex.hasOwnProperty(name) || nameIndex[name] !== version) {\n continue;\n }\n this.element.classList.remove(name);\n }\n };\n\n ClassObserver.prototype.subscribe = function subscribe() {\n throw new Error('Observation of a \"' + this.element.nodeName + '\" element\\'s \"class\" property is not supported.');\n };\n\n return ClassObserver;\n}();\n\nexport function hasDeclaredDependencies(descriptor) {\n return !!(descriptor && descriptor.get && descriptor.get.dependencies);\n}\n\nexport function declarePropertyDependencies(ctor, propertyName, dependencies) {\n var descriptor = Object.getOwnPropertyDescriptor(ctor.prototype, propertyName);\n descriptor.get.dependencies = dependencies;\n}\n\nexport function computedFrom() {\n for (var _len = arguments.length, rest = Array(_len), _key = 0; _key < _len; _key++) {\n rest[_key] = arguments[_key];\n }\n\n return function (target, key, descriptor) {\n descriptor.get.dependencies = rest;\n return descriptor;\n };\n}\n\nexport var ComputedExpression = function (_Expression19) {\n _inherits(ComputedExpression, _Expression19);\n\n function ComputedExpression(name, dependencies) {\n \n\n var _this25 = _possibleConstructorReturn(this, _Expression19.call(this));\n\n _this25.name = name;\n _this25.dependencies = dependencies;\n _this25.isAssignable = true;\n return _this25;\n }\n\n ComputedExpression.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n return scope.bindingContext[this.name];\n };\n\n ComputedExpression.prototype.assign = function assign(scope, value) {\n scope.bindingContext[this.name] = value;\n };\n\n ComputedExpression.prototype.accept = function accept(visitor) {\n throw new Error('not implemented');\n };\n\n ComputedExpression.prototype.connect = function connect(binding, scope) {\n var dependencies = this.dependencies;\n var i = dependencies.length;\n while (i--) {\n dependencies[i].connect(binding, scope);\n }\n };\n\n return ComputedExpression;\n}(Expression);\n\nexport function createComputedObserver(obj, propertyName, descriptor, observerLocator) {\n var dependencies = descriptor.get.dependencies;\n if (!(dependencies instanceof ComputedExpression)) {\n var i = dependencies.length;\n while (i--) {\n dependencies[i] = observerLocator.parser.parse(dependencies[i]);\n }\n dependencies = descriptor.get.dependencies = new ComputedExpression(propertyName, dependencies);\n }\n\n var scope = { bindingContext: obj, overrideContext: createOverrideContext(obj) };\n return new ExpressionObserver(scope, dependencies, observerLocator);\n}\n\nvar svgElements = void 0;\nvar svgPresentationElements = void 0;\nvar svgPresentationAttributes = void 0;\nvar svgAnalyzer = void 0;\n\nif (typeof FEATURE_NO_SVG === 'undefined') {\n svgElements = {\n a: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'target', 'transform', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n altGlyph: ['class', 'dx', 'dy', 'externalResourcesRequired', 'format', 'glyphRef', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n altGlyphDef: ['id', 'xml:base', 'xml:lang', 'xml:space'],\n altGlyphItem: ['id', 'xml:base', 'xml:lang', 'xml:space'],\n animate: ['accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n animateColor: ['accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n animateMotion: ['accumulate', 'additive', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keyPoints', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'origin', 'path', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'rotate', 'systemLanguage', 'to', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n animateTransform: ['accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'type', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n circle: ['class', 'cx', 'cy', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'r', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n clipPath: ['class', 'clipPathUnits', 'externalResourcesRequired', 'id', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n 'color-profile': ['id', 'local', 'name', 'rendering-intent', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n cursor: ['externalResourcesRequired', 'id', 'requiredExtensions', 'requiredFeatures', 'systemLanguage', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n defs: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n desc: ['class', 'id', 'style', 'xml:base', 'xml:lang', 'xml:space'],\n ellipse: ['class', 'cx', 'cy', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rx', 'ry', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n feBlend: ['class', 'height', 'id', 'in', 'in2', 'mode', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feColorMatrix: ['class', 'height', 'id', 'in', 'result', 'style', 'type', 'values', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feComponentTransfer: ['class', 'height', 'id', 'in', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feComposite: ['class', 'height', 'id', 'in', 'in2', 'k1', 'k2', 'k3', 'k4', 'operator', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feConvolveMatrix: ['bias', 'class', 'divisor', 'edgeMode', 'height', 'id', 'in', 'kernelMatrix', 'kernelUnitLength', 'order', 'preserveAlpha', 'result', 'style', 'targetX', 'targetY', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feDiffuseLighting: ['class', 'diffuseConstant', 'height', 'id', 'in', 'kernelUnitLength', 'result', 'style', 'surfaceScale', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feDisplacementMap: ['class', 'height', 'id', 'in', 'in2', 'result', 'scale', 'style', 'width', 'x', 'xChannelSelector', 'xml:base', 'xml:lang', 'xml:space', 'y', 'yChannelSelector'],\n feDistantLight: ['azimuth', 'elevation', 'id', 'xml:base', 'xml:lang', 'xml:space'],\n feFlood: ['class', 'height', 'id', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feFuncA: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n feFuncB: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n feFuncG: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n feFuncR: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n feGaussianBlur: ['class', 'height', 'id', 'in', 'result', 'stdDeviation', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feImage: ['class', 'externalResourcesRequired', 'height', 'id', 'preserveAspectRatio', 'result', 'style', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feMerge: ['class', 'height', 'id', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feMergeNode: ['id', 'xml:base', 'xml:lang', 'xml:space'],\n feMorphology: ['class', 'height', 'id', 'in', 'operator', 'radius', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feOffset: ['class', 'dx', 'dy', 'height', 'id', 'in', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n fePointLight: ['id', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y', 'z'],\n feSpecularLighting: ['class', 'height', 'id', 'in', 'kernelUnitLength', 'result', 'specularConstant', 'specularExponent', 'style', 'surfaceScale', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feSpotLight: ['id', 'limitingConeAngle', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'specularExponent', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y', 'z'],\n feTile: ['class', 'height', 'id', 'in', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n feTurbulence: ['baseFrequency', 'class', 'height', 'id', 'numOctaves', 'result', 'seed', 'stitchTiles', 'style', 'type', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n filter: ['class', 'externalResourcesRequired', 'filterRes', 'filterUnits', 'height', 'id', 'primitiveUnits', 'style', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n font: ['class', 'externalResourcesRequired', 'horiz-adv-x', 'horiz-origin-x', 'horiz-origin-y', 'id', 'style', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'xml:base', 'xml:lang', 'xml:space'],\n 'font-face': ['accent-height', 'alphabetic', 'ascent', 'bbox', 'cap-height', 'descent', 'font-family', 'font-size', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'hanging', 'id', 'ideographic', 'mathematical', 'overline-position', 'overline-thickness', 'panose-1', 'slope', 'stemh', 'stemv', 'strikethrough-position', 'strikethrough-thickness', 'underline-position', 'underline-thickness', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'widths', 'x-height', 'xml:base', 'xml:lang', 'xml:space'],\n 'font-face-format': ['id', 'string', 'xml:base', 'xml:lang', 'xml:space'],\n 'font-face-name': ['id', 'name', 'xml:base', 'xml:lang', 'xml:space'],\n 'font-face-src': ['id', 'xml:base', 'xml:lang', 'xml:space'],\n 'font-face-uri': ['id', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n foreignObject: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n g: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n glyph: ['arabic-form', 'class', 'd', 'glyph-name', 'horiz-adv-x', 'id', 'lang', 'orientation', 'style', 'unicode', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'xml:base', 'xml:lang', 'xml:space'],\n glyphRef: ['class', 'dx', 'dy', 'format', 'glyphRef', 'id', 'style', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n hkern: ['g1', 'g2', 'id', 'k', 'u1', 'u2', 'xml:base', 'xml:lang', 'xml:space'],\n image: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'preserveAspectRatio', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n line: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'x1', 'x2', 'xml:base', 'xml:lang', 'xml:space', 'y1', 'y2'],\n linearGradient: ['class', 'externalResourcesRequired', 'gradientTransform', 'gradientUnits', 'id', 'spreadMethod', 'style', 'x1', 'x2', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y1', 'y2'],\n marker: ['class', 'externalResourcesRequired', 'id', 'markerHeight', 'markerUnits', 'markerWidth', 'orient', 'preserveAspectRatio', 'refX', 'refY', 'style', 'viewBox', 'xml:base', 'xml:lang', 'xml:space'],\n mask: ['class', 'externalResourcesRequired', 'height', 'id', 'maskContentUnits', 'maskUnits', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n metadata: ['id', 'xml:base', 'xml:lang', 'xml:space'],\n 'missing-glyph': ['class', 'd', 'horiz-adv-x', 'id', 'style', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'xml:base', 'xml:lang', 'xml:space'],\n mpath: ['externalResourcesRequired', 'id', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n path: ['class', 'd', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'pathLength', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n pattern: ['class', 'externalResourcesRequired', 'height', 'id', 'patternContentUnits', 'patternTransform', 'patternUnits', 'preserveAspectRatio', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'viewBox', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n polygon: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'points', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n polyline: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'points', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n radialGradient: ['class', 'cx', 'cy', 'externalResourcesRequired', 'fx', 'fy', 'gradientTransform', 'gradientUnits', 'id', 'r', 'spreadMethod', 'style', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n rect: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rx', 'ry', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n script: ['externalResourcesRequired', 'id', 'type', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n set: ['attributeName', 'attributeType', 'begin', 'dur', 'end', 'externalResourcesRequired', 'fill', 'id', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n stop: ['class', 'id', 'offset', 'style', 'xml:base', 'xml:lang', 'xml:space'],\n style: ['id', 'media', 'title', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n svg: ['baseProfile', 'class', 'contentScriptType', 'contentStyleType', 'externalResourcesRequired', 'height', 'id', 'onabort', 'onactivate', 'onclick', 'onerror', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onresize', 'onscroll', 'onunload', 'onzoom', 'preserveAspectRatio', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'version', 'viewBox', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y', 'zoomAndPan'],\n switch: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n symbol: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'preserveAspectRatio', 'style', 'viewBox', 'xml:base', 'xml:lang', 'xml:space'],\n text: ['class', 'dx', 'dy', 'externalResourcesRequired', 'id', 'lengthAdjust', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'textLength', 'transform', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n textPath: ['class', 'externalResourcesRequired', 'id', 'lengthAdjust', 'method', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'spacing', 'startOffset', 'style', 'systemLanguage', 'textLength', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n title: ['class', 'id', 'style', 'xml:base', 'xml:lang', 'xml:space'],\n tref: ['class', 'dx', 'dy', 'externalResourcesRequired', 'id', 'lengthAdjust', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'textLength', 'x', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n tspan: ['class', 'dx', 'dy', 'externalResourcesRequired', 'id', 'lengthAdjust', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'textLength', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n use: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n view: ['externalResourcesRequired', 'id', 'preserveAspectRatio', 'viewBox', 'viewTarget', 'xml:base', 'xml:lang', 'xml:space', 'zoomAndPan'],\n vkern: ['g1', 'g2', 'id', 'k', 'u1', 'u2', 'xml:base', 'xml:lang', 'xml:space']\n };\n\n\n svgPresentationElements = {\n 'a': true,\n 'altGlyph': true,\n 'animate': true,\n 'animateColor': true,\n 'circle': true,\n 'clipPath': true,\n 'defs': true,\n 'ellipse': true,\n 'feBlend': true,\n 'feColorMatrix': true,\n 'feComponentTransfer': true,\n 'feComposite': true,\n 'feConvolveMatrix': true,\n 'feDiffuseLighting': true,\n 'feDisplacementMap': true,\n 'feFlood': true,\n 'feGaussianBlur': true,\n 'feImage': true,\n 'feMerge': true,\n 'feMorphology': true,\n 'feOffset': true,\n 'feSpecularLighting': true,\n 'feTile': true,\n 'feTurbulence': true,\n 'filter': true,\n 'font': true,\n 'foreignObject': true,\n 'g': true,\n 'glyph': true,\n 'glyphRef': true,\n 'image': true,\n 'line': true,\n 'linearGradient': true,\n 'marker': true,\n 'mask': true,\n 'missing-glyph': true,\n 'path': true,\n 'pattern': true,\n 'polygon': true,\n 'polyline': true,\n 'radialGradient': true,\n 'rect': true,\n 'stop': true,\n 'svg': true,\n 'switch': true,\n 'symbol': true,\n 'text': true,\n 'textPath': true,\n 'tref': true,\n 'tspan': true,\n 'use': true\n };\n\n svgPresentationAttributes = {\n 'alignment-baseline': true,\n 'baseline-shift': true,\n 'clip-path': true,\n 'clip-rule': true,\n 'clip': true,\n 'color-interpolation-filters': true,\n 'color-interpolation': true,\n 'color-profile': true,\n 'color-rendering': true,\n 'color': true,\n 'cursor': true,\n 'direction': true,\n 'display': true,\n 'dominant-baseline': true,\n 'enable-background': true,\n 'fill-opacity': true,\n 'fill-rule': true,\n 'fill': true,\n 'filter': true,\n 'flood-color': true,\n 'flood-opacity': true,\n 'font-family': true,\n 'font-size-adjust': true,\n 'font-size': true,\n 'font-stretch': true,\n 'font-style': true,\n 'font-variant': true,\n 'font-weight': true,\n 'glyph-orientation-horizontal': true,\n 'glyph-orientation-vertical': true,\n 'image-rendering': true,\n 'kerning': true,\n 'letter-spacing': true,\n 'lighting-color': true,\n 'marker-end': true,\n 'marker-mid': true,\n 'marker-start': true,\n 'mask': true,\n 'opacity': true,\n 'overflow': true,\n 'pointer-events': true,\n 'shape-rendering': true,\n 'stop-color': true,\n 'stop-opacity': true,\n 'stroke-dasharray': true,\n 'stroke-dashoffset': true,\n 'stroke-linecap': true,\n 'stroke-linejoin': true,\n 'stroke-miterlimit': true,\n 'stroke-opacity': true,\n 'stroke-width': true,\n 'stroke': true,\n 'text-anchor': true,\n 'text-decoration': true,\n 'text-rendering': true,\n 'unicode-bidi': true,\n 'visibility': true,\n 'word-spacing': true,\n 'writing-mode': true\n };\n\n var createElement = function createElement(html) {\n var div = DOM.createElement('div');\n div.innerHTML = html;\n return div.firstChild;\n };\n\n svgAnalyzer = function () {\n function SVGAnalyzer() {\n \n\n if (createElement('').firstElementChild.nodeName === 'altglyph' && elements.altGlyph) {\n elements.altglyph = elements.altGlyph;\n delete elements.altGlyph;\n elements.altglyphdef = elements.altGlyphDef;\n delete elements.altGlyphDef;\n elements.altglyphitem = elements.altGlyphItem;\n delete elements.altGlyphItem;\n elements.glyphref = elements.glyphRef;\n delete elements.glyphRef;\n }\n }\n\n SVGAnalyzer.prototype.isStandardSvgAttribute = function isStandardSvgAttribute(nodeName, attributeName) {\n return presentationElements[nodeName] && presentationAttributes[attributeName] || elements[nodeName] && elements[nodeName].indexOf(attributeName) !== -1;\n };\n\n return SVGAnalyzer;\n }();\n}\n\nexport var elements = svgElements;\nexport var presentationElements = svgPresentationElements;\nexport var presentationAttributes = svgPresentationAttributes;\nexport var SVGAnalyzer = svgAnalyzer || function () {\n function _class11() {\n \n }\n\n _class11.prototype.isStandardSvgAttribute = function isStandardSvgAttribute() {\n return false;\n };\n\n return _class11;\n}();\n\nexport var ObserverLocator = (_temp = _class12 = function () {\n function ObserverLocator(taskQueue, eventManager, dirtyChecker, svgAnalyzer, parser) {\n \n\n this.taskQueue = taskQueue;\n this.eventManager = eventManager;\n this.dirtyChecker = dirtyChecker;\n this.svgAnalyzer = svgAnalyzer;\n this.parser = parser;\n\n this.adapters = [];\n this.logger = LogManager.getLogger('observer-locator');\n }\n\n ObserverLocator.prototype.getObserver = function getObserver(obj, propertyName) {\n var observersLookup = obj.__observers__;\n var observer = void 0;\n\n if (observersLookup && propertyName in observersLookup) {\n return observersLookup[propertyName];\n }\n\n observer = this.createPropertyObserver(obj, propertyName);\n\n if (!observer.doNotCache) {\n if (observersLookup === undefined) {\n observersLookup = this.getOrCreateObserversLookup(obj);\n }\n\n observersLookup[propertyName] = observer;\n }\n\n return observer;\n };\n\n ObserverLocator.prototype.getOrCreateObserversLookup = function getOrCreateObserversLookup(obj) {\n return obj.__observers__ || this.createObserversLookup(obj);\n };\n\n ObserverLocator.prototype.createObserversLookup = function createObserversLookup(obj) {\n var value = {};\n\n if (!Reflect.defineProperty(obj, '__observers__', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: value\n })) {\n this.logger.warn('Cannot add observers to object', obj);\n }\n\n return value;\n };\n\n ObserverLocator.prototype.addAdapter = function addAdapter(adapter) {\n this.adapters.push(adapter);\n };\n\n ObserverLocator.prototype.getAdapterObserver = function getAdapterObserver(obj, propertyName, descriptor) {\n for (var i = 0, ii = this.adapters.length; i < ii; i++) {\n var adapter = this.adapters[i];\n var observer = adapter.getObserver(obj, propertyName, descriptor);\n if (observer) {\n return observer;\n }\n }\n return null;\n };\n\n ObserverLocator.prototype.createPropertyObserver = function createPropertyObserver(obj, propertyName) {\n var descriptor = void 0;\n var handler = void 0;\n var xlinkResult = void 0;\n\n if (!(obj instanceof Object)) {\n return new PrimitiveObserver(obj, propertyName);\n }\n\n if (obj instanceof DOM.Element) {\n if (propertyName === 'class') {\n return new ClassObserver(obj);\n }\n if (propertyName === 'style' || propertyName === 'css') {\n return new StyleObserver(obj, propertyName);\n }\n handler = this.eventManager.getElementHandler(obj, propertyName);\n if (propertyName === 'value' && obj.tagName.toLowerCase() === 'select') {\n return new SelectValueObserver(obj, handler, this);\n }\n if (propertyName === 'checked' && obj.tagName.toLowerCase() === 'input') {\n return new CheckedObserver(obj, handler, this);\n }\n if (handler) {\n return new ValueAttributeObserver(obj, propertyName, handler);\n }\n xlinkResult = /^xlink:(.+)$/.exec(propertyName);\n if (xlinkResult) {\n return new XLinkAttributeObserver(obj, propertyName, xlinkResult[1]);\n }\n if (propertyName === 'role' && (obj instanceof DOM.Element || obj instanceof DOM.SVGElement) || /^\\w+:|^data-|^aria-/.test(propertyName) || obj instanceof DOM.SVGElement && this.svgAnalyzer.isStandardSvgAttribute(obj.nodeName, propertyName)) {\n return new DataAttributeObserver(obj, propertyName);\n }\n }\n\n descriptor = Object.getPropertyDescriptor(obj, propertyName);\n\n if (hasDeclaredDependencies(descriptor)) {\n return createComputedObserver(obj, propertyName, descriptor, this);\n }\n\n if (descriptor) {\n var existingGetterOrSetter = descriptor.get || descriptor.set;\n if (existingGetterOrSetter) {\n if (existingGetterOrSetter.getObserver) {\n return existingGetterOrSetter.getObserver(obj);\n }\n\n var adapterObserver = this.getAdapterObserver(obj, propertyName, descriptor);\n if (adapterObserver) {\n return adapterObserver;\n }\n return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName);\n }\n }\n\n if (obj instanceof Array) {\n if (propertyName === 'length') {\n return this.getArrayObserver(obj).getLengthObserver();\n }\n\n return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName);\n } else if (obj instanceof Map) {\n if (propertyName === 'size') {\n return this.getMapObserver(obj).getLengthObserver();\n }\n\n return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName);\n } else if (obj instanceof Set) {\n if (propertyName === 'size') {\n return this.getSetObserver(obj).getLengthObserver();\n }\n\n return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName);\n }\n\n return new SetterObserver(this.taskQueue, obj, propertyName);\n };\n\n ObserverLocator.prototype.getAccessor = function getAccessor(obj, propertyName) {\n if (obj instanceof DOM.Element) {\n if (propertyName === 'class' || propertyName === 'style' || propertyName === 'css' || propertyName === 'value' && (obj.tagName.toLowerCase() === 'input' || obj.tagName.toLowerCase() === 'select') || propertyName === 'checked' && obj.tagName.toLowerCase() === 'input' || propertyName === 'model' && obj.tagName.toLowerCase() === 'input' || /^xlink:.+$/.exec(propertyName)) {\n return this.getObserver(obj, propertyName);\n }\n if (/^\\w+:|^data-|^aria-/.test(propertyName) || obj instanceof DOM.SVGElement && this.svgAnalyzer.isStandardSvgAttribute(obj.nodeName, propertyName) || obj.tagName.toLowerCase() === 'img' && propertyName === 'src' || obj.tagName.toLowerCase() === 'a' && propertyName === 'href') {\n return dataAttributeAccessor;\n }\n }\n return propertyAccessor;\n };\n\n ObserverLocator.prototype.getArrayObserver = function getArrayObserver(array) {\n return _getArrayObserver(this.taskQueue, array);\n };\n\n ObserverLocator.prototype.getMapObserver = function getMapObserver(map) {\n return _getMapObserver(this.taskQueue, map);\n };\n\n ObserverLocator.prototype.getSetObserver = function getSetObserver(set) {\n return _getSetObserver(this.taskQueue, set);\n };\n\n return ObserverLocator;\n}(), _class12.inject = [TaskQueue, EventManager, DirtyChecker, SVGAnalyzer, Parser], _temp);\n\nexport var ObjectObservationAdapter = function () {\n function ObjectObservationAdapter() {\n \n }\n\n ObjectObservationAdapter.prototype.getObserver = function getObserver(object, propertyName, descriptor) {\n throw new Error('BindingAdapters must implement getObserver(object, propertyName).');\n };\n\n return ObjectObservationAdapter;\n}();\n\nexport var BindingExpression = function () {\n function BindingExpression(observerLocator, targetProperty, sourceExpression, mode, lookupFunctions, attribute) {\n \n\n this.observerLocator = observerLocator;\n this.targetProperty = targetProperty;\n this.sourceExpression = sourceExpression;\n this.mode = mode;\n this.lookupFunctions = lookupFunctions;\n this.attribute = attribute;\n this.discrete = false;\n }\n\n BindingExpression.prototype.createBinding = function createBinding(target) {\n return new Binding(this.observerLocator, this.sourceExpression, target, this.targetProperty, this.mode, this.lookupFunctions);\n };\n\n return BindingExpression;\n}();\n\nexport var Binding = (_dec10 = connectable(), _dec10(_class13 = function () {\n function Binding(observerLocator, sourceExpression, target, targetProperty, mode, lookupFunctions) {\n \n\n this.observerLocator = observerLocator;\n this.sourceExpression = sourceExpression;\n this.target = target;\n this.targetProperty = targetProperty;\n this.mode = mode;\n this.lookupFunctions = lookupFunctions;\n }\n\n Binding.prototype.updateTarget = function updateTarget(value) {\n this.targetObserver.setValue(value, this.target, this.targetProperty);\n };\n\n Binding.prototype.updateSource = function updateSource(value) {\n this.sourceExpression.assign(this.source, value, this.lookupFunctions);\n };\n\n Binding.prototype.call = function call(context, newValue, oldValue) {\n if (!this.isBound) {\n return;\n }\n if (context === sourceContext) {\n oldValue = this.targetObserver.getValue(this.target, this.targetProperty);\n newValue = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n if (newValue !== oldValue) {\n this.updateTarget(newValue);\n }\n if (this.mode !== bindingMode.oneTime) {\n this._version++;\n this.sourceExpression.connect(this, this.source);\n this.unobserve(false);\n }\n return;\n }\n if (context === targetContext) {\n if (newValue !== this.sourceExpression.evaluate(this.source, this.lookupFunctions)) {\n this.updateSource(newValue);\n }\n return;\n }\n throw new Error('Unexpected call context ' + context);\n };\n\n Binding.prototype.bind = function bind(source) {\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n this.isBound = true;\n this.source = source;\n\n if (this.sourceExpression.bind) {\n this.sourceExpression.bind(this, source, this.lookupFunctions);\n }\n\n var mode = this.mode;\n if (!this.targetObserver) {\n var method = mode === bindingMode.twoWay || mode === bindingMode.fromView ? 'getObserver' : 'getAccessor';\n this.targetObserver = this.observerLocator[method](this.target, this.targetProperty);\n }\n\n if ('bind' in this.targetObserver) {\n this.targetObserver.bind();\n }\n if (this.mode !== bindingMode.fromView) {\n var value = this.sourceExpression.evaluate(source, this.lookupFunctions);\n this.updateTarget(value);\n }\n\n if (mode === bindingMode.oneTime) {\n return;\n } else if (mode === bindingMode.toView) {\n enqueueBindingConnect(this);\n } else if (mode === bindingMode.twoWay) {\n this.sourceExpression.connect(this, source);\n this.targetObserver.subscribe(targetContext, this);\n } else if (mode === bindingMode.fromView) {\n this.targetObserver.subscribe(targetContext, this);\n }\n };\n\n Binding.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n if (this.sourceExpression.unbind) {\n this.sourceExpression.unbind(this, this.source);\n }\n this.source = null;\n if ('unbind' in this.targetObserver) {\n this.targetObserver.unbind();\n }\n if (this.targetObserver.unsubscribe) {\n this.targetObserver.unsubscribe(targetContext, this);\n }\n this.unobserve(true);\n };\n\n Binding.prototype.connect = function connect(evaluate) {\n if (!this.isBound) {\n return;\n }\n if (evaluate) {\n var value = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n this.updateTarget(value);\n }\n this.sourceExpression.connect(this, this.source);\n };\n\n return Binding;\n}()) || _class13);\n\nexport var CallExpression = function () {\n function CallExpression(observerLocator, targetProperty, sourceExpression, lookupFunctions) {\n \n\n this.observerLocator = observerLocator;\n this.targetProperty = targetProperty;\n this.sourceExpression = sourceExpression;\n this.lookupFunctions = lookupFunctions;\n }\n\n CallExpression.prototype.createBinding = function createBinding(target) {\n return new Call(this.observerLocator, this.sourceExpression, target, this.targetProperty, this.lookupFunctions);\n };\n\n return CallExpression;\n}();\n\nexport var Call = function () {\n function Call(observerLocator, sourceExpression, target, targetProperty, lookupFunctions) {\n \n\n this.sourceExpression = sourceExpression;\n this.target = target;\n this.targetProperty = observerLocator.getObserver(target, targetProperty);\n this.lookupFunctions = lookupFunctions;\n }\n\n Call.prototype.callSource = function callSource($event) {\n var overrideContext = this.source.overrideContext;\n Object.assign(overrideContext, $event);\n overrideContext.$event = $event;\n var mustEvaluate = true;\n var result = this.sourceExpression.evaluate(this.source, this.lookupFunctions, mustEvaluate);\n delete overrideContext.$event;\n for (var prop in $event) {\n delete overrideContext[prop];\n }\n return result;\n };\n\n Call.prototype.bind = function bind(source) {\n var _this26 = this;\n\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n this.isBound = true;\n this.source = source;\n\n if (this.sourceExpression.bind) {\n this.sourceExpression.bind(this, source, this.lookupFunctions);\n }\n this.targetProperty.setValue(function ($event) {\n return _this26.callSource($event);\n });\n };\n\n Call.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n if (this.sourceExpression.unbind) {\n this.sourceExpression.unbind(this, this.source);\n }\n this.source = null;\n this.targetProperty.setValue(null);\n };\n\n return Call;\n}();\n\nexport var ValueConverterResource = function () {\n function ValueConverterResource(name) {\n \n\n this.name = name;\n }\n\n ValueConverterResource.convention = function convention(name) {\n if (name.endsWith('ValueConverter')) {\n return new ValueConverterResource(camelCase(name.substring(0, name.length - 14)));\n }\n };\n\n ValueConverterResource.prototype.initialize = function initialize(container, target) {\n this.instance = container.get(target);\n };\n\n ValueConverterResource.prototype.register = function register(registry, name) {\n registry.registerValueConverter(name || this.name, this.instance);\n };\n\n ValueConverterResource.prototype.load = function load(container, target) {};\n\n return ValueConverterResource;\n}();\n\nexport function valueConverter(nameOrTarget) {\n if (nameOrTarget === undefined || typeof nameOrTarget === 'string') {\n return function (target) {\n metadata.define(metadata.resource, new ValueConverterResource(nameOrTarget), target);\n };\n }\n\n metadata.define(metadata.resource, new ValueConverterResource(), nameOrTarget);\n}\n\nexport var BindingBehaviorResource = function () {\n function BindingBehaviorResource(name) {\n \n\n this.name = name;\n }\n\n BindingBehaviorResource.convention = function convention(name) {\n if (name.endsWith('BindingBehavior')) {\n return new BindingBehaviorResource(camelCase(name.substring(0, name.length - 15)));\n }\n };\n\n BindingBehaviorResource.prototype.initialize = function initialize(container, target) {\n this.instance = container.get(target);\n };\n\n BindingBehaviorResource.prototype.register = function register(registry, name) {\n registry.registerBindingBehavior(name || this.name, this.instance);\n };\n\n BindingBehaviorResource.prototype.load = function load(container, target) {};\n\n return BindingBehaviorResource;\n}();\n\nexport function bindingBehavior(nameOrTarget) {\n if (nameOrTarget === undefined || typeof nameOrTarget === 'string') {\n return function (target) {\n metadata.define(metadata.resource, new BindingBehaviorResource(nameOrTarget), target);\n };\n }\n\n metadata.define(metadata.resource, new BindingBehaviorResource(), nameOrTarget);\n}\n\nexport var ListenerExpression = function () {\n function ListenerExpression(eventManager, targetEvent, sourceExpression, delegationStrategy, preventDefault, lookupFunctions) {\n \n\n this.eventManager = eventManager;\n this.targetEvent = targetEvent;\n this.sourceExpression = sourceExpression;\n this.delegationStrategy = delegationStrategy;\n this.discrete = true;\n this.preventDefault = preventDefault;\n this.lookupFunctions = lookupFunctions;\n }\n\n ListenerExpression.prototype.createBinding = function createBinding(target) {\n return new Listener(this.eventManager, this.targetEvent, this.delegationStrategy, this.sourceExpression, target, this.preventDefault, this.lookupFunctions);\n };\n\n return ListenerExpression;\n}();\n\nexport var Listener = function () {\n function Listener(eventManager, targetEvent, delegationStrategy, sourceExpression, target, preventDefault, lookupFunctions) {\n \n\n this.eventManager = eventManager;\n this.targetEvent = targetEvent;\n this.delegationStrategy = delegationStrategy;\n this.sourceExpression = sourceExpression;\n this.target = target;\n this.preventDefault = preventDefault;\n this.lookupFunctions = lookupFunctions;\n }\n\n Listener.prototype.callSource = function callSource(event) {\n var overrideContext = this.source.overrideContext;\n overrideContext.$event = event;\n var mustEvaluate = true;\n var result = this.sourceExpression.evaluate(this.source, this.lookupFunctions, mustEvaluate);\n delete overrideContext.$event;\n if (result !== true && this.preventDefault) {\n event.preventDefault();\n }\n return result;\n };\n\n Listener.prototype.handleEvent = function handleEvent(event) {\n this.callSource(event);\n };\n\n Listener.prototype.bind = function bind(source) {\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n this.isBound = true;\n this.source = source;\n\n if (this.sourceExpression.bind) {\n this.sourceExpression.bind(this, source, this.lookupFunctions);\n }\n this._handler = this.eventManager.addEventListener(this.target, this.targetEvent, this, this.delegationStrategy, true);\n };\n\n Listener.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n if (this.sourceExpression.unbind) {\n this.sourceExpression.unbind(this, this.source);\n }\n this.source = null;\n this._handler.dispose();\n this._handler = null;\n };\n\n return Listener;\n}();\n\nfunction getAU(element) {\n var au = element.au;\n\n if (au === undefined) {\n throw new Error('No Aurelia APIs are defined for the element: \"' + element.tagName + '\".');\n }\n\n return au;\n}\n\nexport var NameExpression = function () {\n function NameExpression(sourceExpression, apiName, lookupFunctions) {\n \n\n this.sourceExpression = sourceExpression;\n this.apiName = apiName;\n this.lookupFunctions = lookupFunctions;\n this.discrete = true;\n }\n\n NameExpression.prototype.createBinding = function createBinding(target) {\n return new NameBinder(this.sourceExpression, NameExpression.locateAPI(target, this.apiName), this.lookupFunctions);\n };\n\n NameExpression.locateAPI = function locateAPI(element, apiName) {\n switch (apiName) {\n case 'element':\n return element;\n case 'controller':\n return getAU(element).controller;\n case 'view-model':\n return getAU(element).controller.viewModel;\n case 'view':\n return getAU(element).controller.view;\n default:\n var target = getAU(element)[apiName];\n\n if (target === undefined) {\n throw new Error('Attempted to reference \"' + apiName + '\", but it was not found amongst the target\\'s API.');\n }\n\n return target.viewModel;\n }\n };\n\n return NameExpression;\n}();\n\nvar NameBinder = function () {\n function NameBinder(sourceExpression, target, lookupFunctions) {\n \n\n this.sourceExpression = sourceExpression;\n this.target = target;\n this.lookupFunctions = lookupFunctions;\n }\n\n NameBinder.prototype.bind = function bind(source) {\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n this.isBound = true;\n this.source = source;\n if (this.sourceExpression.bind) {\n this.sourceExpression.bind(this, source, this.lookupFunctions);\n }\n this.sourceExpression.assign(this.source, this.target, this.lookupFunctions);\n };\n\n NameBinder.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n if (this.sourceExpression.evaluate(this.source, this.lookupFunctions) === this.target) {\n this.sourceExpression.assign(this.source, null, this.lookupFunctions);\n }\n if (this.sourceExpression.unbind) {\n this.sourceExpression.unbind(this, this.source);\n }\n this.source = null;\n };\n\n return NameBinder;\n}();\n\nvar LookupFunctions = {\n bindingBehaviors: function bindingBehaviors(name) {\n return null;\n },\n valueConverters: function valueConverters(name) {\n return null;\n }\n};\n\nexport var BindingEngine = (_temp2 = _class14 = function () {\n function BindingEngine(observerLocator, parser) {\n \n\n this.observerLocator = observerLocator;\n this.parser = parser;\n }\n\n BindingEngine.prototype.createBindingExpression = function createBindingExpression(targetProperty, sourceExpression) {\n var mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : bindingMode.toView;\n var lookupFunctions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : LookupFunctions;\n\n return new BindingExpression(this.observerLocator, targetProperty, this.parser.parse(sourceExpression), mode, lookupFunctions);\n };\n\n BindingEngine.prototype.propertyObserver = function propertyObserver(obj, propertyName) {\n var _this27 = this;\n\n return {\n subscribe: function subscribe(callback) {\n var observer = _this27.observerLocator.getObserver(obj, propertyName);\n observer.subscribe(callback);\n return {\n dispose: function dispose() {\n return observer.unsubscribe(callback);\n }\n };\n }\n };\n };\n\n BindingEngine.prototype.collectionObserver = function collectionObserver(collection) {\n var _this28 = this;\n\n return {\n subscribe: function subscribe(callback) {\n var observer = void 0;\n if (collection instanceof Array) {\n observer = _this28.observerLocator.getArrayObserver(collection);\n } else if (collection instanceof Map) {\n observer = _this28.observerLocator.getMapObserver(collection);\n } else if (collection instanceof Set) {\n observer = _this28.observerLocator.getSetObserver(collection);\n } else {\n throw new Error('collection must be an instance of Array, Map or Set.');\n }\n observer.subscribe(callback);\n return {\n dispose: function dispose() {\n return observer.unsubscribe(callback);\n }\n };\n }\n };\n };\n\n BindingEngine.prototype.expressionObserver = function expressionObserver(bindingContext, expression) {\n var scope = { bindingContext: bindingContext, overrideContext: createOverrideContext(bindingContext) };\n return new ExpressionObserver(scope, this.parser.parse(expression), this.observerLocator, LookupFunctions);\n };\n\n BindingEngine.prototype.parseExpression = function parseExpression(expression) {\n return this.parser.parse(expression);\n };\n\n BindingEngine.prototype.registerAdapter = function registerAdapter(adapter) {\n this.observerLocator.addAdapter(adapter);\n };\n\n return BindingEngine;\n}(), _class14.inject = [ObserverLocator, Parser], _temp2);\n\nvar setProto = Set.prototype;\n\nfunction _getSetObserver(taskQueue, set) {\n return ModifySetObserver.for(taskQueue, set);\n}\n\nvar ModifySetObserver = function (_ModifyCollectionObse3) {\n _inherits(ModifySetObserver, _ModifyCollectionObse3);\n\n function ModifySetObserver(taskQueue, set) {\n \n\n return _possibleConstructorReturn(this, _ModifyCollectionObse3.call(this, taskQueue, set));\n }\n\n ModifySetObserver.for = function _for(taskQueue, set) {\n if (!('__set_observer__' in set)) {\n Reflect.defineProperty(set, '__set_observer__', {\n value: ModifySetObserver.create(taskQueue, set),\n enumerable: false, configurable: false\n });\n }\n return set.__set_observer__;\n };\n\n ModifySetObserver.create = function create(taskQueue, set) {\n var observer = new ModifySetObserver(taskQueue, set);\n\n var proto = setProto;\n if (proto.add !== set.add || proto.delete !== set.delete || proto.clear !== set.clear) {\n proto = {\n add: set.add,\n delete: set.delete,\n clear: set.clear\n };\n }\n\n set.add = function () {\n var type = 'add';\n var oldSize = set.size;\n var methodCallResult = proto.add.apply(set, arguments);\n var hasValue = set.size === oldSize;\n if (!hasValue) {\n observer.addChangeRecord({\n type: type,\n object: set,\n value: Array.from(set).pop()\n });\n }\n return methodCallResult;\n };\n\n set.delete = function () {\n var hasValue = set.has(arguments[0]);\n var methodCallResult = proto.delete.apply(set, arguments);\n if (hasValue) {\n observer.addChangeRecord({\n type: 'delete',\n object: set,\n value: arguments[0]\n });\n }\n return methodCallResult;\n };\n\n set.clear = function () {\n var methodCallResult = proto.clear.apply(set, arguments);\n observer.addChangeRecord({\n type: 'clear',\n object: set\n });\n return methodCallResult;\n };\n\n return observer;\n };\n\n return ModifySetObserver;\n}(ModifyCollectionObserver);\n\nexport function observable(targetOrConfig, key, descriptor) {\n function deco(target, key, descriptor, config) {\n var isClassDecorator = key === undefined;\n if (isClassDecorator) {\n target = target.prototype;\n key = typeof config === 'string' ? config : config.name;\n }\n\n var innerPropertyName = '_' + key;\n var innerPropertyDescriptor = {\n configurable: true,\n enumerable: false,\n writable: true\n };\n\n var callbackName = config && config.changeHandler || key + 'Changed';\n\n if (descriptor) {\n if (typeof descriptor.initializer === 'function') {\n innerPropertyDescriptor.value = descriptor.initializer();\n }\n } else {\n descriptor = {};\n }\n\n if (!('enumerable' in descriptor)) {\n descriptor.enumerable = true;\n }\n\n delete descriptor.value;\n delete descriptor.writable;\n delete descriptor.initializer;\n\n Reflect.defineProperty(target, innerPropertyName, innerPropertyDescriptor);\n\n descriptor.get = function () {\n return this[innerPropertyName];\n };\n descriptor.set = function (newValue) {\n var oldValue = this[innerPropertyName];\n if (newValue === oldValue) {\n return;\n }\n\n this[innerPropertyName] = newValue;\n Reflect.defineProperty(this, innerPropertyName, { enumerable: false });\n\n if (this[callbackName]) {\n this[callbackName](newValue, oldValue, key);\n }\n };\n\n descriptor.get.dependencies = [innerPropertyName];\n\n if (isClassDecorator) {\n Reflect.defineProperty(target, key, descriptor);\n } else {\n return descriptor;\n }\n }\n\n if (key === undefined) {\n return function (t, k, d) {\n return deco(t, k, d, targetOrConfig);\n };\n }\n return deco(targetOrConfig, key, descriptor);\n}\n\nvar signals = {};\n\nexport function connectBindingToSignal(binding, name) {\n if (!signals.hasOwnProperty(name)) {\n signals[name] = 0;\n }\n binding.observeProperty(signals, name);\n}\n\nexport function signalBindings(name) {\n if (signals.hasOwnProperty(name)) {\n signals[name]++;\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-binding/dist/native-modules/aurelia-binding.js\n// module id = 6\n// module chunks = 2","var _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\nvar _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 _class, _temp, _class2, _temp2, _dec, _class3, _dec2, _class4, _dec3, _class5, _dec4, _class6, _dec5, _class7, _dec6, _class8, _class9, _temp3, _class10, _temp4, _class12, _class14, _temp5, _dec7, _class15, _dec8, _class16, _dec9, _class17;\n\n\n\nimport * as LogManager from 'aurelia-logging';\nimport { metadata, Origin, protocol } from 'aurelia-metadata';\nimport { DOM, PLATFORM, FEATURE } from 'aurelia-pal';\nimport { TemplateRegistryEntry, Loader } from 'aurelia-loader';\nimport { relativeToFile } from 'aurelia-path';\nimport { Scope, Expression, ValueConverterResource, BindingBehaviorResource, camelCase, Binding, createOverrideContext, subscriberCollection, bindingMode, ObserverLocator, EventManager } from 'aurelia-binding';\nimport { Container, resolver, inject } from 'aurelia-dependency-injection';\nimport { TaskQueue } from 'aurelia-task-queue';\n\nexport var animationEvent = {\n enterBegin: 'animation:enter:begin',\n enterActive: 'animation:enter:active',\n enterDone: 'animation:enter:done',\n enterTimeout: 'animation:enter:timeout',\n\n leaveBegin: 'animation:leave:begin',\n leaveActive: 'animation:leave:active',\n leaveDone: 'animation:leave:done',\n leaveTimeout: 'animation:leave:timeout',\n\n staggerNext: 'animation:stagger:next',\n\n removeClassBegin: 'animation:remove-class:begin',\n removeClassActive: 'animation:remove-class:active',\n removeClassDone: 'animation:remove-class:done',\n removeClassTimeout: 'animation:remove-class:timeout',\n\n addClassBegin: 'animation:add-class:begin',\n addClassActive: 'animation:add-class:active',\n addClassDone: 'animation:add-class:done',\n addClassTimeout: 'animation:add-class:timeout',\n\n animateBegin: 'animation:animate:begin',\n animateActive: 'animation:animate:active',\n animateDone: 'animation:animate:done',\n animateTimeout: 'animation:animate:timeout',\n\n sequenceBegin: 'animation:sequence:begin',\n sequenceDone: 'animation:sequence:done'\n};\n\nexport var Animator = function () {\n function Animator() {\n \n }\n\n Animator.prototype.enter = function enter(element) {\n return Promise.resolve(false);\n };\n\n Animator.prototype.leave = function leave(element) {\n return Promise.resolve(false);\n };\n\n Animator.prototype.removeClass = function removeClass(element, className) {\n element.classList.remove(className);\n return Promise.resolve(false);\n };\n\n Animator.prototype.addClass = function addClass(element, className) {\n element.classList.add(className);\n return Promise.resolve(false);\n };\n\n Animator.prototype.animate = function animate(element, className) {\n return Promise.resolve(false);\n };\n\n Animator.prototype.runSequence = function runSequence(animations) {};\n\n Animator.prototype.registerEffect = function registerEffect(effectName, properties) {};\n\n Animator.prototype.unregisterEffect = function unregisterEffect(effectName) {};\n\n return Animator;\n}();\n\nexport var CompositionTransactionNotifier = function () {\n function CompositionTransactionNotifier(owner) {\n \n\n this.owner = owner;\n this.owner._compositionCount++;\n }\n\n CompositionTransactionNotifier.prototype.done = function done() {\n this.owner._compositionCount--;\n this.owner._tryCompleteTransaction();\n };\n\n return CompositionTransactionNotifier;\n}();\n\nexport var CompositionTransactionOwnershipToken = function () {\n function CompositionTransactionOwnershipToken(owner) {\n \n\n this.owner = owner;\n this.owner._ownershipToken = this;\n this.thenable = this._createThenable();\n }\n\n CompositionTransactionOwnershipToken.prototype.waitForCompositionComplete = function waitForCompositionComplete() {\n this.owner._tryCompleteTransaction();\n return this.thenable;\n };\n\n CompositionTransactionOwnershipToken.prototype.resolve = function resolve() {\n this._resolveCallback();\n };\n\n CompositionTransactionOwnershipToken.prototype._createThenable = function _createThenable() {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n _this._resolveCallback = resolve;\n });\n };\n\n return CompositionTransactionOwnershipToken;\n}();\n\nexport var CompositionTransaction = function () {\n function CompositionTransaction() {\n \n\n this._ownershipToken = null;\n this._compositionCount = 0;\n }\n\n CompositionTransaction.prototype.tryCapture = function tryCapture() {\n return this._ownershipToken === null ? new CompositionTransactionOwnershipToken(this) : null;\n };\n\n CompositionTransaction.prototype.enlist = function enlist() {\n return new CompositionTransactionNotifier(this);\n };\n\n CompositionTransaction.prototype._tryCompleteTransaction = function _tryCompleteTransaction() {\n if (this._compositionCount <= 0) {\n this._compositionCount = 0;\n\n if (this._ownershipToken !== null) {\n var token = this._ownershipToken;\n this._ownershipToken = null;\n token.resolve();\n }\n }\n };\n\n return CompositionTransaction;\n}();\n\nvar capitalMatcher = /([A-Z])/g;\n\nfunction addHyphenAndLower(char) {\n return '-' + char.toLowerCase();\n}\n\nexport function _hyphenate(name) {\n return (name.charAt(0).toLowerCase() + name.slice(1)).replace(capitalMatcher, addHyphenAndLower);\n}\n\nexport function _isAllWhitespace(node) {\n return !(node.auInterpolationTarget || /[^\\t\\n\\r ]/.test(node.textContent));\n}\n\nexport var ViewEngineHooksResource = function () {\n function ViewEngineHooksResource() {\n \n }\n\n ViewEngineHooksResource.prototype.initialize = function initialize(container, target) {\n this.instance = container.get(target);\n };\n\n ViewEngineHooksResource.prototype.register = function register(registry, name) {\n registry.registerViewEngineHooks(this.instance);\n };\n\n ViewEngineHooksResource.prototype.load = function load(container, target) {};\n\n ViewEngineHooksResource.convention = function convention(name) {\n if (name.endsWith('ViewEngineHooks')) {\n return new ViewEngineHooksResource();\n }\n };\n\n return ViewEngineHooksResource;\n}();\n\nexport function viewEngineHooks(target) {\n var deco = function deco(t) {\n metadata.define(metadata.resource, new ViewEngineHooksResource(), t);\n };\n\n return target ? deco(target) : deco;\n}\n\nexport var ElementEvents = (_temp = _class = function () {\n function ElementEvents(element) {\n \n\n this.element = element;\n this.subscriptions = {};\n }\n\n ElementEvents.prototype._enqueueHandler = function _enqueueHandler(handler) {\n this.subscriptions[handler.eventName] = this.subscriptions[handler.eventName] || [];\n this.subscriptions[handler.eventName].push(handler);\n };\n\n ElementEvents.prototype._dequeueHandler = function _dequeueHandler(handler) {\n var index = void 0;\n var subscriptions = this.subscriptions[handler.eventName];\n if (subscriptions) {\n index = subscriptions.indexOf(handler);\n if (index > -1) {\n subscriptions.splice(index, 1);\n }\n }\n return handler;\n };\n\n ElementEvents.prototype.publish = function publish(eventName) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var cancelable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n var event = DOM.createCustomEvent(eventName, { cancelable: cancelable, bubbles: bubbles, detail: detail });\n this.element.dispatchEvent(event);\n };\n\n ElementEvents.prototype.subscribe = function subscribe(eventName, handler, captureOrOptions) {\n if (typeof handler === 'function') {\n if (captureOrOptions === undefined) {\n captureOrOptions = ElementEvents.defaultListenerOptions;\n }\n var eventHandler = new EventHandlerImpl(this, eventName, handler, captureOrOptions, false);\n return eventHandler;\n }\n\n return undefined;\n };\n\n ElementEvents.prototype.subscribeOnce = function subscribeOnce(eventName, handler, captureOrOptions) {\n if (typeof handler === 'function') {\n if (captureOrOptions === undefined) {\n captureOrOptions = ElementEvents.defaultListenerOptions;\n }\n var eventHandler = new EventHandlerImpl(this, eventName, handler, captureOrOptions, true);\n return eventHandler;\n }\n\n return undefined;\n };\n\n ElementEvents.prototype.dispose = function dispose(eventName) {\n if (eventName && typeof eventName === 'string') {\n var subscriptions = this.subscriptions[eventName];\n if (subscriptions) {\n while (subscriptions.length) {\n var subscription = subscriptions.pop();\n if (subscription) {\n subscription.dispose();\n }\n }\n }\n } else {\n this.disposeAll();\n }\n };\n\n ElementEvents.prototype.disposeAll = function disposeAll() {\n for (var _key in this.subscriptions) {\n this.dispose(_key);\n }\n };\n\n return ElementEvents;\n}(), _class.defaultListenerOptions = true, _temp);\n\nvar EventHandlerImpl = function () {\n function EventHandlerImpl(owner, eventName, handler, captureOrOptions, once) {\n \n\n this.owner = owner;\n this.eventName = eventName;\n this.handler = handler;\n\n this.capture = typeof captureOrOptions === 'boolean' ? captureOrOptions : captureOrOptions.capture;\n this.bubbles = !this.capture;\n this.captureOrOptions = captureOrOptions;\n this.once = once;\n owner.element.addEventListener(eventName, this, captureOrOptions);\n owner._enqueueHandler(this);\n }\n\n EventHandlerImpl.prototype.handleEvent = function handleEvent(e) {\n var fn = this.handler;\n fn(e);\n if (this.once) {\n this.dispose();\n }\n };\n\n EventHandlerImpl.prototype.dispose = function dispose() {\n this.owner.element.removeEventListener(this.eventName, this, this.captureOrOptions);\n this.owner._dequeueHandler(this);\n this.owner = this.handler = null;\n };\n\n return EventHandlerImpl;\n}();\n\nexport var ResourceLoadContext = function () {\n function ResourceLoadContext() {\n \n\n this.dependencies = {};\n }\n\n ResourceLoadContext.prototype.addDependency = function addDependency(url) {\n this.dependencies[url] = true;\n };\n\n ResourceLoadContext.prototype.hasDependency = function hasDependency(url) {\n return url in this.dependencies;\n };\n\n return ResourceLoadContext;\n}();\n\nexport var ViewCompileInstruction = function ViewCompileInstruction() {\n var targetShadowDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var compileSurrogate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n \n\n this.targetShadowDOM = targetShadowDOM;\n this.compileSurrogate = compileSurrogate;\n this.associatedModuleId = null;\n};\n\nViewCompileInstruction.normal = new ViewCompileInstruction();\n\nexport var BehaviorInstruction = function () {\n function BehaviorInstruction() {\n \n }\n\n BehaviorInstruction.enhance = function enhance() {\n var instruction = new BehaviorInstruction();\n instruction.enhance = true;\n return instruction;\n };\n\n BehaviorInstruction.unitTest = function unitTest(type, attributes) {\n var instruction = new BehaviorInstruction();\n instruction.type = type;\n instruction.attributes = attributes || {};\n return instruction;\n };\n\n BehaviorInstruction.element = function element(node, type) {\n var instruction = new BehaviorInstruction();\n instruction.type = type;\n instruction.attributes = {};\n instruction.anchorIsContainer = !(node.hasAttribute('containerless') || type.containerless);\n instruction.initiatedByBehavior = true;\n return instruction;\n };\n\n BehaviorInstruction.attribute = function attribute(attrName, type) {\n var instruction = new BehaviorInstruction();\n instruction.attrName = attrName;\n instruction.type = type || null;\n instruction.attributes = {};\n return instruction;\n };\n\n BehaviorInstruction.dynamic = function dynamic(host, viewModel, viewFactory) {\n var instruction = new BehaviorInstruction();\n instruction.host = host;\n instruction.viewModel = viewModel;\n instruction.viewFactory = viewFactory;\n instruction.inheritBindingContext = true;\n return instruction;\n };\n\n return BehaviorInstruction;\n}();\n\nvar biProto = BehaviorInstruction.prototype;\nbiProto.initiatedByBehavior = false;\nbiProto.enhance = false;\nbiProto.partReplacements = null;\nbiProto.viewFactory = null;\nbiProto.originalAttrName = null;\nbiProto.skipContentProcessing = false;\nbiProto.contentFactory = null;\nbiProto.viewModel = null;\nbiProto.anchorIsContainer = false;\nbiProto.host = null;\nbiProto.attributes = null;\nbiProto.type = null;\nbiProto.attrName = null;\nbiProto.inheritBindingContext = false;\n\nBehaviorInstruction.normal = new BehaviorInstruction();\n\nexport var TargetInstruction = (_temp2 = _class2 = function () {\n function TargetInstruction() {\n \n }\n\n TargetInstruction.shadowSlot = function shadowSlot(parentInjectorId) {\n var instruction = new TargetInstruction();\n instruction.parentInjectorId = parentInjectorId;\n instruction.shadowSlot = true;\n return instruction;\n };\n\n TargetInstruction.contentExpression = function contentExpression(expression) {\n var instruction = new TargetInstruction();\n instruction.contentExpression = expression;\n return instruction;\n };\n\n TargetInstruction.letElement = function letElement(expressions) {\n var instruction = new TargetInstruction();\n instruction.expressions = expressions;\n instruction.letElement = true;\n return instruction;\n };\n\n TargetInstruction.lifting = function lifting(parentInjectorId, liftingInstruction) {\n var instruction = new TargetInstruction();\n instruction.parentInjectorId = parentInjectorId;\n instruction.expressions = TargetInstruction.noExpressions;\n instruction.behaviorInstructions = [liftingInstruction];\n instruction.viewFactory = liftingInstruction.viewFactory;\n instruction.providers = [liftingInstruction.type.target];\n instruction.lifting = true;\n return instruction;\n };\n\n TargetInstruction.normal = function normal(injectorId, parentInjectorId, providers, behaviorInstructions, expressions, elementInstruction) {\n var instruction = new TargetInstruction();\n instruction.injectorId = injectorId;\n instruction.parentInjectorId = parentInjectorId;\n instruction.providers = providers;\n instruction.behaviorInstructions = behaviorInstructions;\n instruction.expressions = expressions;\n instruction.anchorIsContainer = elementInstruction ? elementInstruction.anchorIsContainer : true;\n instruction.elementInstruction = elementInstruction;\n return instruction;\n };\n\n TargetInstruction.surrogate = function surrogate(providers, behaviorInstructions, expressions, values) {\n var instruction = new TargetInstruction();\n instruction.expressions = expressions;\n instruction.behaviorInstructions = behaviorInstructions;\n instruction.providers = providers;\n instruction.values = values;\n return instruction;\n };\n\n return TargetInstruction;\n}(), _class2.noExpressions = Object.freeze([]), _temp2);\n\nvar tiProto = TargetInstruction.prototype;\n\ntiProto.injectorId = null;\ntiProto.parentInjectorId = null;\n\ntiProto.shadowSlot = false;\ntiProto.slotName = null;\ntiProto.slotFallbackFactory = null;\n\ntiProto.contentExpression = null;\ntiProto.letElement = false;\n\ntiProto.expressions = null;\ntiProto.expressions = null;\ntiProto.providers = null;\n\ntiProto.viewFactory = null;\n\ntiProto.anchorIsContainer = false;\ntiProto.elementInstruction = null;\ntiProto.lifting = false;\n\ntiProto.values = null;\n\nexport var viewStrategy = protocol.create('aurelia:view-strategy', {\n validate: function validate(target) {\n if (!(typeof target.loadViewFactory === 'function')) {\n return 'View strategies must implement: loadViewFactory(viewEngine: ViewEngine, compileInstruction: ViewCompileInstruction, loadContext?: ResourceLoadContext): Promise';\n }\n\n return true;\n },\n compose: function compose(target) {\n if (!(typeof target.makeRelativeTo === 'function')) {\n target.makeRelativeTo = PLATFORM.noop;\n }\n }\n});\n\nexport var RelativeViewStrategy = (_dec = viewStrategy(), _dec(_class3 = function () {\n function RelativeViewStrategy(path) {\n \n\n this.path = path;\n this.absolutePath = null;\n }\n\n RelativeViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n if (this.absolutePath === null && this.moduleId) {\n this.absolutePath = relativeToFile(this.path, this.moduleId);\n }\n\n compileInstruction.associatedModuleId = this.moduleId;\n return viewEngine.loadViewFactory(this.absolutePath || this.path, compileInstruction, loadContext, target);\n };\n\n RelativeViewStrategy.prototype.makeRelativeTo = function makeRelativeTo(file) {\n if (this.absolutePath === null) {\n this.absolutePath = relativeToFile(this.path, file);\n }\n };\n\n return RelativeViewStrategy;\n}()) || _class3);\n\nexport var ConventionalViewStrategy = (_dec2 = viewStrategy(), _dec2(_class4 = function () {\n function ConventionalViewStrategy(viewLocator, origin) {\n \n\n this.moduleId = origin.moduleId;\n this.viewUrl = viewLocator.convertOriginToViewUrl(origin);\n }\n\n ConventionalViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n compileInstruction.associatedModuleId = this.moduleId;\n return viewEngine.loadViewFactory(this.viewUrl, compileInstruction, loadContext, target);\n };\n\n return ConventionalViewStrategy;\n}()) || _class4);\n\nexport var NoViewStrategy = (_dec3 = viewStrategy(), _dec3(_class5 = function () {\n function NoViewStrategy(dependencies, dependencyBaseUrl) {\n \n\n this.dependencies = dependencies || null;\n this.dependencyBaseUrl = dependencyBaseUrl || '';\n }\n\n NoViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n var entry = this.entry;\n var dependencies = this.dependencies;\n\n if (entry && entry.factoryIsReady) {\n return Promise.resolve(null);\n }\n\n this.entry = entry = new TemplateRegistryEntry(this.moduleId || this.dependencyBaseUrl);\n\n entry.dependencies = [];\n entry.templateIsLoaded = true;\n\n if (dependencies !== null) {\n for (var i = 0, ii = dependencies.length; i < ii; ++i) {\n var current = dependencies[i];\n\n if (typeof current === 'string' || typeof current === 'function') {\n entry.addDependency(current);\n } else {\n entry.addDependency(current.from, current.as);\n }\n }\n }\n\n compileInstruction.associatedModuleId = this.moduleId;\n\n return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\n };\n\n return NoViewStrategy;\n}()) || _class5);\n\nexport var TemplateRegistryViewStrategy = (_dec4 = viewStrategy(), _dec4(_class6 = function () {\n function TemplateRegistryViewStrategy(moduleId, entry) {\n \n\n this.moduleId = moduleId;\n this.entry = entry;\n }\n\n TemplateRegistryViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n var entry = this.entry;\n\n if (entry.factoryIsReady) {\n return Promise.resolve(entry.factory);\n }\n\n compileInstruction.associatedModuleId = this.moduleId;\n return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\n };\n\n return TemplateRegistryViewStrategy;\n}()) || _class6);\n\nexport var InlineViewStrategy = (_dec5 = viewStrategy(), _dec5(_class7 = function () {\n function InlineViewStrategy(markup, dependencies, dependencyBaseUrl) {\n \n\n this.markup = markup;\n this.dependencies = dependencies || null;\n this.dependencyBaseUrl = dependencyBaseUrl || '';\n }\n\n InlineViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n var entry = this.entry;\n var dependencies = this.dependencies;\n\n if (entry && entry.factoryIsReady) {\n return Promise.resolve(entry.factory);\n }\n\n this.entry = entry = new TemplateRegistryEntry(this.moduleId || this.dependencyBaseUrl);\n entry.template = DOM.createTemplateFromMarkup(this.markup);\n\n if (dependencies !== null) {\n for (var i = 0, ii = dependencies.length; i < ii; ++i) {\n var current = dependencies[i];\n\n if (typeof current === 'string' || typeof current === 'function') {\n entry.addDependency(current);\n } else {\n entry.addDependency(current.from, current.as);\n }\n }\n }\n\n compileInstruction.associatedModuleId = this.moduleId;\n return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\n };\n\n return InlineViewStrategy;\n}()) || _class7);\n\nexport var StaticViewStrategy = (_dec6 = viewStrategy(), _dec6(_class8 = function () {\n function StaticViewStrategy(config) {\n \n\n if (typeof config === 'string' || config instanceof DOM.Element && config.tagName === 'TEMPLATE') {\n config = {\n template: config\n };\n }\n this.template = config.template;\n this.dependencies = config.dependencies || [];\n this.factoryIsReady = false;\n this.onReady = null;\n this.moduleId = 'undefined';\n }\n\n StaticViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n var _this2 = this;\n\n if (this.factoryIsReady) {\n return Promise.resolve(this.factory);\n }\n var deps = this.dependencies;\n deps = typeof deps === 'function' ? deps() : deps;\n deps = deps ? deps : [];\n deps = Array.isArray(deps) ? deps : [deps];\n\n return Promise.all(deps).then(function (dependencies) {\n var container = viewEngine.container;\n var appResources = viewEngine.appResources;\n var viewCompiler = viewEngine.viewCompiler;\n var viewResources = new ViewResources(appResources);\n\n var resource = void 0;\n var elDeps = [];\n\n if (target) {\n viewResources.autoRegister(container, target);\n }\n\n for (var _iterator = dependencies, _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 dep = _ref;\n\n if (typeof dep === 'function') {\n resource = viewResources.autoRegister(container, dep);\n if (resource.elementName !== null) {\n elDeps.push(resource);\n }\n } else if (dep && (typeof dep === 'undefined' ? 'undefined' : _typeof(dep)) === 'object') {\n for (var _key2 in dep) {\n var exported = dep[_key2];\n if (typeof exported === 'function') {\n resource = viewResources.autoRegister(container, exported);\n if (resource.elementName !== null) {\n elDeps.push(resource);\n }\n }\n }\n } else {\n throw new Error('dependency neither function nor object. Received: \"' + (typeof dep === 'undefined' ? 'undefined' : _typeof(dep)) + '\"');\n }\n }\n\n return Promise.all(elDeps.map(function (el) {\n return el.load(container, el.target);\n })).then(function () {\n var factory = _this2.template !== null ? viewCompiler.compile(_this2.template, viewResources, compileInstruction) : null;\n _this2.factoryIsReady = true;\n _this2.factory = factory;\n return factory;\n });\n });\n };\n\n return StaticViewStrategy;\n}()) || _class8);\n\nexport var ViewLocator = (_temp3 = _class9 = function () {\n function ViewLocator() {\n \n }\n\n ViewLocator.prototype.getViewStrategy = function getViewStrategy(value) {\n if (!value) {\n return null;\n }\n\n if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && 'getViewStrategy' in value) {\n var _origin = Origin.get(value.constructor);\n\n value = value.getViewStrategy();\n\n if (typeof value === 'string') {\n value = new RelativeViewStrategy(value);\n }\n\n viewStrategy.assert(value);\n\n if (_origin.moduleId) {\n value.makeRelativeTo(_origin.moduleId);\n }\n\n return value;\n }\n\n if (typeof value === 'string') {\n value = new RelativeViewStrategy(value);\n }\n\n if (viewStrategy.validate(value)) {\n return value;\n }\n\n if (typeof value !== 'function') {\n value = value.constructor;\n }\n\n if ('$view' in value) {\n var c = value.$view;\n var _view = void 0;\n c = typeof c === 'function' ? c.call(value) : c;\n if (c === null) {\n _view = new NoViewStrategy();\n } else {\n _view = c instanceof StaticViewStrategy ? c : new StaticViewStrategy(c);\n }\n metadata.define(ViewLocator.viewStrategyMetadataKey, _view, value);\n return _view;\n }\n\n var origin = Origin.get(value);\n var strategy = metadata.get(ViewLocator.viewStrategyMetadataKey, value);\n\n if (!strategy) {\n if (!origin.moduleId) {\n throw new Error('Cannot determine default view strategy for object.', value);\n }\n\n strategy = this.createFallbackViewStrategy(origin);\n } else if (origin.moduleId) {\n strategy.moduleId = origin.moduleId;\n }\n\n return strategy;\n };\n\n ViewLocator.prototype.createFallbackViewStrategy = function createFallbackViewStrategy(origin) {\n return new ConventionalViewStrategy(this, origin);\n };\n\n ViewLocator.prototype.convertOriginToViewUrl = function convertOriginToViewUrl(origin) {\n var moduleId = origin.moduleId;\n var id = moduleId.endsWith('.js') || moduleId.endsWith('.ts') ? moduleId.substring(0, moduleId.length - 3) : moduleId;\n return id + '.html';\n };\n\n return ViewLocator;\n}(), _class9.viewStrategyMetadataKey = 'aurelia:view-strategy', _temp3);\n\nfunction mi(name) {\n throw new Error('BindingLanguage must implement ' + name + '().');\n}\n\nexport var BindingLanguage = function () {\n function BindingLanguage() {\n \n }\n\n BindingLanguage.prototype.inspectAttribute = function inspectAttribute(resources, elementName, attrName, attrValue) {\n mi('inspectAttribute');\n };\n\n BindingLanguage.prototype.createAttributeInstruction = function createAttributeInstruction(resources, element, info, existingInstruction) {\n mi('createAttributeInstruction');\n };\n\n BindingLanguage.prototype.createLetExpressions = function createLetExpressions(resources, element) {\n mi('createLetExpressions');\n };\n\n BindingLanguage.prototype.inspectTextContent = function inspectTextContent(resources, value) {\n mi('inspectTextContent');\n };\n\n return BindingLanguage;\n}();\n\nvar noNodes = Object.freeze([]);\n\nexport var SlotCustomAttribute = function () {\n SlotCustomAttribute.inject = function inject() {\n return [DOM.Element];\n };\n\n function SlotCustomAttribute(element) {\n \n\n this.element = element;\n this.element.auSlotAttribute = this;\n }\n\n SlotCustomAttribute.prototype.valueChanged = function valueChanged(newValue, oldValue) {};\n\n return SlotCustomAttribute;\n}();\n\nexport var PassThroughSlot = function () {\n function PassThroughSlot(anchor, name, destinationName, fallbackFactory) {\n \n\n this.anchor = anchor;\n this.anchor.viewSlot = this;\n this.name = name;\n this.destinationName = destinationName;\n this.fallbackFactory = fallbackFactory;\n this.destinationSlot = null;\n\n this.projections = 0;\n\n this.contentView = null;\n\n var attr = new SlotCustomAttribute(this.anchor);\n attr.value = this.destinationName;\n }\n\n PassThroughSlot.prototype.renderFallbackContent = function renderFallbackContent(view, nodes, projectionSource, index) {\n if (this.contentView === null) {\n this.contentView = this.fallbackFactory.create(this.ownerView.container);\n this.contentView.bind(this.ownerView.bindingContext, this.ownerView.overrideContext);\n\n var slots = Object.create(null);\n slots[this.destinationSlot.name] = this.destinationSlot;\n\n ShadowDOM.distributeView(this.contentView, slots, projectionSource, index, this.destinationSlot.name);\n }\n };\n\n PassThroughSlot.prototype.passThroughTo = function passThroughTo(destinationSlot) {\n this.destinationSlot = destinationSlot;\n };\n\n PassThroughSlot.prototype.addNode = function addNode(view, node, projectionSource, index) {\n if (this.contentView !== null) {\n this.contentView.removeNodes();\n this.contentView.detached();\n this.contentView.unbind();\n this.contentView = null;\n }\n\n if (node.viewSlot instanceof PassThroughSlot) {\n node.viewSlot.passThroughTo(this);\n return;\n }\n\n this.projections++;\n this.destinationSlot.addNode(view, node, projectionSource, index);\n };\n\n PassThroughSlot.prototype.removeView = function removeView(view, projectionSource) {\n this.projections--;\n this.destinationSlot.removeView(view, projectionSource);\n\n if (this.needsFallbackRendering) {\n this.renderFallbackContent(null, noNodes, projectionSource);\n }\n };\n\n PassThroughSlot.prototype.removeAll = function removeAll(projectionSource) {\n this.projections = 0;\n this.destinationSlot.removeAll(projectionSource);\n\n if (this.needsFallbackRendering) {\n this.renderFallbackContent(null, noNodes, projectionSource);\n }\n };\n\n PassThroughSlot.prototype.projectFrom = function projectFrom(view, projectionSource) {\n this.destinationSlot.projectFrom(view, projectionSource);\n };\n\n PassThroughSlot.prototype.created = function created(ownerView) {\n this.ownerView = ownerView;\n };\n\n PassThroughSlot.prototype.bind = function bind(view) {\n if (this.contentView) {\n this.contentView.bind(view.bindingContext, view.overrideContext);\n }\n };\n\n PassThroughSlot.prototype.attached = function attached() {\n if (this.contentView) {\n this.contentView.attached();\n }\n };\n\n PassThroughSlot.prototype.detached = function detached() {\n if (this.contentView) {\n this.contentView.detached();\n }\n };\n\n PassThroughSlot.prototype.unbind = function unbind() {\n if (this.contentView) {\n this.contentView.unbind();\n }\n };\n\n _createClass(PassThroughSlot, [{\n key: 'needsFallbackRendering',\n get: function get() {\n return this.fallbackFactory && this.projections === 0;\n }\n }]);\n\n return PassThroughSlot;\n}();\n\nexport var ShadowSlot = function () {\n function ShadowSlot(anchor, name, fallbackFactory) {\n \n\n this.anchor = anchor;\n this.anchor.isContentProjectionSource = true;\n this.anchor.viewSlot = this;\n this.name = name;\n this.fallbackFactory = fallbackFactory;\n this.contentView = null;\n this.projections = 0;\n\n this.children = [];\n this.projectFromAnchors = null;\n this.destinationSlots = null;\n }\n\n ShadowSlot.prototype.addNode = function addNode(view, node, projectionSource, index, destination) {\n if (this.contentView !== null) {\n this.contentView.removeNodes();\n this.contentView.detached();\n this.contentView.unbind();\n this.contentView = null;\n }\n\n if (node.viewSlot instanceof PassThroughSlot) {\n node.viewSlot.passThroughTo(this);\n return;\n }\n\n if (this.destinationSlots !== null) {\n ShadowDOM.distributeNodes(view, [node], this.destinationSlots, this, index);\n } else {\n node.auOwnerView = view;\n node.auProjectionSource = projectionSource;\n node.auAssignedSlot = this;\n\n var anchor = this._findAnchor(view, node, projectionSource, index);\n var parent = anchor.parentNode;\n\n parent.insertBefore(node, anchor);\n this.children.push(node);\n this.projections++;\n }\n };\n\n ShadowSlot.prototype.removeView = function removeView(view, projectionSource) {\n if (this.destinationSlots !== null) {\n ShadowDOM.undistributeView(view, this.destinationSlots, this);\n } else if (this.contentView && this.contentView.hasSlots) {\n ShadowDOM.undistributeView(view, this.contentView.slots, projectionSource);\n } else {\n var found = this.children.find(function (x) {\n return x.auSlotProjectFrom === projectionSource;\n });\n if (found) {\n var _children = found.auProjectionChildren;\n var ownChildren = this.children;\n\n for (var i = 0, ii = _children.length; i < ii; ++i) {\n var _child = _children[i];\n\n if (_child.auOwnerView === view) {\n _children.splice(i, 1);\n view.fragment.appendChild(_child);\n i--;ii--;\n\n this.projections--;\n var idx = ownChildren.indexOf(_child);\n if (idx > -1) {\n ownChildren.splice(idx, 1);\n }\n }\n }\n\n if (this.needsFallbackRendering) {\n this.renderFallbackContent(view, noNodes, projectionSource);\n }\n }\n }\n };\n\n ShadowSlot.prototype.removeAll = function removeAll(projectionSource) {\n if (this.destinationSlots !== null) {\n ShadowDOM.undistributeAll(this.destinationSlots, this);\n } else if (this.contentView && this.contentView.hasSlots) {\n ShadowDOM.undistributeAll(this.contentView.slots, projectionSource);\n } else {\n var found = this.children.find(function (x) {\n return x.auSlotProjectFrom === projectionSource;\n });\n\n if (found) {\n var _children2 = found.auProjectionChildren;\n var ownChildren = this.children;\n\n for (var i = 0, ii = _children2.length; i < ii; ++i) {\n var _child2 = _children2[i];\n _child2.auOwnerView.fragment.appendChild(_child2);\n\n this.projections--;\n var idx = ownChildren.indexOf(_child2);\n if (idx > -1) {\n ownChildren.splice(idx, 1);\n }\n }\n\n found.auProjectionChildren = [];\n\n if (this.needsFallbackRendering) {\n this.renderFallbackContent(null, noNodes, projectionSource);\n }\n }\n }\n };\n\n ShadowSlot.prototype._findAnchor = function _findAnchor(view, node, projectionSource, index) {\n if (projectionSource) {\n var found = this.children.find(function (x) {\n return x.auSlotProjectFrom === projectionSource;\n });\n if (found) {\n if (index !== undefined) {\n var _children3 = found.auProjectionChildren;\n var viewIndex = -1;\n var lastView = void 0;\n\n for (var i = 0, ii = _children3.length; i < ii; ++i) {\n var current = _children3[i];\n\n if (current.auOwnerView !== lastView) {\n viewIndex++;\n lastView = current.auOwnerView;\n\n if (viewIndex >= index && lastView !== view) {\n _children3.splice(i, 0, node);\n return current;\n }\n }\n }\n }\n\n found.auProjectionChildren.push(node);\n return found;\n }\n }\n\n return this.anchor;\n };\n\n ShadowSlot.prototype.projectTo = function projectTo(slots) {\n this.destinationSlots = slots;\n };\n\n ShadowSlot.prototype.projectFrom = function projectFrom(view, projectionSource) {\n var anchor = DOM.createComment('anchor');\n var parent = this.anchor.parentNode;\n anchor.auSlotProjectFrom = projectionSource;\n anchor.auOwnerView = view;\n anchor.auProjectionChildren = [];\n parent.insertBefore(anchor, this.anchor);\n this.children.push(anchor);\n\n if (this.projectFromAnchors === null) {\n this.projectFromAnchors = [];\n }\n\n this.projectFromAnchors.push(anchor);\n };\n\n ShadowSlot.prototype.renderFallbackContent = function renderFallbackContent(view, nodes, projectionSource, index) {\n if (this.contentView === null) {\n this.contentView = this.fallbackFactory.create(this.ownerView.container);\n this.contentView.bind(this.ownerView.bindingContext, this.ownerView.overrideContext);\n this.contentView.insertNodesBefore(this.anchor);\n }\n\n if (this.contentView.hasSlots) {\n var slots = this.contentView.slots;\n var projectFromAnchors = this.projectFromAnchors;\n\n if (projectFromAnchors !== null) {\n for (var slotName in slots) {\n var slot = slots[slotName];\n\n for (var i = 0, ii = projectFromAnchors.length; i < ii; ++i) {\n var anchor = projectFromAnchors[i];\n slot.projectFrom(anchor.auOwnerView, anchor.auSlotProjectFrom);\n }\n }\n }\n\n this.fallbackSlots = slots;\n ShadowDOM.distributeNodes(view, nodes, slots, projectionSource, index);\n }\n };\n\n ShadowSlot.prototype.created = function created(ownerView) {\n this.ownerView = ownerView;\n };\n\n ShadowSlot.prototype.bind = function bind(view) {\n if (this.contentView) {\n this.contentView.bind(view.bindingContext, view.overrideContext);\n }\n };\n\n ShadowSlot.prototype.attached = function attached() {\n if (this.contentView) {\n this.contentView.attached();\n }\n };\n\n ShadowSlot.prototype.detached = function detached() {\n if (this.contentView) {\n this.contentView.detached();\n }\n };\n\n ShadowSlot.prototype.unbind = function unbind() {\n if (this.contentView) {\n this.contentView.unbind();\n }\n };\n\n _createClass(ShadowSlot, [{\n key: 'needsFallbackRendering',\n get: function get() {\n return this.fallbackFactory && this.projections === 0;\n }\n }]);\n\n return ShadowSlot;\n}();\n\nexport var ShadowDOM = (_temp4 = _class10 = function () {\n function ShadowDOM() {\n \n }\n\n ShadowDOM.getSlotName = function getSlotName(node) {\n if (node.auSlotAttribute === undefined) {\n return ShadowDOM.defaultSlotKey;\n }\n\n return node.auSlotAttribute.value;\n };\n\n ShadowDOM.distributeView = function distributeView(view, slots, projectionSource, index, destinationOverride) {\n var nodes = void 0;\n\n if (view === null) {\n nodes = noNodes;\n } else {\n var childNodes = view.fragment.childNodes;\n var ii = childNodes.length;\n nodes = new Array(ii);\n\n for (var i = 0; i < ii; ++i) {\n nodes[i] = childNodes[i];\n }\n }\n\n ShadowDOM.distributeNodes(view, nodes, slots, projectionSource, index, destinationOverride);\n };\n\n ShadowDOM.undistributeView = function undistributeView(view, slots, projectionSource) {\n for (var slotName in slots) {\n slots[slotName].removeView(view, projectionSource);\n }\n };\n\n ShadowDOM.undistributeAll = function undistributeAll(slots, projectionSource) {\n for (var slotName in slots) {\n slots[slotName].removeAll(projectionSource);\n }\n };\n\n ShadowDOM.distributeNodes = function distributeNodes(view, nodes, slots, projectionSource, index, destinationOverride) {\n for (var i = 0, ii = nodes.length; i < ii; ++i) {\n var currentNode = nodes[i];\n var nodeType = currentNode.nodeType;\n\n if (currentNode.isContentProjectionSource) {\n currentNode.viewSlot.projectTo(slots);\n\n for (var slotName in slots) {\n slots[slotName].projectFrom(view, currentNode.viewSlot);\n }\n\n nodes.splice(i, 1);\n ii--;i--;\n } else if (nodeType === 1 || nodeType === 3 || currentNode.viewSlot instanceof PassThroughSlot) {\n if (nodeType === 3 && _isAllWhitespace(currentNode)) {\n nodes.splice(i, 1);\n ii--;i--;\n } else {\n var found = slots[destinationOverride || ShadowDOM.getSlotName(currentNode)];\n\n if (found) {\n found.addNode(view, currentNode, projectionSource, index);\n nodes.splice(i, 1);\n ii--;i--;\n }\n }\n } else {\n nodes.splice(i, 1);\n ii--;i--;\n }\n }\n\n for (var _slotName in slots) {\n var slot = slots[_slotName];\n\n if (slot.needsFallbackRendering) {\n slot.renderFallbackContent(view, nodes, projectionSource, index);\n }\n }\n };\n\n return ShadowDOM;\n}(), _class10.defaultSlotKey = '__au-default-slot-key__', _temp4);\n\nfunction register(lookup, name, resource, type) {\n if (!name) {\n return;\n }\n\n var existing = lookup[name];\n if (existing) {\n if (existing !== resource) {\n throw new Error('Attempted to register ' + type + ' when one with the same name already exists. Name: ' + name + '.');\n }\n\n return;\n }\n\n lookup[name] = resource;\n}\n\nexport function validateBehaviorName(name, type) {\n if (/[A-Z]/.test(name)) {\n var newName = _hyphenate(name);\n LogManager.getLogger('templating').warn('\\'' + name + '\\' is not a valid ' + type + ' name and has been converted to \\'' + newName + '\\'. Upper-case letters are not allowed because the DOM is not case-sensitive.');\n return newName;\n }\n return name;\n}\n\nvar conventionMark = '__au_resource__';\n\nexport var ViewResources = function () {\n ViewResources.convention = function convention(target, existing) {\n var resource = void 0;\n\n if (existing && conventionMark in existing) {\n return existing;\n }\n if ('$resource' in target) {\n var config = target.$resource;\n\n if (typeof config === 'string') {\n resource = existing || new HtmlBehaviorResource();\n resource[conventionMark] = true;\n if (!resource.elementName) {\n resource.elementName = validateBehaviorName(config, 'custom element');\n }\n } else {\n if (typeof config === 'function') {\n config = config.call(target);\n }\n if (typeof config === 'string') {\n config = { name: config };\n }\n\n config = Object.assign({}, config);\n\n var resourceType = config.type || 'element';\n\n var _name = config.name;\n switch (resourceType) {\n case 'element':case 'attribute':\n resource = existing || new HtmlBehaviorResource();\n resource[conventionMark] = true;\n if (resourceType === 'element') {\n if (!resource.elementName) {\n resource.elementName = _name ? validateBehaviorName(_name, 'custom element') : _hyphenate(target.name);\n }\n } else {\n if (!resource.attributeName) {\n resource.attributeName = _name ? validateBehaviorName(_name, 'custom attribute') : _hyphenate(target.name);\n }\n }\n if ('templateController' in config) {\n config.liftsContent = config.templateController;\n delete config.templateController;\n }\n if ('defaultBindingMode' in config && resource.attributeDefaultBindingMode !== undefined) {\n config.attributeDefaultBindingMode = config.defaultBindingMode;\n delete config.defaultBindingMode;\n }\n\n delete config.name;\n\n Object.assign(resource, config);\n break;\n case 'valueConverter':\n resource = new ValueConverterResource(camelCase(_name || target.name));\n break;\n case 'bindingBehavior':\n resource = new BindingBehaviorResource(camelCase(_name || target.name));\n break;\n case 'viewEngineHooks':\n resource = new ViewEngineHooksResource();\n break;\n }\n }\n\n if (resource instanceof HtmlBehaviorResource) {\n var _bindables = typeof config === 'string' ? undefined : config.bindables;\n var currentProps = resource.properties;\n if (Array.isArray(_bindables)) {\n for (var i = 0, ii = _bindables.length; ii > i; ++i) {\n var prop = _bindables[i];\n if (!prop || typeof prop !== 'string' && !prop.name) {\n throw new Error('Invalid bindable property at \"' + i + '\" for class \"' + target.name + '\". Expected either a string or an object with \"name\" property.');\n }\n var newProp = new BindableProperty(prop);\n\n var existed = false;\n for (var j = 0, jj = currentProps.length; jj > j; ++j) {\n if (currentProps[j].name === newProp.name) {\n existed = true;\n break;\n }\n }\n if (existed) {\n continue;\n }\n newProp.registerWith(target, resource);\n }\n }\n }\n }\n return resource;\n };\n\n function ViewResources(parent, viewUrl) {\n \n\n this.bindingLanguage = null;\n\n this.parent = parent || null;\n this.hasParent = this.parent !== null;\n this.viewUrl = viewUrl || '';\n this.lookupFunctions = {\n valueConverters: this.getValueConverter.bind(this),\n bindingBehaviors: this.getBindingBehavior.bind(this)\n };\n this.attributes = Object.create(null);\n this.elements = Object.create(null);\n this.valueConverters = Object.create(null);\n this.bindingBehaviors = Object.create(null);\n this.attributeMap = Object.create(null);\n this.values = Object.create(null);\n this.beforeCompile = this.afterCompile = this.beforeCreate = this.afterCreate = this.beforeBind = this.beforeUnbind = false;\n }\n\n ViewResources.prototype._tryAddHook = function _tryAddHook(obj, name) {\n if (typeof obj[name] === 'function') {\n var func = obj[name].bind(obj);\n var counter = 1;\n var callbackName = void 0;\n\n while (this[callbackName = name + counter.toString()] !== undefined) {\n counter++;\n }\n\n this[name] = true;\n this[callbackName] = func;\n }\n };\n\n ViewResources.prototype._invokeHook = function _invokeHook(name, one, two, three, four) {\n if (this.hasParent) {\n this.parent._invokeHook(name, one, two, three, four);\n }\n\n if (this[name]) {\n this[name + '1'](one, two, three, four);\n\n var callbackName = name + '2';\n if (this[callbackName]) {\n this[callbackName](one, two, three, four);\n\n callbackName = name + '3';\n if (this[callbackName]) {\n this[callbackName](one, two, three, four);\n\n var counter = 4;\n\n while (this[callbackName = name + counter.toString()] !== undefined) {\n this[callbackName](one, two, three, four);\n counter++;\n }\n }\n }\n }\n };\n\n ViewResources.prototype.registerViewEngineHooks = function registerViewEngineHooks(hooks) {\n this._tryAddHook(hooks, 'beforeCompile');\n this._tryAddHook(hooks, 'afterCompile');\n this._tryAddHook(hooks, 'beforeCreate');\n this._tryAddHook(hooks, 'afterCreate');\n this._tryAddHook(hooks, 'beforeBind');\n this._tryAddHook(hooks, 'beforeUnbind');\n };\n\n ViewResources.prototype.getBindingLanguage = function getBindingLanguage(bindingLanguageFallback) {\n return this.bindingLanguage || (this.bindingLanguage = bindingLanguageFallback);\n };\n\n ViewResources.prototype.patchInParent = function patchInParent(newParent) {\n var originalParent = this.parent;\n\n this.parent = newParent || null;\n this.hasParent = this.parent !== null;\n\n if (newParent.parent === null) {\n newParent.parent = originalParent;\n newParent.hasParent = originalParent !== null;\n }\n };\n\n ViewResources.prototype.relativeToView = function relativeToView(path) {\n return relativeToFile(path, this.viewUrl);\n };\n\n ViewResources.prototype.registerElement = function registerElement(tagName, behavior) {\n register(this.elements, tagName, behavior, 'an Element');\n };\n\n ViewResources.prototype.getElement = function getElement(tagName) {\n return this.elements[tagName] || (this.hasParent ? this.parent.getElement(tagName) : null);\n };\n\n ViewResources.prototype.mapAttribute = function mapAttribute(attribute) {\n return this.attributeMap[attribute] || (this.hasParent ? this.parent.mapAttribute(attribute) : null);\n };\n\n ViewResources.prototype.registerAttribute = function registerAttribute(attribute, behavior, knownAttribute) {\n this.attributeMap[attribute] = knownAttribute;\n register(this.attributes, attribute, behavior, 'an Attribute');\n };\n\n ViewResources.prototype.getAttribute = function getAttribute(attribute) {\n return this.attributes[attribute] || (this.hasParent ? this.parent.getAttribute(attribute) : null);\n };\n\n ViewResources.prototype.registerValueConverter = function registerValueConverter(name, valueConverter) {\n register(this.valueConverters, name, valueConverter, 'a ValueConverter');\n };\n\n ViewResources.prototype.getValueConverter = function getValueConverter(name) {\n return this.valueConverters[name] || (this.hasParent ? this.parent.getValueConverter(name) : null);\n };\n\n ViewResources.prototype.registerBindingBehavior = function registerBindingBehavior(name, bindingBehavior) {\n register(this.bindingBehaviors, name, bindingBehavior, 'a BindingBehavior');\n };\n\n ViewResources.prototype.getBindingBehavior = function getBindingBehavior(name) {\n return this.bindingBehaviors[name] || (this.hasParent ? this.parent.getBindingBehavior(name) : null);\n };\n\n ViewResources.prototype.registerValue = function registerValue(name, value) {\n register(this.values, name, value, 'a value');\n };\n\n ViewResources.prototype.getValue = function getValue(name) {\n return this.values[name] || (this.hasParent ? this.parent.getValue(name) : null);\n };\n\n ViewResources.prototype.autoRegister = function autoRegister(container, impl) {\n var resourceTypeMeta = metadata.getOwn(metadata.resource, impl);\n if (resourceTypeMeta) {\n if (resourceTypeMeta instanceof HtmlBehaviorResource) {\n ViewResources.convention(impl, resourceTypeMeta);\n\n if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n HtmlBehaviorResource.convention(impl.name, resourceTypeMeta);\n }\n if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n resourceTypeMeta.elementName = _hyphenate(impl.name);\n }\n }\n } else {\n resourceTypeMeta = ViewResources.convention(impl) || HtmlBehaviorResource.convention(impl.name) || ValueConverterResource.convention(impl.name) || BindingBehaviorResource.convention(impl.name) || ViewEngineHooksResource.convention(impl.name);\n if (!resourceTypeMeta) {\n resourceTypeMeta = new HtmlBehaviorResource();\n resourceTypeMeta.elementName = _hyphenate(impl.name);\n }\n metadata.define(metadata.resource, resourceTypeMeta, impl);\n }\n resourceTypeMeta.initialize(container, impl);\n resourceTypeMeta.register(this);\n return resourceTypeMeta;\n };\n\n return ViewResources;\n}();\n\nexport var View = function () {\n function View(container, viewFactory, fragment, controllers, bindings, children, slots) {\n \n\n this.container = container;\n this.viewFactory = viewFactory;\n this.resources = viewFactory.resources;\n this.fragment = fragment;\n this.firstChild = fragment.firstChild;\n this.lastChild = fragment.lastChild;\n this.controllers = controllers;\n this.bindings = bindings;\n this.children = children;\n this.slots = slots;\n this.hasSlots = false;\n this.fromCache = false;\n this.isBound = false;\n this.isAttached = false;\n this.bindingContext = null;\n this.overrideContext = null;\n this.controller = null;\n this.viewModelScope = null;\n this.animatableElement = undefined;\n this._isUserControlled = false;\n this.contentView = null;\n\n for (var _key3 in slots) {\n this.hasSlots = true;\n break;\n }\n }\n\n View.prototype.returnToCache = function returnToCache() {\n this.viewFactory.returnViewToCache(this);\n };\n\n View.prototype.created = function created() {\n var i = void 0;\n var ii = void 0;\n var controllers = this.controllers;\n\n for (i = 0, ii = controllers.length; i < ii; ++i) {\n controllers[i].created(this);\n }\n };\n\n View.prototype.bind = function bind(bindingContext, overrideContext, _systemUpdate) {\n var controllers = void 0;\n var bindings = void 0;\n var children = void 0;\n var i = void 0;\n var ii = void 0;\n\n if (_systemUpdate && this._isUserControlled) {\n return;\n }\n\n if (this.isBound) {\n if (this.bindingContext === bindingContext) {\n return;\n }\n\n this.unbind();\n }\n\n this.isBound = true;\n this.bindingContext = bindingContext;\n this.overrideContext = overrideContext || createOverrideContext(bindingContext);\n\n this.resources._invokeHook('beforeBind', this);\n\n bindings = this.bindings;\n for (i = 0, ii = bindings.length; i < ii; ++i) {\n bindings[i].bind(this);\n }\n\n if (this.viewModelScope !== null) {\n bindingContext.bind(this.viewModelScope.bindingContext, this.viewModelScope.overrideContext);\n this.viewModelScope = null;\n }\n\n controllers = this.controllers;\n for (i = 0, ii = controllers.length; i < ii; ++i) {\n controllers[i].bind(this);\n }\n\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n children[i].bind(bindingContext, overrideContext, true);\n }\n\n if (this.hasSlots) {\n ShadowDOM.distributeView(this.contentView, this.slots);\n }\n };\n\n View.prototype.addBinding = function addBinding(binding) {\n this.bindings.push(binding);\n\n if (this.isBound) {\n binding.bind(this);\n }\n };\n\n View.prototype.unbind = function unbind() {\n var controllers = void 0;\n var bindings = void 0;\n var children = void 0;\n var i = void 0;\n var ii = void 0;\n\n if (this.isBound) {\n this.isBound = false;\n this.resources._invokeHook('beforeUnbind', this);\n\n if (this.controller !== null) {\n this.controller.unbind();\n }\n\n bindings = this.bindings;\n for (i = 0, ii = bindings.length; i < ii; ++i) {\n bindings[i].unbind();\n }\n\n controllers = this.controllers;\n for (i = 0, ii = controllers.length; i < ii; ++i) {\n controllers[i].unbind();\n }\n\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n children[i].unbind();\n }\n\n this.bindingContext = null;\n this.overrideContext = null;\n }\n };\n\n View.prototype.insertNodesBefore = function insertNodesBefore(refNode) {\n refNode.parentNode.insertBefore(this.fragment, refNode);\n };\n\n View.prototype.appendNodesTo = function appendNodesTo(parent) {\n parent.appendChild(this.fragment);\n };\n\n View.prototype.removeNodes = function removeNodes() {\n var fragment = this.fragment;\n var current = this.firstChild;\n var end = this.lastChild;\n var next = void 0;\n\n while (current) {\n next = current.nextSibling;\n fragment.appendChild(current);\n\n if (current === end) {\n break;\n }\n\n current = next;\n }\n };\n\n View.prototype.attached = function attached() {\n var controllers = void 0;\n var children = void 0;\n var i = void 0;\n var ii = void 0;\n\n if (this.isAttached) {\n return;\n }\n\n this.isAttached = true;\n\n if (this.controller !== null) {\n this.controller.attached();\n }\n\n controllers = this.controllers;\n for (i = 0, ii = controllers.length; i < ii; ++i) {\n controllers[i].attached();\n }\n\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n children[i].attached();\n }\n };\n\n View.prototype.detached = function detached() {\n var controllers = void 0;\n var children = void 0;\n var i = void 0;\n var ii = void 0;\n\n if (this.isAttached) {\n this.isAttached = false;\n\n if (this.controller !== null) {\n this.controller.detached();\n }\n\n controllers = this.controllers;\n for (i = 0, ii = controllers.length; i < ii; ++i) {\n controllers[i].detached();\n }\n\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n children[i].detached();\n }\n }\n };\n\n return View;\n}();\n\nfunction getAnimatableElement(view) {\n if (view.animatableElement !== undefined) {\n return view.animatableElement;\n }\n\n var current = view.firstChild;\n\n while (current && current.nodeType !== 1) {\n current = current.nextSibling;\n }\n\n if (current && current.nodeType === 1) {\n return view.animatableElement = current.classList.contains('au-animate') ? current : null;\n }\n\n return view.animatableElement = null;\n}\n\nexport var ViewSlot = function () {\n function ViewSlot(anchor, anchorIsContainer) {\n var animator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Animator.instance;\n\n \n\n this.anchor = anchor;\n this.anchorIsContainer = anchorIsContainer;\n this.bindingContext = null;\n this.overrideContext = null;\n this.animator = animator;\n this.children = [];\n this.isBound = false;\n this.isAttached = false;\n this.contentSelectors = null;\n anchor.viewSlot = this;\n anchor.isContentProjectionSource = false;\n }\n\n ViewSlot.prototype.animateView = function animateView(view) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'enter';\n\n var animatableElement = getAnimatableElement(view);\n\n if (animatableElement !== null) {\n switch (direction) {\n case 'enter':\n return this.animator.enter(animatableElement);\n case 'leave':\n return this.animator.leave(animatableElement);\n default:\n throw new Error('Invalid animation direction: ' + direction);\n }\n }\n };\n\n ViewSlot.prototype.transformChildNodesIntoView = function transformChildNodesIntoView() {\n var parent = this.anchor;\n\n this.children.push({\n fragment: parent,\n firstChild: parent.firstChild,\n lastChild: parent.lastChild,\n returnToCache: function returnToCache() {},\n removeNodes: function removeNodes() {\n var last = void 0;\n\n while (last = parent.lastChild) {\n parent.removeChild(last);\n }\n },\n created: function created() {},\n bind: function bind() {},\n unbind: function unbind() {},\n attached: function attached() {},\n detached: function detached() {}\n });\n };\n\n ViewSlot.prototype.bind = function bind(bindingContext, overrideContext) {\n var i = void 0;\n var ii = void 0;\n var children = void 0;\n\n if (this.isBound) {\n if (this.bindingContext === bindingContext) {\n return;\n }\n\n this.unbind();\n }\n\n this.isBound = true;\n this.bindingContext = bindingContext = bindingContext || this.bindingContext;\n this.overrideContext = overrideContext = overrideContext || this.overrideContext;\n\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n children[i].bind(bindingContext, overrideContext, true);\n }\n };\n\n ViewSlot.prototype.unbind = function unbind() {\n if (this.isBound) {\n var i = void 0;\n var ii = void 0;\n var _children4 = this.children;\n\n this.isBound = false;\n this.bindingContext = null;\n this.overrideContext = null;\n\n for (i = 0, ii = _children4.length; i < ii; ++i) {\n _children4[i].unbind();\n }\n }\n };\n\n ViewSlot.prototype.add = function add(view) {\n if (this.anchorIsContainer) {\n view.appendNodesTo(this.anchor);\n } else {\n view.insertNodesBefore(this.anchor);\n }\n\n this.children.push(view);\n\n if (this.isAttached) {\n view.attached();\n return this.animateView(view, 'enter');\n }\n };\n\n ViewSlot.prototype.insert = function insert(index, view) {\n var children = this.children;\n var length = children.length;\n\n if (index === 0 && length === 0 || index >= length) {\n return this.add(view);\n }\n\n view.insertNodesBefore(children[index].firstChild);\n children.splice(index, 0, view);\n\n if (this.isAttached) {\n view.attached();\n return this.animateView(view, 'enter');\n }\n };\n\n ViewSlot.prototype.move = function move(sourceIndex, targetIndex) {\n if (sourceIndex === targetIndex) {\n return;\n }\n\n var children = this.children;\n var view = children[sourceIndex];\n\n view.removeNodes();\n view.insertNodesBefore(children[targetIndex].firstChild);\n children.splice(sourceIndex, 1);\n children.splice(targetIndex, 0, view);\n };\n\n ViewSlot.prototype.remove = function remove(view, returnToCache, skipAnimation) {\n return this.removeAt(this.children.indexOf(view), returnToCache, skipAnimation);\n };\n\n ViewSlot.prototype.removeMany = function removeMany(viewsToRemove, returnToCache, skipAnimation) {\n var _this3 = this;\n\n var children = this.children;\n var ii = viewsToRemove.length;\n var i = void 0;\n var rmPromises = [];\n\n viewsToRemove.forEach(function (child) {\n if (skipAnimation) {\n child.removeNodes();\n return;\n }\n\n var animation = _this3.animateView(child, 'leave');\n if (animation) {\n rmPromises.push(animation.then(function () {\n return child.removeNodes();\n }));\n } else {\n child.removeNodes();\n }\n });\n\n var removeAction = function removeAction() {\n if (_this3.isAttached) {\n for (i = 0; i < ii; ++i) {\n viewsToRemove[i].detached();\n }\n }\n\n if (returnToCache) {\n for (i = 0; i < ii; ++i) {\n viewsToRemove[i].returnToCache();\n }\n }\n\n for (i = 0; i < ii; ++i) {\n var index = children.indexOf(viewsToRemove[i]);\n if (index >= 0) {\n children.splice(index, 1);\n }\n }\n };\n\n if (rmPromises.length > 0) {\n return Promise.all(rmPromises).then(function () {\n return removeAction();\n });\n }\n\n return removeAction();\n };\n\n ViewSlot.prototype.removeAt = function removeAt(index, returnToCache, skipAnimation) {\n var _this4 = this;\n\n var view = this.children[index];\n\n var removeAction = function removeAction() {\n index = _this4.children.indexOf(view);\n view.removeNodes();\n _this4.children.splice(index, 1);\n\n if (_this4.isAttached) {\n view.detached();\n }\n\n if (returnToCache) {\n view.returnToCache();\n }\n\n return view;\n };\n\n if (!skipAnimation) {\n var animation = this.animateView(view, 'leave');\n if (animation) {\n return animation.then(function () {\n return removeAction();\n });\n }\n }\n\n return removeAction();\n };\n\n ViewSlot.prototype.removeAll = function removeAll(returnToCache, skipAnimation) {\n var _this5 = this;\n\n var children = this.children;\n var ii = children.length;\n var i = void 0;\n var rmPromises = [];\n\n children.forEach(function (child) {\n if (skipAnimation) {\n child.removeNodes();\n return;\n }\n\n var animation = _this5.animateView(child, 'leave');\n if (animation) {\n rmPromises.push(animation.then(function () {\n return child.removeNodes();\n }));\n } else {\n child.removeNodes();\n }\n });\n\n var removeAction = function removeAction() {\n if (_this5.isAttached) {\n for (i = 0; i < ii; ++i) {\n children[i].detached();\n }\n }\n\n if (returnToCache) {\n for (i = 0; i < ii; ++i) {\n var _child3 = children[i];\n\n if (_child3) {\n _child3.returnToCache();\n }\n }\n }\n\n _this5.children = [];\n };\n\n if (rmPromises.length > 0) {\n return Promise.all(rmPromises).then(function () {\n return removeAction();\n });\n }\n\n return removeAction();\n };\n\n ViewSlot.prototype.attached = function attached() {\n var i = void 0;\n var ii = void 0;\n var children = void 0;\n var child = void 0;\n\n if (this.isAttached) {\n return;\n }\n\n this.isAttached = true;\n\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n child = children[i];\n child.attached();\n this.animateView(child, 'enter');\n }\n };\n\n ViewSlot.prototype.detached = function detached() {\n var i = void 0;\n var ii = void 0;\n var children = void 0;\n\n if (this.isAttached) {\n this.isAttached = false;\n children = this.children;\n for (i = 0, ii = children.length; i < ii; ++i) {\n children[i].detached();\n }\n }\n };\n\n ViewSlot.prototype.projectTo = function projectTo(slots) {\n var _this6 = this;\n\n this.projectToSlots = slots;\n this.add = this._projectionAdd;\n this.insert = this._projectionInsert;\n this.move = this._projectionMove;\n this.remove = this._projectionRemove;\n this.removeAt = this._projectionRemoveAt;\n this.removeMany = this._projectionRemoveMany;\n this.removeAll = this._projectionRemoveAll;\n this.children.forEach(function (view) {\n return ShadowDOM.distributeView(view, slots, _this6);\n });\n };\n\n ViewSlot.prototype._projectionAdd = function _projectionAdd(view) {\n ShadowDOM.distributeView(view, this.projectToSlots, this);\n\n this.children.push(view);\n\n if (this.isAttached) {\n view.attached();\n }\n };\n\n ViewSlot.prototype._projectionInsert = function _projectionInsert(index, view) {\n if (index === 0 && !this.children.length || index >= this.children.length) {\n this.add(view);\n } else {\n ShadowDOM.distributeView(view, this.projectToSlots, this, index);\n\n this.children.splice(index, 0, view);\n\n if (this.isAttached) {\n view.attached();\n }\n }\n };\n\n ViewSlot.prototype._projectionMove = function _projectionMove(sourceIndex, targetIndex) {\n if (sourceIndex === targetIndex) {\n return;\n }\n\n var children = this.children;\n var view = children[sourceIndex];\n\n ShadowDOM.undistributeView(view, this.projectToSlots, this);\n ShadowDOM.distributeView(view, this.projectToSlots, this, targetIndex);\n\n children.splice(sourceIndex, 1);\n children.splice(targetIndex, 0, view);\n };\n\n ViewSlot.prototype._projectionRemove = function _projectionRemove(view, returnToCache) {\n ShadowDOM.undistributeView(view, this.projectToSlots, this);\n this.children.splice(this.children.indexOf(view), 1);\n\n if (this.isAttached) {\n view.detached();\n }\n if (returnToCache) {\n view.returnToCache();\n }\n };\n\n ViewSlot.prototype._projectionRemoveAt = function _projectionRemoveAt(index, returnToCache) {\n var view = this.children[index];\n\n ShadowDOM.undistributeView(view, this.projectToSlots, this);\n this.children.splice(index, 1);\n\n if (this.isAttached) {\n view.detached();\n }\n if (returnToCache) {\n view.returnToCache();\n }\n };\n\n ViewSlot.prototype._projectionRemoveMany = function _projectionRemoveMany(viewsToRemove, returnToCache) {\n var _this7 = this;\n\n viewsToRemove.forEach(function (view) {\n return _this7.remove(view, returnToCache);\n });\n };\n\n ViewSlot.prototype._projectionRemoveAll = function _projectionRemoveAll(returnToCache) {\n ShadowDOM.undistributeAll(this.projectToSlots, this);\n\n var children = this.children;\n var ii = children.length;\n\n for (var i = 0; i < ii; ++i) {\n if (returnToCache) {\n children[i].returnToCache();\n } else if (this.isAttached) {\n children[i].detached();\n }\n }\n\n this.children = [];\n };\n\n return ViewSlot;\n}();\n\nvar ProviderResolver = resolver(_class12 = function () {\n function ProviderResolver() {\n \n }\n\n ProviderResolver.prototype.get = function get(container, key) {\n var id = key.__providerId__;\n return id in container ? container[id] : container[id] = container.invoke(key);\n };\n\n return ProviderResolver;\n}()) || _class12;\n\nvar providerResolverInstance = new ProviderResolver();\n\nfunction elementContainerGet(key) {\n if (key === DOM.Element) {\n return this.element;\n }\n\n if (key === BoundViewFactory) {\n if (this.boundViewFactory) {\n return this.boundViewFactory;\n }\n\n var factory = this.instruction.viewFactory;\n var _partReplacements = this.partReplacements;\n\n if (_partReplacements) {\n factory = _partReplacements[factory.part] || factory;\n }\n\n this.boundViewFactory = new BoundViewFactory(this, factory, _partReplacements);\n return this.boundViewFactory;\n }\n\n if (key === ViewSlot) {\n if (this.viewSlot === undefined) {\n this.viewSlot = new ViewSlot(this.element, this.instruction.anchorIsContainer);\n this.element.isContentProjectionSource = this.instruction.lifting;\n this.children.push(this.viewSlot);\n }\n\n return this.viewSlot;\n }\n\n if (key === ElementEvents) {\n return this.elementEvents || (this.elementEvents = new ElementEvents(this.element));\n }\n\n if (key === CompositionTransaction) {\n return this.compositionTransaction || (this.compositionTransaction = this.parent.get(key));\n }\n\n if (key === ViewResources) {\n return this.viewResources;\n }\n\n if (key === TargetInstruction) {\n return this.instruction;\n }\n\n return this.superGet(key);\n}\n\nfunction createElementContainer(parent, element, instruction, children, partReplacements, resources) {\n var container = parent.createChild();\n var providers = void 0;\n var i = void 0;\n\n container.element = element;\n container.instruction = instruction;\n container.children = children;\n container.viewResources = resources;\n container.partReplacements = partReplacements;\n\n providers = instruction.providers;\n i = providers.length;\n\n while (i--) {\n container._resolvers.set(providers[i], providerResolverInstance);\n }\n\n container.superGet = container.get;\n container.get = elementContainerGet;\n\n return container;\n}\n\nfunction hasAttribute(name) {\n return this._element.hasAttribute(name);\n}\n\nfunction getAttribute(name) {\n return this._element.getAttribute(name);\n}\n\nfunction setAttribute(name, value) {\n this._element.setAttribute(name, value);\n}\n\nfunction makeElementIntoAnchor(element, elementInstruction) {\n var anchor = DOM.createComment('anchor');\n\n if (elementInstruction) {\n var firstChild = element.firstChild;\n\n if (firstChild && firstChild.tagName === 'AU-CONTENT') {\n anchor.contentElement = firstChild;\n }\n\n anchor._element = element;\n\n anchor.hasAttribute = hasAttribute;\n anchor.getAttribute = getAttribute;\n anchor.setAttribute = setAttribute;\n }\n\n DOM.replaceNode(anchor, element);\n\n return anchor;\n}\n\nfunction applyInstructions(containers, element, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources) {\n var behaviorInstructions = instruction.behaviorInstructions;\n var expressions = instruction.expressions;\n var elementContainer = void 0;\n var i = void 0;\n var ii = void 0;\n var current = void 0;\n var instance = void 0;\n\n if (instruction.contentExpression) {\n bindings.push(instruction.contentExpression.createBinding(element.nextSibling));\n element.nextSibling.auInterpolationTarget = true;\n element.parentNode.removeChild(element);\n return;\n }\n\n if (instruction.shadowSlot) {\n var commentAnchor = DOM.createComment('slot');\n var slot = void 0;\n\n if (instruction.slotDestination) {\n slot = new PassThroughSlot(commentAnchor, instruction.slotName, instruction.slotDestination, instruction.slotFallbackFactory);\n } else {\n slot = new ShadowSlot(commentAnchor, instruction.slotName, instruction.slotFallbackFactory);\n }\n\n DOM.replaceNode(commentAnchor, element);\n shadowSlots[instruction.slotName] = slot;\n controllers.push(slot);\n return;\n }\n\n if (instruction.letElement) {\n for (i = 0, ii = expressions.length; i < ii; ++i) {\n bindings.push(expressions[i].createBinding());\n }\n element.parentNode.removeChild(element);\n return;\n }\n\n if (behaviorInstructions.length) {\n if (!instruction.anchorIsContainer) {\n element = makeElementIntoAnchor(element, instruction.elementInstruction);\n }\n\n containers[instruction.injectorId] = elementContainer = createElementContainer(containers[instruction.parentInjectorId], element, instruction, children, partReplacements, resources);\n\n for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\n current = behaviorInstructions[i];\n instance = current.type.create(elementContainer, current, element, bindings);\n controllers.push(instance);\n }\n }\n\n for (i = 0, ii = expressions.length; i < ii; ++i) {\n bindings.push(expressions[i].createBinding(element));\n }\n}\n\nfunction styleStringToObject(style, target) {\n var attributes = style.split(';');\n var firstIndexOfColon = void 0;\n var i = void 0;\n var current = void 0;\n var key = void 0;\n var value = void 0;\n\n target = target || {};\n\n for (i = 0; i < attributes.length; i++) {\n current = attributes[i];\n firstIndexOfColon = current.indexOf(':');\n key = current.substring(0, firstIndexOfColon).trim();\n value = current.substring(firstIndexOfColon + 1).trim();\n target[key] = value;\n }\n\n return target;\n}\n\nfunction styleObjectToString(obj) {\n var result = '';\n\n for (var _key4 in obj) {\n result += _key4 + ':' + obj[_key4] + ';';\n }\n\n return result;\n}\n\nfunction applySurrogateInstruction(container, element, instruction, controllers, bindings, children) {\n var behaviorInstructions = instruction.behaviorInstructions;\n var expressions = instruction.expressions;\n var providers = instruction.providers;\n var values = instruction.values;\n var i = void 0;\n var ii = void 0;\n var current = void 0;\n var instance = void 0;\n var currentAttributeValue = void 0;\n\n i = providers.length;\n while (i--) {\n container._resolvers.set(providers[i], providerResolverInstance);\n }\n\n for (var _key5 in values) {\n currentAttributeValue = element.getAttribute(_key5);\n\n if (currentAttributeValue) {\n if (_key5 === 'class') {\n element.setAttribute('class', currentAttributeValue + ' ' + values[_key5]);\n } else if (_key5 === 'style') {\n var styleObject = styleStringToObject(values[_key5]);\n styleStringToObject(currentAttributeValue, styleObject);\n element.setAttribute('style', styleObjectToString(styleObject));\n }\n } else {\n element.setAttribute(_key5, values[_key5]);\n }\n }\n\n if (behaviorInstructions.length) {\n for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\n current = behaviorInstructions[i];\n instance = current.type.create(container, current, element, bindings);\n\n if (instance.contentView) {\n children.push(instance.contentView);\n }\n\n controllers.push(instance);\n }\n }\n\n for (i = 0, ii = expressions.length; i < ii; ++i) {\n bindings.push(expressions[i].createBinding(element));\n }\n}\n\nexport var BoundViewFactory = function () {\n function BoundViewFactory(parentContainer, viewFactory, partReplacements) {\n \n\n this.parentContainer = parentContainer;\n this.viewFactory = viewFactory;\n this.factoryCreateInstruction = { partReplacements: partReplacements };\n }\n\n BoundViewFactory.prototype.create = function create() {\n var view = this.viewFactory.create(this.parentContainer.createChild(), this.factoryCreateInstruction);\n view._isUserControlled = true;\n return view;\n };\n\n BoundViewFactory.prototype.setCacheSize = function setCacheSize(size, doNotOverrideIfAlreadySet) {\n this.viewFactory.setCacheSize(size, doNotOverrideIfAlreadySet);\n };\n\n BoundViewFactory.prototype.getCachedView = function getCachedView() {\n return this.viewFactory.getCachedView();\n };\n\n BoundViewFactory.prototype.returnViewToCache = function returnViewToCache(view) {\n this.viewFactory.returnViewToCache(view);\n };\n\n _createClass(BoundViewFactory, [{\n key: 'isCaching',\n get: function get() {\n return this.viewFactory.isCaching;\n }\n }]);\n\n return BoundViewFactory;\n}();\n\nexport var ViewFactory = function () {\n function ViewFactory(template, instructions, resources) {\n \n\n this.isCaching = false;\n\n this.template = template;\n this.instructions = instructions;\n this.resources = resources;\n this.cacheSize = -1;\n this.cache = null;\n }\n\n ViewFactory.prototype.setCacheSize = function setCacheSize(size, doNotOverrideIfAlreadySet) {\n if (size) {\n if (size === '*') {\n size = Number.MAX_VALUE;\n } else if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n }\n\n if (this.cacheSize === -1 || !doNotOverrideIfAlreadySet) {\n this.cacheSize = size;\n }\n\n if (this.cacheSize > 0) {\n this.cache = [];\n } else {\n this.cache = null;\n }\n\n this.isCaching = this.cacheSize > 0;\n };\n\n ViewFactory.prototype.getCachedView = function getCachedView() {\n return this.cache !== null ? this.cache.pop() || null : null;\n };\n\n ViewFactory.prototype.returnViewToCache = function returnViewToCache(view) {\n if (view.isAttached) {\n view.detached();\n }\n\n if (view.isBound) {\n view.unbind();\n }\n\n if (this.cache !== null && this.cache.length < this.cacheSize) {\n view.fromCache = true;\n this.cache.push(view);\n }\n };\n\n ViewFactory.prototype.create = function create(container, createInstruction, element) {\n createInstruction = createInstruction || BehaviorInstruction.normal;\n\n var cachedView = this.getCachedView();\n if (cachedView !== null) {\n return cachedView;\n }\n\n var fragment = createInstruction.enhance ? this.template : this.template.cloneNode(true);\n var instructables = fragment.querySelectorAll('.au-target');\n var instructions = this.instructions;\n var resources = this.resources;\n var controllers = [];\n var bindings = [];\n var children = [];\n var shadowSlots = Object.create(null);\n var containers = { root: container };\n var partReplacements = createInstruction.partReplacements;\n var i = void 0;\n var ii = void 0;\n var view = void 0;\n var instructable = void 0;\n var instruction = void 0;\n\n this.resources._invokeHook('beforeCreate', this, container, fragment, createInstruction);\n\n if (element && this.surrogateInstruction !== null) {\n applySurrogateInstruction(container, element, this.surrogateInstruction, controllers, bindings, children);\n }\n\n if (createInstruction.enhance && fragment.hasAttribute('au-target-id')) {\n instructable = fragment;\n instruction = instructions[instructable.getAttribute('au-target-id')];\n applyInstructions(containers, instructable, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources);\n }\n\n for (i = 0, ii = instructables.length; i < ii; ++i) {\n instructable = instructables[i];\n instruction = instructions[instructable.getAttribute('au-target-id')];\n applyInstructions(containers, instructable, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources);\n }\n\n view = new View(container, this, fragment, controllers, bindings, children, shadowSlots);\n\n if (!createInstruction.initiatedByBehavior) {\n view.created();\n }\n\n this.resources._invokeHook('afterCreate', view);\n\n return view;\n };\n\n return ViewFactory;\n}();\n\nvar nextInjectorId = 0;\nfunction getNextInjectorId() {\n return ++nextInjectorId;\n}\n\nvar lastAUTargetID = 0;\nfunction getNextAUTargetID() {\n return (++lastAUTargetID).toString();\n}\n\nfunction makeIntoInstructionTarget(element) {\n var value = element.getAttribute('class');\n var auTargetID = getNextAUTargetID();\n\n element.setAttribute('class', value ? value + ' au-target' : 'au-target');\n element.setAttribute('au-target-id', auTargetID);\n\n return auTargetID;\n}\n\nfunction makeShadowSlot(compiler, resources, node, instructions, parentInjectorId) {\n var auShadowSlot = DOM.createElement('au-shadow-slot');\n DOM.replaceNode(auShadowSlot, node);\n\n var auTargetID = makeIntoInstructionTarget(auShadowSlot);\n var instruction = TargetInstruction.shadowSlot(parentInjectorId);\n\n instruction.slotName = node.getAttribute('name') || ShadowDOM.defaultSlotKey;\n instruction.slotDestination = node.getAttribute('slot');\n\n if (node.innerHTML.trim()) {\n var fragment = DOM.createDocumentFragment();\n var _child4 = void 0;\n\n while (_child4 = node.firstChild) {\n fragment.appendChild(_child4);\n }\n\n instruction.slotFallbackFactory = compiler.compile(fragment, resources);\n }\n\n instructions[auTargetID] = instruction;\n\n return auShadowSlot;\n}\n\nvar defaultLetHandler = BindingLanguage.prototype.createLetExpressions;\n\nexport var ViewCompiler = function () {\n ViewCompiler.inject = function inject() {\n return [BindingLanguage, ViewResources];\n };\n\n function ViewCompiler(bindingLanguage, resources) {\n \n\n this.bindingLanguage = bindingLanguage;\n this.resources = resources;\n }\n\n ViewCompiler.prototype.compile = function compile(source, resources, compileInstruction) {\n resources = resources || this.resources;\n compileInstruction = compileInstruction || ViewCompileInstruction.normal;\n source = typeof source === 'string' ? DOM.createTemplateFromMarkup(source) : source;\n\n var content = void 0;\n var part = void 0;\n var cacheSize = void 0;\n\n if (source.content) {\n part = source.getAttribute('part');\n cacheSize = source.getAttribute('view-cache');\n content = DOM.adoptNode(source.content);\n } else {\n content = source;\n }\n\n compileInstruction.targetShadowDOM = compileInstruction.targetShadowDOM && FEATURE.shadowDOM;\n resources._invokeHook('beforeCompile', content, resources, compileInstruction);\n\n var instructions = {};\n this._compileNode(content, resources, instructions, source, 'root', !compileInstruction.targetShadowDOM);\n\n var firstChild = content.firstChild;\n if (firstChild && firstChild.nodeType === 1) {\n var targetId = firstChild.getAttribute('au-target-id');\n if (targetId) {\n var ins = instructions[targetId];\n\n if (ins.shadowSlot || ins.lifting || ins.elementInstruction && !ins.elementInstruction.anchorIsContainer) {\n content.insertBefore(DOM.createComment('view'), firstChild);\n }\n }\n }\n\n var factory = new ViewFactory(content, instructions, resources);\n\n factory.surrogateInstruction = compileInstruction.compileSurrogate ? this._compileSurrogate(source, resources) : null;\n factory.part = part;\n\n if (cacheSize) {\n factory.setCacheSize(cacheSize);\n }\n\n resources._invokeHook('afterCompile', factory);\n\n return factory;\n };\n\n ViewCompiler.prototype._compileNode = function _compileNode(node, resources, instructions, parentNode, parentInjectorId, targetLightDOM) {\n switch (node.nodeType) {\n case 1:\n return this._compileElement(node, resources, instructions, parentNode, parentInjectorId, targetLightDOM);\n case 3:\n var expression = resources.getBindingLanguage(this.bindingLanguage).inspectTextContent(resources, node.wholeText);\n if (expression) {\n var marker = DOM.createElement('au-marker');\n var auTargetID = makeIntoInstructionTarget(marker);\n (node.parentNode || parentNode).insertBefore(marker, node);\n node.textContent = ' ';\n instructions[auTargetID] = TargetInstruction.contentExpression(expression);\n\n while (node.nextSibling && node.nextSibling.nodeType === 3) {\n (node.parentNode || parentNode).removeChild(node.nextSibling);\n }\n } else {\n while (node.nextSibling && node.nextSibling.nodeType === 3) {\n node = node.nextSibling;\n }\n }\n return node.nextSibling;\n case 11:\n var currentChild = node.firstChild;\n while (currentChild) {\n currentChild = this._compileNode(currentChild, resources, instructions, node, parentInjectorId, targetLightDOM);\n }\n break;\n default:\n break;\n }\n\n return node.nextSibling;\n };\n\n ViewCompiler.prototype._compileSurrogate = function _compileSurrogate(node, resources) {\n var tagName = node.tagName.toLowerCase();\n var attributes = node.attributes;\n var bindingLanguage = resources.getBindingLanguage(this.bindingLanguage);\n var knownAttribute = void 0;\n var property = void 0;\n var instruction = void 0;\n var i = void 0;\n var ii = void 0;\n var attr = void 0;\n var attrName = void 0;\n var attrValue = void 0;\n var info = void 0;\n var type = void 0;\n var expressions = [];\n var expression = void 0;\n var behaviorInstructions = [];\n var values = {};\n var hasValues = false;\n var providers = [];\n\n for (i = 0, ii = attributes.length; i < ii; ++i) {\n attr = attributes[i];\n attrName = attr.name;\n attrValue = attr.value;\n\n info = bindingLanguage.inspectAttribute(resources, tagName, attrName, attrValue);\n type = resources.getAttribute(info.attrName);\n\n if (type) {\n knownAttribute = resources.mapAttribute(info.attrName);\n if (knownAttribute) {\n property = type.attributes[knownAttribute];\n\n if (property) {\n info.defaultBindingMode = property.defaultBindingMode;\n\n if (!info.command && !info.expression) {\n info.command = property.hasOptions ? 'options' : null;\n }\n\n if (info.command && info.command !== 'options' && type.primaryProperty) {\n var _primaryProperty = type.primaryProperty;\n attrName = info.attrName = _primaryProperty.attribute;\n\n info.defaultBindingMode = _primaryProperty.defaultBindingMode;\n }\n }\n }\n }\n\n instruction = bindingLanguage.createAttributeInstruction(resources, node, info, undefined, type);\n\n if (instruction) {\n if (instruction.alteredAttr) {\n type = resources.getAttribute(instruction.attrName);\n }\n\n if (instruction.discrete) {\n expressions.push(instruction);\n } else {\n if (type) {\n instruction.type = type;\n this._configureProperties(instruction, resources);\n\n if (type.liftsContent) {\n throw new Error('You cannot place a template controller on a surrogate element.');\n } else {\n behaviorInstructions.push(instruction);\n }\n } else {\n expressions.push(instruction.attributes[instruction.attrName]);\n }\n }\n } else {\n if (type) {\n instruction = BehaviorInstruction.attribute(attrName, type);\n instruction.attributes[resources.mapAttribute(attrName)] = attrValue;\n\n if (type.liftsContent) {\n throw new Error('You cannot place a template controller on a surrogate element.');\n } else {\n behaviorInstructions.push(instruction);\n }\n } else if (attrName !== 'id' && attrName !== 'part' && attrName !== 'replace-part') {\n hasValues = true;\n values[attrName] = attrValue;\n }\n }\n }\n\n if (expressions.length || behaviorInstructions.length || hasValues) {\n for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\n instruction = behaviorInstructions[i];\n instruction.type.compile(this, resources, node, instruction);\n providers.push(instruction.type.target);\n }\n\n for (i = 0, ii = expressions.length; i < ii; ++i) {\n expression = expressions[i];\n if (expression.attrToRemove !== undefined) {\n node.removeAttribute(expression.attrToRemove);\n }\n }\n\n return TargetInstruction.surrogate(providers, behaviorInstructions, expressions, values);\n }\n\n return null;\n };\n\n ViewCompiler.prototype._compileElement = function _compileElement(node, resources, instructions, parentNode, parentInjectorId, targetLightDOM) {\n var tagName = node.tagName.toLowerCase();\n var attributes = node.attributes;\n var expressions = [];\n var expression = void 0;\n var behaviorInstructions = [];\n var providers = [];\n var bindingLanguage = resources.getBindingLanguage(this.bindingLanguage);\n var liftingInstruction = void 0;\n var viewFactory = void 0;\n var type = void 0;\n var elementInstruction = void 0;\n var elementProperty = void 0;\n var i = void 0;\n var ii = void 0;\n var attr = void 0;\n var attrName = void 0;\n var attrValue = void 0;\n var originalAttrName = void 0;\n var instruction = void 0;\n var info = void 0;\n var property = void 0;\n var knownAttribute = void 0;\n var auTargetID = void 0;\n var injectorId = void 0;\n\n if (tagName === 'slot') {\n if (targetLightDOM) {\n node = makeShadowSlot(this, resources, node, instructions, parentInjectorId);\n }\n return node.nextSibling;\n } else if (tagName === 'template') {\n if (!('content' in node)) {\n throw new Error('You cannot place a template element within ' + node.namespaceURI + ' namespace');\n }\n viewFactory = this.compile(node, resources);\n viewFactory.part = node.getAttribute('part');\n } else {\n type = resources.getElement(node.getAttribute('as-element') || tagName);\n\n if (tagName === 'let' && !type && bindingLanguage.createLetExpressions !== defaultLetHandler) {\n expressions = bindingLanguage.createLetExpressions(resources, node);\n auTargetID = makeIntoInstructionTarget(node);\n instructions[auTargetID] = TargetInstruction.letElement(expressions);\n return node.nextSibling;\n }\n if (type) {\n elementInstruction = BehaviorInstruction.element(node, type);\n type.processAttributes(this, resources, node, attributes, elementInstruction);\n behaviorInstructions.push(elementInstruction);\n }\n }\n\n for (i = 0, ii = attributes.length; i < ii; ++i) {\n attr = attributes[i];\n originalAttrName = attrName = attr.name;\n attrValue = attr.value;\n info = bindingLanguage.inspectAttribute(resources, tagName, attrName, attrValue);\n\n if (targetLightDOM && info.attrName === 'slot') {\n info.attrName = attrName = 'au-slot';\n }\n\n type = resources.getAttribute(info.attrName);\n elementProperty = null;\n\n if (type) {\n knownAttribute = resources.mapAttribute(info.attrName);\n if (knownAttribute) {\n property = type.attributes[knownAttribute];\n\n if (property) {\n info.defaultBindingMode = property.defaultBindingMode;\n\n if (!info.command && !info.expression) {\n info.command = property.hasOptions ? 'options' : null;\n }\n\n if (info.command && info.command !== 'options' && type.primaryProperty) {\n var _primaryProperty2 = type.primaryProperty;\n attrName = info.attrName = _primaryProperty2.attribute;\n\n info.defaultBindingMode = _primaryProperty2.defaultBindingMode;\n }\n }\n }\n } else if (elementInstruction) {\n elementProperty = elementInstruction.type.attributes[info.attrName];\n if (elementProperty) {\n info.defaultBindingMode = elementProperty.defaultBindingMode;\n }\n }\n\n if (elementProperty) {\n instruction = bindingLanguage.createAttributeInstruction(resources, node, info, elementInstruction);\n } else {\n instruction = bindingLanguage.createAttributeInstruction(resources, node, info, undefined, type);\n }\n\n if (instruction) {\n if (instruction.alteredAttr) {\n type = resources.getAttribute(instruction.attrName);\n }\n\n if (instruction.discrete) {\n expressions.push(instruction);\n } else {\n if (type) {\n instruction.type = type;\n this._configureProperties(instruction, resources);\n\n if (type.liftsContent) {\n instruction.originalAttrName = originalAttrName;\n liftingInstruction = instruction;\n break;\n } else {\n behaviorInstructions.push(instruction);\n }\n } else if (elementProperty) {\n elementInstruction.attributes[info.attrName].targetProperty = elementProperty.name;\n } else {\n expressions.push(instruction.attributes[instruction.attrName]);\n }\n }\n } else {\n if (type) {\n instruction = BehaviorInstruction.attribute(attrName, type);\n instruction.attributes[resources.mapAttribute(attrName)] = attrValue;\n\n if (type.liftsContent) {\n instruction.originalAttrName = originalAttrName;\n liftingInstruction = instruction;\n break;\n } else {\n behaviorInstructions.push(instruction);\n }\n } else if (elementProperty) {\n elementInstruction.attributes[attrName] = attrValue;\n }\n }\n }\n\n if (liftingInstruction) {\n liftingInstruction.viewFactory = viewFactory;\n node = liftingInstruction.type.compile(this, resources, node, liftingInstruction, parentNode);\n auTargetID = makeIntoInstructionTarget(node);\n instructions[auTargetID] = TargetInstruction.lifting(parentInjectorId, liftingInstruction);\n } else {\n var skipContentProcessing = false;\n\n if (expressions.length || behaviorInstructions.length) {\n injectorId = behaviorInstructions.length ? getNextInjectorId() : false;\n\n for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\n instruction = behaviorInstructions[i];\n instruction.type.compile(this, resources, node, instruction, parentNode);\n providers.push(instruction.type.target);\n skipContentProcessing = skipContentProcessing || instruction.skipContentProcessing;\n }\n\n for (i = 0, ii = expressions.length; i < ii; ++i) {\n expression = expressions[i];\n if (expression.attrToRemove !== undefined) {\n node.removeAttribute(expression.attrToRemove);\n }\n }\n\n auTargetID = makeIntoInstructionTarget(node);\n instructions[auTargetID] = TargetInstruction.normal(injectorId, parentInjectorId, providers, behaviorInstructions, expressions, elementInstruction);\n }\n\n if (skipContentProcessing) {\n return node.nextSibling;\n }\n\n var currentChild = node.firstChild;\n while (currentChild) {\n currentChild = this._compileNode(currentChild, resources, instructions, node, injectorId || parentInjectorId, targetLightDOM);\n }\n }\n\n return node.nextSibling;\n };\n\n ViewCompiler.prototype._configureProperties = function _configureProperties(instruction, resources) {\n var type = instruction.type;\n var attrName = instruction.attrName;\n var attributes = instruction.attributes;\n var property = void 0;\n var key = void 0;\n var value = void 0;\n\n var knownAttribute = resources.mapAttribute(attrName);\n if (knownAttribute && attrName in attributes && knownAttribute !== attrName) {\n attributes[knownAttribute] = attributes[attrName];\n delete attributes[attrName];\n }\n\n for (key in attributes) {\n value = attributes[key];\n\n if (value !== null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {\n property = type.attributes[key];\n\n if (property !== undefined) {\n value.targetProperty = property.name;\n } else {\n value.targetProperty = key;\n }\n }\n }\n };\n\n return ViewCompiler;\n}();\n\nexport var ResourceModule = function () {\n function ResourceModule(moduleId) {\n \n\n this.id = moduleId;\n this.moduleInstance = null;\n this.mainResource = null;\n this.resources = null;\n this.viewStrategy = null;\n this.isInitialized = false;\n this.onLoaded = null;\n this.loadContext = null;\n }\n\n ResourceModule.prototype.initialize = function initialize(container) {\n var current = this.mainResource;\n var resources = this.resources;\n var vs = this.viewStrategy;\n\n if (this.isInitialized) {\n return;\n }\n\n this.isInitialized = true;\n\n if (current !== undefined) {\n current.metadata.viewStrategy = vs;\n current.initialize(container);\n }\n\n for (var i = 0, ii = resources.length; i < ii; ++i) {\n current = resources[i];\n current.metadata.viewStrategy = vs;\n current.initialize(container);\n }\n };\n\n ResourceModule.prototype.register = function register(registry, name) {\n var main = this.mainResource;\n var resources = this.resources;\n\n if (main !== undefined) {\n main.register(registry, name);\n name = null;\n }\n\n for (var i = 0, ii = resources.length; i < ii; ++i) {\n resources[i].register(registry, name);\n name = null;\n }\n };\n\n ResourceModule.prototype.load = function load(container, loadContext) {\n if (this.onLoaded !== null) {\n return this.loadContext === loadContext ? Promise.resolve() : this.onLoaded;\n }\n\n var main = this.mainResource;\n var resources = this.resources;\n var loads = void 0;\n\n if (main !== undefined) {\n loads = new Array(resources.length + 1);\n loads[0] = main.load(container, loadContext);\n for (var i = 0, ii = resources.length; i < ii; ++i) {\n loads[i + 1] = resources[i].load(container, loadContext);\n }\n } else {\n loads = new Array(resources.length);\n for (var _i2 = 0, _ii = resources.length; _i2 < _ii; ++_i2) {\n loads[_i2] = resources[_i2].load(container, loadContext);\n }\n }\n\n this.loadContext = loadContext;\n this.onLoaded = Promise.all(loads);\n return this.onLoaded;\n };\n\n return ResourceModule;\n}();\n\nexport var ResourceDescription = function () {\n function ResourceDescription(key, exportedValue, resourceTypeMeta) {\n \n\n if (!resourceTypeMeta) {\n resourceTypeMeta = metadata.get(metadata.resource, exportedValue);\n\n if (!resourceTypeMeta) {\n resourceTypeMeta = new HtmlBehaviorResource();\n resourceTypeMeta.elementName = _hyphenate(key);\n metadata.define(metadata.resource, resourceTypeMeta, exportedValue);\n }\n }\n\n if (resourceTypeMeta instanceof HtmlBehaviorResource) {\n if (resourceTypeMeta.elementName === undefined) {\n resourceTypeMeta.elementName = _hyphenate(key);\n } else if (resourceTypeMeta.attributeName === undefined) {\n resourceTypeMeta.attributeName = _hyphenate(key);\n } else if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n HtmlBehaviorResource.convention(key, resourceTypeMeta);\n }\n } else if (!resourceTypeMeta.name) {\n resourceTypeMeta.name = _hyphenate(key);\n }\n\n this.metadata = resourceTypeMeta;\n this.value = exportedValue;\n }\n\n ResourceDescription.prototype.initialize = function initialize(container) {\n this.metadata.initialize(container, this.value);\n };\n\n ResourceDescription.prototype.register = function register(registry, name) {\n this.metadata.register(registry, name);\n };\n\n ResourceDescription.prototype.load = function load(container, loadContext) {\n return this.metadata.load(container, this.value, loadContext);\n };\n\n return ResourceDescription;\n}();\n\nexport var ModuleAnalyzer = function () {\n function ModuleAnalyzer() {\n \n\n this.cache = Object.create(null);\n }\n\n ModuleAnalyzer.prototype.getAnalysis = function getAnalysis(moduleId) {\n return this.cache[moduleId];\n };\n\n ModuleAnalyzer.prototype.analyze = function analyze(moduleId, moduleInstance, mainResourceKey) {\n var mainResource = void 0;\n var fallbackValue = void 0;\n var fallbackKey = void 0;\n var resourceTypeMeta = void 0;\n var key = void 0;\n var exportedValue = void 0;\n var resources = [];\n var conventional = void 0;\n var vs = void 0;\n var resourceModule = void 0;\n\n resourceModule = this.cache[moduleId];\n if (resourceModule) {\n return resourceModule;\n }\n\n resourceModule = new ResourceModule(moduleId);\n this.cache[moduleId] = resourceModule;\n\n if (typeof moduleInstance === 'function') {\n moduleInstance = { 'default': moduleInstance };\n }\n\n if (mainResourceKey) {\n mainResource = new ResourceDescription(mainResourceKey, moduleInstance[mainResourceKey]);\n }\n\n for (key in moduleInstance) {\n exportedValue = moduleInstance[key];\n\n if (key === mainResourceKey || typeof exportedValue !== 'function') {\n continue;\n }\n\n resourceTypeMeta = metadata.get(metadata.resource, exportedValue);\n\n if (resourceTypeMeta) {\n if (resourceTypeMeta instanceof HtmlBehaviorResource) {\n ViewResources.convention(exportedValue, resourceTypeMeta);\n\n if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n HtmlBehaviorResource.convention(key, resourceTypeMeta);\n }\n\n if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n resourceTypeMeta.elementName = _hyphenate(key);\n }\n }\n\n if (!mainResource && resourceTypeMeta instanceof HtmlBehaviorResource && resourceTypeMeta.elementName !== null) {\n mainResource = new ResourceDescription(key, exportedValue, resourceTypeMeta);\n } else {\n resources.push(new ResourceDescription(key, exportedValue, resourceTypeMeta));\n }\n } else if (viewStrategy.decorates(exportedValue)) {\n vs = exportedValue;\n } else if (exportedValue instanceof TemplateRegistryEntry) {\n vs = new TemplateRegistryViewStrategy(moduleId, exportedValue);\n } else {\n if (conventional = ViewResources.convention(exportedValue)) {\n if (conventional.elementName !== null && !mainResource) {\n mainResource = new ResourceDescription(key, exportedValue, conventional);\n } else {\n resources.push(new ResourceDescription(key, exportedValue, conventional));\n }\n metadata.define(metadata.resource, conventional, exportedValue);\n } else if (conventional = HtmlBehaviorResource.convention(key)) {\n if (conventional.elementName !== null && !mainResource) {\n mainResource = new ResourceDescription(key, exportedValue, conventional);\n } else {\n resources.push(new ResourceDescription(key, exportedValue, conventional));\n }\n\n metadata.define(metadata.resource, conventional, exportedValue);\n } else if (conventional = ValueConverterResource.convention(key) || BindingBehaviorResource.convention(key) || ViewEngineHooksResource.convention(key)) {\n resources.push(new ResourceDescription(key, exportedValue, conventional));\n metadata.define(metadata.resource, conventional, exportedValue);\n } else if (!fallbackValue) {\n fallbackValue = exportedValue;\n fallbackKey = key;\n }\n }\n }\n\n if (!mainResource && fallbackValue) {\n mainResource = new ResourceDescription(fallbackKey, fallbackValue);\n }\n\n resourceModule.moduleInstance = moduleInstance;\n resourceModule.mainResource = mainResource;\n resourceModule.resources = resources;\n resourceModule.viewStrategy = vs;\n\n return resourceModule;\n };\n\n return ModuleAnalyzer;\n}();\n\nvar logger = LogManager.getLogger('templating');\n\nfunction ensureRegistryEntry(loader, urlOrRegistryEntry) {\n if (urlOrRegistryEntry instanceof TemplateRegistryEntry) {\n return Promise.resolve(urlOrRegistryEntry);\n }\n\n return loader.loadTemplate(urlOrRegistryEntry);\n}\n\nvar ProxyViewFactory = function () {\n function ProxyViewFactory(promise) {\n var _this8 = this;\n\n \n\n promise.then(function (x) {\n return _this8.viewFactory = x;\n });\n }\n\n ProxyViewFactory.prototype.create = function create(container, bindingContext, createInstruction, element) {\n return this.viewFactory.create(container, bindingContext, createInstruction, element);\n };\n\n ProxyViewFactory.prototype.setCacheSize = function setCacheSize(size, doNotOverrideIfAlreadySet) {\n this.viewFactory.setCacheSize(size, doNotOverrideIfAlreadySet);\n };\n\n ProxyViewFactory.prototype.getCachedView = function getCachedView() {\n return this.viewFactory.getCachedView();\n };\n\n ProxyViewFactory.prototype.returnViewToCache = function returnViewToCache(view) {\n this.viewFactory.returnViewToCache(view);\n };\n\n _createClass(ProxyViewFactory, [{\n key: 'isCaching',\n get: function get() {\n return this.viewFactory.isCaching;\n }\n }]);\n\n return ProxyViewFactory;\n}();\n\nvar auSlotBehavior = null;\n\nexport var ViewEngine = (_temp5 = _class14 = function () {\n ViewEngine.inject = function inject() {\n return [Loader, Container, ViewCompiler, ModuleAnalyzer, ViewResources];\n };\n\n function ViewEngine(loader, container, viewCompiler, moduleAnalyzer, appResources) {\n \n\n this.loader = loader;\n this.container = container;\n this.viewCompiler = viewCompiler;\n this.moduleAnalyzer = moduleAnalyzer;\n this.appResources = appResources;\n this._pluginMap = {};\n\n if (auSlotBehavior === null) {\n auSlotBehavior = new HtmlBehaviorResource();\n auSlotBehavior.attributeName = 'au-slot';\n metadata.define(metadata.resource, auSlotBehavior, SlotCustomAttribute);\n }\n\n auSlotBehavior.initialize(container, SlotCustomAttribute);\n auSlotBehavior.register(appResources);\n }\n\n ViewEngine.prototype.addResourcePlugin = function addResourcePlugin(extension, implementation) {\n var name = extension.replace('.', '') + '-resource-plugin';\n this._pluginMap[extension] = name;\n this.loader.addPlugin(name, implementation);\n };\n\n ViewEngine.prototype.loadViewFactory = function loadViewFactory(urlOrRegistryEntry, compileInstruction, loadContext, target) {\n var _this9 = this;\n\n loadContext = loadContext || new ResourceLoadContext();\n\n return ensureRegistryEntry(this.loader, urlOrRegistryEntry).then(function (registryEntry) {\n var url = registryEntry.address;\n\n if (registryEntry.onReady) {\n if (!loadContext.hasDependency(url)) {\n loadContext.addDependency(url);\n return registryEntry.onReady;\n }\n\n if (registryEntry.template === null) {\n return registryEntry.onReady;\n }\n\n return Promise.resolve(new ProxyViewFactory(registryEntry.onReady));\n }\n\n loadContext.addDependency(url);\n\n registryEntry.onReady = _this9.loadTemplateResources(registryEntry, compileInstruction, loadContext, target).then(function (resources) {\n registryEntry.resources = resources;\n\n if (registryEntry.template === null) {\n return registryEntry.factory = null;\n }\n\n var viewFactory = _this9.viewCompiler.compile(registryEntry.template, resources, compileInstruction);\n return registryEntry.factory = viewFactory;\n });\n\n return registryEntry.onReady;\n });\n };\n\n ViewEngine.prototype.loadTemplateResources = function loadTemplateResources(registryEntry, compileInstruction, loadContext, target) {\n var resources = new ViewResources(this.appResources, registryEntry.address);\n var dependencies = registryEntry.dependencies;\n var importIds = void 0;\n var names = void 0;\n\n compileInstruction = compileInstruction || ViewCompileInstruction.normal;\n\n if (dependencies.length === 0 && !compileInstruction.associatedModuleId) {\n return Promise.resolve(resources);\n }\n\n importIds = dependencies.map(function (x) {\n return x.src;\n });\n names = dependencies.map(function (x) {\n return x.name;\n });\n logger.debug('importing resources for ' + registryEntry.address, importIds);\n\n if (target) {\n var viewModelRequires = metadata.get(ViewEngine.viewModelRequireMetadataKey, target);\n if (viewModelRequires) {\n var templateImportCount = importIds.length;\n for (var i = 0, ii = viewModelRequires.length; i < ii; ++i) {\n var req = viewModelRequires[i];\n var importId = typeof req === 'function' ? Origin.get(req).moduleId : relativeToFile(req.src || req, registryEntry.address);\n\n if (importIds.indexOf(importId) === -1) {\n importIds.push(importId);\n names.push(req.as);\n }\n }\n logger.debug('importing ViewModel resources for ' + compileInstruction.associatedModuleId, importIds.slice(templateImportCount));\n }\n }\n\n return this.importViewResources(importIds, names, resources, compileInstruction, loadContext);\n };\n\n ViewEngine.prototype.importViewModelResource = function importViewModelResource(moduleImport, moduleMember) {\n var _this10 = this;\n\n return this.loader.loadModule(moduleImport).then(function (viewModelModule) {\n var normalizedId = Origin.get(viewModelModule).moduleId;\n var resourceModule = _this10.moduleAnalyzer.analyze(normalizedId, viewModelModule, moduleMember);\n\n if (!resourceModule.mainResource) {\n throw new Error('No view model found in module \"' + moduleImport + '\".');\n }\n\n resourceModule.initialize(_this10.container);\n\n return resourceModule.mainResource;\n });\n };\n\n ViewEngine.prototype.importViewResources = function importViewResources(moduleIds, names, resources, compileInstruction, loadContext) {\n var _this11 = this;\n\n loadContext = loadContext || new ResourceLoadContext();\n compileInstruction = compileInstruction || ViewCompileInstruction.normal;\n\n moduleIds = moduleIds.map(function (x) {\n return _this11._applyLoaderPlugin(x);\n });\n\n return this.loader.loadAllModules(moduleIds).then(function (imports) {\n var i = void 0;\n var ii = void 0;\n var analysis = void 0;\n var normalizedId = void 0;\n var current = void 0;\n var associatedModule = void 0;\n var container = _this11.container;\n var moduleAnalyzer = _this11.moduleAnalyzer;\n var allAnalysis = new Array(imports.length);\n\n for (i = 0, ii = imports.length; i < ii; ++i) {\n current = imports[i];\n normalizedId = Origin.get(current).moduleId;\n\n analysis = moduleAnalyzer.analyze(normalizedId, current);\n analysis.initialize(container);\n analysis.register(resources, names[i]);\n\n allAnalysis[i] = analysis;\n }\n\n if (compileInstruction.associatedModuleId) {\n associatedModule = moduleAnalyzer.getAnalysis(compileInstruction.associatedModuleId);\n\n if (associatedModule) {\n associatedModule.register(resources);\n }\n }\n\n for (i = 0, ii = allAnalysis.length; i < ii; ++i) {\n allAnalysis[i] = allAnalysis[i].load(container, loadContext);\n }\n\n return Promise.all(allAnalysis).then(function () {\n return resources;\n });\n });\n };\n\n ViewEngine.prototype._applyLoaderPlugin = function _applyLoaderPlugin(id) {\n var index = id.lastIndexOf('.');\n if (index !== -1) {\n var ext = id.substring(index);\n var pluginName = this._pluginMap[ext];\n\n if (pluginName === undefined) {\n return id;\n }\n\n return this.loader.applyPluginToUrl(id, pluginName);\n }\n\n return id;\n };\n\n return ViewEngine;\n}(), _class14.viewModelRequireMetadataKey = 'aurelia:view-model-require', _temp5);\n\nexport var Controller = function () {\n function Controller(behavior, instruction, viewModel, container) {\n \n\n this.behavior = behavior;\n this.instruction = instruction;\n this.viewModel = viewModel;\n this.isAttached = false;\n this.view = null;\n this.isBound = false;\n this.scope = null;\n this.container = container;\n this.elementEvents = container.elementEvents || null;\n\n var observerLookup = behavior.observerLocator.getOrCreateObserversLookup(viewModel);\n var handlesBind = behavior.handlesBind;\n var attributes = instruction.attributes;\n var boundProperties = this.boundProperties = [];\n var properties = behavior.properties;\n var i = void 0;\n var ii = void 0;\n\n behavior._ensurePropertiesDefined(viewModel, observerLookup);\n\n for (i = 0, ii = properties.length; i < ii; ++i) {\n properties[i]._initialize(viewModel, observerLookup, attributes, handlesBind, boundProperties);\n }\n }\n\n Controller.prototype.created = function created(owningView) {\n if (this.behavior.handlesCreated) {\n this.viewModel.created(owningView, this.view);\n }\n };\n\n Controller.prototype.automate = function automate(overrideContext, owningView) {\n this.view.bindingContext = this.viewModel;\n this.view.overrideContext = overrideContext || createOverrideContext(this.viewModel);\n this.view._isUserControlled = true;\n\n if (this.behavior.handlesCreated) {\n this.viewModel.created(owningView || null, this.view);\n }\n\n this.bind(this.view);\n };\n\n Controller.prototype.bind = function bind(scope) {\n var skipSelfSubscriber = this.behavior.handlesBind;\n var boundProperties = this.boundProperties;\n var i = void 0;\n var ii = void 0;\n var x = void 0;\n var observer = void 0;\n var selfSubscriber = void 0;\n\n if (this.isBound) {\n if (this.scope === scope) {\n return;\n }\n\n this.unbind();\n }\n\n this.isBound = true;\n this.scope = scope;\n\n for (i = 0, ii = boundProperties.length; i < ii; ++i) {\n x = boundProperties[i];\n observer = x.observer;\n selfSubscriber = observer.selfSubscriber;\n observer.publishing = false;\n\n if (skipSelfSubscriber) {\n observer.selfSubscriber = null;\n }\n\n x.binding.bind(scope);\n observer.call();\n\n observer.publishing = true;\n observer.selfSubscriber = selfSubscriber;\n }\n\n var overrideContext = void 0;\n if (this.view !== null) {\n if (skipSelfSubscriber) {\n this.view.viewModelScope = scope;\n }\n\n if (this.viewModel === scope.overrideContext.bindingContext) {\n overrideContext = scope.overrideContext;\n } else if (this.instruction.inheritBindingContext) {\n overrideContext = createOverrideContext(this.viewModel, scope.overrideContext);\n } else {\n overrideContext = createOverrideContext(this.viewModel);\n overrideContext.__parentOverrideContext = scope.overrideContext;\n }\n\n this.view.bind(this.viewModel, overrideContext);\n } else if (skipSelfSubscriber) {\n overrideContext = scope.overrideContext;\n\n if (scope.overrideContext.__parentOverrideContext !== undefined && this.viewModel.viewFactory && this.viewModel.viewFactory.factoryCreateInstruction.partReplacements) {\n overrideContext = Object.assign({}, scope.overrideContext);\n overrideContext.parentOverrideContext = scope.overrideContext.__parentOverrideContext;\n }\n this.viewModel.bind(scope.bindingContext, overrideContext);\n }\n };\n\n Controller.prototype.unbind = function unbind() {\n if (this.isBound) {\n var _boundProperties = this.boundProperties;\n var _i3 = void 0;\n var _ii2 = void 0;\n\n this.isBound = false;\n this.scope = null;\n\n if (this.view !== null) {\n this.view.unbind();\n }\n\n if (this.behavior.handlesUnbind) {\n this.viewModel.unbind();\n }\n\n if (this.elementEvents !== null) {\n this.elementEvents.disposeAll();\n }\n\n for (_i3 = 0, _ii2 = _boundProperties.length; _i3 < _ii2; ++_i3) {\n _boundProperties[_i3].binding.unbind();\n }\n }\n };\n\n Controller.prototype.attached = function attached() {\n if (this.isAttached) {\n return;\n }\n\n this.isAttached = true;\n\n if (this.behavior.handlesAttached) {\n this.viewModel.attached();\n }\n\n if (this.view !== null) {\n this.view.attached();\n }\n };\n\n Controller.prototype.detached = function detached() {\n if (this.isAttached) {\n this.isAttached = false;\n\n if (this.view !== null) {\n this.view.detached();\n }\n\n if (this.behavior.handlesDetached) {\n this.viewModel.detached();\n }\n }\n };\n\n return Controller;\n}();\n\nexport var BehaviorPropertyObserver = (_dec7 = subscriberCollection(), _dec7(_class15 = function () {\n function BehaviorPropertyObserver(taskQueue, obj, propertyName, selfSubscriber, initialValue) {\n \n\n this.taskQueue = taskQueue;\n this.obj = obj;\n this.propertyName = propertyName;\n this.notqueued = true;\n this.publishing = false;\n this.selfSubscriber = selfSubscriber;\n this.currentValue = this.oldValue = initialValue;\n }\n\n BehaviorPropertyObserver.prototype.getValue = function getValue() {\n return this.currentValue;\n };\n\n BehaviorPropertyObserver.prototype.setValue = function setValue(newValue) {\n var oldValue = this.currentValue;\n\n if (!Object.is(newValue, oldValue)) {\n this.oldValue = oldValue;\n this.currentValue = newValue;\n\n if (this.publishing && this.notqueued) {\n if (this.taskQueue.flushing) {\n this.call();\n } else {\n this.notqueued = false;\n this.taskQueue.queueMicroTask(this);\n }\n }\n }\n };\n\n BehaviorPropertyObserver.prototype.call = function call() {\n var oldValue = this.oldValue;\n var newValue = this.currentValue;\n\n this.notqueued = true;\n\n if (Object.is(newValue, oldValue)) {\n return;\n }\n\n if (this.selfSubscriber) {\n this.selfSubscriber(newValue, oldValue);\n }\n\n this.callSubscribers(newValue, oldValue);\n this.oldValue = newValue;\n };\n\n BehaviorPropertyObserver.prototype.subscribe = function subscribe(context, callable) {\n this.addSubscriber(context, callable);\n };\n\n BehaviorPropertyObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n this.removeSubscriber(context, callable);\n };\n\n return BehaviorPropertyObserver;\n}()) || _class15);\n\nfunction getObserver(instance, name) {\n var lookup = instance.__observers__;\n\n if (lookup === undefined) {\n var ctor = Object.getPrototypeOf(instance).constructor;\n var _behavior = metadata.get(metadata.resource, ctor);\n if (!_behavior.isInitialized) {\n _behavior.initialize(Container.instance || new Container(), instance.constructor);\n }\n\n lookup = _behavior.observerLocator.getOrCreateObserversLookup(instance);\n _behavior._ensurePropertiesDefined(instance, lookup);\n }\n\n return lookup[name];\n}\n\nexport var BindableProperty = function () {\n function BindableProperty(nameOrConfig) {\n \n\n if (typeof nameOrConfig === 'string') {\n this.name = nameOrConfig;\n } else {\n Object.assign(this, nameOrConfig);\n }\n\n this.attribute = this.attribute || _hyphenate(this.name);\n var defaultBindingMode = this.defaultBindingMode;\n if (defaultBindingMode === null || defaultBindingMode === undefined) {\n this.defaultBindingMode = bindingMode.oneWay;\n } else if (typeof defaultBindingMode === 'string') {\n this.defaultBindingMode = bindingMode[defaultBindingMode] || bindingMode.oneWay;\n }\n this.changeHandler = this.changeHandler || null;\n this.owner = null;\n this.descriptor = null;\n }\n\n BindableProperty.prototype.registerWith = function registerWith(target, behavior, descriptor) {\n behavior.properties.push(this);\n behavior.attributes[this.attribute] = this;\n this.owner = behavior;\n\n if (descriptor) {\n this.descriptor = descriptor;\n return this._configureDescriptor(descriptor);\n }\n\n return undefined;\n };\n\n BindableProperty.prototype._configureDescriptor = function _configureDescriptor(descriptor) {\n var name = this.name;\n\n descriptor.configurable = true;\n descriptor.enumerable = true;\n\n if ('initializer' in descriptor) {\n this.defaultValue = descriptor.initializer;\n delete descriptor.initializer;\n delete descriptor.writable;\n }\n\n if ('value' in descriptor) {\n this.defaultValue = descriptor.value;\n delete descriptor.value;\n delete descriptor.writable;\n }\n\n descriptor.get = function () {\n return getObserver(this, name).getValue();\n };\n\n descriptor.set = function (value) {\n getObserver(this, name).setValue(value);\n };\n\n descriptor.get.getObserver = function (obj) {\n return getObserver(obj, name);\n };\n\n return descriptor;\n };\n\n BindableProperty.prototype.defineOn = function defineOn(target, behavior) {\n var name = this.name;\n var handlerName = void 0;\n\n if (this.changeHandler === null) {\n handlerName = name + 'Changed';\n if (handlerName in target.prototype) {\n this.changeHandler = handlerName;\n }\n }\n\n if (this.descriptor === null) {\n Object.defineProperty(target.prototype, name, this._configureDescriptor(behavior, {}));\n }\n };\n\n BindableProperty.prototype.createObserver = function createObserver(viewModel) {\n var selfSubscriber = null;\n var defaultValue = this.defaultValue;\n var changeHandlerName = this.changeHandler;\n var name = this.name;\n var initialValue = void 0;\n\n if (this.hasOptions) {\n return undefined;\n }\n\n if (changeHandlerName in viewModel) {\n if ('propertyChanged' in viewModel) {\n selfSubscriber = function selfSubscriber(newValue, oldValue) {\n viewModel[changeHandlerName](newValue, oldValue);\n viewModel.propertyChanged(name, newValue, oldValue);\n };\n } else {\n selfSubscriber = function selfSubscriber(newValue, oldValue) {\n return viewModel[changeHandlerName](newValue, oldValue);\n };\n }\n } else if ('propertyChanged' in viewModel) {\n selfSubscriber = function selfSubscriber(newValue, oldValue) {\n return viewModel.propertyChanged(name, newValue, oldValue);\n };\n } else if (changeHandlerName !== null) {\n throw new Error('Change handler ' + changeHandlerName + ' was specified but not declared on the class.');\n }\n\n if (defaultValue !== undefined) {\n initialValue = typeof defaultValue === 'function' ? defaultValue.call(viewModel) : defaultValue;\n }\n\n return new BehaviorPropertyObserver(this.owner.taskQueue, viewModel, this.name, selfSubscriber, initialValue);\n };\n\n BindableProperty.prototype._initialize = function _initialize(viewModel, observerLookup, attributes, behaviorHandlesBind, boundProperties) {\n var selfSubscriber = void 0;\n var observer = void 0;\n var attribute = void 0;\n var defaultValue = this.defaultValue;\n\n if (this.isDynamic) {\n for (var _key6 in attributes) {\n this._createDynamicProperty(viewModel, observerLookup, behaviorHandlesBind, _key6, attributes[_key6], boundProperties);\n }\n } else if (!this.hasOptions) {\n observer = observerLookup[this.name];\n\n if (attributes !== null) {\n selfSubscriber = observer.selfSubscriber;\n attribute = attributes[this.attribute];\n\n if (behaviorHandlesBind) {\n observer.selfSubscriber = null;\n }\n\n if (typeof attribute === 'string') {\n viewModel[this.name] = attribute;\n observer.call();\n } else if (attribute) {\n boundProperties.push({ observer: observer, binding: attribute.createBinding(viewModel) });\n } else if (defaultValue !== undefined) {\n observer.call();\n }\n\n observer.selfSubscriber = selfSubscriber;\n }\n\n observer.publishing = true;\n }\n };\n\n BindableProperty.prototype._createDynamicProperty = function _createDynamicProperty(viewModel, observerLookup, behaviorHandlesBind, name, attribute, boundProperties) {\n var changeHandlerName = name + 'Changed';\n var selfSubscriber = null;\n var observer = void 0;\n var info = void 0;\n\n if (changeHandlerName in viewModel) {\n if ('propertyChanged' in viewModel) {\n selfSubscriber = function selfSubscriber(newValue, oldValue) {\n viewModel[changeHandlerName](newValue, oldValue);\n viewModel.propertyChanged(name, newValue, oldValue);\n };\n } else {\n selfSubscriber = function selfSubscriber(newValue, oldValue) {\n return viewModel[changeHandlerName](newValue, oldValue);\n };\n }\n } else if ('propertyChanged' in viewModel) {\n selfSubscriber = function selfSubscriber(newValue, oldValue) {\n return viewModel.propertyChanged(name, newValue, oldValue);\n };\n }\n\n observer = observerLookup[name] = new BehaviorPropertyObserver(this.owner.taskQueue, viewModel, name, selfSubscriber);\n\n Object.defineProperty(viewModel, name, {\n configurable: true,\n enumerable: true,\n get: observer.getValue.bind(observer),\n set: observer.setValue.bind(observer)\n });\n\n if (behaviorHandlesBind) {\n observer.selfSubscriber = null;\n }\n\n if (typeof attribute === 'string') {\n viewModel[name] = attribute;\n observer.call();\n } else if (attribute) {\n info = { observer: observer, binding: attribute.createBinding(viewModel) };\n boundProperties.push(info);\n }\n\n observer.publishing = true;\n observer.selfSubscriber = selfSubscriber;\n };\n\n return BindableProperty;\n}();\n\nvar lastProviderId = 0;\n\nfunction nextProviderId() {\n return ++lastProviderId;\n}\n\nfunction doProcessContent() {\n return true;\n}\nfunction doProcessAttributes() {}\n\nexport var HtmlBehaviorResource = function () {\n function HtmlBehaviorResource() {\n \n\n this.elementName = null;\n this.attributeName = null;\n this.attributeDefaultBindingMode = undefined;\n this.liftsContent = false;\n this.targetShadowDOM = false;\n this.shadowDOMOptions = null;\n this.processAttributes = doProcessAttributes;\n this.processContent = doProcessContent;\n this.usesShadowDOM = false;\n this.childBindings = null;\n this.hasDynamicOptions = false;\n this.containerless = false;\n this.properties = [];\n this.attributes = {};\n this.isInitialized = false;\n this.primaryProperty = null;\n }\n\n HtmlBehaviorResource.convention = function convention(name, existing) {\n var behavior = void 0;\n\n if (name.endsWith('CustomAttribute')) {\n behavior = existing || new HtmlBehaviorResource();\n behavior.attributeName = _hyphenate(name.substring(0, name.length - 15));\n }\n\n if (name.endsWith('CustomElement')) {\n behavior = existing || new HtmlBehaviorResource();\n behavior.elementName = _hyphenate(name.substring(0, name.length - 13));\n }\n\n return behavior;\n };\n\n HtmlBehaviorResource.prototype.addChildBinding = function addChildBinding(behavior) {\n if (this.childBindings === null) {\n this.childBindings = [];\n }\n\n this.childBindings.push(behavior);\n };\n\n HtmlBehaviorResource.prototype.initialize = function initialize(container, target) {\n var proto = target.prototype;\n var properties = this.properties;\n var attributeName = this.attributeName;\n var attributeDefaultBindingMode = this.attributeDefaultBindingMode;\n var i = void 0;\n var ii = void 0;\n var current = void 0;\n\n if (this.isInitialized) {\n return;\n }\n\n this.isInitialized = true;\n target.__providerId__ = nextProviderId();\n\n this.observerLocator = container.get(ObserverLocator);\n this.taskQueue = container.get(TaskQueue);\n\n this.target = target;\n this.usesShadowDOM = this.targetShadowDOM && FEATURE.shadowDOM;\n this.handlesCreated = 'created' in proto;\n this.handlesBind = 'bind' in proto;\n this.handlesUnbind = 'unbind' in proto;\n this.handlesAttached = 'attached' in proto;\n this.handlesDetached = 'detached' in proto;\n this.htmlName = this.elementName || this.attributeName;\n\n if (attributeName !== null) {\n if (properties.length === 0) {\n new BindableProperty({\n name: 'value',\n changeHandler: 'valueChanged' in proto ? 'valueChanged' : null,\n attribute: attributeName,\n defaultBindingMode: attributeDefaultBindingMode\n }).registerWith(target, this);\n }\n\n current = properties[0];\n\n if (properties.length === 1 && current.name === 'value') {\n current.isDynamic = current.hasOptions = this.hasDynamicOptions;\n current.defineOn(target, this);\n } else {\n for (i = 0, ii = properties.length; i < ii; ++i) {\n properties[i].defineOn(target, this);\n if (properties[i].primaryProperty) {\n if (this.primaryProperty) {\n throw new Error('Only one bindable property on a custom element can be defined as the default');\n }\n this.primaryProperty = properties[i];\n }\n }\n\n current = new BindableProperty({\n name: 'value',\n changeHandler: 'valueChanged' in proto ? 'valueChanged' : null,\n attribute: attributeName,\n defaultBindingMode: attributeDefaultBindingMode\n });\n\n current.hasOptions = true;\n current.registerWith(target, this);\n }\n } else {\n for (i = 0, ii = properties.length; i < ii; ++i) {\n properties[i].defineOn(target, this);\n }\n\n this._copyInheritedProperties(container, target);\n }\n };\n\n HtmlBehaviorResource.prototype.register = function register(registry, name) {\n var _this12 = this;\n\n if (this.attributeName !== null) {\n registry.registerAttribute(name || this.attributeName, this, this.attributeName);\n\n if (Array.isArray(this.aliases)) {\n this.aliases.forEach(function (alias) {\n registry.registerAttribute(alias, _this12, _this12.attributeName);\n });\n }\n }\n\n if (this.elementName !== null) {\n registry.registerElement(name || this.elementName, this);\n }\n };\n\n HtmlBehaviorResource.prototype.load = function load(container, target, loadContext, viewStrategy, transientView) {\n var _this13 = this;\n\n var options = void 0;\n\n if (this.elementName !== null) {\n viewStrategy = container.get(ViewLocator).getViewStrategy(viewStrategy || this.viewStrategy || target);\n options = new ViewCompileInstruction(this.targetShadowDOM, true);\n\n if (!viewStrategy.moduleId) {\n viewStrategy.moduleId = Origin.get(target).moduleId;\n }\n\n return viewStrategy.loadViewFactory(container.get(ViewEngine), options, loadContext, target).then(function (viewFactory) {\n if (!transientView || !_this13.viewFactory) {\n _this13.viewFactory = viewFactory;\n }\n\n return viewFactory;\n });\n }\n\n return Promise.resolve(this);\n };\n\n HtmlBehaviorResource.prototype.compile = function compile(compiler, resources, node, instruction, parentNode) {\n if (this.liftsContent) {\n if (!instruction.viewFactory) {\n var _template = DOM.createElement('template');\n var fragment = DOM.createDocumentFragment();\n var cacheSize = node.getAttribute('view-cache');\n var part = node.getAttribute('part');\n\n node.removeAttribute(instruction.originalAttrName);\n DOM.replaceNode(_template, node, parentNode);\n fragment.appendChild(node);\n instruction.viewFactory = compiler.compile(fragment, resources);\n\n if (part) {\n instruction.viewFactory.part = part;\n node.removeAttribute('part');\n }\n\n if (cacheSize) {\n instruction.viewFactory.setCacheSize(cacheSize);\n node.removeAttribute('view-cache');\n }\n\n node = _template;\n }\n } else if (this.elementName !== null) {\n var _partReplacements2 = {};\n\n if (this.processContent(compiler, resources, node, instruction) && node.hasChildNodes()) {\n var currentChild = node.firstChild;\n var contentElement = this.usesShadowDOM ? null : DOM.createElement('au-content');\n var nextSibling = void 0;\n var toReplace = void 0;\n\n while (currentChild) {\n nextSibling = currentChild.nextSibling;\n\n if (currentChild.tagName === 'TEMPLATE' && (toReplace = currentChild.getAttribute('replace-part'))) {\n _partReplacements2[toReplace] = compiler.compile(currentChild, resources);\n DOM.removeNode(currentChild, parentNode);\n instruction.partReplacements = _partReplacements2;\n } else if (contentElement !== null) {\n if (currentChild.nodeType === 3 && _isAllWhitespace(currentChild)) {\n DOM.removeNode(currentChild, parentNode);\n } else {\n contentElement.appendChild(currentChild);\n }\n }\n\n currentChild = nextSibling;\n }\n\n if (contentElement !== null && contentElement.hasChildNodes()) {\n node.appendChild(contentElement);\n }\n\n instruction.skipContentProcessing = false;\n } else {\n instruction.skipContentProcessing = true;\n }\n } else if (!this.processContent(compiler, resources, node, instruction)) {\n instruction.skipContentProcessing = true;\n }\n\n return node;\n };\n\n HtmlBehaviorResource.prototype.create = function create(container, instruction, element, bindings) {\n var viewHost = void 0;\n var au = null;\n\n instruction = instruction || BehaviorInstruction.normal;\n element = element || null;\n bindings = bindings || null;\n\n if (this.elementName !== null && element) {\n if (this.usesShadowDOM) {\n viewHost = element.attachShadow(this.shadowDOMOptions);\n container.registerInstance(DOM.boundary, viewHost);\n } else {\n viewHost = element;\n if (this.targetShadowDOM) {\n container.registerInstance(DOM.boundary, viewHost);\n }\n }\n }\n\n if (element !== null) {\n element.au = au = element.au || {};\n }\n\n var viewModel = instruction.viewModel || container.get(this.target);\n var controller = new Controller(this, instruction, viewModel, container);\n var childBindings = this.childBindings;\n var viewFactory = void 0;\n\n if (this.liftsContent) {\n au.controller = controller;\n } else if (this.elementName !== null) {\n viewFactory = instruction.viewFactory || this.viewFactory;\n container.viewModel = viewModel;\n\n if (viewFactory) {\n controller.view = viewFactory.create(container, instruction, element);\n }\n\n if (element !== null) {\n au.controller = controller;\n\n if (controller.view) {\n if (!this.usesShadowDOM && (element.childNodes.length === 1 || element.contentElement)) {\n var contentElement = element.childNodes[0] || element.contentElement;\n controller.view.contentView = { fragment: contentElement };\n contentElement.parentNode && DOM.removeNode(contentElement);\n }\n\n if (instruction.anchorIsContainer) {\n if (childBindings !== null) {\n for (var _i4 = 0, _ii3 = childBindings.length; _i4 < _ii3; ++_i4) {\n controller.view.addBinding(childBindings[_i4].create(element, viewModel, controller));\n }\n }\n\n controller.view.appendNodesTo(viewHost);\n } else {\n controller.view.insertNodesBefore(viewHost);\n }\n } else if (childBindings !== null) {\n for (var _i5 = 0, _ii4 = childBindings.length; _i5 < _ii4; ++_i5) {\n bindings.push(childBindings[_i5].create(element, viewModel, controller));\n }\n }\n } else if (controller.view) {\n controller.view.controller = controller;\n\n if (childBindings !== null) {\n for (var _i6 = 0, _ii5 = childBindings.length; _i6 < _ii5; ++_i6) {\n controller.view.addBinding(childBindings[_i6].create(instruction.host, viewModel, controller));\n }\n }\n } else if (childBindings !== null) {\n for (var _i7 = 0, _ii6 = childBindings.length; _i7 < _ii6; ++_i7) {\n bindings.push(childBindings[_i7].create(instruction.host, viewModel, controller));\n }\n }\n } else if (childBindings !== null) {\n for (var _i8 = 0, _ii7 = childBindings.length; _i8 < _ii7; ++_i8) {\n bindings.push(childBindings[_i8].create(element, viewModel, controller));\n }\n }\n\n if (au !== null) {\n au[this.htmlName] = controller;\n }\n\n if (instruction.initiatedByBehavior && viewFactory) {\n controller.view.created();\n }\n\n return controller;\n };\n\n HtmlBehaviorResource.prototype._ensurePropertiesDefined = function _ensurePropertiesDefined(instance, lookup) {\n var properties = void 0;\n var i = void 0;\n var ii = void 0;\n var observer = void 0;\n\n if ('__propertiesDefined__' in lookup) {\n return;\n }\n\n lookup.__propertiesDefined__ = true;\n properties = this.properties;\n\n for (i = 0, ii = properties.length; i < ii; ++i) {\n observer = properties[i].createObserver(instance);\n\n if (observer !== undefined) {\n lookup[observer.propertyName] = observer;\n }\n }\n };\n\n HtmlBehaviorResource.prototype._copyInheritedProperties = function _copyInheritedProperties(container, target) {\n var _this14 = this;\n\n var behavior = void 0;\n var derived = target;\n\n while (true) {\n var proto = Object.getPrototypeOf(target.prototype);\n target = proto && proto.constructor;\n if (!target) {\n return;\n }\n behavior = metadata.getOwn(metadata.resource, target);\n if (behavior) {\n break;\n }\n }\n behavior.initialize(container, target);\n\n var _loop = function _loop(_i9, _ii8) {\n var prop = behavior.properties[_i9];\n\n if (_this14.properties.some(function (p) {\n return p.name === prop.name;\n })) {\n return 'continue';\n }\n\n new BindableProperty(prop).registerWith(derived, _this14);\n };\n\n for (var _i9 = 0, _ii8 = behavior.properties.length; _i9 < _ii8; ++_i9) {\n var _ret = _loop(_i9, _ii8);\n\n if (_ret === 'continue') continue;\n }\n };\n\n return HtmlBehaviorResource;\n}();\n\nfunction createChildObserverDecorator(selectorOrConfig, all) {\n return function (target, key, descriptor) {\n var actualTarget = typeof key === 'string' ? target.constructor : target;\n var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, actualTarget);\n\n if (typeof selectorOrConfig === 'string') {\n selectorOrConfig = {\n selector: selectorOrConfig,\n name: key\n };\n }\n\n if (descriptor) {\n descriptor.writable = true;\n descriptor.configurable = true;\n }\n\n selectorOrConfig.all = all;\n r.addChildBinding(new ChildObserver(selectorOrConfig));\n };\n}\n\nexport function children(selectorOrConfig) {\n return createChildObserverDecorator(selectorOrConfig, true);\n}\n\nexport function child(selectorOrConfig) {\n return createChildObserverDecorator(selectorOrConfig, false);\n}\n\nvar ChildObserver = function () {\n function ChildObserver(config) {\n \n\n this.name = config.name;\n this.changeHandler = config.changeHandler || this.name + 'Changed';\n this.selector = config.selector;\n this.all = config.all;\n }\n\n ChildObserver.prototype.create = function create(viewHost, viewModel, controller) {\n return new ChildObserverBinder(this.selector, viewHost, this.name, viewModel, controller, this.changeHandler, this.all);\n };\n\n return ChildObserver;\n}();\n\nvar noMutations = [];\n\nfunction trackMutation(groupedMutations, binder, record) {\n var mutations = groupedMutations.get(binder);\n\n if (!mutations) {\n mutations = [];\n groupedMutations.set(binder, mutations);\n }\n\n mutations.push(record);\n}\n\nfunction onChildChange(mutations, observer) {\n var binders = observer.binders;\n var bindersLength = binders.length;\n\n var groupedMutations = new Map();\n\n for (var _i10 = 0, _ii9 = mutations.length; _i10 < _ii9; ++_i10) {\n var record = mutations[_i10];\n var added = record.addedNodes;\n var removed = record.removedNodes;\n\n for (var j = 0, jj = removed.length; j < jj; ++j) {\n var _node = removed[j];\n if (_node.nodeType === 1) {\n for (var k = 0; k < bindersLength; ++k) {\n var binder = binders[k];\n\n if (binder.onRemove(_node)) {\n trackMutation(groupedMutations, binder, record);\n }\n }\n }\n }\n\n for (var _j = 0, _jj = added.length; _j < _jj; ++_j) {\n var _node2 = added[_j];\n if (_node2.nodeType === 1) {\n for (var _k = 0; _k < bindersLength; ++_k) {\n var _binder = binders[_k];\n\n if (_binder.onAdd(_node2)) {\n trackMutation(groupedMutations, _binder, record);\n }\n }\n }\n }\n }\n\n groupedMutations.forEach(function (mutationRecords, binder) {\n if (binder.isBound && binder.changeHandler !== null) {\n binder.viewModel[binder.changeHandler](mutationRecords);\n }\n });\n}\n\nvar ChildObserverBinder = function () {\n function ChildObserverBinder(selector, viewHost, property, viewModel, controller, changeHandler, all) {\n \n\n this.selector = selector;\n\n this.viewHost = viewHost;\n this.property = property;\n this.viewModel = viewModel;\n this.controller = controller;\n this.changeHandler = changeHandler in viewModel ? changeHandler : null;\n this.usesShadowDOM = controller.behavior.usesShadowDOM;\n this.all = all;\n\n if (!this.usesShadowDOM && controller.view && controller.view.contentView) {\n this.contentView = controller.view.contentView;\n } else {\n this.contentView = null;\n }\n this.source = null;\n this.isBound = false;\n }\n\n ChildObserverBinder.prototype.matches = function matches(element) {\n if (element.matches(this.selector)) {\n if (this.contentView === null) {\n return true;\n }\n\n var contentView = this.contentView;\n var assignedSlot = element.auAssignedSlot;\n\n if (assignedSlot && assignedSlot.projectFromAnchors) {\n var anchors = assignedSlot.projectFromAnchors;\n\n for (var _i11 = 0, _ii10 = anchors.length; _i11 < _ii10; ++_i11) {\n if (anchors[_i11].auOwnerView === contentView) {\n return true;\n }\n }\n\n return false;\n }\n\n return element.auOwnerView === contentView;\n }\n\n return false;\n };\n\n ChildObserverBinder.prototype.bind = function bind(source) {\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.source = source;\n }\n this.isBound = true;\n\n var viewHost = this.viewHost;\n var viewModel = this.viewModel;\n var observer = viewHost.__childObserver__;\n\n if (!observer) {\n observer = viewHost.__childObserver__ = DOM.createMutationObserver(onChildChange);\n\n var options = {\n childList: true,\n subtree: !this.usesShadowDOM\n };\n\n observer.observe(viewHost, options);\n observer.binders = [];\n }\n\n observer.binders.push(this);\n\n if (this.usesShadowDOM) {\n var current = viewHost.firstElementChild;\n\n if (this.all) {\n var items = viewModel[this.property];\n if (!items) {\n items = viewModel[this.property] = [];\n } else {\n items.splice(0);\n }\n\n while (current) {\n if (this.matches(current)) {\n items.push(current.au && current.au.controller ? current.au.controller.viewModel : current);\n }\n\n current = current.nextElementSibling;\n }\n\n if (this.changeHandler !== null) {\n this.viewModel[this.changeHandler](noMutations);\n }\n } else {\n while (current) {\n if (this.matches(current)) {\n var _value = current.au && current.au.controller ? current.au.controller.viewModel : current;\n this.viewModel[this.property] = _value;\n\n if (this.changeHandler !== null) {\n this.viewModel[this.changeHandler](_value);\n }\n\n break;\n }\n\n current = current.nextElementSibling;\n }\n }\n }\n };\n\n ChildObserverBinder.prototype.onRemove = function onRemove(element) {\n if (this.matches(element)) {\n var _value2 = element.au && element.au.controller ? element.au.controller.viewModel : element;\n\n if (this.all) {\n var items = this.viewModel[this.property] || (this.viewModel[this.property] = []);\n var index = items.indexOf(_value2);\n\n if (index !== -1) {\n items.splice(index, 1);\n }\n\n return true;\n }\n\n var currentValue = this.viewModel[this.property];\n if (currentValue === _value2) {\n this.viewModel[this.property] = null;\n\n if (this.isBound && this.changeHandler !== null) {\n this.viewModel[this.changeHandler](_value2);\n }\n }\n }\n\n return false;\n };\n\n ChildObserverBinder.prototype.onAdd = function onAdd(element) {\n if (this.matches(element)) {\n var _value3 = element.au && element.au.controller ? element.au.controller.viewModel : element;\n\n if (this.all) {\n var items = this.viewModel[this.property] || (this.viewModel[this.property] = []);\n\n if (this.selector === '*') {\n items.push(_value3);\n return true;\n }\n\n var index = 0;\n var prev = element.previousElementSibling;\n\n while (prev) {\n if (this.matches(prev)) {\n index++;\n }\n\n prev = prev.previousElementSibling;\n }\n\n items.splice(index, 0, _value3);\n return true;\n }\n\n this.viewModel[this.property] = _value3;\n\n if (this.isBound && this.changeHandler !== null) {\n this.viewModel[this.changeHandler](_value3);\n }\n }\n\n return false;\n };\n\n ChildObserverBinder.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n this.source = null;\n var childObserver = this.viewHost.__childObserver__;\n if (childObserver) {\n var binders = childObserver.binders;\n if (binders && binders.length) {\n var idx = binders.indexOf(this);\n if (idx !== -1) {\n binders.splice(idx, 1);\n }\n if (binders.length === 0) {\n childObserver.disconnect();\n this.viewHost.__childObserver__ = null;\n }\n }\n\n if (this.usesShadowDOM) {\n this.viewModel[this.property] = null;\n }\n }\n };\n\n return ChildObserverBinder;\n}();\n\nfunction remove(viewSlot, previous) {\n return Array.isArray(previous) ? viewSlot.removeMany(previous, true) : viewSlot.remove(previous, true);\n}\n\nexport var SwapStrategies = {\n before: function before(viewSlot, previous, callback) {\n return previous === undefined ? callback() : callback().then(function () {\n return remove(viewSlot, previous);\n });\n },\n with: function _with(viewSlot, previous, callback) {\n return previous === undefined ? callback() : Promise.all([remove(viewSlot, previous), callback()]);\n },\n after: function after(viewSlot, previous, callback) {\n return Promise.resolve(viewSlot.removeAll(true)).then(callback);\n }\n};\n\nfunction tryActivateViewModel(context) {\n if (context.skipActivation || typeof context.viewModel.activate !== 'function') {\n return Promise.resolve();\n }\n\n return context.viewModel.activate(context.model) || Promise.resolve();\n}\n\nexport var CompositionEngine = (_dec8 = inject(ViewEngine, ViewLocator), _dec8(_class16 = function () {\n function CompositionEngine(viewEngine, viewLocator) {\n \n\n this.viewEngine = viewEngine;\n this.viewLocator = viewLocator;\n }\n\n CompositionEngine.prototype._swap = function _swap(context, view) {\n var swapStrategy = SwapStrategies[context.swapOrder] || SwapStrategies.after;\n var previousViews = context.viewSlot.children.slice();\n\n return swapStrategy(context.viewSlot, previousViews, function () {\n return Promise.resolve(context.viewSlot.add(view)).then(function () {\n if (context.currentController) {\n context.currentController.unbind();\n }\n });\n }).then(function () {\n if (context.compositionTransactionNotifier) {\n context.compositionTransactionNotifier.done();\n }\n });\n };\n\n CompositionEngine.prototype._createControllerAndSwap = function _createControllerAndSwap(context) {\n var _this15 = this;\n\n return this.createController(context).then(function (controller) {\n if (context.compositionTransactionOwnershipToken) {\n return context.compositionTransactionOwnershipToken.waitForCompositionComplete().then(function () {\n controller.automate(context.overrideContext, context.owningView);\n\n return _this15._swap(context, controller.view);\n }).then(function () {\n return controller;\n });\n }\n\n controller.automate(context.overrideContext, context.owningView);\n\n return _this15._swap(context, controller.view).then(function () {\n return controller;\n });\n });\n };\n\n CompositionEngine.prototype.createController = function createController(context) {\n var _this16 = this;\n\n var childContainer = void 0;\n var viewModel = void 0;\n var viewModelResource = void 0;\n\n var m = void 0;\n\n return this.ensureViewModel(context).then(tryActivateViewModel).then(function () {\n childContainer = context.childContainer;\n viewModel = context.viewModel;\n viewModelResource = context.viewModelResource;\n m = viewModelResource.metadata;\n\n var viewStrategy = _this16.viewLocator.getViewStrategy(context.view || viewModel);\n\n if (context.viewResources) {\n viewStrategy.makeRelativeTo(context.viewResources.viewUrl);\n }\n\n return m.load(childContainer, viewModelResource.value, null, viewStrategy, true);\n }).then(function (viewFactory) {\n return m.create(childContainer, BehaviorInstruction.dynamic(context.host, viewModel, viewFactory));\n });\n };\n\n CompositionEngine.prototype.ensureViewModel = function ensureViewModel(context) {\n var childContainer = context.childContainer = context.childContainer || context.container.createChild();\n\n if (typeof context.viewModel === 'string') {\n context.viewModel = context.viewResources ? context.viewResources.relativeToView(context.viewModel) : context.viewModel;\n\n return this.viewEngine.importViewModelResource(context.viewModel).then(function (viewModelResource) {\n childContainer.autoRegister(viewModelResource.value);\n\n if (context.host) {\n childContainer.registerInstance(DOM.Element, context.host);\n }\n\n context.viewModel = childContainer.viewModel = childContainer.get(viewModelResource.value);\n context.viewModelResource = viewModelResource;\n return context;\n });\n }\n\n var ctor = context.viewModel.constructor;\n var isClass = typeof context.viewModel === 'function';\n if (isClass) {\n ctor = context.viewModel;\n childContainer.autoRegister(ctor);\n }\n var m = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, ctor);\n\n m.elementName = m.elementName || 'dynamic-element';\n\n m.initialize(isClass ? childContainer : context.container || childContainer, ctor);\n\n context.viewModelResource = { metadata: m, value: ctor };\n\n if (context.host) {\n childContainer.registerInstance(DOM.Element, context.host);\n }\n childContainer.viewModel = context.viewModel = isClass ? childContainer.get(ctor) : context.viewModel;\n return Promise.resolve(context);\n };\n\n CompositionEngine.prototype.compose = function compose(context) {\n var _this17 = this;\n\n context.childContainer = context.childContainer || context.container.createChild();\n context.view = this.viewLocator.getViewStrategy(context.view);\n\n var transaction = context.childContainer.get(CompositionTransaction);\n var compositionTransactionOwnershipToken = transaction.tryCapture();\n\n if (compositionTransactionOwnershipToken) {\n context.compositionTransactionOwnershipToken = compositionTransactionOwnershipToken;\n } else {\n context.compositionTransactionNotifier = transaction.enlist();\n }\n\n if (context.viewModel) {\n return this._createControllerAndSwap(context);\n } else if (context.view) {\n if (context.viewResources) {\n context.view.makeRelativeTo(context.viewResources.viewUrl);\n }\n\n return context.view.loadViewFactory(this.viewEngine, new ViewCompileInstruction()).then(function (viewFactory) {\n var result = viewFactory.create(context.childContainer);\n result.bind(context.bindingContext, context.overrideContext);\n\n if (context.compositionTransactionOwnershipToken) {\n return context.compositionTransactionOwnershipToken.waitForCompositionComplete().then(function () {\n return _this17._swap(context, result);\n }).then(function () {\n return result;\n });\n }\n\n return _this17._swap(context, result).then(function () {\n return result;\n });\n });\n } else if (context.viewSlot) {\n context.viewSlot.removeAll();\n\n if (context.compositionTransactionNotifier) {\n context.compositionTransactionNotifier.done();\n }\n\n return Promise.resolve(null);\n }\n\n return Promise.resolve(null);\n };\n\n return CompositionEngine;\n}()) || _class16);\n\nexport var ElementConfigResource = function () {\n function ElementConfigResource() {\n \n }\n\n ElementConfigResource.prototype.initialize = function initialize(container, target) {};\n\n ElementConfigResource.prototype.register = function register(registry, name) {};\n\n ElementConfigResource.prototype.load = function load(container, target) {\n var config = new target();\n var eventManager = container.get(EventManager);\n eventManager.registerElementConfig(config);\n };\n\n return ElementConfigResource;\n}();\n\nexport function resource(instanceOrConfig) {\n return function (target) {\n var isConfig = typeof instanceOrConfig === 'string' || Object.getPrototypeOf(instanceOrConfig) === Object.prototype;\n if (isConfig) {\n target.$resource = instanceOrConfig;\n } else {\n metadata.define(metadata.resource, instanceOrConfig, target);\n }\n };\n}\n\nexport function behavior(override) {\n return function (target) {\n if (override instanceof HtmlBehaviorResource) {\n metadata.define(metadata.resource, override, target);\n } else {\n var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, target);\n Object.assign(r, override);\n }\n };\n}\n\nexport function customElement(name) {\n return function (target) {\n var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, target);\n r.elementName = validateBehaviorName(name, 'custom element');\n };\n}\n\nexport function customAttribute(name, defaultBindingMode, aliases) {\n return function (target) {\n var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, target);\n r.attributeName = validateBehaviorName(name, 'custom attribute');\n r.attributeDefaultBindingMode = defaultBindingMode;\n r.aliases = aliases;\n };\n}\n\nexport function templateController(target) {\n var deco = function deco(t) {\n var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\n r.liftsContent = true;\n };\n\n return target ? deco(target) : deco;\n}\n\nexport function bindable(nameOrConfigOrTarget, key, descriptor) {\n var deco = function deco(target, key2, descriptor2) {\n var actualTarget = key2 ? target.constructor : target;\n var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, actualTarget);\n var prop = void 0;\n\n if (key2) {\n nameOrConfigOrTarget = nameOrConfigOrTarget || {};\n nameOrConfigOrTarget.name = key2;\n }\n\n prop = new BindableProperty(nameOrConfigOrTarget);\n return prop.registerWith(actualTarget, r, descriptor2);\n };\n\n if (!nameOrConfigOrTarget) {\n return deco;\n }\n\n if (key) {\n var _target = nameOrConfigOrTarget;\n nameOrConfigOrTarget = null;\n return deco(_target, key, descriptor);\n }\n\n return deco;\n}\n\nexport function dynamicOptions(target) {\n var deco = function deco(t) {\n var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\n r.hasDynamicOptions = true;\n };\n\n return target ? deco(target) : deco;\n}\n\nvar defaultShadowDOMOptions = { mode: 'open' };\n\nexport function useShadowDOM(targetOrOptions) {\n var options = typeof targetOrOptions === 'function' || !targetOrOptions ? defaultShadowDOMOptions : targetOrOptions;\n\n var deco = function deco(t) {\n var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\n r.targetShadowDOM = true;\n r.shadowDOMOptions = options;\n };\n\n return typeof targetOrOptions === 'function' ? deco(targetOrOptions) : deco;\n}\n\nexport function processAttributes(processor) {\n return function (t) {\n var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\n r.processAttributes = function (compiler, resources, node, attributes, elementInstruction) {\n try {\n processor(compiler, resources, node, attributes, elementInstruction);\n } catch (error) {\n LogManager.getLogger('templating').error(error);\n }\n };\n };\n}\n\nfunction doNotProcessContent() {\n return false;\n}\n\nexport function processContent(processor) {\n return function (t) {\n var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\n r.processContent = processor ? function (compiler, resources, node, instruction) {\n try {\n return processor(compiler, resources, node, instruction);\n } catch (error) {\n LogManager.getLogger('templating').error(error);\n return false;\n }\n } : doNotProcessContent;\n };\n}\n\nexport function containerless(target) {\n var deco = function deco(t) {\n var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\n r.containerless = true;\n };\n\n return target ? deco(target) : deco;\n}\n\nexport function useViewStrategy(strategy) {\n return function (target) {\n metadata.define(ViewLocator.viewStrategyMetadataKey, strategy, target);\n };\n}\n\nexport function useView(path) {\n return useViewStrategy(new RelativeViewStrategy(path));\n}\n\nexport function inlineView(markup, dependencies, dependencyBaseUrl) {\n return useViewStrategy(new InlineViewStrategy(markup, dependencies, dependencyBaseUrl));\n}\n\nexport function noView(targetOrDependencies, dependencyBaseUrl) {\n var target = void 0;\n var dependencies = void 0;\n if (typeof targetOrDependencies === 'function') {\n target = targetOrDependencies;\n } else {\n dependencies = targetOrDependencies;\n target = undefined;\n }\n\n var deco = function deco(t) {\n metadata.define(ViewLocator.viewStrategyMetadataKey, new NoViewStrategy(dependencies, dependencyBaseUrl), t);\n };\n\n return target ? deco(target) : deco;\n}\n\nexport function view(templateOrConfig) {\n return function (target) {\n target.$view = templateOrConfig;\n };\n}\n\nexport function elementConfig(target) {\n var deco = function deco(t) {\n metadata.define(metadata.resource, new ElementConfigResource(), t);\n };\n\n return target ? deco(target) : deco;\n}\n\nexport function viewResources() {\n for (var _len = arguments.length, resources = Array(_len), _key7 = 0; _key7 < _len; _key7++) {\n resources[_key7] = arguments[_key7];\n }\n\n return function (target) {\n metadata.define(ViewEngine.viewModelRequireMetadataKey, resources, target);\n };\n}\n\nexport var TemplatingEngine = (_dec9 = inject(Container, ModuleAnalyzer, ViewCompiler, CompositionEngine), _dec9(_class17 = function () {\n function TemplatingEngine(container, moduleAnalyzer, viewCompiler, compositionEngine) {\n \n\n this._container = container;\n this._moduleAnalyzer = moduleAnalyzer;\n this._viewCompiler = viewCompiler;\n this._compositionEngine = compositionEngine;\n container.registerInstance(Animator, Animator.instance = new Animator());\n }\n\n TemplatingEngine.prototype.configureAnimator = function configureAnimator(animator) {\n this._container.unregister(Animator);\n this._container.registerInstance(Animator, Animator.instance = animator);\n };\n\n TemplatingEngine.prototype.compose = function compose(context) {\n return this._compositionEngine.compose(context);\n };\n\n TemplatingEngine.prototype.enhance = function enhance(instruction) {\n if (instruction instanceof DOM.Element) {\n instruction = { element: instruction };\n }\n\n var compilerInstructions = { letExpressions: [] };\n var resources = instruction.resources || this._container.get(ViewResources);\n\n this._viewCompiler._compileNode(instruction.element, resources, compilerInstructions, instruction.element.parentNode, 'root', true);\n\n var factory = new ViewFactory(instruction.element, compilerInstructions, resources);\n var container = instruction.container || this._container.createChild();\n var view = factory.create(container, BehaviorInstruction.enhance());\n\n view.bind(instruction.bindingContext || {}, instruction.overrideContext);\n\n view.firstChild = view.lastChild = view.fragment;\n view.fragment = DOM.createDocumentFragment();\n view.attached();\n\n return view;\n };\n\n return TemplatingEngine;\n}()) || _class17);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-templating/dist/native-modules/aurelia-templating.js\n// module id = 8\n// module chunks = 2","var _dec, _class, _dec2, _class2, _dec3, _class3, _dec4, _class4, _dec5, _class5, _dec6, _class6, _dec7, _class7;\n\nimport { protocol, metadata } from 'aurelia-metadata';\nimport { AggregateError } from 'aurelia-pal';\n\nexport const resolver = protocol.create('aurelia:resolver', function (target) {\n if (!(typeof target.get === 'function')) {\n return 'Resolvers must implement: get(container: Container, key: any): any';\n }\n\n return true;\n});\n\nexport let StrategyResolver = (_dec = resolver(), _dec(_class = class StrategyResolver {\n constructor(strategy, state) {\n this.strategy = strategy;\n this.state = state;\n }\n\n get(container, key) {\n switch (this.strategy) {\n case 0:\n return this.state;\n case 1:\n let singleton = container.invoke(this.state);\n this.state = singleton;\n this.strategy = 0;\n return singleton;\n case 2:\n return container.invoke(this.state);\n case 3:\n return this.state(container, key, this);\n case 4:\n return this.state[0].get(container, key);\n case 5:\n return container.get(this.state);\n default:\n throw new Error('Invalid strategy: ' + this.strategy);\n }\n }\n}) || _class);\n\nexport let Lazy = (_dec2 = resolver(), _dec2(_class2 = class Lazy {\n constructor(key) {\n this._key = key;\n }\n\n get(container) {\n return () => container.get(this._key);\n }\n\n static of(key) {\n return new Lazy(key);\n }\n}) || _class2);\n\nexport let All = (_dec3 = resolver(), _dec3(_class3 = class All {\n constructor(key) {\n this._key = key;\n }\n\n get(container) {\n return container.getAll(this._key);\n }\n\n static of(key) {\n return new All(key);\n }\n}) || _class3);\n\nexport let Optional = (_dec4 = resolver(), _dec4(_class4 = class Optional {\n constructor(key, checkParent = true) {\n this._key = key;\n this._checkParent = checkParent;\n }\n\n get(container) {\n if (container.hasResolver(this._key, this._checkParent)) {\n return container.get(this._key);\n }\n\n return null;\n }\n\n static of(key, checkParent = true) {\n return new Optional(key, checkParent);\n }\n}) || _class4);\n\nexport let Parent = (_dec5 = resolver(), _dec5(_class5 = class Parent {\n constructor(key) {\n this._key = key;\n }\n\n get(container) {\n return container.parent ? container.parent.get(this._key) : null;\n }\n\n static of(key) {\n return new Parent(key);\n }\n}) || _class5);\n\nexport let Factory = (_dec6 = resolver(), _dec6(_class6 = class Factory {\n constructor(key) {\n this._key = key;\n }\n\n get(container) {\n let fn = this._key;\n let resolver = container.getResolver(fn);\n if (resolver && resolver.strategy === 3) {\n fn = resolver.state;\n }\n\n return (...rest) => container.invoke(fn, rest);\n }\n\n static of(key) {\n return new Factory(key);\n }\n}) || _class6);\n\nexport let NewInstance = (_dec7 = resolver(), _dec7(_class7 = class NewInstance {\n constructor(key, ...dynamicDependencies) {\n this.key = key;\n this.asKey = key;\n this.dynamicDependencies = dynamicDependencies;\n }\n\n get(container) {\n let dynamicDependencies = this.dynamicDependencies.length > 0 ? this.dynamicDependencies.map(dependency => dependency['protocol:aurelia:resolver'] ? dependency.get(container) : container.get(dependency)) : undefined;\n\n let fn = this.key;\n let resolver = container.getResolver(fn);\n if (resolver && resolver.strategy === 3) {\n fn = resolver.state;\n }\n\n const instance = container.invoke(fn, dynamicDependencies);\n container.registerInstance(this.asKey, instance);\n return instance;\n }\n\n as(key) {\n this.asKey = key;\n return this;\n }\n\n static of(key, ...dynamicDependencies) {\n return new NewInstance(key, ...dynamicDependencies);\n }\n}) || _class7);\n\nexport function getDecoratorDependencies(target) {\n autoinject(target);\n\n return target.inject;\n}\n\nexport function lazy(keyValue) {\n return function (target, key, index) {\n let inject = getDecoratorDependencies(target);\n inject[index] = Lazy.of(keyValue);\n };\n}\n\nexport function all(keyValue) {\n return function (target, key, index) {\n let inject = getDecoratorDependencies(target);\n inject[index] = All.of(keyValue);\n };\n}\n\nexport function optional(checkParentOrTarget = true) {\n let deco = function (checkParent) {\n return function (target, key, index) {\n let inject = getDecoratorDependencies(target);\n inject[index] = Optional.of(inject[index], checkParent);\n };\n };\n if (typeof checkParentOrTarget === 'boolean') {\n return deco(checkParentOrTarget);\n }\n return deco(true);\n}\n\nexport function parent(target, key, index) {\n let inject = getDecoratorDependencies(target);\n inject[index] = Parent.of(inject[index]);\n}\n\nexport function factory(keyValue) {\n return function (target, key, index) {\n let inject = getDecoratorDependencies(target);\n inject[index] = Factory.of(keyValue);\n };\n}\n\nexport function newInstance(asKeyOrTarget, ...dynamicDependencies) {\n let deco = function (asKey) {\n return function (target, key, index) {\n let inject = getDecoratorDependencies(target);\n inject[index] = NewInstance.of(inject[index], ...dynamicDependencies);\n if (!!asKey) {\n inject[index].as(asKey);\n }\n };\n };\n if (arguments.length >= 1) {\n return deco(asKeyOrTarget);\n }\n return deco();\n}\n\nexport function invoker(value) {\n return function (target) {\n metadata.define(metadata.invoker, value, target);\n };\n}\n\nexport function invokeAsFactory(potentialTarget) {\n let deco = function (target) {\n metadata.define(metadata.invoker, FactoryInvoker.instance, target);\n };\n\n return potentialTarget ? deco(potentialTarget) : deco;\n}\n\nexport let FactoryInvoker = class FactoryInvoker {\n invoke(container, fn, dependencies) {\n let i = dependencies.length;\n let args = new Array(i);\n\n while (i--) {\n args[i] = container.get(dependencies[i]);\n }\n\n return fn.apply(undefined, args);\n }\n\n invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {\n let i = staticDependencies.length;\n let args = new Array(i);\n\n while (i--) {\n args[i] = container.get(staticDependencies[i]);\n }\n\n if (dynamicDependencies !== undefined) {\n args = args.concat(dynamicDependencies);\n }\n\n return fn.apply(undefined, args);\n }\n};\n\nFactoryInvoker.instance = new FactoryInvoker();\n\nexport function registration(value) {\n return function (target) {\n metadata.define(metadata.registration, value, target);\n };\n}\n\nexport function transient(key) {\n return registration(new TransientRegistration(key));\n}\n\nexport function singleton(keyOrRegisterInChild, registerInChild = false) {\n return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));\n}\n\nexport let TransientRegistration = class TransientRegistration {\n constructor(key) {\n this._key = key;\n }\n\n registerResolver(container, key, fn) {\n let existingResolver = container.getResolver(this._key || key);\n return existingResolver === undefined ? container.registerTransient(this._key || key, fn) : existingResolver;\n }\n};\n\nexport let SingletonRegistration = class SingletonRegistration {\n constructor(keyOrRegisterInChild, registerInChild = false) {\n if (typeof keyOrRegisterInChild === 'boolean') {\n this._registerInChild = keyOrRegisterInChild;\n } else {\n this._key = keyOrRegisterInChild;\n this._registerInChild = registerInChild;\n }\n }\n\n registerResolver(container, key, fn) {\n let targetContainer = this._registerInChild ? container : container.root;\n let existingResolver = targetContainer.getResolver(this._key || key);\n return existingResolver === undefined ? targetContainer.registerSingleton(this._key || key, fn) : existingResolver;\n }\n};\n\nfunction validateKey(key) {\n if (key === null || key === undefined) {\n throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\\'t exist with DI?');\n }\n}\nexport const _emptyParameters = Object.freeze([]);\n\nmetadata.registration = 'aurelia:registration';\nmetadata.invoker = 'aurelia:invoker';\n\nlet resolverDecorates = resolver.decorates;\n\nexport let InvocationHandler = class InvocationHandler {\n constructor(fn, invoker, dependencies) {\n this.fn = fn;\n this.invoker = invoker;\n this.dependencies = dependencies;\n }\n\n invoke(container, dynamicDependencies) {\n return dynamicDependencies !== undefined ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies) : this.invoker.invoke(container, this.fn, this.dependencies);\n }\n};\n\nfunction invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {\n let i = staticDependencies.length;\n let args = new Array(i);\n let lookup;\n\n while (i--) {\n lookup = staticDependencies[i];\n\n if (lookup === null || lookup === undefined) {\n throw new Error('Constructor Parameter with index ' + i + ' cannot be null or undefined. Are you trying to inject/register something that doesn\\'t exist with DI?');\n } else {\n args[i] = container.get(lookup);\n }\n }\n\n if (dynamicDependencies !== undefined) {\n args = args.concat(dynamicDependencies);\n }\n\n return Reflect.construct(fn, args);\n}\n\nlet classInvokers = {\n [0]: {\n invoke(container, Type) {\n return new Type();\n },\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n },\n [1]: {\n invoke(container, Type, deps) {\n return new Type(container.get(deps[0]));\n },\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n },\n [2]: {\n invoke(container, Type, deps) {\n return new Type(container.get(deps[0]), container.get(deps[1]));\n },\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n },\n [3]: {\n invoke(container, Type, deps) {\n return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]));\n },\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n },\n [4]: {\n invoke(container, Type, deps) {\n return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]), container.get(deps[3]));\n },\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n },\n [5]: {\n invoke(container, Type, deps) {\n return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]), container.get(deps[3]), container.get(deps[4]));\n },\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n },\n fallback: {\n invoke: invokeWithDynamicDependencies,\n invokeWithDynamicDependencies: invokeWithDynamicDependencies\n }\n};\n\nfunction getDependencies(f) {\n if (!f.hasOwnProperty('inject')) {\n return [];\n }\n\n if (typeof f.inject === 'function') {\n return f.inject();\n }\n\n return f.inject;\n}\n\nexport let Container = class Container {\n constructor(configuration) {\n if (configuration === undefined) {\n configuration = {};\n }\n\n this._configuration = configuration;\n this._onHandlerCreated = configuration.onHandlerCreated;\n this._handlers = configuration.handlers || (configuration.handlers = new Map());\n this._resolvers = new Map();\n this.root = this;\n this.parent = null;\n }\n\n makeGlobal() {\n Container.instance = this;\n return this;\n }\n\n setHandlerCreatedCallback(onHandlerCreated) {\n this._onHandlerCreated = onHandlerCreated;\n this._configuration.onHandlerCreated = onHandlerCreated;\n }\n\n registerInstance(key, instance) {\n return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));\n }\n\n registerSingleton(key, fn) {\n return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));\n }\n\n registerTransient(key, fn) {\n return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));\n }\n\n registerHandler(key, handler) {\n return this.registerResolver(key, new StrategyResolver(3, handler));\n }\n\n registerAlias(originalKey, aliasKey) {\n return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));\n }\n\n registerResolver(key, resolver) {\n validateKey(key);\n\n let allResolvers = this._resolvers;\n let result = allResolvers.get(key);\n\n if (result === undefined) {\n allResolvers.set(key, resolver);\n } else if (result.strategy === 4) {\n result.state.push(resolver);\n } else {\n allResolvers.set(key, new StrategyResolver(4, [result, resolver]));\n }\n\n return resolver;\n }\n\n autoRegister(key, fn) {\n fn = fn === undefined ? key : fn;\n\n if (typeof fn === 'function') {\n let registration = metadata.get(metadata.registration, fn);\n\n if (registration === undefined) {\n return this.registerResolver(key, new StrategyResolver(1, fn));\n }\n\n return registration.registerResolver(this, key, fn);\n }\n\n return this.registerResolver(key, new StrategyResolver(0, fn));\n }\n\n autoRegisterAll(fns) {\n let i = fns.length;\n while (i--) {\n this.autoRegister(fns[i]);\n }\n }\n\n unregister(key) {\n this._resolvers.delete(key);\n }\n\n hasResolver(key, checkParent = false) {\n validateKey(key);\n\n return this._resolvers.has(key) || checkParent && this.parent !== null && this.parent.hasResolver(key, checkParent);\n }\n\n getResolver(key) {\n return this._resolvers.get(key);\n }\n\n get(key) {\n validateKey(key);\n\n if (key === Container) {\n return this;\n }\n\n if (resolverDecorates(key)) {\n return key.get(this, key);\n }\n\n let resolver = this._resolvers.get(key);\n\n if (resolver === undefined) {\n if (this.parent === null) {\n return this.autoRegister(key).get(this, key);\n }\n\n let registration = metadata.get(metadata.registration, key);\n\n if (registration === undefined) {\n return this.parent._get(key);\n }\n\n return registration.registerResolver(this, key, key).get(this, key);\n }\n\n return resolver.get(this, key);\n }\n\n _get(key) {\n let resolver = this._resolvers.get(key);\n\n if (resolver === undefined) {\n if (this.parent === null) {\n return this.autoRegister(key).get(this, key);\n }\n\n return this.parent._get(key);\n }\n\n return resolver.get(this, key);\n }\n\n getAll(key) {\n validateKey(key);\n\n let resolver = this._resolvers.get(key);\n\n if (resolver === undefined) {\n if (this.parent === null) {\n return _emptyParameters;\n }\n\n return this.parent.getAll(key);\n }\n\n if (resolver.strategy === 4) {\n let state = resolver.state;\n let i = state.length;\n let results = new Array(i);\n\n while (i--) {\n results[i] = state[i].get(this, key);\n }\n\n return results;\n }\n\n return [resolver.get(this, key)];\n }\n\n createChild() {\n let child = new Container(this._configuration);\n child.root = this.root;\n child.parent = this;\n return child;\n }\n\n invoke(fn, dynamicDependencies) {\n try {\n let handler = this._handlers.get(fn);\n\n if (handler === undefined) {\n handler = this._createInvocationHandler(fn);\n this._handlers.set(fn, handler);\n }\n\n return handler.invoke(this, dynamicDependencies);\n } catch (e) {\n throw new AggregateError(`Error invoking ${fn.name}. Check the inner error for details.`, e, true);\n }\n }\n\n _createInvocationHandler(fn) {\n let dependencies;\n\n if (fn.inject === undefined) {\n dependencies = metadata.getOwn(metadata.paramTypes, fn) || _emptyParameters;\n } else {\n dependencies = [];\n let ctor = fn;\n while (typeof ctor === 'function') {\n dependencies.push(...getDependencies(ctor));\n ctor = Object.getPrototypeOf(ctor);\n }\n }\n\n let invoker = metadata.getOwn(metadata.invoker, fn) || classInvokers[dependencies.length] || classInvokers.fallback;\n\n let handler = new InvocationHandler(fn, invoker, dependencies);\n return this._onHandlerCreated !== undefined ? this._onHandlerCreated(handler) : handler;\n }\n};\n\nexport function autoinject(potentialTarget) {\n let deco = function (target) {\n if (!target.hasOwnProperty('inject')) {\n target.inject = (metadata.getOwn(metadata.paramTypes, target) || _emptyParameters).slice();\n\n if (target.inject.length > 0 && target.inject[target.inject.length - 1] === Object) {\n target.inject.pop();\n }\n }\n };\n\n return potentialTarget ? deco(potentialTarget) : deco;\n}\n\nexport function inject(...rest) {\n return function (target, key, descriptor) {\n if (typeof descriptor === 'number') {\n autoinject(target);\n if (rest.length === 1) {\n target.inject[descriptor] = rest[0];\n }\n return;\n }\n\n if (descriptor) {\n const fn = descriptor.value;\n fn.inject = rest;\n } else {\n target.inject = rest;\n }\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-dependency-injection/dist/es2015/aurelia-dependency-injection.js\n// module id = aurelia-dependency-injection\n// module chunks = 2","\n\nimport * as LogManager from 'aurelia-logging';\n\nvar logger = LogManager.getLogger('event-aggregator');\n\nvar Handler = function () {\n function Handler(messageType, callback) {\n \n\n this.messageType = messageType;\n this.callback = callback;\n }\n\n Handler.prototype.handle = function handle(message) {\n if (message instanceof this.messageType) {\n this.callback.call(null, message);\n }\n };\n\n return Handler;\n}();\n\nfunction invokeCallback(callback, data, event) {\n try {\n callback(data, event);\n } catch (e) {\n logger.error(e);\n }\n}\n\nfunction invokeHandler(handler, data) {\n try {\n handler.handle(data);\n } catch (e) {\n logger.error(e);\n }\n}\n\nexport var EventAggregator = function () {\n function EventAggregator() {\n \n\n this.eventLookup = {};\n this.messageHandlers = [];\n }\n\n EventAggregator.prototype.publish = function publish(event, data) {\n var subscribers = void 0;\n var i = void 0;\n\n if (!event) {\n throw new Error('Event was invalid.');\n }\n\n if (typeof event === 'string') {\n subscribers = this.eventLookup[event];\n if (subscribers) {\n subscribers = subscribers.slice();\n i = subscribers.length;\n\n while (i--) {\n invokeCallback(subscribers[i], data, event);\n }\n }\n } else {\n subscribers = this.messageHandlers.slice();\n i = subscribers.length;\n\n while (i--) {\n invokeHandler(subscribers[i], event);\n }\n }\n };\n\n EventAggregator.prototype.subscribe = function subscribe(event, callback) {\n var handler = void 0;\n var subscribers = void 0;\n\n if (!event) {\n throw new Error('Event channel/type was invalid.');\n }\n\n if (typeof event === 'string') {\n handler = callback;\n subscribers = this.eventLookup[event] || (this.eventLookup[event] = []);\n } else {\n handler = new Handler(event, callback);\n subscribers = this.messageHandlers;\n }\n\n subscribers.push(handler);\n\n return {\n dispose: function dispose() {\n var idx = subscribers.indexOf(handler);\n if (idx !== -1) {\n subscribers.splice(idx, 1);\n }\n }\n };\n };\n\n EventAggregator.prototype.subscribeOnce = function subscribeOnce(event, callback) {\n var sub = this.subscribe(event, function (a, b) {\n sub.dispose();\n return callback(a, b);\n });\n\n return sub;\n };\n\n return EventAggregator;\n}();\n\nexport function includeEventsIn(obj) {\n var ea = new EventAggregator();\n\n obj.subscribeOnce = function (event, callback) {\n return ea.subscribeOnce(event, callback);\n };\n\n obj.subscribe = function (event, callback) {\n return ea.subscribe(event, callback);\n };\n\n obj.publish = function (event, data) {\n ea.publish(event, data);\n };\n\n return ea;\n}\n\nexport function configure(config) {\n config.instance(EventAggregator, includeEventsIn(config.aurelia));\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-event-aggregator/dist/native-modules/aurelia-event-aggregator.js\n// module id = aurelia-event-aggregator\n// module chunks = 2","import * as TheLogManager from 'aurelia-logging';\nimport { Container } from 'aurelia-dependency-injection';\nimport { Loader } from 'aurelia-loader';\nimport { BindingLanguage, ViewSlot, ViewResources, TemplatingEngine, CompositionTransaction, ViewEngine, HtmlBehaviorResource } from 'aurelia-templating';\nimport { DOM, PLATFORM } from 'aurelia-pal';\nimport { relativeToFile, join } from 'aurelia-path';\n\nfunction preventActionlessFormSubmit() {\n DOM.addEventListener('submit', evt => {\n const target = evt.target;\n const action = target.action;\n\n if (target.tagName.toLowerCase() === 'form' && !action) {\n evt.preventDefault();\n }\n });\n}\n\nexport let Aurelia = class Aurelia {\n constructor(loader, container, resources) {\n this.loader = loader || new PLATFORM.Loader();\n this.container = container || new Container().makeGlobal();\n this.resources = resources || new ViewResources();\n this.use = new FrameworkConfiguration(this);\n this.logger = TheLogManager.getLogger('aurelia');\n this.hostConfigured = false;\n this.host = null;\n\n this.use.instance(Aurelia, this);\n this.use.instance(Loader, this.loader);\n this.use.instance(ViewResources, this.resources);\n }\n\n start() {\n if (this._started) {\n return this._started;\n }\n\n this.logger.info('Aurelia Starting');\n return this._started = this.use.apply().then(() => {\n preventActionlessFormSubmit();\n\n if (!this.container.hasResolver(BindingLanguage)) {\n let message = 'You must configure Aurelia with a BindingLanguage implementation.';\n this.logger.error(message);\n throw new Error(message);\n }\n\n this.logger.info('Aurelia Started');\n let evt = DOM.createCustomEvent('aurelia-started', { bubbles: true, cancelable: true });\n DOM.dispatchEvent(evt);\n return this;\n });\n }\n\n enhance(bindingContext = {}, applicationHost = null) {\n this._configureHost(applicationHost || DOM.querySelectorAll('body')[0]);\n\n return new Promise(resolve => {\n let engine = this.container.get(TemplatingEngine);\n this.root = engine.enhance({ container: this.container, element: this.host, resources: this.resources, bindingContext: bindingContext });\n this.root.attached();\n this._onAureliaComposed();\n resolve(this);\n });\n }\n\n setRoot(root = null, applicationHost = null) {\n let instruction = {};\n\n if (this.root && this.root.viewModel && this.root.viewModel.router) {\n this.root.viewModel.router.deactivate();\n this.root.viewModel.router.reset();\n }\n\n this._configureHost(applicationHost);\n\n let engine = this.container.get(TemplatingEngine);\n let transaction = this.container.get(CompositionTransaction);\n delete transaction.initialComposition;\n\n if (!root) {\n if (this.configModuleId) {\n root = relativeToFile('./app', this.configModuleId);\n } else {\n root = 'app';\n }\n }\n\n instruction.viewModel = root;\n instruction.container = instruction.childContainer = this.container;\n instruction.viewSlot = this.hostSlot;\n instruction.host = this.host;\n\n return engine.compose(instruction).then(r => {\n this.root = r;\n instruction.viewSlot.attached();\n this._onAureliaComposed();\n return this;\n });\n }\n\n _configureHost(applicationHost) {\n if (this.hostConfigured) {\n return;\n }\n applicationHost = applicationHost || this.host;\n\n if (!applicationHost || typeof applicationHost === 'string') {\n this.host = DOM.getElementById(applicationHost || 'applicationHost');\n } else {\n this.host = applicationHost;\n }\n\n if (!this.host) {\n throw new Error('No applicationHost was specified.');\n }\n\n this.hostConfigured = true;\n this.host.aurelia = this;\n this.hostSlot = new ViewSlot(this.host, true);\n this.hostSlot.transformChildNodesIntoView();\n this.container.registerInstance(DOM.boundary, this.host);\n }\n\n _onAureliaComposed() {\n let evt = DOM.createCustomEvent('aurelia-composed', { bubbles: true, cancelable: true });\n setTimeout(() => DOM.dispatchEvent(evt), 1);\n }\n};\n\nconst logger = TheLogManager.getLogger('aurelia');\nconst extPattern = /\\.[^/.]+$/;\n\nfunction runTasks(config, tasks) {\n let current;\n let next = () => {\n current = tasks.shift();\n if (current) {\n return Promise.resolve(current(config)).then(next);\n }\n\n return Promise.resolve();\n };\n\n return next();\n}\n\nfunction loadPlugin(fwConfig, loader, info) {\n logger.debug(`Loading plugin ${info.moduleId}.`);\n if (typeof info.moduleId === 'string') {\n fwConfig.resourcesRelativeTo = info.resourcesRelativeTo;\n\n let id = info.moduleId;\n\n if (info.resourcesRelativeTo.length > 1) {\n return loader.normalize(info.moduleId, info.resourcesRelativeTo[1]).then(normalizedId => _loadPlugin(normalizedId));\n }\n\n return _loadPlugin(id);\n } else if (typeof info.configure === 'function') {\n if (fwConfig.configuredPlugins.indexOf(info.configure) !== -1) {\n return Promise.resolve();\n }\n fwConfig.configuredPlugins.push(info.configure);\n\n return Promise.resolve(info.configure.call(null, fwConfig, info.config || {}));\n }\n throw new Error(invalidConfigMsg(info.moduleId || info.configure, 'plugin'));\n\n function _loadPlugin(moduleId) {\n return loader.loadModule(moduleId).then(m => {\n if ('configure' in m) {\n if (fwConfig.configuredPlugins.indexOf(m.configure) !== -1) {\n return Promise.resolve();\n }\n return Promise.resolve(m.configure(fwConfig, info.config || {})).then(() => {\n fwConfig.configuredPlugins.push(m.configure);\n fwConfig.resourcesRelativeTo = null;\n logger.debug(`Configured plugin ${info.moduleId}.`);\n });\n }\n\n fwConfig.resourcesRelativeTo = null;\n logger.debug(`Loaded plugin ${info.moduleId}.`);\n });\n }\n}\n\nfunction loadResources(aurelia, resourcesToLoad, appResources) {\n if (Object.keys(resourcesToLoad).length === 0) {\n return Promise.resolve();\n }\n let viewEngine = aurelia.container.get(ViewEngine);\n\n return Promise.all(Object.keys(resourcesToLoad).map(n => _normalize(resourcesToLoad[n]))).then(loads => {\n let names = [];\n let importIds = [];\n\n loads.forEach(l => {\n names.push(undefined);\n importIds.push(l.importId);\n });\n\n return viewEngine.importViewResources(importIds, names, appResources);\n });\n\n function _normalize(load) {\n let moduleId = load.moduleId;\n let ext = getExt(moduleId);\n\n if (isOtherResource(moduleId)) {\n moduleId = removeExt(moduleId);\n }\n\n return aurelia.loader.normalize(moduleId, load.relativeTo).then(normalized => {\n return {\n name: load.moduleId,\n importId: isOtherResource(load.moduleId) ? addOriginalExt(normalized, ext) : normalized\n };\n });\n }\n\n function isOtherResource(name) {\n let ext = getExt(name);\n if (!ext) return false;\n if (ext === '') return false;\n if (ext === '.js' || ext === '.ts') return false;\n return true;\n }\n\n function removeExt(name) {\n return name.replace(extPattern, '');\n }\n\n function addOriginalExt(normalized, ext) {\n return removeExt(normalized) + '.' + ext;\n }\n}\n\nfunction getExt(name) {\n let match = name.match(extPattern);\n if (match && match.length > 0) {\n return match[0].split('.')[1];\n }\n}\n\nfunction loadBehaviors(config) {\n return Promise.all(config.behaviorsToLoad.map(m => m.load(config.container, m.target))).then(() => {\n config.behaviorsToLoad = null;\n });\n}\n\nfunction assertProcessed(plugins) {\n if (plugins.processed) {\n throw new Error('This config instance has already been applied. To load more plugins or global resources, create a new FrameworkConfiguration instance.');\n }\n}\n\nfunction invalidConfigMsg(cfg, type) {\n return `Invalid ${type} [${cfg}], ${type} must be specified as functions or relative module IDs.`;\n}\n\nexport let FrameworkConfiguration = class FrameworkConfiguration {\n constructor(aurelia) {\n this.aurelia = aurelia;\n this.container = aurelia.container;\n\n this.info = [];\n this.processed = false;\n this.preTasks = [];\n this.postTasks = [];\n\n this.behaviorsToLoad = [];\n\n this.configuredPlugins = [];\n this.resourcesToLoad = {};\n this.preTask(() => aurelia.loader.normalize('aurelia-bootstrapper').then(name => this.bootstrapperName = name));\n this.postTask(() => loadResources(aurelia, this.resourcesToLoad, aurelia.resources));\n }\n\n instance(type, instance) {\n this.container.registerInstance(type, instance);\n return this;\n }\n\n singleton(type, implementation) {\n this.container.registerSingleton(type, implementation);\n return this;\n }\n\n transient(type, implementation) {\n this.container.registerTransient(type, implementation);\n return this;\n }\n\n preTask(task) {\n assertProcessed(this);\n this.preTasks.push(task);\n return this;\n }\n\n postTask(task) {\n assertProcessed(this);\n this.postTasks.push(task);\n return this;\n }\n\n feature(plugin, config = {}) {\n switch (typeof plugin) {\n case 'string':\n let hasIndex = /\\/index$/i.test(plugin);\n let moduleId = hasIndex || getExt(plugin) ? plugin : plugin + '/index';\n let root = hasIndex ? plugin.substr(0, plugin.length - 6) : plugin;\n this.info.push({ moduleId, resourcesRelativeTo: [root, ''], config });\n break;\n\n case 'function':\n this.info.push({ configure: plugin, config: config || {} });\n break;\n default:\n throw new Error(invalidConfigMsg(plugin, 'feature'));\n }\n return this;\n }\n\n globalResources(resources) {\n assertProcessed(this);\n\n let toAdd = Array.isArray(resources) ? resources : arguments;\n let resource;\n let resourcesRelativeTo = this.resourcesRelativeTo || ['', ''];\n\n for (let i = 0, ii = toAdd.length; i < ii; ++i) {\n resource = toAdd[i];\n switch (typeof resource) {\n case 'string':\n let parent = resourcesRelativeTo[0];\n let grandParent = resourcesRelativeTo[1];\n let name = resource;\n\n if ((resource.startsWith('./') || resource.startsWith('../')) && parent !== '') {\n name = join(parent, resource);\n }\n\n this.resourcesToLoad[name] = { moduleId: name, relativeTo: grandParent };\n break;\n case 'function':\n let meta = this.aurelia.resources.autoRegister(this.container, resource);\n if (meta instanceof HtmlBehaviorResource && meta.elementName !== null) {\n if (this.behaviorsToLoad.push(meta) === 1) {\n this.postTask(() => loadBehaviors(this));\n }\n }\n break;\n default:\n throw new Error(invalidConfigMsg(resource, 'resource'));\n }\n }\n\n return this;\n }\n\n globalName(resourcePath, newName) {\n assertProcessed(this);\n this.resourcesToLoad[resourcePath] = { moduleId: newName, relativeTo: '' };\n return this;\n }\n\n plugin(plugin, pluginConfig) {\n assertProcessed(this);\n\n let info;\n switch (typeof plugin) {\n case 'string':\n info = { moduleId: plugin, resourcesRelativeTo: [plugin, ''], config: pluginConfig || {} };\n break;\n case 'function':\n info = { configure: plugin, config: pluginConfig || {} };\n break;\n default:\n throw new Error(invalidConfigMsg(plugin, 'plugin'));\n }\n this.info.push(info);\n return this;\n }\n\n _addNormalizedPlugin(name, config) {\n let plugin = { moduleId: name, resourcesRelativeTo: [name, ''], config: config || {} };\n this.info.push(plugin);\n\n this.preTask(() => {\n let relativeTo = [name, this.bootstrapperName];\n plugin.moduleId = name;\n plugin.resourcesRelativeTo = relativeTo;\n return Promise.resolve();\n });\n\n return this;\n }\n\n defaultBindingLanguage() {\n return this._addNormalizedPlugin('aurelia-templating-binding');\n }\n\n router() {\n return this._addNormalizedPlugin('aurelia-templating-router');\n }\n\n history() {\n return this._addNormalizedPlugin('aurelia-history-browser');\n }\n\n defaultResources() {\n return this._addNormalizedPlugin('aurelia-templating-resources');\n }\n\n eventAggregator() {\n return this._addNormalizedPlugin('aurelia-event-aggregator');\n }\n\n basicConfiguration() {\n return this.defaultBindingLanguage().defaultResources().eventAggregator();\n }\n\n standardConfiguration() {\n return this.basicConfiguration().history().router();\n }\n\n developmentLogging(level) {\n let logLevel = level ? TheLogManager.logLevel[level] : undefined;\n\n if (logLevel === undefined) {\n logLevel = TheLogManager.logLevel.debug;\n }\n\n this.preTask(() => {\n return this.aurelia.loader.normalize('aurelia-logging-console', this.bootstrapperName).then(name => {\n return this.aurelia.loader.loadModule(name).then(m => {\n TheLogManager.addAppender(new m.ConsoleAppender());\n TheLogManager.setLevel(logLevel);\n });\n });\n });\n\n return this;\n }\n\n apply() {\n if (this.processed) {\n return Promise.resolve();\n }\n\n return runTasks(this, this.preTasks).then(() => {\n let loader = this.aurelia.loader;\n let info = this.info;\n let current;\n\n let next = () => {\n current = info.shift();\n if (current) {\n return loadPlugin(this, loader, current).then(next);\n }\n\n this.processed = true;\n this.configuredPlugins = null;\n return Promise.resolve();\n };\n\n return next().then(() => runTasks(this, this.postTasks));\n });\n }\n};\n\nexport * from 'aurelia-dependency-injection';\nexport * from 'aurelia-binding';\nexport * from 'aurelia-metadata';\nexport * from 'aurelia-templating';\nexport * from 'aurelia-loader';\nexport * from 'aurelia-task-queue';\nexport * from 'aurelia-path';\nexport * from 'aurelia-pal';\n\nexport const LogManager = TheLogManager;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-framework/dist/es2015/aurelia-framework.js\n// module id = aurelia-framework\n// module chunks = 2","import { History } from 'aurelia-history';\nimport { DOM, PLATFORM } from 'aurelia-pal';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\n\nvar LinkHandler = (function () {\r\n function LinkHandler() {\r\n }\r\n LinkHandler.prototype.activate = function (history) { };\r\n LinkHandler.prototype.deactivate = function () { };\r\n return LinkHandler;\r\n}());\r\nvar DefaultLinkHandler = (function (_super) {\r\n __extends(DefaultLinkHandler, _super);\r\n function DefaultLinkHandler() {\r\n var _this = _super.call(this) || this;\r\n _this.handler = function (e) {\r\n var _a = DefaultLinkHandler.getEventInfo(e), shouldHandleEvent = _a.shouldHandleEvent, href = _a.href;\r\n if (shouldHandleEvent) {\r\n e.preventDefault();\r\n _this.history.navigate(href);\r\n }\r\n };\r\n return _this;\r\n }\r\n DefaultLinkHandler.prototype.activate = function (history) {\r\n if (history._hasPushState) {\r\n this.history = history;\r\n DOM.addEventListener('click', this.handler, true);\r\n }\r\n };\r\n DefaultLinkHandler.prototype.deactivate = function () {\r\n DOM.removeEventListener('click', this.handler, true);\r\n };\r\n DefaultLinkHandler.getEventInfo = function (event) {\r\n var $event = event;\r\n var info = {\r\n shouldHandleEvent: false,\r\n href: null,\r\n anchor: null\r\n };\r\n var target = DefaultLinkHandler.findClosestAnchor($event.target);\r\n if (!target || !DefaultLinkHandler.targetIsThisWindow(target)) {\r\n return info;\r\n }\r\n if (hasAttribute(target, 'download')\r\n || hasAttribute(target, 'router-ignore')\r\n || hasAttribute(target, 'data-router-ignore')) {\r\n return info;\r\n }\r\n if ($event.altKey || $event.ctrlKey || $event.metaKey || $event.shiftKey) {\r\n return info;\r\n }\r\n var href = target.getAttribute('href');\r\n info.anchor = target;\r\n info.href = href;\r\n var leftButtonClicked = $event.which === 1;\r\n var isRelative = href && !(href.charAt(0) === '#' || (/^[a-z]+:/i).test(href));\r\n info.shouldHandleEvent = leftButtonClicked && isRelative;\r\n return info;\r\n };\r\n DefaultLinkHandler.findClosestAnchor = function (el) {\r\n while (el) {\r\n if (el.tagName === 'A') {\r\n return el;\r\n }\r\n el = el.parentNode;\r\n }\r\n };\r\n DefaultLinkHandler.targetIsThisWindow = function (target) {\r\n var targetWindow = target.getAttribute('target');\r\n var win = PLATFORM.global;\r\n return !targetWindow ||\r\n targetWindow === win.name ||\r\n targetWindow === '_self';\r\n };\r\n return DefaultLinkHandler;\r\n}(LinkHandler));\r\nvar hasAttribute = function (el, attr) { return el.hasAttribute(attr); };\n\nvar BrowserHistory = (function (_super) {\r\n __extends(BrowserHistory, _super);\r\n function BrowserHistory(linkHandler) {\r\n var _this = _super.call(this) || this;\r\n _this._isActive = false;\r\n _this._checkUrlCallback = _this._checkUrl.bind(_this);\r\n _this.location = PLATFORM.location;\r\n _this.history = PLATFORM.history;\r\n _this.linkHandler = linkHandler;\r\n return _this;\r\n }\r\n BrowserHistory.prototype.activate = function (options) {\r\n if (this._isActive) {\r\n throw new Error('History has already been activated.');\r\n }\r\n var $history = this.history;\r\n var wantsPushState = !!options.pushState;\r\n this._isActive = true;\r\n var normalizedOptions = this.options = Object.assign({}, { root: '/' }, this.options, options);\r\n var rootUrl = this.root = ('/' + normalizedOptions.root + '/').replace(rootStripper, '/');\r\n var wantsHashChange = this._wantsHashChange = normalizedOptions.hashChange !== false;\r\n var hasPushState = this._hasPushState = !!(normalizedOptions.pushState && $history && $history.pushState);\r\n var eventName;\r\n if (hasPushState) {\r\n eventName = 'popstate';\r\n }\r\n else if (wantsHashChange) {\r\n eventName = 'hashchange';\r\n }\r\n PLATFORM.addEventListener(eventName, this._checkUrlCallback);\r\n if (wantsHashChange && wantsPushState) {\r\n var $location = this.location;\r\n var atRoot = $location.pathname.replace(/[^\\/]$/, '$&/') === rootUrl;\r\n if (!hasPushState && !atRoot) {\r\n var fragment = this.fragment = this._getFragment(null, true);\r\n $location.replace(rootUrl + $location.search + '#' + fragment);\r\n return true;\r\n }\r\n else if (hasPushState && atRoot && $location.hash) {\r\n var fragment = this.fragment = this._getHash().replace(routeStripper, '');\r\n $history.replaceState({}, DOM.title, rootUrl + fragment + $location.search);\r\n }\r\n }\r\n if (!this.fragment) {\r\n this.fragment = this._getFragment('');\r\n }\r\n this.linkHandler.activate(this);\r\n if (!normalizedOptions.silent) {\r\n return this._loadUrl('');\r\n }\r\n };\r\n BrowserHistory.prototype.deactivate = function () {\r\n var handler = this._checkUrlCallback;\r\n PLATFORM.removeEventListener('popstate', handler);\r\n PLATFORM.removeEventListener('hashchange', handler);\r\n this._isActive = false;\r\n this.linkHandler.deactivate();\r\n };\r\n BrowserHistory.prototype.getAbsoluteRoot = function () {\r\n var $location = this.location;\r\n var origin = createOrigin($location.protocol, $location.hostname, $location.port);\r\n return \"\" + origin + this.root;\r\n };\r\n BrowserHistory.prototype.navigate = function (fragment, _a) {\r\n var _b = _a === void 0 ? {} : _a, _c = _b.trigger, trigger = _c === void 0 ? true : _c, _d = _b.replace, replace = _d === void 0 ? false : _d;\r\n var location = this.location;\r\n if (fragment && absoluteUrl.test(fragment)) {\r\n location.href = fragment;\r\n return true;\r\n }\r\n if (!this._isActive) {\r\n return false;\r\n }\r\n fragment = this._getFragment(fragment || '');\r\n if (this.fragment === fragment && !replace) {\r\n return false;\r\n }\r\n this.fragment = fragment;\r\n var url = this.root + fragment;\r\n if (fragment === '' && url !== '/') {\r\n url = url.slice(0, -1);\r\n }\r\n if (this._hasPushState) {\r\n url = url.replace('//', '/');\r\n this.history[replace ? 'replaceState' : 'pushState']({}, DOM.title, url);\r\n }\r\n else if (this._wantsHashChange) {\r\n updateHash(location, fragment, replace);\r\n }\r\n else {\r\n location.assign(url);\r\n }\r\n if (trigger) {\r\n return this._loadUrl(fragment);\r\n }\r\n return true;\r\n };\r\n BrowserHistory.prototype.navigateBack = function () {\r\n this.history.back();\r\n };\r\n BrowserHistory.prototype.setTitle = function (title) {\r\n DOM.title = title;\r\n };\r\n BrowserHistory.prototype.setState = function (key, value) {\r\n var $history = this.history;\r\n var state = Object.assign({}, $history.state);\r\n var _a = this.location, pathname = _a.pathname, search = _a.search, hash = _a.hash;\r\n state[key] = value;\r\n $history.replaceState(state, null, \"\" + pathname + search + hash);\r\n };\r\n BrowserHistory.prototype.getState = function (key) {\r\n var state = Object.assign({}, this.history.state);\r\n return state[key];\r\n };\r\n BrowserHistory.prototype.getHistoryIndex = function () {\r\n var historyIndex = this.getState('HistoryIndex');\r\n if (historyIndex === undefined) {\r\n historyIndex = this.history.length - 1;\r\n this.setState('HistoryIndex', historyIndex);\r\n }\r\n return historyIndex;\r\n };\r\n BrowserHistory.prototype.go = function (movement) {\r\n this.history.go(movement);\r\n };\r\n BrowserHistory.prototype._getHash = function () {\r\n return this.location.hash.substr(1);\r\n };\r\n BrowserHistory.prototype._getFragment = function (fragment, forcePushState) {\r\n var rootUrl;\r\n if (!fragment) {\r\n if (this._hasPushState || !this._wantsHashChange || forcePushState) {\r\n var location_1 = this.location;\r\n fragment = location_1.pathname + location_1.search;\r\n rootUrl = this.root.replace(trailingSlash, '');\r\n if (!fragment.indexOf(rootUrl)) {\r\n fragment = fragment.substr(rootUrl.length);\r\n }\r\n }\r\n else {\r\n fragment = this._getHash();\r\n }\r\n }\r\n return '/' + fragment.replace(routeStripper, '');\r\n };\r\n BrowserHistory.prototype._checkUrl = function () {\r\n var current = this._getFragment('');\r\n if (current !== this.fragment) {\r\n this._loadUrl('');\r\n }\r\n };\r\n BrowserHistory.prototype._loadUrl = function (fragmentOverride) {\r\n var fragment = this.fragment = this._getFragment(fragmentOverride);\r\n return this.options.routeHandler ?\r\n this.options.routeHandler(fragment) :\r\n false;\r\n };\r\n BrowserHistory.inject = [LinkHandler];\r\n return BrowserHistory;\r\n}(History));\r\nvar routeStripper = /^#?\\/*|\\s+$/g;\r\nvar rootStripper = /^\\/+|\\/+$/g;\r\nvar trailingSlash = /\\/$/;\r\nvar absoluteUrl = /^([a-z][a-z0-9+\\-.]*:)?\\/\\//i;\r\nfunction updateHash($location, fragment, replace) {\r\n if (replace) {\r\n var href = $location.href.replace(/(javascript:|#).*$/, '');\r\n $location.replace(href + '#' + fragment);\r\n }\r\n else {\r\n $location.hash = '#' + fragment;\r\n }\r\n}\r\nfunction createOrigin(protocol, hostname, port) {\r\n return protocol + \"//\" + hostname + (port ? ':' + port : '');\r\n}\n\nfunction configure(config) {\r\n var $config = config;\r\n $config.singleton(History, BrowserHistory);\r\n $config.transient(LinkHandler, DefaultLinkHandler);\r\n}\n\nexport { BrowserHistory, DefaultLinkHandler, LinkHandler, configure };\n//# sourceMappingURL=aurelia-history-browser.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-history-browser/dist/native-modules/aurelia-history-browser.js\n// module id = aurelia-history-browser\n// module chunks = 2","\n\nexport var ConsoleAppender = function () {\n function ConsoleAppender() {\n \n }\n\n ConsoleAppender.prototype.debug = function debug(logger) {\n var _console;\n\n for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n (_console = console).debug.apply(_console, [\"DEBUG [\" + logger.id + \"]\"].concat(rest));\n };\n\n ConsoleAppender.prototype.info = function info(logger) {\n var _console2;\n\n for (var _len2 = arguments.length, rest = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n rest[_key2 - 1] = arguments[_key2];\n }\n\n (_console2 = console).info.apply(_console2, [\"INFO [\" + logger.id + \"]\"].concat(rest));\n };\n\n ConsoleAppender.prototype.warn = function warn(logger) {\n var _console3;\n\n for (var _len3 = arguments.length, rest = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n rest[_key3 - 1] = arguments[_key3];\n }\n\n (_console3 = console).warn.apply(_console3, [\"WARN [\" + logger.id + \"]\"].concat(rest));\n };\n\n ConsoleAppender.prototype.error = function error(logger) {\n var _console4;\n\n for (var _len4 = arguments.length, rest = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n rest[_key4 - 1] = arguments[_key4];\n }\n\n (_console4 = console).error.apply(_console4, [\"ERROR [\" + logger.id + \"]\"].concat(rest));\n };\n\n return ConsoleAppender;\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-logging-console/dist/native-modules/aurelia-logging-console.js\n// module id = aurelia-logging-console\n// module chunks = 2","\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}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-route-recognizer/dist/native-modules/aurelia-route-recognizer.js\n// module id = aurelia-route-recognizer\n// module chunks = 2","import { getLogger } from 'aurelia-logging';\nimport { Container } from 'aurelia-dependency-injection';\nimport { History } from 'aurelia-history';\nimport { RouteRecognizer } from 'aurelia-route-recognizer';\nimport { EventAggregator } from 'aurelia-event-aggregator';\n\n/**\r\n * Class used to represent an instruction during a navigation.\r\n */\r\nclass NavigationInstruction {\r\n constructor(init) {\r\n /**\r\n * Current built viewport plan of this nav instruction\r\n */\r\n this.plan = null;\r\n this.options = {};\r\n Object.assign(this, init);\r\n this.params = this.params || {};\r\n this.viewPortInstructions = {};\r\n let ancestorParams = [];\r\n let current = this;\r\n do {\r\n let currentParams = Object.assign({}, current.params);\r\n if (current.config && current.config.hasChildRouter) {\r\n // remove the param for the injected child route segment\r\n delete currentParams[current.getWildCardName()];\r\n }\r\n ancestorParams.unshift(currentParams);\r\n current = current.parentInstruction;\r\n } while (current);\r\n let allParams = Object.assign({}, this.queryParams, ...ancestorParams);\r\n this.lifecycleArgs = [allParams, this.config, this];\r\n }\r\n /**\r\n * Gets an array containing this instruction and all child instructions for the current navigation.\r\n */\r\n getAllInstructions() {\r\n let instructions = [this];\r\n let viewPortInstructions = this.viewPortInstructions;\r\n for (let key in viewPortInstructions) {\r\n let childInstruction = viewPortInstructions[key].childNavigationInstruction;\r\n if (childInstruction) {\r\n instructions.push(...childInstruction.getAllInstructions());\r\n }\r\n }\r\n return instructions;\r\n }\r\n /**\r\n * Gets an array containing the instruction and all child instructions for the previous navigation.\r\n * Previous instructions are no longer available after navigation completes.\r\n */\r\n getAllPreviousInstructions() {\r\n return this.getAllInstructions().map(c => c.previousInstruction).filter(c => c);\r\n }\r\n addViewPortInstruction(nameOrInitOptions, strategy, moduleId, component) {\r\n let viewPortInstruction;\r\n let viewPortName = typeof nameOrInitOptions === 'string' ? nameOrInitOptions : nameOrInitOptions.name;\r\n const lifecycleArgs = this.lifecycleArgs;\r\n const config = Object.assign({}, lifecycleArgs[1], { currentViewPort: viewPortName });\r\n if (typeof nameOrInitOptions === 'string') {\r\n viewPortInstruction = {\r\n name: nameOrInitOptions,\r\n strategy: strategy,\r\n moduleId: moduleId,\r\n component: component,\r\n childRouter: component.childRouter,\r\n lifecycleArgs: [lifecycleArgs[0], config, lifecycleArgs[2]]\r\n };\r\n }\r\n else {\r\n viewPortInstruction = {\r\n name: viewPortName,\r\n strategy: nameOrInitOptions.strategy,\r\n component: nameOrInitOptions.component,\r\n moduleId: nameOrInitOptions.moduleId,\r\n childRouter: nameOrInitOptions.component.childRouter,\r\n lifecycleArgs: [lifecycleArgs[0], config, lifecycleArgs[2]]\r\n };\r\n }\r\n return this.viewPortInstructions[viewPortName] = viewPortInstruction;\r\n }\r\n /**\r\n * Gets the name of the route pattern's wildcard parameter, if applicable.\r\n */\r\n getWildCardName() {\r\n // todo: potential issue, or at least unsafe typings\r\n let configRoute = this.config.route;\r\n let wildcardIndex = configRoute.lastIndexOf('*');\r\n return configRoute.substr(wildcardIndex + 1);\r\n }\r\n /**\r\n * Gets the path and query string created by filling the route\r\n * pattern's wildcard parameter with the matching param.\r\n */\r\n getWildcardPath() {\r\n let wildcardName = this.getWildCardName();\r\n let path = this.params[wildcardName] || '';\r\n let queryString = this.queryString;\r\n if (queryString) {\r\n path += '?' + queryString;\r\n }\r\n return path;\r\n }\r\n /**\r\n * Gets the instruction's base URL, accounting for wildcard route parameters.\r\n */\r\n getBaseUrl() {\r\n let $encodeURI = encodeURI;\r\n let fragment = decodeURI(this.fragment);\r\n if (fragment === '') {\r\n let nonEmptyRoute = this.router.routes.find(route => {\r\n return route.name === this.config.name &&\r\n route.route !== '';\r\n });\r\n if (nonEmptyRoute) {\r\n fragment = nonEmptyRoute.route;\r\n }\r\n }\r\n if (!this.params) {\r\n return $encodeURI(fragment);\r\n }\r\n let wildcardName = this.getWildCardName();\r\n let path = this.params[wildcardName] || '';\r\n if (!path) {\r\n return $encodeURI(fragment);\r\n }\r\n return $encodeURI(fragment.substr(0, fragment.lastIndexOf(path)));\r\n }\r\n /**\r\n * Finalize a viewport instruction\r\n * @internal\r\n */\r\n _commitChanges(waitToSwap) {\r\n let router = this.router;\r\n router.currentInstruction = this;\r\n const previousInstruction = this.previousInstruction;\r\n if (previousInstruction) {\r\n previousInstruction.config.navModel.isActive = false;\r\n }\r\n this.config.navModel.isActive = true;\r\n router.refreshNavigation();\r\n let loads = [];\r\n let delaySwaps = [];\r\n let viewPortInstructions = this.viewPortInstructions;\r\n for (let viewPortName in viewPortInstructions) {\r\n let viewPortInstruction = viewPortInstructions[viewPortName];\r\n let viewPort = router.viewPorts[viewPortName];\r\n if (!viewPort) {\r\n throw new Error(`There was no router-view found in the view for ${viewPortInstruction.moduleId}.`);\r\n }\r\n let childNavInstruction = viewPortInstruction.childNavigationInstruction;\r\n if (viewPortInstruction.strategy === \"replace\" /* Replace */) {\r\n if (childNavInstruction && childNavInstruction.parentCatchHandler) {\r\n loads.push(childNavInstruction._commitChanges(waitToSwap));\r\n }\r\n else {\r\n if (waitToSwap) {\r\n delaySwaps.push({ viewPort, viewPortInstruction });\r\n }\r\n loads.push(viewPort\r\n .process(viewPortInstruction, waitToSwap)\r\n .then(() => childNavInstruction\r\n ? childNavInstruction._commitChanges(waitToSwap)\r\n : Promise.resolve()));\r\n }\r\n }\r\n else {\r\n if (childNavInstruction) {\r\n loads.push(childNavInstruction._commitChanges(waitToSwap));\r\n }\r\n }\r\n }\r\n return Promise\r\n .all(loads)\r\n .then(() => {\r\n delaySwaps.forEach(x => x.viewPort.swap(x.viewPortInstruction));\r\n return null;\r\n })\r\n .then(() => prune(this));\r\n }\r\n /**@internal */\r\n _updateTitle() {\r\n let router = this.router;\r\n let title = this._buildTitle(router.titleSeparator);\r\n if (title) {\r\n router.history.setTitle(title);\r\n }\r\n }\r\n /**@internal */\r\n _buildTitle(separator = ' | ') {\r\n let title = '';\r\n let childTitles = [];\r\n let navModelTitle = this.config.navModel.title;\r\n let instructionRouter = this.router;\r\n let viewPortInstructions = this.viewPortInstructions;\r\n if (navModelTitle) {\r\n title = instructionRouter.transformTitle(navModelTitle);\r\n }\r\n for (let viewPortName in viewPortInstructions) {\r\n let viewPortInstruction = viewPortInstructions[viewPortName];\r\n let child_nav_instruction = viewPortInstruction.childNavigationInstruction;\r\n if (child_nav_instruction) {\r\n let childTitle = child_nav_instruction._buildTitle(separator);\r\n if (childTitle) {\r\n childTitles.push(childTitle);\r\n }\r\n }\r\n }\r\n if (childTitles.length) {\r\n title = childTitles.join(separator) + (title ? separator : '') + title;\r\n }\r\n if (instructionRouter.title) {\r\n title += (title ? separator : '') + instructionRouter.transformTitle(instructionRouter.title);\r\n }\r\n return title;\r\n }\r\n}\r\nconst prune = (instruction) => {\r\n instruction.previousInstruction = null;\r\n instruction.plan = null;\r\n};\n\n/**\r\n* Class for storing and interacting with a route's navigation settings.\r\n*/\r\nclass NavModel {\r\n constructor(router, relativeHref) {\r\n /**\r\n * True if this nav item is currently active.\r\n */\r\n this.isActive = false;\r\n /**\r\n * The title.\r\n */\r\n this.title = null;\r\n /**\r\n * This nav item's absolute href.\r\n */\r\n this.href = null;\r\n /**\r\n * This nav item's relative href.\r\n */\r\n this.relativeHref = null;\r\n /**\r\n * Data attached to the route at configuration time.\r\n */\r\n this.settings = {};\r\n /**\r\n * The route config.\r\n */\r\n this.config = null;\r\n this.router = router;\r\n this.relativeHref = relativeHref;\r\n }\r\n /**\r\n * Sets the route's title and updates document.title.\r\n * If the a navigation is in progress, the change will be applied\r\n * to document.title when the navigation completes.\r\n *\r\n * @param title The new title.\r\n */\r\n setTitle(title) {\r\n this.title = title;\r\n if (this.isActive) {\r\n this.router.updateTitle();\r\n }\r\n }\r\n}\n\nfunction _normalizeAbsolutePath(path, hasPushState, absolute = false) {\r\n if (!hasPushState && path[0] !== '#') {\r\n path = '#' + path;\r\n }\r\n if (hasPushState && absolute) {\r\n path = path.substring(1, path.length);\r\n }\r\n return path;\r\n}\r\nfunction _createRootedPath(fragment, baseUrl, hasPushState, absolute) {\r\n if (isAbsoluteUrl.test(fragment)) {\r\n return fragment;\r\n }\r\n let path = '';\r\n if (baseUrl.length && baseUrl[0] !== '/') {\r\n path += '/';\r\n }\r\n path += baseUrl;\r\n if ((!path.length || path[path.length - 1] !== '/') && fragment[0] !== '/') {\r\n path += '/';\r\n }\r\n if (path.length && path[path.length - 1] === '/' && fragment[0] === '/') {\r\n path = path.substring(0, path.length - 1);\r\n }\r\n return _normalizeAbsolutePath(path + fragment, hasPushState, absolute);\r\n}\r\nfunction _resolveUrl(fragment, baseUrl, hasPushState) {\r\n if (isRootedPath.test(fragment)) {\r\n return _normalizeAbsolutePath(fragment, hasPushState);\r\n }\r\n return _createRootedPath(fragment, baseUrl, hasPushState);\r\n}\r\nfunction _ensureArrayWithSingleRoutePerConfig(config) {\r\n let routeConfigs = [];\r\n if (Array.isArray(config.route)) {\r\n for (let i = 0, ii = config.route.length; i < ii; ++i) {\r\n let current = Object.assign({}, config);\r\n current.route = config.route[i];\r\n routeConfigs.push(current);\r\n }\r\n }\r\n else {\r\n routeConfigs.push(Object.assign({}, config));\r\n }\r\n return routeConfigs;\r\n}\r\nconst isRootedPath = /^#?\\//;\r\nconst isAbsoluteUrl = /^([a-z][a-z0-9+\\-.]*:)?\\/\\//i;\n\n/**\r\n * Class used to configure a [[Router]] instance.\r\n *\r\n * @constructor\r\n */\r\nclass RouterConfiguration {\r\n constructor() {\r\n this.instructions = [];\r\n this.options = {};\r\n this.pipelineSteps = [];\r\n }\r\n /**\r\n * Adds a step to be run during the [[Router]]'s navigation pipeline.\r\n *\r\n * @param name The name of the pipeline slot to insert the step into.\r\n * @param step The pipeline step.\r\n * @chainable\r\n */\r\n addPipelineStep(name, step) {\r\n if (step === null || step === undefined) {\r\n throw new Error('Pipeline step cannot be null or undefined.');\r\n }\r\n this.pipelineSteps.push({ name, step });\r\n return this;\r\n }\r\n /**\r\n * Adds a step to be run during the [[Router]]'s authorize pipeline slot.\r\n *\r\n * @param step The pipeline step.\r\n * @chainable\r\n */\r\n addAuthorizeStep(step) {\r\n return this.addPipelineStep(\"authorize\" /* Authorize */, step);\r\n }\r\n /**\r\n * Adds a step to be run during the [[Router]]'s preActivate pipeline slot.\r\n *\r\n * @param step The pipeline step.\r\n * @chainable\r\n */\r\n addPreActivateStep(step) {\r\n return this.addPipelineStep(\"preActivate\" /* PreActivate */, step);\r\n }\r\n /**\r\n * Adds a step to be run during the [[Router]]'s preRender pipeline slot.\r\n *\r\n * @param step The pipeline step.\r\n * @chainable\r\n */\r\n addPreRenderStep(step) {\r\n return this.addPipelineStep(\"preRender\" /* PreRender */, step);\r\n }\r\n /**\r\n * Adds a step to be run during the [[Router]]'s postRender pipeline slot.\r\n *\r\n * @param step The pipeline step.\r\n * @chainable\r\n */\r\n addPostRenderStep(step) {\r\n return this.addPipelineStep(\"postRender\" /* PostRender */, step);\r\n }\r\n /**\r\n * Configures a route that will be used if there is no previous location available on navigation cancellation.\r\n *\r\n * @param fragment The URL fragment to use as the navigation destination.\r\n * @chainable\r\n */\r\n fallbackRoute(fragment) {\r\n this._fallbackRoute = fragment;\r\n return this;\r\n }\r\n /**\r\n * Maps one or more routes to be registered with the router.\r\n *\r\n * @param route The [[RouteConfig]] to map, or an array of [[RouteConfig]] to map.\r\n * @chainable\r\n */\r\n map(route) {\r\n if (Array.isArray(route)) {\r\n route.forEach(r => this.map(r));\r\n return this;\r\n }\r\n return this.mapRoute(route);\r\n }\r\n /**\r\n * Configures defaults to use for any view ports.\r\n *\r\n * @param viewPortConfig a view port configuration object to use as a\r\n * default, of the form { viewPortName: { moduleId } }.\r\n * @chainable\r\n */\r\n useViewPortDefaults(viewPortConfig) {\r\n this.viewPortDefaults = viewPortConfig;\r\n return this;\r\n }\r\n /**\r\n * Maps a single route to be registered with the router.\r\n *\r\n * @param route The [[RouteConfig]] to map.\r\n * @chainable\r\n */\r\n mapRoute(config) {\r\n this.instructions.push(router => {\r\n let routeConfigs = _ensureArrayWithSingleRoutePerConfig(config);\r\n let navModel;\r\n for (let i = 0, ii = routeConfigs.length; i < ii; ++i) {\r\n let routeConfig = routeConfigs[i];\r\n routeConfig.settings = routeConfig.settings || {};\r\n if (!navModel) {\r\n navModel = router.createNavModel(routeConfig);\r\n }\r\n router.addRoute(routeConfig, navModel);\r\n }\r\n });\r\n return this;\r\n }\r\n /**\r\n * Registers an unknown route handler to be run when the URL fragment doesn't match any registered routes.\r\n *\r\n * @param config A string containing a moduleId to load, or a [[RouteConfig]], or a function that takes the\r\n * [[NavigationInstruction]] and selects a moduleId to load.\r\n * @chainable\r\n */\r\n mapUnknownRoutes(config) {\r\n this.unknownRouteConfig = config;\r\n return this;\r\n }\r\n /**\r\n * Applies the current configuration to the specified [[Router]].\r\n *\r\n * @param router The [[Router]] to apply the configuration to.\r\n */\r\n exportToRouter(router) {\r\n let instructions = this.instructions;\r\n for (let i = 0, ii = instructions.length; i < ii; ++i) {\r\n instructions[i](router);\r\n }\r\n let { title, titleSeparator, unknownRouteConfig, _fallbackRoute, viewPortDefaults } = this;\r\n if (title) {\r\n router.title = title;\r\n }\r\n if (titleSeparator) {\r\n router.titleSeparator = titleSeparator;\r\n }\r\n if (unknownRouteConfig) {\r\n router.handleUnknownRoutes(unknownRouteConfig);\r\n }\r\n if (_fallbackRoute) {\r\n router.fallbackRoute = _fallbackRoute;\r\n }\r\n if (viewPortDefaults) {\r\n router.useViewPortDefaults(viewPortDefaults);\r\n }\r\n Object.assign(router.options, this.options);\r\n let pipelineSteps = this.pipelineSteps;\r\n let pipelineStepCount = pipelineSteps.length;\r\n if (pipelineStepCount) {\r\n if (!router.isRoot) {\r\n throw new Error('Pipeline steps can only be added to the root router');\r\n }\r\n let pipelineProvider = router.pipelineProvider;\r\n for (let i = 0, ii = pipelineStepCount; i < ii; ++i) {\r\n let { name, step } = pipelineSteps[i];\r\n pipelineProvider.addStep(name, step);\r\n }\r\n }\r\n }\r\n}\n\n/**\r\n * The primary class responsible for handling routing and navigation.\r\n */\r\nclass Router {\r\n /**\r\n * @param container The [[Container]] to use when child routers.\r\n * @param history The [[History]] implementation to delegate navigation requests to.\r\n */\r\n constructor(container, history) {\r\n /**\r\n * The parent router, or null if this instance is not a child router.\r\n */\r\n this.parent = null;\r\n this.options = {};\r\n /**\r\n * The defaults used when a viewport lacks specified content\r\n */\r\n this.viewPortDefaults = {};\r\n /**\r\n * Extension point to transform the document title before it is built and displayed.\r\n * By default, child routers delegate to the parent router, and the app router\r\n * returns the title unchanged.\r\n */\r\n this.transformTitle = (title) => {\r\n if (this.parent) {\r\n return this.parent.transformTitle(title);\r\n }\r\n return title;\r\n };\r\n this.container = container;\r\n this.history = history;\r\n this.reset();\r\n }\r\n /**\r\n * Fully resets the router's internal state. Primarily used internally by the framework when multiple calls to setRoot are made.\r\n * Use with caution (actually, avoid using this). Do not use this to simply change your navigation model.\r\n */\r\n reset() {\r\n this.viewPorts = {};\r\n this.routes = [];\r\n this.baseUrl = '';\r\n this.isConfigured = false;\r\n this.isNavigating = false;\r\n this.isExplicitNavigation = false;\r\n this.isExplicitNavigationBack = false;\r\n this.isNavigatingFirst = false;\r\n this.isNavigatingNew = false;\r\n this.isNavigatingRefresh = false;\r\n this.isNavigatingForward = false;\r\n this.isNavigatingBack = false;\r\n this.couldDeactivate = false;\r\n this.navigation = [];\r\n this.currentInstruction = null;\r\n this.viewPortDefaults = {};\r\n this._fallbackOrder = 100;\r\n this._recognizer = new RouteRecognizer();\r\n this._childRecognizer = new RouteRecognizer();\r\n this._configuredPromise = new Promise(resolve => {\r\n this._resolveConfiguredPromise = resolve;\r\n });\r\n }\r\n /**\r\n * Gets a value indicating whether or not this [[Router]] is the root in the router tree. I.e., it has no parent.\r\n */\r\n get isRoot() {\r\n return !this.parent;\r\n }\r\n /**\r\n * Registers a viewPort to be used as a rendering target for activated routes.\r\n *\r\n * @param viewPort The viewPort.\r\n * @param name The name of the viewPort. 'default' if unspecified.\r\n */\r\n registerViewPort(viewPort, name) {\r\n name = name || 'default';\r\n this.viewPorts[name] = viewPort;\r\n }\r\n /**\r\n * Returns a Promise that resolves when the router is configured.\r\n */\r\n ensureConfigured() {\r\n return this._configuredPromise;\r\n }\r\n /**\r\n * Configures the router.\r\n *\r\n * @param callbackOrConfig The [[RouterConfiguration]] or a callback that takes a [[RouterConfiguration]].\r\n */\r\n configure(callbackOrConfig) {\r\n this.isConfigured = true;\r\n let result = callbackOrConfig;\r\n let config;\r\n if (typeof callbackOrConfig === 'function') {\r\n config = new RouterConfiguration();\r\n result = callbackOrConfig(config);\r\n }\r\n return Promise\r\n .resolve(result)\r\n .then((c) => {\r\n if (c && c.exportToRouter) {\r\n config = c;\r\n }\r\n config.exportToRouter(this);\r\n this.isConfigured = true;\r\n this._resolveConfiguredPromise();\r\n });\r\n }\r\n /**\r\n * Navigates to a new location.\r\n *\r\n * @param fragment The URL fragment to use as the navigation destination.\r\n * @param options The navigation options.\r\n */\r\n navigate(fragment, options) {\r\n if (!this.isConfigured && this.parent) {\r\n return this.parent.navigate(fragment, options);\r\n }\r\n this.isExplicitNavigation = true;\r\n return this.history.navigate(_resolveUrl(fragment, this.baseUrl, this.history._hasPushState), options);\r\n }\r\n /**\r\n * Navigates to a new location corresponding to the route and params specified. Equivallent to [[Router.generate]] followed\r\n * by [[Router.navigate]].\r\n *\r\n * @param route The name of the route to use when generating the navigation location.\r\n * @param params The route parameters to be used when populating the route pattern.\r\n * @param options The navigation options.\r\n */\r\n navigateToRoute(route, params, options) {\r\n let path = this.generate(route, params);\r\n return this.navigate(path, options);\r\n }\r\n /**\r\n * Navigates back to the most recent location in history.\r\n */\r\n navigateBack() {\r\n this.isExplicitNavigationBack = true;\r\n this.history.navigateBack();\r\n }\r\n /**\r\n * Creates a child router of the current router.\r\n *\r\n * @param container The [[Container]] to provide to the child router. Uses the current [[Router]]'s [[Container]] if unspecified.\r\n * @returns {Router} The new child Router.\r\n */\r\n createChild(container) {\r\n let childRouter = new Router(container || this.container.createChild(), this.history);\r\n childRouter.parent = this;\r\n return childRouter;\r\n }\r\n /**\r\n * Generates a URL fragment matching the specified route pattern.\r\n *\r\n * @param name The name of the route whose pattern should be used to generate the fragment.\r\n * @param params The route params to be used to populate the route pattern.\r\n * @param options If options.absolute = true, then absolute url will be generated; otherwise, it will be relative url.\r\n * @returns {string} A string containing the generated URL fragment.\r\n */\r\n generate(nameOrRoute, params = {}, options = {}) {\r\n // A child recognizer generates routes for potential child routes. Any potential child route is added\r\n // to the childRoute property of params for the childRouter to recognize. When generating routes, we\r\n // use the childRecognizer when childRoute params are available to generate a child router enabled route.\r\n let recognizer = 'childRoute' in params ? this._childRecognizer : this._recognizer;\r\n let hasRoute = recognizer.hasRoute(nameOrRoute);\r\n if (!hasRoute) {\r\n if (this.parent) {\r\n return this.parent.generate(nameOrRoute, params, options);\r\n }\r\n throw new Error(`A route with name '${nameOrRoute}' could not be found. Check that \\`name: '${nameOrRoute}'\\` was specified in the route's config.`);\r\n }\r\n let path = recognizer.generate(nameOrRoute, params);\r\n let rootedPath = _createRootedPath(path, this.baseUrl, this.history._hasPushState, options.absolute);\r\n return options.absolute ? `${this.history.getAbsoluteRoot()}${rootedPath}` : rootedPath;\r\n }\r\n /**\r\n * Creates a [[NavModel]] for the specified route config.\r\n *\r\n * @param config The route config.\r\n */\r\n createNavModel(config) {\r\n let navModel = new NavModel(this, 'href' in config\r\n ? config.href\r\n // potential error when config.route is a string[] ?\r\n : config.route);\r\n navModel.title = config.title;\r\n navModel.order = config.nav;\r\n navModel.href = config.href;\r\n navModel.settings = config.settings;\r\n navModel.config = config;\r\n return navModel;\r\n }\r\n /**\r\n * Registers a new route with the router.\r\n *\r\n * @param config The [[RouteConfig]].\r\n * @param navModel The [[NavModel]] to use for the route. May be omitted for single-pattern routes.\r\n */\r\n addRoute(config, navModel) {\r\n if (Array.isArray(config.route)) {\r\n let routeConfigs = _ensureArrayWithSingleRoutePerConfig(config);\r\n // the following is wrong. todo: fix this after TS refactoring release\r\n routeConfigs.forEach(this.addRoute.bind(this));\r\n return;\r\n }\r\n validateRouteConfig(config);\r\n if (!('viewPorts' in config) && !config.navigationStrategy) {\r\n config.viewPorts = {\r\n 'default': {\r\n moduleId: config.moduleId,\r\n view: config.view\r\n }\r\n };\r\n }\r\n if (!navModel) {\r\n navModel = this.createNavModel(config);\r\n }\r\n this.routes.push(config);\r\n let path = config.route;\r\n if (path.charAt(0) === '/') {\r\n path = path.substr(1);\r\n }\r\n let caseSensitive = config.caseSensitive === true;\r\n let state = this._recognizer.add({\r\n path: path,\r\n handler: config,\r\n caseSensitive: caseSensitive\r\n });\r\n if (path) {\r\n let settings = config.settings;\r\n delete config.settings;\r\n let withChild = JSON.parse(JSON.stringify(config));\r\n config.settings = settings;\r\n withChild.route = `${path}/*childRoute`;\r\n withChild.hasChildRouter = true;\r\n this._childRecognizer.add({\r\n path: withChild.route,\r\n handler: withChild,\r\n caseSensitive: caseSensitive\r\n });\r\n withChild.navModel = navModel;\r\n withChild.settings = config.settings;\r\n withChild.navigationStrategy = config.navigationStrategy;\r\n }\r\n config.navModel = navModel;\r\n let navigation = this.navigation;\r\n if ((navModel.order || navModel.order === 0) && navigation.indexOf(navModel) === -1) {\r\n if ((!navModel.href && navModel.href !== '') && (state.types.dynamics || state.types.stars)) {\r\n throw new Error('Invalid route config for \"' + config.route + '\" : dynamic routes must specify an \"href:\" to be included in the navigation model.');\r\n }\r\n if (typeof navModel.order !== 'number') {\r\n navModel.order = ++this._fallbackOrder;\r\n }\r\n navigation.push(navModel);\r\n // this is a potential error / inconsistency between browsers\r\n //\r\n // MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort\r\n // If compareFunction(a, b) returns 0, leave a and b unchanged with respect to each other,\r\n // but sorted with respect to all different elements.\r\n // Note: the ECMAscript standard does not guarantee this behaviour,\r\n // and thus not all browsers (e.g. Mozilla versions dating back to at least 2003) respect this.\r\n navigation.sort((a, b) => a.order - b.order);\r\n }\r\n }\r\n /**\r\n * Gets a value indicating whether or not this [[Router]] or one of its ancestors has a route registered with the specified name.\r\n *\r\n * @param name The name of the route to check.\r\n */\r\n hasRoute(name) {\r\n return !!(this._recognizer.hasRoute(name) || this.parent && this.parent.hasRoute(name));\r\n }\r\n /**\r\n * Gets a value indicating whether or not this [[Router]] has a route registered with the specified name.\r\n *\r\n * @param name The name of the route to check.\r\n */\r\n hasOwnRoute(name) {\r\n return this._recognizer.hasRoute(name);\r\n }\r\n /**\r\n * Register a handler to use when the incoming URL fragment doesn't match any registered routes.\r\n *\r\n * @param config The moduleId, or a function that selects the moduleId, or a [[RouteConfig]].\r\n */\r\n handleUnknownRoutes(config) {\r\n if (!config) {\r\n throw new Error('Invalid unknown route handler');\r\n }\r\n this.catchAllHandler = instruction => {\r\n return this\r\n ._createRouteConfig(config, instruction)\r\n .then(c => {\r\n instruction.config = c;\r\n return instruction;\r\n });\r\n };\r\n }\r\n /**\r\n * Updates the document title using the current navigation instruction.\r\n */\r\n updateTitle() {\r\n let parentRouter = this.parent;\r\n if (parentRouter) {\r\n return parentRouter.updateTitle();\r\n }\r\n let currentInstruction = this.currentInstruction;\r\n if (currentInstruction) {\r\n currentInstruction._updateTitle();\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Updates the navigation routes with hrefs relative to the current location.\r\n * Note: This method will likely move to a plugin in a future release.\r\n */\r\n refreshNavigation() {\r\n let nav = this.navigation;\r\n for (let i = 0, length = nav.length; i < length; i++) {\r\n let current = nav[i];\r\n if (!current.config.href) {\r\n current.href = _createRootedPath(current.relativeHref, this.baseUrl, this.history._hasPushState);\r\n }\r\n else {\r\n current.href = _normalizeAbsolutePath(current.config.href, this.history._hasPushState);\r\n }\r\n }\r\n }\r\n /**\r\n * Sets the default configuration for the view ports. This specifies how to\r\n * populate a view port for which no module is specified. The default is\r\n * an empty view/view-model pair.\r\n */\r\n useViewPortDefaults($viewPortDefaults) {\r\n // a workaround to have strong typings while not requiring to expose interface ViewPortInstruction\r\n let viewPortDefaults = $viewPortDefaults;\r\n for (let viewPortName in viewPortDefaults) {\r\n let viewPortConfig = viewPortDefaults[viewPortName];\r\n this.viewPortDefaults[viewPortName] = {\r\n moduleId: viewPortConfig.moduleId\r\n };\r\n }\r\n }\r\n /**@internal */\r\n _refreshBaseUrl() {\r\n let parentRouter = this.parent;\r\n if (parentRouter) {\r\n this.baseUrl = generateBaseUrl(parentRouter, parentRouter.currentInstruction);\r\n }\r\n }\r\n /**@internal */\r\n _createNavigationInstruction(url = '', parentInstruction = null) {\r\n let fragment = url;\r\n let queryString = '';\r\n let queryIndex = url.indexOf('?');\r\n if (queryIndex !== -1) {\r\n fragment = url.substr(0, queryIndex);\r\n queryString = url.substr(queryIndex + 1);\r\n }\r\n let urlRecognizationResults = this._recognizer.recognize(url);\r\n if (!urlRecognizationResults || !urlRecognizationResults.length) {\r\n urlRecognizationResults = this._childRecognizer.recognize(url);\r\n }\r\n let instructionInit = {\r\n fragment,\r\n queryString,\r\n config: null,\r\n parentInstruction,\r\n previousInstruction: this.currentInstruction,\r\n router: this,\r\n options: {\r\n compareQueryParams: this.options.compareQueryParams\r\n }\r\n };\r\n let result;\r\n if (urlRecognizationResults && urlRecognizationResults.length) {\r\n let first = urlRecognizationResults[0];\r\n let instruction = new NavigationInstruction(Object.assign({}, instructionInit, {\r\n params: first.params,\r\n queryParams: first.queryParams || urlRecognizationResults.queryParams,\r\n config: first.config || first.handler\r\n }));\r\n if (typeof first.handler === 'function') {\r\n result = evaluateNavigationStrategy(instruction, first.handler, first);\r\n }\r\n else if (first.handler && typeof first.handler.navigationStrategy === 'function') {\r\n result = evaluateNavigationStrategy(instruction, first.handler.navigationStrategy, first.handler);\r\n }\r\n else {\r\n result = Promise.resolve(instruction);\r\n }\r\n }\r\n else if (this.catchAllHandler) {\r\n let instruction = new NavigationInstruction(Object.assign({}, instructionInit, {\r\n params: { path: fragment },\r\n queryParams: urlRecognizationResults ? urlRecognizationResults.queryParams : {},\r\n config: null // config will be created by the catchAllHandler\r\n }));\r\n result = evaluateNavigationStrategy(instruction, this.catchAllHandler);\r\n }\r\n else if (this.parent) {\r\n let router = this._parentCatchAllHandler(this.parent);\r\n if (router) {\r\n let newParentInstruction = this._findParentInstructionFromRouter(router, parentInstruction);\r\n let instruction = new NavigationInstruction(Object.assign({}, instructionInit, {\r\n params: { path: fragment },\r\n queryParams: urlRecognizationResults ? urlRecognizationResults.queryParams : {},\r\n router: router,\r\n parentInstruction: newParentInstruction,\r\n parentCatchHandler: true,\r\n config: null // config will be created by the chained parent catchAllHandler\r\n }));\r\n result = evaluateNavigationStrategy(instruction, router.catchAllHandler);\r\n }\r\n }\r\n if (result && parentInstruction) {\r\n this.baseUrl = generateBaseUrl(this.parent, parentInstruction);\r\n }\r\n return result || Promise.reject(new Error(`Route not found: ${url}`));\r\n }\r\n /**@internal */\r\n _findParentInstructionFromRouter(router, instruction) {\r\n if (instruction.router === router) {\r\n instruction.fragment = router.baseUrl; // need to change the fragment in case of a redirect instead of moduleId\r\n return instruction;\r\n }\r\n else if (instruction.parentInstruction) {\r\n return this._findParentInstructionFromRouter(router, instruction.parentInstruction);\r\n }\r\n return undefined;\r\n }\r\n /**@internal */\r\n _parentCatchAllHandler(router) {\r\n if (router.catchAllHandler) {\r\n return router;\r\n }\r\n else if (router.parent) {\r\n return this._parentCatchAllHandler(router.parent);\r\n }\r\n return false;\r\n }\r\n /**\r\n * @internal\r\n */\r\n _createRouteConfig(config, instruction) {\r\n return Promise\r\n .resolve(config)\r\n .then((c) => {\r\n if (typeof c === 'string') {\r\n return { moduleId: c };\r\n }\r\n else if (typeof c === 'function') {\r\n return c(instruction);\r\n }\r\n return c;\r\n })\r\n // typing here could be either RouteConfig or RedirectConfig\r\n // but temporarily treat both as RouteConfig\r\n // todo: improve typings precision\r\n .then((c) => typeof c === 'string' ? { moduleId: c } : c)\r\n .then((c) => {\r\n c.route = instruction.params.path;\r\n validateRouteConfig(c);\r\n if (!c.navModel) {\r\n c.navModel = this.createNavModel(c);\r\n }\r\n return c;\r\n });\r\n }\r\n}\r\n/* @internal exported for unit testing */\r\nconst generateBaseUrl = (router, instruction) => {\r\n return `${router.baseUrl || ''}${instruction.getBaseUrl() || ''}`;\r\n};\r\n/* @internal exported for unit testing */\r\nconst validateRouteConfig = (config) => {\r\n if (typeof config !== 'object') {\r\n throw new Error('Invalid Route Config');\r\n }\r\n if (typeof config.route !== 'string') {\r\n let name = config.name || '(no name)';\r\n throw new Error('Invalid Route Config for \"' + name + '\": You must specify a \"route:\" pattern.');\r\n }\r\n if (!('redirect' in config || config.moduleId || config.navigationStrategy || config.viewPorts)) {\r\n throw new Error('Invalid Route Config for \"' + config.route + '\": You must specify a \"moduleId:\", \"redirect:\", \"navigationStrategy:\", or \"viewPorts:\".');\r\n }\r\n};\r\n/* @internal exported for unit testing */\r\nconst evaluateNavigationStrategy = (instruction, evaluator, context) => {\r\n return Promise\r\n .resolve(evaluator.call(context, instruction))\r\n .then(() => {\r\n if (!('viewPorts' in instruction.config)) {\r\n instruction.config.viewPorts = {\r\n 'default': {\r\n moduleId: instruction.config.moduleId\r\n }\r\n };\r\n }\r\n return instruction;\r\n });\r\n};\n\n/**@internal exported for unit testing */\r\nconst createNextFn = (instruction, steps) => {\r\n let index = -1;\r\n const next = function () {\r\n index++;\r\n if (index < steps.length) {\r\n let currentStep = steps[index];\r\n try {\r\n return currentStep(instruction, next);\r\n }\r\n catch (e) {\r\n return next.reject(e);\r\n }\r\n }\r\n else {\r\n return next.complete();\r\n }\r\n };\r\n next.complete = createCompletionHandler(next, \"completed\" /* Completed */);\r\n next.cancel = createCompletionHandler(next, \"canceled\" /* Canceled */);\r\n next.reject = createCompletionHandler(next, \"rejected\" /* Rejected */);\r\n return next;\r\n};\r\n/**@internal exported for unit testing */\r\nconst createCompletionHandler = (next, status) => {\r\n return (output) => Promise\r\n .resolve({\r\n status,\r\n output,\r\n completed: status === \"completed\" /* Completed */\r\n });\r\n};\n\n/**\r\n * The class responsible for managing and processing the navigation pipeline.\r\n */\r\nclass Pipeline {\r\n constructor() {\r\n /**\r\n * The pipeline steps. And steps added via addStep will be converted to a function\r\n * The actualy running functions with correct step contexts of this pipeline\r\n */\r\n this.steps = [];\r\n }\r\n /**\r\n * Adds a step to the pipeline.\r\n *\r\n * @param step The pipeline step.\r\n */\r\n addStep(step) {\r\n let run;\r\n if (typeof step === 'function') {\r\n run = step;\r\n }\r\n else if (typeof step.getSteps === 'function') {\r\n // getSteps is to enable support open slots\r\n // where devs can add multiple steps into the same slot name\r\n let steps = step.getSteps();\r\n for (let i = 0, l = steps.length; i < l; i++) {\r\n this.addStep(steps[i]);\r\n }\r\n return this;\r\n }\r\n else {\r\n run = step.run.bind(step);\r\n }\r\n this.steps.push(run);\r\n return this;\r\n }\r\n /**\r\n * Runs the pipeline.\r\n *\r\n * @param instruction The navigation instruction to process.\r\n */\r\n run(instruction) {\r\n const nextFn = createNextFn(instruction, this.steps);\r\n return nextFn();\r\n }\r\n}\n\n/**\r\n* Determines if the provided object is a navigation command.\r\n* A navigation command is anything with a navigate method.\r\n*\r\n* @param obj The object to check.\r\n*/\r\nfunction isNavigationCommand(obj) {\r\n return obj && typeof obj.navigate === 'function';\r\n}\r\n/**\r\n* Used during the activation lifecycle to cause a redirect.\r\n*/\r\nclass Redirect {\r\n /**\r\n * @param url The URL fragment to use as the navigation destination.\r\n * @param options The navigation options.\r\n */\r\n constructor(url, options = {}) {\r\n this.url = url;\r\n this.options = Object.assign({ trigger: true, replace: true }, options);\r\n this.shouldContinueProcessing = false;\r\n }\r\n /**\r\n * Called by the activation system to set the child router.\r\n *\r\n * @param router The router.\r\n */\r\n setRouter(router) {\r\n this.router = router;\r\n }\r\n /**\r\n * Called by the navigation pipeline to navigate.\r\n *\r\n * @param appRouter The router to be redirected.\r\n */\r\n navigate(appRouter) {\r\n let navigatingRouter = this.options.useAppRouter ? appRouter : (this.router || appRouter);\r\n navigatingRouter.navigate(this.url, this.options);\r\n }\r\n}\r\n/**\r\n * Used during the activation lifecycle to cause a redirect to a named route.\r\n */\r\nclass RedirectToRoute {\r\n /**\r\n * @param route The name of the route.\r\n * @param params The parameters to be sent to the activation method.\r\n * @param options The options to use for navigation.\r\n */\r\n constructor(route, params = {}, options = {}) {\r\n this.route = route;\r\n this.params = params;\r\n this.options = Object.assign({ trigger: true, replace: true }, options);\r\n this.shouldContinueProcessing = false;\r\n }\r\n /**\r\n * Called by the activation system to set the child router.\r\n *\r\n * @param router The router.\r\n */\r\n setRouter(router) {\r\n this.router = router;\r\n }\r\n /**\r\n * Called by the navigation pipeline to navigate.\r\n *\r\n * @param appRouter The router to be redirected.\r\n */\r\n navigate(appRouter) {\r\n let navigatingRouter = this.options.useAppRouter ? appRouter : (this.router || appRouter);\r\n navigatingRouter.navigateToRoute(this.route, this.params, this.options);\r\n }\r\n}\n\n/**\r\n * @internal exported for unit testing\r\n */\r\nfunction _buildNavigationPlan(instruction, forceLifecycleMinimum) {\r\n let config = instruction.config;\r\n if ('redirect' in config) {\r\n return buildRedirectPlan(instruction);\r\n }\r\n const prevInstruction = instruction.previousInstruction;\r\n const defaultViewPortConfigs = instruction.router.viewPortDefaults;\r\n if (prevInstruction) {\r\n return buildTransitionPlans(instruction, prevInstruction, defaultViewPortConfigs, forceLifecycleMinimum);\r\n }\r\n // first navigation, only need to prepare a few information for each viewport plan\r\n const viewPortPlans = {};\r\n let viewPortConfigs = config.viewPorts;\r\n for (let viewPortName in viewPortConfigs) {\r\n let viewPortConfig = viewPortConfigs[viewPortName];\r\n if (viewPortConfig.moduleId === null && viewPortName in defaultViewPortConfigs) {\r\n viewPortConfig = defaultViewPortConfigs[viewPortName];\r\n }\r\n viewPortPlans[viewPortName] = {\r\n name: viewPortName,\r\n strategy: \"replace\" /* Replace */,\r\n config: viewPortConfig\r\n };\r\n }\r\n return Promise.resolve(viewPortPlans);\r\n}\r\n/**\r\n * Build redirect plan based on config of a navigation instruction\r\n * @internal exported for unit testing\r\n */\r\nconst buildRedirectPlan = (instruction) => {\r\n const config = instruction.config;\r\n const router = instruction.router;\r\n return router\r\n ._createNavigationInstruction(config.redirect)\r\n .then(redirectInstruction => {\r\n const params = {};\r\n const originalInstructionParams = instruction.params;\r\n const redirectInstructionParams = redirectInstruction.params;\r\n for (let key in redirectInstructionParams) {\r\n // If the param on the redirect points to another param, e.g. { route: first/:this, redirect: second/:this }\r\n let val = redirectInstructionParams[key];\r\n if (typeof val === 'string' && val[0] === ':') {\r\n val = val.slice(1);\r\n // And if that param is found on the original instruction then use it\r\n if (val in originalInstructionParams) {\r\n params[key] = originalInstructionParams[val];\r\n }\r\n }\r\n else {\r\n params[key] = redirectInstructionParams[key];\r\n }\r\n }\r\n let redirectLocation = router.generate(redirectInstruction.config, params, instruction.options);\r\n // Special handling for child routes\r\n for (let key in originalInstructionParams) {\r\n redirectLocation = redirectLocation.replace(`:${key}`, originalInstructionParams[key]);\r\n }\r\n let queryString = instruction.queryString;\r\n if (queryString) {\r\n redirectLocation += '?' + queryString;\r\n }\r\n return Promise.resolve(new Redirect(redirectLocation));\r\n });\r\n};\r\n/**\r\n * @param viewPortPlans the Plan record that holds information about built plans\r\n * @internal exported for unit testing\r\n */\r\nconst buildTransitionPlans = (currentInstruction, previousInstruction, defaultViewPortConfigs, forceLifecycleMinimum) => {\r\n let viewPortPlans = {};\r\n let newInstructionConfig = currentInstruction.config;\r\n let hasNewParams = hasDifferentParameterValues(previousInstruction, currentInstruction);\r\n let pending = [];\r\n let previousViewPortInstructions = previousInstruction.viewPortInstructions;\r\n for (let viewPortName in previousViewPortInstructions) {\r\n const prevViewPortInstruction = previousViewPortInstructions[viewPortName];\r\n const prevViewPortComponent = prevViewPortInstruction.component;\r\n const newInstructionViewPortConfigs = newInstructionConfig.viewPorts;\r\n // if this is invoked on a viewport without any changes, based on new url,\r\n // newViewPortConfig will be the existing viewport instruction\r\n let nextViewPortConfig = viewPortName in newInstructionViewPortConfigs\r\n ? newInstructionViewPortConfigs[viewPortName]\r\n : prevViewPortInstruction;\r\n if (nextViewPortConfig.moduleId === null && viewPortName in defaultViewPortConfigs) {\r\n nextViewPortConfig = defaultViewPortConfigs[viewPortName];\r\n }\r\n const viewPortActivationStrategy = determineActivationStrategy(currentInstruction, prevViewPortInstruction, nextViewPortConfig, hasNewParams, forceLifecycleMinimum);\r\n const viewPortPlan = viewPortPlans[viewPortName] = {\r\n name: viewPortName,\r\n // ViewPortInstruction can quack like a RouteConfig\r\n config: nextViewPortConfig,\r\n prevComponent: prevViewPortComponent,\r\n prevModuleId: prevViewPortInstruction.moduleId,\r\n strategy: viewPortActivationStrategy\r\n };\r\n // recursively build nav plans for all existing child routers/viewports of this viewport\r\n // this is possible because existing child viewports and routers already have necessary information\r\n // to process the wildcard path from parent instruction\r\n if (viewPortActivationStrategy !== \"replace\" /* Replace */ && prevViewPortInstruction.childRouter) {\r\n const path = currentInstruction.getWildcardPath();\r\n const task = prevViewPortInstruction\r\n .childRouter\r\n ._createNavigationInstruction(path, currentInstruction)\r\n .then((childInstruction) => {\r\n viewPortPlan.childNavigationInstruction = childInstruction;\r\n return _buildNavigationPlan(childInstruction, \r\n // is it safe to assume viewPortPlan has not been changed from previous assignment?\r\n // if so, can just use local variable viewPortPlanStrategy\r\n // there could be user code modifying viewport plan during _createNavigationInstruction?\r\n viewPortPlan.strategy === \"invoke-lifecycle\" /* InvokeLifecycle */)\r\n .then(childPlan => {\r\n if (childPlan instanceof Redirect) {\r\n return Promise.reject(childPlan);\r\n }\r\n childInstruction.plan = childPlan;\r\n // for bluebird ?\r\n return null;\r\n });\r\n });\r\n pending.push(task);\r\n }\r\n }\r\n return Promise.all(pending).then(() => viewPortPlans);\r\n};\r\n/**\r\n * @param newViewPortConfig if this is invoked on a viewport without any changes, based on new url, newViewPortConfig will be the existing viewport instruction\r\n * @internal exported for unit testing\r\n */\r\nconst determineActivationStrategy = (currentNavInstruction, prevViewPortInstruction, newViewPortConfig, \r\n// indicates whether there is difference between old and new url params\r\nhasNewParams, forceLifecycleMinimum) => {\r\n let newInstructionConfig = currentNavInstruction.config;\r\n let prevViewPortViewModel = prevViewPortInstruction.component.viewModel;\r\n let viewPortPlanStrategy;\r\n if (prevViewPortInstruction.moduleId !== newViewPortConfig.moduleId) {\r\n viewPortPlanStrategy = \"replace\" /* Replace */;\r\n }\r\n else if ('determineActivationStrategy' in prevViewPortViewModel) {\r\n viewPortPlanStrategy = prevViewPortViewModel.determineActivationStrategy(...currentNavInstruction.lifecycleArgs);\r\n }\r\n else if (newInstructionConfig.activationStrategy) {\r\n viewPortPlanStrategy = newInstructionConfig.activationStrategy;\r\n }\r\n else if (hasNewParams || forceLifecycleMinimum) {\r\n viewPortPlanStrategy = \"invoke-lifecycle\" /* InvokeLifecycle */;\r\n }\r\n else {\r\n viewPortPlanStrategy = \"no-change\" /* NoChange */;\r\n }\r\n return viewPortPlanStrategy;\r\n};\r\n/**@internal exported for unit testing */\r\nconst hasDifferentParameterValues = (prev, next) => {\r\n let prevParams = prev.params;\r\n let nextParams = next.params;\r\n let nextWildCardName = next.config.hasChildRouter ? next.getWildCardName() : null;\r\n for (let key in nextParams) {\r\n if (key === nextWildCardName) {\r\n continue;\r\n }\r\n if (prevParams[key] !== nextParams[key]) {\r\n return true;\r\n }\r\n }\r\n for (let key in prevParams) {\r\n if (key === nextWildCardName) {\r\n continue;\r\n }\r\n if (prevParams[key] !== nextParams[key]) {\r\n return true;\r\n }\r\n }\r\n if (!next.options.compareQueryParams) {\r\n return false;\r\n }\r\n let prevQueryParams = prev.queryParams;\r\n let nextQueryParams = next.queryParams;\r\n for (let key in nextQueryParams) {\r\n if (prevQueryParams[key] !== nextQueryParams[key]) {\r\n return true;\r\n }\r\n }\r\n for (let key in prevQueryParams) {\r\n if (prevQueryParams[key] !== nextQueryParams[key]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\n/**\r\n * Transform a navigation instruction into viewport plan record object,\r\n * or a redirect request if user viewmodel demands\r\n */\r\nclass BuildNavigationPlanStep {\r\n run(navigationInstruction, next) {\r\n return _buildNavigationPlan(navigationInstruction)\r\n .then(plan => {\r\n if (plan instanceof Redirect) {\r\n return next.cancel(plan);\r\n }\r\n navigationInstruction.plan = plan;\r\n return next();\r\n })\r\n .catch(next.cancel);\r\n }\r\n}\n\n/**\r\n * @internal Exported for unit testing\r\n */\r\nconst loadNewRoute = (routeLoader, navigationInstruction) => {\r\n let loadingPlans = determineLoadingPlans(navigationInstruction);\r\n let loadPromises = loadingPlans.map((loadingPlan) => loadRoute(routeLoader, loadingPlan.navigationInstruction, loadingPlan.viewPortPlan));\r\n return Promise.all(loadPromises);\r\n};\r\n/**\r\n * @internal Exported for unit testing\r\n */\r\nconst determineLoadingPlans = (navigationInstruction, loadingPlans = []) => {\r\n let viewPortPlans = navigationInstruction.plan;\r\n for (let viewPortName in viewPortPlans) {\r\n let viewPortPlan = viewPortPlans[viewPortName];\r\n let childNavInstruction = viewPortPlan.childNavigationInstruction;\r\n if (viewPortPlan.strategy === \"replace\" /* Replace */) {\r\n loadingPlans.push({ viewPortPlan, navigationInstruction });\r\n if (childNavInstruction) {\r\n determineLoadingPlans(childNavInstruction, loadingPlans);\r\n }\r\n }\r\n else {\r\n let viewPortInstruction = navigationInstruction.addViewPortInstruction({\r\n name: viewPortName,\r\n strategy: viewPortPlan.strategy,\r\n moduleId: viewPortPlan.prevModuleId,\r\n component: viewPortPlan.prevComponent\r\n });\r\n if (childNavInstruction) {\r\n viewPortInstruction.childNavigationInstruction = childNavInstruction;\r\n determineLoadingPlans(childNavInstruction, loadingPlans);\r\n }\r\n }\r\n }\r\n return loadingPlans;\r\n};\r\n/**\r\n * @internal Exported for unit testing\r\n */\r\nconst loadRoute = (routeLoader, navigationInstruction, viewPortPlan) => {\r\n let planConfig = viewPortPlan.config;\r\n let moduleId = planConfig ? planConfig.moduleId : null;\r\n return loadComponent(routeLoader, navigationInstruction, planConfig)\r\n .then((component) => {\r\n let viewPortInstruction = navigationInstruction.addViewPortInstruction({\r\n name: viewPortPlan.name,\r\n strategy: viewPortPlan.strategy,\r\n moduleId: moduleId,\r\n component: component\r\n });\r\n let childRouter = component.childRouter;\r\n if (childRouter) {\r\n let path = navigationInstruction.getWildcardPath();\r\n return childRouter\r\n ._createNavigationInstruction(path, navigationInstruction)\r\n .then((childInstruction) => {\r\n viewPortPlan.childNavigationInstruction = childInstruction;\r\n return _buildNavigationPlan(childInstruction)\r\n .then((childPlan) => {\r\n if (childPlan instanceof Redirect) {\r\n return Promise.reject(childPlan);\r\n }\r\n childInstruction.plan = childPlan;\r\n viewPortInstruction.childNavigationInstruction = childInstruction;\r\n return loadNewRoute(routeLoader, childInstruction);\r\n });\r\n });\r\n }\r\n // ts complains without this, though they are same\r\n return void 0;\r\n });\r\n};\r\n/**\r\n * Load a routed-component based on navigation instruction and route config\r\n * @internal exported for unit testing only\r\n */\r\nconst loadComponent = (routeLoader, navigationInstruction, config) => {\r\n let router = navigationInstruction.router;\r\n let lifecycleArgs = navigationInstruction.lifecycleArgs;\r\n return Promise.resolve()\r\n .then(() => routeLoader.loadRoute(router, config, navigationInstruction))\r\n .then(\r\n /**\r\n * @param component an object carrying information about loaded route\r\n * typically contains information about view model, childContainer, view and router\r\n */\r\n (component) => {\r\n let { viewModel, childContainer } = component;\r\n component.router = router;\r\n component.config = config;\r\n if ('configureRouter' in viewModel) {\r\n let childRouter = childContainer.getChildRouter();\r\n component.childRouter = childRouter;\r\n return childRouter\r\n .configure(c => viewModel.configureRouter(c, childRouter, lifecycleArgs[0], lifecycleArgs[1], lifecycleArgs[2]))\r\n .then(() => component);\r\n }\r\n return component;\r\n });\r\n};\n\n/**\r\n * Abstract class that is responsible for loading view / view model from a route config\r\n * The default implementation can be found in `aurelia-templating-router`\r\n */\r\nclass RouteLoader {\r\n /**\r\n * Load a route config based on its viewmodel / view configuration\r\n */\r\n // return typing: return typings used to be never\r\n // as it was a throw. Changing it to Promise should not cause any issues\r\n loadRoute(router, config, navigationInstruction) {\r\n throw new Error('Route loaders must implement \"loadRoute(router, config, navigationInstruction)\".');\r\n }\r\n}\n\n/**\r\n * A pipeline step responsible for loading a route config of a navigation instruction\r\n */\r\nclass LoadRouteStep {\r\n /**@internal */\r\n static inject() { return [RouteLoader]; }\r\n constructor(routeLoader) {\r\n this.routeLoader = routeLoader;\r\n }\r\n /**\r\n * Run the internal to load route config of a navigation instruction to prepare for next steps in the pipeline\r\n */\r\n run(navigationInstruction, next) {\r\n return loadNewRoute(this.routeLoader, navigationInstruction)\r\n .then(next, next.cancel);\r\n }\r\n}\n\n/**\r\n * A pipeline step for instructing a piepline to commit changes on a navigation instruction\r\n */\r\nclass CommitChangesStep {\r\n run(navigationInstruction, next) {\r\n return navigationInstruction\r\n ._commitChanges(/*wait to swap?*/ true)\r\n .then(() => {\r\n navigationInstruction._updateTitle();\r\n return next();\r\n });\r\n }\r\n}\n\n/**\r\n * An optional interface describing the available activation strategies.\r\n * @internal Used internally.\r\n */\r\nvar InternalActivationStrategy;\r\n(function (InternalActivationStrategy) {\r\n /**\r\n * Reuse the existing view model, without invoking Router lifecycle hooks.\r\n */\r\n InternalActivationStrategy[\"NoChange\"] = \"no-change\";\r\n /**\r\n * Reuse the existing view model, invoking Router lifecycle hooks.\r\n */\r\n InternalActivationStrategy[\"InvokeLifecycle\"] = \"invoke-lifecycle\";\r\n /**\r\n * Replace the existing view model, invoking Router lifecycle hooks.\r\n */\r\n InternalActivationStrategy[\"Replace\"] = \"replace\";\r\n})(InternalActivationStrategy || (InternalActivationStrategy = {}));\r\n/**\r\n * The strategy to use when activating modules during navigation.\r\n */\r\n// kept for compat reason\r\nconst activationStrategy = {\r\n noChange: \"no-change\" /* NoChange */,\r\n invokeLifecycle: \"invoke-lifecycle\" /* InvokeLifecycle */,\r\n replace: \"replace\" /* Replace */\r\n};\n\n/**\r\n * Recursively find list of deactivate-able view models\r\n * and invoke the either 'canDeactivate' or 'deactivate' on each\r\n * @internal exported for unit testing\r\n */\r\nconst processDeactivatable = (navigationInstruction, callbackName, next, ignoreResult) => {\r\n let plan = navigationInstruction.plan;\r\n let infos = findDeactivatable(plan, callbackName);\r\n let i = infos.length; // query from inside out\r\n function inspect(val) {\r\n if (ignoreResult || shouldContinue(val)) {\r\n return iterate();\r\n }\r\n return next.cancel(val);\r\n }\r\n function iterate() {\r\n if (i--) {\r\n try {\r\n let viewModel = infos[i];\r\n let result = viewModel[callbackName](navigationInstruction);\r\n return processPotential(result, inspect, next.cancel);\r\n }\r\n catch (error) {\r\n return next.cancel(error);\r\n }\r\n }\r\n navigationInstruction.router.couldDeactivate = true;\r\n return next();\r\n }\r\n return iterate();\r\n};\r\n/**\r\n * Recursively find and returns a list of deactivate-able view models\r\n * @internal exported for unit testing\r\n */\r\nconst findDeactivatable = (plan, callbackName, list = []) => {\r\n for (let viewPortName in plan) {\r\n let viewPortPlan = plan[viewPortName];\r\n let prevComponent = viewPortPlan.prevComponent;\r\n if ((viewPortPlan.strategy === activationStrategy.invokeLifecycle || viewPortPlan.strategy === activationStrategy.replace)\r\n && prevComponent) {\r\n let viewModel = prevComponent.viewModel;\r\n if (callbackName in viewModel) {\r\n list.push(viewModel);\r\n }\r\n }\r\n if (viewPortPlan.strategy === activationStrategy.replace && prevComponent) {\r\n addPreviousDeactivatable(prevComponent, callbackName, list);\r\n }\r\n else if (viewPortPlan.childNavigationInstruction) {\r\n findDeactivatable(viewPortPlan.childNavigationInstruction.plan, callbackName, list);\r\n }\r\n }\r\n return list;\r\n};\r\n/**\r\n * @internal exported for unit testing\r\n */\r\nconst addPreviousDeactivatable = (component, callbackName, list) => {\r\n let childRouter = component.childRouter;\r\n if (childRouter && childRouter.currentInstruction) {\r\n let viewPortInstructions = childRouter.currentInstruction.viewPortInstructions;\r\n for (let viewPortName in viewPortInstructions) {\r\n let viewPortInstruction = viewPortInstructions[viewPortName];\r\n let prevComponent = viewPortInstruction.component;\r\n let prevViewModel = prevComponent.viewModel;\r\n if (callbackName in prevViewModel) {\r\n list.push(prevViewModel);\r\n }\r\n addPreviousDeactivatable(prevComponent, callbackName, list);\r\n }\r\n }\r\n};\r\n/**\r\n * @internal exported for unit testing\r\n */\r\nconst processActivatable = (navigationInstruction, callbackName, next, ignoreResult) => {\r\n let infos = findActivatable(navigationInstruction, callbackName);\r\n let length = infos.length;\r\n let i = -1; // query from top down\r\n function inspect(val, router) {\r\n if (ignoreResult || shouldContinue(val, router)) {\r\n return iterate();\r\n }\r\n return next.cancel(val);\r\n }\r\n function iterate() {\r\n i++;\r\n if (i < length) {\r\n try {\r\n let current = infos[i];\r\n let result = current.viewModel[callbackName](...current.lifecycleArgs);\r\n return processPotential(result, (val) => inspect(val, current.router), next.cancel);\r\n }\r\n catch (error) {\r\n return next.cancel(error);\r\n }\r\n }\r\n return next();\r\n }\r\n return iterate();\r\n};\r\n/**\r\n * Find list of activatable view model and add to list (3rd parameter)\r\n * @internal exported for unit testing\r\n */\r\nconst findActivatable = (navigationInstruction, callbackName, list = [], router) => {\r\n let plan = navigationInstruction.plan;\r\n Object\r\n .keys(plan)\r\n .forEach((viewPortName) => {\r\n let viewPortPlan = plan[viewPortName];\r\n let viewPortInstruction = navigationInstruction.viewPortInstructions[viewPortName];\r\n let viewPortComponent = viewPortInstruction.component;\r\n let viewModel = viewPortComponent.viewModel;\r\n if ((viewPortPlan.strategy === activationStrategy.invokeLifecycle\r\n || viewPortPlan.strategy === activationStrategy.replace)\r\n && callbackName in viewModel) {\r\n list.push({\r\n viewModel,\r\n lifecycleArgs: viewPortInstruction.lifecycleArgs,\r\n router\r\n });\r\n }\r\n let childNavInstruction = viewPortPlan.childNavigationInstruction;\r\n if (childNavInstruction) {\r\n findActivatable(childNavInstruction, callbackName, list, viewPortComponent.childRouter || router);\r\n }\r\n });\r\n return list;\r\n};\r\nconst shouldContinue = (output, router) => {\r\n if (output instanceof Error) {\r\n return false;\r\n }\r\n if (isNavigationCommand(output)) {\r\n if (typeof output.setRouter === 'function') {\r\n output.setRouter(router);\r\n }\r\n return !!output.shouldContinueProcessing;\r\n }\r\n if (output === undefined) {\r\n return true;\r\n }\r\n return output;\r\n};\r\n/**\r\n * wraps a subscription, allowing unsubscribe calls even if\r\n * the first value comes synchronously\r\n */\r\nclass SafeSubscription {\r\n constructor(subscriptionFunc) {\r\n this._subscribed = true;\r\n this._subscription = subscriptionFunc(this);\r\n if (!this._subscribed) {\r\n this.unsubscribe();\r\n }\r\n }\r\n get subscribed() {\r\n return this._subscribed;\r\n }\r\n unsubscribe() {\r\n if (this._subscribed && this._subscription) {\r\n this._subscription.unsubscribe();\r\n }\r\n this._subscribed = false;\r\n }\r\n}\r\n/**\r\n * A function to process return value from `activate`/`canActivate` steps\r\n * Supports observable/promise\r\n *\r\n * For observable, resolve at first next() or on complete()\r\n */\r\nconst processPotential = (obj, resolve, reject) => {\r\n // if promise like\r\n if (obj && typeof obj.then === 'function') {\r\n return Promise.resolve(obj).then(resolve).catch(reject);\r\n }\r\n // if observable\r\n if (obj && typeof obj.subscribe === 'function') {\r\n let obs = obj;\r\n return new SafeSubscription(sub => obs.subscribe({\r\n next() {\r\n if (sub.subscribed) {\r\n sub.unsubscribe();\r\n resolve(obj);\r\n }\r\n },\r\n error(error) {\r\n if (sub.subscribed) {\r\n sub.unsubscribe();\r\n reject(error);\r\n }\r\n },\r\n complete() {\r\n if (sub.subscribed) {\r\n sub.unsubscribe();\r\n resolve(obj);\r\n }\r\n }\r\n }));\r\n }\r\n // else just resolve\r\n try {\r\n return resolve(obj);\r\n }\r\n catch (error) {\r\n return reject(error);\r\n }\r\n};\n\n/**\r\n * A pipeline step responsible for finding and activating method `canDeactivate` on a view model of a route\r\n */\r\nclass CanDeactivatePreviousStep {\r\n run(navigationInstruction, next) {\r\n return processDeactivatable(navigationInstruction, 'canDeactivate', next);\r\n }\r\n}\r\n/**\r\n * A pipeline step responsible for finding and activating method `canActivate` on a view model of a route\r\n */\r\nclass CanActivateNextStep {\r\n run(navigationInstruction, next) {\r\n return processActivatable(navigationInstruction, 'canActivate', next);\r\n }\r\n}\r\n/**\r\n * A pipeline step responsible for finding and activating method `deactivate` on a view model of a route\r\n */\r\nclass DeactivatePreviousStep {\r\n run(navigationInstruction, next) {\r\n return processDeactivatable(navigationInstruction, 'deactivate', next, true);\r\n }\r\n}\r\n/**\r\n * A pipeline step responsible for finding and activating method `activate` on a view model of a route\r\n */\r\nclass ActivateNextStep {\r\n run(navigationInstruction, next) {\r\n return processActivatable(navigationInstruction, 'activate', next, true);\r\n }\r\n}\n\n/**\r\n * A multi-slots Pipeline Placeholder Step for hooking into a pipeline execution\r\n */\r\nclass PipelineSlot {\r\n constructor(container, name, alias) {\r\n this.steps = [];\r\n this.container = container;\r\n this.slotName = name;\r\n this.slotAlias = alias;\r\n }\r\n getSteps() {\r\n return this.steps.map(x => this.container.get(x));\r\n }\r\n}\r\n/**\r\n * Class responsible for creating the navigation pipeline.\r\n */\r\nclass PipelineProvider {\r\n /**@internal */\r\n static inject() { return [Container]; }\r\n constructor(container) {\r\n this.container = container;\r\n this.steps = [\r\n BuildNavigationPlanStep,\r\n CanDeactivatePreviousStep,\r\n LoadRouteStep,\r\n createPipelineSlot(container, \"authorize\" /* Authorize */),\r\n CanActivateNextStep,\r\n createPipelineSlot(container, \"preActivate\" /* PreActivate */, 'modelbind'),\r\n // NOTE: app state changes start below - point of no return\r\n DeactivatePreviousStep,\r\n ActivateNextStep,\r\n createPipelineSlot(container, \"preRender\" /* PreRender */, 'precommit'),\r\n CommitChangesStep,\r\n createPipelineSlot(container, \"postRender\" /* PostRender */, 'postcomplete')\r\n ];\r\n }\r\n /**\r\n * Create the navigation pipeline.\r\n */\r\n createPipeline(useCanDeactivateStep = true) {\r\n let pipeline = new Pipeline();\r\n this.steps.forEach(step => {\r\n if (useCanDeactivateStep || step !== CanDeactivatePreviousStep) {\r\n pipeline.addStep(this.container.get(step));\r\n }\r\n });\r\n return pipeline;\r\n }\r\n /**@internal */\r\n _findStep(name) {\r\n // Steps that are not PipelineSlots are constructor functions, and they will automatically fail. Probably.\r\n return this.steps.find(x => x.slotName === name || x.slotAlias === name);\r\n }\r\n /**\r\n * Adds a step into the pipeline at a known slot location.\r\n */\r\n addStep(name, step) {\r\n let found = this._findStep(name);\r\n if (found) {\r\n let slotSteps = found.steps;\r\n // prevent duplicates\r\n if (!slotSteps.includes(step)) {\r\n slotSteps.push(step);\r\n }\r\n }\r\n else {\r\n throw new Error(`Invalid pipeline slot name: ${name}.`);\r\n }\r\n }\r\n /**\r\n * Removes a step from a slot in the pipeline\r\n */\r\n removeStep(name, step) {\r\n let slot = this._findStep(name);\r\n if (slot) {\r\n let slotSteps = slot.steps;\r\n slotSteps.splice(slotSteps.indexOf(step), 1);\r\n }\r\n }\r\n /**\r\n * Clears all steps from a slot in the pipeline\r\n * @internal\r\n */\r\n _clearSteps(name = '') {\r\n let slot = this._findStep(name);\r\n if (slot) {\r\n slot.steps = [];\r\n }\r\n }\r\n /**\r\n * Resets all pipeline slots\r\n */\r\n reset() {\r\n this._clearSteps(\"authorize\" /* Authorize */);\r\n this._clearSteps(\"preActivate\" /* PreActivate */);\r\n this._clearSteps(\"preRender\" /* PreRender */);\r\n this._clearSteps(\"postRender\" /* PostRender */);\r\n }\r\n}\r\n/**@internal */\r\nconst createPipelineSlot = (container, name, alias) => {\r\n return new PipelineSlot(container, name, alias);\r\n};\n\nconst logger = getLogger('app-router');\r\n/**\r\n * The main application router.\r\n */\r\nclass AppRouter extends Router {\r\n /**@internal */\r\n static inject() { return [Container, History, PipelineProvider, EventAggregator]; }\r\n constructor(container, history, pipelineProvider, events) {\r\n super(container, history); // Note the super will call reset internally.\r\n this.pipelineProvider = pipelineProvider;\r\n this.events = events;\r\n }\r\n /**\r\n * Fully resets the router's internal state. Primarily used internally by the framework when multiple calls to setRoot are made.\r\n * Use with caution (actually, avoid using this). Do not use this to simply change your navigation model.\r\n */\r\n reset() {\r\n super.reset();\r\n this.maxInstructionCount = 10;\r\n if (!this._queue) {\r\n this._queue = [];\r\n }\r\n else {\r\n this._queue.length = 0;\r\n }\r\n }\r\n /**\r\n * Loads the specified URL.\r\n *\r\n * @param url The URL fragment to load.\r\n */\r\n loadUrl(url) {\r\n return this\r\n ._createNavigationInstruction(url)\r\n .then(instruction => this._queueInstruction(instruction))\r\n .catch(error => {\r\n logger.error(error);\r\n restorePreviousLocation(this);\r\n });\r\n }\r\n /**\r\n * Registers a viewPort to be used as a rendering target for activated routes.\r\n *\r\n * @param viewPort The viewPort. This is typically a element in Aurelia default impl\r\n * @param name The name of the viewPort. 'default' if unspecified.\r\n */\r\n registerViewPort(viewPort, name) {\r\n // having strong typing without changing public API\r\n const $viewPort = viewPort;\r\n super.registerViewPort($viewPort, name);\r\n // beside adding viewport to the registry of this instance\r\n // AppRouter also configure routing/history to start routing functionality\r\n // There are situation where there are more than 1 element at root view\r\n // in that case, still only activate once via the following guard\r\n if (!this.isActive) {\r\n const viewModel = this._findViewModel($viewPort);\r\n if ('configureRouter' in viewModel) {\r\n // If there are more than one element at root view\r\n // use this flag to guard against configure method being invoked multiple times\r\n // this flag is set inside method configure\r\n if (!this.isConfigured) {\r\n // replace the real resolve with a noop to guarantee that any action in base class Router\r\n // won't resolve the configurePromise prematurely\r\n const resolveConfiguredPromise = this._resolveConfiguredPromise;\r\n this._resolveConfiguredPromise = () => { };\r\n return this\r\n .configure(config => Promise\r\n .resolve(viewModel.configureRouter(config, this))\r\n // an issue with configure interface. Should be fixed there\r\n // todo: fix this via configure interface in router\r\n .then(() => config))\r\n .then(() => {\r\n this.activate();\r\n resolveConfiguredPromise();\r\n });\r\n }\r\n }\r\n else {\r\n this.activate();\r\n }\r\n }\r\n // when a viewport is added dynamically to a root view that is already activated\r\n // just process the navigation instruction\r\n else {\r\n this._dequeueInstruction();\r\n }\r\n return Promise.resolve();\r\n }\r\n /**\r\n * Activates the router. This instructs the router to begin listening for history changes and processing instructions.\r\n *\r\n * @params options The set of options to activate the router with.\r\n */\r\n activate(options) {\r\n if (this.isActive) {\r\n return;\r\n }\r\n this.isActive = true;\r\n // route handler property is responsible for handling url change\r\n // the interface of aurelia-history isn't clear on this perspective\r\n this.options = Object.assign({ routeHandler: this.loadUrl.bind(this) }, this.options, options);\r\n this.history.activate(this.options);\r\n this._dequeueInstruction();\r\n }\r\n /**\r\n * Deactivates the router.\r\n */\r\n deactivate() {\r\n this.isActive = false;\r\n this.history.deactivate();\r\n }\r\n /**@internal */\r\n _queueInstruction(instruction) {\r\n return new Promise((resolve) => {\r\n instruction.resolve = resolve;\r\n this._queue.unshift(instruction);\r\n this._dequeueInstruction();\r\n });\r\n }\r\n /**@internal */\r\n _dequeueInstruction(instructionCount = 0) {\r\n return Promise.resolve().then(() => {\r\n if (this.isNavigating && !instructionCount) {\r\n // ts complains about inconsistent returns without void 0\r\n return void 0;\r\n }\r\n let instruction = this._queue.shift();\r\n this._queue.length = 0;\r\n if (!instruction) {\r\n // ts complains about inconsistent returns without void 0\r\n return void 0;\r\n }\r\n this.isNavigating = true;\r\n let navtracker = this.history.getState('NavigationTracker');\r\n let currentNavTracker = this.currentNavigationTracker;\r\n if (!navtracker && !currentNavTracker) {\r\n this.isNavigatingFirst = true;\r\n this.isNavigatingNew = true;\r\n }\r\n else if (!navtracker) {\r\n this.isNavigatingNew = true;\r\n }\r\n else if (!currentNavTracker) {\r\n this.isNavigatingRefresh = true;\r\n }\r\n else if (currentNavTracker < navtracker) {\r\n this.isNavigatingForward = true;\r\n }\r\n else if (currentNavTracker > navtracker) {\r\n this.isNavigatingBack = true;\r\n }\r\n if (!navtracker) {\r\n navtracker = Date.now();\r\n this.history.setState('NavigationTracker', navtracker);\r\n }\r\n this.currentNavigationTracker = navtracker;\r\n instruction.previousInstruction = this.currentInstruction;\r\n let maxInstructionCount = this.maxInstructionCount;\r\n if (!instructionCount) {\r\n this.events.publish(\"router:navigation:processing\" /* Processing */, { instruction });\r\n }\r\n else if (instructionCount === maxInstructionCount - 1) {\r\n logger.error(`${instructionCount + 1} navigation instructions have been attempted without success. Restoring last known good location.`);\r\n restorePreviousLocation(this);\r\n return this._dequeueInstruction(instructionCount + 1);\r\n }\r\n else if (instructionCount > maxInstructionCount) {\r\n throw new Error('Maximum navigation attempts exceeded. Giving up.');\r\n }\r\n let pipeline = this.pipelineProvider.createPipeline(!this.couldDeactivate);\r\n return pipeline\r\n .run(instruction)\r\n .then(result => processResult(instruction, result, instructionCount, this))\r\n .catch(error => {\r\n return { output: error instanceof Error ? error : new Error(error) };\r\n })\r\n .then(result => resolveInstruction(instruction, result, !!instructionCount, this));\r\n });\r\n }\r\n /**@internal */\r\n _findViewModel(viewPort) {\r\n if (this.container.viewModel) {\r\n return this.container.viewModel;\r\n }\r\n if (viewPort.container) {\r\n let container = viewPort.container;\r\n while (container) {\r\n if (container.viewModel) {\r\n this.container.viewModel = container.viewModel;\r\n return container.viewModel;\r\n }\r\n container = container.parent;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\nconst processResult = (instruction, result, instructionCount, router) => {\r\n if (!(result && 'completed' in result && 'output' in result)) {\r\n result = result || {};\r\n result.output = new Error(`Expected router pipeline to return a navigation result, but got [${JSON.stringify(result)}] instead.`);\r\n }\r\n let finalResult = null;\r\n let navigationCommandResult = null;\r\n if (isNavigationCommand(result.output)) {\r\n navigationCommandResult = result.output.navigate(router);\r\n }\r\n else {\r\n finalResult = result;\r\n if (!result.completed) {\r\n if (result.output instanceof Error) {\r\n logger.error(result.output.toString());\r\n }\r\n restorePreviousLocation(router);\r\n }\r\n }\r\n return Promise.resolve(navigationCommandResult)\r\n .then(_ => router._dequeueInstruction(instructionCount + 1))\r\n .then(innerResult => finalResult || innerResult || result);\r\n};\r\nconst resolveInstruction = (instruction, result, isInnerInstruction, router) => {\r\n instruction.resolve(result);\r\n let eventAggregator = router.events;\r\n let eventArgs = { instruction, result };\r\n if (!isInnerInstruction) {\r\n router.isNavigating = false;\r\n router.isExplicitNavigation = false;\r\n router.isExplicitNavigationBack = false;\r\n router.isNavigatingFirst = false;\r\n router.isNavigatingNew = false;\r\n router.isNavigatingRefresh = false;\r\n router.isNavigatingForward = false;\r\n router.isNavigatingBack = false;\r\n router.couldDeactivate = false;\r\n let eventName;\r\n if (result.output instanceof Error) {\r\n eventName = \"router:navigation:error\" /* Error */;\r\n }\r\n else if (!result.completed) {\r\n eventName = \"router:navigation:canceled\" /* Canceled */;\r\n }\r\n else {\r\n let queryString = instruction.queryString ? ('?' + instruction.queryString) : '';\r\n router.history.previousLocation = instruction.fragment + queryString;\r\n eventName = \"router:navigation:success\" /* Success */;\r\n }\r\n eventAggregator.publish(eventName, eventArgs);\r\n eventAggregator.publish(\"router:navigation:complete\" /* Complete */, eventArgs);\r\n }\r\n else {\r\n eventAggregator.publish(\"router:navigation:child:complete\" /* ChildComplete */, eventArgs);\r\n }\r\n return result;\r\n};\r\nconst restorePreviousLocation = (router) => {\r\n let previousLocation = router.history.previousLocation;\r\n if (previousLocation) {\r\n router.navigate(previousLocation, { trigger: false, replace: true });\r\n }\r\n else if (router.fallbackRoute) {\r\n router.navigate(router.fallbackRoute, { trigger: true, replace: true });\r\n }\r\n else {\r\n logger.error('Router navigation failed, and no previous location or fallbackRoute could be restored.');\r\n }\r\n};\n\n/**\r\n* The status of a Pipeline.\r\n*/\r\nvar PipelineStatus;\r\n(function (PipelineStatus) {\r\n PipelineStatus[\"Completed\"] = \"completed\";\r\n PipelineStatus[\"Canceled\"] = \"canceled\";\r\n PipelineStatus[\"Rejected\"] = \"rejected\";\r\n PipelineStatus[\"Running\"] = \"running\";\r\n})(PipelineStatus || (PipelineStatus = {}));\n\n/**\r\n * A list of known router events used by the Aurelia router\r\n * to signal the pipeline has come to a certain state\r\n */\r\n// const enum is preserved in tsconfig\r\nvar RouterEvent;\r\n(function (RouterEvent) {\r\n RouterEvent[\"Processing\"] = \"router:navigation:processing\";\r\n RouterEvent[\"Error\"] = \"router:navigation:error\";\r\n RouterEvent[\"Canceled\"] = \"router:navigation:canceled\";\r\n RouterEvent[\"Complete\"] = \"router:navigation:complete\";\r\n RouterEvent[\"Success\"] = \"router:navigation:success\";\r\n RouterEvent[\"ChildComplete\"] = \"router:navigation:child:complete\";\r\n})(RouterEvent || (RouterEvent = {}));\n\n/**\r\n * Available pipeline slot names to insert interceptor into router pipeline\r\n */\r\n// const enum is preserved in tsconfig\r\nvar PipelineSlotName;\r\n(function (PipelineSlotName) {\r\n /**\r\n * Authorization slot. Invoked early in the pipeline,\r\n * before `canActivate` hook of incoming route\r\n */\r\n PipelineSlotName[\"Authorize\"] = \"authorize\";\r\n /**\r\n * Pre-activation slot. Invoked early in the pipeline,\r\n * Invoked timing:\r\n * - after Authorization slot\r\n * - after canActivate hook on new view model\r\n * - before deactivate hook on old view model\r\n * - before activate hook on new view model\r\n */\r\n PipelineSlotName[\"PreActivate\"] = \"preActivate\";\r\n /**\r\n * Pre-render slot. Invoked later in the pipeline\r\n * Invokcation timing:\r\n * - after activate hook on new view model\r\n * - before commit step on new navigation instruction\r\n */\r\n PipelineSlotName[\"PreRender\"] = \"preRender\";\r\n /**\r\n * Post-render slot. Invoked last in the pipeline\r\n */\r\n PipelineSlotName[\"PostRender\"] = \"postRender\";\r\n})(PipelineSlotName || (PipelineSlotName = {}));\n\nexport { ActivateNextStep, AppRouter, BuildNavigationPlanStep, CanActivateNextStep, CanDeactivatePreviousStep, CommitChangesStep, DeactivatePreviousStep, LoadRouteStep, NavModel, NavigationInstruction, Pipeline, PipelineProvider, PipelineSlotName, PipelineStatus, Redirect, RedirectToRoute, RouteLoader, Router, RouterConfiguration, RouterEvent, activationStrategy, isNavigationCommand };\n//# sourceMappingURL=aurelia-router.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-router/dist/es2015/aurelia-router.js\n// module id = aurelia-router\n// module chunks = 2","var _class, _temp, _dec, _class2, _dec2, _class3, _class4, _temp2, _class5, _temp3;\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 { camelCase, SVGAnalyzer, bindingMode, connectable, enqueueBindingConnect, sourceContext, Parser, ObserverLocator, EventManager, ListenerExpression, BindingExpression, CallExpression, delegationStrategy, NameExpression, LiteralString } from 'aurelia-binding';\nimport { BehaviorInstruction, BindingLanguage } from 'aurelia-templating';\n\nexport var AttributeMap = (_temp = _class = function () {\n function AttributeMap(svg) {\n \n\n this.elements = Object.create(null);\n this.allElements = Object.create(null);\n\n this.svg = svg;\n\n this.registerUniversal('accesskey', 'accessKey');\n this.registerUniversal('contenteditable', 'contentEditable');\n this.registerUniversal('tabindex', 'tabIndex');\n this.registerUniversal('textcontent', 'textContent');\n this.registerUniversal('innerhtml', 'innerHTML');\n this.registerUniversal('scrolltop', 'scrollTop');\n this.registerUniversal('scrollleft', 'scrollLeft');\n this.registerUniversal('readonly', 'readOnly');\n\n this.register('label', 'for', 'htmlFor');\n\n this.register('img', 'usemap', 'useMap');\n\n this.register('input', 'maxlength', 'maxLength');\n this.register('input', 'minlength', 'minLength');\n this.register('input', 'formaction', 'formAction');\n this.register('input', 'formenctype', 'formEncType');\n this.register('input', 'formmethod', 'formMethod');\n this.register('input', 'formnovalidate', 'formNoValidate');\n this.register('input', 'formtarget', 'formTarget');\n\n this.register('textarea', 'maxlength', 'maxLength');\n\n this.register('td', 'rowspan', 'rowSpan');\n this.register('td', 'colspan', 'colSpan');\n this.register('th', 'rowspan', 'rowSpan');\n this.register('th', 'colspan', 'colSpan');\n }\n\n AttributeMap.prototype.register = function register(elementName, attributeName, propertyName) {\n elementName = elementName.toLowerCase();\n attributeName = attributeName.toLowerCase();\n var element = this.elements[elementName] = this.elements[elementName] || Object.create(null);\n element[attributeName] = propertyName;\n };\n\n AttributeMap.prototype.registerUniversal = function registerUniversal(attributeName, propertyName) {\n attributeName = attributeName.toLowerCase();\n this.allElements[attributeName] = propertyName;\n };\n\n AttributeMap.prototype.map = function map(elementName, attributeName) {\n if (this.svg.isStandardSvgAttribute(elementName, attributeName)) {\n return attributeName;\n }\n elementName = elementName.toLowerCase();\n attributeName = attributeName.toLowerCase();\n var element = this.elements[elementName];\n if (element !== undefined && attributeName in element) {\n return element[attributeName];\n }\n if (attributeName in this.allElements) {\n return this.allElements[attributeName];\n }\n\n if (/(?:^data-)|(?:^aria-)|:/.test(attributeName)) {\n return attributeName;\n }\n return camelCase(attributeName);\n };\n\n return AttributeMap;\n}(), _class.inject = [SVGAnalyzer], _temp);\n\nexport var InterpolationBindingExpression = function () {\n function InterpolationBindingExpression(observerLocator, targetProperty, parts, mode, lookupFunctions, attribute) {\n \n\n this.observerLocator = observerLocator;\n this.targetProperty = targetProperty;\n this.parts = parts;\n this.mode = mode;\n this.lookupFunctions = lookupFunctions;\n this.attribute = this.attrToRemove = attribute;\n this.discrete = false;\n }\n\n InterpolationBindingExpression.prototype.createBinding = function createBinding(target) {\n if (this.parts.length === 3) {\n return new ChildInterpolationBinding(target, this.observerLocator, this.parts[1], this.mode, this.lookupFunctions, this.targetProperty, this.parts[0], this.parts[2]);\n }\n return new InterpolationBinding(this.observerLocator, this.parts, target, this.targetProperty, this.mode, this.lookupFunctions);\n };\n\n return InterpolationBindingExpression;\n}();\n\nfunction validateTarget(target, propertyName) {\n if (propertyName === 'style') {\n LogManager.getLogger('templating-binding').info('Internet Explorer does not support interpolation in \"style\" attributes. Use the style attribute\\'s alias, \"css\" instead.');\n } else if (target.parentElement && target.parentElement.nodeName === 'TEXTAREA' && propertyName === 'textContent') {\n throw new Error('Interpolation binding cannot be used in the content of a textarea element. Use instead.');\n }\n}\n\nexport var InterpolationBinding = function () {\n function InterpolationBinding(observerLocator, parts, target, targetProperty, mode, lookupFunctions) {\n \n\n validateTarget(target, targetProperty);\n this.observerLocator = observerLocator;\n this.parts = parts;\n this.target = target;\n this.targetProperty = targetProperty;\n this.targetAccessor = observerLocator.getAccessor(target, targetProperty);\n this.mode = mode;\n this.lookupFunctions = lookupFunctions;\n }\n\n InterpolationBinding.prototype.interpolate = function interpolate() {\n if (this.isBound) {\n var value = '';\n var parts = this.parts;\n for (var i = 0, ii = parts.length; i < ii; i++) {\n value += i % 2 === 0 ? parts[i] : this['childBinding' + i].value;\n }\n this.targetAccessor.setValue(value, this.target, this.targetProperty);\n }\n };\n\n InterpolationBinding.prototype.updateOneTimeBindings = function updateOneTimeBindings() {\n for (var i = 1, ii = this.parts.length; i < ii; i += 2) {\n var child = this['childBinding' + i];\n if (child.mode === bindingMode.oneTime) {\n child.call();\n }\n }\n };\n\n InterpolationBinding.prototype.bind = function bind(source) {\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n this.source = source;\n\n var parts = this.parts;\n for (var i = 1, ii = parts.length; i < ii; i += 2) {\n var binding = new ChildInterpolationBinding(this, this.observerLocator, parts[i], this.mode, this.lookupFunctions);\n binding.bind(source);\n this['childBinding' + i] = binding;\n }\n\n this.isBound = true;\n this.interpolate();\n };\n\n InterpolationBinding.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n this.source = null;\n var parts = this.parts;\n for (var i = 1, ii = parts.length; i < ii; i += 2) {\n var name = 'childBinding' + i;\n this[name].unbind();\n }\n };\n\n return InterpolationBinding;\n}();\n\nexport var ChildInterpolationBinding = (_dec = connectable(), _dec(_class2 = function () {\n function ChildInterpolationBinding(target, observerLocator, sourceExpression, mode, lookupFunctions, targetProperty, left, right) {\n \n\n if (target instanceof InterpolationBinding) {\n this.parent = target;\n } else {\n validateTarget(target, targetProperty);\n this.target = target;\n this.targetProperty = targetProperty;\n this.targetAccessor = observerLocator.getAccessor(target, targetProperty);\n }\n this.observerLocator = observerLocator;\n this.sourceExpression = sourceExpression;\n this.mode = mode;\n this.lookupFunctions = lookupFunctions;\n this.left = left;\n this.right = right;\n }\n\n ChildInterpolationBinding.prototype.updateTarget = function updateTarget(value) {\n value = value === null || value === undefined ? '' : value.toString();\n if (value !== this.value) {\n this.value = value;\n if (this.parent) {\n this.parent.interpolate();\n } else {\n this.targetAccessor.setValue(this.left + value + this.right, this.target, this.targetProperty);\n }\n }\n };\n\n ChildInterpolationBinding.prototype.call = function call() {\n if (!this.isBound) {\n return;\n }\n\n this.rawValue = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n this.updateTarget(this.rawValue);\n\n if (this.mode !== bindingMode.oneTime) {\n this._version++;\n this.sourceExpression.connect(this, this.source);\n if (this.rawValue instanceof Array) {\n this.observeArray(this.rawValue);\n }\n this.unobserve(false);\n }\n };\n\n ChildInterpolationBinding.prototype.bind = function bind(source) {\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n this.isBound = true;\n this.source = source;\n\n var sourceExpression = this.sourceExpression;\n if (sourceExpression.bind) {\n sourceExpression.bind(this, source, this.lookupFunctions);\n }\n\n this.rawValue = sourceExpression.evaluate(source, this.lookupFunctions);\n this.updateTarget(this.rawValue);\n\n if (this.mode === bindingMode.oneWay) {\n enqueueBindingConnect(this);\n }\n };\n\n ChildInterpolationBinding.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n var sourceExpression = this.sourceExpression;\n if (sourceExpression.unbind) {\n sourceExpression.unbind(this, this.source);\n }\n this.source = null;\n this.value = null;\n this.rawValue = null;\n this.unobserve(true);\n };\n\n ChildInterpolationBinding.prototype.connect = function connect(evaluate) {\n if (!this.isBound) {\n return;\n }\n if (evaluate) {\n this.rawValue = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n this.updateTarget(this.rawValue);\n }\n this.sourceExpression.connect(this, this.source);\n if (this.rawValue instanceof Array) {\n this.observeArray(this.rawValue);\n }\n };\n\n return ChildInterpolationBinding;\n}()) || _class2);\n\nexport var LetExpression = function () {\n function LetExpression(observerLocator, targetProperty, sourceExpression, lookupFunctions, toBindingContext) {\n \n\n this.observerLocator = observerLocator;\n this.sourceExpression = sourceExpression;\n this.targetProperty = targetProperty;\n this.lookupFunctions = lookupFunctions;\n this.toBindingContext = toBindingContext;\n }\n\n LetExpression.prototype.createBinding = function createBinding() {\n return new LetBinding(this.observerLocator, this.sourceExpression, this.targetProperty, this.lookupFunctions, this.toBindingContext);\n };\n\n return LetExpression;\n}();\n\nexport var LetBinding = (_dec2 = connectable(), _dec2(_class3 = function () {\n function LetBinding(observerLocator, sourceExpression, targetProperty, lookupFunctions, toBindingContext) {\n \n\n this.observerLocator = observerLocator;\n this.sourceExpression = sourceExpression;\n this.targetProperty = targetProperty;\n this.lookupFunctions = lookupFunctions;\n this.source = null;\n this.target = null;\n this.toBindingContext = toBindingContext;\n }\n\n LetBinding.prototype.updateTarget = function updateTarget() {\n var value = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n this.target[this.targetProperty] = value;\n };\n\n LetBinding.prototype.call = function call(context) {\n if (!this.isBound) {\n return;\n }\n if (context === sourceContext) {\n this.updateTarget();\n return;\n }\n throw new Error('Unexpected call context ' + context);\n };\n\n LetBinding.prototype.bind = function bind(source) {\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n\n this.isBound = true;\n this.source = source;\n this.target = this.toBindingContext ? source.bindingContext : source.overrideContext;\n\n if (this.sourceExpression.bind) {\n this.sourceExpression.bind(this, source, this.lookupFunctions);\n }\n\n enqueueBindingConnect(this);\n };\n\n LetBinding.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n if (this.sourceExpression.unbind) {\n this.sourceExpression.unbind(this, this.source);\n }\n this.source = null;\n this.target = null;\n this.unobserve(true);\n };\n\n LetBinding.prototype.connect = function connect() {\n if (!this.isBound) {\n return;\n }\n this.updateTarget();\n this.sourceExpression.connect(this, this.source);\n };\n\n return LetBinding;\n}()) || _class3);\n\nexport var LetInterpolationBindingExpression = function () {\n function LetInterpolationBindingExpression(observerLocator, targetProperty, parts, lookupFunctions, toBindingContext) {\n \n\n this.observerLocator = observerLocator;\n this.targetProperty = targetProperty;\n this.parts = parts;\n this.lookupFunctions = lookupFunctions;\n this.toBindingContext = toBindingContext;\n }\n\n LetInterpolationBindingExpression.prototype.createBinding = function createBinding() {\n return new LetInterpolationBinding(this.observerLocator, this.targetProperty, this.parts, this.lookupFunctions, this.toBindingContext);\n };\n\n return LetInterpolationBindingExpression;\n}();\n\nexport var LetInterpolationBinding = function () {\n function LetInterpolationBinding(observerLocator, targetProperty, parts, lookupFunctions, toBindingContext) {\n \n\n this.observerLocator = observerLocator;\n this.parts = parts;\n this.targetProperty = targetProperty;\n this.lookupFunctions = lookupFunctions;\n this.toBindingContext = toBindingContext;\n this.target = null;\n }\n\n LetInterpolationBinding.prototype.bind = function bind(source) {\n if (this.isBound) {\n if (this.source === source) {\n return;\n }\n this.unbind();\n }\n\n this.isBound = true;\n this.source = source;\n this.target = this.toBindingContext ? source.bindingContext : source.overrideContext;\n\n this.interpolationBinding = this.createInterpolationBinding();\n this.interpolationBinding.bind(source);\n };\n\n LetInterpolationBinding.prototype.unbind = function unbind() {\n if (!this.isBound) {\n return;\n }\n this.isBound = false;\n this.source = null;\n this.target = null;\n this.interpolationBinding.unbind();\n this.interpolationBinding = null;\n };\n\n LetInterpolationBinding.prototype.createInterpolationBinding = function createInterpolationBinding() {\n if (this.parts.length === 3) {\n return new ChildInterpolationBinding(this.target, this.observerLocator, this.parts[1], bindingMode.oneWay, this.lookupFunctions, this.targetProperty, this.parts[0], this.parts[2]);\n }\n return new InterpolationBinding(this.observerLocator, this.parts, this.target, this.targetProperty, bindingMode.oneWay, this.lookupFunctions);\n };\n\n return LetInterpolationBinding;\n}();\n\nexport var SyntaxInterpreter = (_temp2 = _class4 = function () {\n function SyntaxInterpreter(parser, observerLocator, eventManager, attributeMap) {\n \n\n this.parser = parser;\n this.observerLocator = observerLocator;\n this.eventManager = eventManager;\n this.attributeMap = attributeMap;\n }\n\n SyntaxInterpreter.prototype.interpret = function interpret(resources, element, info, existingInstruction, context) {\n if (info.command in this) {\n return this[info.command](resources, element, info, existingInstruction, context);\n }\n\n return this.handleUnknownCommand(resources, element, info, existingInstruction, context);\n };\n\n SyntaxInterpreter.prototype.handleUnknownCommand = function handleUnknownCommand(resources, element, info, existingInstruction, context) {\n LogManager.getLogger('templating-binding').warn('Unknown binding command.', info);\n return existingInstruction;\n };\n\n SyntaxInterpreter.prototype.determineDefaultBindingMode = function determineDefaultBindingMode(element, attrName, context) {\n var tagName = element.tagName.toLowerCase();\n\n if (tagName === 'input' && (attrName === 'value' || attrName === 'files') && element.type !== 'checkbox' && element.type !== 'radio' || tagName === 'input' && attrName === 'checked' && (element.type === 'checkbox' || element.type === 'radio') || (tagName === 'textarea' || tagName === 'select') && attrName === 'value' || (attrName === 'textcontent' || attrName === 'innerhtml') && element.contentEditable === 'true' || attrName === 'scrolltop' || attrName === 'scrollleft') {\n return bindingMode.twoWay;\n }\n\n if (context && attrName in context.attributes && context.attributes[attrName] && context.attributes[attrName].defaultBindingMode >= bindingMode.oneTime) {\n return context.attributes[attrName].defaultBindingMode;\n }\n\n return bindingMode.oneWay;\n };\n\n SyntaxInterpreter.prototype.bind = function bind(resources, element, info, existingInstruction, context) {\n var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), info.defaultBindingMode === undefined || info.defaultBindingMode === null ? this.determineDefaultBindingMode(element, info.attrName, context) : info.defaultBindingMode, resources.lookupFunctions);\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype.trigger = function trigger(resources, element, info) {\n return new ListenerExpression(this.eventManager, info.attrName, this.parser.parse(info.attrValue), delegationStrategy.none, true, resources.lookupFunctions);\n };\n\n SyntaxInterpreter.prototype.capture = function capture(resources, element, info) {\n return new ListenerExpression(this.eventManager, info.attrName, this.parser.parse(info.attrValue), delegationStrategy.capturing, true, resources.lookupFunctions);\n };\n\n SyntaxInterpreter.prototype.delegate = function delegate(resources, element, info) {\n return new ListenerExpression(this.eventManager, info.attrName, this.parser.parse(info.attrValue), delegationStrategy.bubbling, true, resources.lookupFunctions);\n };\n\n SyntaxInterpreter.prototype.call = function call(resources, element, info, existingInstruction) {\n var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n instruction.attributes[info.attrName] = new CallExpression(this.observerLocator, info.attrName, this.parser.parse(info.attrValue), resources.lookupFunctions);\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype.options = function options(resources, element, info, existingInstruction, context) {\n var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n var attrValue = info.attrValue;\n var language = this.language;\n var name = null;\n var target = '';\n var current = void 0;\n var i = void 0;\n var ii = void 0;\n var inString = false;\n var inEscape = false;\n var foundName = false;\n\n for (i = 0, ii = attrValue.length; i < ii; ++i) {\n current = attrValue[i];\n\n if (current === ';' && !inString) {\n if (!foundName) {\n name = this._getPrimaryPropertyName(resources, context);\n }\n info = language.inspectAttribute(resources, '?', name, target.trim());\n language.createAttributeInstruction(resources, element, info, instruction, context);\n\n if (!instruction.attributes[info.attrName]) {\n instruction.attributes[info.attrName] = info.attrValue;\n }\n\n target = '';\n name = null;\n } else if (current === ':' && name === null) {\n foundName = true;\n name = target.trim();\n target = '';\n } else if (current === '\\\\') {\n target += current;\n inEscape = true;\n continue;\n } else {\n target += current;\n\n if (name !== null && inEscape === false && current === '\\'') {\n inString = !inString;\n }\n }\n\n inEscape = false;\n }\n\n if (!foundName) {\n name = this._getPrimaryPropertyName(resources, context);\n }\n\n if (name !== null) {\n info = language.inspectAttribute(resources, '?', name, target.trim());\n language.createAttributeInstruction(resources, element, info, instruction, context);\n\n if (!instruction.attributes[info.attrName]) {\n instruction.attributes[info.attrName] = info.attrValue;\n }\n }\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype._getPrimaryPropertyName = function _getPrimaryPropertyName(resources, context) {\n var type = resources.getAttribute(context.attributeName);\n if (type && type.primaryProperty) {\n return type.primaryProperty.attribute;\n }\n return null;\n };\n\n SyntaxInterpreter.prototype['for'] = function _for(resources, element, info, existingInstruction) {\n var parts = void 0;\n var keyValue = void 0;\n var instruction = void 0;\n var attrValue = void 0;\n var isDestructuring = void 0;\n\n attrValue = info.attrValue;\n isDestructuring = attrValue.match(/^ *[[].+[\\]]/);\n parts = isDestructuring ? attrValue.split('of ') : attrValue.split(' of ');\n\n if (parts.length !== 2) {\n throw new Error('Incorrect syntax for \"for\". The form is: \"$local of $items\" or \"[$key, $value] of $items\".');\n }\n\n instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n if (isDestructuring) {\n keyValue = parts[0].replace(/[[\\]]/g, '').replace(/,/g, ' ').replace(/\\s+/g, ' ').trim().split(' ');\n instruction.attributes.key = keyValue[0];\n instruction.attributes.value = keyValue[1];\n } else {\n instruction.attributes.local = parts[0];\n }\n\n instruction.attributes.items = new BindingExpression(this.observerLocator, 'items', this.parser.parse(parts[1]), bindingMode.oneWay, resources.lookupFunctions);\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype['two-way'] = function twoWay(resources, element, info, existingInstruction) {\n var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), bindingMode.twoWay, resources.lookupFunctions);\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype['to-view'] = function toView(resources, element, info, existingInstruction) {\n var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), bindingMode.toView, resources.lookupFunctions);\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype['from-view'] = function fromView(resources, element, info, existingInstruction) {\n var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), bindingMode.fromView, resources.lookupFunctions);\n\n return instruction;\n };\n\n SyntaxInterpreter.prototype['one-time'] = function oneTime(resources, element, info, existingInstruction) {\n var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), bindingMode.oneTime, resources.lookupFunctions);\n\n return instruction;\n };\n\n return SyntaxInterpreter;\n}(), _class4.inject = [Parser, ObserverLocator, EventManager, AttributeMap], _temp2);\n\nSyntaxInterpreter.prototype['one-way'] = SyntaxInterpreter.prototype['to-view'];\n\nvar info = {};\n\nexport var TemplatingBindingLanguage = (_temp3 = _class5 = function (_BindingLanguage) {\n _inherits(TemplatingBindingLanguage, _BindingLanguage);\n\n function TemplatingBindingLanguage(parser, observerLocator, syntaxInterpreter, attributeMap) {\n \n\n var _this = _possibleConstructorReturn(this, _BindingLanguage.call(this));\n\n _this.parser = parser;\n _this.observerLocator = observerLocator;\n _this.syntaxInterpreter = syntaxInterpreter;\n _this.emptyStringExpression = _this.parser.parse('\\'\\'');\n syntaxInterpreter.language = _this;\n _this.attributeMap = attributeMap;\n _this.toBindingContextAttr = 'to-binding-context';\n return _this;\n }\n\n TemplatingBindingLanguage.prototype.inspectAttribute = function inspectAttribute(resources, elementName, attrName, attrValue) {\n var parts = attrName.split('.');\n\n info.defaultBindingMode = null;\n\n if (parts.length === 2) {\n info.attrName = parts[0].trim();\n info.attrValue = attrValue;\n info.command = parts[1].trim();\n\n if (info.command === 'ref') {\n info.expression = new NameExpression(this.parser.parse(attrValue), info.attrName, resources.lookupFunctions);\n info.command = null;\n info.attrName = 'ref';\n } else {\n info.expression = null;\n }\n } else if (attrName === 'ref') {\n info.attrName = attrName;\n info.attrValue = attrValue;\n info.command = null;\n info.expression = new NameExpression(this.parser.parse(attrValue), 'element', resources.lookupFunctions);\n } else {\n info.attrName = attrName;\n info.attrValue = attrValue;\n info.command = null;\n var interpolationParts = this.parseInterpolation(resources, attrValue);\n if (interpolationParts === null) {\n info.expression = null;\n } else {\n info.expression = new InterpolationBindingExpression(this.observerLocator, this.attributeMap.map(elementName, attrName), interpolationParts, bindingMode.oneWay, resources.lookupFunctions, attrName);\n }\n }\n\n return info;\n };\n\n TemplatingBindingLanguage.prototype.createAttributeInstruction = function createAttributeInstruction(resources, element, theInfo, existingInstruction, context) {\n var instruction = void 0;\n\n if (theInfo.expression) {\n if (theInfo.attrName === 'ref') {\n return theInfo.expression;\n }\n\n instruction = existingInstruction || BehaviorInstruction.attribute(theInfo.attrName);\n instruction.attributes[theInfo.attrName] = theInfo.expression;\n } else if (theInfo.command) {\n instruction = this.syntaxInterpreter.interpret(resources, element, theInfo, existingInstruction, context);\n }\n\n return instruction;\n };\n\n TemplatingBindingLanguage.prototype.createLetExpressions = function createLetExpressions(resources, letElement) {\n var expressions = [];\n var attributes = letElement.attributes;\n\n var attr = void 0;\n\n var parts = void 0;\n var attrName = void 0;\n var attrValue = void 0;\n var command = void 0;\n var toBindingContextAttr = this.toBindingContextAttr;\n var toBindingContext = letElement.hasAttribute(toBindingContextAttr);\n for (var i = 0, ii = attributes.length; ii > i; ++i) {\n attr = attributes[i];\n attrName = attr.name;\n attrValue = attr.nodeValue;\n parts = attrName.split('.');\n\n if (attrName === toBindingContextAttr) {\n continue;\n }\n\n if (parts.length === 2) {\n command = parts[1];\n if (command !== 'bind') {\n LogManager.getLogger('templating-binding-language').warn('Detected invalid let command. Expected \"' + parts[0] + '.bind\", given \"' + attrName + '\"');\n continue;\n }\n expressions.push(new LetExpression(this.observerLocator, camelCase(parts[0]), this.parser.parse(attrValue), resources.lookupFunctions, toBindingContext));\n } else {\n attrName = camelCase(attrName);\n parts = this.parseInterpolation(resources, attrValue);\n if (parts === null) {\n LogManager.getLogger('templating-binding-language').warn('Detected string literal in let bindings. Did you mean \"' + attrName + '.bind=' + attrValue + '\" or \"' + attrName + '=${' + attrValue + '}\" ?');\n }\n if (parts) {\n expressions.push(new LetInterpolationBindingExpression(this.observerLocator, attrName, parts, resources.lookupFunctions, toBindingContext));\n } else {\n expressions.push(new LetExpression(this.observerLocator, attrName, new LiteralString(attrValue), resources.lookupFunctions, toBindingContext));\n }\n }\n }\n return expressions;\n };\n\n TemplatingBindingLanguage.prototype.inspectTextContent = function inspectTextContent(resources, value) {\n var parts = this.parseInterpolation(resources, value);\n if (parts === null) {\n return null;\n }\n return new InterpolationBindingExpression(this.observerLocator, 'textContent', parts, bindingMode.oneWay, resources.lookupFunctions, 'textContent');\n };\n\n TemplatingBindingLanguage.prototype.parseInterpolation = function parseInterpolation(resources, value) {\n var i = value.indexOf('${', 0);\n var ii = value.length;\n var char = void 0;\n var pos = 0;\n var open = 0;\n var quote = null;\n var interpolationStart = void 0;\n var parts = void 0;\n var partIndex = 0;\n\n while (i >= 0 && i < ii - 2) {\n open = 1;\n interpolationStart = i;\n i += 2;\n\n do {\n char = value[i];\n i++;\n\n if (char === \"'\" || char === '\"') {\n if (quote === null) {\n quote = char;\n } else if (quote === char) {\n quote = null;\n }\n continue;\n }\n\n if (char === '\\\\') {\n i++;\n continue;\n }\n\n if (quote !== null) {\n continue;\n }\n\n if (char === '{') {\n open++;\n } else if (char === '}') {\n open--;\n }\n } while (open > 0 && i < ii);\n\n if (open === 0) {\n parts = parts || [];\n if (value[interpolationStart - 1] === '\\\\' && value[interpolationStart - 2] !== '\\\\') {\n parts[partIndex] = value.substring(pos, interpolationStart - 1) + value.substring(interpolationStart, i);\n partIndex++;\n parts[partIndex] = this.emptyStringExpression;\n partIndex++;\n } else {\n parts[partIndex] = value.substring(pos, interpolationStart);\n partIndex++;\n parts[partIndex] = this.parser.parse(value.substring(interpolationStart + 2, i - 1));\n partIndex++;\n }\n pos = i;\n i = value.indexOf('${', i);\n } else {\n break;\n }\n }\n\n if (partIndex === 0) {\n return null;\n }\n\n parts[partIndex] = value.substr(pos);\n return parts;\n };\n\n return TemplatingBindingLanguage;\n}(BindingLanguage), _class5.inject = [Parser, ObserverLocator, SyntaxInterpreter, AttributeMap], _temp3);\n\nexport function configure(config) {\n config.container.registerSingleton(BindingLanguage, TemplatingBindingLanguage);\n config.container.registerAlias(BindingLanguage, TemplatingBindingLanguage);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/aurelia-templating-binding/dist/native-modules/aurelia-templating-binding.js\n// module id = aurelia-templating-binding\n// module chunks = 2","import { Container, inject, Optional } from 'aurelia-dependency-injection';\nimport { DOM, FEATURE } from 'aurelia-pal';\nimport { TaskQueue } from 'aurelia-task-queue';\nimport { CompositionEngine, ViewSlot, ViewResources, bindable, noView, customElement, customAttribute, templateController, BoundViewFactory, TargetInstruction, Animator, resource, useView, useShadowDOM, ViewEngine } from 'aurelia-templating';\nimport { createOverrideContext, bindingMode, BindingBehavior, ValueConverter, sourceContext, mergeSplice, ObserverLocator, valueConverter, DataAttributeObserver, bindingBehavior, targetContext, EventSubscriber } from 'aurelia-binding';\nimport { getLogger } from 'aurelia-logging';\nimport { Loader } from 'aurelia-loader';\nimport { relativeToFile } from 'aurelia-path';\nimport { mixin } from 'aurelia-metadata';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\n\nvar ActivationStrategy;\r\n(function (ActivationStrategy) {\r\n ActivationStrategy[\"InvokeLifecycle\"] = \"invoke-lifecycle\";\r\n ActivationStrategy[\"Replace\"] = \"replace\";\r\n})(ActivationStrategy || (ActivationStrategy = {}));\r\nvar Compose = (function () {\r\n function Compose(element, container, compositionEngine, viewSlot, viewResources, taskQueue) {\r\n this.activationStrategy = ActivationStrategy.InvokeLifecycle;\r\n this.element = element;\r\n this.container = container;\r\n this.compositionEngine = compositionEngine;\r\n this.viewSlot = viewSlot;\r\n this.viewResources = viewResources;\r\n this.taskQueue = taskQueue;\r\n this.currentController = null;\r\n this.currentViewModel = null;\r\n this.changes = Object.create(null);\r\n }\r\n Compose.inject = function () {\r\n return [DOM.Element, Container, CompositionEngine, ViewSlot, ViewResources, TaskQueue];\r\n };\r\n Compose.prototype.created = function (owningView) {\r\n this.owningView = owningView;\r\n };\r\n Compose.prototype.bind = function (bindingContext, overrideContext) {\r\n this.bindingContext = bindingContext;\r\n this.overrideContext = overrideContext;\r\n var changes = this.changes;\r\n changes.view = this.view;\r\n changes.viewModel = this.viewModel;\r\n changes.model = this.model;\r\n if (!this.pendingTask) {\r\n processChanges(this);\r\n }\r\n };\r\n Compose.prototype.unbind = function () {\r\n this.changes = Object.create(null);\r\n this.bindingContext = null;\r\n this.overrideContext = null;\r\n var returnToCache = true;\r\n var skipAnimation = true;\r\n this.viewSlot.removeAll(returnToCache, skipAnimation);\r\n };\r\n Compose.prototype.modelChanged = function (newValue, oldValue) {\r\n this.changes.model = newValue;\r\n requestUpdate(this);\r\n };\r\n Compose.prototype.viewChanged = function (newValue, oldValue) {\r\n this.changes.view = newValue;\r\n requestUpdate(this);\r\n };\r\n Compose.prototype.viewModelChanged = function (newValue, oldValue) {\r\n this.changes.viewModel = newValue;\r\n requestUpdate(this);\r\n };\r\n __decorate([\r\n bindable\r\n ], Compose.prototype, \"model\", void 0);\r\n __decorate([\r\n bindable\r\n ], Compose.prototype, \"view\", void 0);\r\n __decorate([\r\n bindable\r\n ], Compose.prototype, \"viewModel\", void 0);\r\n __decorate([\r\n bindable\r\n ], Compose.prototype, \"activationStrategy\", void 0);\r\n __decorate([\r\n bindable\r\n ], Compose.prototype, \"swapOrder\", void 0);\r\n Compose = __decorate([\r\n noView,\r\n customElement('compose')\r\n ], Compose);\r\n return Compose;\r\n}());\r\nfunction isEmpty(obj) {\r\n for (var _ in obj) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction tryActivateViewModel(vm, model) {\r\n if (vm && typeof vm.activate === 'function') {\r\n return Promise.resolve(vm.activate(model));\r\n }\r\n}\r\nfunction createInstruction(composer, instruction) {\r\n return Object.assign(instruction, {\r\n bindingContext: composer.bindingContext,\r\n overrideContext: composer.overrideContext,\r\n owningView: composer.owningView,\r\n container: composer.container,\r\n viewSlot: composer.viewSlot,\r\n viewResources: composer.viewResources,\r\n currentController: composer.currentController,\r\n host: composer.element,\r\n swapOrder: composer.swapOrder\r\n });\r\n}\r\nfunction processChanges(composer) {\r\n var changes = composer.changes;\r\n composer.changes = Object.create(null);\r\n if (needsReInitialization(composer, changes)) {\r\n var instruction = {\r\n view: composer.view,\r\n viewModel: composer.currentViewModel || composer.viewModel,\r\n model: composer.model\r\n };\r\n instruction = Object.assign(instruction, changes);\r\n instruction = createInstruction(composer, instruction);\r\n composer.pendingTask = composer.compositionEngine.compose(instruction).then(function (controller) {\r\n composer.currentController = controller;\r\n composer.currentViewModel = controller ? controller.viewModel : null;\r\n });\r\n }\r\n else {\r\n composer.pendingTask = tryActivateViewModel(composer.currentViewModel, changes.model);\r\n if (!composer.pendingTask) {\r\n return;\r\n }\r\n }\r\n composer.pendingTask = composer.pendingTask\r\n .then(function () {\r\n completeCompositionTask(composer);\r\n }, function (reason) {\r\n completeCompositionTask(composer);\r\n throw reason;\r\n });\r\n}\r\nfunction completeCompositionTask(composer) {\r\n composer.pendingTask = null;\r\n if (!isEmpty(composer.changes)) {\r\n processChanges(composer);\r\n }\r\n}\r\nfunction requestUpdate(composer) {\r\n if (composer.pendingTask || composer.updateRequested) {\r\n return;\r\n }\r\n composer.updateRequested = true;\r\n composer.taskQueue.queueMicroTask(function () {\r\n composer.updateRequested = false;\r\n processChanges(composer);\r\n });\r\n}\r\nfunction needsReInitialization(composer, changes) {\r\n var activationStrategy = composer.activationStrategy;\r\n var vm = composer.currentViewModel;\r\n if (vm && typeof vm.determineActivationStrategy === 'function') {\r\n activationStrategy = vm.determineActivationStrategy();\r\n }\r\n return 'view' in changes\r\n || 'viewModel' in changes\r\n || activationStrategy === ActivationStrategy.Replace;\r\n}\n\nvar IfCore = (function () {\r\n function IfCore(viewFactory, viewSlot) {\r\n this.viewFactory = viewFactory;\r\n this.viewSlot = viewSlot;\r\n this.view = null;\r\n this.bindingContext = null;\r\n this.overrideContext = null;\r\n this.showing = false;\r\n this.cache = true;\r\n }\r\n IfCore.prototype.bind = function (bindingContext, overrideContext) {\r\n this.bindingContext = bindingContext;\r\n this.overrideContext = overrideContext;\r\n };\r\n IfCore.prototype.unbind = function () {\r\n if (this.view === null) {\r\n return;\r\n }\r\n this.view.unbind();\r\n if (!this.viewFactory.isCaching) {\r\n return;\r\n }\r\n if (this.showing) {\r\n this.showing = false;\r\n this.viewSlot.remove(this.view, true, true);\r\n }\r\n else {\r\n this.view.returnToCache();\r\n }\r\n this.view = null;\r\n };\r\n IfCore.prototype._show = function () {\r\n if (this.showing) {\r\n if (!this.view.isBound) {\r\n this.view.bind(this.bindingContext, this.overrideContext);\r\n }\r\n return;\r\n }\r\n if (this.view === null) {\r\n this.view = this.viewFactory.create();\r\n }\r\n if (!this.view.isBound) {\r\n this.view.bind(this.bindingContext, this.overrideContext);\r\n }\r\n this.showing = true;\r\n return this.viewSlot.add(this.view);\r\n };\r\n IfCore.prototype._hide = function () {\r\n var _this = this;\r\n if (!this.showing) {\r\n return;\r\n }\r\n this.showing = false;\r\n var removed = this.viewSlot.remove(this.view);\r\n if (removed instanceof Promise) {\r\n return removed.then(function () {\r\n _this._unbindView();\r\n });\r\n }\r\n this._unbindView();\r\n };\r\n IfCore.prototype._unbindView = function () {\r\n var cache = this.cache === 'false' ? false : !!this.cache;\r\n this.view.unbind();\r\n if (!cache) {\r\n this.view = null;\r\n }\r\n };\r\n return IfCore;\r\n}());\n\nvar If = (function (_super) {\r\n __extends(If, _super);\r\n function If() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.cache = true;\r\n return _this;\r\n }\r\n If.prototype.bind = function (bindingContext, overrideContext) {\r\n _super.prototype.bind.call(this, bindingContext, overrideContext);\r\n if (this.condition) {\r\n this._show();\r\n }\r\n else {\r\n this._hide();\r\n }\r\n };\r\n If.prototype.conditionChanged = function (newValue) {\r\n this._update(newValue);\r\n };\r\n If.prototype._update = function (show) {\r\n var _this = this;\r\n if (this.animating) {\r\n return;\r\n }\r\n var promise;\r\n if (this.elseVm) {\r\n promise = show ? this._swap(this.elseVm, this) : this._swap(this, this.elseVm);\r\n }\r\n else {\r\n promise = show ? this._show() : this._hide();\r\n }\r\n if (promise) {\r\n this.animating = true;\r\n promise.then(function () {\r\n _this.animating = false;\r\n if (_this.condition !== _this.showing) {\r\n _this._update(_this.condition);\r\n }\r\n });\r\n }\r\n };\r\n If.prototype._swap = function (remove, add) {\r\n switch (this.swapOrder) {\r\n case 'before':\r\n return Promise.resolve(add._show()).then(function () { return remove._hide(); });\r\n case 'with':\r\n return Promise.all([remove._hide(), add._show()]);\r\n default:\r\n var promise = remove._hide();\r\n return promise ? promise.then(function () { return add._show(); }) : add._show();\r\n }\r\n };\r\n __decorate([\r\n bindable({ primaryProperty: true })\r\n ], If.prototype, \"condition\", void 0);\r\n __decorate([\r\n bindable\r\n ], If.prototype, \"swapOrder\", void 0);\r\n __decorate([\r\n bindable\r\n ], If.prototype, \"cache\", void 0);\r\n If = __decorate([\r\n customAttribute('if'),\r\n templateController,\r\n inject(BoundViewFactory, ViewSlot)\r\n ], If);\r\n return If;\r\n}(IfCore));\n\nvar Else = (function (_super) {\r\n __extends(Else, _super);\r\n function Else(viewFactory, viewSlot) {\r\n var _this = _super.call(this, viewFactory, viewSlot) || this;\r\n _this._registerInIf();\r\n return _this;\r\n }\r\n Else.prototype.bind = function (bindingContext, overrideContext) {\r\n _super.prototype.bind.call(this, bindingContext, overrideContext);\r\n if (this.ifVm.condition) {\r\n this._hide();\r\n }\r\n else {\r\n this._show();\r\n }\r\n };\r\n Else.prototype._registerInIf = function () {\r\n var previous = this.viewSlot.anchor.previousSibling;\r\n while (previous && !previous.au) {\r\n previous = previous.previousSibling;\r\n }\r\n if (!previous || !previous.au.if) {\r\n throw new Error(\"Can't find matching If for Else custom attribute.\");\r\n }\r\n this.ifVm = previous.au.if.viewModel;\r\n this.ifVm.elseVm = this;\r\n };\r\n Else = __decorate([\r\n customAttribute('else'),\r\n templateController,\r\n inject(BoundViewFactory, ViewSlot)\r\n ], Else);\r\n return Else;\r\n}(IfCore));\n\nvar With = (function () {\r\n function With(viewFactory, viewSlot) {\r\n this.viewFactory = viewFactory;\r\n this.viewSlot = viewSlot;\r\n this.parentOverrideContext = null;\r\n this.view = null;\r\n }\r\n With.prototype.bind = function (bindingContext, overrideContext) {\r\n this.parentOverrideContext = overrideContext;\r\n this.valueChanged(this.value);\r\n };\r\n With.prototype.valueChanged = function (newValue) {\r\n var overrideContext = createOverrideContext(newValue, this.parentOverrideContext);\r\n var view = this.view;\r\n if (!view) {\r\n view = this.view = this.viewFactory.create();\r\n view.bind(newValue, overrideContext);\r\n this.viewSlot.add(view);\r\n }\r\n else {\r\n view.bind(newValue, overrideContext);\r\n }\r\n };\r\n With.prototype.unbind = function () {\r\n var view = this.view;\r\n this.parentOverrideContext = null;\r\n if (view) {\r\n view.unbind();\r\n }\r\n };\r\n With = __decorate([\r\n customAttribute('with'),\r\n templateController,\r\n inject(BoundViewFactory, ViewSlot)\r\n ], With);\r\n return With;\r\n}());\n\nvar oneTime = bindingMode.oneTime;\r\nfunction updateOverrideContexts(views, startIndex) {\r\n var length = views.length;\r\n if (startIndex > 0) {\r\n startIndex = startIndex - 1;\r\n }\r\n for (; startIndex < length; ++startIndex) {\r\n updateOverrideContext(views[startIndex].overrideContext, startIndex, length);\r\n }\r\n}\r\nfunction createFullOverrideContext(repeat, data, index, length, key) {\r\n var bindingContext = {};\r\n var overrideContext = createOverrideContext(bindingContext, repeat.scope.overrideContext);\r\n if (typeof key !== 'undefined') {\r\n bindingContext[repeat.key] = key;\r\n bindingContext[repeat.value] = data;\r\n }\r\n else {\r\n bindingContext[repeat.local] = data;\r\n }\r\n updateOverrideContext(overrideContext, index, length);\r\n return overrideContext;\r\n}\r\nfunction updateOverrideContext(overrideContext, index, length) {\r\n var first = (index === 0);\r\n var last = (index === length - 1);\r\n var even = index % 2 === 0;\r\n overrideContext.$index = index;\r\n overrideContext.$first = first;\r\n overrideContext.$last = last;\r\n overrideContext.$middle = !(first || last);\r\n overrideContext.$odd = !even;\r\n overrideContext.$even = even;\r\n}\r\nfunction getItemsSourceExpression(instruction, attrName) {\r\n return instruction.behaviorInstructions\r\n .filter(function (bi) { return bi.originalAttrName === attrName; })[0]\r\n .attributes\r\n .items\r\n .sourceExpression;\r\n}\r\nfunction unwrapExpression(expression) {\r\n var unwrapped = false;\r\n while (expression instanceof BindingBehavior) {\r\n expression = expression.expression;\r\n }\r\n while (expression instanceof ValueConverter) {\r\n expression = expression.expression;\r\n unwrapped = true;\r\n }\r\n return unwrapped ? expression : null;\r\n}\r\nfunction isOneTime(expression) {\r\n while (expression instanceof BindingBehavior) {\r\n if (expression.name === 'oneTime') {\r\n return true;\r\n }\r\n expression = expression.expression;\r\n }\r\n return false;\r\n}\r\nfunction updateOneTimeBinding(binding) {\r\n if (binding.call && binding.mode === oneTime) {\r\n binding.call(sourceContext);\r\n }\r\n else if (binding.updateOneTimeBindings) {\r\n binding.updateOneTimeBindings();\r\n }\r\n}\r\nfunction indexOf(array, item, matcher, startIndex) {\r\n if (!matcher) {\r\n return array.indexOf(item);\r\n }\r\n var length = array.length;\r\n for (var index = startIndex || 0; index < length; index++) {\r\n if (matcher(array[index], item)) {\r\n return index;\r\n }\r\n }\r\n return -1;\r\n}\n\nvar ArrayRepeatStrategy = (function () {\r\n function ArrayRepeatStrategy() {\r\n }\r\n ArrayRepeatStrategy.prototype.getCollectionObserver = function (observerLocator, items) {\r\n return observerLocator.getArrayObserver(items);\r\n };\r\n ArrayRepeatStrategy.prototype.instanceChanged = function (repeat, items) {\r\n var _this = this;\r\n var $repeat = repeat;\r\n var itemsLength = items.length;\r\n if (!items || itemsLength === 0) {\r\n $repeat.removeAllViews(true, !$repeat.viewsRequireLifecycle);\r\n return;\r\n }\r\n var children = $repeat.views();\r\n var viewsLength = children.length;\r\n if (viewsLength === 0) {\r\n this._standardProcessInstanceChanged($repeat, items);\r\n return;\r\n }\r\n if ($repeat.viewsRequireLifecycle) {\r\n var childrenSnapshot = children.slice(0);\r\n var itemNameInBindingContext = $repeat.local;\r\n var matcher_1 = $repeat.matcher();\r\n var itemsPreviouslyInViews_1 = [];\r\n var viewsToRemove = [];\r\n for (var index = 0; index < viewsLength; index++) {\r\n var view = childrenSnapshot[index];\r\n var oldItem = view.bindingContext[itemNameInBindingContext];\r\n if (indexOf(items, oldItem, matcher_1) === -1) {\r\n viewsToRemove.push(view);\r\n }\r\n else {\r\n itemsPreviouslyInViews_1.push(oldItem);\r\n }\r\n }\r\n var updateViews = void 0;\r\n var removePromise = void 0;\r\n if (itemsPreviouslyInViews_1.length > 0) {\r\n removePromise = $repeat.removeViews(viewsToRemove, true, !$repeat.viewsRequireLifecycle);\r\n updateViews = function () {\r\n for (var index = 0; index < itemsLength; index++) {\r\n var item = items[index];\r\n var indexOfView = indexOf(itemsPreviouslyInViews_1, item, matcher_1, index);\r\n var view = void 0;\r\n if (indexOfView === -1) {\r\n var overrideContext = createFullOverrideContext($repeat, items[index], index, itemsLength);\r\n $repeat.insertView(index, overrideContext.bindingContext, overrideContext);\r\n itemsPreviouslyInViews_1.splice(index, 0, undefined);\r\n }\r\n else if (indexOfView === index) {\r\n view = children[indexOfView];\r\n itemsPreviouslyInViews_1[indexOfView] = undefined;\r\n }\r\n else {\r\n view = children[indexOfView];\r\n $repeat.moveView(indexOfView, index);\r\n itemsPreviouslyInViews_1.splice(indexOfView, 1);\r\n itemsPreviouslyInViews_1.splice(index, 0, undefined);\r\n }\r\n if (view) {\r\n updateOverrideContext(view.overrideContext, index, itemsLength);\r\n }\r\n }\r\n _this._inPlaceProcessItems($repeat, items);\r\n };\r\n }\r\n else {\r\n removePromise = $repeat.removeAllViews(true, !$repeat.viewsRequireLifecycle);\r\n updateViews = function () { return _this._standardProcessInstanceChanged($repeat, items); };\r\n }\r\n if (removePromise instanceof Promise) {\r\n removePromise.then(updateViews);\r\n }\r\n else {\r\n updateViews();\r\n }\r\n }\r\n else {\r\n this._inPlaceProcessItems($repeat, items);\r\n }\r\n };\r\n ArrayRepeatStrategy.prototype._standardProcessInstanceChanged = function (repeat, items) {\r\n for (var i = 0, ii = items.length; i < ii; i++) {\r\n var overrideContext = createFullOverrideContext(repeat, items[i], i, ii);\r\n repeat.addView(overrideContext.bindingContext, overrideContext);\r\n }\r\n };\r\n ArrayRepeatStrategy.prototype._inPlaceProcessItems = function (repeat, items) {\r\n var itemsLength = items.length;\r\n var viewsLength = repeat.viewCount();\r\n while (viewsLength > itemsLength) {\r\n viewsLength--;\r\n repeat.removeView(viewsLength, true, !repeat.viewsRequireLifecycle);\r\n }\r\n var local = repeat.local;\r\n for (var i = 0; i < viewsLength; i++) {\r\n var view = repeat.view(i);\r\n var last = i === itemsLength - 1;\r\n var middle = i !== 0 && !last;\r\n var bindingContext = view.bindingContext;\r\n var overrideContext = view.overrideContext;\r\n if (bindingContext[local] === items[i]\r\n && overrideContext.$middle === middle\r\n && overrideContext.$last === last) {\r\n continue;\r\n }\r\n bindingContext[local] = items[i];\r\n overrideContext.$middle = middle;\r\n overrideContext.$last = last;\r\n repeat.updateBindings(view);\r\n }\r\n for (var i = viewsLength; i < itemsLength; i++) {\r\n var overrideContext = createFullOverrideContext(repeat, items[i], i, itemsLength);\r\n repeat.addView(overrideContext.bindingContext, overrideContext);\r\n }\r\n };\r\n ArrayRepeatStrategy.prototype.instanceMutated = function (repeat, array, splices) {\r\n var _this = this;\r\n if (repeat.__queuedSplices) {\r\n for (var i = 0, ii = splices.length; i < ii; ++i) {\r\n var _a = splices[i], index = _a.index, removed = _a.removed, addedCount = _a.addedCount;\r\n mergeSplice(repeat.__queuedSplices, index, removed, addedCount);\r\n }\r\n repeat.__array = array.slice(0);\r\n return;\r\n }\r\n var maybePromise = this._runSplices(repeat, array.slice(0), splices);\r\n if (maybePromise instanceof Promise) {\r\n var queuedSplices_1 = repeat.__queuedSplices = [];\r\n var runQueuedSplices_1 = function () {\r\n if (!queuedSplices_1.length) {\r\n repeat.__queuedSplices = undefined;\r\n repeat.__array = undefined;\r\n return;\r\n }\r\n var nextPromise = _this._runSplices(repeat, repeat.__array, queuedSplices_1) || Promise.resolve();\r\n queuedSplices_1 = repeat.__queuedSplices = [];\r\n nextPromise.then(runQueuedSplices_1);\r\n };\r\n maybePromise.then(runQueuedSplices_1);\r\n }\r\n };\r\n ArrayRepeatStrategy.prototype._runSplices = function (repeat, array, splices) {\r\n var _this = this;\r\n var removeDelta = 0;\r\n var rmPromises = [];\r\n for (var i = 0, ii = splices.length; i < ii; ++i) {\r\n var splice = splices[i];\r\n var removed = splice.removed;\r\n for (var j = 0, jj = removed.length; j < jj; ++j) {\r\n var viewOrPromise = repeat.removeView(splice.index + removeDelta + rmPromises.length, true);\r\n if (viewOrPromise instanceof Promise) {\r\n rmPromises.push(viewOrPromise);\r\n }\r\n }\r\n removeDelta -= splice.addedCount;\r\n }\r\n if (rmPromises.length > 0) {\r\n return Promise.all(rmPromises).then(function () {\r\n var spliceIndexLow = _this._handleAddedSplices(repeat, array, splices);\r\n updateOverrideContexts(repeat.views(), spliceIndexLow);\r\n });\r\n }\r\n var spliceIndexLow = this._handleAddedSplices(repeat, array, splices);\r\n updateOverrideContexts(repeat.views(), spliceIndexLow);\r\n return undefined;\r\n };\r\n ArrayRepeatStrategy.prototype._handleAddedSplices = function (repeat, array, splices) {\r\n var spliceIndex;\r\n var spliceIndexLow;\r\n var arrayLength = array.length;\r\n for (var i = 0, ii = splices.length; i < ii; ++i) {\r\n var splice = splices[i];\r\n var addIndex = spliceIndex = splice.index;\r\n var end = splice.index + splice.addedCount;\r\n if (typeof spliceIndexLow === 'undefined' || spliceIndexLow === null || spliceIndexLow > splice.index) {\r\n spliceIndexLow = spliceIndex;\r\n }\r\n for (; addIndex < end; ++addIndex) {\r\n var overrideContext = createFullOverrideContext(repeat, array[addIndex], addIndex, arrayLength);\r\n repeat.insertView(addIndex, overrideContext.bindingContext, overrideContext);\r\n }\r\n }\r\n return spliceIndexLow;\r\n };\r\n return ArrayRepeatStrategy;\r\n}());\n\nvar MapRepeatStrategy = (function () {\r\n function MapRepeatStrategy() {\r\n }\r\n MapRepeatStrategy.prototype.getCollectionObserver = function (observerLocator, items) {\r\n return observerLocator.getMapObserver(items);\r\n };\r\n MapRepeatStrategy.prototype.instanceChanged = function (repeat, items) {\r\n var _this = this;\r\n var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\r\n if (removePromise instanceof Promise) {\r\n removePromise.then(function () { return _this._standardProcessItems(repeat, items); });\r\n return;\r\n }\r\n this._standardProcessItems(repeat, items);\r\n };\r\n MapRepeatStrategy.prototype._standardProcessItems = function (repeat, items) {\r\n var index = 0;\r\n var overrideContext;\r\n items.forEach(function (value, key) {\r\n overrideContext = createFullOverrideContext(repeat, value, index, items.size, key);\r\n repeat.addView(overrideContext.bindingContext, overrideContext);\r\n ++index;\r\n });\r\n };\r\n MapRepeatStrategy.prototype.instanceMutated = function (repeat, map, records) {\r\n var key;\r\n var i;\r\n var ii;\r\n var overrideContext;\r\n var removeIndex;\r\n var addIndex;\r\n var record;\r\n var rmPromises = [];\r\n var viewOrPromise;\r\n for (i = 0, ii = records.length; i < ii; ++i) {\r\n record = records[i];\r\n key = record.key;\r\n switch (record.type) {\r\n case 'update':\r\n removeIndex = this._getViewIndexByKey(repeat, key);\r\n viewOrPromise = repeat.removeView(removeIndex, true, !repeat.viewsRequireLifecycle);\r\n if (viewOrPromise instanceof Promise) {\r\n rmPromises.push(viewOrPromise);\r\n }\r\n overrideContext = createFullOverrideContext(repeat, map.get(key), removeIndex, map.size, key);\r\n repeat.insertView(removeIndex, overrideContext.bindingContext, overrideContext);\r\n break;\r\n case 'add':\r\n addIndex = repeat.viewCount() <= map.size - 1 ? repeat.viewCount() : map.size - 1;\r\n overrideContext = createFullOverrideContext(repeat, map.get(key), addIndex, map.size, key);\r\n repeat.insertView(map.size - 1, overrideContext.bindingContext, overrideContext);\r\n break;\r\n case 'delete':\r\n if (record.oldValue === undefined) {\r\n return;\r\n }\r\n removeIndex = this._getViewIndexByKey(repeat, key);\r\n viewOrPromise = repeat.removeView(removeIndex, true, !repeat.viewsRequireLifecycle);\r\n if (viewOrPromise instanceof Promise) {\r\n rmPromises.push(viewOrPromise);\r\n }\r\n break;\r\n case 'clear':\r\n repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\r\n break;\r\n default:\r\n continue;\r\n }\r\n }\r\n if (rmPromises.length > 0) {\r\n Promise.all(rmPromises).then(function () {\r\n updateOverrideContexts(repeat.views(), 0);\r\n });\r\n }\r\n else {\r\n updateOverrideContexts(repeat.views(), 0);\r\n }\r\n };\r\n MapRepeatStrategy.prototype._getViewIndexByKey = function (repeat, key) {\r\n var i;\r\n var ii;\r\n var child;\r\n for (i = 0, ii = repeat.viewCount(); i < ii; ++i) {\r\n child = repeat.view(i);\r\n if (child.bindingContext[repeat.key] === key) {\r\n return i;\r\n }\r\n }\r\n return undefined;\r\n };\r\n return MapRepeatStrategy;\r\n}());\n\nvar NullRepeatStrategy = (function () {\r\n function NullRepeatStrategy() {\r\n }\r\n NullRepeatStrategy.prototype.instanceChanged = function (repeat, items) {\r\n repeat.removeAllViews(true);\r\n };\r\n NullRepeatStrategy.prototype.getCollectionObserver = function (observerLocator, items) {\r\n };\r\n return NullRepeatStrategy;\r\n}());\n\nvar NumberRepeatStrategy = (function () {\r\n function NumberRepeatStrategy() {\r\n }\r\n NumberRepeatStrategy.prototype.getCollectionObserver = function () {\r\n return null;\r\n };\r\n NumberRepeatStrategy.prototype.instanceChanged = function (repeat, value) {\r\n var _this = this;\r\n var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\r\n if (removePromise instanceof Promise) {\r\n removePromise.then(function () { return _this._standardProcessItems(repeat, value); });\r\n return;\r\n }\r\n this._standardProcessItems(repeat, value);\r\n };\r\n NumberRepeatStrategy.prototype._standardProcessItems = function (repeat, value) {\r\n var childrenLength = repeat.viewCount();\r\n var i;\r\n var ii;\r\n var overrideContext;\r\n var viewsToRemove;\r\n value = Math.floor(value);\r\n viewsToRemove = childrenLength - value;\r\n if (viewsToRemove > 0) {\r\n if (viewsToRemove > childrenLength) {\r\n viewsToRemove = childrenLength;\r\n }\r\n for (i = 0, ii = viewsToRemove; i < ii; ++i) {\r\n repeat.removeView(childrenLength - (i + 1), true, !repeat.viewsRequireLifecycle);\r\n }\r\n return;\r\n }\r\n for (i = childrenLength, ii = value; i < ii; ++i) {\r\n overrideContext = createFullOverrideContext(repeat, i, i, ii);\r\n repeat.addView(overrideContext.bindingContext, overrideContext);\r\n }\r\n updateOverrideContexts(repeat.views(), 0);\r\n };\r\n return NumberRepeatStrategy;\r\n}());\n\nvar SetRepeatStrategy = (function () {\r\n function SetRepeatStrategy() {\r\n }\r\n SetRepeatStrategy.prototype.getCollectionObserver = function (observerLocator, items) {\r\n return observerLocator.getSetObserver(items);\r\n };\r\n SetRepeatStrategy.prototype.instanceChanged = function (repeat, items) {\r\n var _this = this;\r\n var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\r\n if (removePromise instanceof Promise) {\r\n removePromise.then(function () { return _this._standardProcessItems(repeat, items); });\r\n return;\r\n }\r\n this._standardProcessItems(repeat, items);\r\n };\r\n SetRepeatStrategy.prototype._standardProcessItems = function (repeat, items) {\r\n var index = 0;\r\n var overrideContext;\r\n items.forEach(function (value) {\r\n overrideContext = createFullOverrideContext(repeat, value, index, items.size);\r\n repeat.addView(overrideContext.bindingContext, overrideContext);\r\n ++index;\r\n });\r\n };\r\n SetRepeatStrategy.prototype.instanceMutated = function (repeat, set, records) {\r\n var value;\r\n var i;\r\n var ii;\r\n var overrideContext;\r\n var removeIndex;\r\n var record;\r\n var rmPromises = [];\r\n var viewOrPromise;\r\n for (i = 0, ii = records.length; i < ii; ++i) {\r\n record = records[i];\r\n value = record.value;\r\n switch (record.type) {\r\n case 'add':\r\n var size = Math.max(set.size - 1, 0);\r\n overrideContext = createFullOverrideContext(repeat, value, size, set.size);\r\n repeat.insertView(size, overrideContext.bindingContext, overrideContext);\r\n break;\r\n case 'delete':\r\n removeIndex = this._getViewIndexByValue(repeat, value);\r\n viewOrPromise = repeat.removeView(removeIndex, true, !repeat.viewsRequireLifecycle);\r\n if (viewOrPromise instanceof Promise) {\r\n rmPromises.push(viewOrPromise);\r\n }\r\n break;\r\n case 'clear':\r\n repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\r\n break;\r\n default:\r\n continue;\r\n }\r\n }\r\n if (rmPromises.length > 0) {\r\n Promise.all(rmPromises).then(function () {\r\n updateOverrideContexts(repeat.views(), 0);\r\n });\r\n }\r\n else {\r\n updateOverrideContexts(repeat.views(), 0);\r\n }\r\n };\r\n SetRepeatStrategy.prototype._getViewIndexByValue = function (repeat, value) {\r\n var i;\r\n var ii;\r\n var child;\r\n for (i = 0, ii = repeat.viewCount(); i < ii; ++i) {\r\n child = repeat.view(i);\r\n if (child.bindingContext[repeat.local] === value) {\r\n return i;\r\n }\r\n }\r\n return undefined;\r\n };\r\n return SetRepeatStrategy;\r\n}());\n\nvar RepeatStrategyLocator = (function () {\r\n function RepeatStrategyLocator() {\r\n this.matchers = [];\r\n this.strategies = [];\r\n this.addStrategy(function (items) { return items === null || items === undefined; }, new NullRepeatStrategy());\r\n this.addStrategy(function (items) { return items instanceof Array; }, new ArrayRepeatStrategy());\r\n this.addStrategy(function (items) { return items instanceof Map; }, new MapRepeatStrategy());\r\n this.addStrategy(function (items) { return items instanceof Set; }, new SetRepeatStrategy());\r\n this.addStrategy(function (items) { return typeof items === 'number'; }, new NumberRepeatStrategy());\r\n }\r\n RepeatStrategyLocator.prototype.addStrategy = function (matcher, strategy) {\r\n this.matchers.push(matcher);\r\n this.strategies.push(strategy);\r\n };\r\n RepeatStrategyLocator.prototype.getStrategy = function (items) {\r\n var matchers = this.matchers;\r\n for (var i = 0, ii = matchers.length; i < ii; ++i) {\r\n if (matchers[i](items)) {\r\n return this.strategies[i];\r\n }\r\n }\r\n return null;\r\n };\r\n return RepeatStrategyLocator;\r\n}());\n\nvar lifecycleOptionalBehaviors = ['focus', 'if', 'else', 'repeat', 'show', 'hide', 'with'];\r\nfunction behaviorRequiresLifecycle(instruction) {\r\n var t = instruction.type;\r\n var name = t.elementName !== null ? t.elementName : t.attributeName;\r\n return lifecycleOptionalBehaviors.indexOf(name) === -1 && (t.handlesAttached || t.handlesBind || t.handlesCreated || t.handlesDetached || t.handlesUnbind)\r\n || t.viewFactory && viewsRequireLifecycle(t.viewFactory)\r\n || instruction.viewFactory && viewsRequireLifecycle(instruction.viewFactory);\r\n}\r\nfunction targetRequiresLifecycle(instruction) {\r\n var behaviors = instruction.behaviorInstructions;\r\n if (behaviors) {\r\n var i = behaviors.length;\r\n while (i--) {\r\n if (behaviorRequiresLifecycle(behaviors[i])) {\r\n return true;\r\n }\r\n }\r\n }\r\n return instruction.viewFactory && viewsRequireLifecycle(instruction.viewFactory);\r\n}\r\nfunction viewsRequireLifecycle(viewFactory) {\r\n if ('_viewsRequireLifecycle' in viewFactory) {\r\n return viewFactory._viewsRequireLifecycle;\r\n }\r\n viewFactory._viewsRequireLifecycle = false;\r\n if (viewFactory.viewFactory) {\r\n viewFactory._viewsRequireLifecycle = viewsRequireLifecycle(viewFactory.viewFactory);\r\n return viewFactory._viewsRequireLifecycle;\r\n }\r\n if (viewFactory.template.querySelector('.au-animate')) {\r\n viewFactory._viewsRequireLifecycle = true;\r\n return true;\r\n }\r\n for (var id in viewFactory.instructions) {\r\n if (targetRequiresLifecycle(viewFactory.instructions[id])) {\r\n viewFactory._viewsRequireLifecycle = true;\r\n return true;\r\n }\r\n }\r\n viewFactory._viewsRequireLifecycle = false;\r\n return false;\r\n}\n\nvar AbstractRepeater = (function () {\r\n function AbstractRepeater(options) {\r\n Object.assign(this, {\r\n local: 'items',\r\n viewsRequireLifecycle: true\r\n }, options);\r\n }\r\n AbstractRepeater.prototype.viewCount = function () {\r\n throw new Error('subclass must implement `viewCount`');\r\n };\r\n AbstractRepeater.prototype.views = function () {\r\n throw new Error('subclass must implement `views`');\r\n };\r\n AbstractRepeater.prototype.view = function (index) {\r\n throw new Error('subclass must implement `view`');\r\n };\r\n AbstractRepeater.prototype.matcher = function () {\r\n throw new Error('subclass must implement `matcher`');\r\n };\r\n AbstractRepeater.prototype.addView = function (bindingContext, overrideContext) {\r\n throw new Error('subclass must implement `addView`');\r\n };\r\n AbstractRepeater.prototype.insertView = function (index, bindingContext, overrideContext) {\r\n throw new Error('subclass must implement `insertView`');\r\n };\r\n AbstractRepeater.prototype.moveView = function (sourceIndex, targetIndex) {\r\n throw new Error('subclass must implement `moveView`');\r\n };\r\n AbstractRepeater.prototype.removeAllViews = function (returnToCache, skipAnimation) {\r\n throw new Error('subclass must implement `removeAllViews`');\r\n };\r\n AbstractRepeater.prototype.removeViews = function (viewsToRemove, returnToCache, skipAnimation) {\r\n throw new Error('subclass must implement `removeView`');\r\n };\r\n AbstractRepeater.prototype.removeView = function (index, returnToCache, skipAnimation) {\r\n throw new Error('subclass must implement `removeView`');\r\n };\r\n AbstractRepeater.prototype.updateBindings = function (view) {\r\n throw new Error('subclass must implement `updateBindings`');\r\n };\r\n return AbstractRepeater;\r\n}());\n\nvar matcherExtractionMarker = '__marker_extracted__';\r\nvar Repeat = (function (_super) {\r\n __extends(Repeat, _super);\r\n function Repeat(viewFactory, instruction, viewSlot, viewResources, observerLocator, strategyLocator) {\r\n var _this = _super.call(this, {\r\n local: 'item',\r\n viewsRequireLifecycle: viewsRequireLifecycle(viewFactory)\r\n }) || this;\r\n _this.viewFactory = viewFactory;\r\n _this.instruction = instruction;\r\n _this.viewSlot = viewSlot;\r\n _this.lookupFunctions = viewResources.lookupFunctions;\r\n _this.observerLocator = observerLocator;\r\n _this.key = 'key';\r\n _this.value = 'value';\r\n _this.strategyLocator = strategyLocator;\r\n _this.ignoreMutation = false;\r\n _this.sourceExpression = getItemsSourceExpression(_this.instruction, 'repeat.for');\r\n _this.isOneTime = isOneTime(_this.sourceExpression);\r\n _this.viewsRequireLifecycle = viewsRequireLifecycle(viewFactory);\r\n return _this;\r\n }\r\n Repeat_1 = Repeat;\r\n Repeat.prototype.call = function (context, changes) {\r\n this[context](this.items, changes);\r\n };\r\n Repeat.prototype.bind = function (bindingContext, overrideContext) {\r\n this.scope = { bindingContext: bindingContext, overrideContext: overrideContext };\r\n var instruction = this.instruction;\r\n if (!(matcherExtractionMarker in instruction)) {\r\n instruction[matcherExtractionMarker] = this._captureAndRemoveMatcherBinding();\r\n }\r\n this.matcherBinding = instruction[matcherExtractionMarker];\r\n this.itemsChanged();\r\n };\r\n Repeat.prototype.unbind = function () {\r\n this.scope = null;\r\n this.items = null;\r\n this.matcherBinding = null;\r\n this.viewSlot.removeAll(true, true);\r\n this._unsubscribeCollection();\r\n };\r\n Repeat.prototype._unsubscribeCollection = function () {\r\n if (this.collectionObserver) {\r\n this.collectionObserver.unsubscribe(this.callContext, this);\r\n this.collectionObserver = null;\r\n this.callContext = null;\r\n }\r\n };\r\n Repeat.prototype.itemsChanged = function () {\r\n var _this = this;\r\n this._unsubscribeCollection();\r\n if (!this.scope) {\r\n return;\r\n }\r\n var items = this.items;\r\n this.strategy = this.strategyLocator.getStrategy(items);\r\n if (!this.strategy) {\r\n throw new Error(\"Value for '\" + this.sourceExpression + \"' is non-repeatable\");\r\n }\r\n if (!this.isOneTime && !this._observeInnerCollection()) {\r\n this._observeCollection();\r\n }\r\n this.ignoreMutation = true;\r\n this.strategy.instanceChanged(this, items);\r\n this.observerLocator.taskQueue.queueMicroTask(function () {\r\n _this.ignoreMutation = false;\r\n });\r\n };\r\n Repeat.prototype._getInnerCollection = function () {\r\n var expression = unwrapExpression(this.sourceExpression);\r\n if (!expression) {\r\n return null;\r\n }\r\n return expression.evaluate(this.scope, null);\r\n };\r\n Repeat.prototype.handleCollectionMutated = function (collection, changes) {\r\n if (!this.collectionObserver) {\r\n return;\r\n }\r\n if (this.ignoreMutation) {\r\n return;\r\n }\r\n this.strategy.instanceMutated(this, collection, changes);\r\n };\r\n Repeat.prototype.handleInnerCollectionMutated = function (collection, changes) {\r\n var _this = this;\r\n if (!this.collectionObserver) {\r\n return;\r\n }\r\n if (this.ignoreMutation) {\r\n return;\r\n }\r\n this.ignoreMutation = true;\r\n var newItems = this.sourceExpression.evaluate(this.scope, this.lookupFunctions);\r\n this.observerLocator.taskQueue.queueMicroTask(function () { return _this.ignoreMutation = false; });\r\n if (newItems === this.items) {\r\n this.itemsChanged();\r\n }\r\n else {\r\n this.items = newItems;\r\n }\r\n };\r\n Repeat.prototype._observeInnerCollection = function () {\r\n var items = this._getInnerCollection();\r\n var strategy = this.strategyLocator.getStrategy(items);\r\n if (!strategy) {\r\n return false;\r\n }\r\n this.collectionObserver = strategy.getCollectionObserver(this.observerLocator, items);\r\n if (!this.collectionObserver) {\r\n return false;\r\n }\r\n this.callContext = 'handleInnerCollectionMutated';\r\n this.collectionObserver.subscribe(this.callContext, this);\r\n return true;\r\n };\r\n Repeat.prototype._observeCollection = function () {\r\n var items = this.items;\r\n this.collectionObserver = this.strategy.getCollectionObserver(this.observerLocator, items);\r\n if (this.collectionObserver) {\r\n this.callContext = 'handleCollectionMutated';\r\n this.collectionObserver.subscribe(this.callContext, this);\r\n }\r\n };\r\n Repeat.prototype._captureAndRemoveMatcherBinding = function () {\r\n var viewFactory = this.viewFactory.viewFactory;\r\n if (viewFactory) {\r\n var template = viewFactory.template;\r\n var instructions = viewFactory.instructions;\r\n if (Repeat_1.useInnerMatcher) {\r\n return extractMatcherBindingExpression(instructions);\r\n }\r\n if (getChildrenCount(template) > 1) {\r\n return undefined;\r\n }\r\n var repeatedElement = getFirstElementChild(template);\r\n if (!repeatedElement.hasAttribute('au-target-id')) {\r\n return undefined;\r\n }\r\n var repeatedElementTargetId = repeatedElement.getAttribute('au-target-id');\r\n return extractMatcherBindingExpression(instructions, repeatedElementTargetId);\r\n }\r\n return undefined;\r\n };\r\n Repeat.prototype.viewCount = function () { return this.viewSlot.children.length; };\r\n Repeat.prototype.views = function () { return this.viewSlot.children; };\r\n Repeat.prototype.view = function (index) { return this.viewSlot.children[index]; };\r\n Repeat.prototype.matcher = function () {\r\n var matcherBinding = this.matcherBinding;\r\n return matcherBinding\r\n ? matcherBinding.sourceExpression.evaluate(this.scope, matcherBinding.lookupFunctions)\r\n : null;\r\n };\r\n Repeat.prototype.addView = function (bindingContext, overrideContext) {\r\n var view = this.viewFactory.create();\r\n view.bind(bindingContext, overrideContext);\r\n this.viewSlot.add(view);\r\n };\r\n Repeat.prototype.insertView = function (index, bindingContext, overrideContext) {\r\n var view = this.viewFactory.create();\r\n view.bind(bindingContext, overrideContext);\r\n this.viewSlot.insert(index, view);\r\n };\r\n Repeat.prototype.moveView = function (sourceIndex, targetIndex) {\r\n this.viewSlot.move(sourceIndex, targetIndex);\r\n };\r\n Repeat.prototype.removeAllViews = function (returnToCache, skipAnimation) {\r\n return this.viewSlot.removeAll(returnToCache, skipAnimation);\r\n };\r\n Repeat.prototype.removeViews = function (viewsToRemove, returnToCache, skipAnimation) {\r\n return this.viewSlot.removeMany(viewsToRemove, returnToCache, skipAnimation);\r\n };\r\n Repeat.prototype.removeView = function (index, returnToCache, skipAnimation) {\r\n return this.viewSlot.removeAt(index, returnToCache, skipAnimation);\r\n };\r\n Repeat.prototype.updateBindings = function (view) {\r\n var $view = view;\r\n var j = $view.bindings.length;\r\n while (j--) {\r\n updateOneTimeBinding($view.bindings[j]);\r\n }\r\n j = $view.controllers.length;\r\n while (j--) {\r\n var k = $view.controllers[j].boundProperties.length;\r\n while (k--) {\r\n var binding = $view.controllers[j].boundProperties[k].binding;\r\n updateOneTimeBinding(binding);\r\n }\r\n }\r\n };\r\n var Repeat_1;\r\n Repeat.useInnerMatcher = true;\r\n __decorate([\r\n bindable\r\n ], Repeat.prototype, \"items\", void 0);\r\n __decorate([\r\n bindable\r\n ], Repeat.prototype, \"local\", void 0);\r\n __decorate([\r\n bindable\r\n ], Repeat.prototype, \"key\", void 0);\r\n __decorate([\r\n bindable\r\n ], Repeat.prototype, \"value\", void 0);\r\n Repeat = Repeat_1 = __decorate([\r\n customAttribute('repeat'),\r\n templateController,\r\n inject(BoundViewFactory, TargetInstruction, ViewSlot, ViewResources, ObserverLocator, RepeatStrategyLocator)\r\n ], Repeat);\r\n return Repeat;\r\n}(AbstractRepeater));\r\nvar extractMatcherBindingExpression = function (instructions, targetedElementId) {\r\n var instructionIds = Object.keys(instructions);\r\n for (var i = 0; i < instructionIds.length; i++) {\r\n var instructionId = instructionIds[i];\r\n if (targetedElementId !== undefined && instructionId !== targetedElementId) {\r\n continue;\r\n }\r\n var expressions = instructions[instructionId].expressions;\r\n if (expressions) {\r\n for (var ii = 0; ii < expressions.length; ii++) {\r\n if (expressions[ii].targetProperty === 'matcher') {\r\n var matcherBindingExpression = expressions[ii];\r\n expressions.splice(ii, 1);\r\n return matcherBindingExpression;\r\n }\r\n }\r\n }\r\n }\r\n};\r\nvar getChildrenCount = function (el) {\r\n var childNodes = el.childNodes;\r\n var count = 0;\r\n for (var i = 0, ii = childNodes.length; ii > i; ++i) {\r\n if (childNodes[i].nodeType === 1) {\r\n ++count;\r\n }\r\n }\r\n return count;\r\n};\r\nvar getFirstElementChild = function (el) {\r\n var firstChild = el.firstChild;\r\n while (firstChild !== null) {\r\n if (firstChild.nodeType === 1) {\r\n return firstChild;\r\n }\r\n firstChild = firstChild.nextSibling;\r\n }\r\n return null;\r\n};\n\nvar aureliaHideClassName = 'aurelia-hide';\r\nvar aureliaHideClass = \".\" + aureliaHideClassName + \" { display:none !important; }\";\r\nfunction injectAureliaHideStyleAtHead() {\r\n DOM.injectStyles(aureliaHideClass);\r\n}\r\nfunction injectAureliaHideStyleAtBoundary(domBoundary) {\r\n if (FEATURE.shadowDOM && domBoundary && !domBoundary.hasAureliaHideStyle) {\r\n domBoundary.hasAureliaHideStyle = true;\r\n DOM.injectStyles(aureliaHideClass, domBoundary);\r\n }\r\n}\n\nvar Show = (function () {\r\n function Show(element, animator, domBoundary) {\r\n this.element = element;\r\n this.animator = animator;\r\n this.domBoundary = domBoundary;\r\n }\r\n Show.inject = function () {\r\n return [DOM.Element, Animator, Optional.of(DOM.boundary, true)];\r\n };\r\n Show.prototype.created = function () {\r\n injectAureliaHideStyleAtBoundary(this.domBoundary);\r\n };\r\n Show.prototype.valueChanged = function (newValue) {\r\n var element = this.element;\r\n var animator = this.animator;\r\n if (newValue) {\r\n animator.removeClass(element, aureliaHideClassName);\r\n }\r\n else {\r\n animator.addClass(element, aureliaHideClassName);\r\n }\r\n };\r\n Show.prototype.bind = function (bindingContext) {\r\n this.valueChanged(this.value);\r\n };\r\n Show = __decorate([\r\n customAttribute('show')\r\n ], Show);\r\n return Show;\r\n}());\n\nvar Hide = (function () {\r\n function Hide(element, animator, domBoundary) {\r\n this.element = element;\r\n this.animator = animator;\r\n this.domBoundary = domBoundary;\r\n }\r\n Hide.inject = function () {\r\n return [DOM.Element, Animator, Optional.of(DOM.boundary, true)];\r\n };\r\n Hide.prototype.created = function () {\r\n injectAureliaHideStyleAtBoundary(this.domBoundary);\r\n };\r\n Hide.prototype.valueChanged = function (newValue) {\r\n if (newValue) {\r\n this.animator.addClass(this.element, aureliaHideClassName);\r\n }\r\n else {\r\n this.animator.removeClass(this.element, aureliaHideClassName);\r\n }\r\n };\r\n Hide.prototype.bind = function (bindingContext) {\r\n this.valueChanged(this.value);\r\n };\r\n Hide.prototype.value = function (value) {\r\n throw new Error('Method not implemented.');\r\n };\r\n Hide = __decorate([\r\n customAttribute('hide')\r\n ], Hide);\r\n return Hide;\r\n}());\n\nvar SCRIPT_REGEX = /