<!DOCTYPE html>
<html>

<head>
  <base href="." />
  <title>ng-bootstrap demo</title>
  <link rel="stylesheet" href="http://v4-alpha.getbootstrap.com/dist/css/bootstrap.min.css" />
  <script src="https://unpkg.com/zone.js/dist/zone.js"></script>
  <script src="https://unpkg.com/zone.js/dist/long-stack-trace-zone.js"></script>
  <script src="https://unpkg.com/reflect-metadata@0.1.3/Reflect.js"></script>
  <script src="https://unpkg.com/systemjs@0.19.31/dist/system.js"></script>
  <script src="config.js"></script>
  <script>
    System.import('app').catch(console.error.bind(console));
  </script>
</head>

<body>
  <my-app>loading...</my-app>
</body>

</html>
System.config({
  //use typescript for compilation
  transpiler: 'typescript',
  //typescript compiler options
  typescriptOptions: {
    emitDecoratorMetadata: true
  },
  paths: {
    'npm:': 'https://unpkg.com/'
  },
  map: {

    'app': './src', 

    '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
    '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
    '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
    '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
    '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
    '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
    '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
    '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',

    '@angular/core/testing': 'npm:@angular/core/bundles/core-testing.umd.js',
    '@angular/common/testing': 'npm:@angular/common/bundles/common-testing.umd.js',
    '@angular/compiler/testing': 'npm:@angular/compiler/bundles/compiler-testing.umd.js',
    '@angular/platform-browser/testing': 'npm:@angular/platform-browser/bundles/platform-browser-testing.umd.js',
    '@angular/platform-browser-dynamic/testing': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js',
    '@angular/http/testing': 'npm:@angular/http/bundles/http-testing.umd.js',
    '@angular/router/testing': 'npm:@angular/router/bundles/router-testing.umd.js',

    'rxjs': 'npm:rxjs',
    'typescript': 'npm:typescript@2.0.2/lib/typescript.js',

    '@ng-bootstrap/ng-bootstrap': 'ngb.bundle.js'
  },
  packages: {
    app: {
      main: './main.ts',
      defaultExtension: 'ts'
    },
    rxjs: {
      defaultExtension: 'js'
    }
  }
});
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import {AppModule} from './app';

platformBrowserDynamic().bootstrapModule(AppModule)

import { Component, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import {Routes, RouterModule} from "@angular/router";

@Component({
  selector: 'my-app',
  template: `
    <div class="container-fluid">
    
    <hr>
    <p>
      This is a demo plnkr forked from the <strong>ng-bootstrap</strong> project: Angular 2 powered Bootstrap.
      Visit <a href="https://ng-bootstrap.github.io/" target="_blank">https://ng-bootstrap.github.io</a> for more widgets and demos.
    </p>
    <hr>

      <template ngbModalContainer></template>

      <router-outlet></router-outlet>
  </div>
  `
})
export class App {
}   


const appRoutes: Routes = [
  {path: 'lazy',  loadChildren: 'app/lazy/lazy#LazyModule' },
  {path: '**',  redirectTo: 'lazy' }
];
const routing = RouterModule.forRoot(appRoutes, {useHash: true});

@NgModule({
  imports: [BrowserModule, NgbModule.forRoot(), routing], 
  declarations: [App],
  bootstrap: [App]
}) 
export class AppModule {}
import {Component, Input} from '@angular/core';

import {NgbModal, NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';

@Component({
  selector: 'ngbd-modal-content',
  template: `
    <div class="modal-header">
      <button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss('Cross click')">
        <span aria-hidden="true">&times;</span>
      </button>
      <h4 class="modal-title">Hi there!</h4>
    </div>
    <div class="modal-body">
      <p>Hello, {{name}}!</p>
    </div>
    <div class="modal-footer">
      <button type="button" class="btn btn-secondary" (click)="activeModal.close('Close click')">Close</button>
    </div>
  `
})
export class NgbdModalContent {
  @Input() name;

  constructor(public activeModal: NgbActiveModal) {}
}

@Component({
  selector: 'ngbd-modal-component',
  templateUrl: 'src/lazy/modal-component.html'
})
export class NgbdModalComponent {
  constructor(private modalService: NgbModal) {}

  open() {
    const modalRef = this.modalService.open(NgbdModalContent);
    modalRef.componentInstance.name = 'World';
  }
}
<p>You can pass an existing component as content of the modal window. In this case remember to add content component
as an <code>entryComponents</code> section of your <code>NgModule</code>.</p>

<button class="btn btn-lg btn-outline-primary" (click)="open()">Launch demo modal</button>

import { Component, NgModule } from '@angular/core';
import {Routes, RouterModule} from "@angular/router";
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { NgbdModalComponent, NgbdModalContent} from './modal-component';

@Component({
  template: `
  <h1>Lazy component</h1>
    <ngbd-modal-component></ngbd-modal-component>
  `
})
export class LazyComponent {}   

const appRoutes: Routes = [
  {path: '', component: LazyComponent}
];
const routing = RouterModule.forChild(appRoutes);

@NgModule({
  imports: [NgbModule, routing], 
  declarations: [LazyComponent, NgbdModalComponent, NgbdModalContent],
  entryComponents: [NgbdModalContent]
}) 
export class LazyModule {}
(function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
		module.exports = factory(require("@angular/core"), require("@angular/common"), require("@angular/forms"), require("rxjs/Observable"), require("rxjs/add/observable/fromEvent"), require("rxjs/add/operator/do"), require("rxjs/add/operator/let"));
	else if(typeof define === 'function' && define.amd)
		define(["@angular/core", "@angular/common", "@angular/forms", "rxjs/Observable", "rxjs/add/observable/fromEvent", "rxjs/add/operator/do", "rxjs/add/operator/let"], factory);
	else if(typeof exports === 'object')
		exports["ngb"] = factory(require("@angular/core"), require("@angular/common"), require("@angular/forms"), require("rxjs/Observable"), require("rxjs/add/observable/fromEvent"), require("rxjs/add/operator/do"), require("rxjs/add/operator/let"));
	else
		root["ngb"] = factory(root["ng"]["core"], root["ng"]["common"], root["ng"]["forms"], root["Rx"], root["Rx"]["Observable"], root["Rx"]["Observable"]["prototype"], root["Rx"]["Observable"]["prototype"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_12__, __WEBPACK_EXTERNAL_MODULE_72__, __WEBPACK_EXTERNAL_MODULE_73__, __WEBPACK_EXTERNAL_MODULE_74__, __WEBPACK_EXTERNAL_MODULE_75__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId])
/******/ 			return installedModules[moduleId].exports;
/******/
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			exports: {},
/******/ 			id: moduleId,
/******/ 			loaded: false
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.loaded = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var accordion_module_1 = __webpack_require__(2);
	var alert_module_1 = __webpack_require__(7);
	var radio_module_1 = __webpack_require__(10);
	var carousel_module_1 = __webpack_require__(13);
	var collapse_module_1 = __webpack_require__(16);
	var datepicker_module_1 = __webpack_require__(18);
	var dropdown_module_1 = __webpack_require__(33);
	var modal_module_1 = __webpack_require__(36);
	var pagination_module_1 = __webpack_require__(45);
	var popover_module_1 = __webpack_require__(48);
	var progressbar_module_1 = __webpack_require__(52);
	var rating_module_1 = __webpack_require__(55);
	var tabset_module_1 = __webpack_require__(58);
	var timepicker_module_1 = __webpack_require__(61);
	var tooltip_module_1 = __webpack_require__(65);
	var typeahead_module_1 = __webpack_require__(68);
	var accordion_module_2 = __webpack_require__(2);
	exports.NgbAccordionModule = accordion_module_2.NgbAccordionModule;
	exports.NgbAccordionConfig = accordion_module_2.NgbAccordionConfig;
	var alert_module_2 = __webpack_require__(7);
	exports.NgbAlertModule = alert_module_2.NgbAlertModule;
	exports.NgbAlertConfig = alert_module_2.NgbAlertConfig;
	var radio_module_2 = __webpack_require__(10);
	exports.NgbButtonsModule = radio_module_2.NgbButtonsModule;
	var carousel_module_2 = __webpack_require__(13);
	exports.NgbCarouselModule = carousel_module_2.NgbCarouselModule;
	exports.NgbCarouselConfig = carousel_module_2.NgbCarouselConfig;
	var collapse_module_2 = __webpack_require__(16);
	exports.NgbCollapseModule = collapse_module_2.NgbCollapseModule;
	var datepicker_module_2 = __webpack_require__(18);
	exports.NgbDatepickerModule = datepicker_module_2.NgbDatepickerModule;
	exports.NgbDatepickerI18n = datepicker_module_2.NgbDatepickerI18n;
	exports.NgbDatepickerConfig = datepicker_module_2.NgbDatepickerConfig;
	exports.NgbDateParserFormatter = datepicker_module_2.NgbDateParserFormatter;
	var dropdown_module_2 = __webpack_require__(33);
	exports.NgbDropdownModule = dropdown_module_2.NgbDropdownModule;
	exports.NgbDropdownConfig = dropdown_module_2.NgbDropdownConfig;
	var modal_module_2 = __webpack_require__(36);
	exports.NgbModalModule = modal_module_2.NgbModalModule;
	exports.NgbModal = modal_module_2.NgbModal;
	exports.NgbActiveModal = modal_module_2.NgbActiveModal;
	exports.NgbModalRef = modal_module_2.NgbModalRef;
	exports.ModalDismissReasons = modal_module_2.ModalDismissReasons;
	var pagination_module_2 = __webpack_require__(45);
	exports.NgbPaginationModule = pagination_module_2.NgbPaginationModule;
	exports.NgbPaginationConfig = pagination_module_2.NgbPaginationConfig;
	var popover_module_2 = __webpack_require__(48);
	exports.NgbPopoverModule = popover_module_2.NgbPopoverModule;
	exports.NgbPopoverConfig = popover_module_2.NgbPopoverConfig;
	var progressbar_module_2 = __webpack_require__(52);
	exports.NgbProgressbarModule = progressbar_module_2.NgbProgressbarModule;
	exports.NgbProgressbarConfig = progressbar_module_2.NgbProgressbarConfig;
	var rating_module_2 = __webpack_require__(55);
	exports.NgbRatingModule = rating_module_2.NgbRatingModule;
	exports.NgbRatingConfig = rating_module_2.NgbRatingConfig;
	var tabset_module_2 = __webpack_require__(58);
	exports.NgbTabsetModule = tabset_module_2.NgbTabsetModule;
	exports.NgbTabsetConfig = tabset_module_2.NgbTabsetConfig;
	var timepicker_module_2 = __webpack_require__(61);
	exports.NgbTimepickerModule = timepicker_module_2.NgbTimepickerModule;
	exports.NgbTimepickerConfig = timepicker_module_2.NgbTimepickerConfig;
	var tooltip_module_2 = __webpack_require__(65);
	exports.NgbTooltipModule = tooltip_module_2.NgbTooltipModule;
	exports.NgbTooltipConfig = tooltip_module_2.NgbTooltipConfig;
	var typeahead_module_2 = __webpack_require__(68);
	exports.NgbTypeaheadModule = typeahead_module_2.NgbTypeaheadModule;
	exports.NgbTypeaheadConfig = typeahead_module_2.NgbTypeaheadConfig;
	var NGB_MODULES = [
	    accordion_module_1.NgbAccordionModule, alert_module_1.NgbAlertModule, radio_module_1.NgbButtonsModule, carousel_module_1.NgbCarouselModule, collapse_module_1.NgbCollapseModule, datepicker_module_1.NgbDatepickerModule,
	    dropdown_module_1.NgbDropdownModule, modal_module_1.NgbModalModule, pagination_module_1.NgbPaginationModule, popover_module_1.NgbPopoverModule, progressbar_module_1.NgbProgressbarModule, rating_module_1.NgbRatingModule,
	    tabset_module_1.NgbTabsetModule, timepicker_module_1.NgbTimepickerModule, tooltip_module_1.NgbTooltipModule, typeahead_module_1.NgbTypeaheadModule
	];
	var NgbRootModule = (function () {
	    function NgbRootModule() {
	    }
	    NgbRootModule = __decorate([
	        core_1.NgModule({
	            imports: [
	                alert_module_1.NgbAlertModule.forRoot(), radio_module_1.NgbButtonsModule.forRoot(), collapse_module_1.NgbCollapseModule.forRoot(), progressbar_module_1.NgbProgressbarModule.forRoot(),
	                tooltip_module_1.NgbTooltipModule.forRoot(), typeahead_module_1.NgbTypeaheadModule.forRoot(), accordion_module_1.NgbAccordionModule.forRoot(), carousel_module_1.NgbCarouselModule.forRoot(),
	                datepicker_module_1.NgbDatepickerModule.forRoot(), dropdown_module_1.NgbDropdownModule.forRoot(), modal_module_1.NgbModalModule.forRoot(), pagination_module_1.NgbPaginationModule.forRoot(),
	                popover_module_1.NgbPopoverModule.forRoot(), progressbar_module_1.NgbProgressbarModule.forRoot(), rating_module_1.NgbRatingModule.forRoot(), tabset_module_1.NgbTabsetModule.forRoot(),
	                timepicker_module_1.NgbTimepickerModule.forRoot(), tooltip_module_1.NgbTooltipModule.forRoot()
	            ],
	            exports: NGB_MODULES
	        }), 
	        __metadata('design:paramtypes', [])
	    ], NgbRootModule);
	    return NgbRootModule;
	}());
	exports.NgbRootModule = NgbRootModule;
	var NgbModule = (function () {
	    function NgbModule() {
	    }
	    NgbModule.forRoot = function () { return { ngModule: NgbRootModule }; };
	    NgbModule = __decorate([
	        core_1.NgModule({ imports: NGB_MODULES, exports: NGB_MODULES }), 
	        __metadata('design:paramtypes', [])
	    ], NgbModule);
	    return NgbModule;
	}());
	exports.NgbModule = NgbModule;
	//# sourceMappingURL=index.js.map

/***/ },
/* 1 */
/***/ function(module, exports) {

	module.exports = __WEBPACK_EXTERNAL_MODULE_1__;

/***/ },
/* 2 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(3);
	var accordion_1 = __webpack_require__(4);
	var accordion_config_1 = __webpack_require__(6);
	var accordion_config_2 = __webpack_require__(6);
	exports.NgbAccordionConfig = accordion_config_2.NgbAccordionConfig;
	var NgbAccordionModule = (function () {
	    function NgbAccordionModule() {
	    }
	    NgbAccordionModule.forRoot = function () { return { ngModule: NgbAccordionModule, providers: [accordion_config_1.NgbAccordionConfig] }; };
	    NgbAccordionModule = __decorate([
	        core_1.NgModule({ declarations: accordion_1.NGB_ACCORDION_DIRECTIVES, exports: accordion_1.NGB_ACCORDION_DIRECTIVES, imports: [common_1.CommonModule] }), 
	        __metadata('design:paramtypes', [])
	    ], NgbAccordionModule);
	    return NgbAccordionModule;
	}());
	exports.NgbAccordionModule = NgbAccordionModule;
	//# sourceMappingURL=accordion.module.js.map

/***/ },
/* 3 */
/***/ function(module, exports) {

	module.exports = __WEBPACK_EXTERNAL_MODULE_3__;

/***/ },
/* 4 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var util_1 = __webpack_require__(5);
	var accordion_config_1 = __webpack_require__(6);
	var nextId = 0;
	/**
	 * This directive should be used to wrap accordion panel titles that need to contain HTML markup or other directives.
	 */
	var NgbPanelTitle = (function () {
	    function NgbPanelTitle(templateRef) {
	        this.templateRef = templateRef;
	    }
	    NgbPanelTitle = __decorate([
	        core_1.Directive({ selector: 'template[ngbPanelTitle]' }), 
	        __metadata('design:paramtypes', [core_1.TemplateRef])
	    ], NgbPanelTitle);
	    return NgbPanelTitle;
	}());
	exports.NgbPanelTitle = NgbPanelTitle;
	/**
	 * This directive must be used to wrap accordion panel content.
	 */
	var NgbPanelContent = (function () {
	    function NgbPanelContent(templateRef) {
	        this.templateRef = templateRef;
	    }
	    NgbPanelContent = __decorate([
	        core_1.Directive({ selector: 'template[ngbPanelContent]' }), 
	        __metadata('design:paramtypes', [core_1.TemplateRef])
	    ], NgbPanelContent);
	    return NgbPanelContent;
	}());
	exports.NgbPanelContent = NgbPanelContent;
	/**
	 * The NgbPanel directive represents an in individual panel with the title and collapsible
	 * content
	 */
	var NgbPanel = (function () {
	    function NgbPanel() {
	        /**
	         *  A flag determining whether the panel is disabled or not.
	         *  When disabled, the panel cannot be toggled.
	         */
	        this.disabled = false;
	        /**
	         *  An optional id for the panel. The id should be unique.
	         *  If not provided, it will be auto-generated.
	         */
	        this.id = "ngb-panel-" + nextId++;
	    }
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbPanel.prototype, "disabled", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbPanel.prototype, "id", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbPanel.prototype, "title", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbPanel.prototype, "type", void 0);
	    __decorate([
	        core_1.ContentChild(NgbPanelContent), 
	        __metadata('design:type', NgbPanelContent)
	    ], NgbPanel.prototype, "contentTpl", void 0);
	    __decorate([
	        core_1.ContentChild(NgbPanelTitle), 
	        __metadata('design:type', NgbPanelTitle)
	    ], NgbPanel.prototype, "titleTpl", void 0);
	    NgbPanel = __decorate([
	        core_1.Directive({ selector: 'ngb-panel' }), 
	        __metadata('design:paramtypes', [])
	    ], NgbPanel);
	    return NgbPanel;
	}());
	exports.NgbPanel = NgbPanel;
	/**
	 * The NgbAccordion directive is a collection of panels.
	 * It can assure that only panel can be opened at a time.
	 */
	var NgbAccordion = (function () {
	    function NgbAccordion(config) {
	        /**
	         * An array or comma separated strings of panel identifiers that should be opened
	         */
	        this.activeIds = [];
	        /**
	         * A panel change event fired right before the panel toggle happens. See NgbPanelChangeEvent for payload details
	         */
	        this.panelChange = new core_1.EventEmitter();
	        /**
	         * A map that stores each panel state
	         */
	        this._states = new Map();
	        /**
	         * A map that stores references to all panels
	         */
	        this._panelRefs = new Map();
	        this.type = config.type;
	        this.closeOtherPanels = config.closeOthers;
	    }
	    /**
	     * Programmatically toggle a panel with a given id.
	     */
	    NgbAccordion.prototype.toggle = function (panelId) {
	        var panel = this._panelRefs.get(panelId);
	        if (panel && !panel.disabled) {
	            var nextState = !this._states.get(panelId);
	            var defaultPrevented_1 = false;
	            this.panelChange.emit({ panelId: panelId, nextState: nextState, preventDefault: function () { defaultPrevented_1 = true; } });
	            if (!defaultPrevented_1) {
	                this._states.set(panelId, nextState);
	                if (this.closeOtherPanels) {
	                    this._closeOthers(panelId);
	                }
	                this._updateActiveIds();
	            }
	        }
	    };
	    NgbAccordion.prototype.ngAfterContentChecked = function () {
	        // active id updates
	        if (util_1.isString(this.activeIds)) {
	            this.activeIds = this.activeIds.split(/\s*,\s*/);
	        }
	        this._updateStates();
	        // closeOthers updates
	        if (this.activeIds.length > 1 && this.closeOtherPanels) {
	            this._closeOthers(this.activeIds[0]);
	            this._updateActiveIds();
	        }
	    };
	    /**
	     * @internal
	     */
	    NgbAccordion.prototype.isOpen = function (panelId) { return this._states.get(panelId); };
	    NgbAccordion.prototype._closeOthers = function (panelId) {
	        var _this = this;
	        this._states.forEach(function (state, id) {
	            if (id !== panelId) {
	                _this._states.set(id, false);
	            }
	        });
	    };
	    NgbAccordion.prototype._updateActiveIds = function () {
	        var _this = this;
	        this.activeIds =
	            this.panels.toArray().filter(function (panel) { return _this.isOpen(panel.id) && !panel.disabled; }).map(function (panel) { return panel.id; });
	    };
	    NgbAccordion.prototype._updateStates = function () {
	        var _this = this;
	        this._states.clear();
	        this._panelRefs.clear();
	        this.panels.toArray().forEach(function (panel) {
	            _this._states.set(panel.id, _this.activeIds.indexOf(panel.id) > -1 && !panel.disabled);
	            _this._panelRefs.set(panel.id, panel);
	        });
	    };
	    __decorate([
	        core_1.ContentChildren(NgbPanel), 
	        __metadata('design:type', core_1.QueryList)
	    ], NgbAccordion.prototype, "panels", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbAccordion.prototype, "activeIds", void 0);
	    __decorate([
	        core_1.Input('closeOthers'), 
	        __metadata('design:type', Boolean)
	    ], NgbAccordion.prototype, "closeOtherPanels", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbAccordion.prototype, "type", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbAccordion.prototype, "panelChange", void 0);
	    NgbAccordion = __decorate([
	        core_1.Component({
	            selector: 'ngb-accordion',
	            exportAs: 'ngbAccordion',
	            template: "\n  <div class=\"card\">\n    <template ngFor let-panel [ngForOf]=\"panels\">\n      <div [class]=\"'card-header ' + (panel.type ? 'card-'+panel.type: type ? 'card-'+type : '')\" [class.active]=\"isOpen(panel.id)\">\n        <a href (click)=\"!!toggle(panel.id)\" [class.text-muted]=\"panel.disabled\">\n          {{panel.title}}<template [ngTemplateOutlet]=\"panel.titleTpl?.templateRef\"></template>\n        </a>\n      </div>\n      <div class=\"card-block\" *ngIf=\"isOpen(panel.id)\">\n        <template [ngTemplateOutlet]=\"panel.contentTpl.templateRef\"></template>\n      </div>\n    </template>\n  </div>\n"
	        }), 
	        __metadata('design:paramtypes', [accordion_config_1.NgbAccordionConfig])
	    ], NgbAccordion);
	    return NgbAccordion;
	}());
	exports.NgbAccordion = NgbAccordion;
	exports.NGB_ACCORDION_DIRECTIVES = [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent];
	//# sourceMappingURL=accordion.js.map

