{"version":3,"sources":["webpack:///webpack/bootstrap d6a5e078b7df11ecfbe1","webpack:///./src/app/app.js","webpack:///./src/app/external.js","webpack:///./~/normalize.css/normalize.css?39c4","webpack:///./~/normalize.css/normalize.css","webpack:///./~/css-loader/lib/css-base.js","webpack:///./~/style-loader/addStyles.js","webpack:///./~/angular-sanitize/index.js","webpack:///./~/angular-sanitize/angular-sanitize.js","webpack:///./~/angular-animate/index.js","webpack:///./~/angular-animate/angular-animate.js","webpack:///./~/angular-cookies/index.js","webpack:///./~/angular-cookies/angular-cookies.js","webpack:///./~/angular-ui-bootstrap/index.js","webpack:///./~/angular-ui-bootstrap/dist/ui-bootstrap-tpls.js","webpack:///./~/angular-ui-router/release/angular-ui-router.js","webpack:///./src/css/main.css?4125","webpack:///./src/css/main.css","webpack:///./src/images/sprite-s5fd246afe9.png","webpack:///./src/images/spriteRetina-sa31a69d3a8.png","webpack:///./src/images/rentaskip_logo.png","webpack:///./src/images/rentaskip_logo_white.png","webpack:///./src/images/cream_pixels.png","webpack:///./src/images/cream_pixels_retina.png","webpack:///./src/images/imageslider/slider-01.jpg","webpack:///./src/images/imageslider/slider-02.jpg","webpack:///./src/images/imageslider/slider-03.jpg","webpack:///./src/images/imageslider/slider-04.jpg","webpack:///./src/app/app.directive.js","webpack:///./src/app/index.html","webpack:///./src/app/components/components.js","webpack:///./src/app/components/appContainer/appContainer.js","webpack:///./src/app/components/appContainer/appContainer.directive.js","webpack:///./src/app/components/appContainer/appContainer.controller.js","webpack:///./src/app/components/appContainer/appContainer.html","webpack:///./src/app/models/models.js","webpack:///./src/app/components/home/home.js","webpack:///./src/app/components/home/home.directive.js","webpack:///./src/app/components/home/home.controller.js","webpack:///./src/app/components/home/home.html","webpack:///./src/app/components/home/home.store.js","webpack:///./src/app/components/booking/booking.js","webpack:///./src/app/components/booking/booking.directive.js","webpack:///./src/app/components/booking/booking.controller.js","webpack:///./src/app/components/booking/booking.html","webpack:///./src/app/components/booking/booking.store.js","webpack:///./src/app/components/booking/steptwo/steptwo.js","webpack:///./src/app/components/booking/steptwo/steptwo.directive.js","webpack:///./src/app/components/booking/steptwo/steptwo.controller.js","webpack:///./src/app/components/booking/steptwo/steptwo.html","webpack:///./src/app/components/booking/steptwo/steptwo.store.js","webpack:///./src/app/components/booking/farelist/farelist.js","webpack:///./src/app/components/booking/farelist/farelist.directive.js","webpack:///./src/app/components/booking/farelist/farelist.controller.js","webpack:///./src/app/components/booking/farelist/farelist.html","webpack:///./src/app/components/booking/farelist/farelist.store.js","webpack:///./src/app/components/booking/payment/payment.js","webpack:///./src/app/components/booking/payment/payment.directive.js","webpack:///./src/app/components/booking/payment/payment.controller.js","webpack:///./src/app/components/booking/payment/payment.html","webpack:///./src/app/components/booking/payment/payment.store.js","webpack:///./src/app/components/booking/delivery/delivery.js","webpack:///./src/app/components/booking/delivery/delivery.directive.js","webpack:///./src/app/components/booking/delivery/delivery.controller.js","webpack:///./src/app/components/booking/delivery/delivery.html","webpack:///./src/app/components/booking/delivery/delivery.store.js","webpack:///./src/app/components/booking/confirmation/confirmation.js","webpack:///./src/app/components/booking/confirmation/confirmation.directive.js","webpack:///./src/app/components/booking/confirmation/confirmation.controller.js","webpack:///./src/app/components/booking/confirmation/confirmation.html","webpack:///./src/app/components/booking/confirmation/confirmation.store.js","webpack:///./src/app/components/aboutus/aboutus.js","webpack:///./src/app/components/aboutus/aboutus.directive.js","webpack:///./src/app/components/aboutus/aboutus.controller.js","webpack:///./src/app/components/aboutus/aboutus.html","webpack:///./src/app/components/aboutus/aboutus.store.js","webpack:///./src/app/components/areas/areas.js","webpack:///./src/app/components/areas/areas.directive.js","webpack:///./src/app/components/areas/areas.controller.js","webpack:///./src/app/components/areas/areas.html","webpack:///./src/app/components/areas/areas.store.js","webpack:///./src/app/components/skipsizes/skipsizes.js","webpack:///./src/app/components/skipsizes/skipsizes.directive.js","webpack:///./src/app/components/skipsizes/skipsizes.controller.js","webpack:///./src/app/components/skipsizes/skipsizes.html","webpack:///./src/app/components/skipsizes/skipsizes.store.js","webpack:///./src/app/components/wastetypes/wastetypes.js","webpack:///./src/app/components/wastetypes/wastetypes.directive.js","webpack:///./src/app/components/wastetypes/wastetypes.controller.js","webpack:///./src/app/components/wastetypes/wastetypes.html","webpack:///./src/app/components/wastetypes/wastetypes.store.js","webpack:///./src/app/components/faqs/faqs.js","webpack:///./src/app/components/faqs/faqs.directive.js","webpack:///./src/app/components/faqs/faqs.controller.js","webpack:///./src/app/components/faqs/faqs.html","webpack:///./src/app/components/faqs/faqs.store.js","webpack:///./src/app/components/contactus/contactus.js","webpack:///./src/app/components/contactus/contactus.directive.js","webpack:///./src/app/components/contactus/contactus.controller.js","webpack:///./src/app/components/contactus/contactus.html","webpack:///./src/app/components/contactus/contactus.store.js","webpack:///./src/app/components/smallbooking/smallbooking.js","webpack:///./src/app/components/smallbooking/smallbooking.directive.js","webpack:///./src/app/components/smallbooking/smallbooking.controller.js","webpack:///./src/app/components/smallbooking/smallbooking.html","webpack:///./src/app/components/smallbooking/smallbooking.store.js","webpack:///./src/app/components/estimator/estimator.js","webpack:///./src/app/components/estimator/estimator.directive.js","webpack:///./src/app/components/estimator/estimator.controller.js","webpack:///./src/app/components/estimator/estimator.html","webpack:///./src/app/components/estimator/estimator.store.js","webpack:///./src/app/components/placement/placement.js","webpack:///./src/app/components/placement/placement.directive.js","webpack:///./src/app/components/placement/placement.controller.js","webpack:///./src/app/components/placement/placement.html","webpack:///./src/app/components/placement/placement.store.js","webpack:///./src/app/components/permit/permit.js","webpack:///./src/app/components/permit/permit.directive.js","webpack:///./src/app/components/permit/permit.controller.js","webpack:///./src/app/components/permit/permit.html","webpack:///./src/app/components/permit/permit.store.js","webpack:///./src/app/components/mobileskip/mobileskip.js","webpack:///./src/app/components/mobileskip/mobileskip.directive.js","webpack:///./src/app/components/mobileskip/mobileskip.controller.js","webpack:///./src/app/components/mobileskip/mobileskip.html","webpack:///./src/app/components/mobileskip/mobileskip.store.js","webpack:///./src/app/components/areasydney/areasydney.js","webpack:///./src/app/components/areasydney/areasydney.directive.js","webpack:///./src/app/components/areasydney/areasydney.controller.js","webpack:///./src/app/components/areasydney/areasydney.html","webpack:///./src/app/components/areasydney/areasydney.store.js","webpack:///./src/app/components/areanewcastle/areanewcastle.js","webpack:///./src/app/components/areanewcastle/areanewcastle.directive.js","webpack:///./src/app/components/areanewcastle/areanewcastle.controller.js","webpack:///./src/app/components/areanewcastle/areanewcastle.html","webpack:///./src/app/components/areanewcastle/areanewcastle.store.js","webpack:///./src/app/components/areabrisbane/areabrisbane.js","webpack:///./src/app/components/areabrisbane/areabrisbane.directive.js","webpack:///./src/app/components/areabrisbane/areabrisbane.controller.js","webpack:///./src/app/components/areabrisbane/areabrisbane.html","webpack:///./src/app/components/areabrisbane/areabrisbane.store.js","webpack:///./src/app/components/areamelbourne/areamelbourne.js","webpack:///./src/app/components/areamelbourne/areamelbourne.directive.js","webpack:///./src/app/components/areamelbourne/areamelbourne.controller.js","webpack:///./src/app/components/areamelbourne/areamelbourne.html","webpack:///./src/app/components/areamelbourne/areamelbourne.store.js","webpack:///./src/app/components/bookskip/bookskip.js","webpack:///./src/app/components/bookskip/bookskip.directive.js","webpack:///./src/app/components/bookskip/bookskip.controller.js","webpack:///./src/app/components/bookskip/bookskip.html","webpack:///./src/app/components/bookskip/bookskip.store.js","webpack:///./src/app/components/areadipswich/areadipswich.js","webpack:///./src/app/components/areadipswich/areadipswich.directive.js","webpack:///./src/app/components/areadipswich/areadipswich.controller.js","webpack:///./src/app/components/areadipswich/areadipswich.html","webpack:///./src/app/components/areadipswich/areadipswich.store.js","webpack:///./src/app/shared/shared.js","webpack:///./src/app/shared/services/services.js","webpack:///./src/app/shared/services/api.js","webpack:///./src/app/shared/services/logger.service.js","webpack:///./~/log4javascript/log4javascript.js","webpack:///./src/app/shared/services/ui.service.js","webpack:///./src/app/shared/services/jq.service.js","webpack:///./src/app/shared/services/modal/modal.service.js","webpack:///./src/app/shared/services/modal/privacy-policy.html","webpack:///./src/app/shared/services/modal/refund-policy.html","webpack:///./src/app/shared/services/modal/security-policy.html","webpack:///./src/app/shared/services/modal/booking-fee.html","webpack:///./src/app/shared/services/modal/show-cvn.html","webpack:///./src/app/shared/services/modal/modal.controller.js","webpack:///./src/app/shared/filters/filters.js","webpack:///./src/app/shared/filters/phone.filter.js","webpack:///./src/app/shared/constants/constants.js","webpack:///./src/app/shared/constants/period.constant.js","webpack:///./src/app/shared/base/base.js"],"names":[],"mappings":"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A,kBAAiB,2BAA2B;AAC5C;AACA;AACA,SAAQ,uBAAuB;AAC/B;AACA;AACA,IAAG;AACH;AACA,kBAAiB,uBAAuB;AACxC;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA,iCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAuD;AACvD;;AAEA,8BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;AACA;;;;;;;AC1NA;AACA;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA,6BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,uCAAuC;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAwE;AACxE,yBAAwB;AACxB;AACA,oEAAmE,wBAAwB;AAC3F;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,8BAA8B,SAAS,QAAQ;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB,KAAI,QAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,yBAAyB,SAAS,QAAQ;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA,oBAAmB,0BAA0B;AAC7C,oBAAmB,gDAAgD,cAAc,OAAO;AACxF,2BAA0B,MAAM;AAChC,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,0BAA0B,QAAQ,MAAM;AAC1D,OAAM;AACN;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,4BAA2B,gBAAgB;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,IAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,6BAA6B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAwC;AACxC;AACA;;AAEA;AACA,gCAA+B;AAC/B;AACA;;AAEA;AACA,iCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gCAA+B;AAC/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA4B;AAC5B;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB,gBAAe,kBAAkB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,wCAAuC;AACvC,+BAA8B;AAC9B,kCAAiC;AACjC;AACA,OAAM;AACN;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAwC;AACxC;AACA,MAAK;;AAEL;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA,gFAA+E;AAC/E,QAAO;AACP;AACA,+CAA8C;AAC9C,QAAO;AACP,0BAAyB;AACzB,0BAAyB;AACzB;;AAEA;AACA;AACA,cAAa,MAAM;AACnB,gBAAe,OAAO;AACtB,wCAAuC;AACvC,+BAA8B;AAC9B,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,8BAA8B;AAC/C;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,qBAAqB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO,qBAAqB,0BAA0B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,sCAAsC,QAAQ,QAAQ;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,4DAA4D,QAAQ,QAAQ;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,wDAAwD,gBAAgB,KAAK,QAAQ,QAAQ;AAClH;AACA;AACA,sEAAqE,gBAAgB;AACrF;AACA;AACA;AACA;AACA,yBAAwB,yBAAyB,QAAQ,QAAQ;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA,uEAAsE,gBAAgB;AACtF;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,2EAA0E,KAAK;AAC/E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yFAAwF,EAAE;;AAE1F;AACA;AACA,8DAA6D,mBAAmB;AAChF,4CAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC;AACzC;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD,EAAC;;;;;;;ACjuBD;AACA;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA,6BAA4B;;AAE5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wCAAuC,EAAE,MAAM,EAAE;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;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;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kDAAiD;AACjD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;;AAEA;AACA;;AAEA;AACA,oBAAmB,kBAAkB;AACrC;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,sBAAsB;AAC3D;AACA;AACA,wEAAuE,MAAM;AAC7E;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;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,mBAAkB,eAAe;AACjC,iBAAgB,uBAAuB;AACvC;AACA,WAAU;AACV;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,eAAe;AACjC,iBAAgB,uBAAuB;AACvC;AACA,WAAU;AACV;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,sGAAqG;AACrG,UAAS,gBAAgB;AACzB,iBAAgB,gBAAgB;AAChC;AACA,UAAS,sGAAsG;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,uBAAuB;AAClC,UAAS,uBAAuB;AAChC;AACA;AACA;AACA,YAAW,+BAA+B;AAC1C,UAAS,+BAA+B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,mBAAmB;AAC/B,WAAU;AACV,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,yBAAyB;AACpC,UAAS,2BAA2B;AACpC;AACA;AACA;AACA,YAAW,iCAAiC;AAC5C,UAAS,mCAAmC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC,MAAM;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,eAAc,uDAAuD;AACrE;AACA,YAAW,WAAW;AACtB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK,2GAA2G;AAChH,oIAAmI;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,uBAAsB;AACtB,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,yBAAyB;AAChD;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;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;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA2B,2BAA2B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA,YAAW;;AAEX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,YAAW;;AAEX;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA,cAAa;;AAEb;AACA,YAAW;AACX,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAkB,oDAAoD,EAAE;AACxE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,6BAA4B,aAAa;AACzC;AACA;AACA;;AAEA;;AAEA;AACA,0DAAyD;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0GAAyG;AACzG;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD;AACnD,UAAS;AACT,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mBAAkB;AAClB;;AAEA;AACA;AACA,kBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA,kBAAiB,uBAAuB;AACxC;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAmB,0BAA0B;AAC7C;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAAyB,SAAS,EAAE;AACpC,6BAA4B,aAAa;AACzC,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAuB,cAAc;AACrC;AACA;;AAEA,0BAAyB,cAAc;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAgC;AAChC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,8BAA8B;AACpC,OAAM,8BAA8B;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,gBAAgB;AAC1B,aAAY,kBAAkB;AAC9B,YAAW,iBAAiB;AAC5B,cAAa,mBAAmB;AAChC,cAAa,mBAAmB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,gDAAgD;AACtD,OAAM,iDAAiD;AACvD,OAAM,kDAAkD;AACxD,OAAM,gDAAgD;AACtD,OAAM,wCAAwC;AAC9C,OAAM,8CAA8C;AACpD,OAAM,4CAA4C,IAAI,4CAA4C;AAClG,OAAM,6CAA6C,IAAI,mDAAmD;AAC1G,OAAM,8CAA8C;AACpD,OAAM,6CAA6C;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,sDAAsD;AAC/D;AACA;AACA;AACA;AACA;AACA,UAAS,uDAAuD;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,yDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA,UAAS,sEAAsE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,wEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW;AACtB,UAAS,WAAW;AACpB;AACA;AACA;AACA,YAAW,WAAW;AACtB,UAAS,WAAW;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,+BAA+B;AAC1C;AACA;AACA;AACA;AACA,YAAW,2EAA2E;AACtF;AACA;AACA,YAAW;AACX,iFAAgF;AAChF;AACA;AACA;AACA,YAAW,iCAAiC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B,4BAA2B;AAC3B,4BAA2B;AAC3B,4BAA2B;AAC3B,4BAA2B;AAC3B;AACA;AACA;AACA,8BAA6B;AAC7B,8BAA6B;AAC7B;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,YAAY;AAC/B,sBAAqB,aAAa;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,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B,iBAAgB;AAChB,WAAU;AACV;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,UAAS,kEAAkE;AAC3E,qBAAoB,4BAA4B;AAChD;AACA,UAAS;AACT,wDAAuD;AACvD,qBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA,8DAA6D,gDAAgD;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,2EAA0E;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;AACA;AACA;AACA,YAAW;AACX,uEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA,cAAa,kCAAkC;AAC/C,cAAa,kCAAkC;AAC/C,cAAa,iCAAiC;AAC9C,cAAa,4BAA4B;AACzC,cAAa,4BAA4B;AACzC,cAAa,uCAAuC;AACpD,cAAa,kCAAkC;AAC/C,cAAa,mCAAmC;AAChD,cAAa,4BAA4B;AACzC,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,+BAA8B,aAAa;AAC3C,4BAA2B,aAAa;AACxC;AACA,WAAU;AACV;AACA;AACA;AACA,qDAAoD,cAAc;AAClE,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR,OAAM;AACN,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,uEAAuE;AAChF,qBAAoB,4BAA4B,kBAAkB,aAAa;AAC/E;AACA;AACA;AACA,mCAAkC,4CAA4C;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,iEAAiE;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA,EAAC;;;;;;;AC1iID;AACA;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA,6BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,oCAAoC;AAC5C;;;AAGA;AACA;AACA;AACA;AACA;AACA,oEAAmE,kCAAkC;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,OAAO;AAC7B;AACA,yBAAwB,OAAO;AAC/B;AACA;AACA,0BAAyB,YAAY;AACrC;AACA,yBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAwC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,QAAQ;AAC3B,oBAAmB;AACnB;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,QAAQ;AAC3B,oBAAmB;AACnB;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,QAAQ;AAC3B,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,4BAA4B;AAC7C;AACA;AACA;AACA,oBAAmB,oCAAoC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAoB;AACpB,+BAA8B;AAC9B,wBAAuB;AACvB,+BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAC;;;AAGD,EAAC;;;;;;;ACjUD;;AAEA;;;;;;;ACFA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAkB,eAAe;AACjC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAuB;AACvB,kBAAiB;AACjB,gBAAe;AACf;AACA,wBAAuB;AACvB,kBAAiB;AACjB;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA,mBAAkB,eAAe;AACjC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,uCAAuC;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB;AACvB,kBAAiB;AACjB,gBAAe;AACf;AACA,wBAAuB;AACvB,kBAAiB;AACjB;AACA,cAAa;AACb;;AAEA;AACA,wBAAuB,YAAY,EAAE;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,iDAAiD,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAiC,gBAAgB;;AAEjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;;AAEP;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAiC,gBAAgB;;AAEjD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;;AAEA;;AAEA;AACA;AACA,sBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,mBAAmB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4BAA2B,qBAAqB;AAChD,oDAAmD,GAAG,qBAAqB;AAC3E;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA8B,yBAAyB;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA8B,yBAAyB;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA,+DAA8D,EAAE;;AAEhE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,EAAE;AACtB,iCAAgC,oBAAoB,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,qBAAoB,EAAE;AACtB,iCAAgC,gBAAgB,sDAAsD,EAAE;AACxG;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,qBAAoB,IAAI;AACxB,iCAAgC,oBAAoB,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,iCAAgC,wBAAwB,EAAE;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,iCAAgC,4DAA4D,EAAE;AAC9F,oCAAmC,iCAAiC;AACpE,QAAO;AACP;AACA;AACA;AACA,iCAAgC,iEAAiE,EAAE;AACnG,oCAAmC,gCAAgC;AACnE,QAAO;AACP;AACA;AACA;AACA,iCAAgC,wBAAwB,EAAE;AAC1D,oCAAmC,+BAA+B;AAClE,QAAO;AACP;AACA;AACA;AACA,iCAAgC,wBAAwB,EAAE;AAC1D,oCAAmC,8BAA8B;AACjE,QAAO;AACP;AACA;AACA,6BAA4B,EAAE,QAAQ,EAAE;AACxC,iCAAgC,oBAAoB,EAAE;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,4BAA2B,EAAE,QAAQ,EAAE;AACvC,iCAAgC,oBAAoB,EAAE;AACtD,oCAAmC,+BAA+B;AAClE,QAAO;AACP;AACA;AACA,6BAA4B,EAAE,QAAQ,EAAE;AACxC,iCAAgC,oBAAoB,EAAE;AACtD,oCAAmC,8BAA8B;AACjE,QAAO;AACP;AACA;AACA;AACA,oCAAmC,iCAAiC;AACpE,QAAO;AACP;AACA;AACA;AACA,oCAAmC,gCAAgC;AACnE,QAAO;AACP;AACA;AACA;AACA,iCAAgC,qBAAqB,EAAE;AACvD,oCAAmC,+BAA+B;AAClE,QAAO;AACP;AACA;AACA;AACA,iCAAgC,qBAAqB,EAAE;AACvD,oCAAmC,+BAA+B;AAClE,QAAO;AACP;AACA;AACA;AACA,iCAAgC,qBAAqB,EAAE;AACvD,oCAAmC,8BAA8B;AACjE,QAAO;AACP;AACA;AACA;AACA,iCAAgC,qBAAqB,EAAE;AACvD,oCAAmC,8BAA8B;AACjE,QAAO;AACP;AACA;AACA;AACA,iCAAgC,uBAAuB,EAAE;AACzD,oCAAmC,+BAA+B;AAClE,QAAO;AACP;AACA;AACA;AACA,iCAAgC,uBAAuB,EAAE;AACzD,oCAAmC,8BAA8B;AACjE,QAAO;AACP;AACA;AACA;AACA,iCAAgC,4BAA4B,EAAE;AAC9D,oCAAmC,gCAAgC;AACnE,QAAO;AACP;AACA;AACA;AACA,iCAAgC,uBAAuB,EAAE;AACzD,oCAAmC,+BAA+B;AAClE,QAAO;AACP;AACA;AACA;AACA,iCAAgC,uBAAuB,EAAE;AACzD,oCAAmC,8BAA8B;AACjE,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,oCAAmC,8BAA8B;AACjE,QAAO;AACP;AACA;AACA,yBAAwB,EAAE;AAC1B;AACA,gDAA+C,EAAE,KAAK,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,oCAAmC,+BAA+B;AAClE,QAAO;AACP;AACA;AACA;AACA,oCAAmC,8BAA8B;AACjE,QAAO;AACP;AACA;AACA;AACA,oCAAmC,iCAAiC;AACpE,QAAO;AACP;AACA;AACA;AACA,oCAAmC,gCAAgC;AACnE,QAAO;AACP;AACA;AACA;AACA,oCAAmC,+BAA+B;AAClE,QAAO;AACP;AACA;AACA;AACA,oCAAmC,8BAA8B;AACjE;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA8B,mBAAmB;AACjD;AACA;AACA,iEAAgE;AAChE;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA4B;AAC5B,6DAA4D,OAAO;AACnE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;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,QAAO;AACP;AACA;AACA;AACA,mBAAkB;AAClB;;AAEA,0CAAyC,OAAO;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;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,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,sBAAqB,8BAA8B;AACnD,0BAAyB;AACzB;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,qCAAoC,sCAAsC,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAkD,wCAAwC;AAC1F;;AAEA;AACA,gCAA+B,wCAAwC;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,kBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA2B,oBAAoB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4EAA2E;AAC3E;AACA,2BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;;AAEA,4EAA2E,WAAW;AACtF;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;;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;;AAEA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA,oBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA,oBAAmB,QAAQ;AAC3B;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB,kBAAiB,SAAS;AAC1B;AACA;AACA,oBAAmB,QAAQ;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB,kBAAiB,SAAS;AAC1B;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA,oBAAmB,QAAQ;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB,kBAAiB,SAAS;AAC1B;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;;AAE5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB,kBAAiB,SAAS;AAC1B;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAAyB;;AAEzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB;AACA,oBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB,kBAAiB,QAAQ;AACzB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,SAAS;AAC1B;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,8BAA6B;;AAE7B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,gBAAe;AACf;AACA;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;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iBAAgB,QAAQ;AACxB,iBAAgB,OAAO;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;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,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gFAA+E;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA,qDAAoD,+BAA+B,EAAE;AACrF;;AAEA;AACA;AACA;AACA,sBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB,qDAAqD;AAC1E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAqB,QAAQ;;AAE7B,0DAAyD,QAAQ;;AAEjE,kCAAiC,QAAQ;;AAEzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yCAAwC;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kCAAiC,iBAAiB;AAClD;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;;AAEA;AACA,qBAAoB,gDAAgD;AACpE;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA,YAAW;AACX;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAY,yBAAyB,qCAAqC,wBAAwB;AAClG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA,gBAAe;AACf,cAAa;AACb;;;AAGA;AACA,wBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,oDAAoD;AACvF,cAAa;AACb,oCAAmC,iBAAiB;AACpD;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,4CAA4C;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;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;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,6CAA4C;AAC5C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qGAAoG;;AAEpG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,+BAA+B;AACzD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6DAA4D;;AAE5D;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;AACA;;AAEA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE,gDAAgD,WAAW,EAAE,EAAE;AACpI;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,mBAAmB;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAoD;AACpD;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gEAA+D;AAC/D;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;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;;AAEA;AACA;;AAEA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,qCAAoC,oBAAoB;AACxD,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAsC,gCAAgC;AACtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAiC;;AAEjC;AACA;AACA;AACA;AACA,yCAAwC;AACxC,iEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA,iDAAgD,QAAQ;;AAExD;AACA;AACA;AACA,gCAA+B,2DAA2D;;AAE1F;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;;AAEA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,gBAAe;;AAEf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA,oBAAmB;AACnB;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,oBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA,oBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,kBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kDAAiD,QAAQ;AACzD;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,EAAC;;AAED;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,EAAC;;AAED;AACA;AACA;AACA,aAAY,6EAA6E;AACzF;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,aAAY;AACZ,yBAAwB;AACxB;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA,aAAY,gFAAgF;AAC5F;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ,yBAAwB;AACxB;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA,aAAY,+FAA+F;AAC3G;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA,aAAY,4FAA4F;AACxG;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAmB,qBAAqB;AACxC;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,2EAA0E,mBAAmB;AAC7F;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,sBAAqB,8BAA8B;AACnD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC,OAAO;AAC7C,mCAAkC,WAAW,GAAG,0EAA0E;AAC1H;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,aAAa;AACjC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA,oBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA,+EAA8E,gBAAgB,EAAE;AAChG,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAAyB,4BAA4B;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,oBAAmB,8BAA8B;AACjD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA,UAAS,2BAA2B;AACpC;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA,UAAS,2BAA2B;AACpC;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA,UAAS,2BAA2B;AACpC;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,+DAA8D;AAC9D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,eAAe;AACxD;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA2B,oBAAoB;AAC/C;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;;AAEA;AACA;AACA;AACA,8BAA6B,oBAAoB,EAAE;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAuD,YAAY;;AAEnE;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,gBAAe;AACf;AACA;AACA,cAAa;AACb;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,+BAA8B,yBAAyB;AACvD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA4B,+BAA+B;AAC3D,cAAa;AACb,YAAW;AACX,2BAA0B,+BAA+B;AACzD;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,sDAAqD;AACrD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oEAAmE;AACnE;AACA,8HAA6H;AAC7H;AACA,iDAAgD;AAChD;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,iCAAgC,aAAa,qBAAqB,QAAQ;AAC1E;AACA,+EAA8E,QAAQ,qBAAqB,WAAW,mJAAmJ,yBAAyB,KAAK,SAAS;AAChT;AACA;AACA,oBAAmB,WAAW,uBAAuB,aAAa,mBAAmB,SAAS;AAC9F;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,0FAAyF,eAAe;AACxG,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,gGAA+F,6BAA6B;AAC5H;AACA;AACA;AACA,iGAAgG,6BAA6B;AAC7H;AACA;AACA;AACA;AACA,+FAA8F,0BAA0B;AACxH,4CAA2C,cAAc,MAAM,iBAAiB;AAChF;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,uBAAsB;AACtB;AACA,SAAQ;AACR;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,uEAAsE,YAAY,mCAAmC,cAAc;AACnI;AACA;AACA;AACA,4BAA2B,iBAAiB,kBAAkB,YAAY,iOAAiO,OAAO;AAClT;AACA;AACA;AACA;AACA,4GAA2G,cAAc,KAAK,cAAc;AAC5I;AACA;AACA;AACA;AACA,mEAAkE,uBAAuB;AACzF;AACA,qBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,oDAAoD,KAAK,YAAY;AACxH;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,yEAAwE,YAAY,mCAAmC,cAAc;AACrI;AACA;AACA;AACA,+BAA8B,YAAY,iOAAiO,OAAO;AAClR;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,wBAAwB,KAAK,YAAY;AAC5F;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,wEAAuE,YAAY,mCAAmC,cAAc;AACpI;AACA;AACA;AACA,4BAA2B,eAAe,kBAAkB,YAAY,iOAAiO,OAAO;AAChT;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD,wBAAwB,KAAK,YAAY;AAC5F;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sKAAqK,sBAAsB;AAC3L,oHAAmH,oBAAoB;AACvI;AACA,uHAAsH,oBAAoB;AAC1I;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,uBAAsB,+CAA+C;AACrE;AACA;AACA,EAAC;;AAED;AACA;AACA,4BAA2B,aAAa;AACxC;AACA;AACA,sBAAqB,6CAA6C;AAClE,sCAAqC,6BAA6B;AAClE;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,wBAAuB,oDAAoD,uDAAuD,uBAAuB;AACzJ,wBAAuB,4CAA4C,uDAAuD,mBAAmB;AAC7I;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,kDAAiD,mCAAmC,2EAA2E,oBAAoB;AACnL,mDAAkD,mCAAmC,iFAAiF,uBAAuB;AAC7L,oEAAmE,uDAAuD,oFAAoF,WAAW;AACzN,mDAAkD,+BAA+B,iFAAiF,mBAAmB;AACrL,kDAAiD,+BAA+B,mFAAmF,mBAAmB;AACtL;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,qHAAoH,OAAO,yCAAyC,KAAK,eAAe,6CAA6C,sBAAsB,oBAAoB,wBAAwB,SAAS;AAChT;AACA,EAAC;;AAED;AACA;AACA,gEAA+D,SAAS;AACxE,EAAC;;AAED;AACA;AACA;AACA,uHAAsH,OAAO,yCAAyC,KAAK,eAAe,6CAA6C,sBAAsB,oBAAoB,wBAAwB,SAAS;AAClT;AACA;AACA,EAAC;;AAED;AACA;AACA,4IAA2I,cAAc,qBAAqB,OAAO,sBAAsB,OAAO;AAClN,oFAAmF,8BAA8B;AACjH,4OAA2O,SAAS;AACpP;AACA;AACA,EAAC;;AAED;AACA;AACA,uBAAsB,mCAAmC;AACzD,4FAA2F,SAAS;AACpG;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,8BAA6B,uBAAuB,eAAe,oDAAoD;AACvH;AACA;AACA;AACA,2BAA0B,oCAAoC;AAC9D;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,2FAA0F,6BAA6B,0EAA0E,YAAY;AAC7M,sBAAqB;AACrB,+FAA8F,+BAA+B,4EAA4E,YAAY;AACrN,8CAA6C;AAC7C,uHAAsH,+BAA+B,4EAA4E,YAAY;AAC7O;AACA;AACA;AACA,gEAA+D,0BAA0B;AACzF,qMAAoM,YAAY;AAChN;AACA;AACA,kEAAiE,4BAA4B;AAC7F,yMAAwM,YAAY;AACpN;AACA;AACA,kEAAiE,4BAA4B;AAC7F,uMAAsM,YAAY;AAClN;AACA,sGAAqG,6BAA6B,uHAAuH,YAAY,KAAK,UAAU;AACpR;AACA;AACA,2FAA0F,6BAA6B,0EAA0E,YAAY;AAC7M,sBAAqB;AACrB,+FAA8F,+BAA+B,4EAA4E,YAAY;AACrN,8CAA6C;AAC7C,uHAAsH,+BAA+B,4EAA4E,YAAY;AAC7O;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,2BAA0B,aAAa;AACvC;AACA,EAAC;;AAED;AACA;AACA,sFAAqF,qDAAqD,oCAAoC,WAAW;AACzL,yEAAwE,0BAA0B,0GAA0G,YAAY;AACxN;AACA;AACA;AACA;AACA,EAAC;AACD,yDAAwD,8KAA8K,uCAAuC,+BAA+B,WAAW,iCAAiC,EAAE;AAC1V,2DAA0D,mKAAmK,YAAY,mDAAmD,gBAAgB,qBAAqB,WAAW,WAAW,mCAAmC,EAAE;AAC5X,yDAAwD,4JAA4J,yBAAyB,6BAA6B,6BAA6B,uBAAuB,yBAAyB,gCAAgC,6BAA6B,uBAAuB,sBAAsB,uBAAuB,4BAA4B,qCAAqC,4BAA4B,WAAW,iCAAiC,EAAE;AACnmB,gEAA+D,iLAAiL,cAAc,WAAW,UAAU,gBAAgB,sBAAsB,WAAW,wCAAwC,EAAE;AAC9W,wDAAuD,qyFAAqyF,SAAS,YAAY,UAAU,WAAW,UAAU,kGAAkG,0BAA0B,WAAW,gCAAgC,EAAE;AACzjG,2DAA0D,wJAAwJ,YAAY,WAAW,mCAAmC,EAAE;AAC9Q,0DAAyD,2KAA2K,eAAe,WAAW,kCAAkC,EAAE,E;;;;;;AClrOlS;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAAyC,GAAG,oBAAoB;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,aAAY,MAAM;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,EAAE;AACb,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAQ,YAAY;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA,uEAAsE;;AAEtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB;AACA,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,mCAAkC;AAClC;;AAEA,gBAAe,eAAe;AAC9B;AACA,oCAAmC;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,aAAY,QAAQ;AACpB;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,gBAAgB;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,gBAAgB;AAC7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,gBAAgB;AAC7C;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;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;AACA,6CAA4C,yCAAyC;;;AAGrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,eAAc,SAAS;AACvB;AACA;AACA;AACA,oDAAmD;;AAEnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAqC,6BAA6B,EAAE;AACpE,QAAO;AACP;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAwC;;AAExC;AACA;AACA;;AAEA;AACA;AACA,uBAAsB,iBAAiB;AACvC;AACA;AACA;AACA;AACA,Q;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C,6BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA,uD;AACA;AACA,yDAAwD;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,U;AACA;AACA;;AAEA;AACA,oCAAmC,MAAM;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA,0CAAyC;AACzC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA,cAAa,cAAc;AAC3B,gBAAe,4DAA4D;AAC3E,cAAa,cAAc;AAC3B,2BAA0B,sDAAsD;AAChF,cAAa,SAAS;AACtB,OAAM,gEAAgE;AACtE,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,8CAA6C,iBAAiB;AAC9D;AACA,eAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,cAAc;AAC3B;AACA,cAAa,OAAO;AACpB;AACA,eAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,gBAAgB;AAC7B;AACA,cAAa,OAAO;AACpB,eAAc,wBAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,kCAAkC,uBAAuB;AAC5E,mCAAkC,sBAAsB,EAAE;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,QAAO,iBAAiB;AACxB,eAAc,wBAAwB;AACtC;AACA;AACA;AACA,wDAAuD,iBAAiB;AACxE;AACA;;AAEA;;AAEA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,uDAAuD;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,SAAS;AACjB,SAAQ,yBAAyB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,GAAG;AACjB,eAAc,SAAS;AACvB,eAAc,eAAe,KAAK;AAClC;AACA,gBAAe,QAAQ;AACvB;AACA;AACA,mBAAkB,WAAW;AAC7B;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,4DAA2D,yDAAyD;AACpH;AACA;AACA,eAAc,OAAO;AACrB;AACA,eAAc,OAAO;AACrB;AACA,eAAc,OAAO;AACrB;AACA,eAAc,OAAO;AACrB;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA,oBAAmB,WAAW,EAAE,gCAAgC;;AAEhE;AACA;AACA;AACA,UAAS,SAAS;AAClB,UAAS,oBAAoB;AAC7B;AACA;AACA;AACA,WAAU,8BAA8B;AACxC;AACA,aAAY;AACZ;AACA,WAAU,OAAO,YAAY;AAC7B,gDAA+C,2BAA2B,WAAW,OAAO,YAAY,OAAO;AAC/G,kDAAiD,6BAA6B,WAAW,OAAO,YAAY,OAAO;AACnH;AACA;AACA,+DAA8D;AAC9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gFAA+E;AAC/E;AACA;AACA,wEAAuE;AACvE;AACA;AACA;AACA;AACA,gEAA+D;AAC/D;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;;AAEA;AACA,0EAAyE,wEAAwE;AACjJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,GAAG;AAC7B,2BAA0B,GAAG;AAC7B;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,WAAW;AACxB;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,2BAA0B,GAAG;AAC7B;AACA,KAAI;AACJ,gBAAe;AACf;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;;AAEf;;AAEA;AACA,kCAAiC,yCAAyC;AAC1E,kCAAiC,iCAAiC;;AAElE;AACA;AACA;AACA;;AAEA;AACA,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA,gBAAe,0BAA0B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,YAAY;AACxB;AACA;AACA;AACA;AACA,gBAAe,0BAA0B;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,GAAG,aAAa,oBAAoB;AAC9D;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA,+BAA8B;AAC9B,+DAA8D,4DAA4D,EAAE;AAC5H;;AAEA,cAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD;AAChD;AACA;AACA,SAAQ,iFAAiF;AACzF;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,6BAA4B,0BAA0B,EAAE;AACxD,6BAA4B,8BAA8B,EAAE;AAC5D,8BAA6B,8BAA8B,EAAE;AAC7D,yBAAwB,6DAA6D,EAAE;AACvF;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,YAAW,kDAAkD;AAC7D;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,uCAAsC,UAAU,uBAAuB,EAAE;;AAEzE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA6B,6DAA6D;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,aAAa;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,iBAAgB,kDAAkD;AAClE;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,8BAA6B,qFAAqF;AAClH,gCAA+B,oFAAoF;;AAEnH,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,0BAAyB,kEAAkE,EAAE;AAC7F;AACA,MAAK;AACL;AACA;AACA,8BAA6B,0BAA0B,EAAE;AACzD,0BAAyB,8DAA8D,EAAE;AACzF;AACA,MAAK;AACL;AACA,8BAA6B,oBAAoB,EAAE;AACnD,8BAA6B,gCAAgC,EAAE;AAC/D,0BAAyB,sCAAsC,EAAE;AACjE;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP,0BAAyB,qDAAqD,EAAE;AAChF,gCAA+B,wEAAwE,EAAE;AACzG,uBAAsB,EAAE;AACxB,wBAAuB,EAAE;AACzB,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ,uDAAuD;AAC5E,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,kDAAkD;AAClE;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,gBAAe,WAAW;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,sCAAsC;AAC/D;AACA;AACA,cAAa,OAAO;AACpB,cAAa,gBAAgB;AAC7B,cAAa,sCAAsC;AACnD,cAAa,gBAAgB;AAC7B;AACA,kBAAiB,sCAAsC;AACvD;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,qBAAoB,cAAc;AAClC;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA,yBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN,gBAAe,cAAc;AAC7B;AACA;AACA;AACA,SAAQ;AACR;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;;AAEA,qCAAoC,aAAa;AACjD;AACA,uBAAsB,gCAAgC;AACtD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+CAA8C,iCAAiC,WAAW,SAAS,EAAE;AACrG,8BAA6B;;AAE7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,cAAc;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAiC;AACjC,8EAA6E,qBAAqB;AAClG;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA2B;AAC3B,yDAAwD,cAAc;AACtE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS,6DAA6D;AACtE,UAAS;AACT;AACA;AACA;AACA,uBAAsB,8BAA8B;AACpD,qDAAoD,kBAAkB,EAAE;AACxE,oDAAmD,kDAAkD,EAAE;AACvG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAmC,uBAAuB,yBAAyB,GAAG;AACtF;AACA,0FAAyF,eAAe,EAAE;AAC1G;AACA;AACA;AACA;AACA;;AAEA,0BAAyB,UAAU,oFAAoF,EAAE;;AAEzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,8BAA6B;AAC7B;;AAEA;AACA;AACA,oDAAmD,gBAAgB;AACnE,MAAK;AACL;AACA;AACA;AACA,uBAAsB,oBAAoB,0BAA0B;AACpE;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA,MAAK;AACL;AACA,sBAAqB;AACrB;AACA;AACA,QAAO;AACP;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;AACL;AACA;AACA,kBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA,wBAAuB;AACvB;AACA;AACA,wBAAuB;AACvB;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2FAA0F,EAAE;;AAE5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6DAA4D;AAC5D;AACA;;AAEA;AACA;AACA,sCAAqC,IAAI;AACzC;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR,OAAM;AACN;AACA;AACA,cAAa,SAAS;AACtB;AACA;AACA,eAAc,OAAO;AACrB;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,SAAQ;AACR,OAAM;AACN;AACA;AACA,cAAa,gBAAgB;AAC7B;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,2BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,sDAAqD,gBAAgB;AACrE;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,SAAQ;AACR,OAAM;AACN;AACA;AACA,cAAa,cAAc;AAC3B,cAAa,gBAAgB;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAkD,gCAAgC,EAAE;AACpF;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;AACA,mDAAkD,sCAAsC,EAAE;AAC1F;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA,kBAAiB;;AAEjB;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;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,SAAQ;AACR;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd,WAAU;AACV;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA,kDAAiD;;AAEjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,kDAAkD;AAC5D;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,kBAAiB,WAAW;AAC5B,kBAAiB,QAAQ;AACzB,kBAAiB,QAAQ;AACzB;AACA,8BAA6B,cAAc;AAC3C;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB,oBAAoB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,sCAAqC,2BAA2B;;AAEhE;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,iCAAgC;AAChC;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAsD,YAAY;AAClE;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA,kEAAiE;AACjE,MAAK;;AAEL;AACA;AACA,8CAA6C;AAC7C;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,aAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAkC;AAClC,6BAA4B,kBAAkB;AAC9C,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA8C,iCAAiC;AAC/E;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,6CAA4C,OAAO;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;;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,qBAAoB,OAAO;AAC3B,mBAAkB,OAAO;AACzB;AACA,kBAAiB,OAAO,eAAe;AACvC;AACA,wBAAuB,OAAO;AAC9B;AACA,qBAAoB,OAAO;AAC3B;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B;AACA,mBAAkB,OAAO;AACzB;AACA,uBAAsB,OAAO;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,OAAM;AACN;AACA;AACA;AACA,2BAA0B,+BAA+B;AACzD,2BAA0B;AAC1B;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA,eAAc,OAAO;AACrB;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,cAAa,OAAO;AACpB;AACA,cAAa,OAAO;AACpB,cAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,UAAU,WAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD,EAAE;AAClD;AACA;AACA,cAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,UAAU,WAAW;AAC/B;AACA;AACA;AACA;AACA,4CAA2C,EAAE;AAC7C;AACA,cAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,cAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA,4CAA2C,EAAE;AAC7C;AACA,cAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA,yBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,OAAO;AACvB,qBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,gDAAgD,cAAc;AAC3E;AACA;AACA;AACA;AACA;AACA,oBAAmB,kBAAkB;AACrC,oBAAmB,eAAe;AAClC,oBAAmB,qBAAqB,EAAE,eAAe;AACzD;AACA,uBAAsB,YAAY,EAAE,WAAW;AAC/C,kCAAiC,YAAY,EAAE,WAAW;AAC1D;AACA;AACA,cAAa,QAAQ;AACrB;AACA,yBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,SAAQ;AACR;AACA,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,cAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,cAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,yBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,yBAAyB;AAClE;AACA,yBAAwB,WAAW;AACnC;AACA;AACA,mBAAkB;AAClB,OAAM;AACN;AACA,0BAAyB,aAAa;AACtC;AACA;AACA,gBAAe,4FAA4F;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC;AACpC;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA,8DAA6D;AAC7D;AACA;AACA;AACA,yBAAwB;AACxB,0BAAyB;AACzB,6BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,OAAO,8BAA8B,uBAAuB;AAC5E;AACA,iBAAgB,OAAO;AACvB;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB,kBAAiB,MAAM;AACvB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,mCAAkC,SAAS,GAAG,cAAc;AAC5D;AACA;AACA;AACA;AACA,2CAA0C;AAC1C,iDAAgD,KAAK;AACrD,gDAA+C,KAAK,cAAc;AAClE,WAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,oBAAmB,0BAA0B,iBAAiB,EAAE;;AAEhE;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,2D;AACA;AACA,SAAQ;AACR;AACA;AACA,gBAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,2D;AACA;AACA,SAAQ;AACR;;AAEA,kBAAiB,QAAQ;AACzB,SAAQ,kDAAkD;AAC1D;AACA;AACA,iEAAgE,qDAAqD;AACrH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,yEAAyE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA,4BAA2B,qBAAqB;AAChD;AACA,2BAA0B,aAAa;AACvC,4BAA2B,uBAAuB;AAClD;AACA,0BAAyB,aAAa;AACtC,mCAAkC,4BAA4B;AAC9D;AACA,iHAAgH;AAChH;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD,2CAA2C;AAChG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,QAAQ;AACvB;AACA,4BAA2B,qBAAqB;AAChD;AACA,2BAA0B,cAAc;AACxC,4BAA2B,QAAQ;AACnC;AACA,0BAAyB,aAAa;AACtC,mCAAkC,8BAA8B;AAChE;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB,SAAQ,kDAAkD;AAC1D;AACA;AACA;AACA;AACA;AACA,QAAO,eAAe;;AAEtB;AACA;;AAEA;AACA;;AAEA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAgF;AAChF;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;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,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA,iEAAgE;;AAEhE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,MAAM;AACzB,oBAAmB,OAAO;AAC1B,oBAAmB,MAAM;AACzB,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAwB,mBAAmB;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sCAAqC,WAAW;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,MAAM;AACzB,oBAAmB,OAAO;AAC1B,oBAAmB,MAAM;AACzB,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,MAAM;AACzB,oBAAmB,OAAO;AAC1B,oBAAmB,MAAM;AACzB,oBAAmB,OAAO;AAC1B,oBAAmB,MAAM;AACzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,8DAA8D;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC;AACzC,gDAA+C;AAC/C;AACA;AACA;AACA,wBAAuB,gCAAgC;AACvD;AACA;AACA,gBAAe,cAAc;AAC7B,gBAAe,QAAQ,+BAA+B,sBAAsB;AAC5E;AACA,gBAAe,QAAQ;AACvB;AACA,4BAA2B,cAAc;AACzC;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA,yBAAwB,4BAA4B,eAAe;AACnE;;AAEA,+BAA8B,kBAAkB;AAChD,uCAAsC,cAAc;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC;AACnC,4CAA2C;AAC3C,iDAAgD;AAChD,yCAAwC;AACxC,iCAAgC;AAChC;AACA;AACA;AACA,wBAAuB,sCAAsC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC;AACxC,wCAAuC;AACvC,sCAAqC;AACrC,8CAA6C;AAC7C,2CAA0C;AAC1C,uCAAsC;AACtC,mCAAkC;AAClC;AACA;AACA,gBAAe,OAAO;AACtB;AACA,gBAAe,QAAQ,+BAA+B,sBAAsB;AAC5E;AACA,gBAAe,QAAQ;AACvB;AACA,4BAA2B,eAAe;AAC1C;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA,yBAAwB,4BAA4B,eAAe;AACnE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA8B,kBAAkB;AAChD,8DAA6D,cAAc;AAC3E;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,gBAAgB;AAC3D;AACA;AACA,gBAAe,cAAc;AAC7B,gBAAe,QAAQ;AACvB,gBAAe,QAAQ;AACvB;AACA,yBAAwB,aAAa;AACrC;AACA;AACA,2BAA0B,aAAa;AACvC,4BAA2B,uBAAuB;AAClD;AACA,4BAA2B,cAAc;AACzC;AACA,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO,eAAe;;AAEtB;;AAEA;AACA,6EAA4E;;AAE5E;;AAEA;AACA;AACA;AACA,mGAAkG;AAClG;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,eAAe;AAC9B;AACA,gBAAe,eAAe;AAC9B,kBAAiB,aAAa;AAC9B;AACA;AACA,kFAAiF,0BAA0B,EAAE;AAC7G;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;;AAEpB;AACA,oDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA,gGAA+F;AAC/F;AACA,sCAAqC,gFAAgF;AACrH,YAAW;;AAEX;AACA;AACA;AACA,mDAAkD;AAClD;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;;AAET;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAwC,WAAW,EAAE;AACrD;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,0EAA0E;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA8B,oCAAoC;AAClE;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,8GAA8G;AACnJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,QAAQ;AACnB;AACA,cAAa,oCAAoC;AACjD;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,+FAA8F;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,O;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,O;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,O;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA6C,uBAAuB,MAAM,EAAE;AAC5E,sCAAqC,kBAAkB,MAAM;AAC7D;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+CAA8C,qCAAqC,MAAM,EAAE;AAC3F,uCAAsC,wBAAwB,MAAM;AACpE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+FAA8F;AAC9F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,OAAO;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mCAAkC,oCAAoC;AACtE;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAmC,GAAG,GAAG;AACzC;AACA;AACA;AACA,WAAU;AACV;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,wDAAwD;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA4E,QAAQ;AACpF;AACA;AACA;AACA,yCAAwC,iBAAiB,KAAK,gBAAgB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,mIAAkI,QAAQ;AAC1I;AACA;AACA;AACA,6DAA4D,iBAAiB;AAC7E;AACA;AACA,6DAA4D,iBAAiB;AAC7E;AACA;AACA,6DAA4D,iBAAiB;AAC7E;AACA;AACA;AACA,qCAAoC,aAAa;AACjD;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO,kCAAkC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;;AAEA,+GAA8G;;AAE9G;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oDAAmD,qCAAqC,EAAE;AAC1F;AACA;AACA;;AAEA;AACA,oFAAmF,YAAY,EAAE;AACjG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO,oCAAoC;AACtD,YAAW,OAAO,mCAAmC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD,sBAAsB,EAAE;AAC1E,qBAAoB;;AAEpB;AACA,8BAA6B,uBAAuB;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oFAAmF,YAAY,EAAE;AACjG;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,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,qBAAqB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,qBAAqB;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,0BAAyB,oBAAoB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,8DAA8D;AAC9E,gEAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC;;AAEzC;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,cAAc;AAC/B,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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wB,gCAAgC,gCAAgC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,gCAAgC,GAAG,oCAAoC,gCAAgC,gCAAgC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,gCAAgC,GAAG,oCAAoC,gCAAgC,gCAAgC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,+BAA+B,iCAAiC,GAAG,oCAAoC,+BAA+B,iCAAiC,GAAG,wBAAwB,gCAAgC,8BAA8B,GAAG,oCAAoC,gCAAgC,+BAA+B,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,gCAAgC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,gCAAgC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,+BAA+B,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,wBAAwB,gCAAgC,iCAAiC,GAAG,oCAAoC,gCAAgC,iCAAiC,GAAG,yBAAyB,gCAAgC,iCAAiC,GAAG,qCAAqC,gCAAgC,iCAAiC,GAAG,yBAAyB,gCAAgC,iCAAiC,GAAG,qCAAqC,gCAAgC,iCAAiC,GAAG,yBAAyB,+BAA+B,iCAAiC,GAAG,qCAAqC,gCAAgC,iCAAiC,GAAG,yBAAyB,gCAAgC,iCAAiC,GAAG,qCAAqC,gCAAgC,iCAAiC,GAAG,yBAAyB,+BAA+B,iCAAiC,GAAG,qCAAqC,gCAAgC,iCAAiC,GAAG,yBAAyB,gCAAgC,iCAAiC,GAAG,qCAAqC,gCAAgC,iCAAiC,GAAG,yBAAyB,gCAAgC,iCAAiC,GAAG,qCAAqC,gCAAgC,gCAAgC,GAAG,yBAAyB,gCAAgC,iCAAiC,GAAG,qCAAqC,gCAAgC,iCAAiC,GAAG,yBAAyB,gCAAgC,iCAAiC,GAAG,qCAAqC,gCAAgC,gCAAgC,GAAG,yBAAyB,gCAAgC,gCAAgC,GAAG,qCAAqC,+BAA+B,gCAAgC,GAAG,yBAAyB,gCAAgC,iCAAiC,GAAG,qCAAqC,gCAAgC,gCAAgC,GAAG,yBAAyB,gCAAgC,iCAAiC,GAAG,qCAAqC,gCAAgC,iCAAiC,GAAG,yBAAyB,gCAAgC,iCAAiC,GAAG,qCAAqC,gCAAgC,iCAAiC,GAAG,yBAAyB,gCAAgC,iCAAiC,GAAG,qCAAqC,gCAAgC,iCAAiC,GAAG,yBAAyB,+BAA+B,iCAAiC,GAAG,qCAAqC,gCAAgC,iCAAiC,GAAG,yBAAyB,gCAAg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AmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,uBAAuB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,yBAAyB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,wBAAwB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,yBAAyB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,yBAAyB,kBAAkB,mBAAmB,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,0BAA0B,qBAAqB,sBAAsB,KAAK,sCAAsC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,4BAA4B,qBAAqB,sBAAsB,KAAK,wCAAwC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,sBAAsB,KAAK,2BAA2B,qBAAqB,sBAAsB,KAAK,uCAAuC,qBAAqB,s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","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap d6a5e078b7df11ecfbe1\n **/","import libs from './external'; // unused-warning is not real. This line is required for app to function\n\nimport uiRouter from 'angular-ui-router';\n\nimport '../css/main.css';\n\nimport {appDirective} from './app.directive';\n\nimport {components} from './components/components';\nimport {shared} from './shared/shared';\nimport {models} from './models/models';\n\nangular.module('app', [\n uiRouter,\n 'ngSanitize',\n 'ngAnimate',\n 'ui.bootstrap',\n 'ngCookies',\n components.name,\n shared.name,\n models.name\n]).config(function ($httpProvider) {\n // Enable cross domain calls\n $httpProvider.defaults.useXDomain = true;\n}).directive('app', appDirective);\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/app/app.js\n **/","// Import 'normalize.css' node module\nimport 'normalize.css';\n// import 'angular';\nimport 'angular-sanitize';\nimport 'angular-animate';\nimport 'angular-cookies';\nimport 'angular-ui-bootstrap';\n\n\n// Bootstrap CSS\n// import 'bootstrap/dist/css/bootstrap.min.css';\n\n// Angular UI Bootstrap\n// import 'angular-ui-bootstrap';\n\n// Font-Awesome\n// import '../vendor/font-awesome-4.5.0/css/font-awesome.min.css';\n// import 'font-awesome/css/font-awesome.min.css';\n\n// Kendo-ui\n// import 'http://kendo.cdn.telerik.com/2016.2.504/js/jquery.min.js';\n// import 'http://kendo.cdn.telerik.com/2016.2.504/js/kendo.all.min.js';\n// import 'http://kendo.cdn.telerik.com/2016.2.504/styles/kendo.common.min.css';\n// import 'http://kendo.cdn.telerik.com/2016.2.504/styles/kendo.default.min.css';\n\nexport default {};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/app/external.js\n **/","// style-loader: Adds some css to the DOM by adding a \n * ```\n *\n * All that is going on here with ngShow/ngHide behind the scenes is the `.ng-hide` class is added/removed (when the hidden state is valid). Since\n * ngShow and ngHide are animation aware then we can match up a transition and ngAnimate handles the rest.\n *\n * In addition the addition and removal of the CSS class, ngAnimate also provides two helper methods that we can use to further decorate the animation\n * with CSS styles.\n *\n * ```html\n *
\n * Highlight this box\n *
\n * \n *\n * \n * ```\n *\n * We can also make use of CSS keyframes by placing them within the CSS classes.\n *\n *\n * ### CSS Staggering Animations\n * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a\n * curtain-like effect. The ngAnimate module (versions >=1.2) supports staggering animations and the stagger effect can be\n * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for\n * the animation. The style property expected within the stagger class can either be a **transition-delay** or an\n * **animation-delay** property (or both if your animation contains both transitions and keyframe animations).\n *\n * ```css\n * .my-animation.ng-enter {\n * /* standard transition code */\n * transition: 1s linear all;\n * opacity:0;\n * }\n * .my-animation.ng-enter-stagger {\n * /* this will have a 100ms delay between each successive leave animation */\n * transition-delay: 0.1s;\n *\n * /* As of 1.4.4, this must always be set: it signals ngAnimate\n * to not accidentally inherit a delay property from another CSS class */\n * transition-duration: 0s;\n * }\n * .my-animation.ng-enter.ng-enter-active {\n * /* standard transition styles */\n * opacity:1;\n * }\n * ```\n *\n * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations\n * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this\n * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation\n * will also be reset if one or more animation frames have passed since the multiple calls to `$animate` were fired.\n *\n * The following code will issue the **ng-leave-stagger** event on the element provided:\n *\n * ```js\n * var kids = parent.children();\n *\n * $animate.leave(kids[0]); //stagger index=0\n * $animate.leave(kids[1]); //stagger index=1\n * $animate.leave(kids[2]); //stagger index=2\n * $animate.leave(kids[3]); //stagger index=3\n * $animate.leave(kids[4]); //stagger index=4\n *\n * window.requestAnimationFrame(function() {\n * //stagger has reset itself\n * $animate.leave(kids[5]); //stagger index=0\n * $animate.leave(kids[6]); //stagger index=1\n *\n * $scope.$digest();\n * });\n * ```\n *\n * Stagger animations are currently only supported within CSS-defined animations.\n *\n * ### The `ng-animate` CSS class\n *\n * When ngAnimate is animating an element it will apply the `ng-animate` CSS class to the element for the duration of the animation.\n * This is a temporary CSS class and it will be removed once the animation is over (for both JavaScript and CSS-based animations).\n *\n * Therefore, animations can be applied to an element using this temporary class directly via CSS.\n *\n * ```css\n * .zipper.ng-animate {\n * transition:0.5s linear all;\n * }\n * .zipper.ng-enter {\n * opacity:0;\n * }\n * .zipper.ng-enter.ng-enter-active {\n * opacity:1;\n * }\n * .zipper.ng-leave {\n * opacity:1;\n * }\n * .zipper.ng-leave.ng-leave-active {\n * opacity:0;\n * }\n * ```\n *\n * (Note that the `ng-animate` CSS class is reserved and it cannot be applied on an element directly since ngAnimate will always remove\n * the CSS class once an animation has completed.)\n *\n *\n * ### The `ng-[event]-prepare` class\n *\n * This is a special class that can be used to prevent unwanted flickering / flash of content before\n * the actual animation starts. The class is added as soon as an animation is initialized, but removed\n * before the actual animation starts (after waiting for a $digest).\n * It is also only added for *structural* animations (`enter`, `move`, and `leave`).\n *\n * In practice, flickering can appear when nesting elements with structural animations such as `ngIf`\n * into elements that have class-based animations such as `ngClass`.\n *\n * ```html\n *
\n *
\n *
\n *
\n *
\n * ```\n *\n * It is possible that during the `enter` animation, the `.message` div will be briefly visible before it starts animating.\n * In that case, you can add styles to the CSS that make sure the element stays hidden before the animation starts:\n *\n * ```css\n * .message.ng-enter-prepare {\n * opacity: 0;\n * }\n *\n * ```\n *\n * ## JavaScript-based Animations\n *\n * ngAnimate also allows for animations to be consumed by JavaScript code. The approach is similar to CSS-based animations (where there is a shared\n * CSS class that is referenced in our HTML code) but in addition we need to register the JavaScript animation on the module. By making use of the\n * `module.animation()` module function we can register the animation.\n *\n * Let's see an example of a enter/leave animation using `ngRepeat`:\n *\n * ```html\n *
\n * {{ item }}\n *
\n * ```\n *\n * See the **slide** CSS class? Let's use that class to define an animation that we'll structure in our module code by using `module.animation`:\n *\n * ```js\n * myModule.animation('.slide', [function() {\n * return {\n * // make note that other events (like addClass/removeClass)\n * // have different function input parameters\n * enter: function(element, doneFn) {\n * jQuery(element).fadeIn(1000, doneFn);\n *\n * // remember to call doneFn so that angular\n * // knows that the animation has concluded\n * },\n *\n * move: function(element, doneFn) {\n * jQuery(element).fadeIn(1000, doneFn);\n * },\n *\n * leave: function(element, doneFn) {\n * jQuery(element).fadeOut(1000, doneFn);\n * }\n * }\n * }]);\n * ```\n *\n * The nice thing about JS-based animations is that we can inject other services and make use of advanced animation libraries such as\n * greensock.js and velocity.js.\n *\n * If our animation code class-based (meaning that something like `ngClass`, `ngHide` and `ngShow` triggers it) then we can still define\n * our animations inside of the same registered animation, however, the function input arguments are a bit different:\n *\n * ```html\n *
\n * this box is moody\n *
\n * \n * \n * \n * ```\n *\n * ```js\n * myModule.animation('.colorful', [function() {\n * return {\n * addClass: function(element, className, doneFn) {\n * // do some cool animation and call the doneFn\n * },\n * removeClass: function(element, className, doneFn) {\n * // do some cool animation and call the doneFn\n * },\n * setClass: function(element, addedClass, removedClass, doneFn) {\n * // do some cool animation and call the doneFn\n * }\n * }\n * }]);\n * ```\n *\n * ## CSS + JS Animations Together\n *\n * AngularJS 1.4 and higher has taken steps to make the amalgamation of CSS and JS animations more flexible. However, unlike earlier versions of Angular,\n * defining CSS and JS animations to work off of the same CSS class will not work anymore. Therefore the example below will only result in **JS animations taking\n * charge of the animation**:\n *\n * ```html\n *
\n * Slide in and out\n *
\n * ```\n *\n * ```js\n * myModule.animation('.slide', [function() {\n * return {\n * enter: function(element, doneFn) {\n * jQuery(element).slideIn(1000, doneFn);\n * }\n * }\n * }]);\n * ```\n *\n * ```css\n * .slide.ng-enter {\n * transition:0.5s linear all;\n * transform:translateY(-100px);\n * }\n * .slide.ng-enter.ng-enter-active {\n * transform:translateY(0);\n * }\n * ```\n *\n * Does this mean that CSS and JS animations cannot be used together? Do JS-based animations always have higher priority? We can make up for the\n * lack of CSS animations by using the `$animateCss` service to trigger our own tweaked-out, CSS-based animations directly from\n * our own JS-based animation code:\n *\n * ```js\n * myModule.animation('.slide', ['$animateCss', function($animateCss) {\n * return {\n * enter: function(element) {\n* // this will trigger `.slide.ng-enter` and `.slide.ng-enter-active`.\n * return $animateCss(element, {\n * event: 'enter',\n * structural: true\n * });\n * }\n * }\n * }]);\n * ```\n *\n * The nice thing here is that we can save bandwidth by sticking to our CSS-based animation code and we don't need to rely on a 3rd-party animation framework.\n *\n * The `$animateCss` service is very powerful since we can feed in all kinds of extra properties that will be evaluated and fed into a CSS transition or\n * keyframe animation. For example if we wanted to animate the height of an element while adding and removing classes then we can do so by providing that\n * data into `$animateCss` directly:\n *\n * ```js\n * myModule.animation('.slide', ['$animateCss', function($animateCss) {\n * return {\n * enter: function(element) {\n * return $animateCss(element, {\n * event: 'enter',\n * structural: true,\n * addClass: 'maroon-setting',\n * from: { height:0 },\n * to: { height: 200 }\n * });\n * }\n * }\n * }]);\n * ```\n *\n * Now we can fill in the rest via our transition CSS code:\n *\n * ```css\n * /* the transition tells ngAnimate to make the animation happen */\n * .slide.ng-enter { transition:0.5s linear all; }\n *\n * /* this extra CSS class will be absorbed into the transition\n * since the $animateCss code is adding the class */\n * .maroon-setting { background:red; }\n * ```\n *\n * And `$animateCss` will figure out the rest. Just make sure to have the `done()` callback fire the `doneFn` function to signal when the animation is over.\n *\n * To learn more about what's possible be sure to visit the {@link ngAnimate.$animateCss $animateCss service}.\n *\n * ## Animation Anchoring (via `ng-animate-ref`)\n *\n * ngAnimate in AngularJS 1.4 comes packed with the ability to cross-animate elements between\n * structural areas of an application (like views) by pairing up elements using an attribute\n * called `ng-animate-ref`.\n *\n * Let's say for example we have two views that are managed by `ng-view` and we want to show\n * that there is a relationship between two components situated in within these views. By using the\n * `ng-animate-ref` attribute we can identify that the two components are paired together and we\n * can then attach an animation, which is triggered when the view changes.\n *\n * Say for example we have the following template code:\n *\n * ```html\n * \n *
\n *
\n *\n * \n * \n * \n * \n *\n * \n * \n * ```\n *\n * Now, when the view changes (once the link is clicked), ngAnimate will examine the\n * HTML contents to see if there is a match reference between any components in the view\n * that is leaving and the view that is entering. It will scan both the view which is being\n * removed (leave) and inserted (enter) to see if there are any paired DOM elements that\n * contain a matching ref value.\n *\n * The two images match since they share the same ref value. ngAnimate will now create a\n * transport element (which is a clone of the first image element) and it will then attempt\n * to animate to the position of the second image element in the next view. For the animation to\n * work a special CSS class called `ng-anchor` will be added to the transported element.\n *\n * We can now attach a transition onto the `.banner.ng-anchor` CSS class and then\n * ngAnimate will handle the entire transition for us as well as the addition and removal of\n * any changes of CSS classes between the elements:\n *\n * ```css\n * .banner.ng-anchor {\n * /* this animation will last for 1 second since there are\n * two phases to the animation (an `in` and an `out` phase) */\n * transition:0.5s linear all;\n * }\n * ```\n *\n * We also **must** include animations for the views that are being entered and removed\n * (otherwise anchoring wouldn't be possible since the new view would be inserted right away).\n *\n * ```css\n * .view-animation.ng-enter, .view-animation.ng-leave {\n * transition:0.5s linear all;\n * position:fixed;\n * left:0;\n * top:0;\n * width:100%;\n * }\n * .view-animation.ng-enter {\n * transform:translateX(100%);\n * }\n * .view-animation.ng-leave,\n * .view-animation.ng-enter.ng-enter-active {\n * transform:translateX(0%);\n * }\n * .view-animation.ng-leave.ng-leave-active {\n * transform:translateX(-100%);\n * }\n * ```\n *\n * Now we can jump back to the anchor animation. When the animation happens, there are two stages that occur:\n * an `out` and an `in` stage. The `out` stage happens first and that is when the element is animated away\n * from its origin. Once that animation is over then the `in` stage occurs which animates the\n * element to its destination. The reason why there are two animations is to give enough time\n * for the enter animation on the new element to be ready.\n *\n * The example above sets up a transition for both the in and out phases, but we can also target the out or\n * in phases directly via `ng-anchor-out` and `ng-anchor-in`.\n *\n * ```css\n * .banner.ng-anchor-out {\n * transition: 0.5s linear all;\n *\n * /* the scale will be applied during the out animation,\n * but will be animated away when the in animation runs */\n * transform: scale(1.2);\n * }\n *\n * .banner.ng-anchor-in {\n * transition: 1s linear all;\n * }\n * ```\n *\n *\n *\n *\n * ### Anchoring Demo\n *\n \n \n Home\n
\n
\n
\n
\n
\n \n angular.module('anchoringExample', ['ngAnimate', 'ngRoute'])\n .config(['$routeProvider', function($routeProvider) {\n $routeProvider.when('/', {\n templateUrl: 'home.html',\n controller: 'HomeController as home'\n });\n $routeProvider.when('/profile/:id', {\n templateUrl: 'profile.html',\n controller: 'ProfileController as profile'\n });\n }])\n .run(['$rootScope', function($rootScope) {\n $rootScope.records = [\n { id:1, title: \"Miss Beulah Roob\" },\n { id:2, title: \"Trent Morissette\" },\n { id:3, title: \"Miss Ava Pouros\" },\n { id:4, title: \"Rod Pouros\" },\n { id:5, title: \"Abdul Rice\" },\n { id:6, title: \"Laurie Rutherford Sr.\" },\n { id:7, title: \"Nakia McLaughlin\" },\n { id:8, title: \"Jordon Blanda DVM\" },\n { id:9, title: \"Rhoda Hand\" },\n { id:10, title: \"Alexandrea Sauer\" }\n ];\n }])\n .controller('HomeController', [function() {\n //empty\n }])\n .controller('ProfileController', ['$rootScope', '$routeParams', function($rootScope, $routeParams) {\n var index = parseInt($routeParams.id, 10);\n var record = $rootScope.records[index - 1];\n\n this.title = record.title;\n this.id = record.id;\n }]);\n \n \n

Welcome to the home page

\n

Please click on an element

\n \n {{ record.title }}\n \n
\n \n
\n {{ profile.title }}\n
\n
\n \n .record {\n display:block;\n font-size:20px;\n }\n .profile {\n background:black;\n color:white;\n font-size:100px;\n }\n .view-container {\n position:relative;\n }\n .view-container > .view.ng-animate {\n position:absolute;\n top:0;\n left:0;\n width:100%;\n min-height:500px;\n }\n .view.ng-enter, .view.ng-leave,\n .record.ng-anchor {\n transition:0.5s linear all;\n }\n .view.ng-enter {\n transform:translateX(100%);\n }\n .view.ng-enter.ng-enter-active, .view.ng-leave {\n transform:translateX(0%);\n }\n .view.ng-leave.ng-leave-active {\n transform:translateX(-100%);\n }\n .record.ng-anchor-out {\n background:red;\n }\n \n
\n *\n * ### How is the element transported?\n *\n * When an anchor animation occurs, ngAnimate will clone the starting element and position it exactly where the starting\n * element is located on screen via absolute positioning. The cloned element will be placed inside of the root element\n * of the application (where ng-app was defined) and all of the CSS classes of the starting element will be applied. The\n * element will then animate into the `out` and `in` animations and will eventually reach the coordinates and match\n * the dimensions of the destination element. During the entire animation a CSS class of `.ng-animate-shim` will be applied\n * to both the starting and destination elements in order to hide them from being visible (the CSS styling for the class\n * is: `visibility:hidden`). Once the anchor reaches its destination then it will be removed and the destination element\n * will become visible since the shim class will be removed.\n *\n * ### How is the morphing handled?\n *\n * CSS Anchoring relies on transitions and keyframes and the internal code is intelligent enough to figure out\n * what CSS classes differ between the starting element and the destination element. These different CSS classes\n * will be added/removed on the anchor element and a transition will be applied (the transition that is provided\n * in the anchor class). Long story short, ngAnimate will figure out what classes to add and remove which will\n * make the transition of the element as smooth and automatic as possible. Be sure to use simple CSS classes that\n * do not rely on DOM nesting structure so that the anchor element appears the same as the starting element (since\n * the cloned element is placed inside of root element which is likely close to the body element).\n *\n * Note that if the root element is on the `` element then the cloned node will be placed inside of body.\n *\n *\n * ## Using $animate in your directive code\n *\n * So far we've explored how to feed in animations into an Angular application, but how do we trigger animations within our own directives in our application?\n * By injecting the `$animate` service into our directive code, we can trigger structural and class-based hooks which can then be consumed by animations. Let's\n * imagine we have a greeting box that shows and hides itself when the data changes\n *\n * ```html\n * Hi there\n * ```\n *\n * ```js\n * ngModule.directive('greetingBox', ['$animate', function($animate) {\n * return function(scope, element, attrs) {\n * attrs.$observe('active', function(value) {\n * value ? $animate.addClass(element, 'on') : $animate.removeClass(element, 'on');\n * });\n * });\n * }]);\n * ```\n *\n * Now the `on` CSS class is added and removed on the greeting box component. Now if we add a CSS class on top of the greeting box element\n * in our HTML code then we can trigger a CSS or JS animation to happen.\n *\n * ```css\n * /* normally we would create a CSS class to reference on the element */\n * greeting-box.on { transition:0.5s linear all; background:green; color:white; }\n * ```\n *\n * The `$animate` service contains a variety of other methods like `enter`, `leave`, `animate` and `setClass`. To learn more about what's\n * possible be sure to visit the {@link ng.$animate $animate service API page}.\n *\n *\n * ## Callbacks and Promises\n *\n * When `$animate` is called it returns a promise that can be used to capture when the animation has ended. Therefore if we were to trigger\n * an animation (within our directive code) then we can continue performing directive and scope related activities after the animation has\n * ended by chaining onto the returned promise that animation method returns.\n *\n * ```js\n * // somewhere within the depths of the directive\n * $animate.enter(element, parent).then(function() {\n * //the animation has completed\n * });\n * ```\n *\n * (Note that earlier versions of Angular prior to v1.4 required the promise code to be wrapped using `$scope.$apply(...)`. This is not the case\n * anymore.)\n *\n * In addition to the animation promise, we can also make use of animation-related callbacks within our directives and controller code by registering\n * an event listener using the `$animate` service. Let's say for example that an animation was triggered on our view\n * routing controller to hook into that:\n *\n * ```js\n * ngModule.controller('HomePageController', ['$animate', function($animate) {\n * $animate.on('enter', ngViewElement, function(element) {\n * // the animation for this route has completed\n * }]);\n * }])\n * ```\n *\n * (Note that you will need to trigger a digest within the callback to get angular to notice any scope-related changes.)\n */\n\nvar copy;\nvar extend;\nvar forEach;\nvar isArray;\nvar isDefined;\nvar isElement;\nvar isFunction;\nvar isObject;\nvar isString;\nvar isUndefined;\nvar jqLite;\nvar noop;\n\n/**\n * @ngdoc service\n * @name $animate\n * @kind object\n *\n * @description\n * The ngAnimate `$animate` service documentation is the same for the core `$animate` service.\n *\n * Click here {@link ng.$animate to learn more about animations with `$animate`}.\n */\nangular.module('ngAnimate', [], function initAngularHelpers() {\n // Access helpers from angular core.\n // Do it inside a `config` block to ensure `window.angular` is available.\n noop = angular.noop;\n copy = angular.copy;\n extend = angular.extend;\n jqLite = angular.element;\n forEach = angular.forEach;\n isArray = angular.isArray;\n isString = angular.isString;\n isObject = angular.isObject;\n isUndefined = angular.isUndefined;\n isDefined = angular.isDefined;\n isFunction = angular.isFunction;\n isElement = angular.isElement;\n})\n .directive('ngAnimateSwap', ngAnimateSwapDirective)\n\n .directive('ngAnimateChildren', $$AnimateChildrenDirective)\n .factory('$$rAFScheduler', $$rAFSchedulerFactory)\n\n .provider('$$animateQueue', $$AnimateQueueProvider)\n .provider('$$animation', $$AnimationProvider)\n\n .provider('$animateCss', $AnimateCssProvider)\n .provider('$$animateCssDriver', $$AnimateCssDriverProvider)\n\n .provider('$$animateJs', $$AnimateJsProvider)\n .provider('$$animateJsDriver', $$AnimateJsDriverProvider);\n\n\n})(window, window.angular);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/angular-animate/angular-animate.js\n ** module id = 9\n ** module chunks = 0\n **/","require('./angular-cookies');\nmodule.exports = 'ngCookies';\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/angular-cookies/index.js\n ** module id = 10\n ** module chunks = 0\n **/","/**\n * @license AngularJS v1.5.8\n * (c) 2010-2016 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window, angular) {'use strict';\n\n/**\n * @ngdoc module\n * @name ngCookies\n * @description\n *\n * # ngCookies\n *\n * The `ngCookies` module provides a convenient wrapper for reading and writing browser cookies.\n *\n *\n *
\n *\n * See {@link ngCookies.$cookies `$cookies`} for usage.\n */\n\n\nangular.module('ngCookies', ['ng']).\n /**\n * @ngdoc provider\n * @name $cookiesProvider\n * @description\n * Use `$cookiesProvider` to change the default behavior of the {@link ngCookies.$cookies $cookies} service.\n * */\n provider('$cookies', [function $CookiesProvider() {\n /**\n * @ngdoc property\n * @name $cookiesProvider#defaults\n * @description\n *\n * Object containing default options to pass when setting cookies.\n *\n * The object may have following properties:\n *\n * - **path** - `{string}` - The cookie will be available only for this path and its\n * sub-paths. By default, this is the URL that appears in your `` tag.\n * - **domain** - `{string}` - The cookie will be available only for this domain and\n * its sub-domains. For security reasons the user agent will not accept the cookie\n * if the current domain is not a sub-domain of this domain or equal to it.\n * - **expires** - `{string|Date}` - String of the form \"Wdy, DD Mon YYYY HH:MM:SS GMT\"\n * or a Date object indicating the exact date/time this cookie will expire.\n * - **secure** - `{boolean}` - If `true`, then the cookie will only be available through a\n * secured connection.\n *\n * Note: By default, the address that appears in your `` tag will be used as the path.\n * This is important so that cookies will be visible for all routes when html5mode is enabled.\n *\n **/\n var defaults = this.defaults = {};\n\n function calcOptions(options) {\n return options ? angular.extend({}, defaults, options) : defaults;\n }\n\n /**\n * @ngdoc service\n * @name $cookies\n *\n * @description\n * Provides read/write access to browser's cookies.\n *\n *
\n * Up until Angular 1.3, `$cookies` exposed properties that represented the\n * current browser cookie values. In version 1.4, this behavior has changed, and\n * `$cookies` now provides a standard api of getters, setters etc.\n *
\n *\n * Requires the {@link ngCookies `ngCookies`} module to be installed.\n *\n * @example\n *\n * ```js\n * angular.module('cookiesExample', ['ngCookies'])\n * .controller('ExampleController', ['$cookies', function($cookies) {\n * // Retrieving a cookie\n * var favoriteCookie = $cookies.get('myFavorite');\n * // Setting a cookie\n * $cookies.put('myFavorite', 'oatmeal');\n * }]);\n * ```\n */\n this.$get = ['$$cookieReader', '$$cookieWriter', function($$cookieReader, $$cookieWriter) {\n return {\n /**\n * @ngdoc method\n * @name $cookies#get\n *\n * @description\n * Returns the value of given cookie key\n *\n * @param {string} key Id to use for lookup.\n * @returns {string} Raw cookie value.\n */\n get: function(key) {\n return $$cookieReader()[key];\n },\n\n /**\n * @ngdoc method\n * @name $cookies#getObject\n *\n * @description\n * Returns the deserialized value of given cookie key\n *\n * @param {string} key Id to use for lookup.\n * @returns {Object} Deserialized cookie value.\n */\n getObject: function(key) {\n var value = this.get(key);\n return value ? angular.fromJson(value) : value;\n },\n\n /**\n * @ngdoc method\n * @name $cookies#getAll\n *\n * @description\n * Returns a key value object with all the cookies\n *\n * @returns {Object} All cookies\n */\n getAll: function() {\n return $$cookieReader();\n },\n\n /**\n * @ngdoc method\n * @name $cookies#put\n *\n * @description\n * Sets a value for given cookie key\n *\n * @param {string} key Id for the `value`.\n * @param {string} value Raw value to be stored.\n * @param {Object=} options Options object.\n * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}\n */\n put: function(key, value, options) {\n $$cookieWriter(key, value, calcOptions(options));\n },\n\n /**\n * @ngdoc method\n * @name $cookies#putObject\n *\n * @description\n * Serializes and sets a value for given cookie key\n *\n * @param {string} key Id for the `value`.\n * @param {Object} value Value to be stored.\n * @param {Object=} options Options object.\n * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}\n */\n putObject: function(key, value, options) {\n this.put(key, angular.toJson(value), options);\n },\n\n /**\n * @ngdoc method\n * @name $cookies#remove\n *\n * @description\n * Remove given cookie\n *\n * @param {string} key Id of the key-value pair to delete.\n * @param {Object=} options Options object.\n * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}\n */\n remove: function(key, options) {\n $$cookieWriter(key, undefined, calcOptions(options));\n }\n };\n }];\n }]);\n\nangular.module('ngCookies').\n/**\n * @ngdoc service\n * @name $cookieStore\n * @deprecated\n * @requires $cookies\n *\n * @description\n * Provides a key-value (string-object) storage, that is backed by session cookies.\n * Objects put or retrieved from this storage are automatically serialized or\n * deserialized by angular's toJson/fromJson.\n *\n * Requires the {@link ngCookies `ngCookies`} module to be installed.\n *\n *
\n * **Note:** The $cookieStore service is **deprecated**.\n * Please use the {@link ngCookies.$cookies `$cookies`} service instead.\n *
\n *\n * @example\n *\n * ```js\n * angular.module('cookieStoreExample', ['ngCookies'])\n * .controller('ExampleController', ['$cookieStore', function($cookieStore) {\n * // Put cookie\n * $cookieStore.put('myFavorite','oatmeal');\n * // Get cookie\n * var favoriteCookie = $cookieStore.get('myFavorite');\n * // Removing a cookie\n * $cookieStore.remove('myFavorite');\n * }]);\n * ```\n */\n factory('$cookieStore', ['$cookies', function($cookies) {\n\n return {\n /**\n * @ngdoc method\n * @name $cookieStore#get\n *\n * @description\n * Returns the value of given cookie key\n *\n * @param {string} key Id to use for lookup.\n * @returns {Object} Deserialized cookie value, undefined if the cookie does not exist.\n */\n get: function(key) {\n return $cookies.getObject(key);\n },\n\n /**\n * @ngdoc method\n * @name $cookieStore#put\n *\n * @description\n * Sets a value for given cookie key\n *\n * @param {string} key Id for the `value`.\n * @param {Object} value Value to be stored.\n */\n put: function(key, value) {\n $cookies.putObject(key, value);\n },\n\n /**\n * @ngdoc method\n * @name $cookieStore#remove\n *\n * @description\n * Remove given cookie\n *\n * @param {string} key Id of the key-value pair to delete.\n */\n remove: function(key) {\n $cookies.remove(key);\n }\n };\n\n }]);\n\n/**\n * @name $$cookieWriter\n * @requires $document\n *\n * @description\n * This is a private service for writing cookies\n *\n * @param {string} name Cookie name\n * @param {string=} value Cookie value (if undefined, cookie will be deleted)\n * @param {Object=} options Object with options that need to be stored for the cookie.\n */\nfunction $$CookieWriter($document, $log, $browser) {\n var cookiePath = $browser.baseHref();\n var rawDocument = $document[0];\n\n function buildCookieString(name, value, options) {\n var path, expires;\n options = options || {};\n expires = options.expires;\n path = angular.isDefined(options.path) ? options.path : cookiePath;\n if (angular.isUndefined(value)) {\n expires = 'Thu, 01 Jan 1970 00:00:00 GMT';\n value = '';\n }\n if (angular.isString(expires)) {\n expires = new Date(expires);\n }\n\n var str = encodeURIComponent(name) + '=' + encodeURIComponent(value);\n str += path ? ';path=' + path : '';\n str += options.domain ? ';domain=' + options.domain : '';\n str += expires ? ';expires=' + expires.toUTCString() : '';\n str += options.secure ? ';secure' : '';\n\n // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:\n // - 300 cookies\n // - 20 cookies per unique domain\n // - 4096 bytes per cookie\n var cookieLength = str.length + 1;\n if (cookieLength > 4096) {\n $log.warn(\"Cookie '\" + name +\n \"' possibly not set or overflowed because it was too large (\" +\n cookieLength + \" > 4096 bytes)!\");\n }\n\n return str;\n }\n\n return function(name, value, options) {\n rawDocument.cookie = buildCookieString(name, value, options);\n };\n}\n\n$$CookieWriter.$inject = ['$document', '$log', '$browser'];\n\nangular.module('ngCookies').provider('$$cookieWriter', function $$CookieWriterProvider() {\n this.$get = $$CookieWriter;\n});\n\n\n})(window, window.angular);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/angular-cookies/angular-cookies.js\n ** module id = 11\n ** module chunks = 0\n **/","require('./dist/ui-bootstrap-tpls');\n\nmodule.exports = 'ui.bootstrap';\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/angular-ui-bootstrap/index.js\n ** module id = 12\n ** module chunks = 0\n **/","/*\n * angular-ui-bootstrap\n * http://angular-ui.github.io/bootstrap/\n\n * Version: 1.3.3 - 2016-05-22\n * License: MIT\n */angular.module(\"ui.bootstrap\", [\"ui.bootstrap.tpls\", \"ui.bootstrap.collapse\",\"ui.bootstrap.accordion\",\"ui.bootstrap.alert\",\"ui.bootstrap.buttons\",\"ui.bootstrap.carousel\",\"ui.bootstrap.dateparser\",\"ui.bootstrap.isClass\",\"ui.bootstrap.datepicker\",\"ui.bootstrap.position\",\"ui.bootstrap.datepickerPopup\",\"ui.bootstrap.debounce\",\"ui.bootstrap.dropdown\",\"ui.bootstrap.stackedMap\",\"ui.bootstrap.modal\",\"ui.bootstrap.paging\",\"ui.bootstrap.pager\",\"ui.bootstrap.pagination\",\"ui.bootstrap.tooltip\",\"ui.bootstrap.popover\",\"ui.bootstrap.progressbar\",\"ui.bootstrap.rating\",\"ui.bootstrap.tabs\",\"ui.bootstrap.timepicker\",\"ui.bootstrap.typeahead\"]);\nangular.module(\"ui.bootstrap.tpls\", [\"uib/template/accordion/accordion-group.html\",\"uib/template/accordion/accordion.html\",\"uib/template/alert/alert.html\",\"uib/template/carousel/carousel.html\",\"uib/template/carousel/slide.html\",\"uib/template/datepicker/datepicker.html\",\"uib/template/datepicker/day.html\",\"uib/template/datepicker/month.html\",\"uib/template/datepicker/year.html\",\"uib/template/datepickerPopup/popup.html\",\"uib/template/modal/backdrop.html\",\"uib/template/modal/window.html\",\"uib/template/pager/pager.html\",\"uib/template/pagination/pagination.html\",\"uib/template/tooltip/tooltip-html-popup.html\",\"uib/template/tooltip/tooltip-popup.html\",\"uib/template/tooltip/tooltip-template-popup.html\",\"uib/template/popover/popover-html.html\",\"uib/template/popover/popover-template.html\",\"uib/template/popover/popover.html\",\"uib/template/progressbar/bar.html\",\"uib/template/progressbar/progress.html\",\"uib/template/progressbar/progressbar.html\",\"uib/template/rating/rating.html\",\"uib/template/tabs/tab.html\",\"uib/template/tabs/tabset.html\",\"uib/template/timepicker/timepicker.html\",\"uib/template/typeahead/typeahead-match.html\",\"uib/template/typeahead/typeahead-popup.html\"]);\nangular.module('ui.bootstrap.collapse', [])\n\n .directive('uibCollapse', ['$animate', '$q', '$parse', '$injector', function($animate, $q, $parse, $injector) {\n var $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null;\n return {\n link: function(scope, element, attrs) {\n var expandingExpr = $parse(attrs.expanding),\n expandedExpr = $parse(attrs.expanded),\n collapsingExpr = $parse(attrs.collapsing),\n collapsedExpr = $parse(attrs.collapsed);\n\n if (!scope.$eval(attrs.uibCollapse)) {\n element.addClass('in')\n .addClass('collapse')\n .attr('aria-expanded', true)\n .attr('aria-hidden', false)\n .css({height: 'auto'});\n }\n\n function expand() {\n if (element.hasClass('collapse') && element.hasClass('in')) {\n return;\n }\n\n $q.resolve(expandingExpr(scope))\n .then(function() {\n element.removeClass('collapse')\n .addClass('collapsing')\n .attr('aria-expanded', true)\n .attr('aria-hidden', false);\n\n if ($animateCss) {\n $animateCss(element, {\n addClass: 'in',\n easing: 'ease',\n to: { height: element[0].scrollHeight + 'px' }\n }).start()['finally'](expandDone);\n } else {\n $animate.addClass(element, 'in', {\n to: { height: element[0].scrollHeight + 'px' }\n }).then(expandDone);\n }\n });\n }\n\n function expandDone() {\n element.removeClass('collapsing')\n .addClass('collapse')\n .css({height: 'auto'});\n expandedExpr(scope);\n }\n\n function collapse() {\n if (!element.hasClass('collapse') && !element.hasClass('in')) {\n return collapseDone();\n }\n\n $q.resolve(collapsingExpr(scope))\n .then(function() {\n element\n // IMPORTANT: The height must be set before adding \"collapsing\" class.\n // Otherwise, the browser attempts to animate from height 0 (in\n // collapsing class) to the given height here.\n .css({height: element[0].scrollHeight + 'px'})\n // initially all panel collapse have the collapse class, this removal\n // prevents the animation from jumping to collapsed state\n .removeClass('collapse')\n .addClass('collapsing')\n .attr('aria-expanded', false)\n .attr('aria-hidden', true);\n\n if ($animateCss) {\n $animateCss(element, {\n removeClass: 'in',\n to: {height: '0'}\n }).start()['finally'](collapseDone);\n } else {\n $animate.removeClass(element, 'in', {\n to: {height: '0'}\n }).then(collapseDone);\n }\n });\n }\n\n function collapseDone() {\n element.css({height: '0'}); // Required so that collapse works when animation is disabled\n element.removeClass('collapsing')\n .addClass('collapse');\n collapsedExpr(scope);\n }\n\n scope.$watch(attrs.uibCollapse, function(shouldCollapse) {\n if (shouldCollapse) {\n collapse();\n } else {\n expand();\n }\n });\n }\n };\n }]);\n\nangular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse'])\n\n.constant('uibAccordionConfig', {\n closeOthers: true\n})\n\n.controller('UibAccordionController', ['$scope', '$attrs', 'uibAccordionConfig', function($scope, $attrs, accordionConfig) {\n // This array keeps track of the accordion groups\n this.groups = [];\n\n // Ensure that all the groups in this accordion are closed, unless close-others explicitly says not to\n this.closeOthers = function(openGroup) {\n var closeOthers = angular.isDefined($attrs.closeOthers) ?\n $scope.$eval($attrs.closeOthers) : accordionConfig.closeOthers;\n if (closeOthers) {\n angular.forEach(this.groups, function(group) {\n if (group !== openGroup) {\n group.isOpen = false;\n }\n });\n }\n };\n\n // This is called from the accordion-group directive to add itself to the accordion\n this.addGroup = function(groupScope) {\n var that = this;\n this.groups.push(groupScope);\n\n groupScope.$on('$destroy', function(event) {\n that.removeGroup(groupScope);\n });\n };\n\n // This is called from the accordion-group directive when to remove itself\n this.removeGroup = function(group) {\n var index = this.groups.indexOf(group);\n if (index !== -1) {\n this.groups.splice(index, 1);\n }\n };\n}])\n\n// The accordion directive simply sets up the directive controller\n// and adds an accordion CSS class to itself element.\n.directive('uibAccordion', function() {\n return {\n controller: 'UibAccordionController',\n controllerAs: 'accordion',\n transclude: true,\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/accordion/accordion.html';\n }\n };\n})\n\n// The accordion-group directive indicates a block of html that will expand and collapse in an accordion\n.directive('uibAccordionGroup', function() {\n return {\n require: '^uibAccordion', // We need this directive to be inside an accordion\n transclude: true, // It transcludes the contents of the directive into the template\n replace: true, // The element containing the directive will be replaced with the template\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/accordion/accordion-group.html';\n },\n scope: {\n heading: '@', // Interpolate the heading attribute onto this scope\n panelClass: '@?', // Ditto with panelClass\n isOpen: '=?',\n isDisabled: '=?'\n },\n controller: function() {\n this.setHeading = function(element) {\n this.heading = element;\n };\n },\n link: function(scope, element, attrs, accordionCtrl) {\n accordionCtrl.addGroup(scope);\n\n scope.openClass = attrs.openClass || 'panel-open';\n scope.panelClass = attrs.panelClass || 'panel-default';\n scope.$watch('isOpen', function(value) {\n element.toggleClass(scope.openClass, !!value);\n if (value) {\n accordionCtrl.closeOthers(scope);\n }\n });\n\n scope.toggleOpen = function($event) {\n if (!scope.isDisabled) {\n if (!$event || $event.which === 32) {\n scope.isOpen = !scope.isOpen;\n }\n }\n };\n\n var id = 'accordiongroup-' + scope.$id + '-' + Math.floor(Math.random() * 10000);\n scope.headingId = id + '-tab';\n scope.panelId = id + '-panel';\n }\n };\n})\n\n// Use accordion-heading below an accordion-group to provide a heading containing HTML\n.directive('uibAccordionHeading', function() {\n return {\n transclude: true, // Grab the contents to be used as the heading\n template: '', // In effect remove this element!\n replace: true,\n require: '^uibAccordionGroup',\n link: function(scope, element, attrs, accordionGroupCtrl, transclude) {\n // Pass the heading to the accordion-group controller\n // so that it can be transcluded into the right place in the template\n // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat]\n accordionGroupCtrl.setHeading(transclude(scope, angular.noop));\n }\n };\n})\n\n// Use in the accordion-group template to indicate where you want the heading to be transcluded\n// You must provide the property on the accordion-group controller that will hold the transcluded element\n.directive('uibAccordionTransclude', function() {\n return {\n require: '^uibAccordionGroup',\n link: function(scope, element, attrs, controller) {\n scope.$watch(function() { return controller[attrs.uibAccordionTransclude]; }, function(heading) {\n if (heading) {\n var elem = angular.element(element[0].querySelector(getHeaderSelectors()));\n elem.html('');\n elem.append(heading);\n }\n });\n }\n };\n\n function getHeaderSelectors() {\n return 'uib-accordion-header,' +\n 'data-uib-accordion-header,' +\n 'x-uib-accordion-header,' +\n 'uib\\\\:accordion-header,' +\n '[uib-accordion-header],' +\n '[data-uib-accordion-header],' +\n '[x-uib-accordion-header]';\n }\n});\n\nangular.module('ui.bootstrap.alert', [])\n\n.controller('UibAlertController', ['$scope', '$attrs', '$interpolate', '$timeout', function($scope, $attrs, $interpolate, $timeout) {\n $scope.closeable = !!$attrs.close;\n\n var dismissOnTimeout = angular.isDefined($attrs.dismissOnTimeout) ?\n $interpolate($attrs.dismissOnTimeout)($scope.$parent) : null;\n\n if (dismissOnTimeout) {\n $timeout(function() {\n $scope.close();\n }, parseInt(dismissOnTimeout, 10));\n }\n}])\n\n.directive('uibAlert', function() {\n return {\n controller: 'UibAlertController',\n controllerAs: 'alert',\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/alert/alert.html';\n },\n transclude: true,\n replace: true,\n scope: {\n type: '@',\n close: '&'\n }\n };\n});\n\nangular.module('ui.bootstrap.buttons', [])\n\n.constant('uibButtonConfig', {\n activeClass: 'active',\n toggleEvent: 'click'\n})\n\n.controller('UibButtonsController', ['uibButtonConfig', function(buttonConfig) {\n this.activeClass = buttonConfig.activeClass || 'active';\n this.toggleEvent = buttonConfig.toggleEvent || 'click';\n}])\n\n.directive('uibBtnRadio', ['$parse', function($parse) {\n return {\n require: ['uibBtnRadio', 'ngModel'],\n controller: 'UibButtonsController',\n controllerAs: 'buttons',\n link: function(scope, element, attrs, ctrls) {\n var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n var uncheckableExpr = $parse(attrs.uibUncheckable);\n\n element.find('input').css({display: 'none'});\n\n //model -> UI\n ngModelCtrl.$render = function() {\n element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.uibBtnRadio)));\n };\n\n //ui->model\n element.on(buttonsCtrl.toggleEvent, function() {\n if (attrs.disabled) {\n return;\n }\n\n var isActive = element.hasClass(buttonsCtrl.activeClass);\n\n if (!isActive || angular.isDefined(attrs.uncheckable)) {\n scope.$apply(function() {\n ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.uibBtnRadio));\n ngModelCtrl.$render();\n });\n }\n });\n\n if (attrs.uibUncheckable) {\n scope.$watch(uncheckableExpr, function(uncheckable) {\n attrs.$set('uncheckable', uncheckable ? '' : undefined);\n });\n }\n }\n };\n}])\n\n.directive('uibBtnCheckbox', function() {\n return {\n require: ['uibBtnCheckbox', 'ngModel'],\n controller: 'UibButtonsController',\n controllerAs: 'button',\n link: function(scope, element, attrs, ctrls) {\n var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n\n element.find('input').css({display: 'none'});\n\n function getTrueValue() {\n return getCheckboxValue(attrs.btnCheckboxTrue, true);\n }\n\n function getFalseValue() {\n return getCheckboxValue(attrs.btnCheckboxFalse, false);\n }\n\n function getCheckboxValue(attribute, defaultValue) {\n return angular.isDefined(attribute) ? scope.$eval(attribute) : defaultValue;\n }\n\n //model -> UI\n ngModelCtrl.$render = function() {\n element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue()));\n };\n\n //ui->model\n element.on(buttonsCtrl.toggleEvent, function() {\n if (attrs.disabled) {\n return;\n }\n\n scope.$apply(function() {\n ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue());\n ngModelCtrl.$render();\n });\n });\n }\n };\n});\n\nangular.module('ui.bootstrap.carousel', [])\n\n.controller('UibCarouselController', ['$scope', '$element', '$interval', '$timeout', '$animate', function($scope, $element, $interval, $timeout, $animate) {\n var self = this,\n slides = self.slides = $scope.slides = [],\n SLIDE_DIRECTION = 'uib-slideDirection',\n currentIndex = $scope.active,\n currentInterval, isPlaying, bufferedTransitions = [];\n\n var destroyed = false;\n\n self.addSlide = function(slide, element) {\n slides.push({\n slide: slide,\n element: element\n });\n slides.sort(function(a, b) {\n return +a.slide.index - +b.slide.index;\n });\n //if this is the first slide or the slide is set to active, select it\n if (slide.index === $scope.active || slides.length === 1 && !angular.isNumber($scope.active)) {\n if ($scope.$currentTransition) {\n $scope.$currentTransition = null;\n }\n\n currentIndex = slide.index;\n $scope.active = slide.index;\n setActive(currentIndex);\n self.select(slides[findSlideIndex(slide)]);\n if (slides.length === 1) {\n $scope.play();\n }\n }\n };\n\n self.getCurrentIndex = function() {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i].slide.index === currentIndex) {\n return i;\n }\n }\n };\n\n self.next = $scope.next = function() {\n var newIndex = (self.getCurrentIndex() + 1) % slides.length;\n\n if (newIndex === 0 && $scope.noWrap()) {\n $scope.pause();\n return;\n }\n\n return self.select(slides[newIndex], 'next');\n };\n\n self.prev = $scope.prev = function() {\n var newIndex = self.getCurrentIndex() - 1 < 0 ? slides.length - 1 : self.getCurrentIndex() - 1;\n\n if ($scope.noWrap() && newIndex === slides.length - 1) {\n $scope.pause();\n return;\n }\n\n return self.select(slides[newIndex], 'prev');\n };\n\n self.removeSlide = function(slide) {\n var index = findSlideIndex(slide);\n\n var bufferedIndex = bufferedTransitions.indexOf(slides[index]);\n if (bufferedIndex !== -1) {\n bufferedTransitions.splice(bufferedIndex, 1);\n }\n\n //get the index of the slide inside the carousel\n slides.splice(index, 1);\n if (slides.length > 0 && currentIndex === index) {\n if (index >= slides.length) {\n currentIndex = slides.length - 1;\n $scope.active = currentIndex;\n setActive(currentIndex);\n self.select(slides[slides.length - 1]);\n } else {\n currentIndex = index;\n $scope.active = currentIndex;\n setActive(currentIndex);\n self.select(slides[index]);\n }\n } else if (currentIndex > index) {\n currentIndex--;\n $scope.active = currentIndex;\n }\n\n //clean the active value when no more slide\n if (slides.length === 0) {\n currentIndex = null;\n $scope.active = null;\n clearBufferedTransitions();\n }\n };\n\n /* direction: \"prev\" or \"next\" */\n self.select = $scope.select = function(nextSlide, direction) {\n var nextIndex = findSlideIndex(nextSlide.slide);\n //Decide direction if it's not given\n if (direction === undefined) {\n direction = nextIndex > self.getCurrentIndex() ? 'next' : 'prev';\n }\n //Prevent this user-triggered transition from occurring if there is already one in progress\n if (nextSlide.slide.index !== currentIndex &&\n !$scope.$currentTransition) {\n goNext(nextSlide.slide, nextIndex, direction);\n } else if (nextSlide && nextSlide.slide.index !== currentIndex && $scope.$currentTransition) {\n bufferedTransitions.push(slides[nextIndex]);\n }\n };\n\n /* Allow outside people to call indexOf on slides array */\n $scope.indexOfSlide = function(slide) {\n return +slide.slide.index;\n };\n\n $scope.isActive = function(slide) {\n return $scope.active === slide.slide.index;\n };\n\n $scope.isPrevDisabled = function() {\n return $scope.active === 0 && $scope.noWrap();\n };\n\n $scope.isNextDisabled = function() {\n return $scope.active === slides.length - 1 && $scope.noWrap();\n };\n\n $scope.pause = function() {\n if (!$scope.noPause) {\n isPlaying = false;\n resetTimer();\n }\n };\n\n $scope.play = function() {\n if (!isPlaying) {\n isPlaying = true;\n restartTimer();\n }\n };\n\n $scope.$on('$destroy', function() {\n destroyed = true;\n resetTimer();\n });\n\n $scope.$watch('noTransition', function(noTransition) {\n $animate.enabled($element, !noTransition);\n });\n\n $scope.$watch('interval', restartTimer);\n\n $scope.$watchCollection('slides', resetTransition);\n\n $scope.$watch('active', function(index) {\n if (angular.isNumber(index) && currentIndex !== index) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i].slide.index === index) {\n index = i;\n break;\n }\n }\n\n var slide = slides[index];\n if (slide) {\n setActive(index);\n self.select(slides[index]);\n currentIndex = index;\n }\n }\n });\n\n function clearBufferedTransitions() {\n while (bufferedTransitions.length) {\n bufferedTransitions.shift();\n }\n }\n\n function getSlideByIndex(index) {\n for (var i = 0, l = slides.length; i < l; ++i) {\n if (slides[i].index === index) {\n return slides[i];\n }\n }\n }\n\n function setActive(index) {\n for (var i = 0; i < slides.length; i++) {\n slides[i].slide.active = i === index;\n }\n }\n\n function goNext(slide, index, direction) {\n if (destroyed) {\n return;\n }\n\n angular.extend(slide, {direction: direction});\n angular.extend(slides[currentIndex].slide || {}, {direction: direction});\n if ($animate.enabled($element) && !$scope.$currentTransition &&\n slides[index].element && self.slides.length > 1) {\n slides[index].element.data(SLIDE_DIRECTION, slide.direction);\n var currentIdx = self.getCurrentIndex();\n\n if (angular.isNumber(currentIdx) && slides[currentIdx].element) {\n slides[currentIdx].element.data(SLIDE_DIRECTION, slide.direction);\n }\n\n $scope.$currentTransition = true;\n $animate.on('addClass', slides[index].element, function(element, phase) {\n if (phase === 'close') {\n $scope.$currentTransition = null;\n $animate.off('addClass', element);\n if (bufferedTransitions.length) {\n var nextSlide = bufferedTransitions.pop().slide;\n var nextIndex = nextSlide.index;\n var nextDirection = nextIndex > self.getCurrentIndex() ? 'next' : 'prev';\n clearBufferedTransitions();\n\n goNext(nextSlide, nextIndex, nextDirection);\n }\n }\n });\n }\n\n $scope.active = slide.index;\n currentIndex = slide.index;\n setActive(index);\n\n //every time you change slides, reset the timer\n restartTimer();\n }\n\n function findSlideIndex(slide) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i].slide === slide) {\n return i;\n }\n }\n }\n\n function resetTimer() {\n if (currentInterval) {\n $interval.cancel(currentInterval);\n currentInterval = null;\n }\n }\n\n function resetTransition(slides) {\n if (!slides.length) {\n $scope.$currentTransition = null;\n clearBufferedTransitions();\n }\n }\n\n function restartTimer() {\n resetTimer();\n var interval = +$scope.interval;\n if (!isNaN(interval) && interval > 0) {\n currentInterval = $interval(timerFn, interval);\n }\n }\n\n function timerFn() {\n var interval = +$scope.interval;\n if (isPlaying && !isNaN(interval) && interval > 0 && slides.length) {\n $scope.next();\n } else {\n $scope.pause();\n }\n }\n}])\n\n.directive('uibCarousel', function() {\n return {\n transclude: true,\n replace: true,\n controller: 'UibCarouselController',\n controllerAs: 'carousel',\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/carousel/carousel.html';\n },\n scope: {\n active: '=',\n interval: '=',\n noTransition: '=',\n noPause: '=',\n noWrap: '&'\n }\n };\n})\n\n.directive('uibSlide', function() {\n return {\n require: '^uibCarousel',\n transclude: true,\n replace: true,\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/carousel/slide.html';\n },\n scope: {\n actual: '=?',\n index: '=?'\n },\n link: function (scope, element, attrs, carouselCtrl) {\n carouselCtrl.addSlide(scope, element);\n //when the scope is destroyed then remove the slide from the current slides array\n scope.$on('$destroy', function() {\n carouselCtrl.removeSlide(scope);\n });\n }\n };\n})\n\n.animation('.item', ['$animateCss',\nfunction($animateCss) {\n var SLIDE_DIRECTION = 'uib-slideDirection';\n\n function removeClass(element, className, callback) {\n element.removeClass(className);\n if (callback) {\n callback();\n }\n }\n\n return {\n beforeAddClass: function(element, className, done) {\n if (className === 'active') {\n var stopped = false;\n var direction = element.data(SLIDE_DIRECTION);\n var directionClass = direction === 'next' ? 'left' : 'right';\n var removeClassFn = removeClass.bind(this, element,\n directionClass + ' ' + direction, done);\n element.addClass(direction);\n\n $animateCss(element, {addClass: directionClass})\n .start()\n .done(removeClassFn);\n\n return function() {\n stopped = true;\n };\n }\n done();\n },\n beforeRemoveClass: function (element, className, done) {\n if (className === 'active') {\n var stopped = false;\n var direction = element.data(SLIDE_DIRECTION);\n var directionClass = direction === 'next' ? 'left' : 'right';\n var removeClassFn = removeClass.bind(this, element, directionClass, done);\n\n $animateCss(element, {addClass: directionClass})\n .start()\n .done(removeClassFn);\n\n return function() {\n stopped = true;\n };\n }\n done();\n }\n };\n}]);\n\nangular.module('ui.bootstrap.dateparser', [])\n\n.service('uibDateParser', ['$log', '$locale', 'dateFilter', 'orderByFilter', function($log, $locale, dateFilter, orderByFilter) {\n // Pulled from https://github.com/mbostock/d3/blob/master/src/format/requote.js\n var SPECIAL_CHARACTERS_REGEXP = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\n var localeId;\n var formatCodeToRegex;\n\n this.init = function() {\n localeId = $locale.id;\n\n this.parsers = {};\n this.formatters = {};\n\n formatCodeToRegex = [\n {\n key: 'yyyy',\n regex: '\\\\d{4}',\n apply: function(value) { this.year = +value; },\n formatter: function(date) {\n var _date = new Date();\n _date.setFullYear(Math.abs(date.getFullYear()));\n return dateFilter(_date, 'yyyy');\n }\n },\n {\n key: 'yy',\n regex: '\\\\d{2}',\n apply: function(value) { value = +value; this.year = value < 69 ? value + 2000 : value + 1900; },\n formatter: function(date) {\n var _date = new Date();\n _date.setFullYear(Math.abs(date.getFullYear()));\n return dateFilter(_date, 'yy');\n }\n },\n {\n key: 'y',\n regex: '\\\\d{1,4}',\n apply: function(value) { this.year = +value; },\n formatter: function(date) {\n var _date = new Date();\n _date.setFullYear(Math.abs(date.getFullYear()));\n return dateFilter(_date, 'y');\n }\n },\n {\n key: 'M!',\n regex: '0?[1-9]|1[0-2]',\n apply: function(value) { this.month = value - 1; },\n formatter: function(date) {\n var value = date.getMonth();\n if (/^[0-9]$/.test(value)) {\n return dateFilter(date, 'MM');\n }\n\n return dateFilter(date, 'M');\n }\n },\n {\n key: 'MMMM',\n regex: $locale.DATETIME_FORMATS.MONTH.join('|'),\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.MONTH.indexOf(value); },\n formatter: function(date) { return dateFilter(date, 'MMMM'); }\n },\n {\n key: 'MMM',\n regex: $locale.DATETIME_FORMATS.SHORTMONTH.join('|'),\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.SHORTMONTH.indexOf(value); },\n formatter: function(date) { return dateFilter(date, 'MMM'); }\n },\n {\n key: 'MM',\n regex: '0[1-9]|1[0-2]',\n apply: function(value) { this.month = value - 1; },\n formatter: function(date) { return dateFilter(date, 'MM'); }\n },\n {\n key: 'M',\n regex: '[1-9]|1[0-2]',\n apply: function(value) { this.month = value - 1; },\n formatter: function(date) { return dateFilter(date, 'M'); }\n },\n {\n key: 'd!',\n regex: '[0-2]?[0-9]{1}|3[0-1]{1}',\n apply: function(value) { this.date = +value; },\n formatter: function(date) {\n var value = date.getDate();\n if (/^[1-9]$/.test(value)) {\n return dateFilter(date, 'dd');\n }\n\n return dateFilter(date, 'd');\n }\n },\n {\n key: 'dd',\n regex: '[0-2][0-9]{1}|3[0-1]{1}',\n apply: function(value) { this.date = +value; },\n formatter: function(date) { return dateFilter(date, 'dd'); }\n },\n {\n key: 'd',\n regex: '[1-2]?[0-9]{1}|3[0-1]{1}',\n apply: function(value) { this.date = +value; },\n formatter: function(date) { return dateFilter(date, 'd'); }\n },\n {\n key: 'EEEE',\n regex: $locale.DATETIME_FORMATS.DAY.join('|'),\n formatter: function(date) { return dateFilter(date, 'EEEE'); }\n },\n {\n key: 'EEE',\n regex: $locale.DATETIME_FORMATS.SHORTDAY.join('|'),\n formatter: function(date) { return dateFilter(date, 'EEE'); }\n },\n {\n key: 'HH',\n regex: '(?:0|1)[0-9]|2[0-3]',\n apply: function(value) { this.hours = +value; },\n formatter: function(date) { return dateFilter(date, 'HH'); }\n },\n {\n key: 'hh',\n regex: '0[0-9]|1[0-2]',\n apply: function(value) { this.hours = +value; },\n formatter: function(date) { return dateFilter(date, 'hh'); }\n },\n {\n key: 'H',\n regex: '1?[0-9]|2[0-3]',\n apply: function(value) { this.hours = +value; },\n formatter: function(date) { return dateFilter(date, 'H'); }\n },\n {\n key: 'h',\n regex: '[0-9]|1[0-2]',\n apply: function(value) { this.hours = +value; },\n formatter: function(date) { return dateFilter(date, 'h'); }\n },\n {\n key: 'mm',\n regex: '[0-5][0-9]',\n apply: function(value) { this.minutes = +value; },\n formatter: function(date) { return dateFilter(date, 'mm'); }\n },\n {\n key: 'm',\n regex: '[0-9]|[1-5][0-9]',\n apply: function(value) { this.minutes = +value; },\n formatter: function(date) { return dateFilter(date, 'm'); }\n },\n {\n key: 'sss',\n regex: '[0-9][0-9][0-9]',\n apply: function(value) { this.milliseconds = +value; },\n formatter: function(date) { return dateFilter(date, 'sss'); }\n },\n {\n key: 'ss',\n regex: '[0-5][0-9]',\n apply: function(value) { this.seconds = +value; },\n formatter: function(date) { return dateFilter(date, 'ss'); }\n },\n {\n key: 's',\n regex: '[0-9]|[1-5][0-9]',\n apply: function(value) { this.seconds = +value; },\n formatter: function(date) { return dateFilter(date, 's'); }\n },\n {\n key: 'a',\n regex: $locale.DATETIME_FORMATS.AMPMS.join('|'),\n apply: function(value) {\n if (this.hours === 12) {\n this.hours = 0;\n }\n\n if (value === 'PM') {\n this.hours += 12;\n }\n },\n formatter: function(date) { return dateFilter(date, 'a'); }\n },\n {\n key: 'Z',\n regex: '[+-]\\\\d{4}',\n apply: function(value) {\n var matches = value.match(/([+-])(\\d{2})(\\d{2})/),\n sign = matches[1],\n hours = matches[2],\n minutes = matches[3];\n this.hours += toInt(sign + hours);\n this.minutes += toInt(sign + minutes);\n },\n formatter: function(date) {\n return dateFilter(date, 'Z');\n }\n },\n {\n key: 'ww',\n regex: '[0-4][0-9]|5[0-3]',\n formatter: function(date) { return dateFilter(date, 'ww'); }\n },\n {\n key: 'w',\n regex: '[0-9]|[1-4][0-9]|5[0-3]',\n formatter: function(date) { return dateFilter(date, 'w'); }\n },\n {\n key: 'GGGG',\n regex: $locale.DATETIME_FORMATS.ERANAMES.join('|').replace(/\\s/g, '\\\\s'),\n formatter: function(date) { return dateFilter(date, 'GGGG'); }\n },\n {\n key: 'GGG',\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\n formatter: function(date) { return dateFilter(date, 'GGG'); }\n },\n {\n key: 'GG',\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\n formatter: function(date) { return dateFilter(date, 'GG'); }\n },\n {\n key: 'G',\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\n formatter: function(date) { return dateFilter(date, 'G'); }\n }\n ];\n };\n\n this.init();\n\n function createParser(format, func) {\n var map = [], regex = format.split('');\n\n // check for literal values\n var quoteIndex = format.indexOf('\\'');\n if (quoteIndex > -1) {\n var inLiteral = false;\n format = format.split('');\n for (var i = quoteIndex; i < format.length; i++) {\n if (inLiteral) {\n if (format[i] === '\\'') {\n if (i + 1 < format.length && format[i+1] === '\\'') { // escaped single quote\n format[i+1] = '$';\n regex[i+1] = '';\n } else { // end of literal\n regex[i] = '';\n inLiteral = false;\n }\n }\n format[i] = '$';\n } else {\n if (format[i] === '\\'') { // start of literal\n format[i] = '$';\n regex[i] = '';\n inLiteral = true;\n }\n }\n }\n\n format = format.join('');\n }\n\n angular.forEach(formatCodeToRegex, function(data) {\n var index = format.indexOf(data.key);\n\n if (index > -1) {\n format = format.split('');\n\n regex[index] = '(' + data.regex + ')';\n format[index] = '$'; // Custom symbol to define consumed part of format\n for (var i = index + 1, n = index + data.key.length; i < n; i++) {\n regex[i] = '';\n format[i] = '$';\n }\n format = format.join('');\n\n map.push({\n index: index,\n key: data.key,\n apply: data[func],\n matcher: data.regex\n });\n }\n });\n\n return {\n regex: new RegExp('^' + regex.join('') + '$'),\n map: orderByFilter(map, 'index')\n };\n }\n\n this.filter = function(date, format) {\n if (!angular.isDate(date) || isNaN(date) || !format) {\n return '';\n }\n\n format = $locale.DATETIME_FORMATS[format] || format;\n\n if ($locale.id !== localeId) {\n this.init();\n }\n\n if (!this.formatters[format]) {\n this.formatters[format] = createParser(format, 'formatter');\n }\n\n var parser = this.formatters[format],\n map = parser.map;\n\n var _format = format;\n\n return map.reduce(function(str, mapper, i) {\n var match = _format.match(new RegExp('(.*)' + mapper.key));\n if (match && angular.isString(match[1])) {\n str += match[1];\n _format = _format.replace(match[1] + mapper.key, '');\n }\n\n var endStr = i === map.length - 1 ? _format : '';\n\n if (mapper.apply) {\n return str + mapper.apply.call(null, date) + endStr;\n }\n\n return str + endStr;\n }, '');\n };\n\n this.parse = function(input, format, baseDate) {\n if (!angular.isString(input) || !format) {\n return input;\n }\n\n format = $locale.DATETIME_FORMATS[format] || format;\n format = format.replace(SPECIAL_CHARACTERS_REGEXP, '\\\\$&');\n\n if ($locale.id !== localeId) {\n this.init();\n }\n\n if (!this.parsers[format]) {\n this.parsers[format] = createParser(format, 'apply');\n }\n\n var parser = this.parsers[format],\n regex = parser.regex,\n map = parser.map,\n results = input.match(regex),\n tzOffset = false;\n if (results && results.length) {\n var fields, dt;\n if (angular.isDate(baseDate) && !isNaN(baseDate.getTime())) {\n fields = {\n year: baseDate.getFullYear(),\n month: baseDate.getMonth(),\n date: baseDate.getDate(),\n hours: baseDate.getHours(),\n minutes: baseDate.getMinutes(),\n seconds: baseDate.getSeconds(),\n milliseconds: baseDate.getMilliseconds()\n };\n } else {\n if (baseDate) {\n $log.warn('dateparser:', 'baseDate is not a valid date');\n }\n fields = { year: 1900, month: 0, date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 };\n }\n\n for (var i = 1, n = results.length; i < n; i++) {\n var mapper = map[i - 1];\n if (mapper.matcher === 'Z') {\n tzOffset = true;\n }\n\n if (mapper.apply) {\n mapper.apply.call(fields, results[i]);\n }\n }\n\n var datesetter = tzOffset ? Date.prototype.setUTCFullYear :\n Date.prototype.setFullYear;\n var timesetter = tzOffset ? Date.prototype.setUTCHours :\n Date.prototype.setHours;\n\n if (isValid(fields.year, fields.month, fields.date)) {\n if (angular.isDate(baseDate) && !isNaN(baseDate.getTime()) && !tzOffset) {\n dt = new Date(baseDate);\n datesetter.call(dt, fields.year, fields.month, fields.date);\n timesetter.call(dt, fields.hours, fields.minutes,\n fields.seconds, fields.milliseconds);\n } else {\n dt = new Date(0);\n datesetter.call(dt, fields.year, fields.month, fields.date);\n timesetter.call(dt, fields.hours || 0, fields.minutes || 0,\n fields.seconds || 0, fields.milliseconds || 0);\n }\n }\n\n return dt;\n }\n };\n\n // Check if date is valid for specific month (and year for February).\n // Month: 0 = Jan, 1 = Feb, etc\n function isValid(year, month, date) {\n if (date < 1) {\n return false;\n }\n\n if (month === 1 && date > 28) {\n return date === 29 && (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0);\n }\n\n if (month === 3 || month === 5 || month === 8 || month === 10) {\n return date < 31;\n }\n\n return true;\n }\n\n function toInt(str) {\n return parseInt(str, 10);\n }\n\n this.toTimezone = toTimezone;\n this.fromTimezone = fromTimezone;\n this.timezoneToOffset = timezoneToOffset;\n this.addDateMinutes = addDateMinutes;\n this.convertTimezoneToLocal = convertTimezoneToLocal;\n\n function toTimezone(date, timezone) {\n return date && timezone ? convertTimezoneToLocal(date, timezone) : date;\n }\n\n function fromTimezone(date, timezone) {\n return date && timezone ? convertTimezoneToLocal(date, timezone, true) : date;\n }\n\n //https://github.com/angular/angular.js/blob/622c42169699ec07fc6daaa19fe6d224e5d2f70e/src/Angular.js#L1207\n function timezoneToOffset(timezone, fallback) {\n timezone = timezone.replace(/:/g, '');\n var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n }\n\n function addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n }\n\n function convertTimezoneToLocal(date, timezone, reverse) {\n reverse = reverse ? -1 : 1;\n var dateTimezoneOffset = date.getTimezoneOffset();\n var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));\n }\n}]);\n\n// Avoiding use of ng-class as it creates a lot of watchers when a class is to be applied to\n// at most one element.\nangular.module('ui.bootstrap.isClass', [])\n.directive('uibIsClass', [\n '$animate',\nfunction ($animate) {\n // 11111111 22222222\n var ON_REGEXP = /^\\s*([\\s\\S]+?)\\s+on\\s+([\\s\\S]+?)\\s*$/;\n // 11111111 22222222\n var IS_REGEXP = /^\\s*([\\s\\S]+?)\\s+for\\s+([\\s\\S]+?)\\s*$/;\n\n var dataPerTracked = {};\n\n return {\n restrict: 'A',\n compile: function(tElement, tAttrs) {\n var linkedScopes = [];\n var instances = [];\n var expToData = {};\n var lastActivated = null;\n var onExpMatches = tAttrs.uibIsClass.match(ON_REGEXP);\n var onExp = onExpMatches[2];\n var expsStr = onExpMatches[1];\n var exps = expsStr.split(',');\n\n return linkFn;\n\n function linkFn(scope, element, attrs) {\n linkedScopes.push(scope);\n instances.push({\n scope: scope,\n element: element\n });\n\n exps.forEach(function(exp, k) {\n addForExp(exp, scope);\n });\n\n scope.$on('$destroy', removeScope);\n }\n\n function addForExp(exp, scope) {\n var matches = exp.match(IS_REGEXP);\n var clazz = scope.$eval(matches[1]);\n var compareWithExp = matches[2];\n var data = expToData[exp];\n if (!data) {\n var watchFn = function(compareWithVal) {\n var newActivated = null;\n instances.some(function(instance) {\n var thisVal = instance.scope.$eval(onExp);\n if (thisVal === compareWithVal) {\n newActivated = instance;\n return true;\n }\n });\n if (data.lastActivated !== newActivated) {\n if (data.lastActivated) {\n $animate.removeClass(data.lastActivated.element, clazz);\n }\n if (newActivated) {\n $animate.addClass(newActivated.element, clazz);\n }\n data.lastActivated = newActivated;\n }\n };\n expToData[exp] = data = {\n lastActivated: null,\n scope: scope,\n watchFn: watchFn,\n compareWithExp: compareWithExp,\n watcher: scope.$watch(compareWithExp, watchFn)\n };\n }\n data.watchFn(scope.$eval(compareWithExp));\n }\n\n function removeScope(e) {\n var removedScope = e.targetScope;\n var index = linkedScopes.indexOf(removedScope);\n linkedScopes.splice(index, 1);\n instances.splice(index, 1);\n if (linkedScopes.length) {\n var newWatchScope = linkedScopes[0];\n angular.forEach(expToData, function(data) {\n if (data.scope === removedScope) {\n data.watcher = newWatchScope.$watch(data.compareWithExp, data.watchFn);\n data.scope = newWatchScope;\n }\n });\n } else {\n expToData = {};\n }\n }\n }\n };\n}]);\nangular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootstrap.isClass'])\n\n.value('$datepickerSuppressError', false)\n\n.value('$datepickerLiteralWarning', true)\n\n.constant('uibDatepickerConfig', {\n datepickerMode: 'day',\n formatDay: 'dd',\n formatMonth: 'MMMM',\n formatYear: 'yyyy',\n formatDayHeader: 'EEE',\n formatDayTitle: 'MMMM yyyy',\n formatMonthTitle: 'yyyy',\n maxDate: null,\n maxMode: 'year',\n minDate: null,\n minMode: 'day',\n ngModelOptions: {},\n shortcutPropagation: false,\n showWeeks: true,\n yearColumns: 5,\n yearRows: 4\n})\n\n.controller('UibDatepickerController', ['$scope', '$attrs', '$parse', '$interpolate', '$locale', '$log', 'dateFilter', 'uibDatepickerConfig', '$datepickerLiteralWarning', '$datepickerSuppressError', 'uibDateParser',\n function($scope, $attrs, $parse, $interpolate, $locale, $log, dateFilter, datepickerConfig, $datepickerLiteralWarning, $datepickerSuppressError, dateParser) {\n var self = this,\n ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl;\n ngModelOptions = {},\n watchListeners = [],\n optionsUsed = !!$attrs.datepickerOptions;\n\n if (!$scope.datepickerOptions) {\n $scope.datepickerOptions = {};\n }\n\n // Modes chain\n this.modes = ['day', 'month', 'year'];\n\n [\n 'customClass',\n 'dateDisabled',\n 'datepickerMode',\n 'formatDay',\n 'formatDayHeader',\n 'formatDayTitle',\n 'formatMonth',\n 'formatMonthTitle',\n 'formatYear',\n 'maxDate',\n 'maxMode',\n 'minDate',\n 'minMode',\n 'showWeeks',\n 'shortcutPropagation',\n 'startingDay',\n 'yearColumns',\n 'yearRows'\n ].forEach(function(key) {\n switch (key) {\n case 'customClass':\n case 'dateDisabled':\n $scope[key] = $scope.datepickerOptions[key] || angular.noop;\n break;\n case 'datepickerMode':\n $scope.datepickerMode = angular.isDefined($scope.datepickerOptions.datepickerMode) ?\n $scope.datepickerOptions.datepickerMode : datepickerConfig.datepickerMode;\n break;\n case 'formatDay':\n case 'formatDayHeader':\n case 'formatDayTitle':\n case 'formatMonth':\n case 'formatMonthTitle':\n case 'formatYear':\n self[key] = angular.isDefined($scope.datepickerOptions[key]) ?\n $interpolate($scope.datepickerOptions[key])($scope.$parent) :\n datepickerConfig[key];\n break;\n case 'showWeeks':\n case 'shortcutPropagation':\n case 'yearColumns':\n case 'yearRows':\n self[key] = angular.isDefined($scope.datepickerOptions[key]) ?\n $scope.datepickerOptions[key] : datepickerConfig[key];\n break;\n case 'startingDay':\n if (angular.isDefined($scope.datepickerOptions.startingDay)) {\n self.startingDay = $scope.datepickerOptions.startingDay;\n } else if (angular.isNumber(datepickerConfig.startingDay)) {\n self.startingDay = datepickerConfig.startingDay;\n } else {\n self.startingDay = ($locale.DATETIME_FORMATS.FIRSTDAYOFWEEK + 8) % 7;\n }\n\n break;\n case 'maxDate':\n case 'minDate':\n $scope.$watch('datepickerOptions.' + key, function(value) {\n if (value) {\n if (angular.isDate(value)) {\n self[key] = dateParser.fromTimezone(new Date(value), ngModelOptions.timezone);\n } else {\n if ($datepickerLiteralWarning) {\n $log.warn('Literal date support has been deprecated, please switch to date object usage');\n }\n\n self[key] = new Date(dateFilter(value, 'medium'));\n }\n } else {\n self[key] = datepickerConfig[key] ?\n dateParser.fromTimezone(new Date(datepickerConfig[key]), ngModelOptions.timezone) :\n null;\n }\n\n self.refreshView();\n });\n\n break;\n case 'maxMode':\n case 'minMode':\n if ($scope.datepickerOptions[key]) {\n $scope.$watch(function() { return $scope.datepickerOptions[key]; }, function(value) {\n self[key] = $scope[key] = angular.isDefined(value) ? value : datepickerOptions[key];\n if (key === 'minMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) < self.modes.indexOf(self[key]) ||\n key === 'maxMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) > self.modes.indexOf(self[key])) {\n $scope.datepickerMode = self[key];\n $scope.datepickerOptions.datepickerMode = self[key];\n }\n });\n } else {\n self[key] = $scope[key] = datepickerConfig[key] || null;\n }\n\n break;\n }\n });\n\n $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000);\n\n $scope.disabled = angular.isDefined($attrs.disabled) || false;\n if (angular.isDefined($attrs.ngDisabled)) {\n watchListeners.push($scope.$parent.$watch($attrs.ngDisabled, function(disabled) {\n $scope.disabled = disabled;\n self.refreshView();\n }));\n }\n\n $scope.isActive = function(dateObject) {\n if (self.compare(dateObject.date, self.activeDate) === 0) {\n $scope.activeDateId = dateObject.uid;\n return true;\n }\n return false;\n };\n\n this.init = function(ngModelCtrl_) {\n ngModelCtrl = ngModelCtrl_;\n ngModelOptions = ngModelCtrl_.$options || datepickerConfig.ngModelOptions;\n if ($scope.datepickerOptions.initDate) {\n self.activeDate = dateParser.fromTimezone($scope.datepickerOptions.initDate, ngModelOptions.timezone) || new Date();\n $scope.$watch('datepickerOptions.initDate', function(initDate) {\n if (initDate && (ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue) || ngModelCtrl.$invalid)) {\n self.activeDate = dateParser.fromTimezone(initDate, ngModelOptions.timezone);\n self.refreshView();\n }\n });\n } else {\n self.activeDate = new Date();\n }\n\n var date = ngModelCtrl.$modelValue ? new Date(ngModelCtrl.$modelValue) : new Date();\n this.activeDate = !isNaN(date) ?\n dateParser.fromTimezone(date, ngModelOptions.timezone) :\n dateParser.fromTimezone(new Date(), ngModelOptions.timezone);\n\n ngModelCtrl.$render = function() {\n self.render();\n };\n };\n\n this.render = function() {\n if (ngModelCtrl.$viewValue) {\n var date = new Date(ngModelCtrl.$viewValue),\n isValid = !isNaN(date);\n\n if (isValid) {\n this.activeDate = dateParser.fromTimezone(date, ngModelOptions.timezone);\n } else if (!$datepickerSuppressError) {\n $log.error('Datepicker directive: \"ng-model\" value must be a Date object');\n }\n }\n this.refreshView();\n };\n\n this.refreshView = function() {\n if (this.element) {\n $scope.selectedDt = null;\n this._refreshView();\n if ($scope.activeDt) {\n $scope.activeDateId = $scope.activeDt.uid;\n }\n\n var date = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\n date = dateParser.fromTimezone(date, ngModelOptions.timezone);\n ngModelCtrl.$setValidity('dateDisabled', !date ||\n this.element && !this.isDisabled(date));\n }\n };\n\n this.createDateObject = function(date, format) {\n var model = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\n model = dateParser.fromTimezone(model, ngModelOptions.timezone);\n var today = new Date();\n today = dateParser.fromTimezone(today, ngModelOptions.timezone);\n var time = this.compare(date, today);\n var dt = {\n date: date,\n label: dateParser.filter(date, format),\n selected: model && this.compare(date, model) === 0,\n disabled: this.isDisabled(date),\n past: time < 0,\n current: time === 0,\n future: time > 0,\n customClass: this.customClass(date) || null\n };\n\n if (model && this.compare(date, model) === 0) {\n $scope.selectedDt = dt;\n }\n\n if (self.activeDate && this.compare(dt.date, self.activeDate) === 0) {\n $scope.activeDt = dt;\n }\n\n return dt;\n };\n\n this.isDisabled = function(date) {\n return $scope.disabled ||\n this.minDate && this.compare(date, this.minDate) < 0 ||\n this.maxDate && this.compare(date, this.maxDate) > 0 ||\n $scope.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode});\n };\n\n this.customClass = function(date) {\n return $scope.customClass({date: date, mode: $scope.datepickerMode});\n };\n\n // Split array into smaller arrays\n this.split = function(arr, size) {\n var arrays = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n return arrays;\n };\n\n $scope.select = function(date) {\n if ($scope.datepickerMode === self.minMode) {\n var dt = ngModelCtrl.$viewValue ? dateParser.fromTimezone(new Date(ngModelCtrl.$viewValue), ngModelOptions.timezone) : new Date(0, 0, 0, 0, 0, 0, 0);\n dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n dt = dateParser.toTimezone(dt, ngModelOptions.timezone);\n ngModelCtrl.$setViewValue(dt);\n ngModelCtrl.$render();\n } else {\n self.activeDate = date;\n setMode(self.modes[self.modes.indexOf($scope.datepickerMode) - 1]);\n\n $scope.$emit('uib:datepicker.mode');\n }\n\n $scope.$broadcast('uib:datepicker.focus');\n };\n\n $scope.move = function(direction) {\n var year = self.activeDate.getFullYear() + direction * (self.step.years || 0),\n month = self.activeDate.getMonth() + direction * (self.step.months || 0);\n self.activeDate.setFullYear(year, month, 1);\n self.refreshView();\n };\n\n $scope.toggleMode = function(direction) {\n direction = direction || 1;\n\n if ($scope.datepickerMode === self.maxMode && direction === 1 ||\n $scope.datepickerMode === self.minMode && direction === -1) {\n return;\n }\n\n setMode(self.modes[self.modes.indexOf($scope.datepickerMode) + direction]);\n\n $scope.$emit('uib:datepicker.mode');\n };\n\n // Key event mapper\n $scope.keys = { 13: 'enter', 32: 'space', 33: 'pageup', 34: 'pagedown', 35: 'end', 36: 'home', 37: 'left', 38: 'up', 39: 'right', 40: 'down' };\n\n var focusElement = function() {\n self.element[0].focus();\n };\n\n // Listen for focus requests from popup directive\n $scope.$on('uib:datepicker.focus', focusElement);\n\n $scope.keydown = function(evt) {\n var key = $scope.keys[evt.which];\n\n if (!key || evt.shiftKey || evt.altKey || $scope.disabled) {\n return;\n }\n\n evt.preventDefault();\n if (!self.shortcutPropagation) {\n evt.stopPropagation();\n }\n\n if (key === 'enter' || key === 'space') {\n if (self.isDisabled(self.activeDate)) {\n return; // do nothing\n }\n $scope.select(self.activeDate);\n } else if (evt.ctrlKey && (key === 'up' || key === 'down')) {\n $scope.toggleMode(key === 'up' ? 1 : -1);\n } else {\n self.handleKeyDown(key, evt);\n self.refreshView();\n }\n };\n\n $scope.$on('$destroy', function() {\n //Clear all watch listeners on destroy\n while (watchListeners.length) {\n watchListeners.shift()();\n }\n });\n\n function setMode(mode) {\n $scope.datepickerMode = mode;\n $scope.datepickerOptions.datepickerMode = mode;\n }\n}])\n\n.controller('UibDaypickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\n var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n this.step = { months: 1 };\n this.element = $element;\n function getDaysInMonth(year, month) {\n return month === 1 && year % 4 === 0 &&\n (year % 100 !== 0 || year % 400 === 0) ? 29 : DAYS_IN_MONTH[month];\n }\n\n this.init = function(ctrl) {\n angular.extend(ctrl, this);\n scope.showWeeks = ctrl.showWeeks;\n ctrl.refreshView();\n };\n\n this.getDates = function(startDate, n) {\n var dates = new Array(n), current = new Date(startDate), i = 0, date;\n while (i < n) {\n date = new Date(current);\n dates[i++] = date;\n current.setDate(current.getDate() + 1);\n }\n return dates;\n };\n\n this._refreshView = function() {\n var year = this.activeDate.getFullYear(),\n month = this.activeDate.getMonth(),\n firstDayOfMonth = new Date(this.activeDate);\n\n firstDayOfMonth.setFullYear(year, month, 1);\n\n var difference = this.startingDay - firstDayOfMonth.getDay(),\n numDisplayedFromPreviousMonth = difference > 0 ?\n 7 - difference : - difference,\n firstDate = new Date(firstDayOfMonth);\n\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n\n // 42 is the number of days on a six-week calendar\n var days = this.getDates(firstDate, 42);\n for (var i = 0; i < 42; i ++) {\n days[i] = angular.extend(this.createDateObject(days[i], this.formatDay), {\n secondary: days[i].getMonth() !== month,\n uid: scope.uniqueId + '-' + i\n });\n }\n\n scope.labels = new Array(7);\n for (var j = 0; j < 7; j++) {\n scope.labels[j] = {\n abbr: dateFilter(days[j].date, this.formatDayHeader),\n full: dateFilter(days[j].date, 'EEEE')\n };\n }\n\n scope.title = dateFilter(this.activeDate, this.formatDayTitle);\n scope.rows = this.split(days, 7);\n\n if (scope.showWeeks) {\n scope.weekNumbers = [];\n var thursdayIndex = (4 + 7 - this.startingDay) % 7,\n numWeeks = scope.rows.length;\n for (var curWeek = 0; curWeek < numWeeks; curWeek++) {\n scope.weekNumbers.push(\n getISO8601WeekNumber(scope.rows[curWeek][thursdayIndex].date));\n }\n }\n };\n\n this.compare = function(date1, date2) {\n var _date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n var _date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n _date1.setFullYear(date1.getFullYear());\n _date2.setFullYear(date2.getFullYear());\n return _date1 - _date2;\n };\n\n function getISO8601WeekNumber(date) {\n var checkDate = new Date(date);\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); // Thursday\n var time = checkDate.getTime();\n checkDate.setMonth(0); // Compare with Jan 1\n checkDate.setDate(1);\n return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n }\n\n this.handleKeyDown = function(key, evt) {\n var date = this.activeDate.getDate();\n\n if (key === 'left') {\n date = date - 1;\n } else if (key === 'up') {\n date = date - 7;\n } else if (key === 'right') {\n date = date + 1;\n } else if (key === 'down') {\n date = date + 7;\n } else if (key === 'pageup' || key === 'pagedown') {\n var month = this.activeDate.getMonth() + (key === 'pageup' ? - 1 : 1);\n this.activeDate.setMonth(month, 1);\n date = Math.min(getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth()), date);\n } else if (key === 'home') {\n date = 1;\n } else if (key === 'end') {\n date = getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth());\n }\n this.activeDate.setDate(date);\n };\n}])\n\n.controller('UibMonthpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\n this.step = { years: 1 };\n this.element = $element;\n\n this.init = function(ctrl) {\n angular.extend(ctrl, this);\n ctrl.refreshView();\n };\n\n this._refreshView = function() {\n var months = new Array(12),\n year = this.activeDate.getFullYear(),\n date;\n\n for (var i = 0; i < 12; i++) {\n date = new Date(this.activeDate);\n date.setFullYear(year, i, 1);\n months[i] = angular.extend(this.createDateObject(date, this.formatMonth), {\n uid: scope.uniqueId + '-' + i\n });\n }\n\n scope.title = dateFilter(this.activeDate, this.formatMonthTitle);\n scope.rows = this.split(months, 3);\n };\n\n this.compare = function(date1, date2) {\n var _date1 = new Date(date1.getFullYear(), date1.getMonth());\n var _date2 = new Date(date2.getFullYear(), date2.getMonth());\n _date1.setFullYear(date1.getFullYear());\n _date2.setFullYear(date2.getFullYear());\n return _date1 - _date2;\n };\n\n this.handleKeyDown = function(key, evt) {\n var date = this.activeDate.getMonth();\n\n if (key === 'left') {\n date = date - 1;\n } else if (key === 'up') {\n date = date - 3;\n } else if (key === 'right') {\n date = date + 1;\n } else if (key === 'down') {\n date = date + 3;\n } else if (key === 'pageup' || key === 'pagedown') {\n var year = this.activeDate.getFullYear() + (key === 'pageup' ? - 1 : 1);\n this.activeDate.setFullYear(year);\n } else if (key === 'home') {\n date = 0;\n } else if (key === 'end') {\n date = 11;\n }\n this.activeDate.setMonth(date);\n };\n}])\n\n.controller('UibYearpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\n var columns, range;\n this.element = $element;\n\n function getStartingYear(year) {\n return parseInt((year - 1) / range, 10) * range + 1;\n }\n\n this.yearpickerInit = function() {\n columns = this.yearColumns;\n range = this.yearRows * columns;\n this.step = { years: range };\n };\n\n this._refreshView = function() {\n var years = new Array(range), date;\n\n for (var i = 0, start = getStartingYear(this.activeDate.getFullYear()); i < range; i++) {\n date = new Date(this.activeDate);\n date.setFullYear(start + i, 0, 1);\n years[i] = angular.extend(this.createDateObject(date, this.formatYear), {\n uid: scope.uniqueId + '-' + i\n });\n }\n\n scope.title = [years[0].label, years[range - 1].label].join(' - ');\n scope.rows = this.split(years, columns);\n scope.columns = columns;\n };\n\n this.compare = function(date1, date2) {\n return date1.getFullYear() - date2.getFullYear();\n };\n\n this.handleKeyDown = function(key, evt) {\n var date = this.activeDate.getFullYear();\n\n if (key === 'left') {\n date = date - 1;\n } else if (key === 'up') {\n date = date - columns;\n } else if (key === 'right') {\n date = date + 1;\n } else if (key === 'down') {\n date = date + columns;\n } else if (key === 'pageup' || key === 'pagedown') {\n date += (key === 'pageup' ? - 1 : 1) * range;\n } else if (key === 'home') {\n date = getStartingYear(this.activeDate.getFullYear());\n } else if (key === 'end') {\n date = getStartingYear(this.activeDate.getFullYear()) + range - 1;\n }\n this.activeDate.setFullYear(date);\n };\n}])\n\n.directive('uibDatepicker', function() {\n return {\n replace: true,\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/datepicker/datepicker.html';\n },\n scope: {\n datepickerOptions: '=?'\n },\n require: ['uibDatepicker', '^ngModel'],\n controller: 'UibDatepickerController',\n controllerAs: 'datepicker',\n link: function(scope, element, attrs, ctrls) {\n var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n\n datepickerCtrl.init(ngModelCtrl);\n }\n };\n})\n\n.directive('uibDaypicker', function() {\n return {\n replace: true,\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/datepicker/day.html';\n },\n require: ['^uibDatepicker', 'uibDaypicker'],\n controller: 'UibDaypickerController',\n link: function(scope, element, attrs, ctrls) {\n var datepickerCtrl = ctrls[0],\n daypickerCtrl = ctrls[1];\n\n daypickerCtrl.init(datepickerCtrl);\n }\n };\n})\n\n.directive('uibMonthpicker', function() {\n return {\n replace: true,\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/datepicker/month.html';\n },\n require: ['^uibDatepicker', 'uibMonthpicker'],\n controller: 'UibMonthpickerController',\n link: function(scope, element, attrs, ctrls) {\n var datepickerCtrl = ctrls[0],\n monthpickerCtrl = ctrls[1];\n\n monthpickerCtrl.init(datepickerCtrl);\n }\n };\n})\n\n.directive('uibYearpicker', function() {\n return {\n replace: true,\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/datepicker/year.html';\n },\n require: ['^uibDatepicker', 'uibYearpicker'],\n controller: 'UibYearpickerController',\n link: function(scope, element, attrs, ctrls) {\n var ctrl = ctrls[0];\n angular.extend(ctrl, ctrls[1]);\n ctrl.yearpickerInit();\n\n ctrl.refreshView();\n }\n };\n});\n\nangular.module('ui.bootstrap.position', [])\n\n/**\n * A set of utility methods for working with the DOM.\n * It is meant to be used where we need to absolute-position elements in\n * relation to another element (this is the case for tooltips, popovers,\n * typeahead suggestions etc.).\n */\n .factory('$uibPosition', ['$document', '$window', function($document, $window) {\n /**\n * Used by scrollbarWidth() function to cache scrollbar's width.\n * Do not access this variable directly, use scrollbarWidth() instead.\n */\n var SCROLLBAR_WIDTH;\n /**\n * scrollbar on body and html element in IE and Edge overlay\n * content and should be considered 0 width.\n */\n var BODY_SCROLLBAR_WIDTH;\n var OVERFLOW_REGEX = {\n normal: /(auto|scroll)/,\n hidden: /(auto|scroll|hidden)/\n };\n var PLACEMENT_REGEX = {\n auto: /\\s?auto?\\s?/i,\n primary: /^(top|bottom|left|right)$/,\n secondary: /^(top|bottom|left|right|center)$/,\n vertical: /^(top|bottom)$/\n };\n var BODY_REGEX = /(HTML|BODY)/;\n\n return {\n\n /**\n * Provides a raw DOM element from a jQuery/jQLite element.\n *\n * @param {element} elem - The element to convert.\n *\n * @returns {element} A HTML element.\n */\n getRawNode: function(elem) {\n return elem.nodeName ? elem : elem[0] || elem;\n },\n\n /**\n * Provides a parsed number for a style property. Strips\n * units and casts invalid numbers to 0.\n *\n * @param {string} value - The style value to parse.\n *\n * @returns {number} A valid number.\n */\n parseStyle: function(value) {\n value = parseFloat(value);\n return isFinite(value) ? value : 0;\n },\n\n /**\n * Provides the closest positioned ancestor.\n *\n * @param {element} element - The element to get the offest parent for.\n *\n * @returns {element} The closest positioned ancestor.\n */\n offsetParent: function(elem) {\n elem = this.getRawNode(elem);\n\n var offsetParent = elem.offsetParent || $document[0].documentElement;\n\n function isStaticPositioned(el) {\n return ($window.getComputedStyle(el).position || 'static') === 'static';\n }\n\n while (offsetParent && offsetParent !== $document[0].documentElement && isStaticPositioned(offsetParent)) {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || $document[0].documentElement;\n },\n\n /**\n * Provides the scrollbar width, concept from TWBS measureScrollbar()\n * function in https://github.com/twbs/bootstrap/blob/master/js/modal.js\n * In IE and Edge, scollbar on body and html element overlay and should\n * return a width of 0.\n *\n * @returns {number} The width of the browser scollbar.\n */\n scrollbarWidth: function(isBody) {\n if (isBody) {\n if (angular.isUndefined(BODY_SCROLLBAR_WIDTH)) {\n var bodyElem = $document.find('body');\n bodyElem.addClass('uib-position-body-scrollbar-measure');\n BODY_SCROLLBAR_WIDTH = $window.innerWidth - bodyElem[0].clientWidth;\n BODY_SCROLLBAR_WIDTH = isFinite(BODY_SCROLLBAR_WIDTH) ? BODY_SCROLLBAR_WIDTH : 0;\n bodyElem.removeClass('uib-position-body-scrollbar-measure');\n }\n return BODY_SCROLLBAR_WIDTH;\n }\n\n if (angular.isUndefined(SCROLLBAR_WIDTH)) {\n var scrollElem = angular.element('
');\n $document.find('body').append(scrollElem);\n SCROLLBAR_WIDTH = scrollElem[0].offsetWidth - scrollElem[0].clientWidth;\n SCROLLBAR_WIDTH = isFinite(SCROLLBAR_WIDTH) ? SCROLLBAR_WIDTH : 0;\n scrollElem.remove();\n }\n\n return SCROLLBAR_WIDTH;\n },\n\n /**\n * Provides the padding required on an element to replace the scrollbar.\n *\n * @returns {object} An object with the following properties:\n * \n */\n scrollbarPadding: function(elem) {\n elem = this.getRawNode(elem);\n\n var elemStyle = $window.getComputedStyle(elem);\n var paddingRight = this.parseStyle(elemStyle.paddingRight);\n var paddingBottom = this.parseStyle(elemStyle.paddingBottom);\n var scrollParent = this.scrollParent(elem, false, true);\n var scrollbarWidth = this.scrollbarWidth(scrollParent, BODY_REGEX.test(scrollParent.tagName));\n\n return {\n scrollbarWidth: scrollbarWidth,\n widthOverflow: scrollParent.scrollWidth > scrollParent.clientWidth,\n right: paddingRight + scrollbarWidth,\n originalRight: paddingRight,\n heightOverflow: scrollParent.scrollHeight > scrollParent.clientHeight,\n bottom: paddingBottom + scrollbarWidth,\n originalBottom: paddingBottom\n };\n },\n\n /**\n * Checks to see if the element is scrollable.\n *\n * @param {element} elem - The element to check.\n * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\n * default is false.\n *\n * @returns {boolean} Whether the element is scrollable.\n */\n isScrollable: function(elem, includeHidden) {\n elem = this.getRawNode(elem);\n\n var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\n var elemStyle = $window.getComputedStyle(elem);\n return overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX);\n },\n\n /**\n * Provides the closest scrollable ancestor.\n * A port of the jQuery UI scrollParent method:\n * https://github.com/jquery/jquery-ui/blob/master/ui/scroll-parent.js\n *\n * @param {element} elem - The element to find the scroll parent of.\n * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\n * default is false.\n * @param {boolean=} [includeSelf=false] - Should the element being passed be\n * included in the scrollable llokup.\n *\n * @returns {element} A HTML element.\n */\n scrollParent: function(elem, includeHidden, includeSelf) {\n elem = this.getRawNode(elem);\n\n var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\n var documentEl = $document[0].documentElement;\n var elemStyle = $window.getComputedStyle(elem);\n if (includeSelf && overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX)) {\n return elem;\n }\n var excludeStatic = elemStyle.position === 'absolute';\n var scrollParent = elem.parentElement || documentEl;\n\n if (scrollParent === documentEl || elemStyle.position === 'fixed') {\n return documentEl;\n }\n\n while (scrollParent.parentElement && scrollParent !== documentEl) {\n var spStyle = $window.getComputedStyle(scrollParent);\n if (excludeStatic && spStyle.position !== 'static') {\n excludeStatic = false;\n }\n\n if (!excludeStatic && overflowRegex.test(spStyle.overflow + spStyle.overflowY + spStyle.overflowX)) {\n break;\n }\n scrollParent = scrollParent.parentElement;\n }\n\n return scrollParent;\n },\n\n /**\n * Provides read-only equivalent of jQuery's position function:\n * http://api.jquery.com/position/ - distance to closest positioned\n * ancestor. Does not account for margins by default like jQuery position.\n *\n * @param {element} elem - The element to caclulate the position on.\n * @param {boolean=} [includeMargins=false] - Should margins be accounted\n * for, default is false.\n *\n * @returns {object} An object with the following properties:\n * \n */\n position: function(elem, includeMagins) {\n elem = this.getRawNode(elem);\n\n var elemOffset = this.offset(elem);\n if (includeMagins) {\n var elemStyle = $window.getComputedStyle(elem);\n elemOffset.top -= this.parseStyle(elemStyle.marginTop);\n elemOffset.left -= this.parseStyle(elemStyle.marginLeft);\n }\n var parent = this.offsetParent(elem);\n var parentOffset = {top: 0, left: 0};\n\n if (parent !== $document[0].documentElement) {\n parentOffset = this.offset(parent);\n parentOffset.top += parent.clientTop - parent.scrollTop;\n parentOffset.left += parent.clientLeft - parent.scrollLeft;\n }\n\n return {\n width: Math.round(angular.isNumber(elemOffset.width) ? elemOffset.width : elem.offsetWidth),\n height: Math.round(angular.isNumber(elemOffset.height) ? elemOffset.height : elem.offsetHeight),\n top: Math.round(elemOffset.top - parentOffset.top),\n left: Math.round(elemOffset.left - parentOffset.left)\n };\n },\n\n /**\n * Provides read-only equivalent of jQuery's offset function:\n * http://api.jquery.com/offset/ - distance to viewport. Does\n * not account for borders, margins, or padding on the body\n * element.\n *\n * @param {element} elem - The element to calculate the offset on.\n *\n * @returns {object} An object with the following properties:\n * \n */\n offset: function(elem) {\n elem = this.getRawNode(elem);\n\n var elemBCR = elem.getBoundingClientRect();\n return {\n width: Math.round(angular.isNumber(elemBCR.width) ? elemBCR.width : elem.offsetWidth),\n height: Math.round(angular.isNumber(elemBCR.height) ? elemBCR.height : elem.offsetHeight),\n top: Math.round(elemBCR.top + ($window.pageYOffset || $document[0].documentElement.scrollTop)),\n left: Math.round(elemBCR.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft))\n };\n },\n\n /**\n * Provides offset distance to the closest scrollable ancestor\n * or viewport. Accounts for border and scrollbar width.\n *\n * Right and bottom dimensions represent the distance to the\n * respective edge of the viewport element. If the element\n * edge extends beyond the viewport, a negative value will be\n * reported.\n *\n * @param {element} elem - The element to get the viewport offset for.\n * @param {boolean=} [useDocument=false] - Should the viewport be the document element instead\n * of the first scrollable element, default is false.\n * @param {boolean=} [includePadding=true] - Should the padding on the offset parent element\n * be accounted for, default is true.\n *\n * @returns {object} An object with the following properties:\n * \n */\n viewportOffset: function(elem, useDocument, includePadding) {\n elem = this.getRawNode(elem);\n includePadding = includePadding !== false ? true : false;\n\n var elemBCR = elem.getBoundingClientRect();\n var offsetBCR = {top: 0, left: 0, bottom: 0, right: 0};\n\n var offsetParent = useDocument ? $document[0].documentElement : this.scrollParent(elem);\n var offsetParentBCR = offsetParent.getBoundingClientRect();\n\n offsetBCR.top = offsetParentBCR.top + offsetParent.clientTop;\n offsetBCR.left = offsetParentBCR.left + offsetParent.clientLeft;\n if (offsetParent === $document[0].documentElement) {\n offsetBCR.top += $window.pageYOffset;\n offsetBCR.left += $window.pageXOffset;\n }\n offsetBCR.bottom = offsetBCR.top + offsetParent.clientHeight;\n offsetBCR.right = offsetBCR.left + offsetParent.clientWidth;\n\n if (includePadding) {\n var offsetParentStyle = $window.getComputedStyle(offsetParent);\n offsetBCR.top += this.parseStyle(offsetParentStyle.paddingTop);\n offsetBCR.bottom -= this.parseStyle(offsetParentStyle.paddingBottom);\n offsetBCR.left += this.parseStyle(offsetParentStyle.paddingLeft);\n offsetBCR.right -= this.parseStyle(offsetParentStyle.paddingRight);\n }\n\n return {\n top: Math.round(elemBCR.top - offsetBCR.top),\n bottom: Math.round(offsetBCR.bottom - elemBCR.bottom),\n left: Math.round(elemBCR.left - offsetBCR.left),\n right: Math.round(offsetBCR.right - elemBCR.right)\n };\n },\n\n /**\n * Provides an array of placement values parsed from a placement string.\n * Along with the 'auto' indicator, supported placement strings are:\n * \n * A placement string with an 'auto' indicator is expected to be\n * space separated from the placement, i.e: 'auto bottom-left' If\n * the primary and secondary placement values do not match 'top,\n * bottom, left, right' then 'top' will be the primary placement and\n * 'center' will be the secondary placement. If 'auto' is passed, true\n * will be returned as the 3rd value of the array.\n *\n * @param {string} placement - The placement string to parse.\n *\n * @returns {array} An array with the following values\n * \n */\n parsePlacement: function(placement) {\n var autoPlace = PLACEMENT_REGEX.auto.test(placement);\n if (autoPlace) {\n placement = placement.replace(PLACEMENT_REGEX.auto, '');\n }\n\n placement = placement.split('-');\n\n placement[0] = placement[0] || 'top';\n if (!PLACEMENT_REGEX.primary.test(placement[0])) {\n placement[0] = 'top';\n }\n\n placement[1] = placement[1] || 'center';\n if (!PLACEMENT_REGEX.secondary.test(placement[1])) {\n placement[1] = 'center';\n }\n\n if (autoPlace) {\n placement[2] = true;\n } else {\n placement[2] = false;\n }\n\n return placement;\n },\n\n /**\n * Provides coordinates for an element to be positioned relative to\n * another element. Passing 'auto' as part of the placement parameter\n * will enable smart placement - where the element fits. i.e:\n * 'auto left-top' will check to see if there is enough space to the left\n * of the hostElem to fit the targetElem, if not place right (same for secondary\n * top placement). Available space is calculated using the viewportOffset\n * function.\n *\n * @param {element} hostElem - The element to position against.\n * @param {element} targetElem - The element to position.\n * @param {string=} [placement=top] - The placement for the targetElem,\n * default is 'top'. 'center' is assumed as secondary placement for\n * 'top', 'left', 'right', and 'bottom' placements. Available placements are:\n * \n * @param {boolean=} [appendToBody=false] - Should the top and left values returned\n * be calculated from the body element, default is false.\n *\n * @returns {object} An object with the following properties:\n * \n */\n positionElements: function(hostElem, targetElem, placement, appendToBody) {\n hostElem = this.getRawNode(hostElem);\n targetElem = this.getRawNode(targetElem);\n\n // need to read from prop to support tests.\n var targetWidth = angular.isDefined(targetElem.offsetWidth) ? targetElem.offsetWidth : targetElem.prop('offsetWidth');\n var targetHeight = angular.isDefined(targetElem.offsetHeight) ? targetElem.offsetHeight : targetElem.prop('offsetHeight');\n\n placement = this.parsePlacement(placement);\n\n var hostElemPos = appendToBody ? this.offset(hostElem) : this.position(hostElem);\n var targetElemPos = {top: 0, left: 0, placement: ''};\n\n if (placement[2]) {\n var viewportOffset = this.viewportOffset(hostElem, appendToBody);\n\n var targetElemStyle = $window.getComputedStyle(targetElem);\n var adjustedSize = {\n width: targetWidth + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginLeft) + this.parseStyle(targetElemStyle.marginRight))),\n height: targetHeight + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginTop) + this.parseStyle(targetElemStyle.marginBottom)))\n };\n\n placement[0] = placement[0] === 'top' && adjustedSize.height > viewportOffset.top && adjustedSize.height <= viewportOffset.bottom ? 'bottom' :\n placement[0] === 'bottom' && adjustedSize.height > viewportOffset.bottom && adjustedSize.height <= viewportOffset.top ? 'top' :\n placement[0] === 'left' && adjustedSize.width > viewportOffset.left && adjustedSize.width <= viewportOffset.right ? 'right' :\n placement[0] === 'right' && adjustedSize.width > viewportOffset.right && adjustedSize.width <= viewportOffset.left ? 'left' :\n placement[0];\n\n placement[1] = placement[1] === 'top' && adjustedSize.height - hostElemPos.height > viewportOffset.bottom && adjustedSize.height - hostElemPos.height <= viewportOffset.top ? 'bottom' :\n placement[1] === 'bottom' && adjustedSize.height - hostElemPos.height > viewportOffset.top && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom ? 'top' :\n placement[1] === 'left' && adjustedSize.width - hostElemPos.width > viewportOffset.right && adjustedSize.width - hostElemPos.width <= viewportOffset.left ? 'right' :\n placement[1] === 'right' && adjustedSize.width - hostElemPos.width > viewportOffset.left && adjustedSize.width - hostElemPos.width <= viewportOffset.right ? 'left' :\n placement[1];\n\n if (placement[1] === 'center') {\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\n var xOverflow = hostElemPos.width / 2 - targetWidth / 2;\n if (viewportOffset.left + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.right) {\n placement[1] = 'left';\n } else if (viewportOffset.right + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.left) {\n placement[1] = 'right';\n }\n } else {\n var yOverflow = hostElemPos.height / 2 - adjustedSize.height / 2;\n if (viewportOffset.top + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom) {\n placement[1] = 'top';\n } else if (viewportOffset.bottom + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.top) {\n placement[1] = 'bottom';\n }\n }\n }\n }\n\n switch (placement[0]) {\n case 'top':\n targetElemPos.top = hostElemPos.top - targetHeight;\n break;\n case 'bottom':\n targetElemPos.top = hostElemPos.top + hostElemPos.height;\n break;\n case 'left':\n targetElemPos.left = hostElemPos.left - targetWidth;\n break;\n case 'right':\n targetElemPos.left = hostElemPos.left + hostElemPos.width;\n break;\n }\n\n switch (placement[1]) {\n case 'top':\n targetElemPos.top = hostElemPos.top;\n break;\n case 'bottom':\n targetElemPos.top = hostElemPos.top + hostElemPos.height - targetHeight;\n break;\n case 'left':\n targetElemPos.left = hostElemPos.left;\n break;\n case 'right':\n targetElemPos.left = hostElemPos.left + hostElemPos.width - targetWidth;\n break;\n case 'center':\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\n targetElemPos.left = hostElemPos.left + hostElemPos.width / 2 - targetWidth / 2;\n } else {\n targetElemPos.top = hostElemPos.top + hostElemPos.height / 2 - targetHeight / 2;\n }\n break;\n }\n\n targetElemPos.top = Math.round(targetElemPos.top);\n targetElemPos.left = Math.round(targetElemPos.left);\n targetElemPos.placement = placement[1] === 'center' ? placement[0] : placement[0] + '-' + placement[1];\n\n return targetElemPos;\n },\n\n /**\n * Provides a way for positioning tooltip & dropdown\n * arrows when using placement options beyond the standard\n * left, right, top, or bottom.\n *\n * @param {element} elem - The tooltip/dropdown element.\n * @param {string} placement - The placement for the elem.\n */\n positionArrow: function(elem, placement) {\n elem = this.getRawNode(elem);\n\n var innerElem = elem.querySelector('.tooltip-inner, .popover-inner');\n if (!innerElem) {\n return;\n }\n\n var isTooltip = angular.element(innerElem).hasClass('tooltip-inner');\n\n var arrowElem = isTooltip ? elem.querySelector('.tooltip-arrow') : elem.querySelector('.arrow');\n if (!arrowElem) {\n return;\n }\n\n var arrowCss = {\n top: '',\n bottom: '',\n left: '',\n right: ''\n };\n\n placement = this.parsePlacement(placement);\n if (placement[1] === 'center') {\n // no adjustment necessary - just reset styles\n angular.element(arrowElem).css(arrowCss);\n return;\n }\n\n var borderProp = 'border-' + placement[0] + '-width';\n var borderWidth = $window.getComputedStyle(arrowElem)[borderProp];\n\n var borderRadiusProp = 'border-';\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\n borderRadiusProp += placement[0] + '-' + placement[1];\n } else {\n borderRadiusProp += placement[1] + '-' + placement[0];\n }\n borderRadiusProp += '-radius';\n var borderRadius = $window.getComputedStyle(isTooltip ? innerElem : elem)[borderRadiusProp];\n\n switch (placement[0]) {\n case 'top':\n arrowCss.bottom = isTooltip ? '0' : '-' + borderWidth;\n break;\n case 'bottom':\n arrowCss.top = isTooltip ? '0' : '-' + borderWidth;\n break;\n case 'left':\n arrowCss.right = isTooltip ? '0' : '-' + borderWidth;\n break;\n case 'right':\n arrowCss.left = isTooltip ? '0' : '-' + borderWidth;\n break;\n }\n\n arrowCss[placement[1]] = borderRadius;\n\n angular.element(arrowElem).css(arrowCss);\n }\n };\n }]);\n\nangular.module('ui.bootstrap.datepickerPopup', ['ui.bootstrap.datepicker', 'ui.bootstrap.position'])\n\n.value('$datepickerPopupLiteralWarning', true)\n\n.constant('uibDatepickerPopupConfig', {\n altInputFormats: [],\n appendToBody: false,\n clearText: 'Clear',\n closeOnDateSelection: true,\n closeText: 'Done',\n currentText: 'Today',\n datepickerPopup: 'yyyy-MM-dd',\n datepickerPopupTemplateUrl: 'uib/template/datepickerPopup/popup.html',\n datepickerTemplateUrl: 'uib/template/datepicker/datepicker.html',\n html5Types: {\n date: 'yyyy-MM-dd',\n 'datetime-local': 'yyyy-MM-ddTHH:mm:ss.sss',\n 'month': 'yyyy-MM'\n },\n onOpenFocus: true,\n showButtonBar: true,\n placement: 'auto bottom-left'\n})\n\n.controller('UibDatepickerPopupController', ['$scope', '$element', '$attrs', '$compile', '$log', '$parse', '$window', '$document', '$rootScope', '$uibPosition', 'dateFilter', 'uibDateParser', 'uibDatepickerPopupConfig', '$timeout', 'uibDatepickerConfig', '$datepickerPopupLiteralWarning',\nfunction($scope, $element, $attrs, $compile, $log, $parse, $window, $document, $rootScope, $position, dateFilter, dateParser, datepickerPopupConfig, $timeout, datepickerConfig, $datepickerPopupLiteralWarning) {\n var cache = {},\n isHtml5DateInput = false;\n var dateFormat, closeOnDateSelection, appendToBody, onOpenFocus,\n datepickerPopupTemplateUrl, datepickerTemplateUrl, popupEl, datepickerEl, scrollParentEl,\n ngModel, ngModelOptions, $popup, altInputFormats, watchListeners = [],\n timezone;\n\n this.init = function(_ngModel_) {\n ngModel = _ngModel_;\n ngModelOptions = _ngModel_.$options;\n closeOnDateSelection = angular.isDefined($attrs.closeOnDateSelection) ?\n $scope.$parent.$eval($attrs.closeOnDateSelection) :\n datepickerPopupConfig.closeOnDateSelection;\n appendToBody = angular.isDefined($attrs.datepickerAppendToBody) ?\n $scope.$parent.$eval($attrs.datepickerAppendToBody) :\n datepickerPopupConfig.appendToBody;\n onOpenFocus = angular.isDefined($attrs.onOpenFocus) ?\n $scope.$parent.$eval($attrs.onOpenFocus) : datepickerPopupConfig.onOpenFocus;\n datepickerPopupTemplateUrl = angular.isDefined($attrs.datepickerPopupTemplateUrl) ?\n $attrs.datepickerPopupTemplateUrl :\n datepickerPopupConfig.datepickerPopupTemplateUrl;\n datepickerTemplateUrl = angular.isDefined($attrs.datepickerTemplateUrl) ?\n $attrs.datepickerTemplateUrl : datepickerPopupConfig.datepickerTemplateUrl;\n altInputFormats = angular.isDefined($attrs.altInputFormats) ?\n $scope.$parent.$eval($attrs.altInputFormats) :\n datepickerPopupConfig.altInputFormats;\n\n $scope.showButtonBar = angular.isDefined($attrs.showButtonBar) ?\n $scope.$parent.$eval($attrs.showButtonBar) :\n datepickerPopupConfig.showButtonBar;\n\n if (datepickerPopupConfig.html5Types[$attrs.type]) {\n dateFormat = datepickerPopupConfig.html5Types[$attrs.type];\n isHtml5DateInput = true;\n } else {\n dateFormat = $attrs.uibDatepickerPopup || datepickerPopupConfig.datepickerPopup;\n $attrs.$observe('uibDatepickerPopup', function(value, oldValue) {\n var newDateFormat = value || datepickerPopupConfig.datepickerPopup;\n // Invalidate the $modelValue to ensure that formatters re-run\n // FIXME: Refactor when PR is merged: https://github.com/angular/angular.js/pull/10764\n if (newDateFormat !== dateFormat) {\n dateFormat = newDateFormat;\n ngModel.$modelValue = null;\n\n if (!dateFormat) {\n throw new Error('uibDatepickerPopup must have a date format specified.');\n }\n }\n });\n }\n\n if (!dateFormat) {\n throw new Error('uibDatepickerPopup must have a date format specified.');\n }\n\n if (isHtml5DateInput && $attrs.uibDatepickerPopup) {\n throw new Error('HTML5 date input types do not support custom formats.');\n }\n\n // popup element used to display calendar\n popupEl = angular.element('
');\n if (ngModelOptions) {\n timezone = ngModelOptions.timezone;\n $scope.ngModelOptions = angular.copy(ngModelOptions);\n $scope.ngModelOptions.timezone = null;\n if ($scope.ngModelOptions.updateOnDefault === true) {\n $scope.ngModelOptions.updateOn = $scope.ngModelOptions.updateOn ?\n $scope.ngModelOptions.updateOn + ' default' : 'default';\n }\n\n popupEl.attr('ng-model-options', 'ngModelOptions');\n } else {\n timezone = null;\n }\n\n popupEl.attr({\n 'ng-model': 'date',\n 'ng-change': 'dateSelection(date)',\n 'template-url': datepickerPopupTemplateUrl\n });\n\n // datepicker element\n datepickerEl = angular.element(popupEl.children()[0]);\n datepickerEl.attr('template-url', datepickerTemplateUrl);\n\n if (!$scope.datepickerOptions) {\n $scope.datepickerOptions = {};\n }\n\n if (isHtml5DateInput) {\n if ($attrs.type === 'month') {\n $scope.datepickerOptions.datepickerMode = 'month';\n $scope.datepickerOptions.minMode = 'month';\n }\n }\n\n datepickerEl.attr('datepicker-options', 'datepickerOptions');\n\n if (!isHtml5DateInput) {\n // Internal API to maintain the correct ng-invalid-[key] class\n ngModel.$$parserName = 'date';\n ngModel.$validators.date = validator;\n ngModel.$parsers.unshift(parseDate);\n ngModel.$formatters.push(function(value) {\n if (ngModel.$isEmpty(value)) {\n $scope.date = value;\n return value;\n }\n\n if (angular.isNumber(value)) {\n value = new Date(value);\n }\n\n $scope.date = dateParser.fromTimezone(value, timezone);\n\n return dateParser.filter($scope.date, dateFormat);\n });\n } else {\n ngModel.$formatters.push(function(value) {\n $scope.date = dateParser.fromTimezone(value, timezone);\n return value;\n });\n }\n\n // Detect changes in the view from the text box\n ngModel.$viewChangeListeners.push(function() {\n $scope.date = parseDateString(ngModel.$viewValue);\n });\n\n $element.on('keydown', inputKeydownBind);\n\n $popup = $compile(popupEl)($scope);\n // Prevent jQuery cache memory leak (template is now redundant after linking)\n popupEl.remove();\n\n if (appendToBody) {\n $document.find('body').append($popup);\n } else {\n $element.after($popup);\n }\n\n $scope.$on('$destroy', function() {\n if ($scope.isOpen === true) {\n if (!$rootScope.$$phase) {\n $scope.$apply(function() {\n $scope.isOpen = false;\n });\n }\n }\n\n $popup.remove();\n $element.off('keydown', inputKeydownBind);\n $document.off('click', documentClickBind);\n if (scrollParentEl) {\n scrollParentEl.off('scroll', positionPopup);\n }\n angular.element($window).off('resize', positionPopup);\n\n //Clear all watch listeners on destroy\n while (watchListeners.length) {\n watchListeners.shift()();\n }\n });\n };\n\n $scope.getText = function(key) {\n return $scope[key + 'Text'] || datepickerPopupConfig[key + 'Text'];\n };\n\n $scope.isDisabled = function(date) {\n if (date === 'today') {\n date = dateParser.fromTimezone(new Date(), timezone);\n }\n\n var dates = {};\n angular.forEach(['minDate', 'maxDate'], function(key) {\n if (!$scope.datepickerOptions[key]) {\n dates[key] = null;\n } else if (angular.isDate($scope.datepickerOptions[key])) {\n dates[key] = dateParser.fromTimezone(new Date($scope.datepickerOptions[key]), timezone);\n } else {\n if ($datepickerPopupLiteralWarning) {\n $log.warn('Literal date support has been deprecated, please switch to date object usage');\n }\n\n dates[key] = new Date(dateFilter($scope.datepickerOptions[key], 'medium'));\n }\n });\n\n return $scope.datepickerOptions &&\n dates.minDate && $scope.compare(date, dates.minDate) < 0 ||\n dates.maxDate && $scope.compare(date, dates.maxDate) > 0;\n };\n\n $scope.compare = function(date1, date2) {\n return new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n };\n\n // Inner change\n $scope.dateSelection = function(dt) {\n if (angular.isDefined(dt)) {\n $scope.date = dt;\n }\n var date = $scope.date ? dateParser.filter($scope.date, dateFormat) : null; // Setting to NULL is necessary for form validators to function\n $element.val(date);\n ngModel.$setViewValue(date);\n\n if (closeOnDateSelection) {\n $scope.isOpen = false;\n $element[0].focus();\n }\n };\n\n $scope.keydown = function(evt) {\n if (evt.which === 27) {\n evt.stopPropagation();\n $scope.isOpen = false;\n $element[0].focus();\n }\n };\n\n $scope.select = function(date, evt) {\n evt.stopPropagation();\n\n if (date === 'today') {\n var today = new Date();\n if (angular.isDate($scope.date)) {\n date = new Date($scope.date);\n date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\n } else {\n date = new Date(today.setHours(0, 0, 0, 0));\n }\n }\n $scope.dateSelection(date);\n };\n\n $scope.close = function(evt) {\n evt.stopPropagation();\n\n $scope.isOpen = false;\n $element[0].focus();\n };\n\n $scope.disabled = angular.isDefined($attrs.disabled) || false;\n if ($attrs.ngDisabled) {\n watchListeners.push($scope.$parent.$watch($parse($attrs.ngDisabled), function(disabled) {\n $scope.disabled = disabled;\n }));\n }\n\n $scope.$watch('isOpen', function(value) {\n if (value) {\n if (!$scope.disabled) {\n $timeout(function() {\n positionPopup();\n\n if (onOpenFocus) {\n $scope.$broadcast('uib:datepicker.focus');\n }\n\n $document.on('click', documentClickBind);\n\n var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;\n if (appendToBody || $position.parsePlacement(placement)[2]) {\n scrollParentEl = scrollParentEl || angular.element($position.scrollParent($element));\n if (scrollParentEl) {\n scrollParentEl.on('scroll', positionPopup);\n }\n } else {\n scrollParentEl = null;\n }\n\n angular.element($window).on('resize', positionPopup);\n }, 0, false);\n } else {\n $scope.isOpen = false;\n }\n } else {\n $document.off('click', documentClickBind);\n if (scrollParentEl) {\n scrollParentEl.off('scroll', positionPopup);\n }\n angular.element($window).off('resize', positionPopup);\n }\n });\n\n function cameltoDash(string) {\n return string.replace(/([A-Z])/g, function($1) { return '-' + $1.toLowerCase(); });\n }\n\n function parseDateString(viewValue) {\n var date = dateParser.parse(viewValue, dateFormat, $scope.date);\n if (isNaN(date)) {\n for (var i = 0; i < altInputFormats.length; i++) {\n date = dateParser.parse(viewValue, altInputFormats[i], $scope.date);\n if (!isNaN(date)) {\n return date;\n }\n }\n }\n return date;\n }\n\n function parseDate(viewValue) {\n if (angular.isNumber(viewValue)) {\n // presumably timestamp to date object\n viewValue = new Date(viewValue);\n }\n\n if (!viewValue) {\n return null;\n }\n\n if (angular.isDate(viewValue) && !isNaN(viewValue)) {\n return viewValue;\n }\n\n if (angular.isString(viewValue)) {\n var date = parseDateString(viewValue);\n if (!isNaN(date)) {\n return dateParser.toTimezone(date, timezone);\n }\n }\n\n return ngModel.$options && ngModel.$options.allowInvalid ? viewValue : undefined;\n }\n\n function validator(modelValue, viewValue) {\n var value = modelValue || viewValue;\n\n if (!$attrs.ngRequired && !value) {\n return true;\n }\n\n if (angular.isNumber(value)) {\n value = new Date(value);\n }\n\n if (!value) {\n return true;\n }\n\n if (angular.isDate(value) && !isNaN(value)) {\n return true;\n }\n\n if (angular.isString(value)) {\n return !isNaN(parseDateString(viewValue));\n }\n\n return false;\n }\n\n function documentClickBind(event) {\n if (!$scope.isOpen && $scope.disabled) {\n return;\n }\n\n var popup = $popup[0];\n var dpContainsTarget = $element[0].contains(event.target);\n // The popup node may not be an element node\n // In some browsers (IE) only element nodes have the 'contains' function\n var popupContainsTarget = popup.contains !== undefined && popup.contains(event.target);\n if ($scope.isOpen && !(dpContainsTarget || popupContainsTarget)) {\n $scope.$apply(function() {\n $scope.isOpen = false;\n });\n }\n }\n\n function inputKeydownBind(evt) {\n if (evt.which === 27 && $scope.isOpen) {\n evt.preventDefault();\n evt.stopPropagation();\n $scope.$apply(function() {\n $scope.isOpen = false;\n });\n $element[0].focus();\n } else if (evt.which === 40 && !$scope.isOpen) {\n evt.preventDefault();\n evt.stopPropagation();\n $scope.$apply(function() {\n $scope.isOpen = true;\n });\n }\n }\n\n function positionPopup() {\n if ($scope.isOpen) {\n var dpElement = angular.element($popup[0].querySelector('.uib-datepicker-popup'));\n var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;\n var position = $position.positionElements($element, dpElement, placement, appendToBody);\n dpElement.css({top: position.top + 'px', left: position.left + 'px'});\n if (dpElement.hasClass('uib-position-measure')) {\n dpElement.removeClass('uib-position-measure');\n }\n }\n }\n\n $scope.$on('uib:datepicker.mode', function() {\n $timeout(positionPopup, 0, false);\n });\n}])\n\n.directive('uibDatepickerPopup', function() {\n return {\n require: ['ngModel', 'uibDatepickerPopup'],\n controller: 'UibDatepickerPopupController',\n scope: {\n datepickerOptions: '=?',\n isOpen: '=?',\n currentText: '@',\n clearText: '@',\n closeText: '@'\n },\n link: function(scope, element, attrs, ctrls) {\n var ngModel = ctrls[0],\n ctrl = ctrls[1];\n\n ctrl.init(ngModel);\n }\n };\n})\n\n.directive('uibDatepickerPopupWrap', function() {\n return {\n replace: true,\n transclude: true,\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/datepickerPopup/popup.html';\n }\n };\n});\n\nangular.module('ui.bootstrap.debounce', [])\n/**\n * A helper, internal service that debounces a function\n */\n .factory('$$debounce', ['$timeout', function($timeout) {\n return function(callback, debounceTime) {\n var timeoutPromise;\n\n return function() {\n var self = this;\n var args = Array.prototype.slice.call(arguments);\n if (timeoutPromise) {\n $timeout.cancel(timeoutPromise);\n }\n\n timeoutPromise = $timeout(function() {\n callback.apply(self, args);\n }, debounceTime);\n };\n };\n }]);\n\nangular.module('ui.bootstrap.dropdown', ['ui.bootstrap.position'])\n\n.constant('uibDropdownConfig', {\n appendToOpenClass: 'uib-dropdown-open',\n openClass: 'open'\n})\n\n.service('uibDropdownService', ['$document', '$rootScope', function($document, $rootScope) {\n var openScope = null;\n\n this.open = function(dropdownScope, element) {\n if (!openScope) {\n $document.on('click', closeDropdown);\n element.on('keydown', keybindFilter);\n }\n\n if (openScope && openScope !== dropdownScope) {\n openScope.isOpen = false;\n }\n\n openScope = dropdownScope;\n };\n\n this.close = function(dropdownScope, element) {\n if (openScope === dropdownScope) {\n openScope = null;\n $document.off('click', closeDropdown);\n element.off('keydown', keybindFilter);\n }\n };\n\n var closeDropdown = function(evt) {\n // This method may still be called during the same mouse event that\n // unbound this event handler. So check openScope before proceeding.\n if (!openScope) { return; }\n\n if (evt && openScope.getAutoClose() === 'disabled') { return; }\n\n if (evt && evt.which === 3) { return; }\n\n var toggleElement = openScope.getToggleElement();\n if (evt && toggleElement && toggleElement[0].contains(evt.target)) {\n return;\n }\n\n var dropdownElement = openScope.getDropdownElement();\n if (evt && openScope.getAutoClose() === 'outsideClick' &&\n dropdownElement && dropdownElement[0].contains(evt.target)) {\n return;\n }\n\n openScope.isOpen = false;\n\n if (!$rootScope.$$phase) {\n openScope.$apply();\n }\n };\n\n var keybindFilter = function(evt) {\n if (evt.which === 27) {\n evt.stopPropagation();\n openScope.focusToggleElement();\n closeDropdown();\n } else if (openScope.isKeynavEnabled() && [38, 40].indexOf(evt.which) !== -1 && openScope.isOpen) {\n evt.preventDefault();\n evt.stopPropagation();\n openScope.focusDropdownEntry(evt.which);\n }\n };\n}])\n\n.controller('UibDropdownController', ['$scope', '$element', '$attrs', '$parse', 'uibDropdownConfig', 'uibDropdownService', '$animate', '$uibPosition', '$document', '$compile', '$templateRequest', function($scope, $element, $attrs, $parse, dropdownConfig, uibDropdownService, $animate, $position, $document, $compile, $templateRequest) {\n var self = this,\n scope = $scope.$new(), // create a child scope so we are not polluting original one\n templateScope,\n appendToOpenClass = dropdownConfig.appendToOpenClass,\n openClass = dropdownConfig.openClass,\n getIsOpen,\n setIsOpen = angular.noop,\n toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop,\n appendToBody = false,\n appendTo = null,\n keynavEnabled = false,\n selectedOption = null,\n body = $document.find('body');\n\n $element.addClass('dropdown');\n\n this.init = function() {\n if ($attrs.isOpen) {\n getIsOpen = $parse($attrs.isOpen);\n setIsOpen = getIsOpen.assign;\n\n $scope.$watch(getIsOpen, function(value) {\n scope.isOpen = !!value;\n });\n }\n\n if (angular.isDefined($attrs.dropdownAppendTo)) {\n var appendToEl = $parse($attrs.dropdownAppendTo)(scope);\n if (appendToEl) {\n appendTo = angular.element(appendToEl);\n }\n }\n\n appendToBody = angular.isDefined($attrs.dropdownAppendToBody);\n keynavEnabled = angular.isDefined($attrs.keyboardNav);\n\n if (appendToBody && !appendTo) {\n appendTo = body;\n }\n\n if (appendTo && self.dropdownMenu) {\n appendTo.append(self.dropdownMenu);\n $element.on('$destroy', function handleDestroyEvent() {\n self.dropdownMenu.remove();\n });\n }\n };\n\n this.toggle = function(open) {\n scope.isOpen = arguments.length ? !!open : !scope.isOpen;\n if (angular.isFunction(setIsOpen)) {\n setIsOpen(scope, scope.isOpen);\n }\n\n return scope.isOpen;\n };\n\n // Allow other directives to watch status\n this.isOpen = function() {\n return scope.isOpen;\n };\n\n scope.getToggleElement = function() {\n return self.toggleElement;\n };\n\n scope.getAutoClose = function() {\n return $attrs.autoClose || 'always'; //or 'outsideClick' or 'disabled'\n };\n\n scope.getElement = function() {\n return $element;\n };\n\n scope.isKeynavEnabled = function() {\n return keynavEnabled;\n };\n\n scope.focusDropdownEntry = function(keyCode) {\n var elems = self.dropdownMenu ? //If append to body is used.\n angular.element(self.dropdownMenu).find('a') :\n $element.find('ul').eq(0).find('a');\n\n switch (keyCode) {\n case 40: {\n if (!angular.isNumber(self.selectedOption)) {\n self.selectedOption = 0;\n } else {\n self.selectedOption = self.selectedOption === elems.length - 1 ?\n self.selectedOption :\n self.selectedOption + 1;\n }\n break;\n }\n case 38: {\n if (!angular.isNumber(self.selectedOption)) {\n self.selectedOption = elems.length - 1;\n } else {\n self.selectedOption = self.selectedOption === 0 ?\n 0 : self.selectedOption - 1;\n }\n break;\n }\n }\n elems[self.selectedOption].focus();\n };\n\n scope.getDropdownElement = function() {\n return self.dropdownMenu;\n };\n\n scope.focusToggleElement = function() {\n if (self.toggleElement) {\n self.toggleElement[0].focus();\n }\n };\n\n scope.$watch('isOpen', function(isOpen, wasOpen) {\n if (appendTo && self.dropdownMenu) {\n var pos = $position.positionElements($element, self.dropdownMenu, 'bottom-left', true),\n css,\n rightalign,\n scrollbarWidth;\n\n css = {\n top: pos.top + 'px',\n display: isOpen ? 'block' : 'none'\n };\n\n rightalign = self.dropdownMenu.hasClass('dropdown-menu-right');\n if (!rightalign) {\n css.left = pos.left + 'px';\n css.right = 'auto';\n } else {\n css.left = 'auto';\n scrollbarWidth = $position.scrollbarWidth(true);\n css.right = window.innerWidth - scrollbarWidth -\n (pos.left + $element.prop('offsetWidth')) + 'px';\n }\n\n // Need to adjust our positioning to be relative to the appendTo container\n // if it's not the body element\n if (!appendToBody) {\n var appendOffset = $position.offset(appendTo);\n\n css.top = pos.top - appendOffset.top + 'px';\n\n if (!rightalign) {\n css.left = pos.left - appendOffset.left + 'px';\n } else {\n css.right = window.innerWidth -\n (pos.left - appendOffset.left + $element.prop('offsetWidth')) + 'px';\n }\n }\n\n self.dropdownMenu.css(css);\n }\n\n var openContainer = appendTo ? appendTo : $element;\n var hasOpenClass = openContainer.hasClass(appendTo ? appendToOpenClass : openClass);\n\n if (hasOpenClass === !isOpen) {\n $animate[isOpen ? 'addClass' : 'removeClass'](openContainer, appendTo ? appendToOpenClass : openClass).then(function() {\n if (angular.isDefined(isOpen) && isOpen !== wasOpen) {\n toggleInvoker($scope, { open: !!isOpen });\n }\n });\n }\n\n if (isOpen) {\n if (self.dropdownMenuTemplateUrl) {\n $templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent) {\n templateScope = scope.$new();\n $compile(tplContent.trim())(templateScope, function(dropdownElement) {\n var newEl = dropdownElement;\n self.dropdownMenu.replaceWith(newEl);\n self.dropdownMenu = newEl;\n });\n });\n }\n\n scope.focusToggleElement();\n uibDropdownService.open(scope, $element);\n } else {\n if (self.dropdownMenuTemplateUrl) {\n if (templateScope) {\n templateScope.$destroy();\n }\n var newEl = angular.element('');\n self.dropdownMenu.replaceWith(newEl);\n self.dropdownMenu = newEl;\n }\n\n uibDropdownService.close(scope, $element);\n self.selectedOption = null;\n }\n\n if (angular.isFunction(setIsOpen)) {\n setIsOpen($scope, isOpen);\n }\n });\n}])\n\n.directive('uibDropdown', function() {\n return {\n controller: 'UibDropdownController',\n link: function(scope, element, attrs, dropdownCtrl) {\n dropdownCtrl.init();\n }\n };\n})\n\n.directive('uibDropdownMenu', function() {\n return {\n restrict: 'A',\n require: '?^uibDropdown',\n link: function(scope, element, attrs, dropdownCtrl) {\n if (!dropdownCtrl || angular.isDefined(attrs.dropdownNested)) {\n return;\n }\n\n element.addClass('dropdown-menu');\n\n var tplUrl = attrs.templateUrl;\n if (tplUrl) {\n dropdownCtrl.dropdownMenuTemplateUrl = tplUrl;\n }\n\n if (!dropdownCtrl.dropdownMenu) {\n dropdownCtrl.dropdownMenu = element;\n }\n }\n };\n})\n\n.directive('uibDropdownToggle', function() {\n return {\n require: '?^uibDropdown',\n link: function(scope, element, attrs, dropdownCtrl) {\n if (!dropdownCtrl) {\n return;\n }\n\n element.addClass('dropdown-toggle');\n\n dropdownCtrl.toggleElement = element;\n\n var toggleDropdown = function(event) {\n event.preventDefault();\n\n if (!element.hasClass('disabled') && !attrs.disabled) {\n scope.$apply(function() {\n dropdownCtrl.toggle();\n });\n }\n };\n\n element.bind('click', toggleDropdown);\n\n // WAI-ARIA\n element.attr({ 'aria-haspopup': true, 'aria-expanded': false });\n scope.$watch(dropdownCtrl.isOpen, function(isOpen) {\n element.attr('aria-expanded', !!isOpen);\n });\n\n scope.$on('$destroy', function() {\n element.unbind('click', toggleDropdown);\n });\n }\n };\n});\n\nangular.module('ui.bootstrap.stackedMap', [])\n/**\n * A helper, internal data structure that acts as a map but also allows getting / removing\n * elements in the LIFO order\n */\n .factory('$$stackedMap', function() {\n return {\n createNew: function() {\n var stack = [];\n\n return {\n add: function(key, value) {\n stack.push({\n key: key,\n value: value\n });\n },\n get: function(key) {\n for (var i = 0; i < stack.length; i++) {\n if (key === stack[i].key) {\n return stack[i];\n }\n }\n },\n keys: function() {\n var keys = [];\n for (var i = 0; i < stack.length; i++) {\n keys.push(stack[i].key);\n }\n return keys;\n },\n top: function() {\n return stack[stack.length - 1];\n },\n remove: function(key) {\n var idx = -1;\n for (var i = 0; i < stack.length; i++) {\n if (key === stack[i].key) {\n idx = i;\n break;\n }\n }\n return stack.splice(idx, 1)[0];\n },\n removeTop: function() {\n return stack.splice(stack.length - 1, 1)[0];\n },\n length: function() {\n return stack.length;\n }\n };\n }\n };\n });\nangular.module('ui.bootstrap.modal', ['ui.bootstrap.stackedMap', 'ui.bootstrap.position'])\n/**\n * A helper, internal data structure that stores all references attached to key\n */\n .factory('$$multiMap', function() {\n return {\n createNew: function() {\n var map = {};\n\n return {\n entries: function() {\n return Object.keys(map).map(function(key) {\n return {\n key: key,\n value: map[key]\n };\n });\n },\n get: function(key) {\n return map[key];\n },\n hasKey: function(key) {\n return !!map[key];\n },\n keys: function() {\n return Object.keys(map);\n },\n put: function(key, value) {\n if (!map[key]) {\n map[key] = [];\n }\n\n map[key].push(value);\n },\n remove: function(key, value) {\n var values = map[key];\n\n if (!values) {\n return;\n }\n\n var idx = values.indexOf(value);\n\n if (idx !== -1) {\n values.splice(idx, 1);\n }\n\n if (!values.length) {\n delete map[key];\n }\n }\n };\n }\n };\n })\n\n/**\n * Pluggable resolve mechanism for the modal resolve resolution\n * Supports UI Router's $resolve service\n */\n .provider('$uibResolve', function() {\n var resolve = this;\n this.resolver = null;\n\n this.setResolver = function(resolver) {\n this.resolver = resolver;\n };\n\n this.$get = ['$injector', '$q', function($injector, $q) {\n var resolver = resolve.resolver ? $injector.get(resolve.resolver) : null;\n return {\n resolve: function(invocables, locals, parent, self) {\n if (resolver) {\n return resolver.resolve(invocables, locals, parent, self);\n }\n\n var promises = [];\n\n angular.forEach(invocables, function(value) {\n if (angular.isFunction(value) || angular.isArray(value)) {\n promises.push($q.resolve($injector.invoke(value)));\n } else if (angular.isString(value)) {\n promises.push($q.resolve($injector.get(value)));\n } else {\n promises.push($q.resolve(value));\n }\n });\n\n return $q.all(promises).then(function(resolves) {\n var resolveObj = {};\n var resolveIter = 0;\n angular.forEach(invocables, function(value, key) {\n resolveObj[key] = resolves[resolveIter++];\n });\n\n return resolveObj;\n });\n }\n };\n }];\n })\n\n/**\n * A helper directive for the $modal service. It creates a backdrop element.\n */\n .directive('uibModalBackdrop', ['$animate', '$injector', '$uibModalStack',\n function($animate, $injector, $modalStack) {\n return {\n replace: true,\n templateUrl: 'uib/template/modal/backdrop.html',\n compile: function(tElement, tAttrs) {\n tElement.addClass(tAttrs.backdropClass);\n return linkFn;\n }\n };\n\n function linkFn(scope, element, attrs) {\n if (attrs.modalInClass) {\n $animate.addClass(element, attrs.modalInClass);\n\n scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\n var done = setIsAsync();\n if (scope.modalOptions.animation) {\n $animate.removeClass(element, attrs.modalInClass).then(done);\n } else {\n done();\n }\n });\n }\n }\n }])\n\n .directive('uibModalWindow', ['$uibModalStack', '$q', '$animateCss', '$document',\n function($modalStack, $q, $animateCss, $document) {\n return {\n scope: {\n index: '@'\n },\n replace: true,\n transclude: true,\n templateUrl: function(tElement, tAttrs) {\n return tAttrs.templateUrl || 'uib/template/modal/window.html';\n },\n link: function(scope, element, attrs) {\n element.addClass(attrs.windowClass || '');\n element.addClass(attrs.windowTopClass || '');\n scope.size = attrs.size;\n\n scope.close = function(evt) {\n var modal = $modalStack.getTop();\n if (modal && modal.value.backdrop &&\n modal.value.backdrop !== 'static' &&\n evt.target === evt.currentTarget) {\n evt.preventDefault();\n evt.stopPropagation();\n $modalStack.dismiss(modal.key, 'backdrop click');\n }\n };\n\n // moved from template to fix issue #2280\n element.on('click', scope.close);\n\n // This property is only added to the scope for the purpose of detecting when this directive is rendered.\n // We can detect that by using this property in the template associated with this directive and then use\n // {@link Attribute#$observe} on it. For more details please see {@link TableColumnResize}.\n scope.$isRendered = true;\n\n // Deferred object that will be resolved when this modal is render.\n var modalRenderDeferObj = $q.defer();\n // Observe function will be called on next digest cycle after compilation, ensuring that the DOM is ready.\n // In order to use this way of finding whether DOM is ready, we need to observe a scope property used in modal's template.\n attrs.$observe('modalRender', function(value) {\n if (value === 'true') {\n modalRenderDeferObj.resolve();\n }\n });\n\n modalRenderDeferObj.promise.then(function() {\n var animationPromise = null;\n\n if (attrs.modalInClass) {\n animationPromise = $animateCss(element, {\n addClass: attrs.modalInClass\n }).start();\n\n scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\n var done = setIsAsync();\n $animateCss(element, {\n removeClass: attrs.modalInClass\n }).start().then(done);\n });\n }\n\n\n $q.when(animationPromise).then(function() {\n // Notify {@link $modalStack} that modal is rendered.\n var modal = $modalStack.getTop();\n if (modal) {\n $modalStack.modalRendered(modal.key);\n }\n\n /**\n * If something within the freshly-opened modal already has focus (perhaps via a\n * directive that causes focus). then no need to try and focus anything.\n */\n if (!($document[0].activeElement && element[0].contains($document[0].activeElement))) {\n var inputWithAutofocus = element[0].querySelector('[autofocus]');\n /**\n * Auto-focusing of a freshly-opened modal element causes any child elements\n * with the autofocus attribute to lose focus. This is an issue on touch\n * based devices which will show and then hide the onscreen keyboard.\n * Attempts to refocus the autofocus element via JavaScript will not reopen\n * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus\n * the modal element if the modal does not contain an autofocus element.\n */\n if (inputWithAutofocus) {\n inputWithAutofocus.focus();\n } else {\n element[0].focus();\n }\n }\n });\n });\n }\n };\n }])\n\n .directive('uibModalAnimationClass', function() {\n return {\n compile: function(tElement, tAttrs) {\n if (tAttrs.modalAnimation) {\n tElement.addClass(tAttrs.uibModalAnimationClass);\n }\n }\n };\n })\n\n .directive('uibModalTransclude', function() {\n return {\n link: function(scope, element, attrs, controller, transclude) {\n transclude(scope.$parent, function(clone) {\n element.empty();\n element.append(clone);\n });\n }\n };\n })\n\n .factory('$uibModalStack', ['$animate', '$animateCss', '$document',\n '$compile', '$rootScope', '$q', '$$multiMap', '$$stackedMap', '$uibPosition',\n function($animate, $animateCss, $document, $compile, $rootScope, $q, $$multiMap, $$stackedMap, $uibPosition) {\n var OPENED_MODAL_CLASS = 'modal-open';\n\n var backdropDomEl, backdropScope;\n var openedWindows = $$stackedMap.createNew();\n var openedClasses = $$multiMap.createNew();\n var $modalStack = {\n NOW_CLOSING_EVENT: 'modal.stack.now-closing'\n };\n var topModalIndex = 0;\n var previousTopOpenedModal = null;\n\n //Modal focus behavior\n var tabableSelector = 'a[href], area[href], input:not([disabled]), ' +\n 'button:not([disabled]),select:not([disabled]), textarea:not([disabled]), ' +\n 'iframe, object, embed, *[tabindex], *[contenteditable=true]';\n var scrollbarPadding;\n\n function isVisible(element) {\n return !!(element.offsetWidth ||\n element.offsetHeight ||\n element.getClientRects().length);\n }\n\n function backdropIndex() {\n var topBackdropIndex = -1;\n var opened = openedWindows.keys();\n for (var i = 0; i < opened.length; i++) {\n if (openedWindows.get(opened[i]).value.backdrop) {\n topBackdropIndex = i;\n }\n }\n\n // If any backdrop exist, ensure that it's index is always\n // right below the top modal\n if (topBackdropIndex > -1 && topBackdropIndex < topModalIndex) {\n topBackdropIndex = topModalIndex;\n }\n return topBackdropIndex;\n }\n\n $rootScope.$watch(backdropIndex, function(newBackdropIndex) {\n if (backdropScope) {\n backdropScope.index = newBackdropIndex;\n }\n });\n\n function removeModalWindow(modalInstance, elementToReceiveFocus) {\n var modalWindow = openedWindows.get(modalInstance).value;\n var appendToElement = modalWindow.appendTo;\n\n //clean up the stack\n openedWindows.remove(modalInstance);\n previousTopOpenedModal = openedWindows.top();\n if (previousTopOpenedModal) {\n topModalIndex = parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10);\n }\n\n removeAfterAnimate(modalWindow.modalDomEl, modalWindow.modalScope, function() {\n var modalBodyClass = modalWindow.openedClass || OPENED_MODAL_CLASS;\n openedClasses.remove(modalBodyClass, modalInstance);\n var areAnyOpen = openedClasses.hasKey(modalBodyClass);\n appendToElement.toggleClass(modalBodyClass, areAnyOpen);\n if (!areAnyOpen && scrollbarPadding && scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\n if (scrollbarPadding.originalRight) {\n appendToElement.css({paddingRight: scrollbarPadding.originalRight + 'px'});\n } else {\n appendToElement.css({paddingRight: ''});\n }\n scrollbarPadding = null;\n }\n toggleTopWindowClass(true);\n }, modalWindow.closedDeferred);\n checkRemoveBackdrop();\n\n //move focus to specified element if available, or else to body\n if (elementToReceiveFocus && elementToReceiveFocus.focus) {\n elementToReceiveFocus.focus();\n } else if (appendToElement.focus) {\n appendToElement.focus();\n }\n }\n\n // Add or remove \"windowTopClass\" from the top window in the stack\n function toggleTopWindowClass(toggleSwitch) {\n var modalWindow;\n\n if (openedWindows.length() > 0) {\n modalWindow = openedWindows.top().value;\n modalWindow.modalDomEl.toggleClass(modalWindow.windowTopClass || '', toggleSwitch);\n }\n }\n\n function checkRemoveBackdrop() {\n //remove backdrop if no longer needed\n if (backdropDomEl && backdropIndex() === -1) {\n var backdropScopeRef = backdropScope;\n removeAfterAnimate(backdropDomEl, backdropScope, function() {\n backdropScopeRef = null;\n });\n backdropDomEl = undefined;\n backdropScope = undefined;\n }\n }\n\n function removeAfterAnimate(domEl, scope, done, closedDeferred) {\n var asyncDeferred;\n var asyncPromise = null;\n var setIsAsync = function() {\n if (!asyncDeferred) {\n asyncDeferred = $q.defer();\n asyncPromise = asyncDeferred.promise;\n }\n\n return function asyncDone() {\n asyncDeferred.resolve();\n };\n };\n scope.$broadcast($modalStack.NOW_CLOSING_EVENT, setIsAsync);\n\n // Note that it's intentional that asyncPromise might be null.\n // That's when setIsAsync has not been called during the\n // NOW_CLOSING_EVENT broadcast.\n return $q.when(asyncPromise).then(afterAnimating);\n\n function afterAnimating() {\n if (afterAnimating.done) {\n return;\n }\n afterAnimating.done = true;\n\n $animate.leave(domEl).then(function() {\n domEl.remove();\n if (closedDeferred) {\n closedDeferred.resolve();\n }\n });\n\n scope.$destroy();\n if (done) {\n done();\n }\n }\n }\n\n $document.on('keydown', keydownListener);\n\n $rootScope.$on('$destroy', function() {\n $document.off('keydown', keydownListener);\n });\n\n function keydownListener(evt) {\n if (evt.isDefaultPrevented()) {\n return evt;\n }\n\n var modal = openedWindows.top();\n if (modal) {\n switch (evt.which) {\n case 27: {\n if (modal.value.keyboard) {\n evt.preventDefault();\n $rootScope.$apply(function() {\n $modalStack.dismiss(modal.key, 'escape key press');\n });\n }\n break;\n }\n case 9: {\n var list = $modalStack.loadFocusElementList(modal);\n var focusChanged = false;\n if (evt.shiftKey) {\n if ($modalStack.isFocusInFirstItem(evt, list) || $modalStack.isModalFocused(evt, modal)) {\n focusChanged = $modalStack.focusLastFocusableElement(list);\n }\n } else {\n if ($modalStack.isFocusInLastItem(evt, list)) {\n focusChanged = $modalStack.focusFirstFocusableElement(list);\n }\n }\n\n if (focusChanged) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n break;\n }\n }\n }\n }\n\n $modalStack.open = function(modalInstance, modal) {\n var modalOpener = $document[0].activeElement,\n modalBodyClass = modal.openedClass || OPENED_MODAL_CLASS;\n\n toggleTopWindowClass(false);\n\n // Store the current top first, to determine what index we ought to use\n // for the current top modal\n previousTopOpenedModal = openedWindows.top();\n\n openedWindows.add(modalInstance, {\n deferred: modal.deferred,\n renderDeferred: modal.renderDeferred,\n closedDeferred: modal.closedDeferred,\n modalScope: modal.scope,\n backdrop: modal.backdrop,\n keyboard: modal.keyboard,\n openedClass: modal.openedClass,\n windowTopClass: modal.windowTopClass,\n animation: modal.animation,\n appendTo: modal.appendTo\n });\n\n openedClasses.put(modalBodyClass, modalInstance);\n\n var appendToElement = modal.appendTo,\n currBackdropIndex = backdropIndex();\n\n if (!appendToElement.length) {\n throw new Error('appendTo element not found. Make sure that the element passed is in DOM.');\n }\n\n if (currBackdropIndex >= 0 && !backdropDomEl) {\n backdropScope = $rootScope.$new(true);\n backdropScope.modalOptions = modal;\n backdropScope.index = currBackdropIndex;\n backdropDomEl = angular.element('
');\n backdropDomEl.attr('backdrop-class', modal.backdropClass);\n if (modal.animation) {\n backdropDomEl.attr('modal-animation', 'true');\n }\n $compile(backdropDomEl)(backdropScope);\n $animate.enter(backdropDomEl, appendToElement);\n scrollbarPadding = $uibPosition.scrollbarPadding(appendToElement);\n if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\n appendToElement.css({paddingRight: scrollbarPadding.right + 'px'});\n }\n }\n\n // Set the top modal index based on the index of the previous top modal\n topModalIndex = previousTopOpenedModal ? parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10) + 1 : 0;\n var angularDomEl = angular.element('
');\n angularDomEl.attr({\n 'template-url': modal.windowTemplateUrl,\n 'window-class': modal.windowClass,\n 'window-top-class': modal.windowTopClass,\n 'size': modal.size,\n 'index': topModalIndex,\n 'animate': 'animate'\n }).html(modal.content);\n if (modal.animation) {\n angularDomEl.attr('modal-animation', 'true');\n }\n\n appendToElement.addClass(modalBodyClass);\n $animate.enter($compile(angularDomEl)(modal.scope), appendToElement);\n\n openedWindows.top().value.modalDomEl = angularDomEl;\n openedWindows.top().value.modalOpener = modalOpener;\n };\n\n function broadcastClosing(modalWindow, resultOrReason, closing) {\n return !modalWindow.value.modalScope.$broadcast('modal.closing', resultOrReason, closing).defaultPrevented;\n }\n\n $modalStack.close = function(modalInstance, result) {\n var modalWindow = openedWindows.get(modalInstance);\n if (modalWindow && broadcastClosing(modalWindow, result, true)) {\n modalWindow.value.modalScope.$$uibDestructionScheduled = true;\n modalWindow.value.deferred.resolve(result);\n removeModalWindow(modalInstance, modalWindow.value.modalOpener);\n return true;\n }\n return !modalWindow;\n };\n\n $modalStack.dismiss = function(modalInstance, reason) {\n var modalWindow = openedWindows.get(modalInstance);\n if (modalWindow && broadcastClosing(modalWindow, reason, false)) {\n modalWindow.value.modalScope.$$uibDestructionScheduled = true;\n modalWindow.value.deferred.reject(reason);\n removeModalWindow(modalInstance, modalWindow.value.modalOpener);\n return true;\n }\n return !modalWindow;\n };\n\n $modalStack.dismissAll = function(reason) {\n var topModal = this.getTop();\n while (topModal && this.dismiss(topModal.key, reason)) {\n topModal = this.getTop();\n }\n };\n\n $modalStack.getTop = function() {\n return openedWindows.top();\n };\n\n $modalStack.modalRendered = function(modalInstance) {\n var modalWindow = openedWindows.get(modalInstance);\n if (modalWindow) {\n modalWindow.value.renderDeferred.resolve();\n }\n };\n\n $modalStack.focusFirstFocusableElement = function(list) {\n if (list.length > 0) {\n list[0].focus();\n return true;\n }\n return false;\n };\n\n $modalStack.focusLastFocusableElement = function(list) {\n if (list.length > 0) {\n list[list.length - 1].focus();\n return true;\n }\n return false;\n };\n\n $modalStack.isModalFocused = function(evt, modalWindow) {\n if (evt && modalWindow) {\n var modalDomEl = modalWindow.value.modalDomEl;\n if (modalDomEl && modalDomEl.length) {\n return (evt.target || evt.srcElement) === modalDomEl[0];\n }\n }\n return false;\n };\n\n $modalStack.isFocusInFirstItem = function(evt, list) {\n if (list.length > 0) {\n return (evt.target || evt.srcElement) === list[0];\n }\n return false;\n };\n\n $modalStack.isFocusInLastItem = function(evt, list) {\n if (list.length > 0) {\n return (evt.target || evt.srcElement) === list[list.length - 1];\n }\n return false;\n };\n\n $modalStack.loadFocusElementList = function(modalWindow) {\n if (modalWindow) {\n var modalDomE1 = modalWindow.value.modalDomEl;\n if (modalDomE1 && modalDomE1.length) {\n var elements = modalDomE1[0].querySelectorAll(tabableSelector);\n return elements ?\n Array.prototype.filter.call(elements, function(element) {\n return isVisible(element);\n }) : elements;\n }\n }\n };\n\n return $modalStack;\n }])\n\n .provider('$uibModal', function() {\n var $modalProvider = {\n options: {\n animation: true,\n backdrop: true, //can also be false or 'static'\n keyboard: true\n },\n $get: ['$rootScope', '$q', '$document', '$templateRequest', '$controller', '$uibResolve', '$uibModalStack',\n function ($rootScope, $q, $document, $templateRequest, $controller, $uibResolve, $modalStack) {\n var $modal = {};\n\n function getTemplatePromise(options) {\n return options.template ? $q.when(options.template) :\n $templateRequest(angular.isFunction(options.templateUrl) ?\n options.templateUrl() : options.templateUrl);\n }\n\n var promiseChain = null;\n $modal.getPromiseChain = function() {\n return promiseChain;\n };\n\n $modal.open = function(modalOptions) {\n var modalResultDeferred = $q.defer();\n var modalOpenedDeferred = $q.defer();\n var modalClosedDeferred = $q.defer();\n var modalRenderDeferred = $q.defer();\n\n //prepare an instance of a modal to be injected into controllers and returned to a caller\n var modalInstance = {\n result: modalResultDeferred.promise,\n opened: modalOpenedDeferred.promise,\n closed: modalClosedDeferred.promise,\n rendered: modalRenderDeferred.promise,\n close: function (result) {\n return $modalStack.close(modalInstance, result);\n },\n dismiss: function (reason) {\n return $modalStack.dismiss(modalInstance, reason);\n }\n };\n\n //merge and clean up options\n modalOptions = angular.extend({}, $modalProvider.options, modalOptions);\n modalOptions.resolve = modalOptions.resolve || {};\n modalOptions.appendTo = modalOptions.appendTo || $document.find('body').eq(0);\n\n //verify options\n if (!modalOptions.template && !modalOptions.templateUrl) {\n throw new Error('One of template or templateUrl options is required.');\n }\n\n var templateAndResolvePromise =\n $q.all([getTemplatePromise(modalOptions), $uibResolve.resolve(modalOptions.resolve, {}, null, null)]);\n\n function resolveWithTemplate() {\n return templateAndResolvePromise;\n }\n\n // Wait for the resolution of the existing promise chain.\n // Then switch to our own combined promise dependency (regardless of how the previous modal fared).\n // Then add to $modalStack and resolve opened.\n // Finally clean up the chain variable if no subsequent modal has overwritten it.\n var samePromise;\n samePromise = promiseChain = $q.all([promiseChain])\n .then(resolveWithTemplate, resolveWithTemplate)\n .then(function resolveSuccess(tplAndVars) {\n var providedScope = modalOptions.scope || $rootScope;\n\n var modalScope = providedScope.$new();\n modalScope.$close = modalInstance.close;\n modalScope.$dismiss = modalInstance.dismiss;\n\n modalScope.$on('$destroy', function() {\n if (!modalScope.$$uibDestructionScheduled) {\n modalScope.$dismiss('$uibUnscheduledDestruction');\n }\n });\n\n var ctrlInstance, ctrlInstantiate, ctrlLocals = {};\n\n //controllers\n if (modalOptions.controller) {\n ctrlLocals.$scope = modalScope;\n ctrlLocals.$scope.$resolve = {};\n ctrlLocals.$uibModalInstance = modalInstance;\n angular.forEach(tplAndVars[1], function(value, key) {\n ctrlLocals[key] = value;\n ctrlLocals.$scope.$resolve[key] = value;\n });\n\n // the third param will make the controller instantiate later,private api\n // @see https://github.com/angular/angular.js/blob/master/src/ng/controller.js#L126\n ctrlInstantiate = $controller(modalOptions.controller, ctrlLocals, true, modalOptions.controllerAs);\n if (modalOptions.controllerAs && modalOptions.bindToController) {\n ctrlInstance = ctrlInstantiate.instance;\n ctrlInstance.$close = modalScope.$close;\n ctrlInstance.$dismiss = modalScope.$dismiss;\n angular.extend(ctrlInstance, {\n $resolve: ctrlLocals.$scope.$resolve\n }, providedScope);\n }\n\n ctrlInstance = ctrlInstantiate();\n\n if (angular.isFunction(ctrlInstance.$onInit)) {\n ctrlInstance.$onInit();\n }\n }\n\n $modalStack.open(modalInstance, {\n scope: modalScope,\n deferred: modalResultDeferred,\n renderDeferred: modalRenderDeferred,\n closedDeferred: modalClosedDeferred,\n content: tplAndVars[0],\n animation: modalOptions.animation,\n backdrop: modalOptions.backdrop,\n keyboard: modalOptions.keyboard,\n backdropClass: modalOptions.backdropClass,\n windowTopClass: modalOptions.windowTopClass,\n windowClass: modalOptions.windowClass,\n windowTemplateUrl: modalOptions.windowTemplateUrl,\n size: modalOptions.size,\n openedClass: modalOptions.openedClass,\n appendTo: modalOptions.appendTo\n });\n modalOpenedDeferred.resolve(true);\n\n }, function resolveError(reason) {\n modalOpenedDeferred.reject(reason);\n modalResultDeferred.reject(reason);\n })['finally'](function() {\n if (promiseChain === samePromise) {\n promiseChain = null;\n }\n });\n\n return modalInstance;\n };\n\n return $modal;\n }\n ]\n };\n\n return $modalProvider;\n });\n\nangular.module('ui.bootstrap.paging', [])\n/**\n * Helper internal service for generating common controller code between the\n * pager and pagination components\n */\n.factory('uibPaging', ['$parse', function($parse) {\n return {\n create: function(ctrl, $scope, $attrs) {\n ctrl.setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop;\n ctrl.ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl\n ctrl._watchers = [];\n\n ctrl.init = function(ngModelCtrl, config) {\n ctrl.ngModelCtrl = ngModelCtrl;\n ctrl.config = config;\n\n ngModelCtrl.$render = function() {\n ctrl.render();\n };\n\n if ($attrs.itemsPerPage) {\n ctrl._watchers.push($scope.$parent.$watch($attrs.itemsPerPage, function(value) {\n ctrl.itemsPerPage = parseInt(value, 10);\n $scope.totalPages = ctrl.calculateTotalPages();\n ctrl.updatePage();\n }));\n } else {\n ctrl.itemsPerPage = config.itemsPerPage;\n }\n\n $scope.$watch('totalItems', function(newTotal, oldTotal) {\n if (angular.isDefined(newTotal) || newTotal !== oldTotal) {\n $scope.totalPages = ctrl.calculateTotalPages();\n ctrl.updatePage();\n }\n });\n };\n\n ctrl.calculateTotalPages = function() {\n var totalPages = ctrl.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / ctrl.itemsPerPage);\n return Math.max(totalPages || 0, 1);\n };\n\n ctrl.render = function() {\n $scope.page = parseInt(ctrl.ngModelCtrl.$viewValue, 10) || 1;\n };\n\n $scope.selectPage = function(page, evt) {\n if (evt) {\n evt.preventDefault();\n }\n\n var clickAllowed = !$scope.ngDisabled || !evt;\n if (clickAllowed && $scope.page !== page && page > 0 && page <= $scope.totalPages) {\n if (evt && evt.target) {\n evt.target.blur();\n }\n ctrl.ngModelCtrl.$setViewValue(page);\n ctrl.ngModelCtrl.$render();\n }\n };\n\n $scope.getText = function(key) {\n return $scope[key + 'Text'] || ctrl.config[key + 'Text'];\n };\n\n $scope.noPrevious = function() {\n return $scope.page === 1;\n };\n\n $scope.noNext = function() {\n return $scope.page === $scope.totalPages;\n };\n\n ctrl.updatePage = function() {\n ctrl.setNumPages($scope.$parent, $scope.totalPages); // Readonly variable\n\n if ($scope.page > $scope.totalPages) {\n $scope.selectPage($scope.totalPages);\n } else {\n ctrl.ngModelCtrl.$render();\n }\n };\n\n $scope.$on('$destroy', function() {\n while (ctrl._watchers.length) {\n ctrl._watchers.shift()();\n }\n });\n }\n };\n}]);\n\nangular.module('ui.bootstrap.pager', ['ui.bootstrap.paging'])\n\n.controller('UibPagerController', ['$scope', '$attrs', 'uibPaging', 'uibPagerConfig', function($scope, $attrs, uibPaging, uibPagerConfig) {\n $scope.align = angular.isDefined($attrs.align) ? $scope.$parent.$eval($attrs.align) : uibPagerConfig.align;\n\n uibPaging.create(this, $scope, $attrs);\n}])\n\n.constant('uibPagerConfig', {\n itemsPerPage: 10,\n previousText: '« Previous',\n nextText: 'Next »',\n align: true\n})\n\n.directive('uibPager', ['uibPagerConfig', function(uibPagerConfig) {\n return {\n scope: {\n totalItems: '=',\n previousText: '@',\n nextText: '@',\n ngDisabled: '='\n },\n require: ['uibPager', '?ngModel'],\n controller: 'UibPagerController',\n controllerAs: 'pager',\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/pager/pager.html';\n },\n replace: true,\n link: function(scope, element, attrs, ctrls) {\n var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n\n if (!ngModelCtrl) {\n return; // do nothing if no ng-model\n }\n\n paginationCtrl.init(ngModelCtrl, uibPagerConfig);\n }\n };\n}]);\n\nangular.module('ui.bootstrap.pagination', ['ui.bootstrap.paging'])\n.controller('UibPaginationController', ['$scope', '$attrs', '$parse', 'uibPaging', 'uibPaginationConfig', function($scope, $attrs, $parse, uibPaging, uibPaginationConfig) {\n var ctrl = this;\n // Setup configuration parameters\n var maxSize = angular.isDefined($attrs.maxSize) ? $scope.$parent.$eval($attrs.maxSize) : uibPaginationConfig.maxSize,\n rotate = angular.isDefined($attrs.rotate) ? $scope.$parent.$eval($attrs.rotate) : uibPaginationConfig.rotate,\n forceEllipses = angular.isDefined($attrs.forceEllipses) ? $scope.$parent.$eval($attrs.forceEllipses) : uibPaginationConfig.forceEllipses,\n boundaryLinkNumbers = angular.isDefined($attrs.boundaryLinkNumbers) ? $scope.$parent.$eval($attrs.boundaryLinkNumbers) : uibPaginationConfig.boundaryLinkNumbers,\n pageLabel = angular.isDefined($attrs.pageLabel) ? function(idx) { return $scope.$parent.$eval($attrs.pageLabel, {$page: idx}); } : angular.identity;\n $scope.boundaryLinks = angular.isDefined($attrs.boundaryLinks) ? $scope.$parent.$eval($attrs.boundaryLinks) : uibPaginationConfig.boundaryLinks;\n $scope.directionLinks = angular.isDefined($attrs.directionLinks) ? $scope.$parent.$eval($attrs.directionLinks) : uibPaginationConfig.directionLinks;\n\n uibPaging.create(this, $scope, $attrs);\n\n if ($attrs.maxSize) {\n ctrl._watchers.push($scope.$parent.$watch($parse($attrs.maxSize), function(value) {\n maxSize = parseInt(value, 10);\n ctrl.render();\n }));\n }\n\n // Create page object used in template\n function makePage(number, text, isActive) {\n return {\n number: number,\n text: text,\n active: isActive\n };\n }\n\n function getPages(currentPage, totalPages) {\n var pages = [];\n\n // Default page limits\n var startPage = 1, endPage = totalPages;\n var isMaxSized = angular.isDefined(maxSize) && maxSize < totalPages;\n\n // recompute if maxSize\n if (isMaxSized) {\n if (rotate) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(maxSize / 2), 1);\n endPage = startPage + maxSize - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - maxSize + 1;\n }\n } else {\n // Visible pages are paginated with maxSize\n startPage = (Math.ceil(currentPage / maxSize) - 1) * maxSize + 1;\n\n // Adjust last page if limit is exceeded\n endPage = Math.min(startPage + maxSize - 1, totalPages);\n }\n }\n\n // Add page number links\n for (var number = startPage; number <= endPage; number++) {\n var page = makePage(number, pageLabel(number), number === currentPage);\n pages.push(page);\n }\n\n // Add links to move between page sets\n if (isMaxSized && maxSize > 0 && (!rotate || forceEllipses || boundaryLinkNumbers)) {\n if (startPage > 1) {\n if (!boundaryLinkNumbers || startPage > 3) { //need ellipsis for all options unless range is too close to beginning\n var previousPageSet = makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n if (boundaryLinkNumbers) {\n if (startPage === 3) { //need to replace ellipsis when the buttons would be sequential\n var secondPageLink = makePage(2, '2', false);\n pages.unshift(secondPageLink);\n }\n //add the first page\n var firstPageLink = makePage(1, '1', false);\n pages.unshift(firstPageLink);\n }\n }\n\n if (endPage < totalPages) {\n if (!boundaryLinkNumbers || endPage < totalPages - 2) { //need ellipsis for all options unless range is too close to end\n var nextPageSet = makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n if (boundaryLinkNumbers) {\n if (endPage === totalPages - 2) { //need to replace ellipsis when the buttons would be sequential\n var secondToLastPageLink = makePage(totalPages - 1, totalPages - 1, false);\n pages.push(secondToLastPageLink);\n }\n //add the last page\n var lastPageLink = makePage(totalPages, totalPages, false);\n pages.push(lastPageLink);\n }\n }\n }\n return pages;\n }\n\n var originalRender = this.render;\n this.render = function() {\n originalRender();\n if ($scope.page > 0 && $scope.page <= $scope.totalPages) {\n $scope.pages = getPages($scope.page, $scope.totalPages);\n }\n };\n}])\n\n.constant('uibPaginationConfig', {\n itemsPerPage: 10,\n boundaryLinks: false,\n boundaryLinkNumbers: false,\n directionLinks: true,\n firstText: 'First',\n previousText: 'Previous',\n nextText: 'Next',\n lastText: 'Last',\n rotate: true,\n forceEllipses: false\n})\n\n.directive('uibPagination', ['$parse', 'uibPaginationConfig', function($parse, uibPaginationConfig) {\n return {\n scope: {\n totalItems: '=',\n firstText: '@',\n previousText: '@',\n nextText: '@',\n lastText: '@',\n ngDisabled:'='\n },\n require: ['uibPagination', '?ngModel'],\n controller: 'UibPaginationController',\n controllerAs: 'pagination',\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/pagination/pagination.html';\n },\n replace: true,\n link: function(scope, element, attrs, ctrls) {\n var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n\n if (!ngModelCtrl) {\n return; // do nothing if no ng-model\n }\n\n paginationCtrl.init(ngModelCtrl, uibPaginationConfig);\n }\n };\n}]);\n\n/**\n * The following features are still outstanding: animation as a\n * function, placement as a function, inside, support for more triggers than\n * just mouse enter/leave, html tooltips, and selector delegation.\n */\nangular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.stackedMap'])\n\n/**\n * The $tooltip service creates tooltip- and popover-like directives as well as\n * houses global options for them.\n */\n.provider('$uibTooltip', function() {\n // The default options tooltip and popover.\n var defaultOptions = {\n placement: 'top',\n placementClassPrefix: '',\n animation: true,\n popupDelay: 0,\n popupCloseDelay: 0,\n useContentExp: false\n };\n\n // Default hide triggers for each show trigger\n var triggerMap = {\n 'mouseenter': 'mouseleave',\n 'click': 'click',\n 'outsideClick': 'outsideClick',\n 'focus': 'blur',\n 'none': ''\n };\n\n // The options specified to the provider globally.\n var globalOptions = {};\n\n /**\n * `options({})` allows global configuration of all tooltips in the\n * application.\n *\n * var app = angular.module( 'App', ['ui.bootstrap.tooltip'], function( $tooltipProvider ) {\n * // place tooltips left instead of top by default\n * $tooltipProvider.options( { placement: 'left' } );\n * });\n */\n\tthis.options = function(value) {\n\t\tangular.extend(globalOptions, value);\n\t};\n\n /**\n * This allows you to extend the set of trigger mappings available. E.g.:\n *\n * $tooltipProvider.setTriggers( { 'openTrigger': 'closeTrigger' } );\n */\n this.setTriggers = function setTriggers(triggers) {\n angular.extend(triggerMap, triggers);\n };\n\n /**\n * This is a helper function for translating camel-case to snake_case.\n */\n function snake_case(name) {\n var regexp = /[A-Z]/g;\n var separator = '-';\n return name.replace(regexp, function(letter, pos) {\n return (pos ? separator : '') + letter.toLowerCase();\n });\n }\n\n /**\n * Returns the actual instance of the $tooltip service.\n * TODO support multiple triggers\n */\n this.$get = ['$window', '$compile', '$timeout', '$document', '$uibPosition', '$interpolate', '$rootScope', '$parse', '$$stackedMap', function($window, $compile, $timeout, $document, $position, $interpolate, $rootScope, $parse, $$stackedMap) {\n var openedTooltips = $$stackedMap.createNew();\n $document.on('keypress', keypressListener);\n\n $rootScope.$on('$destroy', function() {\n $document.off('keypress', keypressListener);\n });\n\n function keypressListener(e) {\n if (e.which === 27) {\n var last = openedTooltips.top();\n if (last) {\n last.value.close();\n openedTooltips.removeTop();\n last = null;\n }\n }\n }\n\n return function $tooltip(ttType, prefix, defaultTriggerShow, options) {\n options = angular.extend({}, defaultOptions, globalOptions, options);\n\n /**\n * Returns an object of show and hide triggers.\n *\n * If a trigger is supplied,\n * it is used to show the tooltip; otherwise, it will use the `trigger`\n * option passed to the `$tooltipProvider.options` method; else it will\n * default to the trigger supplied to this directive factory.\n *\n * The hide trigger is based on the show trigger. If the `trigger` option\n * was passed to the `$tooltipProvider.options` method, it will use the\n * mapped trigger from `triggerMap` or the passed trigger if the map is\n * undefined; otherwise, it uses the `triggerMap` value of the show\n * trigger; else it will just use the show trigger.\n */\n function getTriggers(trigger) {\n var show = (trigger || options.trigger || defaultTriggerShow).split(' ');\n var hide = show.map(function(trigger) {\n return triggerMap[trigger] || trigger;\n });\n return {\n show: show,\n hide: hide\n };\n }\n\n var directiveName = snake_case(ttType);\n\n var startSym = $interpolate.startSymbol();\n var endSym = $interpolate.endSymbol();\n var template =\n '
' +\n '
';\n\n return {\n compile: function(tElem, tAttrs) {\n var tooltipLinker = $compile(template);\n\n return function link(scope, element, attrs, tooltipCtrl) {\n var tooltip;\n var tooltipLinkedScope;\n var transitionTimeout;\n var showTimeout;\n var hideTimeout;\n var positionTimeout;\n var appendToBody = angular.isDefined(options.appendToBody) ? options.appendToBody : false;\n var triggers = getTriggers(undefined);\n var hasEnableExp = angular.isDefined(attrs[prefix + 'Enable']);\n var ttScope = scope.$new(true);\n var repositionScheduled = false;\n var isOpenParse = angular.isDefined(attrs[prefix + 'IsOpen']) ? $parse(attrs[prefix + 'IsOpen']) : false;\n var contentParse = options.useContentExp ? $parse(attrs[ttType]) : false;\n var observers = [];\n var lastPlacement;\n\n var positionTooltip = function() {\n // check if tooltip exists and is not empty\n if (!tooltip || !tooltip.html()) { return; }\n\n if (!positionTimeout) {\n positionTimeout = $timeout(function() {\n var ttPosition = $position.positionElements(element, tooltip, ttScope.placement, appendToBody);\n tooltip.css({ top: ttPosition.top + 'px', left: ttPosition.left + 'px' });\n\n if (!tooltip.hasClass(ttPosition.placement.split('-')[0])) {\n tooltip.removeClass(lastPlacement.split('-')[0]);\n tooltip.addClass(ttPosition.placement.split('-')[0]);\n }\n\n if (!tooltip.hasClass(options.placementClassPrefix + ttPosition.placement)) {\n tooltip.removeClass(options.placementClassPrefix + lastPlacement);\n tooltip.addClass(options.placementClassPrefix + ttPosition.placement);\n }\n\n // first time through tt element will have the\n // uib-position-measure class or if the placement\n // has changed we need to position the arrow.\n if (tooltip.hasClass('uib-position-measure')) {\n $position.positionArrow(tooltip, ttPosition.placement);\n tooltip.removeClass('uib-position-measure');\n } else if (lastPlacement !== ttPosition.placement) {\n $position.positionArrow(tooltip, ttPosition.placement);\n }\n lastPlacement = ttPosition.placement;\n\n positionTimeout = null;\n }, 0, false);\n }\n };\n\n // Set up the correct scope to allow transclusion later\n ttScope.origScope = scope;\n\n // By default, the tooltip is not open.\n // TODO add ability to start tooltip opened\n ttScope.isOpen = false;\n openedTooltips.add(ttScope, {\n close: hide\n });\n\n function toggleTooltipBind() {\n if (!ttScope.isOpen) {\n showTooltipBind();\n } else {\n hideTooltipBind();\n }\n }\n\n // Show the tooltip with delay if specified, otherwise show it immediately\n function showTooltipBind() {\n if (hasEnableExp && !scope.$eval(attrs[prefix + 'Enable'])) {\n return;\n }\n\n cancelHide();\n prepareTooltip();\n\n if (ttScope.popupDelay) {\n // Do nothing if the tooltip was already scheduled to pop-up.\n // This happens if show is triggered multiple times before any hide is triggered.\n if (!showTimeout) {\n showTimeout = $timeout(show, ttScope.popupDelay, false);\n }\n } else {\n show();\n }\n }\n\n function hideTooltipBind() {\n cancelShow();\n\n if (ttScope.popupCloseDelay) {\n if (!hideTimeout) {\n hideTimeout = $timeout(hide, ttScope.popupCloseDelay, false);\n }\n } else {\n hide();\n }\n }\n\n // Show the tooltip popup element.\n function show() {\n cancelShow();\n cancelHide();\n\n // Don't show empty tooltips.\n if (!ttScope.content) {\n return angular.noop;\n }\n\n createTooltip();\n\n // And show the tooltip.\n ttScope.$evalAsync(function() {\n ttScope.isOpen = true;\n assignIsOpen(true);\n positionTooltip();\n });\n }\n\n function cancelShow() {\n if (showTimeout) {\n $timeout.cancel(showTimeout);\n showTimeout = null;\n }\n\n if (positionTimeout) {\n $timeout.cancel(positionTimeout);\n positionTimeout = null;\n }\n }\n\n // Hide the tooltip popup element.\n function hide() {\n if (!ttScope) {\n return;\n }\n\n // First things first: we don't show it anymore.\n ttScope.$evalAsync(function() {\n if (ttScope) {\n ttScope.isOpen = false;\n assignIsOpen(false);\n // And now we remove it from the DOM. However, if we have animation, we\n // need to wait for it to expire beforehand.\n // FIXME: this is a placeholder for a port of the transitions library.\n // The fade transition in TWBS is 150ms.\n if (ttScope.animation) {\n if (!transitionTimeout) {\n transitionTimeout = $timeout(removeTooltip, 150, false);\n }\n } else {\n removeTooltip();\n }\n }\n });\n }\n\n function cancelHide() {\n if (hideTimeout) {\n $timeout.cancel(hideTimeout);\n hideTimeout = null;\n }\n\n if (transitionTimeout) {\n $timeout.cancel(transitionTimeout);\n transitionTimeout = null;\n }\n }\n\n function createTooltip() {\n // There can only be one tooltip element per directive shown at once.\n if (tooltip) {\n return;\n }\n\n tooltipLinkedScope = ttScope.$new();\n tooltip = tooltipLinker(tooltipLinkedScope, function(tooltip) {\n if (appendToBody) {\n $document.find('body').append(tooltip);\n } else {\n element.after(tooltip);\n }\n });\n\n prepObservers();\n }\n\n function removeTooltip() {\n cancelShow();\n cancelHide();\n unregisterObservers();\n\n if (tooltip) {\n tooltip.remove();\n tooltip = null;\n }\n if (tooltipLinkedScope) {\n tooltipLinkedScope.$destroy();\n tooltipLinkedScope = null;\n }\n }\n\n /**\n * Set the initial scope values. Once\n * the tooltip is created, the observers\n * will be added to keep things in sync.\n */\n function prepareTooltip() {\n ttScope.title = attrs[prefix + 'Title'];\n if (contentParse) {\n ttScope.content = contentParse(scope);\n } else {\n ttScope.content = attrs[ttType];\n }\n\n ttScope.popupClass = attrs[prefix + 'Class'];\n ttScope.placement = angular.isDefined(attrs[prefix + 'Placement']) ? attrs[prefix + 'Placement'] : options.placement;\n var placement = $position.parsePlacement(ttScope.placement);\n lastPlacement = placement[1] ? placement[0] + '-' + placement[1] : placement[0];\n\n var delay = parseInt(attrs[prefix + 'PopupDelay'], 10);\n var closeDelay = parseInt(attrs[prefix + 'PopupCloseDelay'], 10);\n ttScope.popupDelay = !isNaN(delay) ? delay : options.popupDelay;\n ttScope.popupCloseDelay = !isNaN(closeDelay) ? closeDelay : options.popupCloseDelay;\n }\n\n function assignIsOpen(isOpen) {\n if (isOpenParse && angular.isFunction(isOpenParse.assign)) {\n isOpenParse.assign(scope, isOpen);\n }\n }\n\n ttScope.contentExp = function() {\n return ttScope.content;\n };\n\n /**\n * Observe the relevant attributes.\n */\n attrs.$observe('disabled', function(val) {\n if (val) {\n cancelShow();\n }\n\n if (val && ttScope.isOpen) {\n hide();\n }\n });\n\n if (isOpenParse) {\n scope.$watch(isOpenParse, function(val) {\n if (ttScope && !val === ttScope.isOpen) {\n toggleTooltipBind();\n }\n });\n }\n\n function prepObservers() {\n observers.length = 0;\n\n if (contentParse) {\n observers.push(\n scope.$watch(contentParse, function(val) {\n ttScope.content = val;\n if (!val && ttScope.isOpen) {\n hide();\n }\n })\n );\n\n observers.push(\n tooltipLinkedScope.$watch(function() {\n if (!repositionScheduled) {\n repositionScheduled = true;\n tooltipLinkedScope.$$postDigest(function() {\n repositionScheduled = false;\n if (ttScope && ttScope.isOpen) {\n positionTooltip();\n }\n });\n }\n })\n );\n } else {\n observers.push(\n attrs.$observe(ttType, function(val) {\n ttScope.content = val;\n if (!val && ttScope.isOpen) {\n hide();\n } else {\n positionTooltip();\n }\n })\n );\n }\n\n observers.push(\n attrs.$observe(prefix + 'Title', function(val) {\n ttScope.title = val;\n if (ttScope.isOpen) {\n positionTooltip();\n }\n })\n );\n\n observers.push(\n attrs.$observe(prefix + 'Placement', function(val) {\n ttScope.placement = val ? val : options.placement;\n if (ttScope.isOpen) {\n positionTooltip();\n }\n })\n );\n }\n\n function unregisterObservers() {\n if (observers.length) {\n angular.forEach(observers, function(observer) {\n observer();\n });\n observers.length = 0;\n }\n }\n\n // hide tooltips/popovers for outsideClick trigger\n function bodyHideTooltipBind(e) {\n if (!ttScope || !ttScope.isOpen || !tooltip) {\n return;\n }\n // make sure the tooltip/popover link or tool tooltip/popover itself were not clicked\n if (!element[0].contains(e.target) && !tooltip[0].contains(e.target)) {\n hideTooltipBind();\n }\n }\n\n var unregisterTriggers = function() {\n triggers.show.forEach(function(trigger) {\n if (trigger === 'outsideClick') {\n element.off('click', toggleTooltipBind);\n } else {\n element.off(trigger, showTooltipBind);\n element.off(trigger, toggleTooltipBind);\n }\n });\n triggers.hide.forEach(function(trigger) {\n if (trigger === 'outsideClick') {\n $document.off('click', bodyHideTooltipBind);\n } else {\n element.off(trigger, hideTooltipBind);\n }\n });\n };\n\n function prepTriggers() {\n var val = attrs[prefix + 'Trigger'];\n unregisterTriggers();\n\n triggers = getTriggers(val);\n\n if (triggers.show !== 'none') {\n triggers.show.forEach(function(trigger, idx) {\n if (trigger === 'outsideClick') {\n element.on('click', toggleTooltipBind);\n $document.on('click', bodyHideTooltipBind);\n } else if (trigger === triggers.hide[idx]) {\n element.on(trigger, toggleTooltipBind);\n } else if (trigger) {\n element.on(trigger, showTooltipBind);\n element.on(triggers.hide[idx], hideTooltipBind);\n }\n\n element.on('keypress', function(e) {\n if (e.which === 27) {\n hideTooltipBind();\n }\n });\n });\n }\n }\n\n prepTriggers();\n\n var animation = scope.$eval(attrs[prefix + 'Animation']);\n ttScope.animation = angular.isDefined(animation) ? !!animation : options.animation;\n\n var appendToBodyVal;\n var appendKey = prefix + 'AppendToBody';\n if (appendKey in attrs && attrs[appendKey] === undefined) {\n appendToBodyVal = true;\n } else {\n appendToBodyVal = scope.$eval(attrs[appendKey]);\n }\n\n appendToBody = angular.isDefined(appendToBodyVal) ? appendToBodyVal : appendToBody;\n\n // Make sure tooltip is destroyed and removed.\n scope.$on('$destroy', function onDestroyTooltip() {\n unregisterTriggers();\n removeTooltip();\n openedTooltips.remove(ttScope);\n ttScope = null;\n });\n };\n }\n };\n };\n }];\n})\n\n// This is mostly ngInclude code but with a custom scope\n.directive('uibTooltipTemplateTransclude', [\n '$animate', '$sce', '$compile', '$templateRequest',\nfunction ($animate, $sce, $compile, $templateRequest) {\n return {\n link: function(scope, elem, attrs) {\n var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope);\n\n var changeCounter = 0,\n currentScope,\n previousElement,\n currentElement;\n\n var cleanupLastIncludeContent = function() {\n if (previousElement) {\n previousElement.remove();\n previousElement = null;\n }\n\n if (currentScope) {\n currentScope.$destroy();\n currentScope = null;\n }\n\n if (currentElement) {\n $animate.leave(currentElement).then(function() {\n previousElement = null;\n });\n previousElement = currentElement;\n currentElement = null;\n }\n };\n\n scope.$watch($sce.parseAsResourceUrl(attrs.uibTooltipTemplateTransclude), function(src) {\n var thisChangeId = ++changeCounter;\n\n if (src) {\n //set the 2nd param to true to ignore the template request error so that the inner\n //contents and scope can be cleaned up.\n $templateRequest(src, true).then(function(response) {\n if (thisChangeId !== changeCounter) { return; }\n var newScope = origScope.$new();\n var template = response;\n\n var clone = $compile(template)(newScope, function(clone) {\n cleanupLastIncludeContent();\n $animate.enter(clone, elem);\n });\n\n currentScope = newScope;\n currentElement = clone;\n\n currentScope.$emit('$includeContentLoaded', src);\n }, function() {\n if (thisChangeId === changeCounter) {\n cleanupLastIncludeContent();\n scope.$emit('$includeContentError', src);\n }\n });\n scope.$emit('$includeContentRequested', src);\n } else {\n cleanupLastIncludeContent();\n }\n });\n\n scope.$on('$destroy', cleanupLastIncludeContent);\n }\n };\n}])\n\n/**\n * Note that it's intentional that these classes are *not* applied through $animate.\n * They must not be animated as they're expected to be present on the tooltip on\n * initialization.\n */\n.directive('uibTooltipClasses', ['$uibPosition', function($uibPosition) {\n return {\n restrict: 'A',\n link: function(scope, element, attrs) {\n // need to set the primary position so the\n // arrow has space during position measure.\n // tooltip.positionTooltip()\n if (scope.placement) {\n // // There are no top-left etc... classes\n // // in TWBS, so we need the primary position.\n var position = $uibPosition.parsePlacement(scope.placement);\n element.addClass(position[0]);\n }\n\n if (scope.popupClass) {\n element.addClass(scope.popupClass);\n }\n\n if (scope.animation()) {\n element.addClass(attrs.tooltipAnimationClass);\n }\n }\n };\n}])\n\n.directive('uibTooltipPopup', function() {\n return {\n replace: true,\n scope: { content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' },\n templateUrl: 'uib/template/tooltip/tooltip-popup.html'\n };\n})\n\n.directive('uibTooltip', [ '$uibTooltip', function($uibTooltip) {\n return $uibTooltip('uibTooltip', 'tooltip', 'mouseenter');\n}])\n\n.directive('uibTooltipTemplatePopup', function() {\n return {\n replace: true,\n scope: { contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&',\n originScope: '&' },\n templateUrl: 'uib/template/tooltip/tooltip-template-popup.html'\n };\n})\n\n.directive('uibTooltipTemplate', ['$uibTooltip', function($uibTooltip) {\n return $uibTooltip('uibTooltipTemplate', 'tooltip', 'mouseenter', {\n useContentExp: true\n });\n}])\n\n.directive('uibTooltipHtmlPopup', function() {\n return {\n replace: true,\n scope: { contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&' },\n templateUrl: 'uib/template/tooltip/tooltip-html-popup.html'\n };\n})\n\n.directive('uibTooltipHtml', ['$uibTooltip', function($uibTooltip) {\n return $uibTooltip('uibTooltipHtml', 'tooltip', 'mouseenter', {\n useContentExp: true\n });\n}]);\n\n/**\n * The following features are still outstanding: popup delay, animation as a\n * function, placement as a function, inside, support for more triggers than\n * just mouse enter/leave, and selector delegatation.\n */\nangular.module('ui.bootstrap.popover', ['ui.bootstrap.tooltip'])\n\n.directive('uibPopoverTemplatePopup', function() {\n return {\n replace: true,\n scope: { uibTitle: '@', contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&',\n originScope: '&' },\n templateUrl: 'uib/template/popover/popover-template.html'\n };\n})\n\n.directive('uibPopoverTemplate', ['$uibTooltip', function($uibTooltip) {\n return $uibTooltip('uibPopoverTemplate', 'popover', 'click', {\n useContentExp: true\n });\n}])\n\n.directive('uibPopoverHtmlPopup', function() {\n return {\n replace: true,\n scope: { contentExp: '&', uibTitle: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' },\n templateUrl: 'uib/template/popover/popover-html.html'\n };\n})\n\n.directive('uibPopoverHtml', ['$uibTooltip', function($uibTooltip) {\n return $uibTooltip('uibPopoverHtml', 'popover', 'click', {\n useContentExp: true\n });\n}])\n\n.directive('uibPopoverPopup', function() {\n return {\n replace: true,\n scope: { uibTitle: '@', content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' },\n templateUrl: 'uib/template/popover/popover.html'\n };\n})\n\n.directive('uibPopover', ['$uibTooltip', function($uibTooltip) {\n return $uibTooltip('uibPopover', 'popover', 'click');\n}]);\n\nangular.module('ui.bootstrap.progressbar', [])\n\n.constant('uibProgressConfig', {\n animate: true,\n max: 100\n})\n\n.controller('UibProgressController', ['$scope', '$attrs', 'uibProgressConfig', function($scope, $attrs, progressConfig) {\n var self = this,\n animate = angular.isDefined($attrs.animate) ? $scope.$parent.$eval($attrs.animate) : progressConfig.animate;\n\n this.bars = [];\n $scope.max = getMaxOrDefault();\n\n this.addBar = function(bar, element, attrs) {\n if (!animate) {\n element.css({'transition': 'none'});\n }\n\n this.bars.push(bar);\n\n bar.max = getMaxOrDefault();\n bar.title = attrs && angular.isDefined(attrs.title) ? attrs.title : 'progressbar';\n\n bar.$watch('value', function(value) {\n bar.recalculatePercentage();\n });\n\n bar.recalculatePercentage = function() {\n var totalPercentage = self.bars.reduce(function(total, bar) {\n bar.percent = +(100 * bar.value / bar.max).toFixed(2);\n return total + bar.percent;\n }, 0);\n\n if (totalPercentage > 100) {\n bar.percent -= totalPercentage - 100;\n }\n };\n\n bar.$on('$destroy', function() {\n element = null;\n self.removeBar(bar);\n });\n };\n\n this.removeBar = function(bar) {\n this.bars.splice(this.bars.indexOf(bar), 1);\n this.bars.forEach(function (bar) {\n bar.recalculatePercentage();\n });\n };\n\n //$attrs.$observe('maxParam', function(maxParam) {\n $scope.$watch('maxParam', function(maxParam) {\n self.bars.forEach(function(bar) {\n bar.max = getMaxOrDefault();\n bar.recalculatePercentage();\n });\n });\n\n function getMaxOrDefault () {\n return angular.isDefined($scope.maxParam) ? $scope.maxParam : progressConfig.max;\n }\n}])\n\n.directive('uibProgress', function() {\n return {\n replace: true,\n transclude: true,\n controller: 'UibProgressController',\n require: 'uibProgress',\n scope: {\n maxParam: '=?max'\n },\n templateUrl: 'uib/template/progressbar/progress.html'\n };\n})\n\n.directive('uibBar', function() {\n return {\n replace: true,\n transclude: true,\n require: '^uibProgress',\n scope: {\n value: '=',\n type: '@'\n },\n templateUrl: 'uib/template/progressbar/bar.html',\n link: function(scope, element, attrs, progressCtrl) {\n progressCtrl.addBar(scope, element, attrs);\n }\n };\n})\n\n.directive('uibProgressbar', function() {\n return {\n replace: true,\n transclude: true,\n controller: 'UibProgressController',\n scope: {\n value: '=',\n maxParam: '=?max',\n type: '@'\n },\n templateUrl: 'uib/template/progressbar/progressbar.html',\n link: function(scope, element, attrs, progressCtrl) {\n progressCtrl.addBar(scope, angular.element(element.children()[0]), {title: attrs.title});\n }\n };\n});\n\nangular.module('ui.bootstrap.rating', [])\n\n.constant('uibRatingConfig', {\n max: 5,\n stateOn: null,\n stateOff: null,\n enableReset: true,\n titles : ['one', 'two', 'three', 'four', 'five']\n})\n\n.controller('UibRatingController', ['$scope', '$attrs', 'uibRatingConfig', function($scope, $attrs, ratingConfig) {\n var ngModelCtrl = { $setViewValue: angular.noop },\n self = this;\n\n this.init = function(ngModelCtrl_) {\n ngModelCtrl = ngModelCtrl_;\n ngModelCtrl.$render = this.render;\n\n ngModelCtrl.$formatters.push(function(value) {\n if (angular.isNumber(value) && value << 0 !== value) {\n value = Math.round(value);\n }\n\n return value;\n });\n\n this.stateOn = angular.isDefined($attrs.stateOn) ? $scope.$parent.$eval($attrs.stateOn) : ratingConfig.stateOn;\n this.stateOff = angular.isDefined($attrs.stateOff) ? $scope.$parent.$eval($attrs.stateOff) : ratingConfig.stateOff;\n this.enableReset = angular.isDefined($attrs.enableReset) ?\n $scope.$parent.$eval($attrs.enableReset) : ratingConfig.enableReset;\n var tmpTitles = angular.isDefined($attrs.titles) ? $scope.$parent.$eval($attrs.titles) : ratingConfig.titles;\n this.titles = angular.isArray(tmpTitles) && tmpTitles.length > 0 ?\n tmpTitles : ratingConfig.titles;\n\n var ratingStates = angular.isDefined($attrs.ratingStates) ?\n $scope.$parent.$eval($attrs.ratingStates) :\n new Array(angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : ratingConfig.max);\n $scope.range = this.buildTemplateObjects(ratingStates);\n };\n\n this.buildTemplateObjects = function(states) {\n for (var i = 0, n = states.length; i < n; i++) {\n states[i] = angular.extend({ index: i }, { stateOn: this.stateOn, stateOff: this.stateOff, title: this.getTitle(i) }, states[i]);\n }\n return states;\n };\n\n this.getTitle = function(index) {\n if (index >= this.titles.length) {\n return index + 1;\n }\n\n return this.titles[index];\n };\n\n $scope.rate = function(value) {\n if (!$scope.readonly && value >= 0 && value <= $scope.range.length) {\n var newViewValue = self.enableReset && ngModelCtrl.$viewValue === value ? 0 : value;\n ngModelCtrl.$setViewValue(newViewValue);\n ngModelCtrl.$render();\n }\n };\n\n $scope.enter = function(value) {\n if (!$scope.readonly) {\n $scope.value = value;\n }\n $scope.onHover({value: value});\n };\n\n $scope.reset = function() {\n $scope.value = ngModelCtrl.$viewValue;\n $scope.onLeave();\n };\n\n $scope.onKeydown = function(evt) {\n if (/(37|38|39|40)/.test(evt.which)) {\n evt.preventDefault();\n evt.stopPropagation();\n $scope.rate($scope.value + (evt.which === 38 || evt.which === 39 ? 1 : -1));\n }\n };\n\n this.render = function() {\n $scope.value = ngModelCtrl.$viewValue;\n $scope.title = self.getTitle($scope.value - 1);\n };\n}])\n\n.directive('uibRating', function() {\n return {\n require: ['uibRating', 'ngModel'],\n scope: {\n readonly: '=?readOnly',\n onHover: '&',\n onLeave: '&'\n },\n controller: 'UibRatingController',\n templateUrl: 'uib/template/rating/rating.html',\n replace: true,\n link: function(scope, element, attrs, ctrls) {\n var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n ratingCtrl.init(ngModelCtrl);\n }\n };\n});\n\nangular.module('ui.bootstrap.tabs', [])\n\n.controller('UibTabsetController', ['$scope', function ($scope) {\n var ctrl = this,\n oldIndex;\n ctrl.tabs = [];\n\n ctrl.select = function(index, evt) {\n if (!destroyed) {\n var previousIndex = findTabIndex(oldIndex);\n var previousSelected = ctrl.tabs[previousIndex];\n if (previousSelected) {\n previousSelected.tab.onDeselect({\n $event: evt,\n $selectedIndex: index\n });\n if (evt && evt.isDefaultPrevented()) {\n return;\n }\n previousSelected.tab.active = false;\n }\n\n var selected = ctrl.tabs[index];\n if (selected) {\n selected.tab.onSelect({\n $event: evt\n });\n selected.tab.active = true;\n ctrl.active = selected.index;\n oldIndex = selected.index;\n } else if (!selected && angular.isDefined(oldIndex)) {\n ctrl.active = null;\n oldIndex = null;\n }\n }\n };\n\n ctrl.addTab = function addTab(tab) {\n ctrl.tabs.push({\n tab: tab,\n index: tab.index\n });\n ctrl.tabs.sort(function(t1, t2) {\n if (t1.index > t2.index) {\n return 1;\n }\n\n if (t1.index < t2.index) {\n return -1;\n }\n\n return 0;\n });\n\n if (tab.index === ctrl.active || !angular.isDefined(ctrl.active) && ctrl.tabs.length === 1) {\n var newActiveIndex = findTabIndex(tab.index);\n ctrl.select(newActiveIndex);\n }\n };\n\n ctrl.removeTab = function removeTab(tab) {\n var index;\n for (var i = 0; i < ctrl.tabs.length; i++) {\n if (ctrl.tabs[i].tab === tab) {\n index = i;\n break;\n }\n }\n\n if (ctrl.tabs[index].index === ctrl.active) {\n var newActiveTabIndex = index === ctrl.tabs.length - 1 ?\n index - 1 : index + 1 % ctrl.tabs.length;\n ctrl.select(newActiveTabIndex);\n }\n\n ctrl.tabs.splice(index, 1);\n };\n\n $scope.$watch('tabset.active', function(val) {\n if (angular.isDefined(val) && val !== oldIndex) {\n ctrl.select(findTabIndex(val));\n }\n });\n\n var destroyed;\n $scope.$on('$destroy', function() {\n destroyed = true;\n });\n\n function findTabIndex(index) {\n for (var i = 0; i < ctrl.tabs.length; i++) {\n if (ctrl.tabs[i].index === index) {\n return i;\n }\n }\n }\n}])\n\n.directive('uibTabset', function() {\n return {\n transclude: true,\n replace: true,\n scope: {},\n bindToController: {\n active: '=?',\n type: '@'\n },\n controller: 'UibTabsetController',\n controllerAs: 'tabset',\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/tabs/tabset.html';\n },\n link: function(scope, element, attrs) {\n scope.vertical = angular.isDefined(attrs.vertical) ?\n scope.$parent.$eval(attrs.vertical) : false;\n scope.justified = angular.isDefined(attrs.justified) ?\n scope.$parent.$eval(attrs.justified) : false;\n }\n };\n})\n\n.directive('uibTab', ['$parse', function($parse) {\n return {\n require: '^uibTabset',\n replace: true,\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || 'uib/template/tabs/tab.html';\n },\n transclude: true,\n scope: {\n heading: '@',\n index: '=?',\n classes: '@?',\n onSelect: '&select', //This callback is called in contentHeadingTransclude\n //once it inserts the tab's content into the dom\n onDeselect: '&deselect'\n },\n controller: function() {\n //Empty controller so other directives can require being 'under' a tab\n },\n controllerAs: 'tab',\n link: function(scope, elm, attrs, tabsetCtrl, transclude) {\n scope.disabled = false;\n if (attrs.disable) {\n scope.$parent.$watch($parse(attrs.disable), function(value) {\n scope.disabled = !! value;\n });\n }\n\n if (angular.isUndefined(attrs.index)) {\n if (tabsetCtrl.tabs && tabsetCtrl.tabs.length) {\n scope.index = Math.max.apply(null, tabsetCtrl.tabs.map(function(t) { return t.index; })) + 1;\n } else {\n scope.index = 0;\n }\n }\n\n if (angular.isUndefined(attrs.classes)) {\n scope.classes = '';\n }\n\n scope.select = function(evt) {\n if (!scope.disabled) {\n var index;\n for (var i = 0; i < tabsetCtrl.tabs.length; i++) {\n if (tabsetCtrl.tabs[i].tab === scope) {\n index = i;\n break;\n }\n }\n\n tabsetCtrl.select(index, evt);\n }\n };\n\n tabsetCtrl.addTab(scope);\n scope.$on('$destroy', function() {\n tabsetCtrl.removeTab(scope);\n });\n\n //We need to transclude later, once the content container is ready.\n //when this link happens, we're inside a tab heading.\n scope.$transcludeFn = transclude;\n }\n };\n}])\n\n.directive('uibTabHeadingTransclude', function() {\n return {\n restrict: 'A',\n require: '^uibTab',\n link: function(scope, elm) {\n scope.$watch('headingElement', function updateHeadingElement(heading) {\n if (heading) {\n elm.html('');\n elm.append(heading);\n }\n });\n }\n };\n})\n\n.directive('uibTabContentTransclude', function() {\n return {\n restrict: 'A',\n require: '^uibTabset',\n link: function(scope, elm, attrs) {\n var tab = scope.$eval(attrs.uibTabContentTransclude).tab;\n\n //Now our tab is ready to be transcluded: both the tab heading area\n //and the tab content area are loaded. Transclude 'em both.\n tab.$transcludeFn(tab.$parent, function(contents) {\n angular.forEach(contents, function(node) {\n if (isTabHeading(node)) {\n //Let tabHeadingTransclude know.\n tab.headingElement = node;\n } else {\n elm.append(node);\n }\n });\n });\n }\n };\n\n function isTabHeading(node) {\n return node.tagName && (\n node.hasAttribute('uib-tab-heading') ||\n node.hasAttribute('data-uib-tab-heading') ||\n node.hasAttribute('x-uib-tab-heading') ||\n node.tagName.toLowerCase() === 'uib-tab-heading' ||\n node.tagName.toLowerCase() === 'data-uib-tab-heading' ||\n node.tagName.toLowerCase() === 'x-uib-tab-heading' ||\n node.tagName.toLowerCase() === 'uib:tab-heading'\n );\n }\n});\n\nangular.module('ui.bootstrap.timepicker', [])\n\n.constant('uibTimepickerConfig', {\n hourStep: 1,\n minuteStep: 1,\n secondStep: 1,\n showMeridian: true,\n showSeconds: false,\n meridians: null,\n readonlyInput: false,\n mousewheel: true,\n arrowkeys: true,\n showSpinners: true,\n templateUrl: 'uib/template/timepicker/timepicker.html'\n})\n\n.controller('UibTimepickerController', ['$scope', '$element', '$attrs', '$parse', '$log', '$locale', 'uibTimepickerConfig', function($scope, $element, $attrs, $parse, $log, $locale, timepickerConfig) {\n var selected = new Date(),\n watchers = [],\n ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl\n meridians = angular.isDefined($attrs.meridians) ? $scope.$parent.$eval($attrs.meridians) : timepickerConfig.meridians || $locale.DATETIME_FORMATS.AMPMS,\n padHours = angular.isDefined($attrs.padHours) ? $scope.$parent.$eval($attrs.padHours) : true;\n\n $scope.tabindex = angular.isDefined($attrs.tabindex) ? $attrs.tabindex : 0;\n $element.removeAttr('tabindex');\n\n this.init = function(ngModelCtrl_, inputs) {\n ngModelCtrl = ngModelCtrl_;\n ngModelCtrl.$render = this.render;\n\n ngModelCtrl.$formatters.unshift(function(modelValue) {\n return modelValue ? new Date(modelValue) : null;\n });\n\n var hoursInputEl = inputs.eq(0),\n minutesInputEl = inputs.eq(1),\n secondsInputEl = inputs.eq(2);\n\n var mousewheel = angular.isDefined($attrs.mousewheel) ? $scope.$parent.$eval($attrs.mousewheel) : timepickerConfig.mousewheel;\n\n if (mousewheel) {\n this.setupMousewheelEvents(hoursInputEl, minutesInputEl, secondsInputEl);\n }\n\n var arrowkeys = angular.isDefined($attrs.arrowkeys) ? $scope.$parent.$eval($attrs.arrowkeys) : timepickerConfig.arrowkeys;\n if (arrowkeys) {\n this.setupArrowkeyEvents(hoursInputEl, minutesInputEl, secondsInputEl);\n }\n\n $scope.readonlyInput = angular.isDefined($attrs.readonlyInput) ? $scope.$parent.$eval($attrs.readonlyInput) : timepickerConfig.readonlyInput;\n this.setupInputEvents(hoursInputEl, minutesInputEl, secondsInputEl);\n };\n\n var hourStep = timepickerConfig.hourStep;\n if ($attrs.hourStep) {\n watchers.push($scope.$parent.$watch($parse($attrs.hourStep), function(value) {\n hourStep = +value;\n }));\n }\n\n var minuteStep = timepickerConfig.minuteStep;\n if ($attrs.minuteStep) {\n watchers.push($scope.$parent.$watch($parse($attrs.minuteStep), function(value) {\n minuteStep = +value;\n }));\n }\n\n var min;\n watchers.push($scope.$parent.$watch($parse($attrs.min), function(value) {\n var dt = new Date(value);\n min = isNaN(dt) ? undefined : dt;\n }));\n\n var max;\n watchers.push($scope.$parent.$watch($parse($attrs.max), function(value) {\n var dt = new Date(value);\n max = isNaN(dt) ? undefined : dt;\n }));\n\n var disabled = false;\n if ($attrs.ngDisabled) {\n watchers.push($scope.$parent.$watch($parse($attrs.ngDisabled), function(value) {\n disabled = value;\n }));\n }\n\n $scope.noIncrementHours = function() {\n var incrementedSelected = addMinutes(selected, hourStep * 60);\n return disabled || incrementedSelected > max ||\n incrementedSelected < selected && incrementedSelected < min;\n };\n\n $scope.noDecrementHours = function() {\n var decrementedSelected = addMinutes(selected, -hourStep * 60);\n return disabled || decrementedSelected < min ||\n decrementedSelected > selected && decrementedSelected > max;\n };\n\n $scope.noIncrementMinutes = function() {\n var incrementedSelected = addMinutes(selected, minuteStep);\n return disabled || incrementedSelected > max ||\n incrementedSelected < selected && incrementedSelected < min;\n };\n\n $scope.noDecrementMinutes = function() {\n var decrementedSelected = addMinutes(selected, -minuteStep);\n return disabled || decrementedSelected < min ||\n decrementedSelected > selected && decrementedSelected > max;\n };\n\n $scope.noIncrementSeconds = function() {\n var incrementedSelected = addSeconds(selected, secondStep);\n return disabled || incrementedSelected > max ||\n incrementedSelected < selected && incrementedSelected < min;\n };\n\n $scope.noDecrementSeconds = function() {\n var decrementedSelected = addSeconds(selected, -secondStep);\n return disabled || decrementedSelected < min ||\n decrementedSelected > selected && decrementedSelected > max;\n };\n\n $scope.noToggleMeridian = function() {\n if (selected.getHours() < 12) {\n return disabled || addMinutes(selected, 12 * 60) > max;\n }\n\n return disabled || addMinutes(selected, -12 * 60) < min;\n };\n\n var secondStep = timepickerConfig.secondStep;\n if ($attrs.secondStep) {\n watchers.push($scope.$parent.$watch($parse($attrs.secondStep), function(value) {\n secondStep = +value;\n }));\n }\n\n $scope.showSeconds = timepickerConfig.showSeconds;\n if ($attrs.showSeconds) {\n watchers.push($scope.$parent.$watch($parse($attrs.showSeconds), function(value) {\n $scope.showSeconds = !!value;\n }));\n }\n\n // 12H / 24H mode\n $scope.showMeridian = timepickerConfig.showMeridian;\n if ($attrs.showMeridian) {\n watchers.push($scope.$parent.$watch($parse($attrs.showMeridian), function(value) {\n $scope.showMeridian = !!value;\n\n if (ngModelCtrl.$error.time) {\n // Evaluate from template\n var hours = getHoursFromTemplate(), minutes = getMinutesFromTemplate();\n if (angular.isDefined(hours) && angular.isDefined(minutes)) {\n selected.setHours(hours);\n refresh();\n }\n } else {\n updateTemplate();\n }\n }));\n }\n\n // Get $scope.hours in 24H mode if valid\n function getHoursFromTemplate() {\n var hours = +$scope.hours;\n var valid = $scope.showMeridian ? hours > 0 && hours < 13 :\n hours >= 0 && hours < 24;\n if (!valid || $scope.hours === '') {\n return undefined;\n }\n\n if ($scope.showMeridian) {\n if (hours === 12) {\n hours = 0;\n }\n if ($scope.meridian === meridians[1]) {\n hours = hours + 12;\n }\n }\n return hours;\n }\n\n function getMinutesFromTemplate() {\n var minutes = +$scope.minutes;\n var valid = minutes >= 0 && minutes < 60;\n if (!valid || $scope.minutes === '') {\n return undefined;\n }\n return minutes;\n }\n\n function getSecondsFromTemplate() {\n var seconds = +$scope.seconds;\n return seconds >= 0 && seconds < 60 ? seconds : undefined;\n }\n\n function pad(value, noPad) {\n if (value === null) {\n return '';\n }\n\n return angular.isDefined(value) && value.toString().length < 2 && !noPad ?\n '0' + value : value.toString();\n }\n\n // Respond on mousewheel spin\n this.setupMousewheelEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {\n var isScrollingUp = function(e) {\n if (e.originalEvent) {\n e = e.originalEvent;\n }\n //pick correct delta variable depending on event\n var delta = e.wheelDelta ? e.wheelDelta : -e.deltaY;\n return e.detail || delta > 0;\n };\n\n hoursInputEl.bind('mousewheel wheel', function(e) {\n if (!disabled) {\n $scope.$apply(isScrollingUp(e) ? $scope.incrementHours() : $scope.decrementHours());\n }\n e.preventDefault();\n });\n\n minutesInputEl.bind('mousewheel wheel', function(e) {\n if (!disabled) {\n $scope.$apply(isScrollingUp(e) ? $scope.incrementMinutes() : $scope.decrementMinutes());\n }\n e.preventDefault();\n });\n\n secondsInputEl.bind('mousewheel wheel', function(e) {\n if (!disabled) {\n $scope.$apply(isScrollingUp(e) ? $scope.incrementSeconds() : $scope.decrementSeconds());\n }\n e.preventDefault();\n });\n };\n\n // Respond on up/down arrowkeys\n this.setupArrowkeyEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {\n hoursInputEl.bind('keydown', function(e) {\n if (!disabled) {\n if (e.which === 38) { // up\n e.preventDefault();\n $scope.incrementHours();\n $scope.$apply();\n } else if (e.which === 40) { // down\n e.preventDefault();\n $scope.decrementHours();\n $scope.$apply();\n }\n }\n });\n\n minutesInputEl.bind('keydown', function(e) {\n if (!disabled) {\n if (e.which === 38) { // up\n e.preventDefault();\n $scope.incrementMinutes();\n $scope.$apply();\n } else if (e.which === 40) { // down\n e.preventDefault();\n $scope.decrementMinutes();\n $scope.$apply();\n }\n }\n });\n\n secondsInputEl.bind('keydown', function(e) {\n if (!disabled) {\n if (e.which === 38) { // up\n e.preventDefault();\n $scope.incrementSeconds();\n $scope.$apply();\n } else if (e.which === 40) { // down\n e.preventDefault();\n $scope.decrementSeconds();\n $scope.$apply();\n }\n }\n });\n };\n\n this.setupInputEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {\n if ($scope.readonlyInput) {\n $scope.updateHours = angular.noop;\n $scope.updateMinutes = angular.noop;\n $scope.updateSeconds = angular.noop;\n return;\n }\n\n var invalidate = function(invalidHours, invalidMinutes, invalidSeconds) {\n ngModelCtrl.$setViewValue(null);\n ngModelCtrl.$setValidity('time', false);\n if (angular.isDefined(invalidHours)) {\n $scope.invalidHours = invalidHours;\n }\n\n if (angular.isDefined(invalidMinutes)) {\n $scope.invalidMinutes = invalidMinutes;\n }\n\n if (angular.isDefined(invalidSeconds)) {\n $scope.invalidSeconds = invalidSeconds;\n }\n };\n\n $scope.updateHours = function() {\n var hours = getHoursFromTemplate(),\n minutes = getMinutesFromTemplate();\n\n ngModelCtrl.$setDirty();\n\n if (angular.isDefined(hours) && angular.isDefined(minutes)) {\n selected.setHours(hours);\n selected.setMinutes(minutes);\n if (selected < min || selected > max) {\n invalidate(true);\n } else {\n refresh('h');\n }\n } else {\n invalidate(true);\n }\n };\n\n hoursInputEl.bind('blur', function(e) {\n ngModelCtrl.$setTouched();\n if (modelIsEmpty()) {\n makeValid();\n } else if ($scope.hours === null || $scope.hours === '') {\n invalidate(true);\n } else if (!$scope.invalidHours && $scope.hours < 10) {\n $scope.$apply(function() {\n $scope.hours = pad($scope.hours, !padHours);\n });\n }\n });\n\n $scope.updateMinutes = function() {\n var minutes = getMinutesFromTemplate(),\n hours = getHoursFromTemplate();\n\n ngModelCtrl.$setDirty();\n\n if (angular.isDefined(minutes) && angular.isDefined(hours)) {\n selected.setHours(hours);\n selected.setMinutes(minutes);\n if (selected < min || selected > max) {\n invalidate(undefined, true);\n } else {\n refresh('m');\n }\n } else {\n invalidate(undefined, true);\n }\n };\n\n minutesInputEl.bind('blur', function(e) {\n ngModelCtrl.$setTouched();\n if (modelIsEmpty()) {\n makeValid();\n } else if ($scope.minutes === null) {\n invalidate(undefined, true);\n } else if (!$scope.invalidMinutes && $scope.minutes < 10) {\n $scope.$apply(function() {\n $scope.minutes = pad($scope.minutes);\n });\n }\n });\n\n $scope.updateSeconds = function() {\n var seconds = getSecondsFromTemplate();\n\n ngModelCtrl.$setDirty();\n\n if (angular.isDefined(seconds)) {\n selected.setSeconds(seconds);\n refresh('s');\n } else {\n invalidate(undefined, undefined, true);\n }\n };\n\n secondsInputEl.bind('blur', function(e) {\n if (modelIsEmpty()) {\n makeValid();\n } else if (!$scope.invalidSeconds && $scope.seconds < 10) {\n $scope.$apply( function() {\n $scope.seconds = pad($scope.seconds);\n });\n }\n });\n\n };\n\n this.render = function() {\n var date = ngModelCtrl.$viewValue;\n\n if (isNaN(date)) {\n ngModelCtrl.$setValidity('time', false);\n $log.error('Timepicker directive: \"ng-model\" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.');\n } else {\n if (date) {\n selected = date;\n }\n\n if (selected < min || selected > max) {\n ngModelCtrl.$setValidity('time', false);\n $scope.invalidHours = true;\n $scope.invalidMinutes = true;\n } else {\n makeValid();\n }\n updateTemplate();\n }\n };\n\n // Call internally when we know that model is valid.\n function refresh(keyboardChange) {\n makeValid();\n ngModelCtrl.$setViewValue(new Date(selected));\n updateTemplate(keyboardChange);\n }\n\n function makeValid() {\n ngModelCtrl.$setValidity('time', true);\n $scope.invalidHours = false;\n $scope.invalidMinutes = false;\n $scope.invalidSeconds = false;\n }\n\n function updateTemplate(keyboardChange) {\n if (!ngModelCtrl.$modelValue) {\n $scope.hours = null;\n $scope.minutes = null;\n $scope.seconds = null;\n $scope.meridian = meridians[0];\n } else {\n var hours = selected.getHours(),\n minutes = selected.getMinutes(),\n seconds = selected.getSeconds();\n\n if ($scope.showMeridian) {\n hours = hours === 0 || hours === 12 ? 12 : hours % 12; // Convert 24 to 12 hour system\n }\n\n $scope.hours = keyboardChange === 'h' ? hours : pad(hours, !padHours);\n if (keyboardChange !== 'm') {\n $scope.minutes = pad(minutes);\n }\n $scope.meridian = selected.getHours() < 12 ? meridians[0] : meridians[1];\n\n if (keyboardChange !== 's') {\n $scope.seconds = pad(seconds);\n }\n $scope.meridian = selected.getHours() < 12 ? meridians[0] : meridians[1];\n }\n }\n\n function addSecondsToSelected(seconds) {\n selected = addSeconds(selected, seconds);\n refresh();\n }\n\n function addMinutes(selected, minutes) {\n return addSeconds(selected, minutes*60);\n }\n\n function addSeconds(date, seconds) {\n var dt = new Date(date.getTime() + seconds * 1000);\n var newDate = new Date(date);\n newDate.setHours(dt.getHours(), dt.getMinutes(), dt.getSeconds());\n return newDate;\n }\n\n function modelIsEmpty() {\n return ($scope.hours === null || $scope.hours === '') &&\n ($scope.minutes === null || $scope.minutes === '') &&\n (!$scope.showSeconds || $scope.showSeconds && ($scope.seconds === null || $scope.seconds === ''));\n }\n\n $scope.showSpinners = angular.isDefined($attrs.showSpinners) ?\n $scope.$parent.$eval($attrs.showSpinners) : timepickerConfig.showSpinners;\n\n $scope.incrementHours = function() {\n if (!$scope.noIncrementHours()) {\n addSecondsToSelected(hourStep * 60 * 60);\n }\n };\n\n $scope.decrementHours = function() {\n if (!$scope.noDecrementHours()) {\n addSecondsToSelected(-hourStep * 60 * 60);\n }\n };\n\n $scope.incrementMinutes = function() {\n if (!$scope.noIncrementMinutes()) {\n addSecondsToSelected(minuteStep * 60);\n }\n };\n\n $scope.decrementMinutes = function() {\n if (!$scope.noDecrementMinutes()) {\n addSecondsToSelected(-minuteStep * 60);\n }\n };\n\n $scope.incrementSeconds = function() {\n if (!$scope.noIncrementSeconds()) {\n addSecondsToSelected(secondStep);\n }\n };\n\n $scope.decrementSeconds = function() {\n if (!$scope.noDecrementSeconds()) {\n addSecondsToSelected(-secondStep);\n }\n };\n\n $scope.toggleMeridian = function() {\n var minutes = getMinutesFromTemplate(),\n hours = getHoursFromTemplate();\n\n if (!$scope.noToggleMeridian()) {\n if (angular.isDefined(minutes) && angular.isDefined(hours)) {\n addSecondsToSelected(12 * 60 * (selected.getHours() < 12 ? 60 : -60));\n } else {\n $scope.meridian = $scope.meridian === meridians[0] ? meridians[1] : meridians[0];\n }\n }\n };\n\n $scope.blur = function() {\n ngModelCtrl.$setTouched();\n };\n\n $scope.$on('$destroy', function() {\n while (watchers.length) {\n watchers.shift()();\n }\n });\n}])\n\n.directive('uibTimepicker', ['uibTimepickerConfig', function(uibTimepickerConfig) {\n return {\n require: ['uibTimepicker', '?^ngModel'],\n controller: 'UibTimepickerController',\n controllerAs: 'timepicker',\n replace: true,\n scope: {},\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || uibTimepickerConfig.templateUrl;\n },\n link: function(scope, element, attrs, ctrls) {\n var timepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];\n\n if (ngModelCtrl) {\n timepickerCtrl.init(ngModelCtrl, element.find('input'));\n }\n }\n };\n}]);\n\nangular.module('ui.bootstrap.typeahead', ['ui.bootstrap.debounce', 'ui.bootstrap.position'])\n\n/**\n * A helper service that can parse typeahead's syntax (string provided by users)\n * Extracted to a separate service for ease of unit testing\n */\n .factory('uibTypeaheadParser', ['$parse', function($parse) {\n // 00000111000000000000022200000000000000003333333333333330000000000044000\n var TYPEAHEAD_REGEXP = /^\\s*([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?\\s+for\\s+(?:([\\$\\w][\\$\\w\\d]*))\\s+in\\s+([\\s\\S]+?)$/;\n return {\n parse: function(input) {\n var match = input.match(TYPEAHEAD_REGEXP);\n if (!match) {\n throw new Error(\n 'Expected typeahead specification in form of \"_modelValue_ (as _label_)? for _item_ in _collection_\"' +\n ' but got \"' + input + '\".');\n }\n\n return {\n itemName: match[3],\n source: $parse(match[4]),\n viewMapper: $parse(match[2] || match[1]),\n modelMapper: $parse(match[1])\n };\n }\n };\n }])\n\n .controller('UibTypeaheadController', ['$scope', '$element', '$attrs', '$compile', '$parse', '$q', '$timeout', '$document', '$window', '$rootScope', '$$debounce', '$uibPosition', 'uibTypeaheadParser',\n function(originalScope, element, attrs, $compile, $parse, $q, $timeout, $document, $window, $rootScope, $$debounce, $position, typeaheadParser) {\n var HOT_KEYS = [9, 13, 27, 38, 40];\n var eventDebounceTime = 200;\n var modelCtrl, ngModelOptions;\n //SUPPORTED ATTRIBUTES (OPTIONS)\n\n //minimal no of characters that needs to be entered before typeahead kicks-in\n var minLength = originalScope.$eval(attrs.typeaheadMinLength);\n if (!minLength && minLength !== 0) {\n minLength = 1;\n }\n\n originalScope.$watch(attrs.typeaheadMinLength, function (newVal) {\n minLength = !newVal && newVal !== 0 ? 1 : newVal;\n });\n\n //minimal wait time after last character typed before typeahead kicks-in\n var waitTime = originalScope.$eval(attrs.typeaheadWaitMs) || 0;\n\n //should it restrict model values to the ones selected from the popup only?\n var isEditable = originalScope.$eval(attrs.typeaheadEditable) !== false;\n originalScope.$watch(attrs.typeaheadEditable, function (newVal) {\n isEditable = newVal !== false;\n });\n\n //binding to a variable that indicates if matches are being retrieved asynchronously\n var isLoadingSetter = $parse(attrs.typeaheadLoading).assign || angular.noop;\n\n //a function to determine if an event should cause selection\n var isSelectEvent = attrs.typeaheadShouldSelect ? $parse(attrs.typeaheadShouldSelect) : function(scope, vals) {\n var evt = vals.$event;\n return evt.which === 13 || evt.which === 9;\n };\n\n //a callback executed when a match is selected\n var onSelectCallback = $parse(attrs.typeaheadOnSelect);\n\n //should it select highlighted popup value when losing focus?\n var isSelectOnBlur = angular.isDefined(attrs.typeaheadSelectOnBlur) ? originalScope.$eval(attrs.typeaheadSelectOnBlur) : false;\n\n //binding to a variable that indicates if there were no results after the query is completed\n var isNoResultsSetter = $parse(attrs.typeaheadNoResults).assign || angular.noop;\n\n var inputFormatter = attrs.typeaheadInputFormatter ? $parse(attrs.typeaheadInputFormatter) : undefined;\n\n var appendToBody = attrs.typeaheadAppendToBody ? originalScope.$eval(attrs.typeaheadAppendToBody) : false;\n\n var appendTo = attrs.typeaheadAppendTo ?\n originalScope.$eval(attrs.typeaheadAppendTo) : null;\n\n var focusFirst = originalScope.$eval(attrs.typeaheadFocusFirst) !== false;\n\n //If input matches an item of the list exactly, select it automatically\n var selectOnExact = attrs.typeaheadSelectOnExact ? originalScope.$eval(attrs.typeaheadSelectOnExact) : false;\n\n //binding to a variable that indicates if dropdown is open\n var isOpenSetter = $parse(attrs.typeaheadIsOpen).assign || angular.noop;\n\n var showHint = originalScope.$eval(attrs.typeaheadShowHint) || false;\n\n //INTERNAL VARIABLES\n\n //model setter executed upon match selection\n var parsedModel = $parse(attrs.ngModel);\n var invokeModelSetter = $parse(attrs.ngModel + '($$$p)');\n var $setModelValue = function(scope, newValue) {\n if (angular.isFunction(parsedModel(originalScope)) &&\n ngModelOptions && ngModelOptions.$options && ngModelOptions.$options.getterSetter) {\n return invokeModelSetter(scope, {$$$p: newValue});\n }\n\n return parsedModel.assign(scope, newValue);\n };\n\n //expressions used by typeahead\n var parserResult = typeaheadParser.parse(attrs.uibTypeahead);\n\n var hasFocus;\n\n //Used to avoid bug in iOS webview where iOS keyboard does not fire\n //mousedown & mouseup events\n //Issue #3699\n var selected;\n\n //create a child scope for the typeahead directive so we are not polluting original scope\n //with typeahead-specific data (matches, query etc.)\n var scope = originalScope.$new();\n var offDestroy = originalScope.$on('$destroy', function() {\n scope.$destroy();\n });\n scope.$on('$destroy', offDestroy);\n\n // WAI-ARIA\n var popupId = 'typeahead-' + scope.$id + '-' + Math.floor(Math.random() * 10000);\n element.attr({\n 'aria-autocomplete': 'list',\n 'aria-expanded': false,\n 'aria-owns': popupId\n });\n\n var inputsContainer, hintInputElem;\n //add read-only input to show hint\n if (showHint) {\n inputsContainer = angular.element('
');\n inputsContainer.css('position', 'relative');\n element.after(inputsContainer);\n hintInputElem = element.clone();\n hintInputElem.attr('placeholder', '');\n hintInputElem.attr('tabindex', '-1');\n hintInputElem.val('');\n hintInputElem.css({\n 'position': 'absolute',\n 'top': '0px',\n 'left': '0px',\n 'border-color': 'transparent',\n 'box-shadow': 'none',\n 'opacity': 1,\n 'background': 'none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)',\n 'color': '#999'\n });\n element.css({\n 'position': 'relative',\n 'vertical-align': 'top',\n 'background-color': 'transparent'\n });\n inputsContainer.append(hintInputElem);\n hintInputElem.after(element);\n }\n\n //pop-up element used to display matches\n var popUpEl = angular.element('
');\n popUpEl.attr({\n id: popupId,\n matches: 'matches',\n active: 'activeIdx',\n select: 'select(activeIdx, evt)',\n 'move-in-progress': 'moveInProgress',\n query: 'query',\n position: 'position',\n 'assign-is-open': 'assignIsOpen(isOpen)',\n debounce: 'debounceUpdate'\n });\n //custom item template\n if (angular.isDefined(attrs.typeaheadTemplateUrl)) {\n popUpEl.attr('template-url', attrs.typeaheadTemplateUrl);\n }\n\n if (angular.isDefined(attrs.typeaheadPopupTemplateUrl)) {\n popUpEl.attr('popup-template-url', attrs.typeaheadPopupTemplateUrl);\n }\n\n var resetHint = function() {\n if (showHint) {\n hintInputElem.val('');\n }\n };\n\n var resetMatches = function() {\n scope.matches = [];\n scope.activeIdx = -1;\n element.attr('aria-expanded', false);\n resetHint();\n };\n\n var getMatchId = function(index) {\n return popupId + '-option-' + index;\n };\n\n // Indicate that the specified match is the active (pre-selected) item in the list owned by this typeahead.\n // This attribute is added or removed automatically when the `activeIdx` changes.\n scope.$watch('activeIdx', function(index) {\n if (index < 0) {\n element.removeAttr('aria-activedescendant');\n } else {\n element.attr('aria-activedescendant', getMatchId(index));\n }\n });\n\n var inputIsExactMatch = function(inputValue, index) {\n if (scope.matches.length > index && inputValue) {\n return inputValue.toUpperCase() === scope.matches[index].label.toUpperCase();\n }\n\n return false;\n };\n\n var getMatchesAsync = function(inputValue, evt) {\n var locals = {$viewValue: inputValue};\n isLoadingSetter(originalScope, true);\n isNoResultsSetter(originalScope, false);\n $q.when(parserResult.source(originalScope, locals)).then(function(matches) {\n //it might happen that several async queries were in progress if a user were typing fast\n //but we are interested only in responses that correspond to the current view value\n var onCurrentRequest = inputValue === modelCtrl.$viewValue;\n if (onCurrentRequest && hasFocus) {\n if (matches && matches.length > 0) {\n scope.activeIdx = focusFirst ? 0 : -1;\n isNoResultsSetter(originalScope, false);\n scope.matches.length = 0;\n\n //transform labels\n for (var i = 0; i < matches.length; i++) {\n locals[parserResult.itemName] = matches[i];\n scope.matches.push({\n id: getMatchId(i),\n label: parserResult.viewMapper(scope, locals),\n model: matches[i]\n });\n }\n\n scope.query = inputValue;\n //position pop-up with matches - we need to re-calculate its position each time we are opening a window\n //with matches as a pop-up might be absolute-positioned and position of an input might have changed on a page\n //due to other elements being rendered\n recalculatePosition();\n\n element.attr('aria-expanded', true);\n\n //Select the single remaining option if user input matches\n if (selectOnExact && scope.matches.length === 1 && inputIsExactMatch(inputValue, 0)) {\n if (angular.isNumber(scope.debounceUpdate) || angular.isObject(scope.debounceUpdate)) {\n $$debounce(function() {\n scope.select(0, evt);\n }, angular.isNumber(scope.debounceUpdate) ? scope.debounceUpdate : scope.debounceUpdate['default']);\n } else {\n scope.select(0, evt);\n }\n }\n\n if (showHint) {\n var firstLabel = scope.matches[0].label;\n if (angular.isString(inputValue) &&\n inputValue.length > 0 &&\n firstLabel.slice(0, inputValue.length).toUpperCase() === inputValue.toUpperCase()) {\n hintInputElem.val(inputValue + firstLabel.slice(inputValue.length));\n } else {\n hintInputElem.val('');\n }\n }\n } else {\n resetMatches();\n isNoResultsSetter(originalScope, true);\n }\n }\n if (onCurrentRequest) {\n isLoadingSetter(originalScope, false);\n }\n }, function() {\n resetMatches();\n isLoadingSetter(originalScope, false);\n isNoResultsSetter(originalScope, true);\n });\n };\n\n // bind events only if appendToBody params exist - performance feature\n if (appendToBody) {\n angular.element($window).on('resize', fireRecalculating);\n $document.find('body').on('scroll', fireRecalculating);\n }\n\n // Declare the debounced function outside recalculating for\n // proper debouncing\n var debouncedRecalculate = $$debounce(function() {\n // if popup is visible\n if (scope.matches.length) {\n recalculatePosition();\n }\n\n scope.moveInProgress = false;\n }, eventDebounceTime);\n\n // Default progress type\n scope.moveInProgress = false;\n\n function fireRecalculating() {\n if (!scope.moveInProgress) {\n scope.moveInProgress = true;\n scope.$digest();\n }\n\n debouncedRecalculate();\n }\n\n // recalculate actual position and set new values to scope\n // after digest loop is popup in right position\n function recalculatePosition() {\n scope.position = appendToBody ? $position.offset(element) : $position.position(element);\n scope.position.top += element.prop('offsetHeight');\n }\n\n //we need to propagate user's query so we can higlight matches\n scope.query = undefined;\n\n //Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later\n var timeoutPromise;\n\n var scheduleSearchWithTimeout = function(inputValue) {\n timeoutPromise = $timeout(function() {\n getMatchesAsync(inputValue);\n }, waitTime);\n };\n\n var cancelPreviousTimeout = function() {\n if (timeoutPromise) {\n $timeout.cancel(timeoutPromise);\n }\n };\n\n resetMatches();\n\n scope.assignIsOpen = function (isOpen) {\n isOpenSetter(originalScope, isOpen);\n };\n\n scope.select = function(activeIdx, evt) {\n //called from within the $digest() cycle\n var locals = {};\n var model, item;\n\n selected = true;\n locals[parserResult.itemName] = item = scope.matches[activeIdx].model;\n model = parserResult.modelMapper(originalScope, locals);\n $setModelValue(originalScope, model);\n modelCtrl.$setValidity('editable', true);\n modelCtrl.$setValidity('parse', true);\n\n onSelectCallback(originalScope, {\n $item: item,\n $model: model,\n $label: parserResult.viewMapper(originalScope, locals),\n $event: evt\n });\n\n resetMatches();\n\n //return focus to the input element if a match was selected via a mouse click event\n // use timeout to avoid $rootScope:inprog error\n if (scope.$eval(attrs.typeaheadFocusOnSelect) !== false) {\n $timeout(function() { element[0].focus(); }, 0, false);\n }\n };\n\n //bind keyboard events: arrows up(38) / down(40), enter(13) and tab(9), esc(27)\n element.on('keydown', function(evt) {\n //typeahead is open and an \"interesting\" key was pressed\n if (scope.matches.length === 0 || HOT_KEYS.indexOf(evt.which) === -1) {\n return;\n }\n\n var shouldSelect = isSelectEvent(originalScope, {$event: evt});\n\n /**\n * if there's nothing selected (i.e. focusFirst) and enter or tab is hit\n * or\n * shift + tab is pressed to bring focus to the previous element\n * then clear the results\n */\n if (scope.activeIdx === -1 && shouldSelect || evt.which === 9 && !!evt.shiftKey) {\n resetMatches();\n scope.$digest();\n return;\n }\n\n evt.preventDefault();\n var target;\n switch (evt.which) {\n case 27: // escape\n evt.stopPropagation();\n\n resetMatches();\n originalScope.$digest();\n break;\n case 38: // up arrow\n scope.activeIdx = (scope.activeIdx > 0 ? scope.activeIdx : scope.matches.length) - 1;\n scope.$digest();\n target = popUpEl.find('li')[scope.activeIdx];\n target.parentNode.scrollTop = target.offsetTop;\n break;\n case 40: // down arrow\n scope.activeIdx = (scope.activeIdx + 1) % scope.matches.length;\n scope.$digest();\n target = popUpEl.find('li')[scope.activeIdx];\n target.parentNode.scrollTop = target.offsetTop;\n break;\n default:\n if (shouldSelect) {\n scope.$apply(function() {\n if (angular.isNumber(scope.debounceUpdate) || angular.isObject(scope.debounceUpdate)) {\n $$debounce(function() {\n scope.select(scope.activeIdx, evt);\n }, angular.isNumber(scope.debounceUpdate) ? scope.debounceUpdate : scope.debounceUpdate['default']);\n } else {\n scope.select(scope.activeIdx, evt);\n }\n });\n }\n }\n });\n\n element.bind('focus', function (evt) {\n hasFocus = true;\n if (minLength === 0 && !modelCtrl.$viewValue) {\n $timeout(function() {\n getMatchesAsync(modelCtrl.$viewValue, evt);\n }, 0);\n }\n });\n\n element.bind('blur', function(evt) {\n if (isSelectOnBlur && scope.matches.length && scope.activeIdx !== -1 && !selected) {\n selected = true;\n scope.$apply(function() {\n if (angular.isObject(scope.debounceUpdate) && angular.isNumber(scope.debounceUpdate.blur)) {\n $$debounce(function() {\n scope.select(scope.activeIdx, evt);\n }, scope.debounceUpdate.blur);\n } else {\n scope.select(scope.activeIdx, evt);\n }\n });\n }\n if (!isEditable && modelCtrl.$error.editable) {\n modelCtrl.$setViewValue();\n // Reset validity as we are clearing\n modelCtrl.$setValidity('editable', true);\n modelCtrl.$setValidity('parse', true);\n element.val('');\n }\n hasFocus = false;\n selected = false;\n });\n\n // Keep reference to click handler to unbind it.\n var dismissClickHandler = function(evt) {\n // Issue #3973\n // Firefox treats right click as a click on document\n if (element[0] !== evt.target && evt.which !== 3 && scope.matches.length !== 0) {\n resetMatches();\n if (!$rootScope.$$phase) {\n originalScope.$digest();\n }\n }\n };\n\n $document.on('click', dismissClickHandler);\n\n originalScope.$on('$destroy', function() {\n $document.off('click', dismissClickHandler);\n if (appendToBody || appendTo) {\n $popup.remove();\n }\n\n if (appendToBody) {\n angular.element($window).off('resize', fireRecalculating);\n $document.find('body').off('scroll', fireRecalculating);\n }\n // Prevent jQuery cache memory leak\n popUpEl.remove();\n\n if (showHint) {\n inputsContainer.remove();\n }\n });\n\n var $popup = $compile(popUpEl)(scope);\n\n if (appendToBody) {\n $document.find('body').append($popup);\n } else if (appendTo) {\n angular.element(appendTo).eq(0).append($popup);\n } else {\n element.after($popup);\n }\n\n this.init = function(_modelCtrl, _ngModelOptions) {\n modelCtrl = _modelCtrl;\n ngModelOptions = _ngModelOptions;\n\n scope.debounceUpdate = modelCtrl.$options && $parse(modelCtrl.$options.debounce)(originalScope);\n\n //plug into $parsers pipeline to open a typeahead on view changes initiated from DOM\n //$parsers kick-in on all the changes coming from the view as well as manually triggered by $setViewValue\n modelCtrl.$parsers.unshift(function(inputValue) {\n hasFocus = true;\n\n if (minLength === 0 || inputValue && inputValue.length >= minLength) {\n if (waitTime > 0) {\n cancelPreviousTimeout();\n scheduleSearchWithTimeout(inputValue);\n } else {\n getMatchesAsync(inputValue);\n }\n } else {\n isLoadingSetter(originalScope, false);\n cancelPreviousTimeout();\n resetMatches();\n }\n\n if (isEditable) {\n return inputValue;\n }\n\n if (!inputValue) {\n // Reset in case user had typed something previously.\n modelCtrl.$setValidity('editable', true);\n return null;\n }\n\n modelCtrl.$setValidity('editable', false);\n return undefined;\n });\n\n modelCtrl.$formatters.push(function(modelValue) {\n var candidateViewValue, emptyViewValue;\n var locals = {};\n\n // The validity may be set to false via $parsers (see above) if\n // the model is restricted to selected values. If the model\n // is set manually it is considered to be valid.\n if (!isEditable) {\n modelCtrl.$setValidity('editable', true);\n }\n\n if (inputFormatter) {\n locals.$model = modelValue;\n return inputFormatter(originalScope, locals);\n }\n\n //it might happen that we don't have enough info to properly render input value\n //we need to check for this situation and simply return model value if we can't apply custom formatting\n locals[parserResult.itemName] = modelValue;\n candidateViewValue = parserResult.viewMapper(originalScope, locals);\n locals[parserResult.itemName] = undefined;\n emptyViewValue = parserResult.viewMapper(originalScope, locals);\n\n return candidateViewValue !== emptyViewValue ? candidateViewValue : modelValue;\n });\n };\n }])\n\n .directive('uibTypeahead', function() {\n return {\n controller: 'UibTypeaheadController',\n require: ['ngModel', '^?ngModelOptions', 'uibTypeahead'],\n link: function(originalScope, element, attrs, ctrls) {\n ctrls[2].init(ctrls[0], ctrls[1]);\n }\n };\n })\n\n .directive('uibTypeaheadPopup', ['$$debounce', function($$debounce) {\n return {\n scope: {\n matches: '=',\n query: '=',\n active: '=',\n position: '&',\n moveInProgress: '=',\n select: '&',\n assignIsOpen: '&',\n debounce: '&'\n },\n replace: true,\n templateUrl: function(element, attrs) {\n return attrs.popupTemplateUrl || 'uib/template/typeahead/typeahead-popup.html';\n },\n link: function(scope, element, attrs) {\n scope.templateUrl = attrs.templateUrl;\n\n scope.isOpen = function() {\n var isDropdownOpen = scope.matches.length > 0;\n scope.assignIsOpen({ isOpen: isDropdownOpen });\n return isDropdownOpen;\n };\n\n scope.isActive = function(matchIdx) {\n return scope.active === matchIdx;\n };\n\n scope.selectActive = function(matchIdx) {\n scope.active = matchIdx;\n };\n\n scope.selectMatch = function(activeIdx, evt) {\n var debounce = scope.debounce();\n if (angular.isNumber(debounce) || angular.isObject(debounce)) {\n $$debounce(function() {\n scope.select({activeIdx: activeIdx, evt: evt});\n }, angular.isNumber(debounce) ? debounce : debounce['default']);\n } else {\n scope.select({activeIdx: activeIdx, evt: evt});\n }\n };\n }\n };\n }])\n\n .directive('uibTypeaheadMatch', ['$templateRequest', '$compile', '$parse', function($templateRequest, $compile, $parse) {\n return {\n scope: {\n index: '=',\n match: '=',\n query: '='\n },\n link: function(scope, element, attrs) {\n var tplUrl = $parse(attrs.templateUrl)(scope.$parent) || 'uib/template/typeahead/typeahead-match.html';\n $templateRequest(tplUrl).then(function(tplContent) {\n var tplEl = angular.element(tplContent.trim());\n element.replaceWith(tplEl);\n $compile(tplEl)(scope);\n });\n }\n };\n }])\n\n .filter('uibTypeaheadHighlight', ['$sce', '$injector', '$log', function($sce, $injector, $log) {\n var isSanitizePresent;\n isSanitizePresent = $injector.has('$sanitize');\n\n function escapeRegexp(queryToEscape) {\n // Regex: capture the whole query string and replace it with the string that will be used to match\n // the results, for example if the capture is \"a\" the result will be \\a\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n }\n\n function containsHtml(matchItem) {\n return /<.*>/g.test(matchItem);\n }\n\n return function(matchItem, query) {\n if (!isSanitizePresent && containsHtml(matchItem)) {\n $log.warn('Unsafe use of typeahead please use ngSanitize'); // Warn the user about the danger\n }\n matchItem = query ? ('' + matchItem).replace(new RegExp(escapeRegexp(query), 'gi'), '$&') : matchItem; // Replaces the capture string with a the same string inside of a \"strong\" tag\n if (!isSanitizePresent) {\n matchItem = $sce.trustAsHtml(matchItem); // If $sanitize is not present we pack the string in a $sce object for the ng-bind-html directive\n }\n return matchItem;\n };\n }]);\n\nangular.module(\"uib/template/accordion/accordion-group.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/accordion/accordion-group.html\",\n \"
\\n\" +\n \"
\\n\" +\n \"

\\n\" +\n \" {{heading}}\\n\" +\n \"

\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/accordion/accordion.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/accordion/accordion.html\",\n \"
\");\n}]);\n\nangular.module(\"uib/template/alert/alert.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/alert/alert.html\",\n \"
\\n\" +\n \" \\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/carousel/carousel.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/carousel/carousel.html\",\n \"
\\n\" +\n \"
\\n\" +\n \" 1\\\">\\n\" +\n \" \\n\" +\n \" previous\\n\" +\n \" \\n\" +\n \" 1\\\">\\n\" +\n \" \\n\" +\n \" next\\n\" +\n \" \\n\" +\n \"
    1\\\">\\n\" +\n \"
  1. \\n\" +\n \" slide {{ $index + 1 }} of {{ slides.length }}, currently active\\n\" +\n \"
  2. \\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/carousel/slide.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/carousel/slide.html\",\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/datepicker/datepicker.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/datepicker/datepicker.html\",\n \"
\\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/datepicker/day.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/datepicker/day.html\",\n \"\\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \"
{{::label.abbr}}
{{ weekNumbers[$index] }}\\n\" +\n \" \\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/datepicker/month.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/datepicker/month.html\",\n \"\\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \"
\\n\" +\n \" \\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/datepicker/year.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/datepicker/year.html\",\n \"\\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \"
\\n\" +\n \" \\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/datepickerPopup/popup.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/datepickerPopup/popup.html\",\n \"
\\n\" +\n \" \\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/modal/backdrop.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/modal/backdrop.html\",\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/modal/window.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/modal/window.html\",\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/pager/pager.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/pager/pager.html\",\n \"\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/pagination/pagination.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/pagination/pagination.html\",\n \"\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/tooltip/tooltip-html-popup.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/tooltip/tooltip-html-popup.html\",\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/tooltip/tooltip-popup.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/tooltip/tooltip-popup.html\",\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/tooltip/tooltip-template-popup.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/tooltip/tooltip-template-popup.html\",\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/popover/popover-html.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/popover/popover-html.html\",\n \"
\\n\" +\n \"
\\n\" +\n \"\\n\" +\n \"
\\n\" +\n \"

\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/popover/popover-template.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/popover/popover-template.html\",\n \"
\\n\" +\n \"
\\n\" +\n \"\\n\" +\n \"
\\n\" +\n \"

\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/popover/popover.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/popover/popover.html\",\n \"
\\n\" +\n \"
\\n\" +\n \"\\n\" +\n \"
\\n\" +\n \"

\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/progressbar/bar.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/progressbar/bar.html\",\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/progressbar/progress.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/progressbar/progress.html\",\n \"
\");\n}]);\n\nangular.module(\"uib/template/progressbar/progressbar.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/progressbar/progressbar.html\",\n \"
\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/rating/rating.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/rating/rating.html\",\n \"\\n\" +\n \" ({{ $index < value ? '*' : ' ' }})\\n\" +\n \" \\n\" +\n \"\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/tabs/tab.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/tabs/tab.html\",\n \"
  • \\n\" +\n \" {{heading}}\\n\" +\n \"
  • \\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/tabs/tabset.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/tabs/tabset.html\",\n \"
    \\n\" +\n \" \\n\" +\n \"
    \\n\" +\n \"
    \\n\" +\n \"
    \\n\" +\n \"
    \\n\" +\n \"
    \\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/timepicker/timepicker.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/timepicker/timepicker.html\",\n \"\\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \" \\n\" +\n \"
      
    \\n\" +\n \" \\n\" +\n \" :\\n\" +\n \" \\n\" +\n \" :\\n\" +\n \" \\n\" +\n \"
      
    \\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/typeahead/typeahead-match.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/typeahead/typeahead-match.html\",\n \"\\n\" +\n \"\");\n}]);\n\nangular.module(\"uib/template/typeahead/typeahead-popup.html\", []).run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"uib/template/typeahead/typeahead-popup.html\",\n \"\\n\" +\n \"\");\n}]);\nangular.module('ui.bootstrap.carousel').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibCarouselCss && angular.element(document).find('head').prepend(''); angular.$$uibCarouselCss = true; });\nangular.module('ui.bootstrap.datepicker').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibDatepickerCss && angular.element(document).find('head').prepend(''); angular.$$uibDatepickerCss = true; });\nangular.module('ui.bootstrap.position').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibPositionCss && angular.element(document).find('head').prepend(''); angular.$$uibPositionCss = true; });\nangular.module('ui.bootstrap.datepickerPopup').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibDatepickerpopupCss && angular.element(document).find('head').prepend(''); angular.$$uibDatepickerpopupCss = true; });\nangular.module('ui.bootstrap.tooltip').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibTooltipCss && angular.element(document).find('head').prepend(''); angular.$$uibTooltipCss = true; });\nangular.module('ui.bootstrap.timepicker').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibTimepickerCss && angular.element(document).find('head').prepend(''); angular.$$uibTimepickerCss = true; });\nangular.module('ui.bootstrap.typeahead').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibTypeaheadCss && angular.element(document).find('head').prepend(''); angular.$$uibTypeaheadCss = true; });\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/angular-ui-bootstrap/dist/ui-bootstrap-tpls.js\n ** module id = 13\n ** module chunks = 0\n **/","/**\n * State-based routing for AngularJS\n * @version v0.2.18\n * @link http://angular-ui.github.com/\n * @license MIT License, http://www.opensource.org/licenses/MIT\n */\n\n/* commonjs package manager support (eg componentjs) */\nif (typeof module !== \"undefined\" && typeof exports !== \"undefined\" && module.exports === exports){\n module.exports = 'ui.router';\n}\n\n(function (window, angular, undefined) {\n/*jshint globalstrict:true*/\n/*global angular:false*/\n'use strict';\n\nvar isDefined = angular.isDefined,\n isFunction = angular.isFunction,\n isString = angular.isString,\n isObject = angular.isObject,\n isArray = angular.isArray,\n forEach = angular.forEach,\n extend = angular.extend,\n copy = angular.copy,\n toJson = angular.toJson;\n\nfunction inherit(parent, extra) {\n return extend(new (extend(function() {}, { prototype: parent }))(), extra);\n}\n\nfunction merge(dst) {\n forEach(arguments, function(obj) {\n if (obj !== dst) {\n forEach(obj, function(value, key) {\n if (!dst.hasOwnProperty(key)) dst[key] = value;\n });\n }\n });\n return dst;\n}\n\n/**\n * Finds the common ancestor path between two states.\n *\n * @param {Object} first The first state.\n * @param {Object} second The second state.\n * @return {Array} Returns an array of state names in descending order, not including the root.\n */\nfunction ancestors(first, second) {\n var path = [];\n\n for (var n in first.path) {\n if (first.path[n] !== second.path[n]) break;\n path.push(first.path[n]);\n }\n return path;\n}\n\n/**\n * IE8-safe wrapper for `Object.keys()`.\n *\n * @param {Object} object A JavaScript object.\n * @return {Array} Returns the keys of the object as an array.\n */\nfunction objectKeys(object) {\n if (Object.keys) {\n return Object.keys(object);\n }\n var result = [];\n\n forEach(object, function(val, key) {\n result.push(key);\n });\n return result;\n}\n\n/**\n * IE8-safe wrapper for `Array.prototype.indexOf()`.\n *\n * @param {Array} array A JavaScript array.\n * @param {*} value A value to search the array for.\n * @return {Number} Returns the array index value of `value`, or `-1` if not present.\n */\nfunction indexOf(array, value) {\n if (Array.prototype.indexOf) {\n return array.indexOf(value, Number(arguments[2]) || 0);\n }\n var len = array.length >>> 0, from = Number(arguments[2]) || 0;\n from = (from < 0) ? Math.ceil(from) : Math.floor(from);\n\n if (from < 0) from += len;\n\n for (; from < len; from++) {\n if (from in array && array[from] === value) return from;\n }\n return -1;\n}\n\n/**\n * Merges a set of parameters with all parameters inherited between the common parents of the\n * current state and a given destination state.\n *\n * @param {Object} currentParams The value of the current state parameters ($stateParams).\n * @param {Object} newParams The set of parameters which will be composited with inherited params.\n * @param {Object} $current Internal definition of object representing the current state.\n * @param {Object} $to Internal definition of object representing state to transition to.\n */\nfunction inheritParams(currentParams, newParams, $current, $to) {\n var parents = ancestors($current, $to), parentParams, inherited = {}, inheritList = [];\n\n for (var i in parents) {\n if (!parents[i] || !parents[i].params) continue;\n parentParams = objectKeys(parents[i].params);\n if (!parentParams.length) continue;\n\n for (var j in parentParams) {\n if (indexOf(inheritList, parentParams[j]) >= 0) continue;\n inheritList.push(parentParams[j]);\n inherited[parentParams[j]] = currentParams[parentParams[j]];\n }\n }\n return extend({}, inherited, newParams);\n}\n\n/**\n * Performs a non-strict comparison of the subset of two objects, defined by a list of keys.\n *\n * @param {Object} a The first object.\n * @param {Object} b The second object.\n * @param {Array} keys The list of keys within each object to compare. If the list is empty or not specified,\n * it defaults to the list of keys in `a`.\n * @return {Boolean} Returns `true` if the keys match, otherwise `false`.\n */\nfunction equalForKeys(a, b, keys) {\n if (!keys) {\n keys = [];\n for (var n in a) keys.push(n); // Used instead of Object.keys() for IE8 compatibility\n }\n\n for (var i=0; i\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n */\nangular.module('ui.router', ['ui.router.state']);\n\nangular.module('ui.router.compat', ['ui.router']);\n\n/**\n * @ngdoc object\n * @name ui.router.util.$resolve\n *\n * @requires $q\n * @requires $injector\n *\n * @description\n * Manages resolution of (acyclic) graphs of promises.\n */\n$Resolve.$inject = ['$q', '$injector'];\nfunction $Resolve( $q, $injector) {\n \n var VISIT_IN_PROGRESS = 1,\n VISIT_DONE = 2,\n NOTHING = {},\n NO_DEPENDENCIES = [],\n NO_LOCALS = NOTHING,\n NO_PARENT = extend($q.when(NOTHING), { $$promises: NOTHING, $$values: NOTHING });\n \n\n /**\n * @ngdoc function\n * @name ui.router.util.$resolve#study\n * @methodOf ui.router.util.$resolve\n *\n * @description\n * Studies a set of invocables that are likely to be used multiple times.\n *
    \n   * $resolve.study(invocables)(locals, parent, self)\n   * 
    \n * is equivalent to\n *
    \n   * $resolve.resolve(invocables, locals, parent, self)\n   * 
    \n * but the former is more efficient (in fact `resolve` just calls `study` \n * internally).\n *\n * @param {object} invocables Invocable objects\n * @return {function} a function to pass in locals, parent and self\n */\n this.study = function (invocables) {\n if (!isObject(invocables)) throw new Error(\"'invocables' must be an object\");\n var invocableKeys = objectKeys(invocables || {});\n \n // Perform a topological sort of invocables to build an ordered plan\n var plan = [], cycle = [], visited = {};\n function visit(value, key) {\n if (visited[key] === VISIT_DONE) return;\n \n cycle.push(key);\n if (visited[key] === VISIT_IN_PROGRESS) {\n cycle.splice(0, indexOf(cycle, key));\n throw new Error(\"Cyclic dependency: \" + cycle.join(\" -> \"));\n }\n visited[key] = VISIT_IN_PROGRESS;\n \n if (isString(value)) {\n plan.push(key, [ function() { return $injector.get(value); }], NO_DEPENDENCIES);\n } else {\n var params = $injector.annotate(value);\n forEach(params, function (param) {\n if (param !== key && invocables.hasOwnProperty(param)) visit(invocables[param], param);\n });\n plan.push(key, value, params);\n }\n \n cycle.pop();\n visited[key] = VISIT_DONE;\n }\n forEach(invocables, visit);\n invocables = cycle = visited = null; // plan is all that's required\n \n function isResolve(value) {\n return isObject(value) && value.then && value.$$promises;\n }\n \n return function (locals, parent, self) {\n if (isResolve(locals) && self === undefined) {\n self = parent; parent = locals; locals = null;\n }\n if (!locals) locals = NO_LOCALS;\n else if (!isObject(locals)) {\n throw new Error(\"'locals' must be an object\");\n } \n if (!parent) parent = NO_PARENT;\n else if (!isResolve(parent)) {\n throw new Error(\"'parent' must be a promise returned by $resolve.resolve()\");\n }\n \n // To complete the overall resolution, we have to wait for the parent\n // promise and for the promise for each invokable in our plan.\n var resolution = $q.defer(),\n result = resolution.promise,\n promises = result.$$promises = {},\n values = extend({}, locals),\n wait = 1 + plan.length/3,\n merged = false;\n \n function done() {\n // Merge parent values we haven't got yet and publish our own $$values\n if (!--wait) {\n if (!merged) merge(values, parent.$$values); \n result.$$values = values;\n result.$$promises = result.$$promises || true; // keep for isResolve()\n delete result.$$inheritedValues;\n resolution.resolve(values);\n }\n }\n \n function fail(reason) {\n result.$$failure = reason;\n resolution.reject(reason);\n }\n\n // Short-circuit if parent has already failed\n if (isDefined(parent.$$failure)) {\n fail(parent.$$failure);\n return result;\n }\n \n if (parent.$$inheritedValues) {\n merge(values, omit(parent.$$inheritedValues, invocableKeys));\n }\n\n // Merge parent values if the parent has already resolved, or merge\n // parent promises and wait if the parent resolve is still in progress.\n extend(promises, parent.$$promises);\n if (parent.$$values) {\n merged = merge(values, omit(parent.$$values, invocableKeys));\n result.$$inheritedValues = omit(parent.$$values, invocableKeys);\n done();\n } else {\n if (parent.$$inheritedValues) {\n result.$$inheritedValues = omit(parent.$$inheritedValues, invocableKeys);\n } \n parent.then(done, fail);\n }\n \n // Process each invocable in the plan, but ignore any where a local of the same name exists.\n for (var i=0, ii=plan.length; i} The template html as a string, or a promise \n * for that string.\n */\n this.fromUrl = function (url, params) {\n if (isFunction(url)) url = url(params);\n if (url == null) return null;\n else return $http\n .get(url, { cache: $templateCache, headers: { Accept: 'text/html' }})\n .then(function(response) { return response.data; });\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$templateFactory#fromProvider\n * @methodOf ui.router.util.$templateFactory\n *\n * @description\n * Creates a template by invoking an injectable provider function.\n *\n * @param {Function} provider Function to invoke via `$injector.invoke`\n * @param {Object} params Parameters for the template.\n * @param {Object} locals Locals to pass to `invoke`. Defaults to \n * `{ params: params }`.\n * @return {string|Promise.} The template html as a string, or a promise \n * for that string.\n */\n this.fromProvider = function (provider, params, locals) {\n return $injector.invoke(provider, null, locals || { params: params });\n };\n}\n\nangular.module('ui.router.util').service('$templateFactory', $TemplateFactory);\n\nvar $$UMFP; // reference to $UrlMatcherFactoryProvider\n\n/**\n * @ngdoc object\n * @name ui.router.util.type:UrlMatcher\n *\n * @description\n * Matches URLs against patterns and extracts named parameters from the path or the search\n * part of the URL. A URL pattern consists of a path pattern, optionally followed by '?' and a list\n * of search parameters. Multiple search parameter names are separated by '&'. Search parameters\n * do not influence whether or not a URL is matched, but their values are passed through into\n * the matched parameters returned by {@link ui.router.util.type:UrlMatcher#methods_exec exec}.\n *\n * Path parameter placeholders can be specified using simple colon/catch-all syntax or curly brace\n * syntax, which optionally allows a regular expression for the parameter to be specified:\n *\n * * `':'` name - colon placeholder\n * * `'*'` name - catch-all placeholder\n * * `'{' name '}'` - curly placeholder\n * * `'{' name ':' regexp|type '}'` - curly placeholder with regexp or type name. Should the\n * regexp itself contain curly braces, they must be in matched pairs or escaped with a backslash.\n *\n * Parameter names may contain only word characters (latin letters, digits, and underscore) and\n * must be unique within the pattern (across both path and search parameters). For colon\n * placeholders or curly placeholders without an explicit regexp, a path parameter matches any\n * number of characters other than '/'. For catch-all placeholders the path parameter matches\n * any number of characters.\n *\n * Examples:\n *\n * * `'/hello/'` - Matches only if the path is exactly '/hello/'. There is no special treatment for\n * trailing slashes, and patterns have to match the entire path, not just a prefix.\n * * `'/user/:id'` - Matches '/user/bob' or '/user/1234!!!' or even '/user/' but not '/user' or\n * '/user/bob/details'. The second path segment will be captured as the parameter 'id'.\n * * `'/user/{id}'` - Same as the previous example, but using curly brace syntax.\n * * `'/user/{id:[^/]*}'` - Same as the previous example.\n * * `'/user/{id:[0-9a-fA-F]{1,8}}'` - Similar to the previous example, but only matches if the id\n * parameter consists of 1 to 8 hex digits.\n * * `'/files/{path:.*}'` - Matches any URL starting with '/files/' and captures the rest of the\n * path into the parameter 'path'.\n * * `'/files/*path'` - ditto.\n * * `'/calendar/{start:date}'` - Matches \"/calendar/2014-11-12\" (because the pattern defined\n * in the built-in `date` Type matches `2014-11-12`) and provides a Date object in $stateParams.start\n *\n * @param {string} pattern The pattern to compile into a matcher.\n * @param {Object} config A configuration object hash:\n * @param {Object=} parentMatcher Used to concatenate the pattern/config onto\n * an existing UrlMatcher\n *\n * * `caseInsensitive` - `true` if URL matching should be case insensitive, otherwise `false`, the default value (for backward compatibility) is `false`.\n * * `strict` - `false` if matching against a URL with a trailing slash should be treated as equivalent to a URL without a trailing slash, the default value is `true`.\n *\n * @property {string} prefix A static prefix of this pattern. The matcher guarantees that any\n * URL matching this matcher (i.e. any string for which {@link ui.router.util.type:UrlMatcher#methods_exec exec()} returns\n * non-null) will start with this prefix.\n *\n * @property {string} source The pattern that was passed into the constructor\n *\n * @property {string} sourcePath The path portion of the source property\n *\n * @property {string} sourceSearch The search portion of the source property\n *\n * @property {string} regex The constructed regex that will be used to match against the url when\n * it is time to determine which url will match.\n *\n * @returns {Object} New `UrlMatcher` object\n */\nfunction UrlMatcher(pattern, config, parentMatcher) {\n config = extend({ params: {} }, isObject(config) ? config : {});\n\n // Find all placeholders and create a compiled pattern, using either classic or curly syntax:\n // '*' name\n // ':' name\n // '{' name '}'\n // '{' name ':' regexp '}'\n // The regular expression is somewhat complicated due to the need to allow curly braces\n // inside the regular expression. The placeholder regexp breaks down as follows:\n // ([:*])([\\w\\[\\]]+) - classic placeholder ($1 / $2) (search version has - for snake-case)\n // \\{([\\w\\[\\]]+)(?:\\:\\s*( ... ))?\\} - curly brace placeholder ($3) with optional regexp/type ... ($4) (search version has - for snake-case\n // (?: ... | ... | ... )+ - the regexp consists of any number of atoms, an atom being either\n // [^{}\\\\]+ - anything other than curly braces or backslash\n // \\\\. - a backslash escape\n // \\{(?:[^{}\\\\]+|\\\\.)*\\} - a matched set of curly braces containing other atoms\n var placeholder = /([:*])([\\w\\[\\]]+)|\\{([\\w\\[\\]]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g,\n searchPlaceholder = /([:]?)([\\w\\[\\].-]+)|\\{([\\w\\[\\].-]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g,\n compiled = '^', last = 0, m,\n segments = this.segments = [],\n parentParams = parentMatcher ? parentMatcher.params : {},\n params = this.params = parentMatcher ? parentMatcher.params.$$new() : new $$UMFP.ParamSet(),\n paramNames = [];\n\n function addParameter(id, type, config, location) {\n paramNames.push(id);\n if (parentParams[id]) return parentParams[id];\n if (!/^\\w+([-.]+\\w+)*(?:\\[\\])?$/.test(id)) throw new Error(\"Invalid parameter name '\" + id + \"' in pattern '\" + pattern + \"'\");\n if (params[id]) throw new Error(\"Duplicate parameter name '\" + id + \"' in pattern '\" + pattern + \"'\");\n params[id] = new $$UMFP.Param(id, type, config, location);\n return params[id];\n }\n\n function quoteRegExp(string, pattern, squash, optional) {\n var surroundPattern = ['',''], result = string.replace(/[\\\\\\[\\]\\^$*+?.()|{}]/g, \"\\\\$&\");\n if (!pattern) return result;\n switch(squash) {\n case false: surroundPattern = ['(', ')' + (optional ? \"?\" : \"\")]; break;\n case true:\n result = result.replace(/\\/$/, '');\n surroundPattern = ['(?:\\/(', ')|\\/)?'];\n break;\n default: surroundPattern = ['(' + squash + \"|\", ')?']; break;\n }\n return result + surroundPattern[0] + pattern + surroundPattern[1];\n }\n\n this.source = pattern;\n\n // Split into static segments separated by path parameter placeholders.\n // The number of segments is always 1 more than the number of parameters.\n function matchDetails(m, isSearch) {\n var id, regexp, segment, type, cfg, arrayMode;\n id = m[2] || m[3]; // IE[78] returns '' for unmatched groups instead of null\n cfg = config.params[id];\n segment = pattern.substring(last, m.index);\n regexp = isSearch ? m[4] : m[4] || (m[1] == '*' ? '.*' : null);\n\n if (regexp) {\n type = $$UMFP.type(regexp) || inherit($$UMFP.type(\"string\"), { pattern: new RegExp(regexp, config.caseInsensitive ? 'i' : undefined) });\n }\n\n return {\n id: id, regexp: regexp, segment: segment, type: type, cfg: cfg\n };\n }\n\n var p, param, segment;\n while ((m = placeholder.exec(pattern))) {\n p = matchDetails(m, false);\n if (p.segment.indexOf('?') >= 0) break; // we're into the search part\n\n param = addParameter(p.id, p.type, p.cfg, \"path\");\n compiled += quoteRegExp(p.segment, param.type.pattern.source, param.squash, param.isOptional);\n segments.push(p.segment);\n last = placeholder.lastIndex;\n }\n segment = pattern.substring(last);\n\n // Find any search parameter names and remove them from the last segment\n var i = segment.indexOf('?');\n\n if (i >= 0) {\n var search = this.sourceSearch = segment.substring(i);\n segment = segment.substring(0, i);\n this.sourcePath = pattern.substring(0, last + i);\n\n if (search.length > 0) {\n last = 0;\n while ((m = searchPlaceholder.exec(search))) {\n p = matchDetails(m, true);\n param = addParameter(p.id, p.type, p.cfg, \"search\");\n last = placeholder.lastIndex;\n // check if ?&\n }\n }\n } else {\n this.sourcePath = pattern;\n this.sourceSearch = '';\n }\n\n compiled += quoteRegExp(segment) + (config.strict === false ? '\\/?' : '') + '$';\n segments.push(segment);\n\n this.regexp = new RegExp(compiled, config.caseInsensitive ? 'i' : undefined);\n this.prefix = segments[0];\n this.$$paramNames = paramNames;\n}\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:UrlMatcher#concat\n * @methodOf ui.router.util.type:UrlMatcher\n *\n * @description\n * Returns a new matcher for a pattern constructed by appending the path part and adding the\n * search parameters of the specified pattern to this pattern. The current pattern is not\n * modified. This can be understood as creating a pattern for URLs that are relative to (or\n * suffixes of) the current pattern.\n *\n * @example\n * The following two matchers are equivalent:\n *
    \n * new UrlMatcher('/user/{id}?q').concat('/details?date');\n * new UrlMatcher('/user/{id}/details?q&date');\n * 
    \n *\n * @param {string} pattern The pattern to append.\n * @param {Object} config An object hash of the configuration for the matcher.\n * @returns {UrlMatcher} A matcher for the concatenated pattern.\n */\nUrlMatcher.prototype.concat = function (pattern, config) {\n // Because order of search parameters is irrelevant, we can add our own search\n // parameters to the end of the new pattern. Parse the new pattern by itself\n // and then join the bits together, but it's much easier to do this on a string level.\n var defaultConfig = {\n caseInsensitive: $$UMFP.caseInsensitive(),\n strict: $$UMFP.strictMode(),\n squash: $$UMFP.defaultSquashPolicy()\n };\n return new UrlMatcher(this.sourcePath + pattern + this.sourceSearch, extend(defaultConfig, config), this);\n};\n\nUrlMatcher.prototype.toString = function () {\n return this.source;\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:UrlMatcher#exec\n * @methodOf ui.router.util.type:UrlMatcher\n *\n * @description\n * Tests the specified path against this matcher, and returns an object containing the captured\n * parameter values, or null if the path does not match. The returned object contains the values\n * of any search parameters that are mentioned in the pattern, but their value may be null if\n * they are not present in `searchParams`. This means that search parameters are always treated\n * as optional.\n *\n * @example\n *
    \n * new UrlMatcher('/user/{id}?q&r').exec('/user/bob', {\n *   x: '1', q: 'hello'\n * });\n * // returns { id: 'bob', q: 'hello', r: null }\n * 
    \n *\n * @param {string} path The URL path to match, e.g. `$location.path()`.\n * @param {Object} searchParams URL search parameters, e.g. `$location.search()`.\n * @returns {Object} The captured parameter values.\n */\nUrlMatcher.prototype.exec = function (path, searchParams) {\n var m = this.regexp.exec(path);\n if (!m) return null;\n searchParams = searchParams || {};\n\n var paramNames = this.parameters(), nTotal = paramNames.length,\n nPath = this.segments.length - 1,\n values = {}, i, j, cfg, paramName;\n\n if (nPath !== m.length - 1) throw new Error(\"Unbalanced capture group in route '\" + this.source + \"'\");\n\n function decodePathArray(string) {\n function reverseString(str) { return str.split(\"\").reverse().join(\"\"); }\n function unquoteDashes(str) { return str.replace(/\\\\-/g, \"-\"); }\n\n var split = reverseString(string).split(/-(?!\\\\)/);\n var allReversed = map(split, reverseString);\n return map(allReversed, unquoteDashes).reverse();\n }\n\n var param, paramVal;\n for (i = 0; i < nPath; i++) {\n paramName = paramNames[i];\n param = this.params[paramName];\n paramVal = m[i+1];\n // if the param value matches a pre-replace pair, replace the value before decoding.\n for (j = 0; j < param.replace.length; j++) {\n if (param.replace[j].from === paramVal) paramVal = param.replace[j].to;\n }\n if (paramVal && param.array === true) paramVal = decodePathArray(paramVal);\n if (isDefined(paramVal)) paramVal = param.type.decode(paramVal);\n values[paramName] = param.value(paramVal);\n }\n for (/**/; i < nTotal; i++) {\n paramName = paramNames[i];\n values[paramName] = this.params[paramName].value(searchParams[paramName]);\n param = this.params[paramName];\n paramVal = searchParams[paramName];\n for (j = 0; j < param.replace.length; j++) {\n if (param.replace[j].from === paramVal) paramVal = param.replace[j].to;\n }\n if (isDefined(paramVal)) paramVal = param.type.decode(paramVal);\n values[paramName] = param.value(paramVal);\n }\n\n return values;\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:UrlMatcher#parameters\n * @methodOf ui.router.util.type:UrlMatcher\n *\n * @description\n * Returns the names of all path and search parameters of this pattern in an unspecified order.\n *\n * @returns {Array.} An array of parameter names. Must be treated as read-only. If the\n * pattern has no parameters, an empty array is returned.\n */\nUrlMatcher.prototype.parameters = function (param) {\n if (!isDefined(param)) return this.$$paramNames;\n return this.params[param] || null;\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:UrlMatcher#validates\n * @methodOf ui.router.util.type:UrlMatcher\n *\n * @description\n * Checks an object hash of parameters to validate their correctness according to the parameter\n * types of this `UrlMatcher`.\n *\n * @param {Object} params The object hash of parameters to validate.\n * @returns {boolean} Returns `true` if `params` validates, otherwise `false`.\n */\nUrlMatcher.prototype.validates = function (params) {\n return this.params.$$validates(params);\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:UrlMatcher#format\n * @methodOf ui.router.util.type:UrlMatcher\n *\n * @description\n * Creates a URL that matches this pattern by substituting the specified values\n * for the path and search parameters. Null values for path parameters are\n * treated as empty strings.\n *\n * @example\n *
    \n * new UrlMatcher('/user/{id}?q').format({ id:'bob', q:'yes' });\n * // returns '/user/bob?q=yes'\n * 
    \n *\n * @param {Object} values the values to substitute for the parameters in this pattern.\n * @returns {string} the formatted URL (path and optionally search part).\n */\nUrlMatcher.prototype.format = function (values) {\n values = values || {};\n var segments = this.segments, params = this.parameters(), paramset = this.params;\n if (!this.validates(values)) return null;\n\n var i, search = false, nPath = segments.length - 1, nTotal = params.length, result = segments[0];\n\n function encodeDashes(str) { // Replace dashes with encoded \"\\-\"\n return encodeURIComponent(str).replace(/-/g, function(c) { return '%5C%' + c.charCodeAt(0).toString(16).toUpperCase(); });\n }\n\n for (i = 0; i < nTotal; i++) {\n var isPathParam = i < nPath;\n var name = params[i], param = paramset[name], value = param.value(values[name]);\n var isDefaultValue = param.isOptional && param.type.equals(param.value(), value);\n var squash = isDefaultValue ? param.squash : false;\n var encoded = param.type.encode(value);\n\n if (isPathParam) {\n var nextSegment = segments[i + 1];\n var isFinalPathParam = i + 1 === nPath;\n\n if (squash === false) {\n if (encoded != null) {\n if (isArray(encoded)) {\n result += map(encoded, encodeDashes).join(\"-\");\n } else {\n result += encodeURIComponent(encoded);\n }\n }\n result += nextSegment;\n } else if (squash === true) {\n var capture = result.match(/\\/$/) ? /\\/?(.*)/ : /(.*)/;\n result += nextSegment.match(capture)[1];\n } else if (isString(squash)) {\n result += squash + nextSegment;\n }\n\n if (isFinalPathParam && param.squash === true && result.slice(-1) === '/') result = result.slice(0, -1);\n } else {\n if (encoded == null || (isDefaultValue && squash !== false)) continue;\n if (!isArray(encoded)) encoded = [ encoded ];\n if (encoded.length === 0) continue;\n encoded = map(encoded, encodeURIComponent).join('&' + name + '=');\n result += (search ? '&' : '?') + (name + '=' + encoded);\n search = true;\n }\n }\n\n return result;\n};\n\n/**\n * @ngdoc object\n * @name ui.router.util.type:Type\n *\n * @description\n * Implements an interface to define custom parameter types that can be decoded from and encoded to\n * string parameters matched in a URL. Used by {@link ui.router.util.type:UrlMatcher `UrlMatcher`}\n * objects when matching or formatting URLs, or comparing or validating parameter values.\n *\n * See {@link ui.router.util.$urlMatcherFactory#methods_type `$urlMatcherFactory#type()`} for more\n * information on registering custom types.\n *\n * @param {Object} config A configuration object which contains the custom type definition. The object's\n * properties will override the default methods and/or pattern in `Type`'s public interface.\n * @example\n *
    \n * {\n *   decode: function(val) { return parseInt(val, 10); },\n *   encode: function(val) { return val && val.toString(); },\n *   equals: function(a, b) { return this.is(a) && a === b; },\n *   is: function(val) { return angular.isNumber(val) isFinite(val) && val % 1 === 0; },\n *   pattern: /\\d+/\n * }\n * 
    \n *\n * @property {RegExp} pattern The regular expression pattern used to match values of this type when\n * coming from a substring of a URL.\n *\n * @returns {Object} Returns a new `Type` object.\n */\nfunction Type(config) {\n extend(this, config);\n}\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:Type#is\n * @methodOf ui.router.util.type:Type\n *\n * @description\n * Detects whether a value is of a particular type. Accepts a native (decoded) value\n * and determines whether it matches the current `Type` object.\n *\n * @param {*} val The value to check.\n * @param {string} key Optional. If the type check is happening in the context of a specific\n * {@link ui.router.util.type:UrlMatcher `UrlMatcher`} object, this is the name of the\n * parameter in which `val` is stored. Can be used for meta-programming of `Type` objects.\n * @returns {Boolean} Returns `true` if the value matches the type, otherwise `false`.\n */\nType.prototype.is = function(val, key) {\n return true;\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:Type#encode\n * @methodOf ui.router.util.type:Type\n *\n * @description\n * Encodes a custom/native type value to a string that can be embedded in a URL. Note that the\n * return value does *not* need to be URL-safe (i.e. passed through `encodeURIComponent()`), it\n * only needs to be a representation of `val` that has been coerced to a string.\n *\n * @param {*} val The value to encode.\n * @param {string} key The name of the parameter in which `val` is stored. Can be used for\n * meta-programming of `Type` objects.\n * @returns {string} Returns a string representation of `val` that can be encoded in a URL.\n */\nType.prototype.encode = function(val, key) {\n return val;\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:Type#decode\n * @methodOf ui.router.util.type:Type\n *\n * @description\n * Converts a parameter value (from URL string or transition param) to a custom/native value.\n *\n * @param {string} val The URL parameter value to decode.\n * @param {string} key The name of the parameter in which `val` is stored. Can be used for\n * meta-programming of `Type` objects.\n * @returns {*} Returns a custom representation of the URL parameter value.\n */\nType.prototype.decode = function(val, key) {\n return val;\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:Type#equals\n * @methodOf ui.router.util.type:Type\n *\n * @description\n * Determines whether two decoded values are equivalent.\n *\n * @param {*} a A value to compare against.\n * @param {*} b A value to compare against.\n * @returns {Boolean} Returns `true` if the values are equivalent/equal, otherwise `false`.\n */\nType.prototype.equals = function(a, b) {\n return a == b;\n};\n\nType.prototype.$subPattern = function() {\n var sub = this.pattern.toString();\n return sub.substr(1, sub.length - 2);\n};\n\nType.prototype.pattern = /.*/;\n\nType.prototype.toString = function() { return \"{Type:\" + this.name + \"}\"; };\n\n/** Given an encoded string, or a decoded object, returns a decoded object */\nType.prototype.$normalize = function(val) {\n return this.is(val) ? val : this.decode(val);\n};\n\n/*\n * Wraps an existing custom Type as an array of Type, depending on 'mode'.\n * e.g.:\n * - urlmatcher pattern \"/path?{queryParam[]:int}\"\n * - url: \"/path?queryParam=1&queryParam=2\n * - $stateParams.queryParam will be [1, 2]\n * if `mode` is \"auto\", then\n * - url: \"/path?queryParam=1 will create $stateParams.queryParam: 1\n * - url: \"/path?queryParam=1&queryParam=2 will create $stateParams.queryParam: [1, 2]\n */\nType.prototype.$asArray = function(mode, isSearch) {\n if (!mode) return this;\n if (mode === \"auto\" && !isSearch) throw new Error(\"'auto' array mode is for query parameters only\");\n\n function ArrayType(type, mode) {\n function bindTo(type, callbackName) {\n return function() {\n return type[callbackName].apply(type, arguments);\n };\n }\n\n // Wrap non-array value as array\n function arrayWrap(val) { return isArray(val) ? val : (isDefined(val) ? [ val ] : []); }\n // Unwrap array value for \"auto\" mode. Return undefined for empty array.\n function arrayUnwrap(val) {\n switch(val.length) {\n case 0: return undefined;\n case 1: return mode === \"auto\" ? val[0] : val;\n default: return val;\n }\n }\n function falsey(val) { return !val; }\n\n // Wraps type (.is/.encode/.decode) functions to operate on each value of an array\n function arrayHandler(callback, allTruthyMode) {\n return function handleArray(val) {\n if (isArray(val) && val.length === 0) return val;\n val = arrayWrap(val);\n var result = map(val, callback);\n if (allTruthyMode === true)\n return filter(result, falsey).length === 0;\n return arrayUnwrap(result);\n };\n }\n\n // Wraps type (.equals) functions to operate on each value of an array\n function arrayEqualsHandler(callback) {\n return function handleArray(val1, val2) {\n var left = arrayWrap(val1), right = arrayWrap(val2);\n if (left.length !== right.length) return false;\n for (var i = 0; i < left.length; i++) {\n if (!callback(left[i], right[i])) return false;\n }\n return true;\n };\n }\n\n this.encode = arrayHandler(bindTo(type, 'encode'));\n this.decode = arrayHandler(bindTo(type, 'decode'));\n this.is = arrayHandler(bindTo(type, 'is'), true);\n this.equals = arrayEqualsHandler(bindTo(type, 'equals'));\n this.pattern = type.pattern;\n this.$normalize = arrayHandler(bindTo(type, '$normalize'));\n this.name = type.name;\n this.$arrayMode = mode;\n }\n\n return new ArrayType(this, mode);\n};\n\n\n\n/**\n * @ngdoc object\n * @name ui.router.util.$urlMatcherFactory\n *\n * @description\n * Factory for {@link ui.router.util.type:UrlMatcher `UrlMatcher`} instances. The factory\n * is also available to providers under the name `$urlMatcherFactoryProvider`.\n */\nfunction $UrlMatcherFactory() {\n $$UMFP = this;\n\n var isCaseInsensitive = false, isStrictMode = true, defaultSquashPolicy = false;\n\n // Use tildes to pre-encode slashes.\n // If the slashes are simply URLEncoded, the browser can choose to pre-decode them,\n // and bidirectional encoding/decoding fails.\n // Tilde was chosen because it's not a RFC 3986 section 2.2 Reserved Character\n function valToString(val) { return val != null ? val.toString().replace(/~/g, \"~~\").replace(/\\//g, \"~2F\") : val; }\n function valFromString(val) { return val != null ? val.toString().replace(/~2F/g, \"/\").replace(/~~/g, \"~\") : val; }\n\n var $types = {}, enqueue = true, typeQueue = [], injector, defaultTypes = {\n \"string\": {\n encode: valToString,\n decode: valFromString,\n // TODO: in 1.0, make string .is() return false if value is undefined/null by default.\n // In 0.2.x, string params are optional by default for backwards compat\n is: function(val) { return val == null || !isDefined(val) || typeof val === \"string\"; },\n pattern: /[^/]*/\n },\n \"int\": {\n encode: valToString,\n decode: function(val) { return parseInt(val, 10); },\n is: function(val) { return isDefined(val) && this.decode(val.toString()) === val; },\n pattern: /\\d+/\n },\n \"bool\": {\n encode: function(val) { return val ? 1 : 0; },\n decode: function(val) { return parseInt(val, 10) !== 0; },\n is: function(val) { return val === true || val === false; },\n pattern: /0|1/\n },\n \"date\": {\n encode: function (val) {\n if (!this.is(val))\n return undefined;\n return [ val.getFullYear(),\n ('0' + (val.getMonth() + 1)).slice(-2),\n ('0' + val.getDate()).slice(-2)\n ].join(\"-\");\n },\n decode: function (val) {\n if (this.is(val)) return val;\n var match = this.capture.exec(val);\n return match ? new Date(match[1], match[2] - 1, match[3]) : undefined;\n },\n is: function(val) { return val instanceof Date && !isNaN(val.valueOf()); },\n equals: function (a, b) { return this.is(a) && this.is(b) && a.toISOString() === b.toISOString(); },\n pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,\n capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/\n },\n \"json\": {\n encode: angular.toJson,\n decode: angular.fromJson,\n is: angular.isObject,\n equals: angular.equals,\n pattern: /[^/]*/\n },\n \"any\": { // does not encode/decode\n encode: angular.identity,\n decode: angular.identity,\n equals: angular.equals,\n pattern: /.*/\n }\n };\n\n function getDefaultConfig() {\n return {\n strict: isStrictMode,\n caseInsensitive: isCaseInsensitive\n };\n }\n\n function isInjectable(value) {\n return (isFunction(value) || (isArray(value) && isFunction(value[value.length - 1])));\n }\n\n /**\n * [Internal] Get the default value of a parameter, which may be an injectable function.\n */\n $UrlMatcherFactory.$$getDefaultValue = function(config) {\n if (!isInjectable(config.value)) return config.value;\n if (!injector) throw new Error(\"Injectable functions cannot be called at configuration time\");\n return injector.invoke(config.value);\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$urlMatcherFactory#caseInsensitive\n * @methodOf ui.router.util.$urlMatcherFactory\n *\n * @description\n * Defines whether URL matching should be case sensitive (the default behavior), or not.\n *\n * @param {boolean} value `false` to match URL in a case sensitive manner; otherwise `true`;\n * @returns {boolean} the current value of caseInsensitive\n */\n this.caseInsensitive = function(value) {\n if (isDefined(value))\n isCaseInsensitive = value;\n return isCaseInsensitive;\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$urlMatcherFactory#strictMode\n * @methodOf ui.router.util.$urlMatcherFactory\n *\n * @description\n * Defines whether URLs should match trailing slashes, or not (the default behavior).\n *\n * @param {boolean=} value `false` to match trailing slashes in URLs, otherwise `true`.\n * @returns {boolean} the current value of strictMode\n */\n this.strictMode = function(value) {\n if (isDefined(value))\n isStrictMode = value;\n return isStrictMode;\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$urlMatcherFactory#defaultSquashPolicy\n * @methodOf ui.router.util.$urlMatcherFactory\n *\n * @description\n * Sets the default behavior when generating or matching URLs with default parameter values.\n *\n * @param {string} value A string that defines the default parameter URL squashing behavior.\n * `nosquash`: When generating an href with a default parameter value, do not squash the parameter value from the URL\n * `slash`: When generating an href with a default parameter value, squash (remove) the parameter value, and, if the\n * parameter is surrounded by slashes, squash (remove) one slash from the URL\n * any other string, e.g. \"~\": When generating an href with a default parameter value, squash (remove)\n * the parameter value from the URL and replace it with this string.\n */\n this.defaultSquashPolicy = function(value) {\n if (!isDefined(value)) return defaultSquashPolicy;\n if (value !== true && value !== false && !isString(value))\n throw new Error(\"Invalid squash policy: \" + value + \". Valid policies: false, true, arbitrary-string\");\n defaultSquashPolicy = value;\n return value;\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$urlMatcherFactory#compile\n * @methodOf ui.router.util.$urlMatcherFactory\n *\n * @description\n * Creates a {@link ui.router.util.type:UrlMatcher `UrlMatcher`} for the specified pattern.\n *\n * @param {string} pattern The URL pattern.\n * @param {Object} config The config object hash.\n * @returns {UrlMatcher} The UrlMatcher.\n */\n this.compile = function (pattern, config) {\n return new UrlMatcher(pattern, extend(getDefaultConfig(), config));\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$urlMatcherFactory#isMatcher\n * @methodOf ui.router.util.$urlMatcherFactory\n *\n * @description\n * Returns true if the specified object is a `UrlMatcher`, or false otherwise.\n *\n * @param {Object} object The object to perform the type check against.\n * @returns {Boolean} Returns `true` if the object matches the `UrlMatcher` interface, by\n * implementing all the same methods.\n */\n this.isMatcher = function (o) {\n if (!isObject(o)) return false;\n var result = true;\n\n forEach(UrlMatcher.prototype, function(val, name) {\n if (isFunction(val)) {\n result = result && (isDefined(o[name]) && isFunction(o[name]));\n }\n });\n return result;\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$urlMatcherFactory#type\n * @methodOf ui.router.util.$urlMatcherFactory\n *\n * @description\n * Registers a custom {@link ui.router.util.type:Type `Type`} object that can be used to\n * generate URLs with typed parameters.\n *\n * @param {string} name The type name.\n * @param {Object|Function} definition The type definition. See\n * {@link ui.router.util.type:Type `Type`} for information on the values accepted.\n * @param {Object|Function} definitionFn (optional) A function that is injected before the app\n * runtime starts. The result of this function is merged into the existing `definition`.\n * See {@link ui.router.util.type:Type `Type`} for information on the values accepted.\n *\n * @returns {Object} Returns `$urlMatcherFactoryProvider`.\n *\n * @example\n * This is a simple example of a custom type that encodes and decodes items from an\n * array, using the array index as the URL-encoded value:\n *\n *
    \n   * var list = ['John', 'Paul', 'George', 'Ringo'];\n   *\n   * $urlMatcherFactoryProvider.type('listItem', {\n   *   encode: function(item) {\n   *     // Represent the list item in the URL using its corresponding index\n   *     return list.indexOf(item);\n   *   },\n   *   decode: function(item) {\n   *     // Look up the list item by index\n   *     return list[parseInt(item, 10)];\n   *   },\n   *   is: function(item) {\n   *     // Ensure the item is valid by checking to see that it appears\n   *     // in the list\n   *     return list.indexOf(item) > -1;\n   *   }\n   * });\n   *\n   * $stateProvider.state('list', {\n   *   url: \"/list/{item:listItem}\",\n   *   controller: function($scope, $stateParams) {\n   *     console.log($stateParams.item);\n   *   }\n   * });\n   *\n   * // ...\n   *\n   * // Changes URL to '/list/3', logs \"Ringo\" to the console\n   * $state.go('list', { item: \"Ringo\" });\n   * 
    \n *\n * This is a more complex example of a type that relies on dependency injection to\n * interact with services, and uses the parameter name from the URL to infer how to\n * handle encoding and decoding parameter values:\n *\n *
    \n   * // Defines a custom type that gets a value from a service,\n   * // where each service gets different types of values from\n   * // a backend API:\n   * $urlMatcherFactoryProvider.type('dbObject', {}, function(Users, Posts) {\n   *\n   *   // Matches up services to URL parameter names\n   *   var services = {\n   *     user: Users,\n   *     post: Posts\n   *   };\n   *\n   *   return {\n   *     encode: function(object) {\n   *       // Represent the object in the URL using its unique ID\n   *       return object.id;\n   *     },\n   *     decode: function(value, key) {\n   *       // Look up the object by ID, using the parameter\n   *       // name (key) to call the correct service\n   *       return services[key].findById(value);\n   *     },\n   *     is: function(object, key) {\n   *       // Check that object is a valid dbObject\n   *       return angular.isObject(object) && object.id && services[key];\n   *     }\n   *     equals: function(a, b) {\n   *       // Check the equality of decoded objects by comparing\n   *       // their unique IDs\n   *       return a.id === b.id;\n   *     }\n   *   };\n   * });\n   *\n   * // In a config() block, you can then attach URLs with\n   * // type-annotated parameters:\n   * $stateProvider.state('users', {\n   *   url: \"/users\",\n   *   // ...\n   * }).state('users.item', {\n   *   url: \"/{user:dbObject}\",\n   *   controller: function($scope, $stateParams) {\n   *     // $stateParams.user will now be an object returned from\n   *     // the Users service\n   *   },\n   *   // ...\n   * });\n   * 
    \n */\n this.type = function (name, definition, definitionFn) {\n if (!isDefined(definition)) return $types[name];\n if ($types.hasOwnProperty(name)) throw new Error(\"A type named '\" + name + \"' has already been defined.\");\n\n $types[name] = new Type(extend({ name: name }, definition));\n if (definitionFn) {\n typeQueue.push({ name: name, def: definitionFn });\n if (!enqueue) flushTypeQueue();\n }\n return this;\n };\n\n // `flushTypeQueue()` waits until `$urlMatcherFactory` is injected before invoking the queued `definitionFn`s\n function flushTypeQueue() {\n while(typeQueue.length) {\n var type = typeQueue.shift();\n if (type.pattern) throw new Error(\"You cannot override a type's .pattern at runtime.\");\n angular.extend($types[type.name], injector.invoke(type.def));\n }\n }\n\n // Register default types. Store them in the prototype of $types.\n forEach(defaultTypes, function(type, name) { $types[name] = new Type(extend({name: name}, type)); });\n $types = inherit($types, {});\n\n /* No need to document $get, since it returns this */\n this.$get = ['$injector', function ($injector) {\n injector = $injector;\n enqueue = false;\n flushTypeQueue();\n\n forEach(defaultTypes, function(type, name) {\n if (!$types[name]) $types[name] = new Type(type);\n });\n return this;\n }];\n\n this.Param = function Param(id, type, config, location) {\n var self = this;\n config = unwrapShorthand(config);\n type = getType(config, type, location);\n var arrayMode = getArrayMode();\n type = arrayMode ? type.$asArray(arrayMode, location === \"search\") : type;\n if (type.name === \"string\" && !arrayMode && location === \"path\" && config.value === undefined)\n config.value = \"\"; // for 0.2.x; in 0.3.0+ do not automatically default to \"\"\n var isOptional = config.value !== undefined;\n var squash = getSquashPolicy(config, isOptional);\n var replace = getReplace(config, arrayMode, isOptional, squash);\n\n function unwrapShorthand(config) {\n var keys = isObject(config) ? objectKeys(config) : [];\n var isShorthand = indexOf(keys, \"value\") === -1 && indexOf(keys, \"type\") === -1 &&\n indexOf(keys, \"squash\") === -1 && indexOf(keys, \"array\") === -1;\n if (isShorthand) config = { value: config };\n config.$$fn = isInjectable(config.value) ? config.value : function () { return config.value; };\n return config;\n }\n\n function getType(config, urlType, location) {\n if (config.type && urlType) throw new Error(\"Param '\"+id+\"' has two type configurations.\");\n if (urlType) return urlType;\n if (!config.type) return (location === \"config\" ? $types.any : $types.string);\n\n if (angular.isString(config.type))\n return $types[config.type];\n if (config.type instanceof Type)\n return config.type;\n return new Type(config.type);\n }\n\n // array config: param name (param[]) overrides default settings. explicit config overrides param name.\n function getArrayMode() {\n var arrayDefaults = { array: (location === \"search\" ? \"auto\" : false) };\n var arrayParamNomenclature = id.match(/\\[\\]$/) ? { array: true } : {};\n return extend(arrayDefaults, arrayParamNomenclature, config).array;\n }\n\n /**\n * returns false, true, or the squash value to indicate the \"default parameter url squash policy\".\n */\n function getSquashPolicy(config, isOptional) {\n var squash = config.squash;\n if (!isOptional || squash === false) return false;\n if (!isDefined(squash) || squash == null) return defaultSquashPolicy;\n if (squash === true || isString(squash)) return squash;\n throw new Error(\"Invalid squash policy: '\" + squash + \"'. Valid policies: false, true, or arbitrary string\");\n }\n\n function getReplace(config, arrayMode, isOptional, squash) {\n var replace, configuredKeys, defaultPolicy = [\n { from: \"\", to: (isOptional || arrayMode ? undefined : \"\") },\n { from: null, to: (isOptional || arrayMode ? undefined : \"\") }\n ];\n replace = isArray(config.replace) ? config.replace : [];\n if (isString(squash))\n replace.push({ from: squash, to: undefined });\n configuredKeys = map(replace, function(item) { return item.from; } );\n return filter(defaultPolicy, function(item) { return indexOf(configuredKeys, item.from) === -1; }).concat(replace);\n }\n\n /**\n * [Internal] Get the default value of a parameter, which may be an injectable function.\n */\n function $$getDefaultValue() {\n if (!injector) throw new Error(\"Injectable functions cannot be called at configuration time\");\n var defaultValue = injector.invoke(config.$$fn);\n if (defaultValue !== null && defaultValue !== undefined && !self.type.is(defaultValue))\n throw new Error(\"Default value (\" + defaultValue + \") for parameter '\" + self.id + \"' is not an instance of Type (\" + self.type.name + \")\");\n return defaultValue;\n }\n\n /**\n * [Internal] Gets the decoded representation of a value if the value is defined, otherwise, returns the\n * default value, which may be the result of an injectable function.\n */\n function $value(value) {\n function hasReplaceVal(val) { return function(obj) { return obj.from === val; }; }\n function $replace(value) {\n var replacement = map(filter(self.replace, hasReplaceVal(value)), function(obj) { return obj.to; });\n return replacement.length ? replacement[0] : value;\n }\n value = $replace(value);\n return !isDefined(value) ? $$getDefaultValue() : self.type.$normalize(value);\n }\n\n function toString() { return \"{Param:\" + id + \" \" + type + \" squash: '\" + squash + \"' optional: \" + isOptional + \"}\"; }\n\n extend(this, {\n id: id,\n type: type,\n location: location,\n array: arrayMode,\n squash: squash,\n replace: replace,\n isOptional: isOptional,\n value: $value,\n dynamic: undefined,\n config: config,\n toString: toString\n });\n };\n\n function ParamSet(params) {\n extend(this, params || {});\n }\n\n ParamSet.prototype = {\n $$new: function() {\n return inherit(this, extend(new ParamSet(), { $$parent: this}));\n },\n $$keys: function () {\n var keys = [], chain = [], parent = this,\n ignore = objectKeys(ParamSet.prototype);\n while (parent) { chain.push(parent); parent = parent.$$parent; }\n chain.reverse();\n forEach(chain, function(paramset) {\n forEach(objectKeys(paramset), function(key) {\n if (indexOf(keys, key) === -1 && indexOf(ignore, key) === -1) keys.push(key);\n });\n });\n return keys;\n },\n $$values: function(paramValues) {\n var values = {}, self = this;\n forEach(self.$$keys(), function(key) {\n values[key] = self[key].value(paramValues && paramValues[key]);\n });\n return values;\n },\n $$equals: function(paramValues1, paramValues2) {\n var equal = true, self = this;\n forEach(self.$$keys(), function(key) {\n var left = paramValues1 && paramValues1[key], right = paramValues2 && paramValues2[key];\n if (!self[key].type.equals(left, right)) equal = false;\n });\n return equal;\n },\n $$validates: function $$validate(paramValues) {\n var keys = this.$$keys(), i, param, rawVal, normalized, encoded;\n for (i = 0; i < keys.length; i++) {\n param = this[keys[i]];\n rawVal = paramValues[keys[i]];\n if ((rawVal === undefined || rawVal === null) && param.isOptional)\n break; // There was no parameter value, but the param is optional\n normalized = param.type.$normalize(rawVal);\n if (!param.type.is(normalized))\n return false; // The value was not of the correct Type, and could not be decoded to the correct Type\n encoded = param.type.encode(normalized);\n if (angular.isString(encoded) && !param.type.pattern.exec(encoded))\n return false; // The value was of the correct type, but when encoded, did not match the Type's regexp\n }\n return true;\n },\n $$parent: undefined\n };\n\n this.ParamSet = ParamSet;\n}\n\n// Register as a provider so it's available to other providers\nangular.module('ui.router.util').provider('$urlMatcherFactory', $UrlMatcherFactory);\nangular.module('ui.router.util').run(['$urlMatcherFactory', function($urlMatcherFactory) { }]);\n\n/**\n * @ngdoc object\n * @name ui.router.router.$urlRouterProvider\n *\n * @requires ui.router.util.$urlMatcherFactoryProvider\n * @requires $locationProvider\n *\n * @description\n * `$urlRouterProvider` has the responsibility of watching `$location`. \n * When `$location` changes it runs through a list of rules one by one until a \n * match is found. `$urlRouterProvider` is used behind the scenes anytime you specify \n * a url in a state configuration. All urls are compiled into a UrlMatcher object.\n *\n * There are several methods on `$urlRouterProvider` that make it useful to use directly\n * in your module config.\n */\n$UrlRouterProvider.$inject = ['$locationProvider', '$urlMatcherFactoryProvider'];\nfunction $UrlRouterProvider( $locationProvider, $urlMatcherFactory) {\n var rules = [], otherwise = null, interceptDeferred = false, listener;\n\n // Returns a string that is a prefix of all strings matching the RegExp\n function regExpPrefix(re) {\n var prefix = /^\\^((?:\\\\[^a-zA-Z0-9]|[^\\\\\\[\\]\\^$*+?.()|{}]+)*)/.exec(re.source);\n return (prefix != null) ? prefix[1].replace(/\\\\(.)/g, \"$1\") : '';\n }\n\n // Interpolates matched values into a String.replace()-style pattern\n function interpolate(pattern, match) {\n return pattern.replace(/\\$(\\$|\\d{1,2})/, function (m, what) {\n return match[what === '$' ? 0 : Number(what)];\n });\n }\n\n /**\n * @ngdoc function\n * @name ui.router.router.$urlRouterProvider#rule\n * @methodOf ui.router.router.$urlRouterProvider\n *\n * @description\n * Defines rules that are used by `$urlRouterProvider` to find matches for\n * specific URLs.\n *\n * @example\n *
    \n   * var app = angular.module('app', ['ui.router.router']);\n   *\n   * app.config(function ($urlRouterProvider) {\n   *   // Here's an example of how you might allow case insensitive urls\n   *   $urlRouterProvider.rule(function ($injector, $location) {\n   *     var path = $location.path(),\n   *         normalized = path.toLowerCase();\n   *\n   *     if (path !== normalized) {\n   *       return normalized;\n   *     }\n   *   });\n   * });\n   * 
    \n *\n * @param {function} rule Handler function that takes `$injector` and `$location`\n * services as arguments. You can use them to return a valid path as a string.\n *\n * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance\n */\n this.rule = function (rule) {\n if (!isFunction(rule)) throw new Error(\"'rule' must be a function\");\n rules.push(rule);\n return this;\n };\n\n /**\n * @ngdoc object\n * @name ui.router.router.$urlRouterProvider#otherwise\n * @methodOf ui.router.router.$urlRouterProvider\n *\n * @description\n * Defines a path that is used when an invalid route is requested.\n *\n * @example\n *
    \n   * var app = angular.module('app', ['ui.router.router']);\n   *\n   * app.config(function ($urlRouterProvider) {\n   *   // if the path doesn't match any of the urls you configured\n   *   // otherwise will take care of routing the user to the\n   *   // specified url\n   *   $urlRouterProvider.otherwise('/index');\n   *\n   *   // Example of using function rule as param\n   *   $urlRouterProvider.otherwise(function ($injector, $location) {\n   *     return '/a/valid/url';\n   *   });\n   * });\n   * 
    \n *\n * @param {string|function} rule The url path you want to redirect to or a function \n * rule that returns the url path. The function version is passed two params: \n * `$injector` and `$location` services, and must return a url string.\n *\n * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance\n */\n this.otherwise = function (rule) {\n if (isString(rule)) {\n var redirect = rule;\n rule = function () { return redirect; };\n }\n else if (!isFunction(rule)) throw new Error(\"'rule' must be a function\");\n otherwise = rule;\n return this;\n };\n\n\n function handleIfMatch($injector, handler, match) {\n if (!match) return false;\n var result = $injector.invoke(handler, handler, { $match: match });\n return isDefined(result) ? result : true;\n }\n\n /**\n * @ngdoc function\n * @name ui.router.router.$urlRouterProvider#when\n * @methodOf ui.router.router.$urlRouterProvider\n *\n * @description\n * Registers a handler for a given url matching. \n * \n * If the handler is a string, it is\n * treated as a redirect, and is interpolated according to the syntax of match\n * (i.e. like `String.replace()` for `RegExp`, or like a `UrlMatcher` pattern otherwise).\n *\n * If the handler is a function, it is injectable. It gets invoked if `$location`\n * matches. You have the option of inject the match object as `$match`.\n *\n * The handler can return\n *\n * - **falsy** to indicate that the rule didn't match after all, then `$urlRouter`\n * will continue trying to find another one that matches.\n * - **string** which is treated as a redirect and passed to `$location.url()`\n * - **void** or any **truthy** value tells `$urlRouter` that the url was handled.\n *\n * @example\n *
    \n   * var app = angular.module('app', ['ui.router.router']);\n   *\n   * app.config(function ($urlRouterProvider) {\n   *   $urlRouterProvider.when($state.url, function ($match, $stateParams) {\n   *     if ($state.$current.navigable !== state ||\n   *         !equalForKeys($match, $stateParams) {\n   *      $state.transitionTo(state, $match, false);\n   *     }\n   *   });\n   * });\n   * 
    \n *\n * @param {string|object} what The incoming path that you want to redirect.\n * @param {string|function} handler The path you want to redirect your user to.\n */\n this.when = function (what, handler) {\n var redirect, handlerIsString = isString(handler);\n if (isString(what)) what = $urlMatcherFactory.compile(what);\n\n if (!handlerIsString && !isFunction(handler) && !isArray(handler))\n throw new Error(\"invalid 'handler' in when()\");\n\n var strategies = {\n matcher: function (what, handler) {\n if (handlerIsString) {\n redirect = $urlMatcherFactory.compile(handler);\n handler = ['$match', function ($match) { return redirect.format($match); }];\n }\n return extend(function ($injector, $location) {\n return handleIfMatch($injector, handler, what.exec($location.path(), $location.search()));\n }, {\n prefix: isString(what.prefix) ? what.prefix : ''\n });\n },\n regex: function (what, handler) {\n if (what.global || what.sticky) throw new Error(\"when() RegExp must not be global or sticky\");\n\n if (handlerIsString) {\n redirect = handler;\n handler = ['$match', function ($match) { return interpolate(redirect, $match); }];\n }\n return extend(function ($injector, $location) {\n return handleIfMatch($injector, handler, what.exec($location.path()));\n }, {\n prefix: regExpPrefix(what)\n });\n }\n };\n\n var check = { matcher: $urlMatcherFactory.isMatcher(what), regex: what instanceof RegExp };\n\n for (var n in check) {\n if (check[n]) return this.rule(strategies[n](what, handler));\n }\n\n throw new Error(\"invalid 'what' in when()\");\n };\n\n /**\n * @ngdoc function\n * @name ui.router.router.$urlRouterProvider#deferIntercept\n * @methodOf ui.router.router.$urlRouterProvider\n *\n * @description\n * Disables (or enables) deferring location change interception.\n *\n * If you wish to customize the behavior of syncing the URL (for example, if you wish to\n * defer a transition but maintain the current URL), call this method at configuration time.\n * Then, at run time, call `$urlRouter.listen()` after you have configured your own\n * `$locationChangeSuccess` event handler.\n *\n * @example\n *
    \n   * var app = angular.module('app', ['ui.router.router']);\n   *\n   * app.config(function ($urlRouterProvider) {\n   *\n   *   // Prevent $urlRouter from automatically intercepting URL changes;\n   *   // this allows you to configure custom behavior in between\n   *   // location changes and route synchronization:\n   *   $urlRouterProvider.deferIntercept();\n   *\n   * }).run(function ($rootScope, $urlRouter, UserService) {\n   *\n   *   $rootScope.$on('$locationChangeSuccess', function(e) {\n   *     // UserService is an example service for managing user state\n   *     if (UserService.isLoggedIn()) return;\n   *\n   *     // Prevent $urlRouter's default handler from firing\n   *     e.preventDefault();\n   *\n   *     UserService.handleLogin().then(function() {\n   *       // Once the user has logged in, sync the current URL\n   *       // to the router:\n   *       $urlRouter.sync();\n   *     });\n   *   });\n   *\n   *   // Configures $urlRouter's listener *after* your custom listener\n   *   $urlRouter.listen();\n   * });\n   * 
    \n *\n * @param {boolean} defer Indicates whether to defer location change interception. Passing\n no parameter is equivalent to `true`.\n */\n this.deferIntercept = function (defer) {\n if (defer === undefined) defer = true;\n interceptDeferred = defer;\n };\n\n /**\n * @ngdoc object\n * @name ui.router.router.$urlRouter\n *\n * @requires $location\n * @requires $rootScope\n * @requires $injector\n * @requires $browser\n *\n * @description\n *\n */\n this.$get = $get;\n $get.$inject = ['$location', '$rootScope', '$injector', '$browser', '$sniffer'];\n function $get( $location, $rootScope, $injector, $browser, $sniffer) {\n\n var baseHref = $browser.baseHref(), location = $location.url(), lastPushedUrl;\n\n function appendBasePath(url, isHtml5, absolute) {\n if (baseHref === '/') return url;\n if (isHtml5) return baseHref.slice(0, -1) + url;\n if (absolute) return baseHref.slice(1) + url;\n return url;\n }\n\n // TODO: Optimize groups of rules with non-empty prefix into some sort of decision tree\n function update(evt) {\n if (evt && evt.defaultPrevented) return;\n var ignoreUpdate = lastPushedUrl && $location.url() === lastPushedUrl;\n lastPushedUrl = undefined;\n // TODO: Re-implement this in 1.0 for https://github.com/angular-ui/ui-router/issues/1573\n //if (ignoreUpdate) return true;\n\n function check(rule) {\n var handled = rule($injector, $location);\n\n if (!handled) return false;\n if (isString(handled)) $location.replace().url(handled);\n return true;\n }\n var n = rules.length, i;\n\n for (i = 0; i < n; i++) {\n if (check(rules[i])) return;\n }\n // always check otherwise last to allow dynamic updates to the set of rules\n if (otherwise) check(otherwise);\n }\n\n function listen() {\n listener = listener || $rootScope.$on('$locationChangeSuccess', update);\n return listener;\n }\n\n if (!interceptDeferred) listen();\n\n return {\n /**\n * @ngdoc function\n * @name ui.router.router.$urlRouter#sync\n * @methodOf ui.router.router.$urlRouter\n *\n * @description\n * Triggers an update; the same update that happens when the address bar url changes, aka `$locationChangeSuccess`.\n * This method is useful when you need to use `preventDefault()` on the `$locationChangeSuccess` event,\n * perform some custom logic (route protection, auth, config, redirection, etc) and then finally proceed\n * with the transition by calling `$urlRouter.sync()`.\n *\n * @example\n *
    \n       * angular.module('app', ['ui.router'])\n       *   .run(function($rootScope, $urlRouter) {\n       *     $rootScope.$on('$locationChangeSuccess', function(evt) {\n       *       // Halt state change from even starting\n       *       evt.preventDefault();\n       *       // Perform custom logic\n       *       var meetsRequirement = ...\n       *       // Continue with the update and state transition if logic allows\n       *       if (meetsRequirement) $urlRouter.sync();\n       *     });\n       * });\n       * 
    \n */\n sync: function() {\n update();\n },\n\n listen: function() {\n return listen();\n },\n\n update: function(read) {\n if (read) {\n location = $location.url();\n return;\n }\n if ($location.url() === location) return;\n\n $location.url(location);\n $location.replace();\n },\n\n push: function(urlMatcher, params, options) {\n var url = urlMatcher.format(params || {});\n\n // Handle the special hash param, if needed\n if (url !== null && params && params['#']) {\n url += '#' + params['#'];\n }\n\n $location.url(url);\n lastPushedUrl = options && options.$$avoidResync ? $location.url() : undefined;\n if (options && options.replace) $location.replace();\n },\n\n /**\n * @ngdoc function\n * @name ui.router.router.$urlRouter#href\n * @methodOf ui.router.router.$urlRouter\n *\n * @description\n * A URL generation method that returns the compiled URL for a given\n * {@link ui.router.util.type:UrlMatcher `UrlMatcher`}, populated with the provided parameters.\n *\n * @example\n *
    \n       * $bob = $urlRouter.href(new UrlMatcher(\"/about/:person\"), {\n       *   person: \"bob\"\n       * });\n       * // $bob == \"/about/bob\";\n       * 
    \n *\n * @param {UrlMatcher} urlMatcher The `UrlMatcher` object which is used as the template of the URL to generate.\n * @param {object=} params An object of parameter values to fill the matcher's required parameters.\n * @param {object=} options Options object. The options are:\n *\n * - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. \"http://www.example.com/fullurl\".\n *\n * @returns {string} Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher`\n */\n href: function(urlMatcher, params, options) {\n if (!urlMatcher.validates(params)) return null;\n\n var isHtml5 = $locationProvider.html5Mode();\n if (angular.isObject(isHtml5)) {\n isHtml5 = isHtml5.enabled;\n }\n\n isHtml5 = isHtml5 && $sniffer.history;\n \n var url = urlMatcher.format(params);\n options = options || {};\n\n if (!isHtml5 && url !== null) {\n url = \"#\" + $locationProvider.hashPrefix() + url;\n }\n\n // Handle special hash param, if needed\n if (url !== null && params && params['#']) {\n url += '#' + params['#'];\n }\n\n url = appendBasePath(url, isHtml5, options.absolute);\n\n if (!options.absolute || !url) {\n return url;\n }\n\n var slash = (!isHtml5 && url ? '/' : ''), port = $location.port();\n port = (port === 80 || port === 443 ? '' : ':' + port);\n\n return [$location.protocol(), '://', $location.host(), port, slash, url].join('');\n }\n };\n }\n}\n\nangular.module('ui.router.router').provider('$urlRouter', $UrlRouterProvider);\n\n/**\n * @ngdoc object\n * @name ui.router.state.$stateProvider\n *\n * @requires ui.router.router.$urlRouterProvider\n * @requires ui.router.util.$urlMatcherFactoryProvider\n *\n * @description\n * The new `$stateProvider` works similar to Angular's v1 router, but it focuses purely\n * on state.\n *\n * A state corresponds to a \"place\" in the application in terms of the overall UI and\n * navigation. A state describes (via the controller / template / view properties) what\n * the UI looks like and does at that place.\n *\n * States often have things in common, and the primary way of factoring out these\n * commonalities in this model is via the state hierarchy, i.e. parent/child states aka\n * nested states.\n *\n * The `$stateProvider` provides interfaces to declare these states for your app.\n */\n$StateProvider.$inject = ['$urlRouterProvider', '$urlMatcherFactoryProvider'];\nfunction $StateProvider( $urlRouterProvider, $urlMatcherFactory) {\n\n var root, states = {}, $state, queue = {}, abstractKey = 'abstract';\n\n // Builds state properties from definition passed to registerState()\n var stateBuilder = {\n\n // Derive parent state from a hierarchical name only if 'parent' is not explicitly defined.\n // state.children = [];\n // if (parent) parent.children.push(state);\n parent: function(state) {\n if (isDefined(state.parent) && state.parent) return findState(state.parent);\n // regex matches any valid composite state name\n // would match \"contact.list\" but not \"contacts\"\n var compositeName = /^(.+)\\.[^.]+$/.exec(state.name);\n return compositeName ? findState(compositeName[1]) : root;\n },\n\n // inherit 'data' from parent and override by own values (if any)\n data: function(state) {\n if (state.parent && state.parent.data) {\n state.data = state.self.data = inherit(state.parent.data, state.data);\n }\n return state.data;\n },\n\n // Build a URLMatcher if necessary, either via a relative or absolute URL\n url: function(state) {\n var url = state.url, config = { params: state.params || {} };\n\n if (isString(url)) {\n if (url.charAt(0) == '^') return $urlMatcherFactory.compile(url.substring(1), config);\n return (state.parent.navigable || root).url.concat(url, config);\n }\n\n if (!url || $urlMatcherFactory.isMatcher(url)) return url;\n throw new Error(\"Invalid url '\" + url + \"' in state '\" + state + \"'\");\n },\n\n // Keep track of the closest ancestor state that has a URL (i.e. is navigable)\n navigable: function(state) {\n return state.url ? state : (state.parent ? state.parent.navigable : null);\n },\n\n // Own parameters for this state. state.url.params is already built at this point. Create and add non-url params\n ownParams: function(state) {\n var params = state.url && state.url.params || new $$UMFP.ParamSet();\n forEach(state.params || {}, function(config, id) {\n if (!params[id]) params[id] = new $$UMFP.Param(id, null, config, \"config\");\n });\n return params;\n },\n\n // Derive parameters for this state and ensure they're a super-set of parent's parameters\n params: function(state) {\n var ownParams = pick(state.ownParams, state.ownParams.$$keys());\n return state.parent && state.parent.params ? extend(state.parent.params.$$new(), ownParams) : new $$UMFP.ParamSet();\n },\n\n // If there is no explicit multi-view configuration, make one up so we don't have\n // to handle both cases in the view directive later. Note that having an explicit\n // 'views' property will mean the default unnamed view properties are ignored. This\n // is also a good time to resolve view names to absolute names, so everything is a\n // straight lookup at link time.\n views: function(state) {\n var views = {};\n\n forEach(isDefined(state.views) ? state.views : { '': state }, function (view, name) {\n if (name.indexOf('@') < 0) name += '@' + state.parent.name;\n views[name] = view;\n });\n return views;\n },\n\n // Keep a full path from the root down to this state as this is needed for state activation.\n path: function(state) {\n return state.parent ? state.parent.path.concat(state) : []; // exclude root from path\n },\n\n // Speed up $state.contains() as it's used a lot\n includes: function(state) {\n var includes = state.parent ? extend({}, state.parent.includes) : {};\n includes[state.name] = true;\n return includes;\n },\n\n $delegates: {}\n };\n\n function isRelative(stateName) {\n return stateName.indexOf(\".\") === 0 || stateName.indexOf(\"^\") === 0;\n }\n\n function findState(stateOrName, base) {\n if (!stateOrName) return undefined;\n\n var isStr = isString(stateOrName),\n name = isStr ? stateOrName : stateOrName.name,\n path = isRelative(name);\n\n if (path) {\n if (!base) throw new Error(\"No reference point given for path '\" + name + \"'\");\n base = findState(base);\n \n var rel = name.split(\".\"), i = 0, pathLength = rel.length, current = base;\n\n for (; i < pathLength; i++) {\n if (rel[i] === \"\" && i === 0) {\n current = base;\n continue;\n }\n if (rel[i] === \"^\") {\n if (!current.parent) throw new Error(\"Path '\" + name + \"' not valid for state '\" + base.name + \"'\");\n current = current.parent;\n continue;\n }\n break;\n }\n rel = rel.slice(i).join(\".\");\n name = current.name + (current.name && rel ? \".\" : \"\") + rel;\n }\n var state = states[name];\n\n if (state && (isStr || (!isStr && (state === stateOrName || state.self === stateOrName)))) {\n return state;\n }\n return undefined;\n }\n\n function queueState(parentName, state) {\n if (!queue[parentName]) {\n queue[parentName] = [];\n }\n queue[parentName].push(state);\n }\n\n function flushQueuedChildren(parentName) {\n var queued = queue[parentName] || [];\n while(queued.length) {\n registerState(queued.shift());\n }\n }\n\n function registerState(state) {\n // Wrap a new object around the state so we can store our private details easily.\n state = inherit(state, {\n self: state,\n resolve: state.resolve || {},\n toString: function() { return this.name; }\n });\n\n var name = state.name;\n if (!isString(name) || name.indexOf('@') >= 0) throw new Error(\"State must have a valid name\");\n if (states.hasOwnProperty(name)) throw new Error(\"State '\" + name + \"' is already defined\");\n\n // Get parent name\n var parentName = (name.indexOf('.') !== -1) ? name.substring(0, name.lastIndexOf('.'))\n : (isString(state.parent)) ? state.parent\n : (isObject(state.parent) && isString(state.parent.name)) ? state.parent.name\n : '';\n\n // If parent is not registered yet, add state to queue and register later\n if (parentName && !states[parentName]) {\n return queueState(parentName, state.self);\n }\n\n for (var key in stateBuilder) {\n if (isFunction(stateBuilder[key])) state[key] = stateBuilder[key](state, stateBuilder.$delegates[key]);\n }\n states[name] = state;\n\n // Register the state in the global state list and with $urlRouter if necessary.\n if (!state[abstractKey] && state.url) {\n $urlRouterProvider.when(state.url, ['$match', '$stateParams', function ($match, $stateParams) {\n if ($state.$current.navigable != state || !equalForKeys($match, $stateParams)) {\n $state.transitionTo(state, $match, { inherit: true, location: false });\n }\n }]);\n }\n\n // Register any queued children\n flushQueuedChildren(name);\n\n return state;\n }\n\n // Checks text to see if it looks like a glob.\n function isGlob (text) {\n return text.indexOf('*') > -1;\n }\n\n // Returns true if glob matches current $state name.\n function doesStateMatchGlob (glob) {\n var globSegments = glob.split('.'),\n segments = $state.$current.name.split('.');\n\n //match single stars\n for (var i = 0, l = globSegments.length; i < l; i++) {\n if (globSegments[i] === '*') {\n segments[i] = '*';\n }\n }\n\n //match greedy starts\n if (globSegments[0] === '**') {\n segments = segments.slice(indexOf(segments, globSegments[1]));\n segments.unshift('**');\n }\n //match greedy ends\n if (globSegments[globSegments.length - 1] === '**') {\n segments.splice(indexOf(segments, globSegments[globSegments.length - 2]) + 1, Number.MAX_VALUE);\n segments.push('**');\n }\n\n if (globSegments.length != segments.length) {\n return false;\n }\n\n return segments.join('') === globSegments.join('');\n }\n\n\n // Implicit root state that is always active\n root = registerState({\n name: '',\n url: '^',\n views: null,\n 'abstract': true\n });\n root.navigable = null;\n\n\n /**\n * @ngdoc function\n * @name ui.router.state.$stateProvider#decorator\n * @methodOf ui.router.state.$stateProvider\n *\n * @description\n * Allows you to extend (carefully) or override (at your own peril) the \n * `stateBuilder` object used internally by `$stateProvider`. This can be used \n * to add custom functionality to ui-router, for example inferring templateUrl \n * based on the state name.\n *\n * When passing only a name, it returns the current (original or decorated) builder\n * function that matches `name`.\n *\n * The builder functions that can be decorated are listed below. Though not all\n * necessarily have a good use case for decoration, that is up to you to decide.\n *\n * In addition, users can attach custom decorators, which will generate new \n * properties within the state's internal definition. There is currently no clear \n * use-case for this beyond accessing internal states (i.e. $state.$current), \n * however, expect this to become increasingly relevant as we introduce additional \n * meta-programming features.\n *\n * **Warning**: Decorators should not be interdependent because the order of \n * execution of the builder functions in non-deterministic. Builder functions \n * should only be dependent on the state definition object and super function.\n *\n *\n * Existing builder functions and current return values:\n *\n * - **parent** `{object}` - returns the parent state object.\n * - **data** `{object}` - returns state data, including any inherited data that is not\n * overridden by own values (if any).\n * - **url** `{object}` - returns a {@link ui.router.util.type:UrlMatcher UrlMatcher}\n * or `null`.\n * - **navigable** `{object}` - returns closest ancestor state that has a URL (aka is \n * navigable).\n * - **params** `{object}` - returns an array of state params that are ensured to \n * be a super-set of parent's params.\n * - **views** `{object}` - returns a views object where each key is an absolute view \n * name (i.e. \"viewName@stateName\") and each value is the config object \n * (template, controller) for the view. Even when you don't use the views object \n * explicitly on a state config, one is still created for you internally.\n * So by decorating this builder function you have access to decorating template \n * and controller properties.\n * - **ownParams** `{object}` - returns an array of params that belong to the state, \n * not including any params defined by ancestor states.\n * - **path** `{string}` - returns the full path from the root down to this state. \n * Needed for state activation.\n * - **includes** `{object}` - returns an object that includes every state that \n * would pass a `$state.includes()` test.\n *\n * @example\n *
    \n   * // Override the internal 'views' builder with a function that takes the state\n   * // definition, and a reference to the internal function being overridden:\n   * $stateProvider.decorator('views', function (state, parent) {\n   *   var result = {},\n   *       views = parent(state);\n   *\n   *   angular.forEach(views, function (config, name) {\n   *     var autoName = (state.name + '.' + name).replace('.', '/');\n   *     config.templateUrl = config.templateUrl || '/partials/' + autoName + '.html';\n   *     result[name] = config;\n   *   });\n   *   return result;\n   * });\n   *\n   * $stateProvider.state('home', {\n   *   views: {\n   *     'contact.list': { controller: 'ListController' },\n   *     'contact.item': { controller: 'ItemController' }\n   *   }\n   * });\n   *\n   * // ...\n   *\n   * $state.go('home');\n   * // Auto-populates list and item views with /partials/home/contact/list.html,\n   * // and /partials/home/contact/item.html, respectively.\n   * 
    \n *\n * @param {string} name The name of the builder function to decorate. \n * @param {object} func A function that is responsible for decorating the original \n * builder function. The function receives two parameters:\n *\n * - `{object}` - state - The state config object.\n * - `{object}` - super - The original builder function.\n *\n * @return {object} $stateProvider - $stateProvider instance\n */\n this.decorator = decorator;\n function decorator(name, func) {\n /*jshint validthis: true */\n if (isString(name) && !isDefined(func)) {\n return stateBuilder[name];\n }\n if (!isFunction(func) || !isString(name)) {\n return this;\n }\n if (stateBuilder[name] && !stateBuilder.$delegates[name]) {\n stateBuilder.$delegates[name] = stateBuilder[name];\n }\n stateBuilder[name] = func;\n return this;\n }\n\n /**\n * @ngdoc function\n * @name ui.router.state.$stateProvider#state\n * @methodOf ui.router.state.$stateProvider\n *\n * @description\n * Registers a state configuration under a given state name. The stateConfig object\n * has the following acceptable properties.\n *\n * @param {string} name A unique state name, e.g. \"home\", \"about\", \"contacts\".\n * To create a parent/child state use a dot, e.g. \"about.sales\", \"home.newest\".\n * @param {object} stateConfig State configuration object.\n * @param {string|function=} stateConfig.template\n * \n * html template as a string or a function that returns\n * an html template as a string which should be used by the uiView directives. This property \n * takes precedence over templateUrl.\n * \n * If `template` is a function, it will be called with the following parameters:\n *\n * - {array.<object>} - state parameters extracted from the current $location.path() by\n * applying the current state\n *\n *
    template:\n   *   \"

    inline template definition

    \" +\n * \"
    \"
    \n *
    template: function(params) {\n   *       return \"

    generated template

    \"; }
    \n * \n *\n * @param {string|function=} stateConfig.templateUrl\n * \n *\n * path or function that returns a path to an html\n * template that should be used by uiView.\n * \n * If `templateUrl` is a function, it will be called with the following parameters:\n *\n * - {array.<object>} - state parameters extracted from the current $location.path() by \n * applying the current state\n *\n *
    templateUrl: \"home.html\"
    \n *
    templateUrl: function(params) {\n   *     return myTemplates[params.pageId]; }
    \n *\n * @param {function=} stateConfig.templateProvider\n * \n * Provider function that returns HTML content string.\n *
     templateProvider:\n   *       function(MyTemplateService, params) {\n   *         return MyTemplateService.getTemplate(params.pageId);\n   *       }
    \n *\n * @param {string|function=} stateConfig.controller\n * \n *\n * Controller fn that should be associated with newly\n * related scope or the name of a registered controller if passed as a string.\n * Optionally, the ControllerAs may be declared here.\n *
    controller: \"MyRegisteredController\"
    \n *
    controller:\n   *     \"MyRegisteredController as fooCtrl\"}
    \n *
    controller: function($scope, MyService) {\n   *     $scope.data = MyService.getData(); }
    \n *\n * @param {function=} stateConfig.controllerProvider\n * \n *\n * Injectable provider function that returns the actual controller or string.\n *
    controllerProvider:\n   *   function(MyResolveData) {\n   *     if (MyResolveData.foo)\n   *       return \"FooCtrl\"\n   *     else if (MyResolveData.bar)\n   *       return \"BarCtrl\";\n   *     else return function($scope) {\n   *       $scope.baz = \"Qux\";\n   *     }\n   *   }
    \n *\n * @param {string=} stateConfig.controllerAs\n * \n * \n * A controller alias name. If present the controller will be\n * published to scope under the controllerAs name.\n *
    controllerAs: \"myCtrl\"
    \n *\n * @param {string|object=} stateConfig.parent\n * \n * Optionally specifies the parent state of this state.\n *\n *
    parent: 'parentState'
    \n *
    parent: parentState // JS variable
    \n *\n * @param {object=} stateConfig.resolve\n * \n *\n * An optional map<string, function> of dependencies which\n * should be injected into the controller. If any of these dependencies are promises, \n * the router will wait for them all to be resolved before the controller is instantiated.\n * If all the promises are resolved successfully, the $stateChangeSuccess event is fired\n * and the values of the resolved promises are injected into any controllers that reference them.\n * If any of the promises are rejected the $stateChangeError event is fired.\n *\n * The map object is:\n * \n * - key - {string}: name of dependency to be injected into controller\n * - factory - {string|function}: If string then it is alias for service. Otherwise if function, \n * it is injected and return value it treated as dependency. If result is a promise, it is \n * resolved before its value is injected into controller.\n *\n *
    resolve: {\n   *     myResolve1:\n   *       function($http, $stateParams) {\n   *         return $http.get(\"/api/foos/\"+stateParams.fooID);\n   *       }\n   *     }
    \n *\n * @param {string=} stateConfig.url\n * \n *\n * A url fragment with optional parameters. When a state is navigated or\n * transitioned to, the `$stateParams` service will be populated with any \n * parameters that were passed.\n *\n * (See {@link ui.router.util.type:UrlMatcher UrlMatcher} `UrlMatcher`} for\n * more details on acceptable patterns )\n *\n * examples:\n *
    url: \"/home\"\n   * url: \"/users/:userid\"\n   * url: \"/books/{bookid:[a-zA-Z_-]}\"\n   * url: \"/books/{categoryid:int}\"\n   * url: \"/books/{publishername:string}/{categoryid:int}\"\n   * url: \"/messages?before&after\"\n   * url: \"/messages?{before:date}&{after:date}\"\n   * url: \"/messages/:mailboxid?{before:date}&{after:date}\"\n   * 
    \n *\n * @param {object=} stateConfig.views\n * \n * an optional map<string, object> which defined multiple views, or targets views\n * manually/explicitly.\n *\n * Examples:\n *\n * Targets three named `ui-view`s in the parent state's template\n *
    views: {\n   *     header: {\n   *       controller: \"headerCtrl\",\n   *       templateUrl: \"header.html\"\n   *     }, body: {\n   *       controller: \"bodyCtrl\",\n   *       templateUrl: \"body.html\"\n   *     }, footer: {\n   *       controller: \"footCtrl\",\n   *       templateUrl: \"footer.html\"\n   *     }\n   *   }
    \n *\n * Targets named `ui-view=\"header\"` from grandparent state 'top''s template, and named `ui-view=\"body\" from parent state's template.\n *
    views: {\n   *     'header@top': {\n   *       controller: \"msgHeaderCtrl\",\n   *       templateUrl: \"msgHeader.html\"\n   *     }, 'body': {\n   *       controller: \"messagesCtrl\",\n   *       templateUrl: \"messages.html\"\n   *     }\n   *   }
    \n *\n * @param {boolean=} [stateConfig.abstract=false]\n * \n * An abstract state will never be directly activated,\n * but can provide inherited properties to its common children states.\n *
    abstract: true
    \n *\n * @param {function=} stateConfig.onEnter\n * \n *\n * Callback function for when a state is entered. Good way\n * to trigger an action or dispatch an event, such as opening a dialog.\n * If minifying your scripts, make sure to explicitly annotate this function,\n * because it won't be automatically annotated by your build tools.\n *\n *
    onEnter: function(MyService, $stateParams) {\n   *     MyService.foo($stateParams.myParam);\n   * }
    \n *\n * @param {function=} stateConfig.onExit\n * \n *\n * Callback function for when a state is exited. Good way to\n * trigger an action or dispatch an event, such as opening a dialog.\n * If minifying your scripts, make sure to explicitly annotate this function,\n * because it won't be automatically annotated by your build tools.\n *\n *
    onExit: function(MyService, $stateParams) {\n   *     MyService.cleanup($stateParams.myParam);\n   * }
    \n *\n * @param {boolean=} [stateConfig.reloadOnSearch=true]\n * \n *\n * If `false`, will not retrigger the same state\n * just because a search/query parameter has changed (via $location.search() or $location.hash()). \n * Useful for when you'd like to modify $location.search() without triggering a reload.\n *
    reloadOnSearch: false
    \n *\n * @param {object=} stateConfig.data\n * \n *\n * Arbitrary data object, useful for custom configuration. The parent state's `data` is\n * prototypally inherited. In other words, adding a data property to a state adds it to\n * the entire subtree via prototypal inheritance.\n *\n *
    data: {\n   *     requiredRole: 'foo'\n   * } 
    \n *\n * @param {object=} stateConfig.params\n * \n *\n * A map which optionally configures parameters declared in the `url`, or\n * defines additional non-url parameters. For each parameter being\n * configured, add a configuration object keyed to the name of the parameter.\n *\n * Each parameter configuration object may contain the following properties:\n *\n * - ** value ** - {object|function=}: specifies the default value for this\n * parameter. This implicitly sets this parameter as optional.\n *\n * When UI-Router routes to a state and no value is\n * specified for this parameter in the URL or transition, the\n * default value will be used instead. If `value` is a function,\n * it will be injected and invoked, and the return value used.\n *\n * *Note*: `undefined` is treated as \"no default value\" while `null`\n * is treated as \"the default value is `null`\".\n *\n * *Shorthand*: If you only need to configure the default value of the\n * parameter, you may use a shorthand syntax. In the **`params`**\n * map, instead mapping the param name to a full parameter configuration\n * object, simply set map it to the default parameter value, e.g.:\n *\n *
    // define a parameter's default value\n   * params: {\n   *     param1: { value: \"defaultValue\" }\n   * }\n   * // shorthand default values\n   * params: {\n   *     param1: \"defaultValue\",\n   *     param2: \"param2Default\"\n   * }
    \n *\n * - ** array ** - {boolean=}: *(default: false)* If true, the param value will be\n * treated as an array of values. If you specified a Type, the value will be\n * treated as an array of the specified Type. Note: query parameter values\n * default to a special `\"auto\"` mode.\n *\n * For query parameters in `\"auto\"` mode, if multiple values for a single parameter\n * are present in the URL (e.g.: `/foo?bar=1&bar=2&bar=3`) then the values\n * are mapped to an array (e.g.: `{ foo: [ '1', '2', '3' ] }`). However, if\n * only one value is present (e.g.: `/foo?bar=1`) then the value is treated as single\n * value (e.g.: `{ foo: '1' }`).\n *\n *
    params: {\n   *     param1: { array: true }\n   * }
    \n *\n * - ** squash ** - {bool|string=}: `squash` configures how a default parameter value is represented in the URL when\n * the current parameter value is the same as the default value. If `squash` is not set, it uses the\n * configured default squash policy.\n * (See {@link ui.router.util.$urlMatcherFactory#methods_defaultSquashPolicy `defaultSquashPolicy()`})\n *\n * There are three squash settings:\n *\n * - false: The parameter's default value is not squashed. It is encoded and included in the URL\n * - true: The parameter's default value is omitted from the URL. If the parameter is preceeded and followed\n * by slashes in the state's `url` declaration, then one of those slashes are omitted.\n * This can allow for cleaner looking URLs.\n * - `\"\"`: The parameter's default value is replaced with an arbitrary placeholder of your choice.\n *\n *
    params: {\n   *     param1: {\n   *       value: \"defaultId\",\n   *       squash: true\n   * } }\n   * // squash \"defaultValue\" to \"~\"\n   * params: {\n   *     param1: {\n   *       value: \"defaultValue\",\n   *       squash: \"~\"\n   * } }\n   * 
    \n *\n *\n * @example\n *
    \n   * // Some state name examples\n   *\n   * // stateName can be a single top-level name (must be unique).\n   * $stateProvider.state(\"home\", {});\n   *\n   * // Or it can be a nested state name. This state is a child of the\n   * // above \"home\" state.\n   * $stateProvider.state(\"home.newest\", {});\n   *\n   * // Nest states as deeply as needed.\n   * $stateProvider.state(\"home.newest.abc.xyz.inception\", {});\n   *\n   * // state() returns $stateProvider, so you can chain state declarations.\n   * $stateProvider\n   *   .state(\"home\", {})\n   *   .state(\"about\", {})\n   *   .state(\"contacts\", {});\n   * 
    \n *\n */\n this.state = state;\n function state(name, definition) {\n /*jshint validthis: true */\n if (isObject(name)) definition = name;\n else definition.name = name;\n registerState(definition);\n return this;\n }\n\n /**\n * @ngdoc object\n * @name ui.router.state.$state\n *\n * @requires $rootScope\n * @requires $q\n * @requires ui.router.state.$view\n * @requires $injector\n * @requires ui.router.util.$resolve\n * @requires ui.router.state.$stateParams\n * @requires ui.router.router.$urlRouter\n *\n * @property {object} params A param object, e.g. {sectionId: section.id)}, that \n * you'd like to test against the current active state.\n * @property {object} current A reference to the state's config object. However \n * you passed it in. Useful for accessing custom data.\n * @property {object} transition Currently pending transition. A promise that'll \n * resolve or reject.\n *\n * @description\n * `$state` service is responsible for representing states as well as transitioning\n * between them. It also provides interfaces to ask for current state or even states\n * you're coming from.\n */\n this.$get = $get;\n $get.$inject = ['$rootScope', '$q', '$view', '$injector', '$resolve', '$stateParams', '$urlRouter', '$location', '$urlMatcherFactory'];\n function $get( $rootScope, $q, $view, $injector, $resolve, $stateParams, $urlRouter, $location, $urlMatcherFactory) {\n\n var TransitionSuperseded = $q.reject(new Error('transition superseded'));\n var TransitionPrevented = $q.reject(new Error('transition prevented'));\n var TransitionAborted = $q.reject(new Error('transition aborted'));\n var TransitionFailed = $q.reject(new Error('transition failed'));\n\n // Handles the case where a state which is the target of a transition is not found, and the user\n // can optionally retry or defer the transition\n function handleRedirect(redirect, state, params, options) {\n /**\n * @ngdoc event\n * @name ui.router.state.$state#$stateNotFound\n * @eventOf ui.router.state.$state\n * @eventType broadcast on root scope\n * @description\n * Fired when a requested state **cannot be found** using the provided state name during transition.\n * The event is broadcast allowing any handlers a single chance to deal with the error (usually by\n * lazy-loading the unfound state). A special `unfoundState` object is passed to the listener handler,\n * you can see its three properties in the example. You can use `event.preventDefault()` to abort the\n * transition and the promise returned from `go` will be rejected with a `'transition aborted'` value.\n *\n * @param {Object} event Event object.\n * @param {Object} unfoundState Unfound State information. Contains: `to, toParams, options` properties.\n * @param {State} fromState Current state object.\n * @param {Object} fromParams Current state params.\n *\n * @example\n *\n *
    \n       * // somewhere, assume lazy.state has not been defined\n       * $state.go(\"lazy.state\", {a:1, b:2}, {inherit:false});\n       *\n       * // somewhere else\n       * $scope.$on('$stateNotFound',\n       * function(event, unfoundState, fromState, fromParams){\n       *     console.log(unfoundState.to); // \"lazy.state\"\n       *     console.log(unfoundState.toParams); // {a:1, b:2}\n       *     console.log(unfoundState.options); // {inherit:false} + default options\n       * })\n       * 
    \n */\n var evt = $rootScope.$broadcast('$stateNotFound', redirect, state, params);\n\n if (evt.defaultPrevented) {\n $urlRouter.update();\n return TransitionAborted;\n }\n\n if (!evt.retry) {\n return null;\n }\n\n // Allow the handler to return a promise to defer state lookup retry\n if (options.$retry) {\n $urlRouter.update();\n return TransitionFailed;\n }\n var retryTransition = $state.transition = $q.when(evt.retry);\n\n retryTransition.then(function() {\n if (retryTransition !== $state.transition) return TransitionSuperseded;\n redirect.options.$retry = true;\n return $state.transitionTo(redirect.to, redirect.toParams, redirect.options);\n }, function() {\n return TransitionAborted;\n });\n $urlRouter.update();\n\n return retryTransition;\n }\n\n root.locals = { resolve: null, globals: { $stateParams: {} } };\n\n $state = {\n params: {},\n current: root.self,\n $current: root,\n transition: null\n };\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#reload\n * @methodOf ui.router.state.$state\n *\n * @description\n * A method that force reloads the current state. All resolves are re-resolved,\n * controllers reinstantiated, and events re-fired.\n *\n * @example\n *
    \n     * var app angular.module('app', ['ui.router']);\n     *\n     * app.controller('ctrl', function ($scope, $state) {\n     *   $scope.reload = function(){\n     *     $state.reload();\n     *   }\n     * });\n     * 
    \n *\n * `reload()` is just an alias for:\n *
    \n     * $state.transitionTo($state.current, $stateParams, { \n     *   reload: true, inherit: false, notify: true\n     * });\n     * 
    \n *\n * @param {string=|object=} state - A state name or a state object, which is the root of the resolves to be re-resolved.\n * @example\n *
    \n     * //assuming app application consists of 3 states: 'contacts', 'contacts.detail', 'contacts.detail.item' \n     * //and current state is 'contacts.detail.item'\n     * var app angular.module('app', ['ui.router']);\n     *\n     * app.controller('ctrl', function ($scope, $state) {\n     *   $scope.reload = function(){\n     *     //will reload 'contact.detail' and 'contact.detail.item' states\n     *     $state.reload('contact.detail');\n     *   }\n     * });\n     * 
    \n *\n * `reload()` is just an alias for:\n *
    \n     * $state.transitionTo($state.current, $stateParams, { \n     *   reload: true, inherit: false, notify: true\n     * });\n     * 
    \n\n * @returns {promise} A promise representing the state of the new transition. See\n * {@link ui.router.state.$state#methods_go $state.go}.\n */\n $state.reload = function reload(state) {\n return $state.transitionTo($state.current, $stateParams, { reload: state || true, inherit: false, notify: true});\n };\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#go\n * @methodOf ui.router.state.$state\n *\n * @description\n * Convenience method for transitioning to a new state. `$state.go` calls \n * `$state.transitionTo` internally but automatically sets options to \n * `{ location: true, inherit: true, relative: $state.$current, notify: true }`. \n * This allows you to easily use an absolute or relative to path and specify \n * only the parameters you'd like to update (while letting unspecified parameters \n * inherit from the currently active ancestor states).\n *\n * @example\n *
    \n     * var app = angular.module('app', ['ui.router']);\n     *\n     * app.controller('ctrl', function ($scope, $state) {\n     *   $scope.changeState = function () {\n     *     $state.go('contact.detail');\n     *   };\n     * });\n     * 
    \n * \n *\n * @param {string} to Absolute state name or relative state path. Some examples:\n *\n * - `$state.go('contact.detail')` - will go to the `contact.detail` state\n * - `$state.go('^')` - will go to a parent state\n * - `$state.go('^.sibling')` - will go to a sibling state\n * - `$state.go('.child.grandchild')` - will go to grandchild state\n *\n * @param {object=} params A map of the parameters that will be sent to the state, \n * will populate $stateParams. Any parameters that are not specified will be inherited from currently \n * defined parameters. Only parameters specified in the state definition can be overridden, new \n * parameters will be ignored. This allows, for example, going to a sibling state that shares parameters\n * specified in a parent state. Parameter inheritance only works between common ancestor states, I.e.\n * transitioning to a sibling will get you the parameters for all parents, transitioning to a child\n * will get you all current parameters, etc.\n * @param {object=} options Options object. The options are:\n *\n * - **`location`** - {boolean=true|string=} - If `true` will update the url in the location bar, if `false`\n * will not. If string, must be `\"replace\"`, which will update url and also replace last history record.\n * - **`inherit`** - {boolean=true}, If `true` will inherit url parameters from current url.\n * - **`relative`** - {object=$state.$current}, When transitioning with relative path (e.g '^'), \n * defines which state to be relative from.\n * - **`notify`** - {boolean=true}, If `true` will broadcast $stateChangeStart and $stateChangeSuccess events.\n * - **`reload`** (v0.2.5) - {boolean=false|string|object}, If `true` will force transition even if no state or params\n * have changed. It will reload the resolves and views of the current state and parent states.\n * If `reload` is a string (or state object), the state object is fetched (by name, or object reference); and \\\n * the transition reloads the resolves and views for that matched state, and all its children states.\n *\n * @returns {promise} A promise representing the state of the new transition.\n *\n * Possible success values:\n *\n * - $state.current\n *\n *
    Possible rejection values:\n *\n * - 'transition superseded' - when a newer transition has been started after this one\n * - 'transition prevented' - when `event.preventDefault()` has been called in a `$stateChangeStart` listener\n * - 'transition aborted' - when `event.preventDefault()` has been called in a `$stateNotFound` listener or\n * when a `$stateNotFound` `event.retry` promise errors.\n * - 'transition failed' - when a state has been unsuccessfully found after 2 tries.\n * - *resolve error* - when an error has occurred with a `resolve`\n *\n */\n $state.go = function go(to, params, options) {\n return $state.transitionTo(to, params, extend({ inherit: true, relative: $state.$current }, options));\n };\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#transitionTo\n * @methodOf ui.router.state.$state\n *\n * @description\n * Low-level method for transitioning to a new state. {@link ui.router.state.$state#methods_go $state.go}\n * uses `transitionTo` internally. `$state.go` is recommended in most situations.\n *\n * @example\n *
    \n     * var app = angular.module('app', ['ui.router']);\n     *\n     * app.controller('ctrl', function ($scope, $state) {\n     *   $scope.changeState = function () {\n     *     $state.transitionTo('contact.detail');\n     *   };\n     * });\n     * 
    \n *\n * @param {string} to State name.\n * @param {object=} toParams A map of the parameters that will be sent to the state,\n * will populate $stateParams.\n * @param {object=} options Options object. The options are:\n *\n * - **`location`** - {boolean=true|string=} - If `true` will update the url in the location bar, if `false`\n * will not. If string, must be `\"replace\"`, which will update url and also replace last history record.\n * - **`inherit`** - {boolean=false}, If `true` will inherit url parameters from current url.\n * - **`relative`** - {object=}, When transitioning with relative path (e.g '^'), \n * defines which state to be relative from.\n * - **`notify`** - {boolean=true}, If `true` will broadcast $stateChangeStart and $stateChangeSuccess events.\n * - **`reload`** (v0.2.5) - {boolean=false|string=|object=}, If `true` will force transition even if the state or params \n * have not changed, aka a reload of the same state. It differs from reloadOnSearch because you'd\n * use this when you want to force a reload when *everything* is the same, including search params.\n * if String, then will reload the state with the name given in reload, and any children.\n * if Object, then a stateObj is expected, will reload the state found in stateObj, and any children.\n *\n * @returns {promise} A promise representing the state of the new transition. See\n * {@link ui.router.state.$state#methods_go $state.go}.\n */\n $state.transitionTo = function transitionTo(to, toParams, options) {\n toParams = toParams || {};\n options = extend({\n location: true, inherit: false, relative: null, notify: true, reload: false, $retry: false\n }, options || {});\n\n var from = $state.$current, fromParams = $state.params, fromPath = from.path;\n var evt, toState = findState(to, options.relative);\n\n // Store the hash param for later (since it will be stripped out by various methods)\n var hash = toParams['#'];\n\n if (!isDefined(toState)) {\n var redirect = { to: to, toParams: toParams, options: options };\n var redirectResult = handleRedirect(redirect, from.self, fromParams, options);\n\n if (redirectResult) {\n return redirectResult;\n }\n\n // Always retry once if the $stateNotFound was not prevented\n // (handles either redirect changed or state lazy-definition)\n to = redirect.to;\n toParams = redirect.toParams;\n options = redirect.options;\n toState = findState(to, options.relative);\n\n if (!isDefined(toState)) {\n if (!options.relative) throw new Error(\"No such state '\" + to + \"'\");\n throw new Error(\"Could not resolve '\" + to + \"' from state '\" + options.relative + \"'\");\n }\n }\n if (toState[abstractKey]) throw new Error(\"Cannot transition to abstract state '\" + to + \"'\");\n if (options.inherit) toParams = inheritParams($stateParams, toParams || {}, $state.$current, toState);\n if (!toState.params.$$validates(toParams)) return TransitionFailed;\n\n toParams = toState.params.$$values(toParams);\n to = toState;\n\n var toPath = to.path;\n\n // Starting from the root of the path, keep all levels that haven't changed\n var keep = 0, state = toPath[keep], locals = root.locals, toLocals = [];\n\n if (!options.reload) {\n while (state && state === fromPath[keep] && state.ownParams.$$equals(toParams, fromParams)) {\n locals = toLocals[keep] = state.locals;\n keep++;\n state = toPath[keep];\n }\n } else if (isString(options.reload) || isObject(options.reload)) {\n if (isObject(options.reload) && !options.reload.name) {\n throw new Error('Invalid reload state object');\n }\n \n var reloadState = options.reload === true ? fromPath[0] : findState(options.reload);\n if (options.reload && !reloadState) {\n throw new Error(\"No such reload state '\" + (isString(options.reload) ? options.reload : options.reload.name) + \"'\");\n }\n\n while (state && state === fromPath[keep] && state !== reloadState) {\n locals = toLocals[keep] = state.locals;\n keep++;\n state = toPath[keep];\n }\n }\n\n // If we're going to the same state and all locals are kept, we've got nothing to do.\n // But clear 'transition', as we still want to cancel any other pending transitions.\n // TODO: We may not want to bump 'transition' if we're called from a location change\n // that we've initiated ourselves, because we might accidentally abort a legitimate\n // transition initiated from code?\n if (shouldSkipReload(to, toParams, from, fromParams, locals, options)) {\n if (hash) toParams['#'] = hash;\n $state.params = toParams;\n copy($state.params, $stateParams);\n copy(filterByKeys(to.params.$$keys(), $stateParams), to.locals.globals.$stateParams);\n if (options.location && to.navigable && to.navigable.url) {\n $urlRouter.push(to.navigable.url, toParams, {\n $$avoidResync: true, replace: options.location === 'replace'\n });\n $urlRouter.update(true);\n }\n $state.transition = null;\n return $q.when($state.current);\n }\n\n // Filter parameters before we pass them to event handlers etc.\n toParams = filterByKeys(to.params.$$keys(), toParams || {});\n \n // Re-add the saved hash before we start returning things or broadcasting $stateChangeStart\n if (hash) toParams['#'] = hash;\n \n // Broadcast start event and cancel the transition if requested\n if (options.notify) {\n /**\n * @ngdoc event\n * @name ui.router.state.$state#$stateChangeStart\n * @eventOf ui.router.state.$state\n * @eventType broadcast on root scope\n * @description\n * Fired when the state transition **begins**. You can use `event.preventDefault()`\n * to prevent the transition from happening and then the transition promise will be\n * rejected with a `'transition prevented'` value.\n *\n * @param {Object} event Event object.\n * @param {State} toState The state being transitioned to.\n * @param {Object} toParams The params supplied to the `toState`.\n * @param {State} fromState The current state, pre-transition.\n * @param {Object} fromParams The params supplied to the `fromState`.\n *\n * @example\n *\n *
    \n         * $rootScope.$on('$stateChangeStart',\n         * function(event, toState, toParams, fromState, fromParams){\n         *     event.preventDefault();\n         *     // transitionTo() promise will be rejected with\n         *     // a 'transition prevented' error\n         * })\n         * 
    \n */\n if ($rootScope.$broadcast('$stateChangeStart', to.self, toParams, from.self, fromParams, options).defaultPrevented) {\n $rootScope.$broadcast('$stateChangeCancel', to.self, toParams, from.self, fromParams);\n //Don't update and resync url if there's been a new transition started. see issue #2238, #600\n if ($state.transition == null) $urlRouter.update();\n return TransitionPrevented;\n }\n }\n\n // Resolve locals for the remaining states, but don't update any global state just\n // yet -- if anything fails to resolve the current state needs to remain untouched.\n // We also set up an inheritance chain for the locals here. This allows the view directive\n // to quickly look up the correct definition for each view in the current state. Even\n // though we create the locals object itself outside resolveState(), it is initially\n // empty and gets filled asynchronously. We need to keep track of the promise for the\n // (fully resolved) current locals, and pass this down the chain.\n var resolved = $q.when(locals);\n\n for (var l = keep; l < toPath.length; l++, state = toPath[l]) {\n locals = toLocals[l] = inherit(locals);\n resolved = resolveState(state, toParams, state === to, resolved, locals, options);\n }\n\n // Once everything is resolved, we are ready to perform the actual transition\n // and return a promise for the new state. We also keep track of what the\n // current promise is, so that we can detect overlapping transitions and\n // keep only the outcome of the last transition.\n var transition = $state.transition = resolved.then(function () {\n var l, entering, exiting;\n\n if ($state.transition !== transition) return TransitionSuperseded;\n\n // Exit 'from' states not kept\n for (l = fromPath.length - 1; l >= keep; l--) {\n exiting = fromPath[l];\n if (exiting.self.onExit) {\n $injector.invoke(exiting.self.onExit, exiting.self, exiting.locals.globals);\n }\n exiting.locals = null;\n }\n\n // Enter 'to' states not kept\n for (l = keep; l < toPath.length; l++) {\n entering = toPath[l];\n entering.locals = toLocals[l];\n if (entering.self.onEnter) {\n $injector.invoke(entering.self.onEnter, entering.self, entering.locals.globals);\n }\n }\n\n // Run it again, to catch any transitions in callbacks\n if ($state.transition !== transition) return TransitionSuperseded;\n\n // Update globals in $state\n $state.$current = to;\n $state.current = to.self;\n $state.params = toParams;\n copy($state.params, $stateParams);\n $state.transition = null;\n\n if (options.location && to.navigable) {\n $urlRouter.push(to.navigable.url, to.navigable.locals.globals.$stateParams, {\n $$avoidResync: true, replace: options.location === 'replace'\n });\n }\n\n if (options.notify) {\n /**\n * @ngdoc event\n * @name ui.router.state.$state#$stateChangeSuccess\n * @eventOf ui.router.state.$state\n * @eventType broadcast on root scope\n * @description\n * Fired once the state transition is **complete**.\n *\n * @param {Object} event Event object.\n * @param {State} toState The state being transitioned to.\n * @param {Object} toParams The params supplied to the `toState`.\n * @param {State} fromState The current state, pre-transition.\n * @param {Object} fromParams The params supplied to the `fromState`.\n */\n $rootScope.$broadcast('$stateChangeSuccess', to.self, toParams, from.self, fromParams);\n }\n $urlRouter.update(true);\n\n return $state.current;\n }, function (error) {\n if ($state.transition !== transition) return TransitionSuperseded;\n\n $state.transition = null;\n /**\n * @ngdoc event\n * @name ui.router.state.$state#$stateChangeError\n * @eventOf ui.router.state.$state\n * @eventType broadcast on root scope\n * @description\n * Fired when an **error occurs** during transition. It's important to note that if you\n * have any errors in your resolve functions (javascript errors, non-existent services, etc)\n * they will not throw traditionally. You must listen for this $stateChangeError event to\n * catch **ALL** errors.\n *\n * @param {Object} event Event object.\n * @param {State} toState The state being transitioned to.\n * @param {Object} toParams The params supplied to the `toState`.\n * @param {State} fromState The current state, pre-transition.\n * @param {Object} fromParams The params supplied to the `fromState`.\n * @param {Error} error The resolve error object.\n */\n evt = $rootScope.$broadcast('$stateChangeError', to.self, toParams, from.self, fromParams, error);\n\n if (!evt.defaultPrevented) {\n $urlRouter.update();\n }\n\n return $q.reject(error);\n });\n\n return transition;\n };\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#is\n * @methodOf ui.router.state.$state\n *\n * @description\n * Similar to {@link ui.router.state.$state#methods_includes $state.includes},\n * but only checks for the full state name. If params is supplied then it will be\n * tested for strict equality against the current active params object, so all params\n * must match with none missing and no extras.\n *\n * @example\n *
    \n     * $state.$current.name = 'contacts.details.item';\n     *\n     * // absolute name\n     * $state.is('contact.details.item'); // returns true\n     * $state.is(contactDetailItemStateObject); // returns true\n     *\n     * // relative name (. and ^), typically from a template\n     * // E.g. from the 'contacts.details' template\n     * 
    Item
    \n *
    \n *\n * @param {string|object} stateOrName The state name (absolute or relative) or state object you'd like to check.\n * @param {object=} params A param object, e.g. `{sectionId: section.id}`, that you'd like\n * to test against the current active state.\n * @param {object=} options An options object. The options are:\n *\n * - **`relative`** - {string|object} - If `stateOrName` is a relative state name and `options.relative` is set, .is will\n * test relative to `options.relative` state (or name).\n *\n * @returns {boolean} Returns true if it is the state.\n */\n $state.is = function is(stateOrName, params, options) {\n options = extend({ relative: $state.$current }, options || {});\n var state = findState(stateOrName, options.relative);\n\n if (!isDefined(state)) { return undefined; }\n if ($state.$current !== state) { return false; }\n return params ? equalForKeys(state.params.$$values(params), $stateParams) : true;\n };\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#includes\n * @methodOf ui.router.state.$state\n *\n * @description\n * A method to determine if the current active state is equal to or is the child of the\n * state stateName. If any params are passed then they will be tested for a match as well.\n * Not all the parameters need to be passed, just the ones you'd like to test for equality.\n *\n * @example\n * Partial and relative names\n *
    \n     * $state.$current.name = 'contacts.details.item';\n     *\n     * // Using partial names\n     * $state.includes(\"contacts\"); // returns true\n     * $state.includes(\"contacts.details\"); // returns true\n     * $state.includes(\"contacts.details.item\"); // returns true\n     * $state.includes(\"contacts.list\"); // returns false\n     * $state.includes(\"about\"); // returns false\n     *\n     * // Using relative names (. and ^), typically from a template\n     * // E.g. from the 'contacts.details' template\n     * 
    Item
    \n *
    \n *\n * Basic globbing patterns\n *
    \n     * $state.$current.name = 'contacts.details.item.url';\n     *\n     * $state.includes(\"*.details.*.*\"); // returns true\n     * $state.includes(\"*.details.**\"); // returns true\n     * $state.includes(\"**.item.**\"); // returns true\n     * $state.includes(\"*.details.item.url\"); // returns true\n     * $state.includes(\"*.details.*.url\"); // returns true\n     * $state.includes(\"*.details.*\"); // returns false\n     * $state.includes(\"item.**\"); // returns false\n     * 
    \n *\n * @param {string} stateOrName A partial name, relative name, or glob pattern\n * to be searched for within the current state name.\n * @param {object=} params A param object, e.g. `{sectionId: section.id}`,\n * that you'd like to test against the current active state.\n * @param {object=} options An options object. The options are:\n *\n * - **`relative`** - {string|object=} - If `stateOrName` is a relative state reference and `options.relative` is set,\n * .includes will test relative to `options.relative` state (or name).\n *\n * @returns {boolean} Returns true if it does include the state\n */\n $state.includes = function includes(stateOrName, params, options) {\n options = extend({ relative: $state.$current }, options || {});\n if (isString(stateOrName) && isGlob(stateOrName)) {\n if (!doesStateMatchGlob(stateOrName)) {\n return false;\n }\n stateOrName = $state.$current.name;\n }\n\n var state = findState(stateOrName, options.relative);\n if (!isDefined(state)) { return undefined; }\n if (!isDefined($state.$current.includes[state.name])) { return false; }\n return params ? equalForKeys(state.params.$$values(params), $stateParams, objectKeys(params)) : true;\n };\n\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#href\n * @methodOf ui.router.state.$state\n *\n * @description\n * A url generation method that returns the compiled url for the given state populated with the given params.\n *\n * @example\n *
    \n     * expect($state.href(\"about.person\", { person: \"bob\" })).toEqual(\"/about/bob\");\n     * 
    \n *\n * @param {string|object} stateOrName The state name or state object you'd like to generate a url from.\n * @param {object=} params An object of parameter values to fill the state's required parameters.\n * @param {object=} options Options object. The options are:\n *\n * - **`lossy`** - {boolean=true} - If true, and if there is no url associated with the state provided in the\n * first parameter, then the constructed href url will be built from the first navigable ancestor (aka\n * ancestor with a valid url).\n * - **`inherit`** - {boolean=true}, If `true` will inherit url parameters from current url.\n * - **`relative`** - {object=$state.$current}, When transitioning with relative path (e.g '^'), \n * defines which state to be relative from.\n * - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. \"http://www.example.com/fullurl\".\n * \n * @returns {string} compiled state url\n */\n $state.href = function href(stateOrName, params, options) {\n options = extend({\n lossy: true,\n inherit: true,\n absolute: false,\n relative: $state.$current\n }, options || {});\n\n var state = findState(stateOrName, options.relative);\n\n if (!isDefined(state)) return null;\n if (options.inherit) params = inheritParams($stateParams, params || {}, $state.$current, state);\n \n var nav = (state && options.lossy) ? state.navigable : state;\n\n if (!nav || nav.url === undefined || nav.url === null) {\n return null;\n }\n return $urlRouter.href(nav.url, filterByKeys(state.params.$$keys().concat('#'), params || {}), {\n absolute: options.absolute\n });\n };\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#get\n * @methodOf ui.router.state.$state\n *\n * @description\n * Returns the state configuration object for any specific state or all states.\n *\n * @param {string|object=} stateOrName (absolute or relative) If provided, will only get the config for\n * the requested state. If not provided, returns an array of ALL state configs.\n * @param {string|object=} context When stateOrName is a relative state reference, the state will be retrieved relative to context.\n * @returns {Object|Array} State configuration object or array of all objects.\n */\n $state.get = function (stateOrName, context) {\n if (arguments.length === 0) return map(objectKeys(states), function(name) { return states[name].self; });\n var state = findState(stateOrName, context || $state.$current);\n return (state && state.self) ? state.self : null;\n };\n\n function resolveState(state, params, paramsAreFiltered, inherited, dst, options) {\n // Make a restricted $stateParams with only the parameters that apply to this state if\n // necessary. In addition to being available to the controller and onEnter/onExit callbacks,\n // we also need $stateParams to be available for any $injector calls we make during the\n // dependency resolution process.\n var $stateParams = (paramsAreFiltered) ? params : filterByKeys(state.params.$$keys(), params);\n var locals = { $stateParams: $stateParams };\n\n // Resolve 'global' dependencies for the state, i.e. those not specific to a view.\n // We're also including $stateParams in this; that way the parameters are restricted\n // to the set that should be visible to the state, and are independent of when we update\n // the global $state and $stateParams values.\n dst.resolve = $resolve.resolve(state.resolve, locals, dst.resolve, state);\n var promises = [dst.resolve.then(function (globals) {\n dst.globals = globals;\n })];\n if (inherited) promises.push(inherited);\n\n function resolveViews() {\n var viewsPromises = [];\n\n // Resolve template and dependencies for all views.\n forEach(state.views, function (view, name) {\n var injectables = (view.resolve && view.resolve !== state.resolve ? view.resolve : {});\n injectables.$template = [ function () {\n return $view.load(name, { view: view, locals: dst.globals, params: $stateParams, notify: options.notify }) || '';\n }];\n\n viewsPromises.push($resolve.resolve(injectables, dst.globals, dst.resolve, state).then(function (result) {\n // References to the controller (only instantiated at link time)\n if (isFunction(view.controllerProvider) || isArray(view.controllerProvider)) {\n var injectLocals = angular.extend({}, injectables, dst.globals);\n result.$$controller = $injector.invoke(view.controllerProvider, null, injectLocals);\n } else {\n result.$$controller = view.controller;\n }\n // Provide access to the state itself for internal use\n result.$$state = state;\n result.$$controllerAs = view.controllerAs;\n dst[name] = result;\n }));\n });\n\n return $q.all(viewsPromises).then(function(){\n return dst.globals;\n });\n }\n\n // Wait for all the promises and then return the activation object\n return $q.all(promises).then(resolveViews).then(function (values) {\n return dst;\n });\n }\n\n return $state;\n }\n\n function shouldSkipReload(to, toParams, from, fromParams, locals, options) {\n // Return true if there are no differences in non-search (path/object) params, false if there are differences\n function nonSearchParamsEqual(fromAndToState, fromParams, toParams) {\n // Identify whether all the parameters that differ between `fromParams` and `toParams` were search params.\n function notSearchParam(key) {\n return fromAndToState.params[key].location != \"search\";\n }\n var nonQueryParamKeys = fromAndToState.params.$$keys().filter(notSearchParam);\n var nonQueryParams = pick.apply({}, [fromAndToState.params].concat(nonQueryParamKeys));\n var nonQueryParamSet = new $$UMFP.ParamSet(nonQueryParams);\n return nonQueryParamSet.$$equals(fromParams, toParams);\n }\n\n // If reload was not explicitly requested\n // and we're transitioning to the same state we're already in\n // and the locals didn't change\n // or they changed in a way that doesn't merit reloading\n // (reloadOnParams:false, or reloadOnSearch.false and only search params changed)\n // Then return true.\n if (!options.reload && to === from &&\n (locals === from.locals || (to.self.reloadOnSearch === false && nonSearchParamsEqual(from, fromParams, toParams)))) {\n return true;\n }\n }\n}\n\nangular.module('ui.router.state')\n .factory('$stateParams', function () { return {}; })\n .provider('$state', $StateProvider);\n\n\n$ViewProvider.$inject = [];\nfunction $ViewProvider() {\n\n this.$get = $get;\n /**\n * @ngdoc object\n * @name ui.router.state.$view\n *\n * @requires ui.router.util.$templateFactory\n * @requires $rootScope\n *\n * @description\n *\n */\n $get.$inject = ['$rootScope', '$templateFactory'];\n function $get( $rootScope, $templateFactory) {\n return {\n // $view.load('full.viewName', { template: ..., controller: ..., resolve: ..., async: false, params: ... })\n /**\n * @ngdoc function\n * @name ui.router.state.$view#load\n * @methodOf ui.router.state.$view\n *\n * @description\n *\n * @param {string} name name\n * @param {object} options option object.\n */\n load: function load(name, options) {\n var result, defaults = {\n template: null, controller: null, view: null, locals: null, notify: true, async: true, params: {}\n };\n options = extend(defaults, options);\n\n if (options.view) {\n result = $templateFactory.fromConfig(options.view, options.params, options.locals);\n }\n return result;\n }\n };\n }\n}\n\nangular.module('ui.router.state').provider('$view', $ViewProvider);\n\n/**\n * @ngdoc object\n * @name ui.router.state.$uiViewScrollProvider\n *\n * @description\n * Provider that returns the {@link ui.router.state.$uiViewScroll} service function.\n */\nfunction $ViewScrollProvider() {\n\n var useAnchorScroll = false;\n\n /**\n * @ngdoc function\n * @name ui.router.state.$uiViewScrollProvider#useAnchorScroll\n * @methodOf ui.router.state.$uiViewScrollProvider\n *\n * @description\n * Reverts back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) service for\n * scrolling based on the url anchor.\n */\n this.useAnchorScroll = function () {\n useAnchorScroll = true;\n };\n\n /**\n * @ngdoc object\n * @name ui.router.state.$uiViewScroll\n *\n * @requires $anchorScroll\n * @requires $timeout\n *\n * @description\n * When called with a jqLite element, it scrolls the element into view (after a\n * `$timeout` so the DOM has time to refresh).\n *\n * If you prefer to rely on `$anchorScroll` to scroll the view to the anchor,\n * this can be enabled by calling {@link ui.router.state.$uiViewScrollProvider#methods_useAnchorScroll `$uiViewScrollProvider.useAnchorScroll()`}.\n */\n this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll, $timeout) {\n if (useAnchorScroll) {\n return $anchorScroll;\n }\n\n return function ($element) {\n return $timeout(function () {\n $element[0].scrollIntoView();\n }, 0, false);\n };\n }];\n}\n\nangular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider);\n\nvar ngMajorVer = angular.version.major;\nvar ngMinorVer = angular.version.minor;\n/**\n * @ngdoc directive\n * @name ui.router.state.directive:ui-view\n *\n * @requires ui.router.state.$state\n * @requires $compile\n * @requires $controller\n * @requires $injector\n * @requires ui.router.state.$uiViewScroll\n * @requires $document\n *\n * @restrict ECA\n *\n * @description\n * The ui-view directive tells $state where to place your templates.\n *\n * @param {string=} name A view name. The name should be unique amongst the other views in the\n * same state. You can have views of the same name that live in different states.\n *\n * @param {string=} autoscroll It allows you to set the scroll behavior of the browser window\n * when a view is populated. By default, $anchorScroll is overridden by ui-router's custom scroll\n * service, {@link ui.router.state.$uiViewScroll}. This custom service let's you\n * scroll ui-view elements into view when they are populated during a state activation.\n *\n * @param {string=} noanimation If truthy, the non-animated renderer will be selected (no animations\n * will be applied to the ui-view)\n *\n * *Note: To revert back to old [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll)\n * functionality, call `$uiViewScrollProvider.useAnchorScroll()`.*\n *\n * @param {string=} onload Expression to evaluate whenever the view updates.\n * \n * @example\n * A view can be unnamed or named. \n *
    \n * \n * 
    \n * \n * \n *
    \n *
    \n *\n * You can only have one unnamed view within any template (or root html). If you are only using a \n * single view and it is unnamed then you can populate it like so:\n *
    \n * 
    \n * $stateProvider.state(\"home\", {\n * template: \"

    HELLO!

    \"\n * })\n *
    \n * \n * The above is a convenient shortcut equivalent to specifying your view explicitly with the {@link ui.router.state.$stateProvider#views `views`}\n * config property, by name, in this case an empty name:\n *
    \n * $stateProvider.state(\"home\", {\n *   views: {\n *     \"\": {\n *       template: \"

    HELLO!

    \"\n * }\n * } \n * })\n *
    \n * \n * But typically you'll only use the views property if you name your view or have more than one view \n * in the same template. There's not really a compelling reason to name a view if its the only one, \n * but you could if you wanted, like so:\n *
    \n * 
    \n *
    \n *
    \n * $stateProvider.state(\"home\", {\n *   views: {\n *     \"main\": {\n *       template: \"

    HELLO!

    \"\n * }\n * } \n * })\n *
    \n * \n * Really though, you'll use views to set up multiple views:\n *
    \n * 
    \n *
    \n *
    \n *
    \n * \n *
    \n * $stateProvider.state(\"home\", {\n *   views: {\n *     \"\": {\n *       template: \"

    HELLO!

    \"\n * },\n * \"chart\": {\n * template: \"\"\n * },\n * \"data\": {\n * template: \"\"\n * }\n * } \n * })\n *
    \n *\n * Examples for `autoscroll`:\n *\n *
    \n * \n * \n *\n * \n * \n * \n * \n * 
    \n */\n$ViewDirective.$inject = ['$state', '$injector', '$uiViewScroll', '$interpolate'];\nfunction $ViewDirective( $state, $injector, $uiViewScroll, $interpolate) {\n\n function getService() {\n return ($injector.has) ? function(service) {\n return $injector.has(service) ? $injector.get(service) : null;\n } : function(service) {\n try {\n return $injector.get(service);\n } catch (e) {\n return null;\n }\n };\n }\n\n var service = getService(),\n $animator = service('$animator'),\n $animate = service('$animate');\n\n // Returns a set of DOM manipulation functions based on which Angular version\n // it should use\n function getRenderer(attrs, scope) {\n var statics = {\n enter: function (element, target, cb) { target.after(element); cb(); },\n leave: function (element, cb) { element.remove(); cb(); }\n };\n\n if (!!attrs.noanimation) return statics;\n\n function animEnabled(element) {\n if (ngMajorVer === 1 && ngMinorVer >= 4) return !!$animate.enabled(element);\n if (ngMajorVer === 1 && ngMinorVer >= 2) return !!$animate.enabled();\n return (!!$animator);\n }\n\n // ng 1.2+\n if ($animate) {\n return {\n enter: function(element, target, cb) {\n if (!animEnabled(element)) {\n statics.enter(element, target, cb);\n } else if (angular.version.minor > 2) {\n $animate.enter(element, null, target).then(cb);\n } else {\n $animate.enter(element, null, target, cb);\n }\n },\n leave: function(element, cb) {\n if (!animEnabled(element)) {\n statics.leave(element, cb);\n } else if (angular.version.minor > 2) {\n $animate.leave(element).then(cb);\n } else {\n $animate.leave(element, cb);\n }\n }\n };\n }\n\n // ng 1.1.5\n if ($animator) {\n var animate = $animator && $animator(scope, attrs);\n\n return {\n enter: function(element, target, cb) {animate.enter(element, null, target); cb(); },\n leave: function(element, cb) { animate.leave(element); cb(); }\n };\n }\n\n return statics;\n }\n\n var directive = {\n restrict: 'ECA',\n terminal: true,\n priority: 400,\n transclude: 'element',\n compile: function (tElement, tAttrs, $transclude) {\n return function (scope, $element, attrs) {\n var previousEl, currentEl, currentScope, latestLocals,\n onloadExp = attrs.onload || '',\n autoScrollExp = attrs.autoscroll,\n renderer = getRenderer(attrs, scope);\n\n scope.$on('$stateChangeSuccess', function() {\n updateView(false);\n });\n\n updateView(true);\n\n function cleanupLastView() {\n var _previousEl = previousEl;\n var _currentScope = currentScope;\n\n if (_currentScope) {\n _currentScope._willBeDestroyed = true;\n }\n\n function cleanOld() {\n if (_previousEl) {\n _previousEl.remove();\n }\n\n if (_currentScope) {\n _currentScope.$destroy();\n }\n }\n\n if (currentEl) {\n renderer.leave(currentEl, function() {\n cleanOld();\n previousEl = null;\n });\n\n previousEl = currentEl;\n } else {\n cleanOld();\n previousEl = null;\n }\n\n currentEl = null;\n currentScope = null;\n }\n\n function updateView(firstTime) {\n var newScope,\n name = getUiViewName(scope, attrs, $element, $interpolate),\n previousLocals = name && $state.$current && $state.$current.locals[name];\n\n if (!firstTime && previousLocals === latestLocals || scope._willBeDestroyed) return; // nothing to do\n newScope = scope.$new();\n latestLocals = $state.$current.locals[name];\n\n /**\n * @ngdoc event\n * @name ui.router.state.directive:ui-view#$viewContentLoading\n * @eventOf ui.router.state.directive:ui-view\n * @eventType emits on ui-view directive scope\n * @description\n *\n * Fired once the view **begins loading**, *before* the DOM is rendered.\n *\n * @param {Object} event Event object.\n * @param {string} viewName Name of the view.\n */\n newScope.$emit('$viewContentLoading', name);\n\n var clone = $transclude(newScope, function(clone) {\n renderer.enter(clone, $element, function onUiViewEnter() {\n if(currentScope) {\n currentScope.$emit('$viewContentAnimationEnded');\n }\n\n if (angular.isDefined(autoScrollExp) && !autoScrollExp || scope.$eval(autoScrollExp)) {\n $uiViewScroll(clone);\n }\n });\n cleanupLastView();\n });\n\n currentEl = clone;\n currentScope = newScope;\n /**\n * @ngdoc event\n * @name ui.router.state.directive:ui-view#$viewContentLoaded\n * @eventOf ui.router.state.directive:ui-view\n * @eventType emits on ui-view directive scope\n * @description\n * Fired once the view is **loaded**, *after* the DOM is rendered.\n *\n * @param {Object} event Event object.\n * @param {string} viewName Name of the view.\n */\n currentScope.$emit('$viewContentLoaded', name);\n currentScope.$eval(onloadExp);\n }\n };\n }\n };\n\n return directive;\n}\n\n$ViewDirectiveFill.$inject = ['$compile', '$controller', '$state', '$interpolate'];\nfunction $ViewDirectiveFill ( $compile, $controller, $state, $interpolate) {\n return {\n restrict: 'ECA',\n priority: -400,\n compile: function (tElement) {\n var initial = tElement.html();\n return function (scope, $element, attrs) {\n var current = $state.$current,\n name = getUiViewName(scope, attrs, $element, $interpolate),\n locals = current && current.locals[name];\n\n if (! locals) {\n return;\n }\n\n $element.data('$uiView', { name: name, state: locals.$$state });\n $element.html(locals.$template ? locals.$template : initial);\n\n var link = $compile($element.contents());\n\n if (locals.$$controller) {\n locals.$scope = scope;\n locals.$element = $element;\n var controller = $controller(locals.$$controller, locals);\n if (locals.$$controllerAs) {\n scope[locals.$$controllerAs] = controller;\n }\n $element.data('$ngControllerController', controller);\n $element.children().data('$ngControllerController', controller);\n }\n\n link(scope);\n };\n }\n };\n}\n\n/**\n * Shared ui-view code for both directives:\n * Given scope, element, and its attributes, return the view's name\n */\nfunction getUiViewName(scope, attrs, element, $interpolate) {\n var name = $interpolate(attrs.uiView || attrs.name || '')(scope);\n var inherited = element.inheritedData('$uiView');\n return name.indexOf('@') >= 0 ? name : (name + '@' + (inherited ? inherited.state.name : ''));\n}\n\nangular.module('ui.router.state').directive('uiView', $ViewDirective);\nangular.module('ui.router.state').directive('uiView', $ViewDirectiveFill);\n\nfunction parseStateRef(ref, current) {\n var preparsed = ref.match(/^\\s*({[^}]*})\\s*$/), parsed;\n if (preparsed) ref = current + '(' + preparsed[1] + ')';\n parsed = ref.replace(/\\n/g, \" \").match(/^([^(]+?)\\s*(\\((.*)\\))?$/);\n if (!parsed || parsed.length !== 4) throw new Error(\"Invalid state ref '\" + ref + \"'\");\n return { state: parsed[1], paramExpr: parsed[3] || null };\n}\n\nfunction stateContext(el) {\n var stateData = el.parent().inheritedData('$uiView');\n\n if (stateData && stateData.state && stateData.state.name) {\n return stateData.state;\n }\n}\n\nfunction getTypeInfo(el) {\n // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.\n var isSvg = Object.prototype.toString.call(el.prop('href')) === '[object SVGAnimatedString]';\n var isForm = el[0].nodeName === \"FORM\";\n\n return {\n attr: isForm ? \"action\" : (isSvg ? 'xlink:href' : 'href'),\n isAnchor: el.prop(\"tagName\").toUpperCase() === \"A\",\n clickable: !isForm\n };\n}\n\nfunction clickHook(el, $state, $timeout, type, current) {\n return function(e) {\n var button = e.which || e.button, target = current();\n\n if (!(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || el.attr('target'))) {\n // HACK: This is to allow ng-clicks to be processed before the transition is initiated:\n var transition = $timeout(function() {\n $state.go(target.state, target.params, target.options);\n });\n e.preventDefault();\n\n // if the state has no URL, ignore one preventDefault from the directive.\n var ignorePreventDefaultCount = type.isAnchor && !target.href ? 1: 0;\n\n e.preventDefault = function() {\n if (ignorePreventDefaultCount-- <= 0) $timeout.cancel(transition);\n };\n }\n };\n}\n\nfunction defaultOpts(el, $state) {\n return { relative: stateContext(el) || $state.$current, inherit: true };\n}\n\n/**\n * @ngdoc directive\n * @name ui.router.state.directive:ui-sref\n *\n * @requires ui.router.state.$state\n * @requires $timeout\n *\n * @restrict A\n *\n * @description\n * A directive that binds a link (`` tag) to a state. If the state has an associated\n * URL, the directive will automatically generate & update the `href` attribute via\n * the {@link ui.router.state.$state#methods_href $state.href()} method. Clicking\n * the link will trigger a state transition with optional parameters.\n *\n * Also middle-clicking, right-clicking, and ctrl-clicking on the link will be\n * handled natively by the browser.\n *\n * You can also use relative state paths within ui-sref, just like the relative\n * paths passed to `$state.go()`. You just need to be aware that the path is relative\n * to the state that the link lives in, in other words the state that loaded the\n * template containing the link.\n *\n * You can specify options to pass to {@link ui.router.state.$state#go $state.go()}\n * using the `ui-sref-opts` attribute. Options are restricted to `location`, `inherit`,\n * and `reload`.\n *\n * @example\n * Here's an example of how you'd use ui-sref and how it would compile. If you have the\n * following template:\n *
    \n * Home | About | Next page\n *\n * \n * 
    \n *\n * Then the compiled html would be (assuming Html5Mode is off and current state is contacts):\n *
    \n * Home | About | Next page\n *\n * 
      \n *
    • \n * Joe\n *
    • \n *
    • \n * Alice\n *
    • \n *
    • \n * Bob\n *
    • \n *
    \n *\n * Home\n *
    \n *\n * @param {string} ui-sref 'stateName' can be any valid absolute or relative state\n * @param {Object} ui-sref-opts options to pass to {@link ui.router.state.$state#go $state.go()}\n */\n$StateRefDirective.$inject = ['$state', '$timeout'];\nfunction $StateRefDirective($state, $timeout) {\n return {\n restrict: 'A',\n require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n link: function(scope, element, attrs, uiSrefActive) {\n var ref = parseStateRef(attrs.uiSref, $state.current.name);\n var def = { state: ref.state, href: null, params: null };\n var type = getTypeInfo(element);\n var active = uiSrefActive[1] || uiSrefActive[0];\n\n def.options = extend(defaultOpts(element, $state), attrs.uiSrefOpts ? scope.$eval(attrs.uiSrefOpts) : {});\n\n var update = function(val) {\n if (val) def.params = angular.copy(val);\n def.href = $state.href(ref.state, def.params, def.options);\n\n if (active) active.$$addStateInfo(ref.state, def.params);\n if (def.href !== null) attrs.$set(type.attr, def.href);\n };\n\n if (ref.paramExpr) {\n scope.$watch(ref.paramExpr, function(val) { if (val !== def.params) update(val); }, true);\n def.params = angular.copy(scope.$eval(ref.paramExpr));\n }\n update();\n\n if (!type.clickable) return;\n element.bind(\"click\", clickHook(element, $state, $timeout, type, function() { return def; }));\n }\n };\n}\n\n/**\n * @ngdoc directive\n * @name ui.router.state.directive:ui-state\n *\n * @requires ui.router.state.uiSref\n *\n * @restrict A\n *\n * @description\n * Much like ui-sref, but will accept named $scope properties to evaluate for a state definition,\n * params and override options.\n *\n * @param {string} ui-state 'stateName' can be any valid absolute or relative state\n * @param {Object} ui-state-params params to pass to {@link ui.router.state.$state#href $state.href()}\n * @param {Object} ui-state-opts options to pass to {@link ui.router.state.$state#go $state.go()}\n */\n$StateRefDynamicDirective.$inject = ['$state', '$timeout'];\nfunction $StateRefDynamicDirective($state, $timeout) {\n return {\n restrict: 'A',\n require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n link: function(scope, element, attrs, uiSrefActive) {\n var type = getTypeInfo(element);\n var active = uiSrefActive[1] || uiSrefActive[0];\n var group = [attrs.uiState, attrs.uiStateParams || null, attrs.uiStateOpts || null];\n var watch = '[' + group.map(function(val) { return val || 'null'; }).join(', ') + ']';\n var def = { state: null, params: null, options: null, href: null };\n\n function runStateRefLink (group) {\n def.state = group[0]; def.params = group[1]; def.options = group[2];\n def.href = $state.href(def.state, def.params, def.options);\n\n if (active) active.$$addStateInfo(def.state, def.params);\n if (def.href) attrs.$set(type.attr, def.href);\n }\n\n scope.$watch(watch, runStateRefLink, true);\n runStateRefLink(scope.$eval(watch));\n\n if (!type.clickable) return;\n element.bind(\"click\", clickHook(element, $state, $timeout, type, function() { return def; }));\n }\n };\n}\n\n\n/**\n * @ngdoc directive\n * @name ui.router.state.directive:ui-sref-active\n *\n * @requires ui.router.state.$state\n * @requires ui.router.state.$stateParams\n * @requires $interpolate\n *\n * @restrict A\n *\n * @description\n * A directive working alongside ui-sref to add classes to an element when the\n * related ui-sref directive's state is active, and removing them when it is inactive.\n * The primary use-case is to simplify the special appearance of navigation menus\n * relying on `ui-sref`, by having the \"active\" state's menu button appear different,\n * distinguishing it from the inactive menu items.\n *\n * ui-sref-active can live on the same element as ui-sref or on a parent element. The first\n * ui-sref-active found at the same level or above the ui-sref will be used.\n *\n * Will activate when the ui-sref's target state or any child state is active. If you\n * need to activate only when the ui-sref target state is active and *not* any of\n * it's children, then you will use\n * {@link ui.router.state.directive:ui-sref-active-eq ui-sref-active-eq}\n *\n * @example\n * Given the following template:\n *
    \n * \n * 
    \n *\n *\n * When the app state is \"app.user\" (or any children states), and contains the state parameter \"user\" with value \"bilbobaggins\",\n * the resulting HTML will appear as (note the 'active' class):\n *
    \n * \n * 
    \n *\n * The class name is interpolated **once** during the directives link time (any further changes to the\n * interpolated value are ignored).\n *\n * Multiple classes may be specified in a space-separated format:\n *
    \n * 
      \n *
    • \n * link\n *
    • \n *
    \n *
    \n *\n * It is also possible to pass ui-sref-active an expression that evaluates\n * to an object hash, whose keys represent active class names and whose\n * values represent the respective state names/globs.\n * ui-sref-active will match if the current active state **includes** any of\n * the specified state names/globs, even the abstract ones.\n *\n * @Example\n * Given the following template, with \"admin\" being an abstract state:\n *
    \n * 
    \n * Roles\n *
    \n *
    \n *\n * When the current state is \"admin.roles\" the \"active\" class will be applied\n * to both the
    and elements. It is important to note that the state\n * names/globs passed to ui-sref-active shadow the state provided by ui-sref.\n */\n\n/**\n * @ngdoc directive\n * @name ui.router.state.directive:ui-sref-active-eq\n *\n * @requires ui.router.state.$state\n * @requires ui.router.state.$stateParams\n * @requires $interpolate\n *\n * @restrict A\n *\n * @description\n * The same as {@link ui.router.state.directive:ui-sref-active ui-sref-active} but will only activate\n * when the exact target state used in the `ui-sref` is active; no child states.\n *\n */\n$StateRefActiveDirective.$inject = ['$state', '$stateParams', '$interpolate'];\nfunction $StateRefActiveDirective($state, $stateParams, $interpolate) {\n return {\n restrict: \"A\",\n controller: ['$scope', '$element', '$attrs', '$timeout', function ($scope, $element, $attrs, $timeout) {\n var states = [], activeClasses = {}, activeEqClass, uiSrefActive;\n\n // There probably isn't much point in $observing this\n // uiSrefActive and uiSrefActiveEq share the same directive object with some\n // slight difference in logic routing\n activeEqClass = $interpolate($attrs.uiSrefActiveEq || '', false)($scope);\n\n try {\n uiSrefActive = $scope.$eval($attrs.uiSrefActive);\n } catch (e) {\n // Do nothing. uiSrefActive is not a valid expression.\n // Fall back to using $interpolate below\n }\n uiSrefActive = uiSrefActive || $interpolate($attrs.uiSrefActive || '', false)($scope);\n if (isObject(uiSrefActive)) {\n forEach(uiSrefActive, function(stateOrName, activeClass) {\n if (isString(stateOrName)) {\n var ref = parseStateRef(stateOrName, $state.current.name);\n addState(ref.state, $scope.$eval(ref.paramExpr), activeClass);\n }\n });\n }\n\n // Allow uiSref to communicate with uiSrefActive[Equals]\n this.$$addStateInfo = function (newState, newParams) {\n // we already got an explicit state provided by ui-sref-active, so we\n // shadow the one that comes from ui-sref\n if (isObject(uiSrefActive) && states.length > 0) {\n return;\n }\n addState(newState, newParams, uiSrefActive);\n update();\n };\n\n $scope.$on('$stateChangeSuccess', update);\n\n function addState(stateName, stateParams, activeClass) {\n var state = $state.get(stateName, stateContext($element));\n var stateHash = createStateHash(stateName, stateParams);\n\n states.push({\n state: state || { name: stateName },\n params: stateParams,\n hash: stateHash\n });\n\n activeClasses[stateHash] = activeClass;\n }\n\n /**\n * @param {string} state\n * @param {Object|string} [params]\n * @return {string}\n */\n function createStateHash(state, params) {\n if (!isString(state)) {\n throw new Error('state should be a string');\n }\n if (isObject(params)) {\n return state + toJson(params);\n }\n params = $scope.$eval(params);\n if (isObject(params)) {\n return state + toJson(params);\n }\n return state;\n }\n\n // Update route state\n function update() {\n for (var i = 0; i < states.length; i++) {\n if (anyMatch(states[i].state, states[i].params)) {\n addClass($element, activeClasses[states[i].hash]);\n } else {\n removeClass($element, activeClasses[states[i].hash]);\n }\n\n if (exactMatch(states[i].state, states[i].params)) {\n addClass($element, activeEqClass);\n } else {\n removeClass($element, activeEqClass);\n }\n }\n }\n\n function addClass(el, className) { $timeout(function () { el.addClass(className); }); }\n function removeClass(el, className) { el.removeClass(className); }\n function anyMatch(state, params) { return $state.includes(state.name, params); }\n function exactMatch(state, params) { return $state.is(state.name, params); }\n\n update();\n }]\n };\n}\n\nangular.module('ui.router.state')\n .directive('uiSref', $StateRefDirective)\n .directive('uiSrefActive', $StateRefActiveDirective)\n .directive('uiSrefActiveEq', $StateRefActiveDirective)\n .directive('uiState', $StateRefDynamicDirective);\n\n/**\n * @ngdoc filter\n * @name ui.router.state.filter:isState\n *\n * @requires ui.router.state.$state\n *\n * @description\n * Translates to {@link ui.router.state.$state#methods_is $state.is(\"stateName\")}.\n */\n$IsStateFilter.$inject = ['$state'];\nfunction $IsStateFilter($state) {\n var isFilter = function (state, params) {\n return $state.is(state, params);\n };\n isFilter.$stateful = true;\n return isFilter;\n}\n\n/**\n * @ngdoc filter\n * @name ui.router.state.filter:includedByState\n *\n * @requires ui.router.state.$state\n *\n * @description\n * Translates to {@link ui.router.state.$state#methods_includes $state.includes('fullOrPartialStateName')}.\n */\n$IncludedByStateFilter.$inject = ['$state'];\nfunction $IncludedByStateFilter($state) {\n var includesFilter = function (state, params, options) {\n return $state.includes(state, params, options);\n };\n includesFilter.$stateful = true;\n return includesFilter;\n}\n\nangular.module('ui.router.state')\n .filter('isState', $IsStateFilter)\n .filter('includedByState', $IncludedByStateFilter);\n})(window, window.angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/angular-ui-router/release/angular-ui-router.js\n ** module id = 14\n ** module chunks = 0\n **/","// style-loader: Adds some css to the DOM by adding a ','','','
    ','
    ','
    ','Filters:','','','','','','','','
    ','
    ',' ','','','','','
    ','','','','','
    ','
    ','
    ','Options:','','','','','','','','
    ','
    ','
    ','
    ','
    ','
    ','','','
    ','
    ','','',''];};var defaultCommandLineFunctions=[];ConsoleAppender=function(){};var consoleAppenderIdCounter=1;ConsoleAppender.prototype=new Appender();ConsoleAppender.prototype.create=function(inPage,container,lazyInit,initiallyMinimized,useDocumentWrite,width,height,focusConsoleWindow){var appender=this;var initialized=false;var consoleWindowCreated=false;var consoleWindowLoaded=false;var consoleClosed=false;var queuedLoggingEvents=[];var isSupported=true;var consoleAppenderId=consoleAppenderIdCounter++;initiallyMinimized=extractBooleanFromParam(initiallyMinimized,this.defaults.initiallyMinimized);lazyInit=extractBooleanFromParam(lazyInit,this.defaults.lazyInit);useDocumentWrite=extractBooleanFromParam(useDocumentWrite,this.defaults.useDocumentWrite);var newestMessageAtTop=this.defaults.newestMessageAtTop;var scrollToLatestMessage=this.defaults.scrollToLatestMessage;width=width?width:this.defaults.width;height=height?height:this.defaults.height;var maxMessages=this.defaults.maxMessages;var showCommandLine=this.defaults.showCommandLine;var commandLineObjectExpansionDepth=this.defaults.commandLineObjectExpansionDepth;var showHideButton=this.defaults.showHideButton;var showCloseButton=this.defaults.showCloseButton;this.setLayout(this.defaults.layout);var init,createWindow,safeToAppend,getConsoleWindow,open;var appenderName=inPage?\"InPageAppender\":\"PopUpAppender\";var checkCanConfigure=function(configOptionName){if(consoleWindowCreated){handleError(appenderName+\": configuration option '\"+configOptionName+\"' may not be set after the appender has been initialized\");return false;}\r\nreturn true;};var consoleWindowExists=function(){return(consoleWindowLoaded&&isSupported&&!consoleClosed);};this.isNewestMessageAtTop=function(){return newestMessageAtTop;};this.setNewestMessageAtTop=function(newestMessageAtTopParam){newestMessageAtTop=bool(newestMessageAtTopParam);if(consoleWindowExists()){getConsoleWindow().setNewestAtTop(newestMessageAtTop);}};this.isScrollToLatestMessage=function(){return scrollToLatestMessage;};this.setScrollToLatestMessage=function(scrollToLatestMessageParam){scrollToLatestMessage=bool(scrollToLatestMessageParam);if(consoleWindowExists()){getConsoleWindow().setScrollToLatest(scrollToLatestMessage);}};this.getWidth=function(){return width;};this.setWidth=function(widthParam){if(checkCanConfigure(\"width\")){width=extractStringFromParam(widthParam,width);}};this.getHeight=function(){return height;};this.setHeight=function(heightParam){if(checkCanConfigure(\"height\")){height=extractStringFromParam(heightParam,height);}};this.getMaxMessages=function(){return maxMessages;};this.setMaxMessages=function(maxMessagesParam){maxMessages=extractIntFromParam(maxMessagesParam,maxMessages);if(consoleWindowExists()){getConsoleWindow().setMaxMessages(maxMessages);}};this.isShowCommandLine=function(){return showCommandLine;};this.setShowCommandLine=function(showCommandLineParam){showCommandLine=bool(showCommandLineParam);if(consoleWindowExists()){getConsoleWindow().setShowCommandLine(showCommandLine);}};this.isShowHideButton=function(){return showHideButton;};this.setShowHideButton=function(showHideButtonParam){showHideButton=bool(showHideButtonParam);if(consoleWindowExists()){getConsoleWindow().setShowHideButton(showHideButton);}};this.isShowCloseButton=function(){return showCloseButton;};this.setShowCloseButton=function(showCloseButtonParam){showCloseButton=bool(showCloseButtonParam);if(consoleWindowExists()){getConsoleWindow().setShowCloseButton(showCloseButton);}};this.getCommandLineObjectExpansionDepth=function(){return commandLineObjectExpansionDepth;};this.setCommandLineObjectExpansionDepth=function(commandLineObjectExpansionDepthParam){commandLineObjectExpansionDepth=extractIntFromParam(commandLineObjectExpansionDepthParam,commandLineObjectExpansionDepth);};var minimized=initiallyMinimized;this.isInitiallyMinimized=function(){return initiallyMinimized;};this.setInitiallyMinimized=function(initiallyMinimizedParam){if(checkCanConfigure(\"initiallyMinimized\")){initiallyMinimized=bool(initiallyMinimizedParam);minimized=initiallyMinimized;}};this.isUseDocumentWrite=function(){return useDocumentWrite;};this.setUseDocumentWrite=function(useDocumentWriteParam){if(checkCanConfigure(\"useDocumentWrite\")){useDocumentWrite=bool(useDocumentWriteParam);}};function QueuedLoggingEvent(loggingEvent,formattedMessage){this.loggingEvent=loggingEvent;this.levelName=loggingEvent.level.name;this.formattedMessage=formattedMessage;}\r\nQueuedLoggingEvent.prototype.append=function(){getConsoleWindow().log(this.levelName,this.formattedMessage);};function QueuedGroup(name,initiallyExpanded){this.name=name;this.initiallyExpanded=initiallyExpanded;}\r\nQueuedGroup.prototype.append=function(){getConsoleWindow().group(this.name,this.initiallyExpanded);};function QueuedGroupEnd(){}\r\nQueuedGroupEnd.prototype.append=function(){getConsoleWindow().groupEnd();};var checkAndAppend=function(){safeToAppend();if(!initialized){init();}else if(consoleClosed&&reopenWhenClosed){createWindow();}\r\nif(safeToAppend()){appendQueuedLoggingEvents();}};this.append=function(loggingEvent){if(isSupported){var formattedMessage=appender.getLayout().formatWithException(loggingEvent);queuedLoggingEvents.push(new QueuedLoggingEvent(loggingEvent,formattedMessage));checkAndAppend();}};this.group=function(name,initiallyExpanded){if(isSupported){queuedLoggingEvents.push(new QueuedGroup(name,initiallyExpanded));checkAndAppend();}};this.groupEnd=function(){if(isSupported){queuedLoggingEvents.push(new QueuedGroupEnd());checkAndAppend();}};var appendQueuedLoggingEvents=function(){while(queuedLoggingEvents.length>0){queuedLoggingEvents.shift().append();}\r\nif(focusConsoleWindow){getConsoleWindow().focus();}};this.setAddedToLogger=function(logger){this.loggers.push(logger);if(enabled&&!lazyInit){init();}};this.clear=function(){if(consoleWindowExists()){getConsoleWindow().clearLog();}\r\nqueuedLoggingEvents.length=0;};this.focus=function(){if(consoleWindowExists()){getConsoleWindow().focus();}};this.focusCommandLine=function(){if(consoleWindowExists()){getConsoleWindow().focusCommandLine();}};this.focusSearch=function(){if(consoleWindowExists()){getConsoleWindow().focusSearch();}};var commandWindow=window;this.getCommandWindow=function(){return commandWindow;};this.setCommandWindow=function(commandWindowParam){commandWindow=commandWindowParam;};this.executeLastCommand=function(){if(consoleWindowExists()){getConsoleWindow().evalLastCommand();}};var commandLayout=new PatternLayout(\"%m\");this.getCommandLayout=function(){return commandLayout;};this.setCommandLayout=function(commandLayoutParam){commandLayout=commandLayoutParam;};this.evalCommandAndAppend=function(expr){var commandReturnValue={appendResult:true,isError:false};var commandOutput=\"\";try{var result,i;if(!commandWindow.eval&&commandWindow.execScript){commandWindow.execScript(\"null\");}\r\nvar commandLineFunctionsHash={};for(i=0,len=commandLineFunctions.length;i>> \"+expr;if(!isUndefined(commandOutput)){message+=newLine+commandOutput;}\r\nvar level=commandReturnValue.isError?Level.ERROR:Level.INFO;var loggingEvent=new LoggingEvent(null,new Date(),level,[message],null);var mainLayout=this.getLayout();this.setLayout(commandLayout);this.append(loggingEvent);this.setLayout(mainLayout);}};var commandLineFunctions=defaultCommandLineFunctions.concat([]);this.addCommandLineFunction=function(functionName,commandLineFunction){commandLineFunctions.push([functionName,commandLineFunction]);};var commandHistoryCookieName=\"log4javascriptCommandHistory\";this.storeCommandHistory=function(commandHistory){setCookie(commandHistoryCookieName,commandHistory.join(\",\"));};var writeHtml=function(doc){var lines=getConsoleHtmlLines();doc.open();for(var i=0,len=lines.length;i\";consoleClosed=false;var iframeDocumentExistsTest=function(win){try{return bool(win)&&bool(win.document);}catch(ex){return false;}};if(iframeDocumentExistsTest(getConsoleWindow())){writeToDocument();}else{pollConsoleWindow(iframeDocumentExistsTest,100,writeToDocument,initErrorMessage);}\r\nconsoleWindowCreated=true;};createWindow=function(show){if(show||!initiallyMinimized){var pageLoadHandler=function(){if(!container){containerElement=document.createElement(\"div\");containerElement.style.position=\"fixed\";containerElement.style.left=\"0\";containerElement.style.right=\"0\";containerElement.style.bottom=\"0\";document.body.appendChild(containerElement);appender.addCssProperty(\"borderWidth\",\"1px 0 0 0\");appender.addCssProperty(\"zIndex\",1000000);open();}else{try{var el=document.getElementById(container);if(el.nodeType==1){containerElement=el;}\r\nopen();}catch(ex){handleError(\"InPageAppender.init: invalid container element '\"+container+\"' supplied\",ex);}}};if(pageLoaded&&container&&container.appendChild){containerElement=container;open();}else if(pageLoaded){pageLoadHandler();}else{log4javascript.addEventListener(\"load\",pageLoadHandler);}\r\nwindowCreationStarted=true;}};init=function(){createWindow();initialized=true;};getConsoleWindow=function(){var iframe=window.frames[iframeId];if(iframe){return iframe;}};safeToAppend=function(){if(isSupported&&!consoleClosed){if(consoleWindowCreated&&!consoleWindowLoaded&&getConsoleWindow()&&isLoaded(getConsoleWindow())){consoleWindowLoaded=true;}\r\nreturn consoleWindowLoaded;}\r\nreturn false;};}else{var useOldPopUp=appender.defaults.useOldPopUp;var complainAboutPopUpBlocking=appender.defaults.complainAboutPopUpBlocking;var reopenWhenClosed=this.defaults.reopenWhenClosed;this.isUseOldPopUp=function(){return useOldPopUp;};this.setUseOldPopUp=function(useOldPopUpParam){if(checkCanConfigure(\"useOldPopUp\")){useOldPopUp=bool(useOldPopUpParam);}};this.isComplainAboutPopUpBlocking=function(){return complainAboutPopUpBlocking;};this.setComplainAboutPopUpBlocking=function(complainAboutPopUpBlockingParam){if(checkCanConfigure(\"complainAboutPopUpBlocking\")){complainAboutPopUpBlocking=bool(complainAboutPopUpBlockingParam);}};this.isFocusPopUp=function(){return focusConsoleWindow;};this.setFocusPopUp=function(focusPopUpParam){focusConsoleWindow=bool(focusPopUpParam);};this.isReopenWhenClosed=function(){return reopenWhenClosed;};this.setReopenWhenClosed=function(reopenWhenClosedParam){reopenWhenClosed=bool(reopenWhenClosedParam);};this.close=function(){logLog.debug(\"close \"+this);try{popUp.close();this.unload();}catch(ex){}};this.hide=function(){logLog.debug(\"hide \"+this);if(consoleWindowExists()){this.close();}};this.show=function(){logLog.debug(\"show \"+this);if(!consoleWindowCreated){open();}};this.isVisible=function(){return safeToAppend();};var popUp;open=function(){var windowProperties=\"width=\"+width+\",height=\"+height+\",status,resizable\";var frameInfo=\"\";try{var frameEl=window.frameElement;if(frameEl){frameInfo=\"_\"+frameEl.tagName+\"_\"+(frameEl.name||frameEl.id||\"\");}}catch(e){frameInfo=\"_inaccessibleParentFrame\";}\r\nvar windowName=\"PopUp_\"+location.host.replace(/[^a-z0-9]/gi,\"_\")+\"_\"+consoleAppenderId+frameInfo;if(!useOldPopUp||!useDocumentWrite){windowName=windowName+\"_\"+uniqueId;}\r\nvar checkPopUpClosed=function(win){if(consoleClosed){return true;}else{try{return bool(win)&&win.closed;}catch(ex){}}\r\nreturn false;};var popUpClosedCallback=function(){if(!consoleClosed){appender.unload();}};function finalInit(){getConsoleWindow().setCloseIfOpenerCloses(!useOldPopUp||!useDocumentWrite);consoleWindowLoadHandler();consoleWindowLoaded=true;appendQueuedLoggingEvents();pollConsoleWindow(checkPopUpClosed,500,popUpClosedCallback,\"PopUpAppender.checkPopUpClosed: error checking pop-up window\");}\r\ntry{popUp=window.open(getConsoleUrl(),windowName,windowProperties);consoleClosed=false;consoleWindowCreated=true;if(popUp&&popUp.document){if(useDocumentWrite&&useOldPopUp&&isLoaded(popUp)){popUp.mainPageReloaded();finalInit();}else{if(useDocumentWrite){writeHtml(popUp.document);}\r\nvar popUpLoadedTest=function(win){return bool(win)&&isLoaded(win);};if(isLoaded(popUp)){finalInit();}else{pollConsoleWindow(popUpLoadedTest,100,finalInit,\"PopUpAppender.init: unable to create console window\");}}}else{isSupported=false;logLog.warn(\"PopUpAppender.init: pop-ups blocked, please unblock to use PopUpAppender\");if(complainAboutPopUpBlocking){handleError(\"log4javascript: pop-up windows appear to be blocked. Please unblock them to use pop-up logging.\");}}}catch(ex){handleError(\"PopUpAppender.init: error creating pop-up\",ex);}};createWindow=function(){if(!initiallyMinimized){open();}};init=function(){createWindow();initialized=true;};getConsoleWindow=function(){return popUp;};safeToAppend=function(){if(isSupported&&!isUndefined(popUp)&&!consoleClosed){if(popUp.closed||(consoleWindowLoaded&&isUndefined(popUp.closed))){appender.unload();logLog.debug(\"PopUpAppender: pop-up closed\");return false;}\r\nif(!consoleWindowLoaded&&isLoaded(popUp)){consoleWindowLoaded=true;}}\r\nreturn isSupported&&consoleWindowLoaded&&!consoleClosed;};}\r\nthis.getConsoleWindow=getConsoleWindow;};ConsoleAppender.addGlobalCommandLineFunction=function(functionName,commandLineFunction){defaultCommandLineFunctions.push([functionName,commandLineFunction]);};function PopUpAppender(lazyInit,initiallyMinimized,useDocumentWrite,width,height){this.create(false,null,lazyInit,initiallyMinimized,useDocumentWrite,width,height,this.defaults.focusPopUp);}\r\nPopUpAppender.prototype=new ConsoleAppender();PopUpAppender.prototype.defaults={layout:new PatternLayout(\"%d{HH:mm:ss} %-5p - %m{1}%n\"),initiallyMinimized:false,focusPopUp:false,lazyInit:true,useOldPopUp:true,complainAboutPopUpBlocking:true,newestMessageAtTop:false,scrollToLatestMessage:true,width:\"600\",height:\"400\",reopenWhenClosed:false,maxMessages:null,showCommandLine:true,commandLineObjectExpansionDepth:1,showHideButton:false,showCloseButton:true,useDocumentWrite:true};PopUpAppender.prototype.toString=function(){return\"PopUpAppender\";};log4javascript.PopUpAppender=PopUpAppender;function InPageAppender(container,lazyInit,initiallyMinimized,useDocumentWrite,width,height){this.create(true,container,lazyInit,initiallyMinimized,useDocumentWrite,width,height,false);}\r\nInPageAppender.prototype=new ConsoleAppender();InPageAppender.prototype.defaults={layout:new PatternLayout(\"%d{HH:mm:ss} %-5p - %m{1}%n\"),initiallyMinimized:false,lazyInit:true,newestMessageAtTop:false,scrollToLatestMessage:true,width:\"100%\",height:\"220px\",maxMessages:null,showCommandLine:true,commandLineObjectExpansionDepth:1,showHideButton:false,showCloseButton:false,showLogEntryDeleteButtons:true,useDocumentWrite:true};InPageAppender.prototype.toString=function(){return\"InPageAppender\";};log4javascript.InPageAppender=InPageAppender;log4javascript.InlineAppender=InPageAppender;})();function padWithSpaces(str,len){if(str.length]*>\",\"i\");if(regex.test(el.outerHTML)){return RegExp.$1.toLowerCase();}}\r\nreturn\"\";}\r\nvar lt=\"<\";var gt=\">\";var i,len;if(includeRootNode&&rootNode.nodeType!=nodeTypes.DOCUMENT_FRAGMENT_NODE){switch(rootNode.nodeType){case nodeTypes.ELEMENT_NODE:var tagName=rootNode.tagName.toLowerCase();xhtml=startNewLine?newLine+indentation:\"\";xhtml+=lt;var prefix=getNamespace(rootNode);var hasPrefix=!!prefix;if(hasPrefix){xhtml+=prefix+\":\";}\r\nxhtml+=tagName;for(i=0,len=rootNode.attributes.length;i\"+newLine;case nodeTypes.DOCUMENT_NODE:xhtml=\"\";for(i=0,len=rootNode.childNodes.length;i {\n /**\n * Contains the datetime formats allowed across the application.\n *\n * moment.js reference:\n * formats: http://momentjs.com/docs/#/parsing/string-format/\n * format(): http://momentjs.com/docs/#/displaying/format/\n */\n const _dateFormats = {\n date: 'MM/DD/YYYY',\n dateTimeSimple: 'MM/DD/YYYY HH:mm',\n dateTimeAt: 'MM/DD/YYYY [at] HH:mm',\n dateTime12h: 'MM/DD/YYYY hh:mm A',\n dateTimeISO: 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]',\n hour: 'HH:mm'\n };\n\n /**\n * Constant: regular expressions to be used in forms.\n */\n const _regex = {\n email: '^([a-zA-Z0-9_\\\\-\\\\.]+)@([a-zA-Z0-9_\\\\-\\\\.]+)\\\\.([a-zA-Z]{2,5})$',\n number: '^[0-9]*$',\n // Zipcode for US-Canada standards\n zipcode: '^[0-9]{5}(?:-[0-9]{4})?$',\n // Phone should only allow numbers and '+' at the beginning to avoid inconsistency\n phone: '^[0-9\\-\\+]{9,15}$',\n name: '^[A-Za-z][A-Za-z]*(?:\\s+[A-Za-z][A-Za-z]+)?$',\n noNumbers: '^[A-Za-z_ ][A-Za-z_ ]*(?:\\s+[A-Za-z_ ][A-Za-z_ ]+)?$',\n address: '[a-zA-Z0-9À-ÖØ-öø-ÿ]+\\.?(( |\\-)[a-zA-Z0-9À-ÖØ-öø-ÿ]+\\.?)*',\n // Format for currency (dots and commas are optional): #,###.##\n currency: '(?=.)^(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+)?(\\\\.[0-9]{1,2})?$',\n // Matches if string has these special characters: `~!@#$%^&*()_|+\\=?<>{}[]/\\\n specialCharacters: /[`~!@#$%^&*()_|+=?<>\\{\\}\\[\\]\\\\\\/]/,\n // Matches if string does NOT have these special characters: `~!@#$%^&*()_|+\\=?<>{}[]/\\\n noSpecialCharacters: /^(?!.*[`~!@#$%^&*()_|+=?<>\\{\\}\\[\\]\\\\\\/])/,\n password: '(?=(.*[0-9]))(?=.*[a-z])(?=(.*[A-Z]))(?=.*[\\!@#$^&*!])(?=(.*)).{8,160}',\n website: /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/\n };\n\n /**\n * assignBindObject function: assigns all attributes from second parameter as attributes to first\n * parameter, this is for bind objects so it wont lose the reference by direct assignation\n * @param objectTo {Object} destination object\n * @param objectFrom {Object} source object\n */\n const assignBindObject = (objectTo, objectFrom) => {\n // First cleans all destination object's attributes\n Object.keys(objectTo).forEach((key) => {\n delete objectTo[key];\n });\n // Assigns each one of the source attributes to the destination object\n Object.keys(objectFrom).forEach((key) => {\n objectTo[key] = objectFrom[key];\n });\n };\n\n /**\n * This function receives a module object as param, then reassigns selectedModule object with this param\n * then redirects to the right route state with the new selectedModule.name\n *\n * Used in: adminModule.store and entityMenuItem.controller.\n *\n * @param selectedModule {Object} Reference of 'selectedModule' variable used across components.\n * @param selected {Object} Current option selected from the menu.\n */\n const setActiveEntity = (selectedModule, selected) => {\n // Assigns select object attributes one by one to bind object this.selectedModule\n assignBindObject(selectedModule, selected);\n // Changes state to selected module\n $state.go(selectedModule.path);\n };\n\n /**\n * Returns random alpha-numeric string.\n */\n const getRandom = () => {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n };\n\n /**\n * Check if value passes the regex test.\n * @param value {String} Value to test.\n * @param regexName {String} Mandatory. Regex name to use for the testing.\n * @returns {boolean}\n */\n const checkValueWithRegex = (value = '', regexName) => {\n let result = false;\n\n if (regexName && _regex[regexName]) {\n result = new RegExp(_regex[regexName]).test(value.toString());\n }\n\n return result;\n };\n\n /**\n * The object\n */\n return Object.freeze({\n dateFormats: _dateFormats,\n regex: _regex,\n /**\n * isFirstItem: get the $first property from scope parent, used when directive is\n * loaded from a ng-repeat loop, and its needed to know if this item is the first,\n * used for ng-class assigning purposes.\n * @returns {Boolean}\n * @param scope {Object} scope variable received to check\n */\n isFirstItem: (scope) => {\n return (scope.$parent && scope.$parent.$first) ? scope.$parent.$first : false;\n },\n /**\n * isLastItem: get the $last property from scope parent, used when directive is\n * loaded from a ng-repeat loop, and its needed to know if this item is the last,\n * used for ng-class assigning purposes.\n * @returns {Boolean}\n * @param scope {Object} scope variable received to check\n */\n isLastItem: (scope) => {\n return (scope.$parent && scope.$parent.$last) ? scope.$parent.$last : false;\n },\n assignBindObject: assignBindObject,\n setActiveEntity: setActiveEntity,\n checkValueWithRegex: checkValueWithRegex,\n /**\n *\n * @param stringValue\n * @returns {string}\n */\n capitalizeFirstLetter: (stringValue = '') => {\n return stringValue.charAt(0).toUpperCase() + stringValue.slice(1);\n },\n /**\n * Generates an unbound copy of 'objectArray' (Ex: to lose the reference between the store/model data).\n * @param objectArray {Array} array of objects\n * @returns {*|Array} unbound copy of 'objectArray'\n */\n unboundObjectArray: (objectArray = []) => {\n return objectArray.map(item => {\n // Returns a copy of 'item' to lose the reference of the original model data.\n return JSON.parse(JSON.stringify(item));\n });\n },\n /**\n * Generates unique ID, format: xxxxx-xxxxx-xxxxx\n */\n getUniqueID: () => {\n return `${getRandom()}-${getRandom()}-${getRandom()}`;\n },\n\n showCarusel: () => {\n $timeout(function(){\n jqService(\"#imageslider\").bose({\n images : ['images/imageslider/slider-01.jpg',\n 'images/imageslider/slider-02.jpg',\n 'images/imageslider/slider-03.jpg',\n 'images/imageslider/slider-04.jpg'\n ],\n imageTitles : [\n ['Slide Image 1', 'Waste Management'],\n ['Slide Image 2', 'Hire your skip bin online'],\n ['Slide Image 3', 'Reliable and competitively priced skip bin hire services'],\n ['Slide Image 4', 'Conventional skip bin']\n ],\n wrapClass : 'bose-wrapper',\n sliderClass : 'bose-sliders ',\n holderClass : 'bose-holder',\n startIndex : 0,\n transition : 'fade',\n timeout : 5, // 5 sec\n duration : 2 // 2 sec\n });\n });\n },\n\n showMenu: (close) => {\n if (close || jqService(\"nav#nav-mobile ul\").hasClass(\"expanded\")) {\n jqService(\"nav#nav-mobile ul.expanded\").removeClass(\"expanded\").slideUp(250);\n jqService(this).removeClass(\"open\");\n } else {\n jqService(\"nav#nav-mobile ul\").addClass(\"expanded\").slideDown(250);\n jqService(this).addClass(\"open\");\n }\n }\n\n });\n};\n\nuiService.$inject = ['$filter', '$state', 'jqService', '$timeout'];\nexport {uiService};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/app/shared/services/ui.service.js\n **/","const jqService = ($window) => {\n if (!$window.$) {\n // If lodash is not available you can now provide a\n // mock service, try to load it from somewhere else,\n // redirect the user to a dedicated error page, ...\n }\n return $window.$.noConflict();\n};\n\njqService.$inject = ['$window'];\nexport {jqService};\n\n\n/** WEBPACK FOOTER **\n ** ./src/app/shared/services/jq.service.js\n **/","import templatePrivacy from './privacy-policy.html';\nimport templateRefund from './refund-policy.html';\nimport templateSecurity from './security-policy.html';\nimport templateBookingFee from './booking-fee.html';\nimport templateShowCVN from './show-cvn.html';\nimport {ModalController as controller} from './modal.controller';\n\nconst modalService = ($filter, $uibModal) => {\n /**\n * Return immutable object with the service's public interface\n */\n\n return Object.freeze({\n showModal (template) {\n const modalInstance = $uibModal.open({\n animation: true,\n template: template,\n controllerAs: 'vm',\n controller: controller//,\n //appendTo: 'modal-parent'\n });\n return modalInstance;\n },\n\n showPrivacy () {\n return this.showModal(templatePrivacy);\n },\n\n showRefund () {\n return this.showModal(templateRefund);\n },\n\n showSecurity () {\n return this.showModal(templateSecurity);\n },\n\n showBookingFee () {\n return this.showModal(templateBookingFee);\n },\n\n showCVN () {\n return this.showModal(templateShowCVN);\n }\n\n\n });\n};\n\nmodalService.$inject = ['$filter', '$uibModal'];\nexport {modalService};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/app/shared/services/modal/modal.service.js\n **/","module.exports = \"
    \\n

    Privacy Policy

    \\n
    \\n
    \\n
    \\n \\n
    \"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/app/shared/services/modal/privacy-policy.html\n ** module id = 163\n ** module chunks = 0\n **/","module.exports = \"
    \\n

    Refund Policy

    \\n
    \\n
    \\n

    Skip serivces booked through Rentaskip are 100% refundable in the event of non\\n delivery of a skip, or if a skip does not arrive on the booked date. Skip\\n services are also refundable if you decide before delivery that you\\n do not want the skip. Please read the terms below.

    \\n

    Service charges are those that are charged at the time you make a booking on\\n Rentaskip's website and include all charges prior to the disposal of the waste\\n at the tip or disposal facility.

    \\n\\n

    Rentaskip will refund service charges under the follwowing circumstances:

    \\n
      \\n
    1. \\n You cancel your order by contacting RENTASKIP via email (info@rentaskip.com.au) or through our 'Contact Us' form   not less than 48 hours prior to 7:30am on the\\n scheduled delivery date.\\n
    2. \\n Rentaskip fails to deliver the skip on time and you\\n decide not to reschedule the delivery\\n\\n
    3. \\n The skip delivered does not conform to the skip that\\n you have booked via our website.
    \\n

    Disposal Charges

    \\n

    \\n Disposal charges are for the disposal of the waste collected from your site in\\n the skip. Commonly this is comprised only of a \\\"tip fee\\\", but in some cases\\n where waste needs special treatment there are treatment charges included in the\\n disposal charge.

    \\n

    Rentaskip will refund Disposal Charges only if it can be shown that an error has\\n been made in the calculation of such charges.

    \\n

     

    \\n\\n\\n

    Refund Account

    \\n

    Refunds will be made only to the credit card that was used to make the payment\\n originally. Refunds will be made within 3 business days of the date that you\\n cancel the order, or in such cases that Rentaskip agrees to refund charges for\\n any other reason.

    \\n

     

    \\n
    \\n
    \\n \\n
    \"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/app/shared/services/modal/refund-policy.html\n ** module id = 164\n ** module chunks = 0\n **/","module.exports = \"
    \\n

    Refund Policy

    \\n
    \\n
    \\n

    Rentaskip takes online security very seriously. Our website host utilises top industry standards in security in protecting data from unauthorised accesss.

    \\n

    Encryption

    \\n

    Credit card payments are sent by Rentaskip to EWay for processing in an encrypted form to prevent interception. SSL 128 bit encryption is provided by our Comodo (www.comodo.com) SSL Certificate. Please feel free to view our SSL Certificate by double clicking on the padlock icon that you will see at the bottom of your browser when you are on our payment page. You will also notice that the url begins with \\\"https\\\" in which the \\\"s\\\" indicates that the page is transmitted in a secure format.

    \\n

    Credit card details are not stored by Rentaskip

    \\n

    The security of our customers' credit card details is of the utmost importance to Rentaskip and this is why we do not store your credit card number in our database at any time. At the moment of paying for your order your credit card number is sent to our payment gateway, EWay (www.eway.com.au) in encrypted form and is stored in their secure database. The reason that the number is stored is in order to facilitate refunds, or subsequent charges in the case that your quote includes disposal cost, or if for any other reason we need to charge you again. At no time can a Rentaskip employee see what your credit card number is.

    \\n \\n
    \\n
    \\n \\n
    \"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/app/shared/services/modal/security-policy.html\n ** module id = 165\n ** module chunks = 0\n **/","module.exports = \"
    \\n

    Rentaskip

    \\n
    \\n
    \\n

    The booking fee is $4.40 including GST. This charge is non-refundable in the case of cancellation by the customer except in the event that the service is cancelled as a result of non-delivery on the day or other factor preventing the successfull delivery of the skip.

    \\n \\n
    \\n
    \\n \\n
    \"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/app/shared/services/modal/booking-fee.html\n ** module id = 166\n ** module chunks = 0\n **/","module.exports = \"
    \\n

    Rentaskip

    \\n
    \\n
    \\n

    The card verification number, or CVN, on a Visa or MasterCard credit card or on an American Express Card is a three or four digit code that helps to ensure security in certain types of transactions. When you are placing a telephone or Internet order, being able to provide the CVN helps to prove that the credit card is in your possession.


    \\n \\n
    \\n
    \\n \\n
    \"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/app/shared/services/modal/show-cvn.html\n ** module id = 167\n ** module chunks = 0\n **/","class ModalController {\n constructor ($uibModalInstance) {\n this.$uibModalInstance = $uibModalInstance;\n }\n\n ok () {\n this.$uibModalInstance.dismiss('cancel');\n }\n}\n\nModalController.$inject = ['$uibModalInstance'];\n\nexport {ModalController};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/app/shared/services/modal/modal.controller.js\n **/","import {phoneFilter} from './phone.filter';\n\nexport const filters = angular.module('filters', [\n phoneFilter.name\n]);\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/app/shared/filters/filters.js\n **/","export const phoneFilter = angular.module('phoneFilter', [])\n// \"phone\": filter to convert string with numbers to formatted phone number, format returned is (999) 999-9999\n.filter('phone', function () {\n return function (phone) {\n if (!phone) { return ''; }\n\n var value = phone.toString().trim().replace(/[^0-9]/g, '');\n\n if (value.match(/[^0-9]/)) {\n return phone;\n }\n\n var country, city, number;\n\n switch (value.length) {\n case 10: // +1PPP####### -> C (PPP) ###-####\n country = 1;\n city = value.slice(0, 3);\n number = value.slice(3);\n break;\n\n case 11: // +CPPP####### -> CCC (PP) ###-####\n country = value[0];\n city = value.slice(1, 4);\n number = value.slice(4);\n break;\n\n case 12: // +CCCPP####### -> CCC (PP) ###-####\n country = value.slice(0, 3);\n city = value.slice(3, 5);\n number = value.slice(5);\n break;\n\n default:\n return phone;\n }\n\n if (country.toString() === '1') {\n country = '';\n }\n\n number = number.slice(0, 3) + '-' + number.slice(3);\n\n return (country + ' (' + city + ') ' + number).trim();\n };\n});\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/app/shared/filters/phone.filter.js\n **/","import {periodConstant} from './period.constant';\nexport const constants = angular.module('constants', [\n periodConstant.name\n]);\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/app/shared/constants/constants.js\n **/","export const periodConstant = angular.module('periodConstant', [])\n .constant('period', {\n IN_PROGRESS: 'in_progress',\n TODAY: 'today',\n THIS_WEEK: 'this_week',\n NEXT_WEEK: 'next_week',\n ALL_TIMES: 'all_times'\n });\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/app/shared/constants/period.constant.js\n **/","// To be used for common shared services, filters, etc used across the app\nexport const base = angular.module('base', [\n\n]);\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/app/shared/base/base.js\n **/"],"sourceRoot":""}