(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["default~pages/challenges~pages/main~pages/notifications~pages/scoreboard~pages/settings~pages/setup~~6822bf1f"],{

/***/ "./CTFd/themes/core/assets/js/CTFd.js":
/*!********************************************!*\
  !*** ./CTFd/themes/core/assets/js/CTFd.js ***!
  \********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _fetch = _interopRequireDefault(__webpack_require__(/*! ./fetch */ \"./CTFd/themes/core/assets/js/fetch.js\"));\n\nvar _config = _interopRequireDefault(__webpack_require__(/*! ./config */ \"./CTFd/themes/core/assets/js/config.js\"));\n\nvar _api = __webpack_require__(/*! ./api */ \"./CTFd/themes/core/assets/js/api.js\");\n\n__webpack_require__(/*! ./patch */ \"./CTFd/themes/core/assets/js/patch.js\");\n\nvar _markdownIt = _interopRequireDefault(__webpack_require__(/*! markdown-it */ \"./node_modules/markdown-it/index.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = _interopRequireDefault(__webpack_require__(/*! ./ezq */ \"./CTFd/themes/core/assets/js/ezq.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { if (i % 2) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } else { Object.defineProperties(target, Object.getOwnPropertyDescriptors(arguments[i])); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar api = new _api.API(\"/\");\nvar user = {};\nvar _internal = {};\nvar ui = {\n  ezq: _ezq.default\n};\nvar lib = {\n  $: _jquery.default,\n  markdown: markdown\n};\nvar initialized = false;\n\nvar init = function init(data) {\n  if (initialized) {\n    return;\n  }\n\n  initialized = true;\n  _config.default.urlRoot = data.urlRoot || _config.default.urlRoot;\n  _config.default.csrfNonce = data.csrfNonce || _config.default.csrfNonce;\n  _config.default.userMode = data.userMode || _config.default.userMode;\n  api.domain = _config.default.urlRoot + \"/api/v1\";\n  user.id = data.userId;\n};\n\nvar plugin = {\n  run: function run(f) {\n    f(CTFd);\n  }\n};\n\nfunction markdown(config) {\n  // Merge passed config with original. Default to original.\n  var md_config = _objectSpread({}, {\n    html: true,\n    linkify: true\n  }, {}, config);\n\n  var md = (0, _markdownIt.default)(md_config);\n\n  md.renderer.rules.link_open = function (tokens, idx, options, env, self) {\n    tokens[idx].attrPush([\"target\", \"_blank\"]);\n    return self.renderToken(tokens, idx, options);\n  };\n\n  return md;\n}\n\nvar CTFd = {\n  init: init,\n  config: _config.default,\n  fetch: _fetch.default,\n  user: user,\n  ui: ui,\n  api: api,\n  lib: lib,\n  _internal: _internal,\n  plugin: plugin\n};\nvar _default = CTFd;\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/CTFd.js?");

/***/ }),