/***/ },
/* 5 */
/***/ function(module, exports) {

	"use strict";
	function toInteger(value) {
	    return parseInt("" + value, 10);
	}
	exports.toInteger = toInteger;
	function toString(value) {
	    return (value !== undefined && value !== null) ? "" + value : '';
	}
	exports.toString = toString;
	function getValueInRange(value, max, min) {
	    if (min === void 0) { min = 0; }
	    return Math.max(Math.min(value, max), min);
	}
	exports.getValueInRange = getValueInRange;
	function isString(value) {
	    return typeof value === 'string';
	}
	exports.isString = isString;
	function isNumber(value) {
	    return !isNaN(toInteger(value));
	}
	exports.isNumber = isNumber;
	function isDefined(value) {
	    return value !== undefined && value !== null;
	}
	exports.isDefined = isDefined;
	function padNumber(value) {
	    if (isNumber(value)) {
	        return ("0" + value).slice(-2);
	    }
	    else {
	        return '';
	    }
	}
	exports.padNumber = padNumber;
	function regExpEscape(text) {
	    return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
	}
	exports.regExpEscape = regExpEscape;
	//# sourceMappingURL=util.js.map

/***/ },
/* 6 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbAccordion component.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the accordions used in the application.
	 */
	var NgbAccordionConfig = (function () {
	    function NgbAccordionConfig() {
	        this.closeOthers = false;
	    }
	    NgbAccordionConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbAccordionConfig);
	    return NgbAccordionConfig;
	}());
	exports.NgbAccordionConfig = NgbAccordionConfig;
	//# sourceMappingURL=accordion-config.js.map

/***/ },
/* 7 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(3);
	var alert_1 = __webpack_require__(8);
	var alert_config_1 = __webpack_require__(9);
	var alert_2 = __webpack_require__(8);
	exports.NgbAlert = alert_2.NgbAlert;
	var alert_config_2 = __webpack_require__(9);
	exports.NgbAlertConfig = alert_config_2.NgbAlertConfig;
	var NgbAlertModule = (function () {
	    function NgbAlertModule() {
	    }
	    NgbAlertModule.forRoot = function () { return { ngModule: NgbAlertModule, providers: [alert_config_1.NgbAlertConfig] }; };
	    NgbAlertModule = __decorate([
	        core_1.NgModule({ declarations: [alert_1.NgbAlert], exports: [alert_1.NgbAlert], imports: [common_1.CommonModule], entryComponents: [alert_1.NgbAlert] }), 
	        __metadata('design:paramtypes', [])
	    ], NgbAlertModule);
	    return NgbAlertModule;
	}());
	exports.NgbAlertModule = NgbAlertModule;
	//# sourceMappingURL=alert.module.js.map

/***/ },
/* 8 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var alert_config_1 = __webpack_require__(9);
	/**
	 * Alerts can be used to provide feedback messages.
	 */
	var NgbAlert = (function () {
	    function NgbAlert(config) {
	        /**
	         * An event emitted when the close button is clicked. This event has no payload. Only relevant for dismissible alerts.
	         */
	        this.close = new core_1.EventEmitter();
	        this.dismissible = config.dismissible;
	        this.type = config.type;
	    }
	    NgbAlert.prototype.closeHandler = function () { this.close.emit(null); };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbAlert.prototype, "dismissible", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbAlert.prototype, "type", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbAlert.prototype, "close", void 0);
	    NgbAlert = __decorate([
	        core_1.Component({
	            selector: 'ngb-alert',
	            changeDetection: core_1.ChangeDetectionStrategy.OnPush,
	            template: "\n    <div [class]=\"'alert alert-' + type\" role=\"alert\">\n      <button *ngIf=\"dismissible\" type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"closeHandler()\">\n            <span aria-hidden=\"true\">&times;</span>\n      </button>\n      <ng-content></ng-content>\n    </div>\n    "
	        }), 
	        __metadata('design:paramtypes', [alert_config_1.NgbAlertConfig])
	    ], NgbAlert);
	    return NgbAlert;
	}());
	exports.NgbAlert = NgbAlert;
	//# sourceMappingURL=alert.js.map

/***/ },
/* 9 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbAlert component.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the alerts used in the application.
	 */
	var NgbAlertConfig = (function () {
	    function NgbAlertConfig() {
	        this.dismissible = true;
	        this.type = 'warning';
	    }
	    NgbAlertConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbAlertConfig);
	    return NgbAlertConfig;
	}());
	exports.NgbAlertConfig = NgbAlertConfig;
	//# sourceMappingURL=alert-config.js.map

