/* eslint-disable */

// 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.

/*
 * ::WARNING::
 * THIS IS A GENERATED FILE. DO NOT EDIT.
 */

// Provide a global location to place configuration settings and module
// creation.
export default {
  // The root path to run the application.
  root: "<%= root %>",
  version: "<%= version %>",
  // Host is used as prefix for urls
  host: "<%= host %>",
  i18n: <%= i18n %>
};