/***/ "./CTFd/themes/core/assets/js/api.js":
/*!*******************************************!*\
  !*** ./CTFd/themes/core/assets/js/api.js ***!
  \*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

;
eval("\n\nvar _fetch = _interopRequireDefault(__webpack_require__(/*! ./fetch */ \"./CTFd/themes/core/assets/js/fetch.js\"));\n\nvar _q = _interopRequireDefault(__webpack_require__(/*! q */ \"./node_modules/q/q.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n *\n * @class API\n * @param {(string|object)} [domainOrOptions] - The project domain or options object. If object, see the object's optional properties.\n * @param {string} [domainOrOptions.domain] - The project domain\n * @param {object} [domainOrOptions.token] - auth token - object with value property and optional headerOrQueryName and isQuery properties\n */\nvar API = function () {\n  \"use strict\";\n\n  function API(options) {\n    var domain = _typeof(options) === \"object\" ? options.domain : options;\n    this.domain = domain ? domain : \"\";\n\n    if (this.domain.length === 0) {\n      throw new Error(\"Domain parameter must be specified as a string.\");\n    }\n  }\n\n  function serializeQueryParams(parameters) {\n    var str = [];\n\n    for (var p in parameters) {\n      if (parameters.hasOwnProperty(p)) {\n        str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(parameters[p]));\n      }\n    }\n\n    return str.join(\"&\");\n  }\n\n  function mergeQueryParams(parameters, queryParameters) {\n    if (parameters.$queryParameters) {\n      Object.keys(parameters.$queryParameters).forEach(function (parameterName) {\n        var parameter = parameters.$queryParameters[parameterName];\n        queryParameters[parameterName] = parameter;\n      });\n    }\n\n    return queryParameters;\n  }\n  /**\n   * HTTP Request\n   * @method\n   * @name API#request\n   * @param {string} method - http method\n   * @param {string} url - url to do request\n   * @param {object} parameters\n   * @param {object} body - body parameters / object\n   * @param {object} headers - header parameters\n   * @param {object} queryParameters - querystring parameters\n   * @param {object} form - form data object\n   * @param {object} deferred - promise object\n   */\n\n\n  API.prototype.request = function (method, url, parameters, body, headers, queryParameters, form, deferred) {\n    var queryParams = queryParameters && Object.keys(queryParameters).length ? serializeQueryParams(queryParameters) : null;\n    var urlWithParams = url + (queryParams ? \"?\" + queryParams : \"\");\n\n    if (body && !Object.keys(body).length) {\n      body = undefined;\n    }\n\n    (0, _fetch.default)(urlWithParams, {\n      method: method,\n      headers: headers,\n      body: JSON.stringify(body)\n    }).then(function (response) {\n      return response.json();\n    }).then(function (body) {\n      deferred.resolve(body);\n    }).catch(function (error) {\n      deferred.reject(error);\n    });\n  };\n  /**\n   *\n   * @method\n   * @name API#post_award_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_award_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/awards\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#delete_award\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.awardId - An Award ID\n   */\n\n\n  API.prototype.delete_award = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/awards/{award_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{award_id}\", parameters[\"awardId\"]);\n\n    if (parameters[\"awardId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: awardId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_award\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.awardId - An Award ID\n   */\n\n\n  API.prototype.get_award = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/awards/{award_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{award_id}\", parameters[\"awardId\"]);\n\n    if (parameters[\"awardId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: awardId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_challenge_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_challenge_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/challenges\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_challenge_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_challenge_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/challenges\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_challenge_attempt\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_challenge_attempt = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/challenges/attempt\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_challenge_types\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_challenge_types = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/challenges/types\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#patch_challenge\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.challengeId - A Challenge ID\n   */\n\n\n  API.prototype.patch_challenge = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/challenges/{challenge_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n    if (parameters[\"challengeId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: challengeId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#delete_challenge\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.challengeId - A Challenge ID\n   */\n\n\n  API.prototype.delete_challenge = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/challenges/{challenge_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n    if (parameters[\"challengeId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: challengeId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_challenge\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.challengeId - A Challenge ID\n   */\n\n\n  API.prototype.get_challenge = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/challenges/{challenge_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n    if (parameters[\"challengeId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: challengeId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_challenge_files\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.id - A Challenge ID\n   * @param {string} parameters.challengeId -\n   */\n\n\n  API.prototype.get_challenge_files = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/challenges/{challenge_id}/files\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n\n    if (parameters[\"id\"] !== undefined) {\n      queryParameters[\"id\"] = parameters[\"id\"];\n    }\n\n    path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n    if (parameters[\"challengeId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: challengeId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_challenge_flags\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.id - A Challenge ID\n   * @param {string} parameters.challengeId -\n   */\n\n\n  API.prototype.get_challenge_flags = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/challenges/{challenge_id}/flags\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n\n    if (parameters[\"id\"] !== undefined) {\n      queryParameters[\"id\"] = parameters[\"id\"];\n    }\n\n    path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n    if (parameters[\"challengeId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: challengeId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_challenge_hints\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.id - A Challenge ID\n   * @param {string} parameters.challengeId -\n   */\n\n\n  API.prototype.get_challenge_hints = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/challenges/{challenge_id}/hints\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n\n    if (parameters[\"id\"] !== undefined) {\n      queryParameters[\"id\"] = parameters[\"id\"];\n    }\n\n    path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n    if (parameters[\"challengeId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: challengeId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_challenge_solves\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.id - A Challenge ID\n   * @param {string} parameters.challengeId -\n   */\n\n\n  API.prototype.get_challenge_solves = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/challenges/{challenge_id}/solves\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n\n    if (parameters[\"id\"] !== undefined) {\n      queryParameters[\"id\"] = parameters[\"id\"];\n    }\n\n    path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n    if (parameters[\"challengeId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: challengeId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_challenge_tags\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.id - A Challenge ID\n   * @param {string} parameters.challengeId -\n   */\n\n\n  API.prototype.get_challenge_tags = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/challenges/{challenge_id}/tags\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n\n    if (parameters[\"id\"] !== undefined) {\n      queryParameters[\"id\"] = parameters[\"id\"];\n    }\n\n    path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n    if (parameters[\"challengeId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: challengeId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_config_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_config_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/configs\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#patch_config_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.patch_config_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/configs\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_config_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_config_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/configs\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#patch_config\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.configKey -\n   */\n\n\n  API.prototype.patch_config = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/configs/{config_key}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{config_key}\", parameters[\"configKey\"]);\n\n    if (parameters[\"configKey\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: configKey\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#delete_config\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.configKey -\n   */\n\n\n  API.prototype.delete_config = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/configs/{config_key}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{config_key}\", parameters[\"configKey\"]);\n\n    if (parameters[\"configKey\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: configKey\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_config\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.configKey -\n   */\n\n\n  API.prototype.get_config = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/configs/{config_key}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{config_key}\", parameters[\"configKey\"]);\n\n    if (parameters[\"configKey\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: configKey\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_files_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_files_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/files\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_files_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_files_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/files\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#delete_files_detail\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.fileId -\n   */\n\n\n  API.prototype.delete_files_detail = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/files/{file_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{file_id}\", parameters[\"fileId\"]);\n\n    if (parameters[\"fileId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: fileId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_files_detail\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.fileId -\n   */\n\n\n  API.prototype.get_files_detail = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/files/{file_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{file_id}\", parameters[\"fileId\"]);\n\n    if (parameters[\"fileId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: fileId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_flag_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_flag_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/flags\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_flag_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_flag_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/flags\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_flag_types\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_flag_types = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/flags/types\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_flag_types_1\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.typeName -\n   */\n\n\n  API.prototype.get_flag_types_1 = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/flags/types/{type_name}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{type_name}\", parameters[\"typeName\"]);\n\n    if (parameters[\"typeName\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: typeName\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#patch_flag\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.flagId -\n   */\n\n\n  API.prototype.patch_flag = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/flags/{flag_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{flag_id}\", parameters[\"flagId\"]);\n\n    if (parameters[\"flagId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: flagId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#delete_flag\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.flagId -\n   */\n\n\n  API.prototype.delete_flag = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/flags/{flag_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{flag_id}\", parameters[\"flagId\"]);\n\n    if (parameters[\"flagId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: flagId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_flag\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.flagId -\n   */\n\n\n  API.prototype.get_flag = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/flags/{flag_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{flag_id}\", parameters[\"flagId\"]);\n\n    if (parameters[\"flagId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: flagId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_hint_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_hint_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/hints\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_hint_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_hint_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/hints\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#patch_hint\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.hintId -\n   */\n\n\n  API.prototype.patch_hint = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/hints/{hint_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{hint_id}\", parameters[\"hintId\"]);\n\n    if (parameters[\"hintId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: hintId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#delete_hint\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.hintId -\n   */\n\n\n  API.prototype.delete_hint = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/hints/{hint_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{hint_id}\", parameters[\"hintId\"]);\n\n    if (parameters[\"hintId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: hintId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_hint\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.hintId -\n   */\n\n\n  API.prototype.get_hint = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/hints/{hint_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{hint_id}\", parameters[\"hintId\"]);\n\n    if (parameters[\"hintId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: hintId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_notification_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_notification_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/notifications\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_notification_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_notification_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/notifications\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#delete_notification\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.notificationId - A Notification ID\n   */\n\n\n  API.prototype.delete_notification = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/notifications/{notification_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{notification_id}\", parameters[\"notificationId\"]);\n\n    if (parameters[\"notificationId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: notificationId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_notification\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.notificationId - A Notification ID\n   */\n\n\n  API.prototype.get_notification = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/notifications/{notification_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{notification_id}\", parameters[\"notificationId\"]);\n\n    if (parameters[\"notificationId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: notificationId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_page_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_page_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/pages\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_page_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_page_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/pages\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#patch_page_detail\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.pageId -\n   */\n\n\n  API.prototype.patch_page_detail = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/pages/{page_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{page_id}\", parameters[\"pageId\"]);\n\n    if (parameters[\"pageId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: pageId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#delete_page_detail\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.pageId -\n   */\n\n\n  API.prototype.delete_page_detail = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/pages/{page_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{page_id}\", parameters[\"pageId\"]);\n\n    if (parameters[\"pageId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: pageId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_page_detail\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.pageId -\n   */\n\n\n  API.prototype.get_page_detail = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/pages/{page_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{page_id}\", parameters[\"pageId\"]);\n\n    if (parameters[\"pageId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: pageId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_scoreboard_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_scoreboard_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/scoreboard\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_scoreboard_detail\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.count - How many top teams to return\n   */\n\n\n  API.prototype.get_scoreboard_detail = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/scoreboard/top/{count}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{count}\", parameters[\"count\"]);\n\n    if (parameters[\"count\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: count\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_challenge_solve_statistics\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_challenge_solve_statistics = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/statistics/challenges/solves\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_challenge_solve_percentages\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_challenge_solve_percentages = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/statistics/challenges/solves/percentages\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_challenge_property_counts\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.column -\n   */\n\n\n  API.prototype.get_challenge_property_counts = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/statistics/challenges/{column}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{column}\", parameters[\"column\"]);\n\n    if (parameters[\"column\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: column\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_submission_property_counts\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.column -\n   */\n\n\n  API.prototype.get_submission_property_counts = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/statistics/submissions/{column}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{column}\", parameters[\"column\"]);\n\n    if (parameters[\"column\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: column\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_team_statistics\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_team_statistics = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/statistics/teams\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_user_statistics\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_user_statistics = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/statistics/users\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_user_property_counts\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.column -\n   */\n\n\n  API.prototype.get_user_property_counts = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/statistics/users/{column}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{column}\", parameters[\"column\"]);\n\n    if (parameters[\"column\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: column\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_submissions_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_submissions_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/submissions\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_submissions_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_submissions_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/submissions\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#delete_submission\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.submissionId - A Submission ID\n   */\n\n\n  API.prototype.delete_submission = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/submissions/{submission_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{submission_id}\", parameters[\"submissionId\"]);\n\n    if (parameters[\"submissionId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: submissionId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_submission\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.submissionId - A Submission ID\n   */\n\n\n  API.prototype.get_submission = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/submissions/{submission_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{submission_id}\", parameters[\"submissionId\"]);\n\n    if (parameters[\"submissionId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: submissionId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_tag_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_tag_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/tags\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_tag_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_tag_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/tags\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#patch_tag\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.tagId - A Tag ID\n   */\n\n\n  API.prototype.patch_tag = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/tags/{tag_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{tag_id}\", parameters[\"tagId\"]);\n\n    if (parameters[\"tagId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: tagId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#delete_tag\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.tagId - A Tag ID\n   */\n\n\n  API.prototype.delete_tag = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/tags/{tag_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{tag_id}\", parameters[\"tagId\"]);\n\n    if (parameters[\"tagId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: tagId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_tag\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.tagId - A Tag ID\n   */\n\n\n  API.prototype.get_tag = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/tags/{tag_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{tag_id}\", parameters[\"tagId\"]);\n\n    if (parameters[\"tagId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: tagId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_team_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_team_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/teams\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_team_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_team_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/teams\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#patch_team_private\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.teamId - Current Team\n   */\n\n\n  API.prototype.patch_team_private = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/teams/me\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n\n    if (parameters[\"teamId\"] !== undefined) {\n      queryParameters[\"team_id\"] = parameters[\"teamId\"];\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_team_private\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.teamId - Current Team\n   */\n\n\n  API.prototype.get_team_private = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/teams/me\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n\n    if (parameters[\"teamId\"] !== undefined) {\n      queryParameters[\"team_id\"] = parameters[\"teamId\"];\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#patch_team_public\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.teamId - Team ID\n   */\n\n\n  API.prototype.patch_team_public = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/teams/{team_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n    if (parameters[\"teamId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: teamId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#delete_team_public\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.teamId - Team ID\n   */\n\n\n  API.prototype.delete_team_public = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/teams/{team_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n    if (parameters[\"teamId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: teamId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_team_public\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.teamId - Team ID\n   */\n\n\n  API.prototype.get_team_public = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/teams/{team_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n    if (parameters[\"teamId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: teamId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_team_awards\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.teamId - Team ID or 'me'\n   */\n\n\n  API.prototype.get_team_awards = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/teams/{team_id}/awards\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n    if (parameters[\"teamId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: teamId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_team_fails\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.teamId - Team ID or 'me'\n   */\n\n\n  API.prototype.get_team_fails = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/teams/{team_id}/fails\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n    if (parameters[\"teamId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: teamId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_team_solves\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.teamId - Team ID or 'me'\n   */\n\n\n  API.prototype.get_team_solves = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/teams/{team_id}/solves\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n    if (parameters[\"teamId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: teamId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_unlock_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_unlock_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/unlocks\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_unlock_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_unlock_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/unlocks\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#post_user_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.post_user_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/users\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_user_list\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_user_list = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/users\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#patch_user_private\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.patch_user_private = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/users/me\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_user_private\n   * @param {object} parameters - method options and parameters\n   */\n\n\n  API.prototype.get_user_private = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/users/me\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#patch_user_public\n   * @param {object} parameters - method options and parameters\n   * @param {integer} parameters.userId - User ID\n   */\n\n\n  API.prototype.patch_user_public = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/users/{user_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n    if (parameters[\"userId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: userId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#delete_user_public\n   * @param {object} parameters - method options and parameters\n   * @param {integer} parameters.userId - User ID\n   */\n\n\n  API.prototype.delete_user_public = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/users/{user_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n    if (parameters[\"userId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: userId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_user_public\n   * @param {object} parameters - method options and parameters\n   * @param {integer} parameters.userId - User ID\n   */\n\n\n  API.prototype.get_user_public = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/users/{user_id}\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n    if (parameters[\"userId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: userId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_user_awards\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.userId - User ID or 'me'\n   */\n\n\n  API.prototype.get_user_awards = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/users/{user_id}/awards\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n    if (parameters[\"userId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: userId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_user_fails\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.userId - User ID or 'me'\n   */\n\n\n  API.prototype.get_user_fails = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/users/{user_id}/fails\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n    if (parameters[\"userId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: userId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n  /**\n   *\n   * @method\n   * @name API#get_user_solves\n   * @param {object} parameters - method options and parameters\n   * @param {string} parameters.userId - User ID or 'me'\n   */\n\n\n  API.prototype.get_user_solves = function (parameters) {\n    if (parameters === undefined) {\n      parameters = {};\n    }\n\n    var deferred = _q.default.defer();\n\n    var domain = this.domain,\n        path = \"/users/{user_id}/solves\";\n    var body = {},\n        queryParameters = {},\n        headers = {},\n        form = {};\n    headers[\"Accept\"] = [\"application/json\"];\n    headers[\"Content-Type\"] = [\"application/json\"];\n    path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n    if (parameters[\"userId\"] === undefined) {\n      deferred.reject(new Error(\"Missing required  parameter: userId\"));\n      return deferred.promise;\n    }\n\n    queryParameters = mergeQueryParams(parameters, queryParameters);\n    this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n    return deferred.promise;\n  };\n\n  return API;\n}();\n\nexports.API = API;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/api.js?");