/***/ },
/* 10 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var radio_1 = __webpack_require__(11);
	var NgbButtonsModule = (function () {
	    function NgbButtonsModule() {
	    }
	    NgbButtonsModule.forRoot = function () { return { ngModule: NgbButtonsModule, providers: [] }; };
	    NgbButtonsModule = __decorate([
	        core_1.NgModule({ declarations: radio_1.NGB_RADIO_DIRECTIVES, exports: radio_1.NGB_RADIO_DIRECTIVES }), 
	        __metadata('design:paramtypes', [])
	    ], NgbButtonsModule);
	    return NgbButtonsModule;
	}());
	exports.NgbButtonsModule = NgbButtonsModule;
	//# sourceMappingURL=radio.module.js.map

/***/ },
/* 11 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var forms_1 = __webpack_require__(12);
	var NGB_RADIO_VALUE_ACCESSOR = {
	    provide: forms_1.NG_VALUE_ACCESSOR,
	    useExisting: core_1.forwardRef(function () { return NgbRadioGroup; }),
	    multi: true
	};
	/**
	 * Easily create Bootstrap-style radio buttons. A value of a selected button is bound to a variable
	 * specified via ngModel.
	 */
	var NgbRadioGroup = (function () {
	    function NgbRadioGroup() {
	        this._radios = new Set();
	        this._value = null;
	        this.onChange = function (_) { };
	        this.onTouched = function () { };
	    }
	    NgbRadioGroup.prototype.onRadioChange = function (radio) {
	        this.writeValue(radio.value);
	        this.onChange(radio.value);
	    };
	    NgbRadioGroup.prototype.onRadioValueUpdate = function () { this._updateRadios(); };
	    NgbRadioGroup.prototype.register = function (radio) { this._radios.add(radio); };
	    NgbRadioGroup.prototype.registerOnChange = function (fn) { this.onChange = fn; };
	    NgbRadioGroup.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };
	    NgbRadioGroup.prototype.setDisabledState = function (isDisabled) {
	        this._disabled = isDisabled;
	        this._updateRadios();
	    };
	    NgbRadioGroup.prototype.unregister = function (radio) { this._radios.delete(radio); };
	    NgbRadioGroup.prototype.writeValue = function (value) {
	        this._value = value;
	        this._updateRadios();
	    };
	    NgbRadioGroup.prototype._updateRadios = function () {
	        var _this = this;
	        this._radios.forEach(function (radio) { return radio.update(_this._value, _this._disabled); });
	    };
	    NgbRadioGroup = __decorate([
	        core_1.Directive({
	            selector: '[ngbRadioGroup]',
	            host: { 'data-toggle': 'buttons', 'class': 'btn-group' },
	            providers: [NGB_RADIO_VALUE_ACCESSOR]
	        }), 
	        __metadata('design:paramtypes', [])
	    ], NgbRadioGroup);
	    return NgbRadioGroup;
	}());
	exports.NgbRadioGroup = NgbRadioGroup;
	var NgbActiveLabel = (function () {
	    function NgbActiveLabel(_renderer, _elRef) {
	        this._renderer = _renderer;
	        this._elRef = _elRef;
	    }
	    Object.defineProperty(NgbActiveLabel.prototype, "active", {
	        set: function (isActive) { this._renderer.setElementClass(this._elRef.nativeElement, 'active', isActive); },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(NgbActiveLabel.prototype, "disabled", {
	        set: function (isDisabled) {
	            this._renderer.setElementClass(this._elRef.nativeElement, 'disabled', isDisabled);
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(NgbActiveLabel.prototype, "focused", {
	        set: function (isFocused) { this._renderer.setElementClass(this._elRef.nativeElement, 'focus', isFocused); },
	        enumerable: true,
	        configurable: true
	    });
	    NgbActiveLabel = __decorate([
	        core_1.Directive({ selector: 'label.btn' }), 
	        __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])
	    ], NgbActiveLabel);
	    return NgbActiveLabel;
	}());
	exports.NgbActiveLabel = NgbActiveLabel;
	/**
	 * Marks an input of type "radio" as part of the NgbRadioGroup.
	 */
	var NgbRadio = (function () {
	    function NgbRadio(_group, _label, _renderer, _element) {
	        this._group = _group;
	        this._label = _label;
	        this._renderer = _renderer;
	        this._element = _element;
	        this._value = null;
	        if (this._group) {
	            this._group.register(this);
	        }
	    }
	    Object.defineProperty(NgbRadio.prototype, "value", {
	        get: function () { return this._value; },
	        /**
	         * You can specify model value of a given radio by binding to the value property.
	        */
	        set: function (value) {
	            this._value = value;
	            var stringValue = value ? value.toString() : '';
	            this._renderer.setElementProperty(this._element.nativeElement, 'value', stringValue);
	            if (this._group) {
	                this._group.onRadioValueUpdate();
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(NgbRadio.prototype, "checked", {
	        get: function () { return this._checked; },
	        set: function (value) {
	            this._checked = this._element.nativeElement.hasAttribute('checked') ? true : value;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(NgbRadio.prototype, "disabled", {
	        get: function () { return this._disabled; },
	        set: function (value) {
	            this._disabled = this._element.nativeElement.hasAttribute('disabled') ? true : value;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(NgbRadio.prototype, "focused", {
	        set: function (isFocused) {
	            if (this._label) {
	                this._label.focused = isFocused;
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    NgbRadio.prototype.ngOnDestroy = function () {
	        if (this._group) {
	            this._group.unregister(this);
	        }
	    };
	    NgbRadio.prototype.onChange = function () {
	        if (this._group) {
	            this._group.onRadioChange(this);
	        }
	    };
	    NgbRadio.prototype.update = function (value, isDisabled) {
	        this._checked = (this.value === value && value !== null);
	        this._disabled = isDisabled;
	        this._label.active = this._checked;
	        this._label.disabled = this._disabled;
	    };
	    __decorate([
	        core_1.Input('value'), 
	        __metadata('design:type', Object), 
	        __metadata('design:paramtypes', [Object])
	    ], NgbRadio.prototype, "value", null);
	    __decorate([
	        core_1.Input('checked'), 
	        __metadata('design:type', Object), 
	        __metadata('design:paramtypes', [Object])
	    ], NgbRadio.prototype, "checked", null);
	    __decorate([
	        core_1.Input('disabled'), 
	        __metadata('design:type', Object), 
	        __metadata('design:paramtypes', [Object])
	    ], NgbRadio.prototype, "disabled", null);
	    NgbRadio = __decorate([
	        core_1.Directive({
	            selector: 'input[type=radio]',
	            host: {
	                '[checked]': 'checked',
	                '[disabled]': 'disabled',
	                '(change)': 'onChange()',
	                '(focus)': 'focused = true',
	                '(blur)': 'focused = false'
	            }
	        }),
	        __param(0, core_1.Optional()),
	        __param(1, core_1.Optional()), 
	        __metadata('design:paramtypes', [NgbRadioGroup, NgbActiveLabel, core_1.Renderer, core_1.ElementRef])
	    ], NgbRadio);
	    return NgbRadio;
	}());
	exports.NgbRadio = NgbRadio;
	exports.NGB_RADIO_DIRECTIVES = [NgbRadio, NgbActiveLabel, NgbRadioGroup];
	//# sourceMappingURL=radio.js.map

/***/ },
/* 12 */
/***/ function(module, exports) {

	module.exports = __WEBPACK_EXTERNAL_MODULE_12__;

/***/ },
/* 13 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(3);
	var carousel_1 = __webpack_require__(14);
	var carousel_config_1 = __webpack_require__(15);
	var carousel_2 = __webpack_require__(14);
	exports.NgbCarousel = carousel_2.NgbCarousel;
	exports.NgbSlide = carousel_2.NgbSlide;
	var carousel_config_2 = __webpack_require__(15);
	exports.NgbCarouselConfig = carousel_config_2.NgbCarouselConfig;
	var NgbCarouselModule = (function () {
	    function NgbCarouselModule() {
	    }
	    NgbCarouselModule.forRoot = function () { return { ngModule: NgbCarouselModule, providers: [carousel_config_1.NgbCarouselConfig] }; };
	    NgbCarouselModule = __decorate([
	        core_1.NgModule({ declarations: carousel_1.NGB_CAROUSEL_DIRECTIVES, exports: carousel_1.NGB_CAROUSEL_DIRECTIVES, imports: [common_1.CommonModule] }), 
	        __metadata('design:paramtypes', [])
	    ], NgbCarouselModule);
	    return NgbCarouselModule;
	}());
	exports.NgbCarouselModule = NgbCarouselModule;
	//# sourceMappingURL=carousel.module.js.map

/***/ },
/* 14 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var carousel_config_1 = __webpack_require__(15);
	var nextId = 0;
	/**
	 * Represents an individual slide to be used within a carousel.
	 */
	var NgbSlide = (function () {
	    function NgbSlide(tplRef) {
	        this.tplRef = tplRef;
	        /**
	         * Unique slide identifier. Must be unique for the entire document for proper accessibility support.
	         * Will be auto-generated if not provided.
	         */
	        this.id = "ngb-slide-" + nextId++;
	    }
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbSlide.prototype, "id", void 0);
	    NgbSlide = __decorate([
	        core_1.Directive({ selector: 'template[ngbSlide]' }), 
	        __metadata('design:paramtypes', [core_1.TemplateRef])
	    ], NgbSlide);
	    return NgbSlide;
	}());
	exports.NgbSlide = NgbSlide;
	/**
	 * Directive to easily create carousels based on Bootstrap's markup.
	 */
	var NgbCarousel = (function () {
	    function NgbCarousel(config) {
	        this.interval = config.interval;
	        this.wrap = config.wrap;
	        this.keyboard = config.keyboard;
	    }
	    NgbCarousel.prototype.ngAfterContentChecked = function () {
	        var activeSlide = this._getSlideById(this.activeId);
	        this.activeId = activeSlide ? activeSlide.id : (this.slides.length ? this.slides.first.id : null);
	    };
	    NgbCarousel.prototype.ngOnInit = function () { this._startTimer(); };
	    NgbCarousel.prototype.ngOnDestroy = function () { clearInterval(this._slideChangeInterval); };
	    /**
	     * Navigate to a slide with the specified identifier.
	     */
	    NgbCarousel.prototype.select = function (slideId) {
	        this.cycleToSelected(slideId);
	        this._restartTimer();
	    };
	    /**
	     * Navigate to the next slide.
	     */
	    NgbCarousel.prototype.prev = function () {
	        this.cycleToPrev();
	        this._restartTimer();
	    };
	    /**
	     * Navigate to the next slide.
	     */
	    NgbCarousel.prototype.next = function () {
	        this.cycleToNext();
	        this._restartTimer();
	    };
	    /**
	     * Stops the carousel from cycling through items.
	     */
	    NgbCarousel.prototype.pause = function () { this._stopTimer(); };
	    /**
	     * Restarts cycling through the carousel slides from left to right.
	     */
	    NgbCarousel.prototype.cycle = function () { this._startTimer(); };
	    NgbCarousel.prototype.cycleToNext = function () { this.cycleToSelected(this._getNextSlide(this.activeId)); };
	    NgbCarousel.prototype.cycleToPrev = function () { this.cycleToSelected(this._getPrevSlide(this.activeId)); };
	    NgbCarousel.prototype.cycleToSelected = function (slideIdx) {
	        var selectedSlide = this._getSlideById(slideIdx);
	        if (selectedSlide) {
	            this.activeId = selectedSlide.id;
	        }
	    };
	    NgbCarousel.prototype.keyPrev = function () {
	        if (this.keyboard) {
	            this.prev();
	        }
	    };
	    NgbCarousel.prototype.keyNext = function () {
	        if (this.keyboard) {
	            this.next();
	        }
	    };
	    NgbCarousel.prototype._restartTimer = function () {
	        this._stopTimer();
	        this._startTimer();
	    };
	    NgbCarousel.prototype._startTimer = function () {
	        var _this = this;
	        if (this.interval > 0) {
	            this._slideChangeInterval = setInterval(function () { _this.cycleToNext(); }, this.interval);
	        }
	    };
	    NgbCarousel.prototype._stopTimer = function () { clearInterval(this._slideChangeInterval); };
	    NgbCarousel.prototype._getSlideById = function (slideId) {
	        var slideWithId = this.slides.filter(function (slide) { return slide.id === slideId; });
	        return slideWithId.length ? slideWithId[0] : null;
	    };
	    NgbCarousel.prototype._getSlideIdxById = function (slideId) {
	        return this.slides.toArray().indexOf(this._getSlideById(slideId));
	    };
	    NgbCarousel.prototype._getNextSlide = function (currentSlideId) {
	        var slideArr = this.slides.toArray();
	        var currentSlideIdx = this._getSlideIdxById(currentSlideId);
	        var isLastSlide = currentSlideIdx === slideArr.length - 1;
	        return isLastSlide ? (this.wrap ? slideArr[0].id : slideArr[slideArr.length - 1].id) :
	            slideArr[currentSlideIdx + 1].id;
	    };
	    NgbCarousel.prototype._getPrevSlide = function (currentSlideId) {
	        var slideArr = this.slides.toArray();
	        var currentSlideIdx = this._getSlideIdxById(currentSlideId);
	        var isFirstSlide = currentSlideIdx === 0;
	        return isFirstSlide ? (this.wrap ? slideArr[slideArr.length - 1].id : slideArr[0].id) :
	            slideArr[currentSlideIdx - 1].id;
	    };
	    __decorate([
	        core_1.ContentChildren(NgbSlide), 
	        __metadata('design:type', core_1.QueryList)
	    ], NgbCarousel.prototype, "slides", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbCarousel.prototype, "interval", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbCarousel.prototype, "wrap", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbCarousel.prototype, "keyboard", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbCarousel.prototype, "activeId", void 0);
	    NgbCarousel = __decorate([
	        core_1.Component({
	            selector: 'ngb-carousel',
	            exportAs: 'ngbCarousel',
	            host: {
	                'class': 'carousel slide',
	                '[style.display]': '"block"',
	                'tabIndex': '0',
	                '(mouseenter)': 'pause()',
	                '(mouseleave)': 'cycle()',
	                '(keyup.arrowLeft)': 'keyPrev()',
	                '(keyup.arrowRight)': 'keyNext()'
	            },
	            template: "\n    <ol class=\"carousel-indicators\">\n      <li *ngFor=\"let slide of slides\" [id]=\"slide.id\" [class.active]=\"slide.id === activeId\" (click)=\"cycleToSelected(slide.id)\"></li>\n    </ol>\n    <div class=\"carousel-inner\" role=\"listbox\">\n      <div *ngFor=\"let slide of slides\" class=\"carousel-item\" [class.active]=\"slide.id === activeId\">\n        <template [ngTemplateOutlet]=\"slide.tplRef\"></template>\n      </div>\n    </div>\n    <a class=\"left carousel-control\" role=\"button\" (click)=\"cycleToPrev()\">\n      <span class=\"icon-prev\" aria-hidden=\"true\"></span>\n      <span class=\"sr-only\">Previous</span>\n    </a>\n    <a class=\"right carousel-control\" role=\"button\" (click)=\"cycleToNext()\">\n      <span class=\"icon-next\" aria-hidden=\"true\"></span>\n      <span class=\"sr-only\">Next</span>\n    </a>\n    "
	        }), 
	        __metadata('design:paramtypes', [carousel_config_1.NgbCarouselConfig])
	    ], NgbCarousel);
	    return NgbCarousel;
	}());
	exports.NgbCarousel = NgbCarousel;
	exports.NGB_CAROUSEL_DIRECTIVES = [NgbCarousel, NgbSlide];
	//# sourceMappingURL=carousel.js.map

/***/ },
/* 15 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbCarousel component.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the carousels used in the application.
	 */
	var NgbCarouselConfig = (function () {
	    function NgbCarouselConfig() {
	        this.interval = 5000;
	        this.wrap = true;
	        this.keyboard = true;
	    }
	    NgbCarouselConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbCarouselConfig);
	    return NgbCarouselConfig;
	}());
	exports.NgbCarouselConfig = NgbCarouselConfig;
	//# sourceMappingURL=carousel-config.js.map

/***/ },
/* 16 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var collapse_1 = __webpack_require__(17);
	var NgbCollapseModule = (function () {
	    function NgbCollapseModule() {
	    }
	    NgbCollapseModule.forRoot = function () { return { ngModule: NgbCollapseModule, providers: [] }; };
	    NgbCollapseModule = __decorate([
	        core_1.NgModule({ declarations: collapse_1.NGB_COLLAPSE_DIRECTIVES, exports: collapse_1.NGB_COLLAPSE_DIRECTIVES }), 
	        __metadata('design:paramtypes', [])
	    ], NgbCollapseModule);
	    return NgbCollapseModule;
	}());
	exports.NgbCollapseModule = NgbCollapseModule;
	//# sourceMappingURL=collapse.module.js.map

/***/ },
/* 17 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * The NgbCollapse directive provides a simple way to hide and show an element with animations.
	 */
	var NgbCollapse = (function () {
	    function NgbCollapse() {
	        /**
	         * A flag indicating collapsed (true) or open (false) state.
	         */
	        this.collapsed = false;
	    }
	    __decorate([
	        core_1.Input('ngbCollapse'), 
	        __metadata('design:type', Object)
	    ], NgbCollapse.prototype, "collapsed", void 0);
	    NgbCollapse = __decorate([
	        core_1.Directive({
	            selector: '[ngbCollapse]',
	            exportAs: 'ngbCollapse',
	            host: { '[class.collapse]': 'true', '[class.in]': '!collapsed', '[attr.aria-expanded]': '!collapsed' }
	        }), 
	        __metadata('design:paramtypes', [])
	    ], NgbCollapse);
	    return NgbCollapse;
	}());
	exports.NgbCollapse = NgbCollapse;
	exports.NGB_COLLAPSE_DIRECTIVES = [NgbCollapse];
	//# sourceMappingURL=collapse.js.map

/***/ },
/* 18 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(3);
	var datepicker_1 = __webpack_require__(19);
	var datepicker_month_view_1 = __webpack_require__(25);
	var datepicker_navigation_1 = __webpack_require__(27);
	var datepicker_input_1 = __webpack_require__(28);
	var forms_1 = __webpack_require__(12);
	var datepicker_day_view_1 = __webpack_require__(31);
	var datepicker_i18n_1 = __webpack_require__(26);
	var ngb_calendar_1 = __webpack_require__(20);
	var ngb_date_parser_formatter_1 = __webpack_require__(29);
	var datepicker_service_1 = __webpack_require__(22);
	var datepicker_navigation_select_1 = __webpack_require__(32);
	var datepicker_config_1 = __webpack_require__(24);
	var datepicker_2 = __webpack_require__(19);
	exports.NgbDatepicker = datepicker_2.NgbDatepicker;
	var datepicker_month_view_2 = __webpack_require__(25);
	exports.NgbDatepickerMonthView = datepicker_month_view_2.NgbDatepickerMonthView;
	var datepicker_day_view_2 = __webpack_require__(31);
	exports.NgbDatepickerDayView = datepicker_day_view_2.NgbDatepickerDayView;
	var datepicker_navigation_2 = __webpack_require__(27);
	exports.NgbDatepickerNavigation = datepicker_navigation_2.NgbDatepickerNavigation;
	var datepicker_navigation_select_2 = __webpack_require__(32);
	exports.NgbDatepickerNavigationSelect = datepicker_navigation_select_2.NgbDatepickerNavigationSelect;
	var datepicker_config_2 = __webpack_require__(24);
	exports.NgbDatepickerConfig = datepicker_config_2.NgbDatepickerConfig;
	var datepicker_i18n_2 = __webpack_require__(26);
	exports.NgbDatepickerI18n = datepicker_i18n_2.NgbDatepickerI18n;
	var ngb_date_parser_formatter_2 = __webpack_require__(29);
	exports.NgbDateParserFormatter = ngb_date_parser_formatter_2.NgbDateParserFormatter;
	var NgbDatepickerModule = (function () {
	    function NgbDatepickerModule() {
	    }
	    NgbDatepickerModule.forRoot = function () {
	        return {
	            ngModule: NgbDatepickerModule,
	            providers: [
	                { provide: ngb_calendar_1.NgbCalendar, useClass: ngb_calendar_1.NgbCalendarGregorian },
	                { provide: datepicker_i18n_1.NgbDatepickerI18n, useClass: datepicker_i18n_1.NgbDatepickerI18nDefault },
	                { provide: ngb_date_parser_formatter_1.NgbDateParserFormatter, useClass: ngb_date_parser_formatter_1.NgbDateISOParserFormatter }, datepicker_service_1.NgbDatepickerService,
	                datepicker_config_1.NgbDatepickerConfig
	            ]
	        };
	    };
	    NgbDatepickerModule = __decorate([
	        core_1.NgModule({
	            declarations: [
	                datepicker_1.NgbDatepicker, datepicker_month_view_1.NgbDatepickerMonthView, datepicker_navigation_1.NgbDatepickerNavigation, datepicker_navigation_select_1.NgbDatepickerNavigationSelect, datepicker_day_view_1.NgbDatepickerDayView,
	                datepicker_input_1.NgbInputDatepicker
	            ],
	            exports: [datepicker_1.NgbDatepicker, datepicker_input_1.NgbInputDatepicker],
	            imports: [common_1.CommonModule, forms_1.FormsModule],
	            entryComponents: [datepicker_1.NgbDatepicker]
	        }), 
	        __metadata('design:paramtypes', [])
	    ], NgbDatepickerModule);
	    return NgbDatepickerModule;
	}());
	exports.NgbDatepickerModule = NgbDatepickerModule;
	//# sourceMappingURL=datepicker.module.js.map

/***/ },
/* 19 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var forms_1 = __webpack_require__(12);
	var ngb_calendar_1 = __webpack_require__(20);
	var ngb_date_1 = __webpack_require__(21);
	var datepicker_service_1 = __webpack_require__(22);
	var datepicker_view_model_1 = __webpack_require__(23);
	var util_1 = __webpack_require__(5);
	var datepicker_config_1 = __webpack_require__(24);
	var NGB_DATEPICKER_VALUE_ACCESSOR = {
	    provide: forms_1.NG_VALUE_ACCESSOR,
	    useExisting: core_1.forwardRef(function () { return NgbDatepicker; }),
	    multi: true
	};
	/**
	 * A lightweight and highly configurable datepicker directive
	 */
	var NgbDatepicker = (function () {
	    function NgbDatepicker(_service, _calendar, config) {
	        this._service = _service;
	        this._calendar = _calendar;
	        this.disabled = false;
	        this.onChange = function (_) { };
	        this.onTouched = function () { };
	        this.dayTemplate = config.dayTemplate;
	        this.firstDayOfWeek = config.firstDayOfWeek;
	        this.markDisabled = config.markDisabled;
	        this.minDate = config.minDate;
	        this.maxDate = config.maxDate;
	        this.outsideDays = config.outsideDays;
	        this.showNavigation = config.showNavigation;
	        this.showWeekdays = config.showWeekdays;
	        this.showWeekNumbers = config.showWeekNumbers;
	        this.startDate = config.startDate;
	    }
	    /**
	     * Navigates current view to provided date.
	     * With default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.
	     * If nothing provided calendar will open current month.
	     * Use 'startDate' input as an alternative
	     */
	    NgbDatepicker.prototype.navigateTo = function (date) {
	        this._setViewWithinLimits(date ? ngb_date_1.NgbDate.from(date) : this._calendar.getToday());
	        this._updateData();
	    };
	    NgbDatepicker.prototype.ngOnInit = function () {
	        this._setDates();
	        this.navigateTo(this.startDate);
	    };
	    NgbDatepicker.prototype.ngOnChanges = function () {
	        this._setDates();
	        this.navigateTo(this.startDate);
	    };
	    NgbDatepicker.prototype.onDateSelect = function (date) {
	        this._setViewWithinLimits(date);
	        this.onTouched();
	        this.writeValue(date);
	        this.onChange({ year: date.year, month: date.month, day: date.day });
	        // switch current month
	        if (this._date.month !== this.month.number) {
	            this._updateData();
	        }
	    };
	    NgbDatepicker.prototype.onNavigateDateSelect = function (date) {
	        this._setViewWithinLimits(date);
	        this._updateData();
	    };
	    NgbDatepicker.prototype.onNavigateEvent = function (event) {
	        switch (event) {
	            case datepicker_view_model_1.NavigationEvent.PREV:
	                this._setViewWithinLimits(this._calendar.getPrev(this._date, 'm'));
	                break;
	            case datepicker_view_model_1.NavigationEvent.NEXT:
	                this._setViewWithinLimits(this._calendar.getNext(this._date, 'm'));
	                break;
	        }
	        this._updateData();
	    };
	    NgbDatepicker.prototype.registerOnChange = function (fn) { this.onChange = fn; };
	    NgbDatepicker.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };
	    NgbDatepicker.prototype.writeValue = function (value) { this.model = value ? new ngb_date_1.NgbDate(value.year, value.month, value.day) : null; };
	    NgbDatepicker.prototype.setDisabledState = function (isDisabled) { this.disabled = isDisabled; };
	    NgbDatepicker.prototype._setDates = function () {
	        this._maxDate = ngb_date_1.NgbDate.from(this.maxDate);
	        this._minDate = ngb_date_1.NgbDate.from(this.minDate);
	        this._date = this.startDate ? ngb_date_1.NgbDate.from(this.startDate) : this._calendar.getToday();
	        if (!this._minDate) {
	            this._minDate = this._calendar.getPrev(this._date, 'y', 10);
	        }
	        if (!this._maxDate) {
	            this._maxDate = this._calendar.getNext(this._date, 'y', 11);
	            this._maxDate = this._calendar.getPrev(this._maxDate);
	        }
	        if (this._minDate && this._maxDate && this._maxDate.before(this._minDate)) {
	            throw new Error("'maxDate' " + this._maxDate + " should be greater than 'minDate' " + this._minDate);
	        }
	    };
	    NgbDatepicker.prototype._setViewWithinLimits = function (date) {
	        if (this._minDate && date.before(this._minDate)) {
	            this._date = new ngb_date_1.NgbDate(this._minDate.year, this._minDate.month, 1);
	        }
	        else if (this._maxDate && date.after(this._maxDate)) {
	            this._date = new ngb_date_1.NgbDate(this._maxDate.year, this._maxDate.month, 1);
	        }
	        else {
	            this._date = new ngb_date_1.NgbDate(date.year, date.month, 1);
	        }
	    };
	    NgbDatepicker.prototype._updateData = function () {
	        this.month = this._service.generateMonthViewModel(this._date, this._minDate, this._maxDate, util_1.toInteger(this.firstDayOfWeek), this.markDisabled);
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', core_1.TemplateRef)
	    ], NgbDatepicker.prototype, "dayTemplate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbDatepicker.prototype, "firstDayOfWeek", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Function)
	    ], NgbDatepicker.prototype, "markDisabled", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbDatepicker.prototype, "minDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbDatepicker.prototype, "maxDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbDatepicker.prototype, "outsideDays", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbDatepicker.prototype, "showNavigation", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbDatepicker.prototype, "showWeekdays", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbDatepicker.prototype, "showWeekNumbers", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbDatepicker.prototype, "startDate", void 0);
	    NgbDatepicker = __decorate([
	        core_1.Component({
	            exportAs: 'ngbDatepicker',
	            selector: 'ngb-datepicker',
	            template: "\n    <template #dt let-date=\"date\" let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\">\n       <div ngbDatepickerDayView [date]=\"date\" [currentMonth]=\"currentMonth\" [selected]=\"selected\" [disabled]=\"disabled\"></div>\n    </template>\n    \n    <table>\n      <tbody *ngIf=\"showNavigation\" ngbDatepickerNavigation\n        [date]=\"_date\"\n        [minDate]=\"_minDate\"\n        [maxDate]=\"_maxDate\"\n        [disabled]=\"disabled\"\n        [showWeekNumbers]=\"showWeekNumbers\"\n        (navigate)=\"onNavigateEvent($event)\"\n        (select)=\"onNavigateDateSelect($event)\">\n      </tbody>\n      \n      <tbody ngbDatepickerMonthView\n        [month]=\"month\"\n        [selectedDate]=\"model\"\n        [dayTemplate]=\"dayTemplate || dt\"\n        [showWeekdays]=\"showWeekdays\"\n        [showWeekNumbers]=\"showWeekNumbers\"\n        [disabled]=\"disabled\"\n        [outsideDays]=\"outsideDays\"\n        (select)=\"onDateSelect($event)\">\n      </tbody>\n    </table>\n  ",
	            providers: [NGB_DATEPICKER_VALUE_ACCESSOR]
	        }), 
	        __metadata('design:paramtypes', [datepicker_service_1.NgbDatepickerService, ngb_calendar_1.NgbCalendar, datepicker_config_1.NgbDatepickerConfig])
	    ], NgbDatepicker);
	    return NgbDatepicker;
	}());
	exports.NgbDatepicker = NgbDatepicker;
	//# sourceMappingURL=datepicker.js.map

/***/ },
/* 20 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var ngb_date_1 = __webpack_require__(21);
	var core_1 = __webpack_require__(1);
	function fromJSDate(jsDate) {
	    return new ngb_date_1.NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());
	}
	function toJSDate(date) {
	    return new Date(date.year, date.month - 1, date.day);
	}
	var NgbCalendar = (function () {
	    function NgbCalendar() {
	    }
	    NgbCalendar = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbCalendar);
	    return NgbCalendar;
	}());
	exports.NgbCalendar = NgbCalendar;
	var NgbCalendarGregorian = (function (_super) {
	    __extends(NgbCalendarGregorian, _super);
	    function NgbCalendarGregorian() {
	        _super.apply(this, arguments);
	    }
	    NgbCalendarGregorian.prototype.getDaysPerWeek = function () { return 7; };
	    NgbCalendarGregorian.prototype.getMonths = function () { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; };
	    NgbCalendarGregorian.prototype.getWeeksPerMonth = function () { return 6; };
	    NgbCalendarGregorian.prototype.getNext = function (date, period, number) {
	        if (period === void 0) { period = 'd'; }
	        if (number === void 0) { number = 1; }
	        var jsDate = toJSDate(date);
	        switch (period) {
	            case 'y':
	                return new ngb_date_1.NgbDate(date.year + number, 1, 1);
	            case 'm':
	                jsDate = new Date(date.year, date.month + number - 1, 1);
	                break;
	            case 'd':
	                jsDate.setDate(jsDate.getDate() + number);
	                break;
	            default:
	                return date;
	        }
	        return fromJSDate(jsDate);
	    };
	    NgbCalendarGregorian.prototype.getPrev = function (date, period, number) {
	        if (period === void 0) { period = 'd'; }
	        if (number === void 0) { number = 1; }
	        return this.getNext(date, period, -number);
	    };
	    NgbCalendarGregorian.prototype.getWeekday = function (date) {
	        var jsDate = toJSDate(date);
	        var day = jsDate.getDay();
	        // in JS Date Sun=0, in ISO 8601 Sun=7
	        return day === 0 ? 7 : day;
	    };
	    NgbCalendarGregorian.prototype.getWeekNumber = function (week, firstDayOfWeek) {
	        // in JS Date Sun=0, in ISO 8601 Sun=7
	        if (firstDayOfWeek === 7) {
	            firstDayOfWeek = 0;
	        }
	        var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;
	        var date = week[thursdayIndex];
	        var jsDate = toJSDate(date);
	        jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday
	        var time = jsDate.getTime();
	        jsDate.setMonth(0); // Compare with Jan 1
	        jsDate.setDate(1);
	        return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;
	    };
	    NgbCalendarGregorian.prototype.getToday = function () { return fromJSDate(new Date()); };
	    NgbCalendarGregorian = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbCalendarGregorian);
	    return NgbCalendarGregorian;
	}(NgbCalendar));
	exports.NgbCalendarGregorian = NgbCalendarGregorian;
	//# sourceMappingURL=ngb-calendar.js.map

/***/ },
/* 21 */
/***/ function(module, exports) {

	"use strict";
	var NgbDate = (function () {
	    function NgbDate(year, month, day) {
	        this.year = year;
	        this.month = month;
	        this.day = day;
	    }
	    NgbDate.from = function (date) {
	        return date ? new NgbDate(date.year, date.month, date.day ? date.day : 1) : null;
	    };
	    NgbDate.prototype.equals = function (other) {
	        return other && this.year === other.year && this.month === other.month && this.day === other.day;
	    };
	    NgbDate.prototype.before = function (other) {
	        if (!other) {
	            return false;
	        }
	        if (this.year === other.year) {
	            if (this.month === other.month) {
	                return this.day === other.day ? false : this.day < other.day;
	            }
	            else {
	                return this.month < other.month;
	            }
	        }
	        else {
	            return this.year < other.year;
	        }
	    };
	    NgbDate.prototype.after = function (other) {
	        if (!other) {
	            return false;
	        }
	        if (this.year === other.year) {
	            if (this.month === other.month) {
	                return this.day === other.day ? false : this.day > other.day;
	            }
	            else {
	                return this.month > other.month;
	            }
	        }
	        else {
	            return this.year > other.year;
	        }
	    };
	    NgbDate.prototype.toString = function () { return this.year + "-" + this.month + "-" + this.day; };
	    return NgbDate;
	}());
	exports.NgbDate = NgbDate;
	//# sourceMappingURL=ngb-date.js.map

/***/ },
/* 22 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var ngb_calendar_1 = __webpack_require__(20);
	var ngb_date_1 = __webpack_require__(21);
	var core_1 = __webpack_require__(1);
	var NgbDatepickerService = (function () {
	    function NgbDatepickerService(_calendar) {
	        this._calendar = _calendar;
	    }
	    NgbDatepickerService.prototype.generateMonthViewModel = function (date, minDate, maxDate, firstDayOfWeek, markDisabled) {
	        var month = { number: date.month, year: date.year, weeks: [], weekdays: [] };
	        date = this._getFirstViewDate(date, firstDayOfWeek);
	        // month has weeks
	        for (var w = 0; w < this._calendar.getWeeksPerMonth(); w++) {
	            var days = [];
	            // week has days
	            for (var d = 0; d < this._calendar.getDaysPerWeek(); d++) {
	                if (w === 0) {
	                    month.weekdays.push(this._calendar.getWeekday(date));
	                }
	                var newDate = new ngb_date_1.NgbDate(date.year, date.month, date.day);
	                var disabled = (minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate));
	                if (!disabled && markDisabled) {
	                    disabled = markDisabled(newDate, { month: month.number, year: month.year });
	                }
	                days.push({ date: newDate, disabled: disabled });
	                date = this._calendar.getNext(date);
	            }
	            month.weeks.push({ number: this._calendar.getWeekNumber(days.map(function (day) { return ngb_date_1.NgbDate.from(day.date); }), firstDayOfWeek), days: days });
	        }
	        return month;
	    };
	    NgbDatepickerService.prototype._getFirstViewDate = function (date, firstDayOfWeek) {
	        var _this = this;
	        var currentMonth = date.month;
	        var today = new ngb_date_1.NgbDate(date.year, date.month, date.day);
	        var yesterday = this._calendar.getPrev(today);
	        var firstDayOfCurrentMonthIsAlsoFirstDayOfWeek = function () { return today.month !== yesterday.month && firstDayOfWeek === _this._calendar.getWeekday(today); };
	        var reachedTheFirstDayOfTheLastWeekOfPreviousMonth = function () { return today.month !== currentMonth && firstDayOfWeek === _this._calendar.getWeekday(today); };
	        // going back in time
	        while (!reachedTheFirstDayOfTheLastWeekOfPreviousMonth() && !firstDayOfCurrentMonthIsAlsoFirstDayOfWeek()) {
	            today = new ngb_date_1.NgbDate(yesterday.year, yesterday.month, yesterday.day);
	            yesterday = this._calendar.getPrev(yesterday);
	        }
	        return today;
	    };
	    NgbDatepickerService = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [ngb_calendar_1.NgbCalendar])
	    ], NgbDatepickerService);
	    return NgbDatepickerService;
	}());
	exports.NgbDatepickerService = NgbDatepickerService;
	//# sourceMappingURL=datepicker-service.js.map

/***/ },
/* 23 */
/***/ function(module, exports) {

	"use strict";
	(function (NavigationEvent) {
	    NavigationEvent[NavigationEvent["PREV"] = 0] = "PREV";
	    NavigationEvent[NavigationEvent["NEXT"] = 1] = "NEXT";
	})(exports.NavigationEvent || (exports.NavigationEvent = {}));
	var NavigationEvent = exports.NavigationEvent;
	//# sourceMappingURL=datepicker-view-model.js.map

/***/ },
/* 24 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbDatepicker component.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the datepickers used in the application.
	 */
	var NgbDatepickerConfig = (function () {
	    function NgbDatepickerConfig() {
	        this.firstDayOfWeek = 1;
	        this.outsideDays = 'visible';
	        this.showNavigation = true;
	        this.showWeekdays = true;
	        this.showWeekNumbers = false;
	    }
	    NgbDatepickerConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbDatepickerConfig);
	    return NgbDatepickerConfig;
	}());
	exports.NgbDatepickerConfig = NgbDatepickerConfig;
	//# sourceMappingURL=datepicker-config.js.map

/***/ },
/* 25 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var ngb_date_1 = __webpack_require__(21);
	var datepicker_i18n_1 = __webpack_require__(26);
	var NgbDatepickerMonthView = (function () {
	    function NgbDatepickerMonthView(i18n) {
	        this.i18n = i18n;
	        this.select = new core_1.EventEmitter();
	    }
	    NgbDatepickerMonthView.prototype.doSelect = function (day) {
	        if (!this.isDisabled(day) && !this.isCollapsed(day) && !this.isHidden(day)) {
	            this.select.emit(ngb_date_1.NgbDate.from(day.date));
	        }
	    };
	    NgbDatepickerMonthView.prototype.isDisabled = function (day) { return this.disabled || day.disabled; };
	    NgbDatepickerMonthView.prototype.isSelected = function (date) { return this.selectedDate && this.selectedDate.equals(date); };
	    NgbDatepickerMonthView.prototype.isCollapsed = function (day) { return this.outsideDays === 'collapsed' && this.month.number !== day.date.month; };
	    NgbDatepickerMonthView.prototype.isHidden = function (day) { return this.outsideDays === 'hidden' && this.month.number !== day.date.month; };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', core_1.TemplateRef)
	    ], NgbDatepickerMonthView.prototype, "dayTemplate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbDatepickerMonthView.prototype, "disabled", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbDatepickerMonthView.prototype, "month", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbDatepickerMonthView.prototype, "outsideDays", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', ngb_date_1.NgbDate)
	    ], NgbDatepickerMonthView.prototype, "selectedDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbDatepickerMonthView.prototype, "showWeekdays", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbDatepickerMonthView.prototype, "showWeekNumbers", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbDatepickerMonthView.prototype, "select", void 0);
	    NgbDatepickerMonthView = __decorate([
	        core_1.Component({
	            selector: '[ngbDatepickerMonthView]',
	            styles: ["\n    .weekday {\n      padding-bottom: 0.25rem;\n    }\n    .weeknumber {    \n    }\n    .day {\n      padding: 0;\n      height: 100%;\n      cursor: pointer;\n    }\n    .day.disabled, .day.hidden, .day.collapsed {\n      cursor: default;\n    }\n    :host/deep/.day.collapsed > * {      \n      display: none;\n    }\n    :host/deep/.day.hidden > * {\n      visibility: hidden;\n    }    \n  "],
	            template: "\n    <tr *ngIf=\"showWeekdays\">\n      <td *ngIf=\"showWeekNumbers\"></td>\n      <td *ngFor=\"let w of month.weekdays\" class=\"weekday text-xs-center font-weight-bold\">{{ i18n.getWeekdayName(w) }}</td>\n    </tr>\n    <tr *ngFor=\"let week of month.weeks\">\n      <td *ngIf=\"showWeekNumbers\" class=\"weeknumber small text-xs-center\">{{ week.number }}</td>\n      <td *ngFor=\"let day of week.days\" (click)=\"doSelect(day)\" class=\"day\" [class.disabled]=\"isDisabled(day)\" \n      [class.collapsed]=\"isCollapsed(day)\" [class.hidden]=\"isHidden(day)\">\n          <template [ngTemplateOutlet]=\"dayTemplate\" \n          [ngOutletContext]=\"{date: {year: day.date.year, month: day.date.month, day: day.date.day}, \n            currentMonth: month.number, \n            disabled: isDisabled(day), \n            selected: isSelected(day.date)}\">\n          </template>\n      </td>\n    </tr>\n  "
	        }), 
	        __metadata('design:paramtypes', [datepicker_i18n_1.NgbDatepickerI18n])
	    ], NgbDatepickerMonthView);
	    return NgbDatepickerMonthView;
	}());
	exports.NgbDatepickerMonthView = NgbDatepickerMonthView;
	//# sourceMappingURL=datepicker-month-view.js.map

/***/ },
/* 26 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var WEEKDAYS = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
	var MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
	/**
	 * Type of the service supplying month and weekday names to to NgbDatepicker component.
	 * See the i18n demo for how to extend this class and define a custom provider for i18n.
	 */
	var NgbDatepickerI18n = (function () {
	    function NgbDatepickerI18n() {
	    }
	    NgbDatepickerI18n = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbDatepickerI18n);
	    return NgbDatepickerI18n;
	}());
	exports.NgbDatepickerI18n = NgbDatepickerI18n;
	var NgbDatepickerI18nDefault = (function (_super) {
	    __extends(NgbDatepickerI18nDefault, _super);
	    function NgbDatepickerI18nDefault() {
	        _super.apply(this, arguments);
	    }
	    NgbDatepickerI18nDefault.prototype.getWeekdayName = function (weekday) { return WEEKDAYS[weekday - 1]; };
	    NgbDatepickerI18nDefault.prototype.getMonthName = function (month) { return MONTHS[month - 1]; };
	    NgbDatepickerI18nDefault = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbDatepickerI18nDefault);
	    return NgbDatepickerI18nDefault;
	}(NgbDatepickerI18n));
	exports.NgbDatepickerI18nDefault = NgbDatepickerI18nDefault;
	//# sourceMappingURL=datepicker-i18n.js.map

