text: /**
   * Copyright 2017, Google, Inc.
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *    http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  (function (global) {
    System.config({
      // DEMO ONLY! REAL CODE SHOULD NOT TRANSPILE IN THE BROWSER
      transpiler: 'ts',
      typescriptOptions: {
        // Copy of compiler options in standard tsconfig.json
        "target": "es5",
        "module": "commonjs",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "noImplicitAny": true,
        "suppressImplicitAnyIndexErrors": true
      },
      meta: {
        'typescript': {
          "exports": "ts"
        }
      },
      paths: {
        // paths serve as alias
        'npm:': 'https://unpkg.com/'
      },
      // map tells the System loader where to look for things
      map: {
        // our app is within the app folder
        app: 'app',
  
        // angular bundles
        '@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/upgrade': 'npm:@angular/upgrade/bundles/upgrade.umd.js',
        '@angular/upgrade/static': 'npm:@angular/upgrade/bundles/upgrade-static.umd.js',
        'angular2-datatable': 'npm:angular2-datatable',
         'lodash': 'npm:lodash',
  
        // other libraries
        'rxjs': 'npm:rxjs',
        'ts': 'npm:plugin-typescript@4.0.10/lib/plugin.js',
        'typescript': 'npm:typescript@2.0.3/lib/typescript.js',
  
      },
      // packages tells the System loader how to load when no filename and/or no extension
      packages: {
        app: {
          main: './main.ts',
          defaultExtension: 'ts'
        },
        rxjs: {
          defaultExtension: 'js'
        },
        'angular2-datatable': {
  		main: './index.js',
  		defaultExtension: 'js'
  	}
      }
    });
  
    if (global.autoBootstrap) { bootstrap(); }
  
    // Bootstrap with a default `AppModule`
    // ignore an `app/app.module.ts` and `app/main.ts`, even if present
    // This function exists primarily (exclusively?) for the QuickStart
    function bootstrap() {
      console.log('Auto-bootstrapping');
  
      // Stub out `app/main.ts` so System.import('app') doesn't fail if called in the index.html
      System.set(System.normalizeSync('app/main.ts'), System.newModule({ }));
  
      // bootstrap and launch the app (equivalent to standard main.ts)
      Promise.all([
        System.import('@angular/platform-browser-dynamic'),
        getAppModule()
      ])
      .then(function (imports) {
        var platform = imports[0];
        var app      = imports[1];
        platform.platformBrowserDynamic().bootstrapModule(app.AppModule);
      })
      .catch(function(err){ console.error(err); });
    }
  
    // Make the default AppModule
    // returns a promise for the AppModule
    function getAppModule() {
      console.log('Making a bare-bones, default AppModule');
  
      return Promise.all([
        System.import('@angular/core'),
        System.import('@angular/platform-browser'),
        System.import('app/app.component')
      ])
      .then(function (imports) {
  
        var core    = imports[0];
        var browser = imports[1];
        var appComp = imports[2].AppComponent;
  
        var AppModule = function() {}
  
        AppModule.annotations = [
          new core.NgModule({
            imports:      [ browser.BrowserModule ],
            declarations: [ appComp ],
            bootstrap:    [ appComp ]
          })
        ]
        return {AppModule: AppModule};
      })
    }
  })(this);
  