/***/ }),

/***/ "./CTFd/themes/core/assets/js/config.js":
/*!**********************************************!*\
  !*** ./CTFd/themes/core/assets/js/config.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = {\n  urlRoot: \"\",\n  csrfNonce: \"\",\n  userMode: \"\"\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/config.js?");

/***/ }),

/***/ "./CTFd/themes/core/assets/js/events.js":
/*!**********************************************!*\
  !*** ./CTFd/themes/core/assets/js/events.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _howler = __webpack_require__(/*! howler */ \"./node_modules/howler/dist/howler.js\");\n\nvar _eventSourcePolyfill = __webpack_require__(/*! event-source-polyfill */ \"./node_modules/event-source-polyfill/src/eventsource.js\");\n\nvar _ezq = __webpack_require__(/*! ./ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./CTFd/themes/core/assets/js/utils.js\");\n\nvar EventSource = _eventSourcePolyfill.NativeEventSource || _eventSourcePolyfill.EventSourcePolyfill;\n\nvar _default = function _default(root) {\n  var source = new EventSource(root + \"/events\");\n  var wc = new _utils.WindowController();\n  var howl = new _howler.Howl({\n    src: [root + \"/themes/core/static/sounds/notification.webm\", root + \"/themes/core/static/sounds/notification.mp3\"]\n  });\n  (0, _utils.init_notification_counter)();\n\n  function connect() {\n    source.addEventListener(\"notification\", function (event) {\n      var data = JSON.parse(event.data);\n      wc.broadcast(\"notification\", data);\n      render(data);\n    }, false);\n  }\n\n  function disconnect() {\n    if (source) {\n      source.close();\n    }\n  }\n\n  function render(data) {\n    switch (data.type) {\n      case \"toast\":\n        (0, _utils.inc_notification_counter)(); // Trim toast body to length\n\n        var length = 50;\n        var trimmed_content = data.content.length > length ? data.content.substring(0, length - 3) + \"...\" : data.content;\n        var clicked = false;\n        (0, _ezq.ezToast)({\n          title: data.title,\n          body: trimmed_content,\n          onclick: function onclick() {\n            (0, _ezq.ezAlert)({\n              title: data.title,\n              body: data.content,\n              button: \"Got it!\",\n              success: function success() {\n                clicked = true;\n                (0, _utils.dec_notification_counter)();\n              }\n            });\n          },\n          onclose: function onclose() {\n            if (!clicked) {\n              (0, _utils.dec_notification_counter)();\n            }\n          }\n        });\n        break;\n\n      case \"alert\":\n        (0, _utils.inc_notification_counter)();\n        (0, _ezq.ezAlert)({\n          title: data.title,\n          body: data.content,\n          button: \"Got it!\",\n          success: function success() {\n            (0, _utils.dec_notification_counter)();\n          }\n        });\n        break;\n\n      case \"background\":\n        (0, _utils.inc_notification_counter)();\n        break;\n\n      default:\n        (0, _utils.inc_notification_counter)();\n        break;\n    }\n\n    if (data.sound) {\n      howl.play();\n    }\n  }\n\n  wc.notification = function (data) {\n    render(data);\n  };\n\n  wc.masterDidChange = function () {\n    if (this.isMaster) {\n      connect();\n    } else {\n      disconnect();\n    }\n  };\n};\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/events.js?");