/***/ },
/* 27 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var datepicker_view_model_1 = __webpack_require__(23);
	var ngb_date_1 = __webpack_require__(21);
	var datepicker_i18n_1 = __webpack_require__(26);
	var ngb_calendar_1 = __webpack_require__(20);
	var NgbDatepickerNavigation = (function () {
	    function NgbDatepickerNavigation(i18n, _calendar) {
	        this.i18n = i18n;
	        this._calendar = _calendar;
	        this.navigation = datepicker_view_model_1.NavigationEvent;
	        this.type = 'select';
	        this.navigate = new core_1.EventEmitter();
	        this.select = new core_1.EventEmitter();
	    }
	    NgbDatepickerNavigation.prototype.doNavigate = function (event) { this.navigate.emit(event); };
	    NgbDatepickerNavigation.prototype.nextDisabled = function () {
	        return this.disabled || (this.maxDate && this._calendar.getNext(this.date, 'm').after(this.maxDate));
	    };
	    NgbDatepickerNavigation.prototype.prevDisabled = function () {
	        return this.disabled || (this.minDate && this._calendar.getPrev(this.date, 'm').before(this.minDate));
	    };
	    NgbDatepickerNavigation.prototype.selectDate = function (date) { this.select.emit(date); };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', ngb_date_1.NgbDate)
	    ], NgbDatepickerNavigation.prototype, "date", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbDatepickerNavigation.prototype, "disabled", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', ngb_date_1.NgbDate)
	    ], NgbDatepickerNavigation.prototype, "maxDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', ngb_date_1.NgbDate)
	    ], NgbDatepickerNavigation.prototype, "minDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbDatepickerNavigation.prototype, "showWeekNumbers", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbDatepickerNavigation.prototype, "type", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbDatepickerNavigation.prototype, "navigate", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbDatepickerNavigation.prototype, "select", void 0);
	    NgbDatepickerNavigation = __decorate([
	        core_1.Component({
	            selector: '[ngbDatepickerNavigation]',
	            styles: ["\n    td {\n      text-align: center;\n      padding-bottom: 0.25rem;\n    }\n  "],
	            template: "\n    <tr>\n      <td>\n        <button type=\"button\" (click)=\"doNavigate(navigation.PREV)\" class=\"btn btn-sm btn-secondary btn-block\" \n          [disabled]=\"prevDisabled()\">&lt;</button>\n      </td>\n      <td [attr.colspan]=\"showWeekNumbers ? 6 : 5\">      \n        <ngb-datepicker-navigation-select *ngIf=\"type === 'select'\"\n          [date]=\"date\"\n          [minYear]=\"minDate.year\"\n          [maxYear]=\"maxDate.year\"\n          [disabled] = \"disabled\"\n          (select)=\"selectDate($event)\">\n        </ngb-datepicker-navigation-select>\n      </td>\n      <td>\n        <button type=\"button\" (click)=\"doNavigate(navigation.NEXT)\" class=\"btn btn-sm btn-secondary btn-block\" \n          [disabled]=\"nextDisabled()\">&gt;</button>\n      </td>\n    </tr>\n  "
	        }), 
	        __metadata('design:paramtypes', [datepicker_i18n_1.NgbDatepickerI18n, ngb_calendar_1.NgbCalendar])
	    ], NgbDatepickerNavigation);
	    return NgbDatepickerNavigation;
	}());
	exports.NgbDatepickerNavigation = NgbDatepickerNavigation;
	//# sourceMappingURL=datepicker-navigation.js.map

/***/ },
/* 28 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var forms_1 = __webpack_require__(12);
	var ngb_date_1 = __webpack_require__(21);
	var datepicker_1 = __webpack_require__(19);
	var ngb_date_parser_formatter_1 = __webpack_require__(29);
	var positioning_1 = __webpack_require__(30);
	var NGB_DATEPICKER_VALUE_ACCESSOR = {
	    provide: forms_1.NG_VALUE_ACCESSOR,
	    useExisting: core_1.forwardRef(function () { return NgbInputDatepicker; }),
	    multi: true
	};
	/**
	 * A directive that makes it possible to have datepickers on input fields.
	 * Manages integration with the input field itself (data entry) and ngModel (validation etc.).
	 */
	var NgbInputDatepicker = (function () {
	    function NgbInputDatepicker(_parserFormatter, _elRef, _vcRef, _renderer, _cfr, ngZone) {
	        var _this = this;
	        this._parserFormatter = _parserFormatter;
	        this._elRef = _elRef;
	        this._vcRef = _vcRef;
	        this._renderer = _renderer;
	        this._cfr = _cfr;
	        this._cRef = null;
	        this._onChange = function (_) { };
	        this._onTouched = function () { };
	        this._zoneSubscription = ngZone.onStable.subscribe(function () {
	            if (_this._cRef) {
	                positioning_1.positionElements(_this._elRef.nativeElement, _this._cRef.location.nativeElement, 'bottom-left');
	            }
	        });
	    }
	    NgbInputDatepicker.prototype.registerOnChange = function (fn) { this._onChange = fn; };
	    NgbInputDatepicker.prototype.registerOnTouched = function (fn) { this._onTouched = fn; };
	    NgbInputDatepicker.prototype.writeValue = function (value) {
	        this._model = value ? new ngb_date_1.NgbDate(value.year, value.month, value.day) : null;
	        this._writeModelValue(this._model);
	    };
	    NgbInputDatepicker.prototype.setDisabledState = function (isDisabled) {
	        this._renderer.setElementProperty(this._elRef.nativeElement, 'disabled', isDisabled);
	        if (this.isOpen()) {
	            this._cRef.instance.setDisabledState(isDisabled);
	        }
	    };
	    NgbInputDatepicker.prototype.manualDateChange = function (value) {
	        this._model = ngb_date_1.NgbDate.from(this._parserFormatter.parse(value));
	        this._onChange(this._model ? { year: this._model.year, month: this._model.month, day: this._model.day } : null);
	        this._writeModelValue(this._model);
	    };
	    NgbInputDatepicker.prototype.isOpen = function () { return !!this._cRef; };
	    /**
	     * Opens the datepicker with the selected date indicated by the ngModel value.
	     */
	    NgbInputDatepicker.prototype.open = function () {
	        var _this = this;
	        if (!this.isOpen()) {
	            var cf = this._cfr.resolveComponentFactory(datepicker_1.NgbDatepicker);
	            this._cRef = this._vcRef.createComponent(cf);
	            this._applyPopupStyling(this._cRef.location.nativeElement);
	            this._cRef.instance.writeValue(this._model);
	            this._applyDatepickerInputs(this._cRef.instance);
	            this._cRef.instance.ngOnInit();
	            // date selection event handling
	            this._cRef.instance.registerOnChange(function (selectedDate) {
	                _this.writeValue(selectedDate);
	                _this._onChange(selectedDate);
	                _this.close();
	            });
	        }
	    };
	    /**
	     * Closes the datepicker popup.
	     */
	    NgbInputDatepicker.prototype.close = function () {
	        if (this.isOpen()) {
	            this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));
	            this._cRef = null;
	        }
	    };
	    /**
	     * Toggles the datepicker popup (opens when closed and closes when opened).
	     */
	    NgbInputDatepicker.prototype.toggle = function () {
	        if (this.isOpen()) {
	            this.close();
	        }
	        else {
	            this.open();
	        }
	    };
	    /**
	     * Navigates current view to provided date.
	     * With default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.
	     * If nothing provided calendar will open current month.
	     * Use 'startDate' input as an alternative
	     */
	    NgbInputDatepicker.prototype.navigateTo = function (date) {
	        if (this.isOpen()) {
	            this._cRef.instance.navigateTo(date);
	        }
	    };
	    NgbInputDatepicker.prototype.onBlur = function () { this._onTouched(); };
	    NgbInputDatepicker.prototype._applyDatepickerInputs = function (datepickerInstance) {
	        var _this = this;
	        ['dayTemplate', 'firstDayOfWeek', 'markDisabled', 'minDate', 'maxDate', 'outsideDays', 'showNavigation',
	            'showWeekdays', 'showWeekNumbers']
	            .forEach(function (optionName) {
	            if (_this[optionName] !== undefined) {
	                datepickerInstance[optionName] = _this[optionName];
	            }
	        });
	        datepickerInstance.startDate = this.startDate || this._model;
	    };
	    NgbInputDatepicker.prototype._applyPopupStyling = function (nativeElement) {
	        this._renderer.setElementClass(nativeElement, 'dropdown-menu', true);
	        this._renderer.setElementStyle(nativeElement, 'display', 'block');
	        this._renderer.setElementStyle(nativeElement, 'padding', '0.40rem');
	    };
	    NgbInputDatepicker.prototype._writeModelValue = function (model) {
	        this._renderer.setElementProperty(this._elRef.nativeElement, 'value', this._parserFormatter.format(model));
	        if (this.isOpen()) {
	            this._cRef.instance.writeValue(model);
	            this._onTouched();
	        }
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', core_1.TemplateRef)
	    ], NgbInputDatepicker.prototype, "dayTemplate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbInputDatepicker.prototype, "firstDayOfWeek", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Function)
	    ], NgbInputDatepicker.prototype, "markDisabled", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbInputDatepicker.prototype, "minDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbInputDatepicker.prototype, "maxDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbInputDatepicker.prototype, "outsideDays", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbInputDatepicker.prototype, "showNavigation", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbInputDatepicker.prototype, "showWeekdays", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbInputDatepicker.prototype, "showWeekNumbers", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbInputDatepicker.prototype, "startDate", void 0);
	    NgbInputDatepicker = __decorate([
	        core_1.Directive({
	            selector: 'input[ngbDatepicker]',
	            exportAs: 'ngbDatepicker',
	            host: { '(change)': 'manualDateChange($event.target.value)', '(keyup.esc)': 'close()', '(blur)': 'onBlur()' },
	            providers: [NGB_DATEPICKER_VALUE_ACCESSOR]
	        }), 
	        __metadata('design:paramtypes', [ngb_date_parser_formatter_1.NgbDateParserFormatter, core_1.ElementRef, core_1.ViewContainerRef, core_1.Renderer, core_1.ComponentFactoryResolver, core_1.NgZone])
	    ], NgbInputDatepicker);
	    return NgbInputDatepicker;
	}());
	exports.NgbInputDatepicker = NgbInputDatepicker;
	//# sourceMappingURL=datepicker-input.js.map

/***/ },
/* 29 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var util_1 = __webpack_require__(5);
	/**
	 * Abstract type serving as a DI token for the service parsing and formatting dates for the NgbInputDatepicker
	 * directive. A default implementation using the ISO 8601 format is provided, but you can provide another implementation
	 * to use an alternative format.
	 */
	var NgbDateParserFormatter = (function () {
	    function NgbDateParserFormatter() {
	    }
	    return NgbDateParserFormatter;
	}());
	exports.NgbDateParserFormatter = NgbDateParserFormatter;
	var NgbDateISOParserFormatter = (function (_super) {
	    __extends(NgbDateISOParserFormatter, _super);
	    function NgbDateISOParserFormatter() {
	        _super.apply(this, arguments);
	    }
	    NgbDateISOParserFormatter.prototype.parse = function (value) {
	        if (value) {
	            var dateParts = value.trim().split('-');
	            if (dateParts.length === 1 && util_1.isNumber(dateParts[0])) {
	                return { year: util_1.toInteger(dateParts[0]), month: null, day: null };
	            }
	            else if (dateParts.length === 2 && util_1.isNumber(dateParts[0]) && util_1.isNumber(dateParts[1])) {
	                return { year: util_1.toInteger(dateParts[0]), month: util_1.toInteger(dateParts[1]), day: null };
	            }
	            else if (dateParts.length === 3 && util_1.isNumber(dateParts[0]) && util_1.isNumber(dateParts[1]) && util_1.isNumber(dateParts[2])) {
	                return { year: util_1.toInteger(dateParts[0]), month: util_1.toInteger(dateParts[1]), day: util_1.toInteger(dateParts[2]) };
	            }
	        }
	        return null;
	    };
	    NgbDateISOParserFormatter.prototype.format = function (date) {
	        return date ?
	            date.year + "-" + (util_1.isNumber(date.month) ? util_1.padNumber(date.month) : '') + "-" + (util_1.isNumber(date.day) ? util_1.padNumber(date.day) : '') :
	            '';
	    };
	    return NgbDateISOParserFormatter;
	}(NgbDateParserFormatter));
	exports.NgbDateISOParserFormatter = NgbDateISOParserFormatter;
	//# sourceMappingURL=ngb-date-parser-formatter.js.map

/***/ },
/* 30 */
/***/ function(module, exports) {

	"use strict";
	// previous version:
	// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js
	var Positioning = (function () {
	    function Positioning() {
	    }
	    Positioning.prototype.getStyle = function (element, prop) { return window.getComputedStyle(element)[prop]; };
	    Positioning.prototype.isStaticPositioned = function (element) {
	        return (this.getStyle(element, 'position') || 'static') === 'static';
	    };
	    Positioning.prototype.offsetParent = function (element) {
	        var offsetParentEl = element.offsetParent || document.documentElement;
	        while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {
	            offsetParentEl = offsetParentEl.offsetParent;
	        }
	        return offsetParentEl || document.documentElement;
	    };
	    Positioning.prototype.position = function (element, round) {
	        if (round === void 0) { round = true; }
	        var elPosition;
	        var parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };
	        if (this.getStyle(element, 'position') === 'fixed') {
	            elPosition = element.getBoundingClientRect();
	        }
	        else {
	            var offsetParentEl = this.offsetParent(element);
	            elPosition = this.offset(element, false);
	            if (offsetParentEl !== document.documentElement) {
	                parentOffset = this.offset(offsetParentEl, false);
	            }
	            parentOffset.top += offsetParentEl.clientTop;
	            parentOffset.left += offsetParentEl.clientLeft;
	        }
	        elPosition.top -= parentOffset.top;
	        elPosition.bottom -= parentOffset.top;
	        elPosition.left -= parentOffset.left;
	        elPosition.right -= parentOffset.left;
	        if (round) {
	            elPosition.top = Math.round(elPosition.top);
	            elPosition.bottom = Math.round(elPosition.bottom);
	            elPosition.left = Math.round(elPosition.left);
	            elPosition.right = Math.round(elPosition.right);
	        }
	        return elPosition;
	    };
	    Positioning.prototype.offset = function (element, round) {
	        if (round === void 0) { round = true; }
	        var elBcr = element.getBoundingClientRect();
	        var viewportOffset = {
	            top: window.pageYOffset - document.documentElement.clientTop,
	            left: window.pageXOffset - document.documentElement.clientLeft
	        };
	        var elOffset = {
	            height: elBcr.height || element.offsetHeight,
	            width: elBcr.width || element.offsetWidth,
	            top: elBcr.top + viewportOffset.top,
	            bottom: elBcr.bottom + viewportOffset.top,
	            left: elBcr.left + viewportOffset.left,
	            right: elBcr.right + viewportOffset.left
	        };
	        if (round) {
	            elOffset.height = Math.round(elOffset.height);
	            elOffset.width = Math.round(elOffset.width);
	            elOffset.top = Math.round(elOffset.top);
	            elOffset.bottom = Math.round(elOffset.bottom);
	            elOffset.left = Math.round(elOffset.left);
	            elOffset.right = Math.round(elOffset.right);
	        }
	        return elOffset;
	    };
	    Positioning.prototype.positionElements = function (hostElement, targetElement, placement, appendToBody) {
	        var hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);
	        var shiftWidth = {
	            left: hostElPosition.left,
	            center: hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2,
	            right: hostElPosition.left + hostElPosition.width
	        };
	        var shiftHeight = {
	            top: hostElPosition.top,
	            center: hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2,
	            bottom: hostElPosition.top + hostElPosition.height
	        };
	        var targetElBCR = targetElement.getBoundingClientRect();
	        var placementPrimary = placement.split('-')[0] || 'top';
	        var placementSecondary = placement.split('-')[1] || 'center';
	        var targetElPosition = {
	            height: targetElBCR.height || targetElement.offsetHeight,
	            width: targetElBCR.width || targetElement.offsetWidth,
	            top: 0,
	            bottom: targetElBCR.height || targetElement.offsetHeight,
	            left: 0,
	            right: targetElBCR.width || targetElement.offsetWidth
	        };
	        switch (placementPrimary) {
	            case 'top':
	                targetElPosition.top = hostElPosition.top - targetElement.offsetHeight;
	                targetElPosition.bottom += hostElPosition.top - targetElement.offsetHeight;
	                targetElPosition.left = shiftWidth[placementSecondary];
	                targetElPosition.right += shiftWidth[placementSecondary];
	                break;
	            case 'bottom':
	                targetElPosition.top = shiftHeight[placementPrimary];
	                targetElPosition.bottom += shiftHeight[placementPrimary];
	                targetElPosition.left = shiftWidth[placementSecondary];
	                targetElPosition.right += shiftWidth[placementSecondary];
	                break;
	            case 'left':
	                targetElPosition.top = shiftHeight[placementSecondary];
	                targetElPosition.bottom += shiftHeight[placementSecondary];
	                targetElPosition.left = hostElPosition.left - targetElement.offsetWidth;
	                targetElPosition.right += hostElPosition.left - targetElement.offsetWidth;
	                break;
	            case 'right':
	                targetElPosition.top = shiftHeight[placementSecondary];
	                targetElPosition.bottom += shiftHeight[placementSecondary];
	                targetElPosition.left = shiftWidth[placementPrimary];
	                targetElPosition.right += shiftWidth[placementPrimary];
	                break;
	        }
	        targetElPosition.top = Math.round(targetElPosition.top);
	        targetElPosition.bottom = Math.round(targetElPosition.bottom);
	        targetElPosition.left = Math.round(targetElPosition.left);
	        targetElPosition.right = Math.round(targetElPosition.right);
	        return targetElPosition;
	    };
	    return Positioning;
	}());
	exports.Positioning = Positioning;
	var positionService = new Positioning();
	function positionElements(hostElement, targetElement, placement, appendToBody) {
	    var pos = positionService.positionElements(hostElement, targetElement, placement, appendToBody);
	    targetElement.style.top = pos.top + "px";
	    targetElement.style.left = pos.left + "px";
	}
	exports.positionElements = positionElements;
	//# sourceMappingURL=positioning.js.map

/***/ },
/* 31 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var NgbDatepickerDayView = (function () {
	    function NgbDatepickerDayView() {
	    }
	    NgbDatepickerDayView.prototype.isMuted = function () { return !this.selected && (this.date.month !== this.currentMonth || this.disabled); };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbDatepickerDayView.prototype, "currentMonth", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbDatepickerDayView.prototype, "date", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbDatepickerDayView.prototype, "disabled", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbDatepickerDayView.prototype, "selected", void 0);
	    NgbDatepickerDayView = __decorate([
	        core_1.Component({
	            selector: '[ngbDatepickerDayView]',
	            styles: ["\n    :host {      \n      text-align: center;\n      padding: 0.185rem 0.25rem;      \n      border-radius: 0.25rem;\n    }\n  "],
	            host: {
	                '[class.bg-primary]': 'selected',
	                '[class.text-white]': 'selected',
	                '[class.text-muted]': 'isMuted()',
	                '[class.btn-secondary]': '!disabled'
	            },
	            template: "{{ date.day }}"
	        }), 
	        __metadata('design:paramtypes', [])
	    ], NgbDatepickerDayView);
	    return NgbDatepickerDayView;
	}());
	exports.NgbDatepickerDayView = NgbDatepickerDayView;
	//# sourceMappingURL=datepicker-day-view.js.map

/***/ },
/* 32 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var ngb_date_1 = __webpack_require__(21);
	var util_1 = __webpack_require__(5);
	var datepicker_i18n_1 = __webpack_require__(26);
	var ngb_calendar_1 = __webpack_require__(20);
	var NgbDatepickerNavigationSelect = (function () {
	    function NgbDatepickerNavigationSelect(i18n, calendar) {
	        this.i18n = i18n;
	        this.years = [];
	        this.select = new core_1.EventEmitter();
	        this.months = calendar.getMonths();
	    }
	    NgbDatepickerNavigationSelect.prototype.ngOnChanges = function (changes) {
	        if (changes['maxYear'] || changes['minYear']) {
	            this._generateYears();
	        }
	    };
	    NgbDatepickerNavigationSelect.prototype.changeMonth = function (month) { this.select.emit(new ngb_date_1.NgbDate(this.date.year, util_1.toInteger(month), 1)); };
	    NgbDatepickerNavigationSelect.prototype.changeYear = function (year) { this.select.emit(new ngb_date_1.NgbDate(util_1.toInteger(year), this.date.month, 1)); };
	    NgbDatepickerNavigationSelect.prototype._generateYears = function () {
	        var _this = this;
	        this.years = Array.from({ length: this.maxYear - this.minYear + 1 }, function (e, i) { return _this.minYear + i; });
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', ngb_date_1.NgbDate)
	    ], NgbDatepickerNavigationSelect.prototype, "date", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbDatepickerNavigationSelect.prototype, "disabled", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbDatepickerNavigationSelect.prototype, "maxYear", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbDatepickerNavigationSelect.prototype, "minYear", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbDatepickerNavigationSelect.prototype, "select", void 0);
	    NgbDatepickerNavigationSelect = __decorate([
	        core_1.Component({
	            selector: 'ngb-datepicker-navigation-select',
	            styles: ["\n    select {\n      /* to align with btn-sm */\n      padding: 0.25rem 0.5rem;\n      font-size: 0.875rem;      \n      line-height: 1.25;\n      /* to cancel the custom height set by custom-select */\n      height: inherit;\n      width: 50%;\n    }\n  "],
	            template: "\n    <select [disabled]=\"disabled\" class=\"custom-select d-inline-block\" [value]=\"date.month\" (change)=\"changeMonth($event.target.value)\">\n      <option *ngFor=\"let m of months\" [value]=\"m\">{{ i18n.getMonthName(m) }}</option>\n    </select>" +
	                "<select [disabled]=\"disabled\" class=\"custom-select d-inline-block\" [value]=\"date.year\" (change)=\"changeYear($event.target.value)\">\n      <option *ngFor=\"let y of years\" [value]=\"y\">{{ y }}</option>\n    </select> \n  " // template needs to be formatted in a certain way so we don't add empty text nodes
	        }), 
	        __metadata('design:paramtypes', [datepicker_i18n_1.NgbDatepickerI18n, ngb_calendar_1.NgbCalendar])
	    ], NgbDatepickerNavigationSelect);
	    return NgbDatepickerNavigationSelect;
	}());
	exports.NgbDatepickerNavigationSelect = NgbDatepickerNavigationSelect;
	//# sourceMappingURL=datepicker-navigation-select.js.map