/***/ }),

/***/ "./CTFd/themes/core/assets/js/ezq.js":
/*!*******************************************!*\
  !*** ./CTFd/themes/core/assets/js/ezq.js ***!
  \*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ezAlert = ezAlert;\nexports.ezToast = ezToast;\nexports.ezQuery = ezQuery;\nexports.ezProgressBar = ezProgressBar;\nexports.ezBadge = ezBadge;\nexports.default = void 0;\n\n__webpack_require__(/*! bootstrap/js/dist/modal */ \"./node_modules/bootstrap/js/dist/modal.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar modalTpl = '<div class=\"modal fade\" tabindex=\"-1\" role=\"dialog\">' + '  <div class=\"modal-dialog\" role=\"document\">' + '    <div class=\"modal-content\">' + '      <div class=\"modal-header\">' + '        <h5 class=\"modal-title\">{0}</h5>' + '        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">' + '          <span aria-hidden=\"true\">&times;</span>' + \"        </button>\" + \"      </div>\" + '      <div class=\"modal-body\">' + \"      </div>\" + '      <div class=\"modal-footer\">' + \"      </div>\" + \"    </div>\" + \"  </div>\" + \"</div>\";\nvar toastTpl = '<div class=\"toast m-3\" role=\"alert\">' + '  <div class=\"toast-header\">' + '    <strong class=\"mr-auto\">{0}</strong>' + '    <button type=\"button\" class=\"ml-2 mb-1 close\" data-dismiss=\"toast\" aria-label=\"Close\">' + '      <span aria-hidden=\"true\">&times;</span>' + \"    </button>\" + \"  </div>\" + '  <div class=\"toast-body\">{1}</div>' + \"</div>\";\nvar progressTpl = '<div class=\"progress\">' + '  <div class=\"progress-bar progress-bar-success progress-bar-striped progress-bar-animated\" role=\"progressbar\" style=\"width: {0}%\">' + \"  </div>\" + \"</div>\";\nvar errorTpl = '<div class=\"alert alert-danger alert-dismissable\" role=\"alert\">\\n' + '  <span class=\"sr-only\">Error:</span>\\n' + \"  {0}\\n\" + '  <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\\n' + \"</div>\";\nvar successTpl = '<div class=\"alert alert-success alert-dismissable submit-row\" role=\"alert\">\\n' + \"  <strong>Success!</strong>\\n\" + \"  {0}\\n\" + '  <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\\n' + \"</div>\";\nvar buttonTpl = '<button type=\"button\" class=\"btn btn-primary\" data-dismiss=\"modal\">{0}</button>';\nvar noTpl = '<button type=\"button\" class=\"btn btn-danger\" data-dismiss=\"modal\">No</button>';\nvar yesTpl = '<button type=\"button\" class=\"btn btn-primary\" data-dismiss=\"modal\">Yes</button>';\n\nfunction ezAlert(args) {\n  var modal = modalTpl.format(args.title);\n  var obj = (0, _jquery.default)(modal);\n\n  if (typeof args.body === \"string\") {\n    obj.find(\".modal-body\").append(\"<p>\".concat(args.body, \"</p>\"));\n  } else {\n    obj.find(\".modal-body\").append((0, _jquery.default)(args.body));\n  }\n\n  var button = (0, _jquery.default)(buttonTpl.format(args.button));\n\n  if (args.success) {\n    (0, _jquery.default)(button).click(function () {\n      args.success();\n    });\n  }\n\n  if (args.large) {\n    obj.find(\".modal-dialog\").addClass(\"modal-lg\");\n  }\n\n  obj.find(\".modal-footer\").append(button);\n  (0, _jquery.default)(\"main\").append(obj);\n  obj.modal(\"show\");\n  (0, _jquery.default)(obj).on(\"hidden.bs.modal\", function () {\n    (0, _jquery.default)(this).modal(\"dispose\");\n  });\n  return obj;\n}\n\nfunction ezToast(args) {\n  var container_available = (0, _jquery.default)(\"#ezq--notifications-toast-container\").length;\n\n  if (!container_available) {\n    (0, _jquery.default)(\"body\").append((0, _jquery.default)(\"<div/>\").attr({\n      id: \"ezq--notifications-toast-container\"\n    }).css({\n      position: \"fixed\",\n      bottom: \"0\",\n      right: \"0\",\n      \"min-width\": \"20%\"\n    }));\n  }\n\n  var res = toastTpl.format(args.title, args.body);\n  var obj = (0, _jquery.default)(res);\n\n  if (args.onclose) {\n    (0, _jquery.default)(obj).find(\"button[data-dismiss=toast]\").click(function () {\n      args.onclose();\n    });\n  }\n\n  if (args.onclick) {\n    var body = (0, _jquery.default)(obj).find(\".toast-body\");\n    body.addClass(\"cursor-pointer\");\n    body.click(function () {\n      args.onclick();\n    });\n  }\n\n  var autohide = args.autohide !== false;\n  var animation = args.animation !== false;\n  var delay = args.delay || 10000; // 10 seconds\n\n  (0, _jquery.default)(\"#ezq--notifications-toast-container\").prepend(obj);\n  obj.toast({\n    autohide: autohide,\n    delay: delay,\n    animation: animation\n  });\n  obj.toast(\"show\");\n  return obj;\n}\n\nfunction ezQuery(args) {\n  var modal = modalTpl.format(args.title);\n  var obj = (0, _jquery.default)(modal);\n\n  if (typeof args.body === \"string\") {\n    obj.find(\".modal-body\").append(\"<p>\".concat(args.body, \"</p>\"));\n  } else {\n    obj.find(\".modal-body\").append((0, _jquery.default)(args.body));\n  }\n\n  var yes = (0, _jquery.default)(yesTpl);\n  var no = (0, _jquery.default)(noTpl);\n  obj.find(\".modal-footer\").append(no);\n  obj.find(\".modal-footer\").append(yes);\n  (0, _jquery.default)(\"main\").append(obj);\n  (0, _jquery.default)(obj).on(\"hidden.bs.modal\", function () {\n    (0, _jquery.default)(this).modal(\"dispose\");\n  });\n  (0, _jquery.default)(yes).click(function () {\n    args.success();\n  });\n  obj.modal(\"show\");\n  return obj;\n}\n\nfunction ezProgressBar(args) {\n  if (args.target) {\n    var _obj = (0, _jquery.default)(args.target);\n\n    var pbar = _obj.find(\".progress-bar\");\n\n    pbar.css(\"width\", args.width + \"%\");\n    return _obj;\n  }\n\n  var progress = progressTpl.format(args.width);\n  var modal = modalTpl.format(args.title);\n  var obj = (0, _jquery.default)(modal);\n  obj.find(\".modal-body\").append((0, _jquery.default)(progress));\n  (0, _jquery.default)(\"main\").append(obj);\n  return obj.modal(\"show\");\n}\n\nfunction ezBadge(args) {\n  var mapping = {\n    success: successTpl,\n    error: errorTpl\n  };\n  var tpl = mapping[args.type].format(args.body);\n  return (0, _jquery.default)(tpl);\n}\n\nvar ezq = {\n  ezAlert: ezAlert,\n  ezToast: ezToast,\n  ezQuery: ezQuery,\n  ezProgressBar: ezProgressBar,\n  ezBadge: ezBadge\n};\nvar _default = ezq;\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/ezq.js?");

/***/ }),

/***/ "./CTFd/themes/core/assets/js/fetch.js":
/*!*********************************************!*\
  !*** ./CTFd/themes/core/assets/js/fetch.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! whatwg-fetch */ \"./node_modules/whatwg-fetch/fetch.js\");\n\nvar _config = _interopRequireDefault(__webpack_require__(/*! ./config */ \"./CTFd/themes/core/assets/js/config.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar fetch = window.fetch;\n\nvar _default = function _default(url, options) {\n  if (options === undefined) {\n    options = {\n      method: \"GET\",\n      credentials: \"same-origin\",\n      headers: {}\n    };\n  }\n\n  url = _config.default.urlRoot + url;\n\n  if (options.headers === undefined) {\n    options.headers = {};\n  }\n\n  options.credentials = \"same-origin\";\n  options.headers[\"Accept\"] = \"application/json\";\n  options.headers[\"Content-Type\"] = \"application/json\";\n  options.headers[\"CSRF-Token\"] = _config.default.csrfNonce;\n  return fetch(url, options);\n};\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/fetch.js?");

/***/ }),

/***/ "./CTFd/themes/core/assets/js/pages/main.js":
/*!**************************************************!*\
  !*** ./CTFd/themes/core/assets/js/pages/main.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

;
eval("\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! ../CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _moment = _interopRequireDefault(__webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\"));\n\nvar _nunjucks = _interopRequireDefault(__webpack_require__(/*! nunjucks */ \"./node_modules/nunjucks/browser/nunjucks.js\"));\n\nvar _howler = __webpack_require__(/*! howler */ \"./node_modules/howler/dist/howler.js\");\n\nvar _events = _interopRequireDefault(__webpack_require__(/*! ../events */ \"./CTFd/themes/core/assets/js/events.js\"));\n\nvar _config = _interopRequireDefault(__webpack_require__(/*! ../config */ \"./CTFd/themes/core/assets/js/config.js\"));\n\nvar _styles = _interopRequireDefault(__webpack_require__(/*! ../styles */ \"./CTFd/themes/core/assets/js/styles.js\"));\n\nvar _times = _interopRequireDefault(__webpack_require__(/*! ../times */ \"./CTFd/themes/core/assets/js/times.js\"));\n\nvar _helpers = _interopRequireDefault(__webpack_require__(/*! ../helpers */ \"./CTFd/themes/core/assets/js/helpers.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_CTFd.default.init(window.init);\n\nwindow.CTFd = _CTFd.default;\nwindow.helpers = _helpers.default;\nwindow.$ = _jquery.default;\nwindow.Moment = _moment.default;\nwindow.nunjucks = _nunjucks.default;\nwindow.Howl = _howler.Howl;\n(0, _jquery.default)(function () {\n  (0, _styles.default)();\n  (0, _times.default)();\n  (0, _events.default)(_config.default.urlRoot);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/pages/main.js?");