/***/ },
/* 33 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var dropdown_1 = __webpack_require__(34);
	var dropdown_config_1 = __webpack_require__(35);
	var dropdown_config_2 = __webpack_require__(35);
	exports.NgbDropdownConfig = dropdown_config_2.NgbDropdownConfig;
	var NgbDropdownModule = (function () {
	    function NgbDropdownModule() {
	    }
	    NgbDropdownModule.forRoot = function () { return { ngModule: NgbDropdownModule, providers: [dropdown_config_1.NgbDropdownConfig] }; };
	    NgbDropdownModule = __decorate([
	        core_1.NgModule({ declarations: dropdown_1.NGB_DROPDOWN_DIRECTIVES, exports: dropdown_1.NGB_DROPDOWN_DIRECTIVES }), 
	        __metadata('design:paramtypes', [])
	    ], NgbDropdownModule);
	    return NgbDropdownModule;
	}());
	exports.NgbDropdownModule = NgbDropdownModule;
	//# sourceMappingURL=dropdown.module.js.map

/***/ },
/* 34 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var dropdown_config_1 = __webpack_require__(35);
	/**
	 * Transforms a node into a dropdown.
	 */
	var NgbDropdown = (function () {
	    function NgbDropdown(config) {
	        /**
	         *  Defines whether or not the dropdown-menu is open initially.
	         */
	        this._open = false;
	        /**
	         *  An event fired when the dropdown is opened or closed.
	         *  Event's payload equals whether dropdown is open.
	         */
	        this.openChange = new core_1.EventEmitter();
	        this.up = config.up;
	        this.autoClose = config.autoClose;
	    }
	    /**
	     * Checks if the dropdown menu is open or not.
	     */
	    NgbDropdown.prototype.isOpen = function () { return this._open; };
	    /**
	     * Opens the dropdown menu of a given navbar or tabbed navigation.
	     */
	    NgbDropdown.prototype.open = function () {
	        if (!this._open) {
	            this._open = true;
	            this.openChange.emit(true);
	        }
	    };
	    /**
	     * Closes the dropdown menu of a given navbar or tabbed navigation.
	     */
	    NgbDropdown.prototype.close = function () {
	        if (this._open) {
	            this._open = false;
	            this.openChange.emit(false);
	        }
	    };
	    /**
	     * Toggles the dropdown menu of a given navbar or tabbed navigation.
	     */
	    NgbDropdown.prototype.toggle = function () {
	        if (this.isOpen()) {
	            this.close();
	        }
	        else {
	            this.open();
	        }
	    };
	    NgbDropdown.prototype.closeFromOutsideClick = function ($event) {
	        if (this.autoClose && !this._isEventFromToggle($event)) {
	            this.close();
	        }
	    };
	    NgbDropdown.prototype.closeFromOutsideEsc = function () {
	        if (this.autoClose) {
	            this.close();
	        }
	    };
	    Object.defineProperty(NgbDropdown.prototype, "toggleElement", {
	        /**
	         * @internal
	         */
	        set: function (toggleElement) { this._toggleElement = toggleElement; },
	        enumerable: true,
	        configurable: true
	    });
	    NgbDropdown.prototype._isEventFromToggle = function ($event) { return !!this._toggleElement && this._toggleElement.contains($event.target); };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbDropdown.prototype, "up", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbDropdown.prototype, "autoClose", void 0);
	    __decorate([
	        core_1.Input('open'), 
	        __metadata('design:type', Object)
	    ], NgbDropdown.prototype, "_open", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbDropdown.prototype, "openChange", void 0);
	    NgbDropdown = __decorate([
	        core_1.Directive({
	            selector: '[ngbDropdown]',
	            exportAs: 'ngbDropdown',
	            host: {
	                '[class.dropdown]': '!up',
	                '[class.dropup]': 'up',
	                '[class.open]': 'isOpen()',
	                '(keyup.esc)': 'closeFromOutsideEsc()',
	                '(document:click)': 'closeFromOutsideClick($event)'
	            }
	        }), 
	        __metadata('design:paramtypes', [dropdown_config_1.NgbDropdownConfig])
	    ], NgbDropdown);
	    return NgbDropdown;
	}());
	exports.NgbDropdown = NgbDropdown;
	/**
	 * Allows the dropdown to be toggled via click. This directive is optional.
	 */
	var NgbDropdownToggle = (function () {
	    function NgbDropdownToggle(dropdown, elementRef) {
	        this.dropdown = dropdown;
	        dropdown.toggleElement = elementRef.nativeElement;
	    }
	    NgbDropdownToggle.prototype.toggleOpen = function () { this.dropdown.toggle(); };
	    NgbDropdownToggle = __decorate([
	        core_1.Directive({
	            selector: '[ngbDropdownToggle]',
	            host: {
	                'class': 'dropdown-toggle',
	                'aria-haspopup': 'true',
	                '[attr.aria-expanded]': 'dropdown.isOpen()',
	                '(click)': 'toggleOpen()'
	            }
	        }), 
	        __metadata('design:paramtypes', [NgbDropdown, core_1.ElementRef])
	    ], NgbDropdownToggle);
	    return NgbDropdownToggle;
	}());
	exports.NgbDropdownToggle = NgbDropdownToggle;
	exports.NGB_DROPDOWN_DIRECTIVES = [NgbDropdownToggle, NgbDropdown];
	//# sourceMappingURL=dropdown.js.map

/***/ },
/* 35 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbDropdown directive.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the dropdowns used in the application.
	 */
	var NgbDropdownConfig = (function () {
	    function NgbDropdownConfig() {
	        this.up = false;
	        this.autoClose = true;
	    }
	    NgbDropdownConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbDropdownConfig);
	    return NgbDropdownConfig;
	}());
	exports.NgbDropdownConfig = NgbDropdownConfig;
	//# sourceMappingURL=dropdown-config.js.map

/***/ },
/* 36 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var modal_container_1 = __webpack_require__(37);
	var modal_backdrop_1 = __webpack_require__(39);
	var modal_window_1 = __webpack_require__(40);
	var modal_stack_1 = __webpack_require__(42);
	var modal_1 = __webpack_require__(44);
	var modal_2 = __webpack_require__(44);
	exports.NgbModal = modal_2.NgbModal;
	var modal_ref_1 = __webpack_require__(43);
	exports.NgbModalRef = modal_ref_1.NgbModalRef;
	exports.NgbActiveModal = modal_ref_1.NgbActiveModal;
	var modal_dismiss_reasons_1 = __webpack_require__(41);
	exports.ModalDismissReasons = modal_dismiss_reasons_1.ModalDismissReasons;
	var NgbModalModule = (function () {
	    function NgbModalModule() {
	    }
	    NgbModalModule.forRoot = function () { return { ngModule: NgbModalModule, providers: [modal_1.NgbModal, modal_stack_1.NgbModalStack] }; };
	    NgbModalModule = __decorate([
	        core_1.NgModule({
	            declarations: [modal_container_1.NgbModalContainer, modal_backdrop_1.NgbModalBackdrop, modal_window_1.NgbModalWindow],
	            entryComponents: [modal_backdrop_1.NgbModalBackdrop, modal_window_1.NgbModalWindow],
	            providers: [modal_1.NgbModal],
	            exports: [modal_container_1.NgbModalContainer]
	        }), 
	        __metadata('design:paramtypes', [])
	    ], NgbModalModule);
	    return NgbModalModule;
	}());
	exports.NgbModalModule = NgbModalModule;
	//# sourceMappingURL=modal.module.js.map

/***/ },
/* 37 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var util_1 = __webpack_require__(5);
	var popup_1 = __webpack_require__(38);
	var modal_backdrop_1 = __webpack_require__(39);
	var modal_window_1 = __webpack_require__(40);
	var modal_stack_1 = __webpack_require__(42);
	var modal_ref_1 = __webpack_require__(43);
	var NgbModalContainer = (function () {
	    function NgbModalContainer(_injector, _renderer, _viewContainerRef, _componentFactoryResolver, ngbModalStack) {
	        this._injector = _injector;
	        this._renderer = _renderer;
	        this._viewContainerRef = _viewContainerRef;
	        this._componentFactoryResolver = _componentFactoryResolver;
	        this._backdropFactory = _componentFactoryResolver.resolveComponentFactory(modal_backdrop_1.NgbModalBackdrop);
	        this._windowFactory = _componentFactoryResolver.resolveComponentFactory(modal_window_1.NgbModalWindow);
	        ngbModalStack.registerContainer(this);
	    }
	    NgbModalContainer.prototype.open = function (moduleCFR, content, options) {
	        var activeModal = new modal_ref_1.NgbActiveModal();
	        var contentRef = this._getContentRef(moduleCFR, content, activeModal);
	        var windowCmptRef;
	        var backdropCmptRef;
	        var ngbModalRef;
	        if (options.backdrop !== false) {
	            backdropCmptRef =
	                this._viewContainerRef.createComponent(this._backdropFactory, this._viewContainerRef.length, this._injector);
	        }
	        windowCmptRef = this._viewContainerRef.createComponent(this._windowFactory, this._viewContainerRef.length, this._injector, contentRef.nodes);
	        ngbModalRef = new modal_ref_1.NgbModalRef(this._viewContainerRef, windowCmptRef, contentRef, backdropCmptRef);
	        activeModal.close = function (result) { ngbModalRef.close(result); };
	        activeModal.dismiss = function (reason) { ngbModalRef.dismiss(reason); };
	        this._applyWindowOptions(windowCmptRef.instance, options);
	        return ngbModalRef;
	    };
	    NgbModalContainer.prototype._applyWindowOptions = function (windowInstance, options) {
	        ['backdrop', 'keyboard', 'size', 'windowClass'].forEach(function (optionName) {
	            if (util_1.isDefined(options[optionName])) {
	                windowInstance[optionName] = options[optionName];
	            }
	        });
	    };
	    NgbModalContainer.prototype._getContentRef = function (moduleCFR, content, context) {
	        if (!content) {
	            return new popup_1.ContentRef([]);
	        }
	        else if (content instanceof core_1.TemplateRef) {
	            var viewRef = this._viewContainerRef.createEmbeddedView(content, context);
	            return new popup_1.ContentRef([viewRef.rootNodes], viewRef);
	        }
	        else if (util_1.isString(content)) {
	            return new popup_1.ContentRef([[this._renderer.createText(null, "" + content)]]);
	        }
	        else {
	            var contentCmptFactory = moduleCFR.resolveComponentFactory(content);
	            var modalContentInjector = core_1.ReflectiveInjector.resolveAndCreate([{ provide: modal_ref_1.NgbActiveModal, useValue: context }], this._injector);
	            var componentRef = this._viewContainerRef.createComponent(contentCmptFactory, 0, modalContentInjector);
	            return new popup_1.ContentRef([[componentRef.location.nativeElement]], componentRef.hostView, componentRef);
	        }
	    };
	    NgbModalContainer = __decorate([
	        core_1.Directive({ selector: 'template[ngbModalContainer]' }), 
	        __metadata('design:paramtypes', [core_1.Injector, core_1.Renderer, core_1.ViewContainerRef, core_1.ComponentFactoryResolver, modal_stack_1.NgbModalStack])
	    ], NgbModalContainer);
	    return NgbModalContainer;
	}());
	exports.NgbModalContainer = NgbModalContainer;
	//# sourceMappingURL=modal-container.js.map

/***/ },
/* 38 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var ContentRef = (function () {
	    function ContentRef(nodes, viewRef, componentRef) {
	        this.nodes = nodes;
	        this.viewRef = viewRef;
	        this.componentRef = componentRef;
	    }
	    return ContentRef;
	}());
	exports.ContentRef = ContentRef;
	var PopupService = (function () {
	    function PopupService(type, _injector, _viewContainerRef, _renderer, componentFactoryResolver) {
	        this._injector = _injector;
	        this._viewContainerRef = _viewContainerRef;
	        this._renderer = _renderer;
	        this._windowFactory = componentFactoryResolver.resolveComponentFactory(type);
	    }
	    PopupService.prototype.open = function (content) {
	        if (!this._windowRef) {
	            this._contentRef = this._getContentRef(content);
	            this._windowRef =
	                this._viewContainerRef.createComponent(this._windowFactory, 0, this._injector, this._contentRef.nodes);
	        }
	        return this._windowRef;
	    };
	    PopupService.prototype.close = function () {
	        if (this._windowRef) {
	            this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));
	            this._windowRef = null;
	            if (this._contentRef.viewRef) {
	                this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef));
	                this._contentRef = null;
	            }
	        }
	    };
	    PopupService.prototype._getContentRef = function (content) {
	        if (!content) {
	            return new ContentRef([]);
	        }
	        else if (content instanceof core_1.TemplateRef) {
	            var viewRef = this._viewContainerRef.createEmbeddedView(content);
	            return new ContentRef([viewRef.rootNodes], viewRef);
	        }
	        else {
	            return new ContentRef([[this._renderer.createText(null, "" + content)]]);
	        }
	    };
	    return PopupService;
	}());
	exports.PopupService = PopupService;
	//# sourceMappingURL=popup.js.map

/***/ },
/* 39 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var NgbModalBackdrop = (function () {
	    function NgbModalBackdrop() {
	    }
	    NgbModalBackdrop = __decorate([
	        core_1.Component({ selector: 'ngb-modal-backdrop', template: '', host: { 'class': 'modal-backdrop fade in' } }), 
	        __metadata('design:paramtypes', [])
	    ], NgbModalBackdrop);
	    return NgbModalBackdrop;
	}());
	exports.NgbModalBackdrop = NgbModalBackdrop;
	//# sourceMappingURL=modal-backdrop.js.map

/***/ },
/* 40 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var modal_dismiss_reasons_1 = __webpack_require__(41);
	var NgbModalWindow = (function () {
	    function NgbModalWindow(_elRef, _renderer) {
	        this._elRef = _elRef;
	        this._renderer = _renderer;
	        this.backdrop = true;
	        this.keyboard = true;
	        this.dismissEvent = new core_1.EventEmitter();
	    }
	    NgbModalWindow.prototype.backdropClick = function () {
	        if (this.backdrop === true) {
	            this.dismiss(modal_dismiss_reasons_1.ModalDismissReasons.BACKDROP_CLICK);
	        }
	    };
	    NgbModalWindow.prototype.escKey = function ($event) {
	        if (this.keyboard && !$event.defaultPrevented) {
	            this.dismiss(modal_dismiss_reasons_1.ModalDismissReasons.ESC);
	        }
	    };
	    NgbModalWindow.prototype.dismiss = function (reason) { this.dismissEvent.emit(reason); };
	    NgbModalWindow.prototype.stopPropagation = function ($event) { $event.stopPropagation(); };
	    NgbModalWindow.prototype.ngOnInit = function () {
	        this._elWithFocus = document.activeElement;
	        this._renderer.setElementClass(document.body, 'modal-open', true);
	    };
	    NgbModalWindow.prototype.ngAfterViewInit = function () {
	        if (!this._isNodeChildOfAnother(this._elRef.nativeElement, document.activeElement)) {
	            this._renderer.invokeElementMethod(this._elRef.nativeElement, 'focus', []);
	        }
	    };
	    NgbModalWindow.prototype.ngOnDestroy = function () {
	        if (this._elWithFocus && this._isNodeChildOfAnother(document.body, this._elWithFocus)) {
	            this._renderer.invokeElementMethod(this._elWithFocus, 'focus', []);
	        }
	        else {
	            this._renderer.invokeElementMethod(document.body, 'focus', []);
	        }
	        this._elWithFocus = null;
	        this._renderer.setElementClass(document.body, 'modal-open', false);
	    };
	    NgbModalWindow.prototype._isNodeChildOfAnother = function (parentNode, potentialChildNode) { return parentNode.contains(potentialChildNode); };
	    __decorate([
	        // element that is focused prior to modal opening
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbModalWindow.prototype, "backdrop", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbModalWindow.prototype, "keyboard", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbModalWindow.prototype, "size", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbModalWindow.prototype, "windowClass", void 0);
	    __decorate([
	        core_1.Output('dismiss'), 
	        __metadata('design:type', Object)
	    ], NgbModalWindow.prototype, "dismissEvent", void 0);
	    NgbModalWindow = __decorate([
	        core_1.Component({
	            selector: 'ngb-modal-window',
	            host: {
	                '[class]': '"modal fade in" + (windowClass ? " " + windowClass : "")',
	                'role': 'dialog',
	                'tabindex': '-1',
	                'style': 'display: block;',
	                '(keyup.esc)': 'escKey($event)',
	                '(click)': 'backdropClick()'
	            },
	            template: "\n    <div [class]=\"'modal-dialog' + (size ? ' modal-' + size : '')\" role=\"document\">\n        <div class=\"modal-content\" (click)=\"stopPropagation($event)\"><ng-content></ng-content></div>\n    </div>\n    "
	        }), 
	        __metadata('design:paramtypes', [core_1.ElementRef, core_1.Renderer])
	    ], NgbModalWindow);
	    return NgbModalWindow;
	}());
	exports.NgbModalWindow = NgbModalWindow;
	//# sourceMappingURL=modal-window.js.map

/***/ },
/* 41 */
/***/ function(module, exports) {

	"use strict";
	(function (ModalDismissReasons) {
	    ModalDismissReasons[ModalDismissReasons["BACKDROP_CLICK"] = 0] = "BACKDROP_CLICK";
	    ModalDismissReasons[ModalDismissReasons["ESC"] = 1] = "ESC";
	})(exports.ModalDismissReasons || (exports.ModalDismissReasons = {}));
	var ModalDismissReasons = exports.ModalDismissReasons;
	//# sourceMappingURL=modal-dismiss-reasons.js.map

/***/ },
/* 42 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var NgbModalStack = (function () {
	    function NgbModalStack() {
	    }
	    NgbModalStack.prototype.open = function (moduleCFR, content, options) {
	        if (options === void 0) { options = {}; }
	        if (!this.modalContainer) {
	            throw new Error('Missing modal container, add <template ngbModalContainer></template> to one of your application templates.');
	        }
	        return this.modalContainer.open(moduleCFR, content, options);
	    };
	    NgbModalStack.prototype.registerContainer = function (modalContainer) { this.modalContainer = modalContainer; };
	    NgbModalStack = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbModalStack);
	    return NgbModalStack;
	}());
	exports.NgbModalStack = NgbModalStack;
	//# sourceMappingURL=modal-stack.js.map

/***/ },
/* 43 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var popup_1 = __webpack_require__(38);
	/**
	 * A reference to an active (currently opened) modal. Instances of this class
	 * can be injected into components passed as modal content.
	 */
	var NgbActiveModal = (function () {
	    function NgbActiveModal() {
	    }
	    /**
	     * Can be used to close a modal, passing an optional result.
	     */
	    NgbActiveModal.prototype.close = function (result) { };
	    /**
	     * Can be used to dismiss a modal, passing an optional reason.
	     */
	    NgbActiveModal.prototype.dismiss = function (reason) { };
	    NgbActiveModal = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbActiveModal);
	    return NgbActiveModal;
	}());
	exports.NgbActiveModal = NgbActiveModal;
	/**
	 * A reference to a newly opened modal.
	 */
	var NgbModalRef = (function () {
	    function NgbModalRef(_viewContainerRef, _windowCmptRef, _contentRef, _backdropCmptRef) {
	        var _this = this;
	        this._viewContainerRef = _viewContainerRef;
	        this._windowCmptRef = _windowCmptRef;
	        this._contentRef = _contentRef;
	        this._backdropCmptRef = _backdropCmptRef;
	        _windowCmptRef.instance.dismissEvent.subscribe(function (reason) { _this.dismiss(reason); });
	        this.result = new Promise(function (resolve, reject) {
	            _this._resolve = resolve;
	            _this._reject = reject;
	        });
	        this.result.then(null, function () { });
	    }
	    Object.defineProperty(NgbModalRef.prototype, "componentInstance", {
	        /**
	         * The instance of component used as modal's content.
	         * Undefined when a TemplateRef is used as modal's content.
	         */
	        get: function () {
	            if (this._contentRef.componentRef) {
	                return this._contentRef.componentRef.instance;
	            }
	        },
	        // only needed to keep TS1.8 compatibility
	        set: function (instance) { },
	        enumerable: true,
	        configurable: true
	    });
	    /**
	     * Can be used to close a modal, passing an optional result.
	     */
	    NgbModalRef.prototype.close = function (result) {
	        if (this._windowCmptRef) {
	            this._resolve(result);
	            this._removeModalElements();
	        }
	    };
	    /**
	     * Can be used to dismiss a modal, passing an optional reason.
	     */
	    NgbModalRef.prototype.dismiss = function (reason) {
	        if (this._windowCmptRef) {
	            this._reject(reason);
	            this._removeModalElements();
	        }
	    };
	    NgbModalRef.prototype._removeModalElements = function () {
	        this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowCmptRef.hostView));
	        if (this._backdropCmptRef) {
	            this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._backdropCmptRef.hostView));
	        }
	        if (this._contentRef && this._contentRef.viewRef) {
	            this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef));
	        }
	        this._windowCmptRef = null;
	        this._backdropCmptRef = null;
	        this._contentRef = null;
	    };
	    NgbModalRef = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.ComponentRef, popup_1.ContentRef, core_1.ComponentRef])
	    ], NgbModalRef);
	    return NgbModalRef;
	}());
	exports.NgbModalRef = NgbModalRef;
	//# sourceMappingURL=modal-ref.js.map

/***/ },
/* 44 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var modal_stack_1 = __webpack_require__(42);
	/**
	 * A service to open modal windows. Creating a modal is straightforward: create a template and pass it as an argument to
	 * the "open" method!
	 */
	var NgbModal = (function () {
	    function NgbModal(_moduleCFR, _modalStack) {
	        this._moduleCFR = _moduleCFR;
	        this._modalStack = _modalStack;
	    }
	    /**
	     * Opens a new modal window with the specified content and using supplied options. Content can be provided
	     * as a TemplateRef or a component type. If you pass a component type as content than instances of those
	     * components can be injected with an instance of the NgbActiveModal class. You can use methods on the
	     * NgbActiveModal class to close / dismiss modals from "inside" of a component.
	     */
	    NgbModal.prototype.open = function (content, options) {
	        if (options === void 0) { options = {}; }
	        return this._modalStack.open(this._moduleCFR, content, options);
	    };
	    NgbModal = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [core_1.ComponentFactoryResolver, modal_stack_1.NgbModalStack])
	    ], NgbModal);
	    return NgbModal;
	}());
	exports.NgbModal = NgbModal;
	//# sourceMappingURL=modal.js.map