/***/ }),

/***/ "./CTFd/themes/core/assets/js/patch.js":
/*!*********************************************!*\
  !*** ./CTFd/themes/core/assets/js/patch.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

;
eval("\n\nvar _q = _interopRequireDefault(__webpack_require__(/*! q */ \"./node_modules/q/q.js\"));\n\nvar _api = __webpack_require__(/*! ./api */ \"./CTFd/themes/core/assets/js/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { if (i % 2) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } else { Object.defineProperties(target, Object.getOwnPropertyDescriptors(arguments[i])); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction mergeQueryParams(parameters, queryParameters) {\n  return _objectSpread({}, parameters, {}, queryParameters);\n}\n\nfunction serializeQueryParams(parameters) {\n  var str = [];\n\n  for (var p in parameters) {\n    if (parameters.hasOwnProperty(p)) {\n      str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(parameters[p]));\n    }\n  }\n\n  return str.join(\"&\");\n}\n\n_api.API.prototype.requestRaw = function (method, url, parameters, body, headers, queryParameters, form, deferred) {\n  var queryParams = queryParameters && Object.keys(queryParameters).length ? serializeQueryParams(queryParameters) : null;\n  var urlWithParams = url + (queryParams ? \"?\" + queryParams : \"\");\n\n  if (body && !Object.keys(body).length) {\n    body = undefined;\n  }\n\n  fetch(urlWithParams, {\n    method: method,\n    headers: headers,\n    body: body\n  }).then(function (response) {\n    return response.json();\n  }).then(function (body) {\n    deferred.resolve(body);\n  }).catch(function (error) {\n    deferred.reject(error);\n  });\n};\n\n_api.API.prototype.patch_user_public = function (parameters, body) {\n  if (parameters === undefined) {\n    parameters = {};\n  }\n\n  var deferred = _q.default.defer();\n\n  var domain = this.domain,\n      path = \"/users/{user_id}\";\n  var queryParameters = {},\n      headers = {},\n      form = {};\n  headers[\"Accept\"] = [\"application/json\"];\n  headers[\"Content-Type\"] = [\"application/json\"];\n  path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n  if (parameters[\"userId\"] === undefined) {\n    deferred.reject(new Error(\"Missing required  parameter: userId\"));\n    return deferred.promise;\n  }\n\n  this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n  return deferred.promise;\n};\n\n_api.API.prototype.patch_user_private = function (parameters, body) {\n  if (parameters === undefined) {\n    parameters = {};\n  }\n\n  var deferred = _q.default.defer();\n\n  var domain = this.domain,\n      path = \"/users/me\";\n  var headers = {},\n      form = {};\n  headers[\"Accept\"] = [\"application/json\"];\n  headers[\"Content-Type\"] = [\"application/json\"];\n  this.request(\"PATCH\", domain + path, parameters, body, headers, {}, form, deferred);\n  return deferred.promise;\n};\n\n_api.API.prototype.post_unlock_list = function (parameters, body) {\n  var deferred = _q.default.defer();\n\n  var domain = this.domain,\n      path = \"/unlocks\";\n  var headers = {},\n      form = {};\n  headers[\"Accept\"] = [\"application/json\"];\n  headers[\"Content-Type\"] = [\"application/json\"];\n  this.request(\"POST\", domain + path, parameters, body, headers, {}, form, deferred);\n  return deferred.promise;\n};\n\n_api.API.prototype.post_notification_list = function (parameters, body) {\n  if (parameters === undefined) {\n    parameters = {};\n  }\n\n  var deferred = _q.default.defer();\n\n  var domain = this.domain,\n      path = \"/notifications\";\n  var queryParameters = {},\n      headers = {},\n      form = {};\n  headers[\"Accept\"] = [\"application/json\"];\n  headers[\"Content-Type\"] = [\"application/json\"];\n  this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n  return deferred.promise;\n};\n\n_api.API.prototype.post_files_list = function (parameters, body) {\n  var deferred = _q.default.defer();\n\n  var domain = this.domain,\n      path = \"/files\";\n  var queryParameters = {},\n      headers = {},\n      form = {};\n  headers[\"Accept\"] = [\"application/json\"];\n  headers[\"Content-Type\"] = [\"application/json\"];\n  this.requestRaw(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n  return deferred.promise;\n};\n\n_api.API.prototype.patch_config = function (parameters, body) {\n  if (parameters === undefined) {\n    parameters = {};\n  }\n\n  var deferred = _q.default.defer();\n\n  var domain = this.domain,\n      path = \"/configs/{config_key}\";\n  var queryParameters = {},\n      headers = {},\n      form = {};\n  headers[\"Accept\"] = [\"application/json\"];\n  headers[\"Content-Type\"] = [\"application/json\"];\n  path = path.replace(\"{config_key}\", parameters[\"configKey\"]);\n\n  if (parameters[\"configKey\"] === undefined) {\n    deferred.reject(new Error(\"Missing required  parameter: configKey\"));\n    return deferred.promise;\n  }\n\n  this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n  return deferred.promise;\n};\n\n_api.API.prototype.patch_config_list = function (parameters, body) {\n  if (parameters === undefined) {\n    parameters = {};\n  }\n\n  var deferred = _q.default.defer();\n\n  var domain = this.domain,\n      path = \"/configs\";\n  var queryParameters = {},\n      headers = {},\n      form = {};\n  headers[\"Accept\"] = [\"application/json\"];\n  headers[\"Content-Type\"] = [\"application/json\"];\n  queryParameters = mergeQueryParams(parameters, queryParameters);\n  this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n  return deferred.promise;\n};\n\n_api.API.prototype.post_tag_list = function (parameters, body) {\n  if (parameters === undefined) {\n    parameters = {};\n  }\n\n  var deferred = _q.default.defer();\n\n  var domain = this.domain,\n      path = \"/tags\";\n  var queryParameters = {},\n      headers = {},\n      form = {};\n  headers[\"Accept\"] = [\"application/json\"];\n  headers[\"Content-Type\"] = [\"application/json\"];\n  queryParameters = mergeQueryParams(parameters, queryParameters);\n  this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n  return deferred.promise;\n};\n\n_api.API.prototype.patch_team_public = function (parameters, body) {\n  if (parameters === undefined) {\n    parameters = {};\n  }\n\n  var deferred = _q.default.defer();\n\n  var domain = this.domain,\n      path = \"/teams/{team_id}\";\n  var queryParameters = {},\n      headers = {},\n      form = {};\n  headers[\"Accept\"] = [\"application/json\"];\n  headers[\"Content-Type\"] = [\"application/json\"];\n  path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n  if (parameters[\"teamId\"] === undefined) {\n    deferred.reject(new Error(\"Missing required  parameter: teamId\"));\n    return deferred.promise;\n  }\n\n  queryParameters = mergeQueryParams(parameters, queryParameters);\n  this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n  return deferred.promise;\n};\n\n_api.API.prototype.post_challenge_attempt = function (parameters, body) {\n  if (parameters === undefined) {\n    parameters = {};\n  }\n\n  var deferred = _q.default.defer();\n\n  var domain = this.domain,\n      path = \"/challenges/attempt\";\n  var queryParameters = {},\n      headers = {},\n      form = {};\n  headers[\"Accept\"] = [\"application/json\"];\n  headers[\"Content-Type\"] = [\"application/json\"];\n  queryParameters = mergeQueryParams(parameters, queryParameters);\n  this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n  return deferred.promise;\n};\n\n_api.API.prototype.get_hint = function (parameters) {\n  if (parameters === undefined) {\n    parameters = {};\n  }\n\n  var deferred = _q.default.defer();\n\n  var domain = this.domain,\n      path = \"/hints/{hint_id}\";\n  var body = {},\n      queryParameters = {},\n      headers = {},\n      form = {};\n  headers[\"Accept\"] = [\"application/json\"];\n  headers[\"Content-Type\"] = [\"application/json\"];\n  path = path.replace(\"{hint_id}\", parameters[\"hintId\"]);\n\n  if (parameters[\"hintId\"] === undefined) {\n    deferred.reject(new Error(\"Missing required  parameter: hintId\"));\n    return deferred.promise;\n  }\n\n  delete parameters[\"hintId\"];\n  queryParameters = mergeQueryParams(parameters, queryParameters);\n  this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n  return deferred.promise;\n};\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/patch.js?");

/***/ }),

/***/ "./CTFd/themes/core/assets/js/styles.js":
/*!**********************************************!*\
  !*** ./CTFd/themes/core/assets/js/styles.js ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! bootstrap/dist/js/bootstrap.bundle */ \"./node_modules/bootstrap/dist/js/bootstrap.bundle.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = function _default() {\n  // TODO: This is kind of a hack to mimic a React-like state construct.\n  // It should be removed once we have a real front-end framework in place.\n  (0, _jquery.default)(\":input\").each(function () {\n    (0, _jquery.default)(this).data(\"initial\", (0, _jquery.default)(this).val());\n  });\n  (0, _jquery.default)(\".form-control\").bind({\n    focus: function focus() {\n      (0, _jquery.default)(this).removeClass(\"input-filled-invalid\");\n      (0, _jquery.default)(this).addClass(\"input-filled-valid\");\n    },\n    blur: function blur() {\n      if ((0, _jquery.default)(this).val() === \"\") {\n        (0, _jquery.default)(this).removeClass(\"input-filled-invalid\");\n        (0, _jquery.default)(this).removeClass(\"input-filled-valid\");\n      }\n    }\n  });\n  (0, _jquery.default)(\".form-control\").each(function () {\n    if ((0, _jquery.default)(this).val()) {\n      (0, _jquery.default)(this).addClass(\"input-filled-valid\");\n    }\n  });\n  (0, _jquery.default)('[data-toggle=\"tooltip\"]').tooltip();\n};\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/styles.js?");

/***/ }),

/***/ "./CTFd/themes/core/assets/js/times.js":
/*!*********************************************!*\
  !*** ./CTFd/themes/core/assets/js/times.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _moment = _interopRequireDefault(__webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = function _default() {\n  (0, _jquery.default)(\"[data-time]\").each(function (i, elem) {\n    elem.innerText = (0, _moment.default)((0, _jquery.default)(elem).data(\"time\")).local().format(\"MMMM Do, h:mm:ss A\");\n  });\n};\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/times.js?");

/***/ }),