/***/ },
/* 45 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(3);
	var pagination_1 = __webpack_require__(46);
	var pagination_config_1 = __webpack_require__(47);
	var pagination_2 = __webpack_require__(46);
	exports.NgbPagination = pagination_2.NgbPagination;
	var pagination_config_2 = __webpack_require__(47);
	exports.NgbPaginationConfig = pagination_config_2.NgbPaginationConfig;
	var NgbPaginationModule = (function () {
	    function NgbPaginationModule() {
	    }
	    NgbPaginationModule.forRoot = function () { return { ngModule: NgbPaginationModule, providers: [pagination_config_1.NgbPaginationConfig] }; };
	    NgbPaginationModule = __decorate([
	        core_1.NgModule({ declarations: [pagination_1.NgbPagination], exports: [pagination_1.NgbPagination], imports: [common_1.CommonModule] }), 
	        __metadata('design:paramtypes', [])
	    ], NgbPaginationModule);
	    return NgbPaginationModule;
	}());
	exports.NgbPaginationModule = NgbPaginationModule;
	//# sourceMappingURL=pagination.module.js.map

/***/ },
/* 46 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var util_1 = __webpack_require__(5);
	var pagination_config_1 = __webpack_require__(47);
	/**
	 * A directive that will take care of visualising a pagination bar and enable / disable buttons correctly!
	 */
	var NgbPagination = (function () {
	    function NgbPagination(config) {
	        this.pageCount = 0;
	        this.pages = [];
	        /**
	         *  Current page.
	         */
	        this.page = 0;
	        /**
	         *  An event fired when the page is changed.
	         *  Event's payload equals to the newly selected page.
	         */
	        this.pageChange = new core_1.EventEmitter(true);
	        this.boundaryLinks = config.boundaryLinks;
	        this.directionLinks = config.directionLinks;
	        this.ellipses = config.ellipses;
	        this.maxSize = config.maxSize;
	        this.pageSize = config.pageSize;
	        this.rotate = config.rotate;
	        this.size = config.size;
	    }
	    NgbPagination.prototype.hasPrevious = function () { return this.page > 1; };
	    NgbPagination.prototype.hasNext = function () { return this.page < this.pageCount; };
	    NgbPagination.prototype.selectPage = function (pageNumber) {
	        this._setPageInRange(pageNumber);
	        this.ngOnChanges(null);
	    };
	    NgbPagination.prototype.ngOnChanges = function (changes) {
	        // re-calculate new length of pages
	        this.pageCount = Math.ceil(this.collectionSize / this.pageSize);
	        // fill-in model needed to render pages
	        this.pages.length = 0;
	        for (var i = 1; i <= this.pageCount; i++) {
	            this.pages.push(i);
	        }
	        // set page within 1..max range
	        this._setPageInRange(this.page);
	        // apply maxSize if necessary
	        if (this.maxSize > 0 && this.pageCount > this.maxSize) {
	            var start = 0;
	            var end = this.pageCount;
	            // either paginating or rotating page numbers
	            if (this.rotate) {
	                _a = this._applyRotation(), start = _a[0], end = _a[1];
	            }
	            else {
	                _b = this._applyPagination(), start = _b[0], end = _b[1];
	            }
	            this.pages = this.pages.slice(start, end);
	            // adding ellipses
	            this._applyEllipses(start, end);
	        }
	        var _a, _b;
	    };
	    /**
	     * @internal
	     */
	    NgbPagination.prototype.isEllipsis = function (pageNumber) { return pageNumber === -1; };
	    /**
	     * Appends ellipses and first/last page number to the displayed pages
	     */
	    NgbPagination.prototype._applyEllipses = function (start, end) {
	        if (this.ellipses) {
	            if (start > 0) {
	                this.pages.unshift(-1);
	                this.pages.unshift(1);
	            }
	            if (end < this.pageCount) {
	                this.pages.push(-1);
	                this.pages.push(this.pageCount);
	            }
	        }
	    };
	    /**
	     * Rotates page numbers based on maxSize items visible.
	     * Currently selected page stays in the middle:
	     *
	     * Ex. for selected page = 6:
	     * [5,*6*,7] for maxSize = 3
	     * [4,5,*6*,7] for maxSize = 4
	     */
	    NgbPagination.prototype._applyRotation = function () {
	        var start = 0;
	        var end = this.pageCount;
	        var leftOffset = Math.floor(this.maxSize / 2);
	        var rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;
	        if (this.page <= leftOffset) {
	            // very beginning, no rotation -> [0..maxSize]
	            end = this.maxSize;
	        }
	        else if (this.pageCount - this.page < leftOffset) {
	            // very end, no rotation -> [len-maxSize..len]
	            start = this.pageCount - this.maxSize;
	        }
	        else {
	            // rotate
	            start = this.page - leftOffset - 1;
	            end = this.page + rightOffset;
	        }
	        return [start, end];
	    };
	    /**
	     * Paginates page numbers based on maxSize items per page
	     */
	    NgbPagination.prototype._applyPagination = function () {
	        var page = Math.ceil(this.page / this.maxSize) - 1;
	        var start = page * this.maxSize;
	        var end = start + this.maxSize;
	        return [start, end];
	    };
	    NgbPagination.prototype._setPageInRange = function (newPageNo) {
	        var prevPageNo = this.page;
	        this.page = util_1.getValueInRange(newPageNo, this.pageCount, 1);
	        if (this.page !== prevPageNo) {
	            this.pageChange.emit(this.page);
	        }
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbPagination.prototype, "boundaryLinks", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbPagination.prototype, "directionLinks", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbPagination.prototype, "ellipses", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbPagination.prototype, "rotate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbPagination.prototype, "collectionSize", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbPagination.prototype, "maxSize", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbPagination.prototype, "page", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbPagination.prototype, "pageSize", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbPagination.prototype, "pageChange", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbPagination.prototype, "size", void 0);
	    NgbPagination = __decorate([
	        core_1.Component({
	            selector: 'ngb-pagination',
	            changeDetection: core_1.ChangeDetectionStrategy.OnPush,
	            template: "\n    <nav>\n      <ul [class]=\"'pagination' + (size ? ' pagination-' + size : '')\">\n        <li *ngIf=\"boundaryLinks\" class=\"page-item\" [class.disabled]=\"!hasPrevious()\">\n          <a aria-label=\"First\" class=\"page-link\" href (click)=\"!!selectPage(1)\">\n            <span aria-hidden=\"true\">&laquo;&laquo;</span>\n            <span class=\"sr-only\">First</span>\n          </a>                \n        </li>\n      \n        <li *ngIf=\"directionLinks\" class=\"page-item\" [class.disabled]=\"!hasPrevious()\">\n          <a aria-label=\"Previous\" class=\"page-link\" href (click)=\"!!selectPage(page-1)\">\n            <span aria-hidden=\"true\">&laquo;</span>\n            <span class=\"sr-only\">Previous</span>\n          </a>\n        </li>\n\n        <li *ngFor=\"let pageNumber of pages\" class=\"page-item\" [class.active]=\"pageNumber === page\" \n          [class.disabled]=\"isEllipsis(pageNumber)\">\n          <a *ngIf=\"isEllipsis(pageNumber)\" class=\"page-link\">...</a>\n          <a *ngIf=\"!isEllipsis(pageNumber)\" class=\"page-link\" href (click)=\"!!selectPage(pageNumber)\">{{pageNumber}}</a>\n        </li>\n\n        <li *ngIf=\"directionLinks\" class=\"page-item\" [class.disabled]=\"!hasNext()\">\n          <a aria-label=\"Next\" class=\"page-link\" href (click)=\"!!selectPage(page+1)\">\n            <span aria-hidden=\"true\">&raquo;</span>\n            <span class=\"sr-only\">Next</span>\n          </a>\n        </li>\n        \n        <li *ngIf=\"boundaryLinks\" class=\"page-item\" [class.disabled]=\"!hasNext()\">\n          <a aria-label=\"Last\" class=\"page-link\" href (click)=\"!!selectPage(pageCount)\">\n            <span aria-hidden=\"true\">&raquo;&raquo;</span>\n            <span class=\"sr-only\">Last</span>\n          </a>                \n        </li>        \n      </ul>\n    </nav>\n  "
	        }), 
	        __metadata('design:paramtypes', [pagination_config_1.NgbPaginationConfig])
	    ], NgbPagination);
	    return NgbPagination;
	}());
	exports.NgbPagination = NgbPagination;
	//# sourceMappingURL=pagination.js.map

/***/ },
/* 47 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbPagination component.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the paginations used in the application.
	 */
	var NgbPaginationConfig = (function () {
	    function NgbPaginationConfig() {
	        this.boundaryLinks = false;
	        this.directionLinks = true;
	        this.ellipses = true;
	        this.maxSize = 0;
	        this.pageSize = 10;
	        this.rotate = false;
	    }
	    NgbPaginationConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbPaginationConfig);
	    return NgbPaginationConfig;
	}());
	exports.NgbPaginationConfig = NgbPaginationConfig;
	//# sourceMappingURL=pagination-config.js.map

/***/ },
/* 48 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var popover_1 = __webpack_require__(49);
	var popover_config_1 = __webpack_require__(51);
	var popover_2 = __webpack_require__(49);
	exports.NgbPopover = popover_2.NgbPopover;
	var popover_config_2 = __webpack_require__(51);
	exports.NgbPopoverConfig = popover_config_2.NgbPopoverConfig;
	var NgbPopoverModule = (function () {
	    function NgbPopoverModule() {
	    }
	    NgbPopoverModule.forRoot = function () { return { ngModule: NgbPopoverModule, providers: [popover_config_1.NgbPopoverConfig] }; };
	    NgbPopoverModule = __decorate([
	        core_1.NgModule({ declarations: [popover_1.NgbPopover, popover_1.NgbPopoverWindow], exports: [popover_1.NgbPopover], entryComponents: [popover_1.NgbPopoverWindow] }), 
	        __metadata('design:paramtypes', [])
	    ], NgbPopoverModule);
	    return NgbPopoverModule;
	}());
	exports.NgbPopoverModule = NgbPopoverModule;
	//# sourceMappingURL=popover.module.js.map

/***/ },
/* 49 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var triggers_1 = __webpack_require__(50);
	var positioning_1 = __webpack_require__(30);
	var popup_1 = __webpack_require__(38);
	var popover_config_1 = __webpack_require__(51);
	var NgbPopoverWindow = (function () {
	    function NgbPopoverWindow() {
	        this.placement = 'top';
	    }
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbPopoverWindow.prototype, "placement", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbPopoverWindow.prototype, "title", void 0);
	    NgbPopoverWindow = __decorate([
	        core_1.Component({
	            selector: 'ngb-popover-window',
	            changeDetection: core_1.ChangeDetectionStrategy.OnPush,
	            host: { '[class]': '"popover in popover-" + placement', 'role': 'tooltip' },
	            // TODO remove the div.popover-arrow, which is there only to maintain compatibility with bootstrap alpha.4
	            template: "\n    <div class=\"popover-arrow\"></div>\n    <h3 class=\"popover-title\">{{title}}</h3><div class=\"popover-content\"><ng-content></ng-content></div>\n    "
	        }), 
	        __metadata('design:paramtypes', [])
	    ], NgbPopoverWindow);
	    return NgbPopoverWindow;
	}());
	exports.NgbPopoverWindow = NgbPopoverWindow;
	/**
	 * A lightweight, extensible directive for fancy popover creation.
	 */
	var NgbPopover = (function () {
	    function NgbPopover(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, ngZone) {
	        var _this = this;
	        this._elementRef = _elementRef;
	        this._renderer = _renderer;
	        /**
	         * Emits an event when the popover is shown
	         */
	        this.shown = new core_1.EventEmitter();
	        /**
	         * Emits an event when the popover is hidden
	         */
	        this.hidden = new core_1.EventEmitter();
	        this.placement = config.placement;
	        this.triggers = config.triggers;
	        this.container = config.container;
	        this._popupService = new popup_1.PopupService(NgbPopoverWindow, injector, viewContainerRef, _renderer, componentFactoryResolver);
	        this._zoneSubscription = ngZone.onStable.subscribe(function () {
	            if (_this._windowRef) {
	                positioning_1.positionElements(_this._elementRef.nativeElement, _this._windowRef.location.nativeElement, _this.placement, _this.container === 'body');
	            }
	        });
	    }
	    /**
	     * Opens an element’s popover. This is considered a “manual” triggering of the popover.
	     */
	    NgbPopover.prototype.open = function () {
	        if (!this._windowRef) {
	            this._windowRef = this._popupService.open(this.ngbPopover);
	            this._windowRef.instance.placement = this.placement;
	            this._windowRef.instance.title = this.popoverTitle;
	            if (this.container === 'body') {
	                window.document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);
	            }
	            // we need to manually invoke change detection since events registered via
	            // Renderer::listen() are not picked up by change detection with the OnPush strategy
	            this._windowRef.changeDetectorRef.markForCheck();
	            this.shown.emit();
	        }
	    };
	    /**
	     * Closes an element’s popover. This is considered a “manual” triggering of the popover.
	     */
	    NgbPopover.prototype.close = function () {
	        if (this._windowRef) {
	            this._popupService.close();
	            this._windowRef = null;
	            this.hidden.emit();
	        }
	    };
	    /**
	     * Toggles an element’s popover. This is considered a “manual” triggering of the popover.
	     */
	    NgbPopover.prototype.toggle = function () {
	        if (this._windowRef) {
	            this.close();
	        }
	        else {
	            this.open();
	        }
	    };
	    /**
	     * Returns whether or not the popover is currently being shown
	     */
	    NgbPopover.prototype.isOpen = function () { return this._windowRef != null; };
	    NgbPopover.prototype.ngOnInit = function () {
	        this._unregisterListenersFn = triggers_1.listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.open.bind(this), this.close.bind(this), this.toggle.bind(this));
	    };
	    NgbPopover.prototype.ngOnDestroy = function () {
	        this.close();
	        this._unregisterListenersFn();
	        this._zoneSubscription.unsubscribe();
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbPopover.prototype, "ngbPopover", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbPopover.prototype, "popoverTitle", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbPopover.prototype, "placement", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbPopover.prototype, "triggers", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbPopover.prototype, "container", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbPopover.prototype, "shown", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbPopover.prototype, "hidden", void 0);
	    NgbPopover = __decorate([
	        core_1.Directive({ selector: '[ngbPopover]', exportAs: 'ngbPopover' }), 
	        __metadata('design:paramtypes', [core_1.ElementRef, core_1.Renderer, core_1.Injector, core_1.ComponentFactoryResolver, core_1.ViewContainerRef, popover_config_1.NgbPopoverConfig, core_1.NgZone])
	    ], NgbPopover);
	    return NgbPopover;
	}());
	exports.NgbPopover = NgbPopover;
	//# sourceMappingURL=popover.js.map

/***/ },
/* 50 */
/***/ function(module, exports) {

	"use strict";
	var Trigger = (function () {
	    function Trigger(open, close) {
	        this.open = open;
	        this.close = close;
	        if (!close) {
	            this.close = open;
	        }
	    }
	    Trigger.prototype.isManual = function () { return this.open === 'manual' || this.close === 'manual'; };
	    return Trigger;
	}());
	exports.Trigger = Trigger;
	var DEFAULT_ALIASES = {
	    hover: ['mouseenter', 'mouseleave']
	};
	function parseTriggers(triggers, aliases) {
	    if (aliases === void 0) { aliases = DEFAULT_ALIASES; }
	    var trimmedTriggers = (triggers || '').trim();
	    if (trimmedTriggers.length === 0) {
	        return [];
	    }
	    var parsedTriggers = trimmedTriggers.split(/\s+/).map(function (trigger) { return trigger.split(':'); }).map(function (triggerPair) {
	        var alias = aliases[triggerPair[0]] || triggerPair;
	        return new Trigger(alias[0], alias[1]);
	    });
	    var manualTriggers = parsedTriggers.filter(function (triggerPair) { return triggerPair.isManual(); });
	    if (manualTriggers.length > 1) {
	        throw 'Triggers parse error: only one manual trigger is allowed';
	    }
	    if (manualTriggers.length === 1 && parsedTriggers.length > 1) {
	        throw 'Triggers parse error: manual trigger can\'t be mixed with other triggers';
	    }
	    return parsedTriggers;
	}
	exports.parseTriggers = parseTriggers;
	var noopFn = function () { };
	function listenToTriggers(renderer, nativeElement, triggers, openFn, closeFn, toggleFn) {
	    var parsedTriggers = parseTriggers(triggers);
	    var listeners = [];
	    if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {
	        return noopFn;
	    }
	    parsedTriggers.forEach(function (trigger) {
	        if (trigger.open === trigger.close) {
	            listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));
	        }
	        else {
	            listeners.push(renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));
	        }
	    });
	    return function () { listeners.forEach(function (unsubscribeFn) { return unsubscribeFn(); }); };
	}
	exports.listenToTriggers = listenToTriggers;
	//# sourceMappingURL=triggers.js.map

/***/ },
/* 51 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbPopover directive.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the popovers used in the application.
	 */
	var NgbPopoverConfig = (function () {
	    function NgbPopoverConfig() {
	        this.placement = 'top';
	        this.triggers = 'click';
	    }
	    NgbPopoverConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbPopoverConfig);
	    return NgbPopoverConfig;
	}());
	exports.NgbPopoverConfig = NgbPopoverConfig;
	//# sourceMappingURL=popover-config.js.map

/***/ },
/* 52 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var progressbar_1 = __webpack_require__(53);
	var progressbar_config_1 = __webpack_require__(54);
	var progressbar_2 = __webpack_require__(53);
	exports.NgbProgressbar = progressbar_2.NgbProgressbar;
	var progressbar_config_2 = __webpack_require__(54);
	exports.NgbProgressbarConfig = progressbar_config_2.NgbProgressbarConfig;
	var NgbProgressbarModule = (function () {
	    function NgbProgressbarModule() {
	    }
	    NgbProgressbarModule.forRoot = function () { return { ngModule: NgbProgressbarModule, providers: [progressbar_config_1.NgbProgressbarConfig] }; };
	    NgbProgressbarModule = __decorate([
	        core_1.NgModule({ declarations: [progressbar_1.NgbProgressbar], exports: [progressbar_1.NgbProgressbar] }), 
	        __metadata('design:paramtypes', [])
	    ], NgbProgressbarModule);
	    return NgbProgressbarModule;
	}());
	exports.NgbProgressbarModule = NgbProgressbarModule;
	//# sourceMappingURL=progressbar.module.js.map

/***/ },
/* 53 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var util_1 = __webpack_require__(5);
	var progressbar_config_1 = __webpack_require__(54);
	/**
	 * Directive that can be used to provide feedback on the progress of a workflow or an action.
	 */
	var NgbProgressbar = (function () {
	    function NgbProgressbar(config) {
	        /**
	         * Current value to be displayed in the progressbar. Should be smaller or equal to "max" value.
	         */
	        this.value = 0;
	        this.max = config.max;
	        this.animated = config.animated;
	        this.striped = config.striped;
	        this.type = config.type;
	    }
	    NgbProgressbar.prototype.getValue = function () { return util_1.getValueInRange(this.value, this.max); };
	    NgbProgressbar.prototype.getPercentValue = function () { return 100 * this.getValue() / this.max; };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbProgressbar.prototype, "max", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbProgressbar.prototype, "animated", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbProgressbar.prototype, "striped", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbProgressbar.prototype, "type", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbProgressbar.prototype, "value", void 0);
	    NgbProgressbar = __decorate([
	        core_1.Component({
	            selector: 'ngb-progressbar',
	            changeDetection: core_1.ChangeDetectionStrategy.OnPush,
	            template: "\n    <progress class=\"progress {{type ? 'progress-' + type : ''}}\" \n      [class.progress-animated]=\"animated\" \n      [class.progress-striped]=\"striped\"\n      [max]=\"max\" [value]=\"getValue()\">\n      <div class=\"progress\">\n        <span class=\"progress-bar\" [style.width.%]=\"getPercentValue()\"><ng-content></ng-content></span>\n      </div>\n    </progress>\n  "
	        }), 
	        __metadata('design:paramtypes', [progressbar_config_1.NgbProgressbarConfig])
	    ], NgbProgressbar);
	    return NgbProgressbar;
	}());
	exports.NgbProgressbar = NgbProgressbar;
	//# sourceMappingURL=progressbar.js.map

/***/ },
/* 54 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbProgressbar component.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the progress bars used in the application.
	 */
	var NgbProgressbarConfig = (function () {
	    function NgbProgressbarConfig() {
	        this.max = 100;
	        this.animated = false;
	        this.striped = false;
	    }
	    NgbProgressbarConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbProgressbarConfig);
	    return NgbProgressbarConfig;
	}());
	exports.NgbProgressbarConfig = NgbProgressbarConfig;
	//# sourceMappingURL=progressbar-config.js.map

/***/ },
/* 55 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(3);
	var rating_config_1 = __webpack_require__(56);
	var rating_1 = __webpack_require__(57);
	var rating_2 = __webpack_require__(57);
	exports.NgbRating = rating_2.NgbRating;
	var rating_config_2 = __webpack_require__(56);
	exports.NgbRatingConfig = rating_config_2.NgbRatingConfig;
	var NgbRatingModule = (function () {
	    function NgbRatingModule() {
	    }
	    NgbRatingModule.forRoot = function () { return { ngModule: NgbRatingModule, providers: [rating_config_1.NgbRatingConfig] }; };
	    NgbRatingModule = __decorate([
	        core_1.NgModule({ declarations: [rating_1.NgbRating], exports: [rating_1.NgbRating], imports: [common_1.CommonModule] }), 
	        __metadata('design:paramtypes', [])
	    ], NgbRatingModule);
	    return NgbRatingModule;
	}());
	exports.NgbRatingModule = NgbRatingModule;
	//# sourceMappingURL=rating.module.js.map

/***/ },
/* 56 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbRating component.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the ratings used in the application.
	 */
	var NgbRatingConfig = (function () {
	    function NgbRatingConfig() {
	        this.max = 10;
	        this.readonly = false;
	    }
	    NgbRatingConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbRatingConfig);
	    return NgbRatingConfig;
	}());
	exports.NgbRatingConfig = NgbRatingConfig;
	//# sourceMappingURL=rating-config.js.map