/***/ "./CTFd/themes/core/assets/js/utils.js":
/*!*********************************************!*\
  !*** ./CTFd/themes/core/assets/js/utils.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.WindowController = WindowController;\nexports.colorHash = colorHash;\nexports.htmlEntities = htmlEntities;\nexports.cumulativeSum = cumulativeSum;\nexports.init_notification_counter = init_notification_counter;\nexports.set_notification_counter = set_notification_counter;\nexports.inc_notification_counter = inc_notification_counter;\nexports.dec_notification_counter = dec_notification_counter;\nexports.clear_notification_counter = clear_notification_counter;\nexports.copyToClipboard = copyToClipboard;\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_jquery.default.fn.serializeJSON = function (omit_nulls) {\n  var params = {};\n  var form = (0, _jquery.default)(this);\n  var values = form.serializeArray();\n  values = values.concat(form.find(\"input[type=checkbox]:checked\").map(function () {\n    return {\n      name: this.name,\n      value: true\n    };\n  }).get());\n  values = values.concat(form.find(\"input[type=checkbox]:not(:checked)\").map(function () {\n    return {\n      name: this.name,\n      value: false\n    };\n  }).get());\n  values.map(function (x) {\n    if (omit_nulls) {\n      if (x.value !== null && x.value !== \"\") {\n        params[x.name] = x.value;\n      } else {\n        var input = form.find(\":input[name=\".concat(x.name, \"]\"));\n\n        if (input.data(\"initial\") !== input.val()) {\n          params[x.name] = x.value;\n        }\n      }\n    } else {\n      params[x.name] = x.value;\n    }\n  });\n  return params;\n}; //http://stackoverflow.com/a/2648463 - wizardry!\n\n\nString.prototype.format = String.prototype.f = function () {\n  var s = this,\n      i = arguments.length;\n\n  while (i--) {\n    s = s.replace(new RegExp(\"\\\\{\" + i + \"\\\\}\", \"gm\"), arguments[i]);\n  }\n\n  return s;\n}; //http://stackoverflow.com/a/7616484\n\n\nString.prototype.hashCode = function () {\n  var hash = 0,\n      i,\n      chr,\n      len;\n  if (this.length == 0) return hash;\n\n  for (i = 0, len = this.length; i < len; i++) {\n    chr = this.charCodeAt(i);\n    hash = (hash << 5) - hash + chr;\n    hash |= 0; // Convert to 32bit integer\n  }\n\n  return hash;\n}; // https://gist.github.com/neilj/4146038\n// https://fastmail.blog/2012/11/26/inter-tab-communication-using-local-storage/\n\n\nfunction WindowController() {\n  this.id = Math.random();\n  this.isMaster = false;\n  this.others = {};\n  window.addEventListener(\"storage\", this, false);\n  window.addEventListener(\"unload\", this, false);\n  this.broadcast(\"hello\");\n  var that = this;\n\n  var check = function check() {\n    that.check();\n    that._checkTimeout = setTimeout(check, 9000);\n  };\n\n  var ping = function ping() {\n    that.sendPing();\n    that._pingTimeout = setTimeout(ping, 17000);\n  };\n\n  this._checkTimeout = setTimeout(check, 500);\n  this._pingTimeout = setTimeout(ping, 17000);\n}\n\nWindowController.prototype.destroy = function () {\n  clearTimeout(this._pingTimeout);\n  clearTimeout(this._checkTimeout);\n  window.removeEventListener(\"storage\", this, false);\n  window.removeEventListener(\"unload\", this, false);\n  this.broadcast(\"bye\");\n};\n\nWindowController.prototype.handleEvent = function (event) {\n  if (event.type === \"unload\") {\n    this.destroy();\n  } else if (event.key === \"broadcast\") {\n    try {\n      var data = JSON.parse(event.newValue);\n\n      if (data.id !== this.id) {\n        this[data.type](data);\n      }\n    } catch (error) {}\n  }\n};\n\nWindowController.prototype.sendPing = function () {\n  this.broadcast(\"ping\");\n};\n\nWindowController.prototype.hello = function (event) {\n  this.ping(event);\n\n  if (event.id < this.id) {\n    this.check();\n  } else {\n    this.sendPing();\n  }\n};\n\nWindowController.prototype.ping = function (event) {\n  this.others[event.id] = +new Date();\n};\n\nWindowController.prototype.bye = function (event) {\n  delete this.others[event.id];\n  this.check();\n};\n\nWindowController.prototype.check = function (event) {\n  var now = +new Date(),\n      takeMaster = true,\n      id;\n\n  for (id in this.others) {\n    if (this.others[id] + 23000 < now) {\n      delete this.others[id];\n    } else if (id < this.id) {\n      takeMaster = false;\n    }\n  }\n\n  if (this.isMaster !== takeMaster) {\n    this.isMaster = takeMaster;\n    this.masterDidChange();\n  }\n};\n\nWindowController.prototype.masterDidChange = function () {};\n\nWindowController.prototype.broadcast = function (type, data) {\n  var event = {\n    id: this.id,\n    type: type\n  };\n\n  for (var x in data) {\n    event[x] = data[x];\n  }\n\n  try {\n    localStorage.setItem(\"broadcast\", JSON.stringify(event));\n  } catch (error) {\n    console.log(error);\n  }\n};\n\nfunction colorHash(str) {\n  var hash = 0;\n\n  for (var i = 0; i < str.length; i++) {\n    hash = str.charCodeAt(i) + ((hash << 5) - hash);\n  }\n\n  var colour = \"#\";\n\n  for (var _i = 0; _i < 3; _i++) {\n    var value = hash >> _i * 8 & 0xff;\n    colour += (\"00\" + value.toString(16)).substr(-2);\n  }\n\n  return colour;\n}\n\nfunction htmlEntities(string) {\n  return (0, _jquery.default)(\"<div/>\").text(string).html();\n}\n\nfunction cumulativeSum(arr) {\n  var result = arr.concat();\n\n  for (var i = 0; i < arr.length; i++) {\n    result[i] = arr.slice(0, i + 1).reduce(function (p, i) {\n      return p + i;\n    });\n  }\n\n  return result;\n}\n\nvar storage = window.localStorage;\nvar counter_key = \"unread_notifications\";\n\nfunction init_notification_counter() {\n  var count = storage.getItem(counter_key);\n\n  if (count === null) {\n    storage.setItem(counter_key, 0);\n  } else {\n    if (count > 0) {\n      (0, _jquery.default)(\".badge-notification\").text(count);\n    }\n  }\n}\n\nfunction set_notification_counter(count) {\n  storage.setItem(counter_key, count);\n}\n\nfunction inc_notification_counter() {\n  var count = storage.getItem(counter_key) || 0;\n  storage.setItem(counter_key, ++count);\n  (0, _jquery.default)(\".badge-notification\").text(count);\n}\n\nfunction dec_notification_counter() {\n  var count = storage.getItem(counter_key) || 0;\n\n  if (count > 0) {\n    storage.setItem(counter_key, --count);\n    (0, _jquery.default)(\".badge-notification\").text(count);\n  } // Always clear if count is 0\n\n\n  if (count == 0) {\n    clear_notification_counter();\n  }\n}\n\nfunction clear_notification_counter() {\n  storage.setItem(counter_key, 0);\n  (0, _jquery.default)(\".badge-notification\").empty();\n}\n\nfunction copyToClipboard(event, selector) {\n  // Select element\n  (0, _jquery.default)(selector).select(); // Copy to clipboard\n\n  document.execCommand(\"copy\"); // Show tooltip to user\n\n  (0, _jquery.default)(event.target).tooltip({\n    title: \"Copied!\",\n    trigger: \"manual\"\n  });\n  (0, _jquery.default)(event.target).tooltip(\"show\");\n  setTimeout(function () {\n    (0, _jquery.default)(event.target).tooltip(\"hide\");\n  }, 1500);\n}\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/utils.js?");

/***/ }),

/***/ "./node_modules/moment/locale sync recursive ^\\.\\/.*$":
/*!**************************************************!*\
  !*** ./node_modules/moment/locale sync ^\.\/.*$ ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-SG\": \"./node_modules/moment/locale/en-SG.js\",\n\t\"./en-SG.js\": \"./node_modules/moment/locale/en-SG.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";\n\n//# sourceURL=webpack:///./node_modules/moment/locale_sync_^\\.\\/.*$?");

/***/ })

}]);