/***/ },
/* 57 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var rating_config_1 = __webpack_require__(56);
	/**
	 * Rating directive that will take care of visualising a star rating bar.
	 */
	var NgbRating = (function () {
	    function NgbRating(config) {
	        this.range = [];
	        /**
	         * An event fired when a user is hovering over a given rating.
	         * Event's payload equals to the rating being hovered over.
	         */
	        this.hover = new core_1.EventEmitter();
	        /**
	         * An event fired when a user stops hovering over a given rating.
	         * Event's payload equals to the rating of the last item being hovered over.
	         */
	        this.leave = new core_1.EventEmitter();
	        /**
	         * An event fired when a user selects a new rating.
	         * Event's payload equals to the newly selected rating.
	         */
	        this.rateChange = new core_1.EventEmitter();
	        this.max = config.max;
	        this.readonly = config.readonly;
	    }
	    NgbRating.prototype.enter = function (value) {
	        if (!this.readonly) {
	            this.rate = value;
	        }
	        this.hover.emit(value);
	    };
	    NgbRating.prototype.getFillValue = function (index) {
	        var diff = this.rate - index;
	        if (diff >= 1) {
	            return 100;
	        }
	        if (diff < 1 && diff > 0) {
	            return Number.parseInt((diff * 100).toFixed(2));
	        }
	        return 0;
	    };
	    NgbRating.prototype.ngOnChanges = function (changes) {
	        if (changes['rate']) {
	            this._oldRate = this.rate;
	        }
	    };
	    NgbRating.prototype.ngOnInit = function () { this.range = this._buildTemplateObjects(); };
	    NgbRating.prototype.reset = function () {
	        this.leave.emit(this.rate);
	        this.rate = this._oldRate;
	    };
	    NgbRating.prototype.update = function (value) {
	        if (!this.readonly) {
	            this._oldRate = value;
	            this.rate = value;
	            this.rateChange.emit(value);
	        }
	    };
	    NgbRating.prototype._buildTemplateObjects = function () {
	        var range = [];
	        for (var i = 1; i <= this.max; i++) {
	            range.push({ title: i });
	        }
	        return range;
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbRating.prototype, "max", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbRating.prototype, "rate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbRating.prototype, "readonly", void 0);
	    __decorate([
	        core_1.Input(),
	        core_1.ContentChild(core_1.TemplateRef), 
	        __metadata('design:type', core_1.TemplateRef)
	    ], NgbRating.prototype, "starTemplate", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbRating.prototype, "hover", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbRating.prototype, "leave", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbRating.prototype, "rateChange", void 0);
	    NgbRating = __decorate([
	        core_1.Component({
	            selector: 'ngb-rating',
	            changeDetection: core_1.ChangeDetectionStrategy.OnPush,
	            template: "\n    <template #t let-fill=\"fill\">{{ fill === 100 ? '&#9733;' : '&#9734;' }}</template>\n    <span tabindex=\"0\" (mouseleave)=\"reset()\" aria-valuemin=\"0\" [attr.aria-valuemax]=\"max\" [attr.aria-valuenow]=\"rate\">\n      <template ngFor let-r [ngForOf]=\"range\" let-index=\"index\">\n        <span class=\"sr-only\">({{ index < rate ? '*' : ' ' }})</span>\n        <span (mouseenter)=\"enter(index + 1)\" (click)=\"update(index + 1)\" [title]=\"r.title\" \n        [attr.aria-valuetext]=\"r.title\" \n        [style.cursor]=\"readonly ? 'default' : 'pointer'\">\n          <template [ngTemplateOutlet]=\"starTemplate || t\" [ngOutletContext]=\"{fill: getFillValue(index)}\"></template>\n        </span>\n      </template>\n    </span>\n  "
	        }), 
	        __metadata('design:paramtypes', [rating_config_1.NgbRatingConfig])
	    ], NgbRating);
	    return NgbRating;
	}());
	exports.NgbRating = NgbRating;
	//# sourceMappingURL=rating.js.map

/***/ },
/* 58 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(3);
	var tabset_1 = __webpack_require__(59);
	var tabset_config_1 = __webpack_require__(60);
	var tabset_config_2 = __webpack_require__(60);
	exports.NgbTabsetConfig = tabset_config_2.NgbTabsetConfig;
	var NgbTabsetModule = (function () {
	    function NgbTabsetModule() {
	    }
	    NgbTabsetModule.forRoot = function () { return { ngModule: NgbTabsetModule, providers: [tabset_config_1.NgbTabsetConfig] }; };
	    NgbTabsetModule = __decorate([
	        core_1.NgModule({ declarations: tabset_1.NGB_TABSET_DIRECTIVES, exports: tabset_1.NGB_TABSET_DIRECTIVES, imports: [common_1.CommonModule] }), 
	        __metadata('design:paramtypes', [])
	    ], NgbTabsetModule);
	    return NgbTabsetModule;
	}());
	exports.NgbTabsetModule = NgbTabsetModule;
	//# sourceMappingURL=tabset.module.js.map

/***/ },
/* 59 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var tabset_config_1 = __webpack_require__(60);
	var nextId = 0;
	/**
	 * This directive should be used to wrap tab titles that need to contain HTML markup or other directives.
	 */
	var NgbTabTitle = (function () {
	    function NgbTabTitle(templateRef) {
	        this.templateRef = templateRef;
	    }
	    NgbTabTitle = __decorate([
	        core_1.Directive({ selector: 'template[ngbTabTitle]' }), 
	        __metadata('design:paramtypes', [core_1.TemplateRef])
	    ], NgbTabTitle);
	    return NgbTabTitle;
	}());
	exports.NgbTabTitle = NgbTabTitle;
	/**
	 * This directive must be used to wrap content to be displayed in a tab.
	 */
	var NgbTabContent = (function () {
	    function NgbTabContent(templateRef) {
	        this.templateRef = templateRef;
	    }
	    NgbTabContent = __decorate([
	        core_1.Directive({ selector: 'template[ngbTabContent]' }), 
	        __metadata('design:paramtypes', [core_1.TemplateRef])
	    ], NgbTabContent);
	    return NgbTabContent;
	}());
	exports.NgbTabContent = NgbTabContent;
	/**
	 * A directive representing an individual tab.
	 */
	var NgbTab = (function () {
	    function NgbTab() {
	        /**
	         * Unique tab identifier. Must be unique for the entire document for proper accessibility support.
	         */
	        this.id = "ngb-tab-" + nextId++;
	        /**
	         * Allows toggling disabled state of a given state. Disabled tabs can't be selected.
	         */
	        this.disabled = false;
	    }
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbTab.prototype, "id", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbTab.prototype, "title", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbTab.prototype, "disabled", void 0);
	    __decorate([
	        core_1.ContentChild(NgbTabContent), 
	        __metadata('design:type', NgbTabContent)
	    ], NgbTab.prototype, "contentTpl", void 0);
	    __decorate([
	        core_1.ContentChild(NgbTabTitle), 
	        __metadata('design:type', NgbTabTitle)
	    ], NgbTab.prototype, "titleTpl", void 0);
	    NgbTab = __decorate([
	        core_1.Directive({ selector: 'ngb-tab' }), 
	        __metadata('design:paramtypes', [])
	    ], NgbTab);
	    return NgbTab;
	}());
	exports.NgbTab = NgbTab;
	/**
	 * A component that makes it easy to create tabbed interface.
	 */
	var NgbTabset = (function () {
	    function NgbTabset(config) {
	        /**
	         * A tab change event fired right before the tab selection happens. See NgbTabChangeEvent for payload details
	         */
	        this.tabChange = new core_1.EventEmitter();
	        this.type = config.type;
	    }
	    /**
	     * Selects the tab with the given id and shows its associated pane.
	     * Any other tab that was previously selected becomes unselected and its associated pane is hidden.
	     */
	    NgbTabset.prototype.select = function (tabId) {
	        var selectedTab = this._getTabById(tabId);
	        if (selectedTab && !selectedTab.disabled && this.activeId !== selectedTab.id) {
	            var defaultPrevented_1 = false;
	            this.tabChange.emit({ activeId: this.activeId, nextId: selectedTab.id, preventDefault: function () { defaultPrevented_1 = true; } });
	            if (!defaultPrevented_1) {
	                this.activeId = selectedTab.id;
	            }
	        }
	    };
	    NgbTabset.prototype.ngAfterContentChecked = function () {
	        // auto-correct activeId that might have been set incorrectly as input
	        var activeTab = this._getTabById(this.activeId);
	        this.activeId = activeTab ? activeTab.id : (this.tabs.length ? this.tabs.first.id : null);
	    };
	    NgbTabset.prototype._getTabById = function (id) {
	        var tabsWithId = this.tabs.filter(function (tab) { return tab.id === id; });
	        return tabsWithId.length ? tabsWithId[0] : null;
	    };
	    __decorate([
	        core_1.ContentChildren(NgbTab), 
	        __metadata('design:type', core_1.QueryList)
	    ], NgbTabset.prototype, "tabs", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbTabset.prototype, "activeId", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbTabset.prototype, "type", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbTabset.prototype, "tabChange", void 0);
	    NgbTabset = __decorate([
	        core_1.Component({
	            selector: 'ngb-tabset',
	            exportAs: 'ngbTabset',
	            template: "\n    <ul [class]=\"'nav nav-' + type\" role=\"tablist\">\n      <li class=\"nav-item\" *ngFor=\"let tab of tabs\">\n        <a [id]=\"tab.id\" class=\"nav-link\" [class.active]=\"tab.id === activeId\" [class.disabled]=\"tab.disabled\" \n          href (click)=\"!!select(tab.id)\">\n          {{tab.title}}<template [ngTemplateOutlet]=\"tab.titleTpl?.templateRef\"></template>\n        </a>\n      </li>\n    </ul>\n    <div class=\"tab-content\">\n      <template ngFor let-tab [ngForOf]=\"tabs\">\n        <div class=\"tab-pane active\" *ngIf=\"tab.id === activeId\" role=\"tabpanel\" [attr.aria-labelledby]=\"tab.id\">\n          <template [ngTemplateOutlet]=\"tab.contentTpl.templateRef\"></template>\n        </div>\n      </template>\n    </div>\n  "
	        }), 
	        __metadata('design:paramtypes', [tabset_config_1.NgbTabsetConfig])
	    ], NgbTabset);
	    return NgbTabset;
	}());
	exports.NgbTabset = NgbTabset;
	exports.NGB_TABSET_DIRECTIVES = [NgbTabset, NgbTab, NgbTabContent, NgbTabTitle];
	//# sourceMappingURL=tabset.js.map

/***/ },
/* 60 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbTabset component.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the tabsets used in the application.
	 */
	var NgbTabsetConfig = (function () {
	    function NgbTabsetConfig() {
	        this.type = 'tabs';
	    }
	    NgbTabsetConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbTabsetConfig);
	    return NgbTabsetConfig;
	}());
	exports.NgbTabsetConfig = NgbTabsetConfig;
	//# sourceMappingURL=tabset-config.js.map

/***/ },
/* 61 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(3);
	var timepicker_1 = __webpack_require__(62);
	var timepicker_config_1 = __webpack_require__(64);
	var timepicker_2 = __webpack_require__(62);
	exports.NgbTimepicker = timepicker_2.NgbTimepicker;
	var timepicker_config_2 = __webpack_require__(64);
	exports.NgbTimepickerConfig = timepicker_config_2.NgbTimepickerConfig;
	var NgbTimepickerModule = (function () {
	    function NgbTimepickerModule() {
	    }
	    NgbTimepickerModule.forRoot = function () { return { ngModule: NgbTimepickerModule, providers: [timepicker_config_1.NgbTimepickerConfig] }; };
	    NgbTimepickerModule = __decorate([
	        core_1.NgModule({ declarations: [timepicker_1.NgbTimepicker], exports: [timepicker_1.NgbTimepicker], imports: [common_1.CommonModule] }), 
	        __metadata('design:paramtypes', [])
	    ], NgbTimepickerModule);
	    return NgbTimepickerModule;
	}());
	exports.NgbTimepickerModule = NgbTimepickerModule;
	//# sourceMappingURL=timepicker.module.js.map

/***/ },
/* 62 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var forms_1 = __webpack_require__(12);
	var util_1 = __webpack_require__(5);
	var ngb_time_1 = __webpack_require__(63);
	var timepicker_config_1 = __webpack_require__(64);
	var NGB_TIMEPICKER_VALUE_ACCESSOR = {
	    provide: forms_1.NG_VALUE_ACCESSOR,
	    useExisting: core_1.forwardRef(function () { return NgbTimepicker; }),
	    multi: true
	};
	/**
	 * A lightweight & configurable timepicker directive.
	 */
	var NgbTimepicker = (function () {
	    function NgbTimepicker(config) {
	        this.onChange = function (_) { };
	        this.onTouched = function () { };
	        this.meridian = config.meridian;
	        this.spinners = config.spinners;
	        this.seconds = config.seconds;
	        this.hourStep = config.hourStep;
	        this.minuteStep = config.minuteStep;
	        this.secondStep = config.secondStep;
	        this.disabled = config.disabled;
	        this.readonlyInputs = config.readonlyInputs;
	    }
	    NgbTimepicker.prototype.writeValue = function (value) {
	        this.model = value ? new ngb_time_1.NgbTime(value.hour, value.minute, value.second) : new ngb_time_1.NgbTime();
	        if (!this.seconds && (!value || !util_1.isNumber(value.second))) {
	            this.model.second = 0;
	        }
	    };
	    NgbTimepicker.prototype.registerOnChange = function (fn) { this.onChange = fn; };
	    NgbTimepicker.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };
	    NgbTimepicker.prototype.setDisabledState = function (isDisabled) { this.disabled = isDisabled; };
	    NgbTimepicker.prototype.changeHour = function (step) {
	        this.model.changeHour(step);
	        this.propagateModelChange();
	    };
	    NgbTimepicker.prototype.changeMinute = function (step) {
	        this.model.changeMinute(step);
	        this.propagateModelChange();
	    };
	    NgbTimepicker.prototype.changeSecond = function (step) {
	        this.model.changeSecond(step);
	        this.propagateModelChange();
	    };
	    NgbTimepicker.prototype.updateHour = function (newVal) {
	        this.model.updateHour(util_1.toInteger(newVal));
	        this.propagateModelChange();
	    };
	    NgbTimepicker.prototype.updateMinute = function (newVal) {
	        this.model.updateMinute(util_1.toInteger(newVal));
	        this.propagateModelChange();
	    };
	    NgbTimepicker.prototype.updateSecond = function (newVal) {
	        this.model.updateSecond(util_1.toInteger(newVal));
	        this.propagateModelChange();
	    };
	    NgbTimepicker.prototype.toggleMeridian = function () {
	        if (this.meridian) {
	            this.changeHour(12);
	        }
	    };
	    NgbTimepicker.prototype.formatHour = function (value) { return util_1.padNumber(util_1.isNumber(value) ? (value % (this.meridian ? 12 : 24)) : NaN); };
	    NgbTimepicker.prototype.formatMinSec = function (value) { return util_1.padNumber(value); };
	    NgbTimepicker.prototype.ngOnChanges = function (changes) {
	        if (changes['seconds'] && !this.seconds && this.model && !util_1.isNumber(this.model.second)) {
	            this.model.second = 0;
	            this.propagateModelChange(false);
	        }
	    };
	    NgbTimepicker.prototype.propagateModelChange = function (touched) {
	        if (touched === void 0) { touched = true; }
	        if (touched) {
	            this.onTouched();
	        }
	        if (this.model.isValid(this.seconds)) {
	            this.onChange({ hour: this.model.hour, minute: this.model.minute, second: this.model.second });
	        }
	        else {
	            this.onChange(null);
	        }
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbTimepicker.prototype, "meridian", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbTimepicker.prototype, "spinners", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbTimepicker.prototype, "seconds", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbTimepicker.prototype, "hourStep", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbTimepicker.prototype, "minuteStep", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], NgbTimepicker.prototype, "secondStep", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbTimepicker.prototype, "readonlyInputs", void 0);
	    NgbTimepicker = __decorate([
	        core_1.Component({
	            selector: 'ngb-timepicker',
	            styles: ["\n    .chevron::before {\n      border-style: solid;\n      border-width: 0.29em 0.29em 0 0;\n      content: '';\n      display: inline-block;\n      height: 0.69em;\n      left: 0.05em;\n      position: relative;\n      top: 0.15em;\n      transform: rotate(-45deg);\n      -webkit-transform: rotate(-45deg);\n      -ms-transform: rotate(-45deg);\n      vertical-align: middle;\n      width: 0.71em;\n    }\n    \n    .chevron.bottom:before {\n      top: -.3em;\n      -webkit-transform: rotate(135deg);\n      -ms-transform: rotate(135deg);\n      transform: rotate(135deg);\n    }\n    \n    .btn-link {\n      outline: 0;\n    }\n\n    .btn-link.disabled {\n      cursor: not-allowed;\n      opacity: .65;\n    }\n  "],
	            template: "\n     <fieldset [disabled]=\"disabled\" [class.disabled]=\"disabled\">\n      <table>\n        <tr *ngIf=\"spinners\">\n          <td class=\"text-xs-center\">\n            <button type=\"button\" class=\"btn-link\" (click)=\"changeHour(hourStep)\"\n              [disabled]=\"disabled\" [class.disabled]=\"disabled\">\n              <span class=\"chevron\"></span>\n            </button>\n          </td>\n          <td>&nbsp;</td>\n          <td class=\"text-xs-center\">\n            <button type=\"button\" class=\"btn-link\" (click)=\"changeMinute(minuteStep)\"\n              [disabled]=\"disabled\" [class.disabled]=\"disabled\">\n                <span class=\"chevron\"></span>\n            </button>\n          </td>\n          <template [ngIf]=\"seconds\">\n            <td>&nbsp;</td>\n            <td class=\"text-xs-center\">\n              <button type=\"button\" class=\"btn-link\" (click)=\"changeSecond(secondStep)\"\n                [disabled]=\"disabled\" [class.disabled]=\"disabled\">\n                <span class=\"chevron\"></span>\n              </button>\n            </td>\n          </template>\n          <template [ngIf]=\"meridian\">\n            <td>&nbsp;</td>\n            <td>&nbsp;</td>\n          </template>\n        </tr>\n        <tr>\n          <td>\n            <input type=\"text\" class=\"form-control\" maxlength=\"2\" size=\"2\" placeholder=\"HH\"\n              [value]=\"formatHour(model?.hour)\" (change)=\"updateHour($event.target.value)\" \n              [readonly]=\"readonlyInputs\" [disabled]=\"disabled\">\n          </td>\n          <td>&nbsp;:&nbsp;</td>\n          <td>\n            <input type=\"text\" class=\"form-control\" maxlength=\"2\" size=\"2\" placeholder=\"MM\"\n              [value]=\"formatMinSec(model?.minute)\" (change)=\"updateMinute($event.target.value)\" \n              [readonly]=\"readonlyInputs\" [disabled]=\"disabled\">\n          </td>\n          <template [ngIf]=\"seconds\">\n            <td>&nbsp;:&nbsp;</td>\n            <input type=\"text\" class=\"form-control\" maxlength=\"2\" size=\"2\" placeholder=\"SS\"\n              [value]=\"formatMinSec(model?.second)\" (change)=\"updateSecond($event.target.value)\" \n              [readonly]=\"readonlyInputs\" [disabled]=\"disabled\">\n          </template>\n          <template [ngIf]=\"meridian\">\n            <td>&nbsp;&nbsp;</td>\n            <td>\n              <button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"toggleMeridian()\">{{model.hour > 12 ? 'PM' : 'AM'}}</button>\n            </td>\n          </template>\n        </tr>\n        <tr *ngIf=\"spinners\">\n          <td class=\"text-xs-center\">\n            <button type=\"button\" class=\"btn-link\" (click)=\"changeHour(-hourStep)\" \n              [disabled]=\"disabled\" [class.disabled]=\"disabled\">\n              <span class=\"chevron bottom\"></span>\n            </button>\n          </td>\n          <td>&nbsp;</td>\n          <td class=\"text-xs-center\">\n            <button type=\"button\" class=\"btn-link\" (click)=\"changeMinute(-minuteStep)\"\n              [disabled]=\"disabled\" [class.disabled]=\"disabled\">\n              <span class=\"chevron bottom\"></span>\n            </button>\n          </td>\n          <template [ngIf]=\"seconds\">\n            <td>&nbsp;</td>\n            <td class=\"text-xs-center\">\n              <button type=\"button\" class=\"btn-link\" (click)=\"changeSecond(-secondStep)\"\n                [disabled]=\"disabled\" [class.disabled]=\"disabled\">\n                <span class=\"chevron bottom\"></span>\n              </button>\n            </td>\n          </template>\n          <template [ngIf]=\"meridian\">\n            <td>&nbsp;</td>\n            <td>&nbsp;</td>\n          </template>\n        </tr>\n      </table>\n    </fieldset>\n  ",
	            providers: [NGB_TIMEPICKER_VALUE_ACCESSOR]
	        }), 
	        __metadata('design:paramtypes', [timepicker_config_1.NgbTimepickerConfig])
	    ], NgbTimepicker);
	    return NgbTimepicker;
	}());
	exports.NgbTimepicker = NgbTimepicker;
	//# sourceMappingURL=timepicker.js.map

/***/ },
/* 63 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var util_1 = __webpack_require__(5);
	var NgbTime = (function () {
	    function NgbTime(hour, minute, second) {
	        this.hour = util_1.toInteger(hour);
	        this.minute = util_1.toInteger(minute);
	        this.second = util_1.toInteger(second);
	    }
	    NgbTime.prototype.changeHour = function (step) {
	        if (step === void 0) { step = 1; }
	        this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step);
	    };
	    NgbTime.prototype.updateHour = function (hour) {
	        if (util_1.isNumber(hour)) {
	            this.hour = (hour < 0 ? 24 + hour : hour) % 24;
	        }
	        else {
	            this.hour = NaN;
	        }
	    };
	    NgbTime.prototype.changeMinute = function (step) {
	        if (step === void 0) { step = 1; }
	        this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step);
	    };
	    NgbTime.prototype.updateMinute = function (minute) {
	        if (util_1.isNumber(minute)) {
	            this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;
	            this.changeHour(Math.floor(minute / 60));
	        }
	        else {
	            this.minute = NaN;
	        }
	    };
	    NgbTime.prototype.changeSecond = function (step) {
	        if (step === void 0) { step = 1; }
	        this.updateSecond((isNaN(this.second) ? 0 : this.second) + step);
	    };
	    NgbTime.prototype.updateSecond = function (second) {
	        if (util_1.isNumber(second)) {
	            this.second = second < 0 ? 60 + second % 60 : second % 60;
	            this.changeMinute(Math.floor(second / 60));
	        }
	        else {
	            this.second = NaN;
	        }
	    };
	    NgbTime.prototype.isValid = function (checkSecs) {
	        if (checkSecs === void 0) { checkSecs = true; }
	        return util_1.isNumber(this.hour) && util_1.isNumber(this.minute) && (checkSecs ? util_1.isNumber(this.second) : true);
	    };
	    NgbTime.prototype.toString = function () { return (this.hour || 0) + ":" + (this.minute || 0) + ":" + (this.second || 0); };
	    return NgbTime;
	}());
	exports.NgbTime = NgbTime;
	//# sourceMappingURL=ngb-time.js.map

/***/ },
/* 64 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbTimepicker component.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the timepickers used in the application.
	 */
	var NgbTimepickerConfig = (function () {
	    function NgbTimepickerConfig() {
	        this.meridian = false;
	        this.spinners = true;
	        this.seconds = false;
	        this.hourStep = 1;
	        this.minuteStep = 1;
	        this.secondStep = 1;
	        this.disabled = false;
	        this.readonlyInputs = false;
	    }
	    NgbTimepickerConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbTimepickerConfig);
	    return NgbTimepickerConfig;
	}());
	exports.NgbTimepickerConfig = NgbTimepickerConfig;
	//# sourceMappingURL=timepicker-config.js.map

/***/ },
/* 65 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var tooltip_1 = __webpack_require__(66);
	var tooltip_config_1 = __webpack_require__(67);
	var tooltip_config_2 = __webpack_require__(67);
	exports.NgbTooltipConfig = tooltip_config_2.NgbTooltipConfig;
	var tooltip_2 = __webpack_require__(66);
	exports.NgbTooltip = tooltip_2.NgbTooltip;
	var NgbTooltipModule = (function () {
	    function NgbTooltipModule() {
	    }
	    NgbTooltipModule.forRoot = function () { return { ngModule: NgbTooltipModule, providers: [tooltip_config_1.NgbTooltipConfig] }; };
	    NgbTooltipModule = __decorate([
	        core_1.NgModule({ declarations: [tooltip_1.NgbTooltip, tooltip_1.NgbTooltipWindow], exports: [tooltip_1.NgbTooltip], entryComponents: [tooltip_1.NgbTooltipWindow] }), 
	        __metadata('design:paramtypes', [])
	    ], NgbTooltipModule);
	    return NgbTooltipModule;
	}());
	exports.NgbTooltipModule = NgbTooltipModule;
	//# sourceMappingURL=tooltip.module.js.map

/***/ },
/* 66 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var triggers_1 = __webpack_require__(50);
	var positioning_1 = __webpack_require__(30);
	var popup_1 = __webpack_require__(38);
	var tooltip_config_1 = __webpack_require__(67);
	var NgbTooltipWindow = (function () {
	    function NgbTooltipWindow() {
	        this.placement = 'top';
	    }
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbTooltipWindow.prototype, "placement", void 0);
	    NgbTooltipWindow = __decorate([
	        core_1.Component({
	            selector: 'ngb-tooltip-window',
	            changeDetection: core_1.ChangeDetectionStrategy.OnPush,
	            host: { '[class]': '"tooltip in tooltip-" + placement', 'role': 'tooltip' },
	            // TODO remove the div.tooltip-arrow, which is there only to maintain compatibility with bootstrap alpha.4
	            template: "\n    <div class=\"tooltip-arrow\"></div>\n    <div class=\"tooltip-inner\"><ng-content></ng-content></div>\n    "
	        }), 
	        __metadata('design:paramtypes', [])
	    ], NgbTooltipWindow);
	    return NgbTooltipWindow;
	}());
	exports.NgbTooltipWindow = NgbTooltipWindow;
	/**
	 * A lightweight, extensible directive for fancy tooltip creation.
	 */
	var NgbTooltip = (function () {
	    function NgbTooltip(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, ngZone) {
	        var _this = this;
	        this._elementRef = _elementRef;
	        this._renderer = _renderer;
	        /**
	       * Emits an event when the tooltip is shown
	       */
	        this.shown = new core_1.EventEmitter();
	        /**
	         * Emits an event when the tooltip is hidden
	         */
	        this.hidden = new core_1.EventEmitter();
	        this.placement = config.placement;
	        this.triggers = config.triggers;
	        this.container = config.container;
	        this._popupService = new popup_1.PopupService(NgbTooltipWindow, injector, viewContainerRef, _renderer, componentFactoryResolver);
	        this._zoneSubscription = ngZone.onStable.subscribe(function () {
	            if (_this._windowRef) {
	                positioning_1.positionElements(_this._elementRef.nativeElement, _this._windowRef.location.nativeElement, _this.placement, _this.container === 'body');
	            }
	        });
	    }
	    Object.defineProperty(NgbTooltip.prototype, "ngbTooltip", {
	        get: function () { return this._ngbTooltip; },
	        /**
	         * Content to be displayed as tooltip. If falsy, the tooltip won't open.
	         */
	        set: function (value) {
	            this._ngbTooltip = value;
	            if (!value && this._windowRef) {
	                this.close();
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    /**
	     * Opens an element’s tooltip. This is considered a “manual” triggering of the tooltip.
	     */
	    NgbTooltip.prototype.open = function () {
	        if (!this._windowRef && this._ngbTooltip) {
	            this._windowRef = this._popupService.open(this._ngbTooltip);
	            this._windowRef.instance.placement = this.placement;
	            if (this.container === 'body') {
	                window.document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);
	            }
	            // we need to manually invoke change detection since events registered via
	            // Renderer::listen() - to be determined if this is a bug in the Angular 2
	            this._windowRef.changeDetectorRef.markForCheck();
	            this.shown.emit();
	        }
	    };
	    /**
	     * Closes an element’s tooltip. This is considered a “manual” triggering of the tooltip.
	     */
	    NgbTooltip.prototype.close = function () {
	        if (this._windowRef != null) {
	            this._popupService.close();
	            this._windowRef = null;
	            this.hidden.emit();
	        }
	    };
	    /**
	     * Toggles an element’s tooltip. This is considered a “manual” triggering of the tooltip.
	     */
	    NgbTooltip.prototype.toggle = function () {
	        if (this._windowRef) {
	            this.close();
	        }
	        else {
	            this.open();
	        }
	    };
	    /**
	     * Returns whether or not the tooltip is currently being shown
	     */
	    NgbTooltip.prototype.isOpen = function () { return this._windowRef != null; };
	    NgbTooltip.prototype.ngOnInit = function () {
	        this._unregisterListenersFn = triggers_1.listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.open.bind(this), this.close.bind(this), this.toggle.bind(this));
	    };
	    NgbTooltip.prototype.ngOnDestroy = function () {
	        this.close();
	        this._unregisterListenersFn();
	        this._zoneSubscription.unsubscribe();
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbTooltip.prototype, "placement", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbTooltip.prototype, "triggers", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbTooltip.prototype, "container", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbTooltip.prototype, "shown", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbTooltip.prototype, "hidden", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object), 
	        __metadata('design:paramtypes', [Object])
	    ], NgbTooltip.prototype, "ngbTooltip", null);
	    NgbTooltip = __decorate([
	        core_1.Directive({ selector: '[ngbTooltip]', exportAs: 'ngbTooltip' }), 
	        __metadata('design:paramtypes', [core_1.ElementRef, core_1.Renderer, core_1.Injector, core_1.ComponentFactoryResolver, core_1.ViewContainerRef, tooltip_config_1.NgbTooltipConfig, core_1.NgZone])
	    ], NgbTooltip);
	    return NgbTooltip;
	}());
	exports.NgbTooltip = NgbTooltip;
	//# sourceMappingURL=tooltip.js.map

/***/ },
/* 67 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbTooltip directive.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the tooltips used in the application.
	 */
	var NgbTooltipConfig = (function () {
	    function NgbTooltipConfig() {
	        this.placement = 'top';
	        this.triggers = 'hover';
	    }
	    NgbTooltipConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbTooltipConfig);
	    return NgbTooltipConfig;
	}());
	exports.NgbTooltipConfig = NgbTooltipConfig;
	//# sourceMappingURL=tooltip-config.js.map

/***/ },
/* 68 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(3);
	var highlight_1 = __webpack_require__(69);
	var typeahead_window_1 = __webpack_require__(70);
	var typeahead_1 = __webpack_require__(71);
	var typeahead_config_1 = __webpack_require__(76);
	var highlight_2 = __webpack_require__(69);
	exports.NgbHighlight = highlight_2.NgbHighlight;
	var typeahead_window_2 = __webpack_require__(70);
	exports.NgbTypeaheadWindow = typeahead_window_2.NgbTypeaheadWindow;
	var typeahead_config_2 = __webpack_require__(76);
	exports.NgbTypeaheadConfig = typeahead_config_2.NgbTypeaheadConfig;
	var NgbTypeaheadModule = (function () {
	    function NgbTypeaheadModule() {
	    }
	    NgbTypeaheadModule.forRoot = function () { return { ngModule: NgbTypeaheadModule, providers: [typeahead_config_1.NgbTypeaheadConfig] }; };
	    NgbTypeaheadModule = __decorate([
	        core_1.NgModule({
	            declarations: [typeahead_1.NgbTypeahead, highlight_1.NgbHighlight, typeahead_window_1.NgbTypeaheadWindow],
	            exports: [typeahead_1.NgbTypeahead],
	            imports: [common_1.CommonModule],
	            entryComponents: [typeahead_window_1.NgbTypeaheadWindow]
	        }), 
	        __metadata('design:paramtypes', [])
	    ], NgbTypeaheadModule);
	    return NgbTypeaheadModule;
	}());
	exports.NgbTypeaheadModule = NgbTypeaheadModule;
	//# sourceMappingURL=typeahead.module.js.map

/***/ },
/* 69 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var util_1 = __webpack_require__(5);
	var NgbHighlight = (function () {
	    function NgbHighlight() {
	        this.highlightClass = 'ngb-highlight';
	    }
	    NgbHighlight.prototype.ngOnChanges = function (changes) {
	        var resultStr = util_1.toString(this.result);
	        var resultLC = resultStr.toLowerCase();
	        var termLC = util_1.toString(this.term).toLowerCase();
	        var currentIdx = 0;
	        if (termLC.length > 0) {
	            this.parts = resultLC.split(new RegExp("(" + util_1.regExpEscape(termLC) + ")")).map(function (part) {
	                var originalPart = resultStr.substr(currentIdx, part.length);
	                currentIdx += part.length;
	                return originalPart;
	            });
	        }
	        else {
	            this.parts = [resultStr];
	        }
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbHighlight.prototype, "highlightClass", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbHighlight.prototype, "result", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbHighlight.prototype, "term", void 0);
	    NgbHighlight = __decorate([
	        core_1.Component({
	            selector: 'ngb-highlight',
	            changeDetection: core_1.ChangeDetectionStrategy.OnPush,
	            template: "<template ngFor [ngForOf]=\"parts\" let-part let-isOdd=\"odd\">" +
	                "<span *ngIf=\"isOdd\" class=\"{{highlightClass}}\">{{part}}</span><template [ngIf]=\"!isOdd\">{{part}}</template>" +
	                "</template>",
	            styles: ["\n    .ngb-highlight {\n      font-weight: bold;\n    }\n  "]
	        }), 
	        __metadata('design:paramtypes', [])
	    ], NgbHighlight);
	    return NgbHighlight;
	}());
	exports.NgbHighlight = NgbHighlight;
	//# sourceMappingURL=highlight.js.map

/***/ },
/* 70 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var util_1 = __webpack_require__(5);
	var NgbTypeaheadWindow = (function () {
	    function NgbTypeaheadWindow() {
	        /**
	         * An index of a match to be selected initially
	         */
	        this.activeIdx = 0;
	        /**
	         * A function used to format a given result before display. This function should return a formatted string without any
	         * HTML markup
	         */
	        this.formatter = util_1.toString;
	        /**
	         * Event raised when user selects a particular result row
	         */
	        this.selectEvent = new core_1.EventEmitter();
	    }
	    NgbTypeaheadWindow.prototype.getActive = function () { return this.results[this.activeIdx]; };
	    /**
	     * @internal
	     */
	    NgbTypeaheadWindow.prototype.markActive = function (activeIdx) { this.activeIdx = activeIdx; };
	    NgbTypeaheadWindow.prototype.next = function () { this.activeIdx = (this.activeIdx + 1) % this.results.length; };
	    NgbTypeaheadWindow.prototype.prev = function () { this.activeIdx = (this.activeIdx <= 0 ? this.results.length - 1 : this.activeIdx - 1); };
	    /**
	     * @internal
	     */
	    NgbTypeaheadWindow.prototype.select = function (item) { this.selectEvent.emit(item); };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbTypeaheadWindow.prototype, "activeIdx", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbTypeaheadWindow.prototype, "results", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], NgbTypeaheadWindow.prototype, "term", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], NgbTypeaheadWindow.prototype, "formatter", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', core_1.TemplateRef)
	    ], NgbTypeaheadWindow.prototype, "resultTemplate", void 0);
	    __decorate([
	        core_1.Output('select'), 
	        __metadata('design:type', Object)
	    ], NgbTypeaheadWindow.prototype, "selectEvent", void 0);
	    NgbTypeaheadWindow = __decorate([
	        core_1.Component({
	            selector: 'ngb-typeahead-window',
	            exportAs: 'ngbTypeaheadWindow',
	            host: { 'class': 'dropdown-menu', 'style': 'display: block' },
	            template: "\n    <template #rt let-result=\"result\" let-term=\"term\" let-formatter=\"formatter\">\n      <ngb-highlight [result]=\"formatter(result)\" [term]=\"term\"></ngb-highlight>\n    </template>\n    <template ngFor [ngForOf]=\"results\" let-result let-idx=\"index\">\n      <button type=\"button\" class=\"dropdown-item\" [class.active]=\"idx === activeIdx\" \n        (mouseenter)=\"markActive(idx)\" \n        (click)=\"select(result)\">\n          <template [ngTemplateOutlet]=\"resultTemplate || rt\" \n          [ngOutletContext]=\"{result: result, term: term, formatter: formatter}\"></template>\n      </button>\n    </template>\n  "
	        }), 
	        __metadata('design:paramtypes', [])
	    ], NgbTypeaheadWindow);
	    return NgbTypeaheadWindow;
	}());
	exports.NgbTypeaheadWindow = NgbTypeaheadWindow;
	//# sourceMappingURL=typeahead-window.js.map

/***/ },
/* 71 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var forms_1 = __webpack_require__(12);
	var Observable_1 = __webpack_require__(72);
	__webpack_require__(73);
	__webpack_require__(74);
	__webpack_require__(75);
	var positioning_1 = __webpack_require__(30);
	var typeahead_window_1 = __webpack_require__(70);
	var popup_1 = __webpack_require__(38);
	var util_1 = __webpack_require__(5);
	var typeahead_config_1 = __webpack_require__(76);
	var Key;
	(function (Key) {
	    Key[Key["Tab"] = 9] = "Tab";
	    Key[Key["Enter"] = 13] = "Enter";
	    Key[Key["Escape"] = 27] = "Escape";
	    Key[Key["ArrowUp"] = 38] = "ArrowUp";
	    Key[Key["ArrowDown"] = 40] = "ArrowDown";
	})(Key || (Key = {}));
	var NGB_TYPEAHEAD_VALUE_ACCESSOR = {
	    provide: forms_1.NG_VALUE_ACCESSOR,
	    useExisting: core_1.forwardRef(function () { return NgbTypeahead; }),
	    multi: true
	};
	/**
	 * NgbTypeahead directive provides a simple way of creating powerful typeaheads from any text input
	 */
	var NgbTypeahead = (function () {
	    function NgbTypeahead(_elementRef, _viewContainerRef, _renderer, _injector, componentFactoryResolver, config, ngZone) {
	        var _this = this;
	        this._elementRef = _elementRef;
	        this._viewContainerRef = _viewContainerRef;
	        this._renderer = _renderer;
	        this._injector = _injector;
	        /**
	         * An event emitted when a match is selected. Event payload is of type NgbTypeaheadSelectItemEvent.
	         */
	        this.selectItem = new core_1.EventEmitter();
	        this._onTouched = function () { };
	        this._onChange = function (_) { };
	        this.editable = config.editable;
	        this.focusFirst = config.focusFirst;
	        this.showHint = config.showHint;
	        this._valueChanges = Observable_1.Observable.fromEvent(_elementRef.nativeElement, 'input', function ($event) { return $event.target.value; });
	        this._popupService = new popup_1.PopupService(typeahead_window_1.NgbTypeaheadWindow, _injector, _viewContainerRef, _renderer, componentFactoryResolver);
	        this._zoneSubscription = ngZone.onStable.subscribe(function () {
	            if (_this._windowRef) {
	                positioning_1.positionElements(_this._elementRef.nativeElement, _this._windowRef.location.nativeElement, 'bottom-left');
	            }
	        });
	    }
	    NgbTypeahead.prototype.ngOnInit = function () {
	        var _this = this;
	        this._subscription = this._subscribeToUserInput(this._valueChanges
	            .do(function (value) {
	            _this._userInput = value;
	            if (_this.editable) {
	                _this._onChange(value);
	            }
	        })
	            .let(this.ngbTypeahead));
	    };
	    NgbTypeahead.prototype.ngOnDestroy = function () {
	        this._unsubscribeFromUserInput();
	        this._zoneSubscription.unsubscribe();
	    };
	    NgbTypeahead.prototype.registerOnChange = function (fn) { this._onChange = fn; };
	    NgbTypeahead.prototype.registerOnTouched = function (fn) { this._onTouched = fn; };
	    NgbTypeahead.prototype.writeValue = function (value) { this._writeInputValue(this._formatItemForInput(value)); };
	    NgbTypeahead.prototype.setDisabledState = function (isDisabled) {
	        this._renderer.setElementProperty(this._elementRef.nativeElement, 'disabled', isDisabled);
	    };
	    NgbTypeahead.prototype.dismissPopup = function () {
	        if (this.isPopupOpen()) {
	            this._closePopup();
	            this._writeInputValue(this._userInput);
	        }
	    };
	    NgbTypeahead.prototype.isPopupOpen = function () { return this._windowRef != null; };
	    NgbTypeahead.prototype.handleBlur = function () { this._onTouched(); };
	    NgbTypeahead.prototype.handleKeyDown = function (event) {
	        if (!this._windowRef) {
	            return;
	        }
	        if (Key[util_1.toString(event.which)]) {
	            event.preventDefault();
	            switch (event.which) {
	                case Key.ArrowDown:
	                    this._windowRef.instance.next();
	                    this._showHint();
	                    break;
	                case Key.ArrowUp:
	                    this._windowRef.instance.prev();
	                    this._showHint();
	                    break;
	                case Key.Enter:
	                case Key.Tab:
	                    var result = this._windowRef.instance.getActive();
	                    if (util_1.isDefined(result)) {
	                        this._selectResult(result);
	                    }
	                    this._closePopup();
	                    break;
	                case Key.Escape:
	                    this.dismissPopup();
	                    break;
	            }
	        }
	    };
	    NgbTypeahead.prototype._openPopup = function () {
	        var _this = this;
	        if (!this._windowRef) {
	            this._windowRef = this._popupService.open();
	            this._windowRef.instance.selectEvent.subscribe(function (result) { return _this._selectResultClosePopup(result); });
	        }
	    };
	    NgbTypeahead.prototype._closePopup = function () {
	        this._popupService.close();
	        this._windowRef = null;
	    };
	    NgbTypeahead.prototype._selectResult = function (result) {
	        var defaultPrevented = false;
	        this.selectItem.emit({ item: result, preventDefault: function () { defaultPrevented = true; } });
	        if (!defaultPrevented) {
	            this.writeValue(result);
	            this._onChange(result);
	        }
	    };
	    NgbTypeahead.prototype._selectResultClosePopup = function (result) {
	        this._selectResult(result);
	        this._closePopup();
	    };
	    NgbTypeahead.prototype._showHint = function () {
	        if (this.showHint) {
	            var userInputLowerCase = this._userInput.toLowerCase();
	            var formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());
	            if (userInputLowerCase === formattedVal.substr(0, this._userInput.length).toLowerCase()) {
	                this._writeInputValue(this._userInput + formattedVal.substr(this._userInput.length));
	                this._renderer.invokeElementMethod(this._elementRef.nativeElement, 'setSelectionRange', [this._userInput.length, formattedVal.length]);
	            }
	            else {
	                this.writeValue(this._windowRef.instance.getActive());
	            }
	        }
	    };
	    NgbTypeahead.prototype._formatItemForInput = function (item) {
	        return item && this.inputFormatter ? this.inputFormatter(item) : util_1.toString(item);
	    };
	    NgbTypeahead.prototype._writeInputValue = function (value) {
	        this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', value);
	    };
	    NgbTypeahead.prototype._subscribeToUserInput = function (userInput$) {
	        var _this = this;
	        return userInput$.subscribe(function (results) {
	            if (!results || results.length === 0) {
	                _this._closePopup();
	            }
	            else {
	                _this._openPopup();
	                _this._windowRef.instance.activeIdx = _this.focusFirst ? 0 : -1;
	                _this._windowRef.instance.results = results;
	                _this._windowRef.instance.term = _this._elementRef.nativeElement.value;
	                if (_this.resultFormatter) {
	                    _this._windowRef.instance.formatter = _this.resultFormatter;
	                }
	                if (_this.resultTemplate) {
	                    _this._windowRef.instance.resultTemplate = _this.resultTemplate;
	                }
	                _this._showHint();
	                // The observable stream we are subscribing to might have async steps
	                // and if a component containing typeahead is using the OnPush strategy
	                // the change detection turn wouldn't be invoked automatically.
	                _this._windowRef.changeDetectorRef.detectChanges();
	            }
	        });
	    };
	    NgbTypeahead.prototype._unsubscribeFromUserInput = function () {
	        if (this._subscription) {
	            this._subscription.unsubscribe();
	        }
	        this._subscription = null;
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbTypeahead.prototype, "editable", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbTypeahead.prototype, "focusFirst", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Function)
	    ], NgbTypeahead.prototype, "inputFormatter", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Function)
	    ], NgbTypeahead.prototype, "ngbTypeahead", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Function)
	    ], NgbTypeahead.prototype, "resultFormatter", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', core_1.TemplateRef)
	    ], NgbTypeahead.prototype, "resultTemplate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], NgbTypeahead.prototype, "showHint", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', Object)
	    ], NgbTypeahead.prototype, "selectItem", void 0);
	    NgbTypeahead = __decorate([
	        core_1.Directive({
	            selector: 'input[ngbTypeahead]',
	            host: {
	                '(blur)': 'handleBlur()',
	                '[class.open]': 'isPopupOpen()',
	                '(document:click)': 'dismissPopup()',
	                '(keydown)': 'handleKeyDown($event)',
	                'autocomplete': 'off',
	                'autocapitalize': 'off',
	                'autocorrect': 'off'
	            },
	            providers: [NGB_TYPEAHEAD_VALUE_ACCESSOR]
	        }), 
	        __metadata('design:paramtypes', [core_1.ElementRef, core_1.ViewContainerRef, core_1.Renderer, core_1.Injector, core_1.ComponentFactoryResolver, typeahead_config_1.NgbTypeaheadConfig, core_1.NgZone])
	    ], NgbTypeahead);
	    return NgbTypeahead;
	}());
	exports.NgbTypeahead = NgbTypeahead;
	//# sourceMappingURL=typeahead.js.map

/***/ },
/* 72 */
/***/ function(module, exports) {

	module.exports = __WEBPACK_EXTERNAL_MODULE_72__;

/***/ },
/* 73 */
/***/ function(module, exports) {

	module.exports = __WEBPACK_EXTERNAL_MODULE_73__;

/***/ },
/* 74 */
/***/ function(module, exports) {

	module.exports = __WEBPACK_EXTERNAL_MODULE_74__;

/***/ },
/* 75 */
/***/ function(module, exports) {

	module.exports = __WEBPACK_EXTERNAL_MODULE_75__;

/***/ },
/* 76 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	/**
	 * Configuration service for the NgbTypeahead component.
	 * You can inject this service, typically in your root component, and customize the values of its properties in
	 * order to provide default values for all the typeaheads used in the application.
	 */
	var NgbTypeaheadConfig = (function () {
	    function NgbTypeaheadConfig() {
	        this.editable = true;
	        this.focusFirst = true;
	        this.showHint = false;
	    }
	    NgbTypeaheadConfig = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [])
	    ], NgbTypeaheadConfig);
	    return NgbTypeaheadConfig;
	}());
	exports.NgbTypeaheadConfig = NgbTypeaheadConfig;
	//# sourceMappingURL=typeahead-config.js.map

/***/ }
/******/ ])
});
;
//# sourceMappingURL=ng-bootstrap.js.map