[
  {
    "path": ".babelrc",
    "content": "{\n  \"presets\": [\n    \"es2015\", \"stage-2\", \"react\"\n  ]\n}\n"
  },
  {
    "path": ".editorconfig",
    "content": "[*]\nindent_style = space\nend_of_line = lf\nindent_size = 2\ncharset = utf-8\ntrim_trailing_whitespace = true\n\n[*.md]\nmax_line_length = 0\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": ".eslintrc",
    "content": "{\n  \"ecmaFeatures\": {\n    \"jsx\": true,\n    \"modules\": true\n  },\n  \"env\": {\n    \"browser\": true,\n    \"node\": true\n  },\n  \"parser\": \"babel-eslint\",\n  \"rules\": {\n    \"comma-dangle\": [\"error\", \"always-multiline\"],\n    \"semi\": [\"error\", \"always\"],\n    \"quotes\": [2, \"single\"],\n    \"strict\": [2, \"never\"],\n    \"react/jsx-uses-react\": 2,\n    \"react/jsx-uses-vars\": 2,\n    \"react/react-in-jsx-scope\": 2\n  },\n  \"plugins\": [ \"react\" ]\n}\n"
  },
  {
    "path": ".gitignore",
    "content": "# dependency\nnode_modules\n\n# yarn\nyarn.lock\n\n# npm cache\n.npm\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\n\n# coverages\ncoverage\n\n# OSX stuffs\n.DS_Store\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2016 Provash Shoumma\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "![logo](./docs/design_assets/logo.png)\n\n\n# ReForum\nA minimal forum application built with the following technologies:\n* [React](https://facebook.github.io/react/)\n* [Redux](http://redux.js.org/)\n* [Webpack](https://webpack.js.org/)\n* [ExpressJS](https://expressjs.com/)\n* [PassportJS](http://passportjs.org/)\n* [MongoDB](https://www.mongodb.com/)\n\n### Application Features\n* Users can post a discussion\n* Users can reply their opinions regarding discussion\n* Users can favorite discussions\n* Users have their own profile page\n* Admin can create new forum categories\n* Admin have a lot of power over every users discussions and opinions :-p\n\n### Documentations\n* [API Docs](https://github.com/shoumma/ReForum/blob/master/docs/api.md)\n* [System Overview](https://github.com/shoumma/ReForum/blob/master/docs/system_overview.md)\n\n### Home View\n![home view](./docs/design_assets/home_view.jpg)\n\n### Admin View\n![admin view](./docs/design_assets/admin_view.jpg)\n\n## Deploy on you own server\n\nPlease make sure you have following software installed in your system:\n* Node.js > 6.0\n* NPM / Yarn\n* Git\n* MongoDB\n\nFirst we need to clone the repository:\n```\n$ git clone https://github.com/shoumma/ReForum\n```\n\nThen we have to install the necessary dependencies using either NPM or Yarn:\n```\n$ npm i\n```\n```\n$ yarn\n```\n\nSince the app currently uses GitHub authentication, we need to configure a GitHub OAuth application. You can register a new application from this link https://github.com/settings/developers\n\nWe need to grab the following information from the OAuth application.\n* Client ID\n* Client Secret\n* Callback URL\n\nThe `Callback URL` is the domain where GitHub will redirect the user after a successful login. You can use a domain name or local host. But we need to append the URL with the path `/api/user/authViaGitHub/callback`. So, the complete url will look like:\n`https://localhost:8080/api/user/authViaGitHub/callback`\n\nNow, we need to configure the credentials inside of the codebase. Open the file `config/credentials.js` add the necessary information. The file looks like this:\n```js\nmodule.exports = {\n  GITHUB_CLIENT_ID: '',\n  GITHUB_CLIENT_SECRET: '',\n  GITHUB_CALLBACK_URL: '',\n  DBURL: '',\n};\n```\n\nWe need to provide all the information here. You can notice that we need the database url here too. My `local` MongoDB url looks like:\n```\nmongodb://localhost:27017/reforum\n```\n\nNow we are ready to run the application. You can run either run the development environment of the application which will include Hot-Reload for JS codes using Webpack and the Redux dev tool extension, or you can run the production edition. The default port for developer edition is `8080`, and for production is `process.env.PORT`.\n\nTo run the app in development environment:\n```\n$ npm run start:dev\n```\n\nTo run the app in production environment:\n```\n$ npm run start\n```\n\nNow, if you visit [http://localhost:8080](http://localhost:8080) (if you ran the dev), or the production URL, you will see that the application is up and running. Congratulation! But, wait a minute, it's showing you `Sorry, couldn't find the forum`. That is because, we didn't create any forum yet. You can now sign up via github and then visit the admin panel with the url [http://localhost:8080/admin](http://localhost:8080/admin). The application is currently configured in a way that, the first user will become the admin for the system.\n\nHere we can create new forums and that forum will be displayed in the application. The first forum will be used as default forum.\n\nCongratulation! You now have a clone of this application in your server. :-)\n\n## Path for Future Work\n* Add search functionality\n* Add unit tests for both backend and frontend\n* Ability to change the name and logo of the site from admin panel.\n* Make the installation process more interactive\n* Add multiple theme support.\n\n## License\n[MIT License](https://github.com/shoumma/Mister-Poster/blob/master/LICENSE). Do whatever you want to do. :-)\n\n## Conclusion\nThe application is created with lots of ♥. Any pull request, issues and contribution is very appreciated. It would be really great if we can take this application to the next level, where it can be used as a platform for forums.\n\n[Provash Shoumma](https://twitter.com/proshoumma)\n"
  },
  {
    "path": "backend/dev.js",
    "content": "/**\n * module dependencies for development\n */\nconst webpack = require('webpack');\nconst webpackDevMiddleware = require('webpack-dev-middleware');\nconst webpackHotMiddleware = require('webpack-hot-middleware');\n\n/**\n * development configuration\n */\nconst devConfigs = (app) => {\n  // webpack development configuration\n  const webpackConfig = require('../config/webpack.dev.config');\n  const webpackCompiler = webpack(webpackConfig);\n\n  // apply dev middleware\n  app.use(webpackDevMiddleware(webpackCompiler, {\n    publicPath: webpackConfig.output.publicPath,\n    hot: true,\n    stats: true,\n  }));\n\n  // apply hot middleware\n  app.use(webpackHotMiddleware(webpackCompiler));\n};\n\nmodule.exports = devConfigs;\n"
  },
  {
    "path": "backend/entities/admin/api.js",
    "content": "// controllers\nconst getAdminDashInfo = require('./controller').getAdminDashInfo;\nconst createForum = require('./controller').createForum;\nconst deleteForum = require('./controller').deleteForum;\nconst deleteUser = require('./controller').deleteUser;\nconst deleteDiscussion = require('./controller').deleteDiscussion;\n\n/**\n * admin apis\n * @param  {Object} app\n */\nconst adminAPI = (app) => {\n  // get all info for admin dashboard\n  app.get('/api/admin/admin_dashboard_info', (req, res) => {\n    if (req.user && req.user.role === 'admin') {\n      getAdminDashInfo().then(\n        (data) => { res.send(data); },\n        (error) => { res.send(error); }\n      );\n    }\n    else res.send({ error: 'You are not admin buddy 😛' });\n  });\n\n  // create a forum\n  app.post('/api/admin/create_forum', (req, res) => {\n    if (req.user && req.user.role === 'admin') {\n      const {\n        title,\n        slug,\n      } = req.body;\n\n      createForum({ forum_name: title, forum_slug: slug }).then(\n        (data) => { res.send(data); },\n        (error) => { res.send(error); }\n      );\n    }\n    else res.send({ error: 'You are not admin buddy 😛' });\n  });\n\n  // delete a forum\n  app.post('/api/admin/delete_forum', (req, res) => {\n    if (req.user && req.user.role === 'admin') {\n      deleteForum(req.body).then(\n        (data) => { res.send(data); },\n        (error) => { res.send(error); }\n      );\n    }\n    else res.send({ error: 'You are not admin buddy 😛' });\n  });\n\n  // delete an user\n  app.post('/api/admin/delete_user', (req, res) => {\n    if (req.user && req.user.role === 'admin') {\n      deleteUser(req.body).then(\n        (data) => { res.send(data); },\n        (error) => { res.send(error); }\n      );\n    }\n    else res.send({ error: 'You are not admin buddy 😛' });\n  });\n\n  // delete a discussion\n  app.post('/api/admin/delete_discussion', (req, res) => {\n    if (req.user && req.user.role === 'admin') {\n      deleteDiscussion(req.body).then(\n        (data) => { res.send(data); },\n        (error) => { res.send(error); }\n      );\n    }\n    else res.send({ error: 'You are not admin buddy 😛' });\n  });\n};\n\nmodule.exports = adminAPI;\n"
  },
  {
    "path": "backend/entities/admin/controller.js",
    "content": "const waterfall = require('async/waterfall');\n\n// models\nconst Discussion = require('../discussion/model');\nconst Opinion = require('../opinion/model');\nconst Forum = require('../forum/model');\nconst User = require('../user/model');\n\n/**\n * get the information for admin dashboard\n * @return {Promise}\n */\nconst getAdminDashInfo = () => {\n  return new Promise((resolve, reject) => {\n    waterfall([\n      (callback) => {\n        Discussion.count().exec((error, count) => {\n          callback(null, { discussionCount: count });\n        });\n      },\n      (lastResult, callback) => {\n        Opinion.count().exec((error, count) => {\n          callback(null, Object.assign(lastResult, { opinionCount: count }));\n        });\n      },\n      (lastResult, callback) => {\n        Forum.count().exec((error, count) => {\n          callback(null, Object.assign(lastResult, { forumCount: count }));\n        });\n      },\n      (lastResult, callback) => {\n        User.count().exec((error, count) => {\n          callback(null, Object.assign(lastResult, { userCount: count }));\n        });\n      },\n      (lastResult, callback) => {\n        Forum\n        .find({})\n        .sort({ date: -1 })\n        .lean()\n        .exec((error, forums) => {\n          callback(null, Object.assign(lastResult, { forums }));\n        });\n      },\n    ], (error, result) => {\n      if (error) { console.log(error); reject(error); }\n      else resolve(result);\n    });\n  });\n};\n\n/**\n * create a new forum\n * @param  {String} forum_name\n * @param  {String} forum_slug\n * @return {Promise}\n */\nconst createForum = ({ forum_name, forum_slug }) => {\n  return new Promise((resolve, reject) => {\n    // check if the forum exists\n    Forum\n    .findOne({ forum_slug })\n    .exec((error, forum) => {\n      if (error) { console.log(error); reject({ serverError: true }); }\n      else if (forum) { reject({ alreadyExists: true }); }\n      else {\n        // forum does not exists, so create a new one\n        const newForum = new Forum({\n          forum_slug,\n          forum_name,\n        });\n\n        newForum.save((error) => {\n          if (error) { console.log(error); reject({ created: false }); }\n          else { resolve(Object.assign({}, newForum, { created: true })); }\n        });\n      }\n    });\n  });\n};\n\n/**\n * delete an entire forum\n * @param  {String} forum_id\n * @return {Promise}\n */\nconst deleteForum = ({ forum_id }) => {\n  return new Promise((resolve, reject) => {\n    // first remove any discussion regarding the forum\n    Discussion.remove({ forum_id }).exec((error) => {\n      if (error) { console.log(error); reject({ deleted: false }); }\n      else {\n        // remove any opinion regarding the forum\n        Opinion.remove({ forum_id }).exec((error) => {\n          if (error) { console.log(error); reject({ deleted: false }); }\n          else {\n            // now we can remove the forum\n            Forum.remove({ _id: forum_id }).exec((error) => {\n              if (error) { console.log(error); reject({ deleted: false }); }\n              else { resolve({ deleted: true }); }\n            });\n          }\n        });\n      }\n    });\n  });\n};\n\n/**\n * delete an user\n * @param  {String} user_id\n * @return {Promise}\n */\nconst deleteUser = ({ user_id }) => {\n  return new Promise((resolve, reject) => {\n    // first we need to remvoe any discussion the user created\n    Discussion.remove({ user_id }).exec((error) => {\n      if (error) { console.log(error); reject({ deleted: false }); }\n      else {\n        // now we need to remove any opinions that are created by the user\n        Opinion.remove({ user_id }).exec((error) => {\n          if (error) { console.log(error); reject({ deleted: false }); }\n          else {\n            // finally we can remove the user\n            User.remove({ _id: user_id }).exec((error) => {\n              if (error) { console.log(error); reject({ deleted: false }); }\n              else { resolve({ deleted: true }); }\n            });\n          }\n        });\n      }\n    });\n  });\n};\n\n/**\n * delete a single discussion\n * @param  {String} discussion_id\n * @return {Promise}\n */\nconst deleteDiscussion = ({ discussion_id }) => {\n  return new Promise((resolve, reject) => {\n    // first we need to remove any opinion regarding the discussion\n    Opinion.remove({ discussion_id }).exec((error) => {\n      if (error) { console.log(error); reject({ deleted: false }); }\n      else {\n        // now we need to remove the discussion\n        Discussion.remove({ _id: discussion_id }).exec((error) => {\n          if (error) { console.log(error); reject({ deleted: false }); }\n          else { resolve({ deleted: true }); }\n        });\n      }\n    });\n  });\n};\n\nmodule.exports = {\n  getAdminDashInfo,\n  createForum,\n  deleteForum,\n  deleteUser,\n  deleteDiscussion,\n};\n"
  },
  {
    "path": "backend/entities/discussion/api.js",
    "content": "// discussion controllers\nconst getDiscussion = require('./controller').getDiscussion;\nconst createDiscussion = require('./controller').createDiscussion;\nconst toggleFavorite = require('./controller').toggleFavorite;\nconst deleteDiscussion = require('./controller').deleteDiscussion;\n\n/**\n * discussion apis\n */\nconst discussionAPI = (app) => {\n  // get signle discussion\n  app.get('/api/discussion/:discussion_slug', (req, res) => {\n    const { discussion_slug } = req.params;\n    getDiscussion(discussion_slug).then(\n      (result) => { res.send(result); },\n      (error) => { res.send(error); }\n    );\n  });\n\n  // toggle favorite to the discussion\n  app.put('/api/discussion/toggleFavorite/:discussion_id', (req, res) => {\n    const { discussion_id } = req.params;\n    if (req.user) {\n      // TODO: describe the toggle process with comments\n      toggleFavorite(discussion_id, req.user._id).then(\n        (result) => {\n          getDiscussion(result.discussion_slug).then(\n            (result) => { res.send(result); },\n            (error) => { res.send({ discussionUpdated: false }); }\n          );\n        },\n        (error) => { res.send({ discussionUpdated: false }); }\n      );\n    } else {\n      res.send({ discussionUpdated: false });\n    }\n  });\n\n  // create a new discussion\n  app.post('/api/discussion/newDiscussion', (req, res) => {\n    if (req.user) {\n      createDiscussion(req.body).then(\n        (result) => { res.send(Object.assign({}, result._doc, { postCreated: true })); },\n        (error) => { res.send({ postCreated: false }); }\n      );\n    } else {\n      res.send({ postCreated: false });\n    }\n  });\n\n  // delete a discussion\n  app.delete('/api/discussion/deleteDiscussion/:discussion_slug', (req, res) => {\n    if (req.user) {\n      deleteDiscussion(req.params.discussion_slug).then(\n        (result) => { res.send({ deleted: true }); },\n        (error) => { res.send({ deleted: false }); }\n      );\n    } else {\n      res.send({ deleted: false });\n    }\n  });\n};\n\nmodule.exports = discussionAPI;\n"
  },
  {
    "path": "backend/entities/discussion/controller.js",
    "content": "const generateDiscussionSlug = require('../../utilities/tools').generateDiscussionSlug;\nconst getAllOpinions = require('../opinion/controller').getAllOpinions;\nconst getUser = require('../user/controller').getUser;\n\nconst Discussion = require('./model');\nconst Opinion = require('../opinion/model');\n\n/**\n * get a single discussion\n * @param  {String} discussion_slug\n * @param  {String} discussion_id\n * @return {Promise}\n */\nconst getDiscussion = (discussion_slug, discussion_id) => {\n  return new Promise((resolve, reject) => {\n    let findObject = {};\n    if (discussion_slug) findObject.discussion_slug = discussion_slug;\n    if (discussion_id) findObject._id = discussion_id;\n\n    Discussion\n    .findOne(findObject)\n    .populate('forum')\n    .populate('user')\n    .lean()\n    .exec((error, result) => {\n      if (error) { console.log(error); reject(error); }\n      else if (!result) reject(null);\n      else {\n        // add opinions to the discussion object\n        getAllOpinions(result._id).then(\n          (opinions) => {\n            result.opinions = opinions;\n            resolve(result);\n          },\n          (error) => { { console.log(error); reject(error); } }\n        );\n      }\n    });\n  });\n};\n\n/**\n * Create a new discussion\n * @param  {Object} discussion\n * @return {Promise}\n */\nconst createDiscussion = (discussion) => {\n  return new Promise((resolve, reject) => {\n    const newDiscussion = new Discussion({\n      forum_id: discussion.forumId,\n      forum: discussion.forumId,\n      user_id: discussion.userId,\n      user: discussion.userId,\n      discussion_slug: generateDiscussionSlug(discussion.title),\n      date: new Date(),\n      title: discussion.title,\n      content: discussion.content,\n      favorites: [],\n      tags: discussion.tags,\n      pinned: discussion.pinned,\n    });\n\n    newDiscussion.save((error) => {\n      if (error) {\n        console.log(error);\n        reject(error);\n      }\n\n      resolve(newDiscussion);\n    });\n  });\n};\n\n/**\n * toggle favorite status of discussion\n * @param  {ObjectId} discussion_id\n * @param  {ObjectId} user_id\n * @return {Promise}\n */\nconst toggleFavorite = (discussion_id, user_id) => {\n  return new Promise((resolve, reject) => {\n    Discussion.findById(discussion_id, (error, discussion) => {\n      if (error) { console.log(error); reject(error); }\n      else if (!discussion) reject(null);\n      else {\n        // add or remove favorite\n        let matched = null;\n        for (let i = 0; i < discussion.favorites.length; i++) {\n          if (String(discussion.favorites[i]) === String(user_id)) {\n            matched = i;\n          }\n        }\n\n        if (matched === null) {\n          discussion.favorites.push(user_id);\n        } else {\n          discussion.favorites = [\n            ...discussion.favorites.slice(0, matched),\n            ...discussion.favorites.slice(matched + 1, discussion.favorites.length),\n          ];\n        }\n\n        discussion.save((error, updatedDiscussion) => {\n          if (error) { console.log(error); reject(error); }\n          resolve(updatedDiscussion);\n        });\n      }\n    });\n  });\n\n};\n\nconst updateDiscussion = (forum_id, discussion_slug) => {\n  // TODO: implement update feature\n};\n\nconst deleteDiscussion = (discussion_slug) => {\n  return new Promise((resolve, reject) => {\n    // find the discussion id first\n    Discussion\n    .findOne({ discussion_slug })\n    .exec((error, discussion) => {\n      if (error) { console.log(error); reject(error); }\n\n      // get the discussion id\n      const discussion_id = discussion._id;\n\n      // remove any opinion regarding the discussion\n      Opinion\n      .remove({ discussion_id })\n      .exec((error) => {\n        if (error) { console.log(error); reject(error); }\n\n        // finally remove the discussion\n        else {\n          Discussion\n          .remove({ discussion_slug })\n          .exec((error) => {\n            if (error) { console.log(error); reject(error); }\n            else {\n              resolve({ deleted: true });\n            }\n          });\n        }\n      });\n    });\n  });\n};\n\nmodule.exports = {\n  getDiscussion,\n  createDiscussion,\n  updateDiscussion,\n  deleteDiscussion,\n  toggleFavorite,\n};\n"
  },
  {
    "path": "backend/entities/discussion/model.js",
    "content": "/**\n * discussion model\n */\nconst mongoose = require('mongoose');\n\nconst discussionSchema = mongoose.Schema({\n  forum_id: mongoose.Schema.ObjectId,\n  forum: { type: mongoose.Schema.ObjectId, ref: 'forum' },\n  discussion_slug: String,\n  user_id: mongoose.Schema.ObjectId,\n  user: { type: mongoose.Schema.ObjectId, ref: 'user' },\n  date: Date,\n  title: String,\n  content: Object,\n  favorites: Array,\n  tags: Array,\n  pinned: Boolean,\n});\n\nmodule.exports = mongoose.model('discussion', discussionSchema);\n"
  },
  {
    "path": "backend/entities/forum/api.js",
    "content": "// forum controllers\nconst getAllForums = require('./controller').getAllForums;\nconst getDiscussions = require('./controller').getDiscussions;\n\n/**\n * forum apis\n */\nconst forumAPI = (app) => {\n  // get all forums\n  app.get('/api/forum', (req, res) => {\n    getAllForums().then(\n      (result) => { res.send(result); },\n      (error) => { res.send(error); }\n    );\n  });\n\n  // get discussions of a forum\n  app.get('/api/forum/:forum_id/discussions', (req, res) => {\n    getDiscussions(req.params.forum_id, false, req.query.sorting_method).then(\n      (result) => { res.send(result); },\n      (error) => { res.send([]); }\n    );\n  });\n\n  // get pinned discussions of a forum\n  app.get('/api/forum/:forum_id/pinned_discussions', (req, res) => {\n    getDiscussions(req.params.forum_id, true).then(\n      (result) => { res.send(result); },\n      (error) => { res.send([]); }\n    );\n  });\n};\n\nmodule.exports = forumAPI;\n"
  },
  {
    "path": "backend/entities/forum/controller.js",
    "content": "const asyncEach = require('async/each');\n\n// models\nconst Forum = require('./model');\nconst Discussion = require('../discussion/model');\n\n// controllers\nconst getAllOpinions = require('../opinion/controller').getAllOpinions;\nconst getUser = require('../user/controller').getUser;\n\n/**\n * get all forums list\n * @type {Promise}\n */\nconst getAllForums = () => {\n  return new Promise((resolve, reject) => {\n    Forum\n    .find({})\n    .exec((error, results) => {\n      if (error) { console.log(error); reject(error); }\n      else if (!results) reject(null);\n      else resolve(results);\n    });\n  });\n};\n\n/**\n * get discussions of a forum\n * @param  {ObjectId} forum_id\n * @param  {Boolean} pinned\n * @return {Promise}\n */\nconst getDiscussions = (forum_id, pinned, sorting_method='date') => {\n  return new Promise((resolve, reject) => {\n    // define sorthing method\n    const sortWith = { };\n    if (sorting_method === 'date') sortWith.date = -1;\n    if (sorting_method === 'popularity') sortWith.favorites = -1;\n\n    // match discussion id and pinned status\n    Discussion\n    .find({ forum_id: forum_id, pinned: pinned })\n    .sort(sortWith)\n    .populate('forum')\n    .populate('user')\n    .lean()\n    .exec((error, discussions) => {\n      if (error) { console.error(error); reject(error); }\n      else if (!discussions) reject(null);\n      else {\n        // attach opinion count to each discussion\n        asyncEach(discussions, (eachDiscussion, callback) => {\n          // add opinion count\n          getAllOpinions(eachDiscussion._id).then(\n            (opinions) => {\n              // add opinion count to discussion doc\n              eachDiscussion.opinion_count = opinions ? opinions.length : 0;\n              callback();\n            },\n            (error) => { console.error(error); callback(error); }\n          );\n        }, (error) => {\n          if (error) { console.error(error); reject(error); }\n          else resolve(discussions);\n        });\n      }\n    });\n  });\n};\n\nmodule.exports = {\n  getAllForums,\n  getDiscussions,\n};\n"
  },
  {
    "path": "backend/entities/forum/model.js",
    "content": "/**\n * forum model\n */\nconst mongoose = require('mongoose');\n\nconst forumSchema = mongoose.Schema({\n  forum_slug: String,\n  forum_name: String,\n});\n\nmodule.exports = mongoose.model('forum', forumSchema);\n"
  },
  {
    "path": "backend/entities/opinion/api.js",
    "content": "// controllers\nconst getAllOpinions = require('./controller').getAllOpinions;\nconst createOpinion = require('./controller').createOpinion;\nconst deleteOpinion = require('./controller').deleteOpinion;\n\n/**\n * opinion apis\n */\nconst opinionAPI = (app) => {\n  // create an opinion\n  app.post('/api/opinion/newOpinion', (req, res) => {\n    if(req.user) {\n      createOpinion(req.body).then(\n        (result) => { res.send(result); },\n        (error) => { res.send(error); }\n      );\n    } else {\n      res.send({ authenticated: false });\n    }\n  });\n\n  // remove an opinion\n  app.delete('/api/opinion/deleteOpinion/:opinion_id', (req, res) => {\n    if(req.user) {\n      deleteOpinion(req.params.opinion_id).then(\n        (result) => { res.send({ deleted: true }); },\n        (error) => { res.send({ deleted: false }); }\n      );\n    }\n  });\n};\n\nmodule.exports = opinionAPI;\n"
  },
  {
    "path": "backend/entities/opinion/controller.js",
    "content": "// models\nconst Opinion = require('./model');\n\n/**\n * get all opinion regarding a single discussion\n * @param  {ObjectId} discussion_id\n * @return {Promise}\n */\nconst getAllOpinions = (discussion_id) => {\n  return new Promise((resolve, reject) => {\n    Opinion\n    .find({ discussion_id })\n    .populate('user')\n    .sort({ date: -1 })\n    .exec((error, opinions) => {\n      if (error) { console.log(error); reject(error); }\n      else if (!opinions) reject(null);\n      else resolve(opinions);\n    });\n  });\n};\n\n/**\n * create an opinion regarding a discussion\n * @param  {ObjectId} forum_id\n * @param  {ObjectId} discussion_id\n * @param  {ObjectId} user_id\n * @param  {Object} content\n * @return {Promise}\n */\nconst createOpinion = ({ forum_id, discussion_id, user_id, content }) => {\n  return new Promise((resolve, reject) => {\n    const newOpinion = new Opinion({\n      forum_id,\n      discussion_id,\n      discussion: discussion_id,\n      user_id,\n      user: user_id,\n      content,\n      date: new Date(),\n    });\n\n    newOpinion.save((error) => {\n      if (error) { console.log(error); reject(error); }\n      else { resolve(newOpinion); }\n    });\n  });\n};\n\nconst updateOpinion = (opinion_id) => {\n  // TODO: implement update for opinion\n};\n\n/**\n * delete a single opinion\n * @param  {ObjectId} opinion_id\n * @return {Promise}\n */\nconst deleteOpinion = (opinion_id) => {\n  return new Promise((resolve, reject) => {\n    Opinion\n    .remove({ _id: opinion_id })\n    .exec((error) => {\n      if (error) { console.log(error); reject(error); }\n      else resolve('deleted');\n    });\n  });\n};\n\nmodule.exports = {\n  getAllOpinions,\n  createOpinion,\n  updateOpinion,\n  deleteOpinion,\n};\n"
  },
  {
    "path": "backend/entities/opinion/model.js",
    "content": "/**\n * opinion model\n */\nconst mongoose = require('mongoose');\n\nconst opinionSchema = mongoose.Schema({\n  forum_id: mongoose.Schema.ObjectId,\n  forum: { type: mongoose.Schema.ObjectId, ref: 'forum' },\n  discussion_id: mongoose.Schema.ObjectId,\n  discussion: { type: mongoose.Schema.ObjectId, ref: 'discussion' },\n  user_id: mongoose.Schema.ObjectId,\n  user: { type: mongoose.Schema.ObjectId, ref: 'user' },\n  date: Date,\n  content: Object,\n});\n\nmodule.exports = mongoose.model('opinion', opinionSchema);\n"
  },
  {
    "path": "backend/entities/user/api.js",
    "content": "const passport = require('passport');\nconst signIn = require('./controller').signIn;\nconst getFullProfile = require('./controller').getFullProfile;\n\n/**\n * user apis\n */\nconst userAPI = (app) => {\n  // get authenticated user\n  app.get('/api/user/getUser', (req, res) => {\n    if (req.user) res.send(req.user);\n    else res.send(null);\n  });\n\n  // github authentication route\n  app.get(\n    '/api/user/authViaGitHub',\n    passport.authenticate('github')\n  );\n\n  // callback route from github\n  app.get(\n    // this should match callback url of github app\n    '/api/user/authViaGitHub/callback',\n    passport.authenticate('github', { failureRedirect: '/signIn/failed' }),\n    (req, res) => { res.redirect('/'); }\n  );\n\n  // signout the user\n  app.get('/api/user/signout', (req, res) => {\n    req.logout();\n    res.redirect('/');\n  });\n\n  // get user full profile\n  app.get('/api/user/profile/:username', (req, res) => {\n    getFullProfile(req.params.username).then(\n      result => { res.send(result); },\n      error => { res.send({ error }); }\n    );\n  });\n};\n\nmodule.exports = userAPI;\n"
  },
  {
    "path": "backend/entities/user/controller.js",
    "content": "const _ = require('lodash');\nconst asyncEach = require('async/each');\n\n// controllers\nconst getAllOpinions = require('../opinion/controller').getAllOpinions;\n\n// models\nconst User = require('./model');\nconst Discussion = require('../discussion/model');\nconst Opinion = require('../opinion/model');\n\n/**\n * get user doc by user id\n * @param  {ObjectId} user_id\n * @return {promise}\n */\nconst getUser = (user_id) => {\n  return new Promise((resolve, reject) => {\n    User.findOne({ _id: user_id }, (error, user) => {\n      if (error) { console.log(error); reject(error); }\n      else if (!user) reject(null);\n      else resolve(user);\n    });\n  });\n};\n\n/**\n * sign in/up user via github provided info\n * this will signin the user if user existed\n * or will create a new user using git infos\n * @param  {Object} gitProfile    profile information provided by github\n * @return {promise}              user doc\n */\nconst signInViaGithub = (gitProfile) => {\n  return new Promise((resolve, reject) => {\n\n    // find if user exist on db\n    User.findOne({ username: gitProfile.username }, (error, user) => {\n      if (error) { console.log(error); reject(error); }\n      else {\n        // get the email from emails array of gitProfile\n        const email = _.find(gitProfile.emails, { verified: true }).value;\n\n        // user existed on db\n        if (user) {\n          // update the user with latest git profile info\n          user.name = gitProfile.displayName;\n          user.username = gitProfile.username;\n          user.avatarUrl = gitProfile._json.avatar_url;\n          user.email = email;\n          user.github.id = gitProfile._json.id,\n          user.github.url = gitProfile._json.html_url,\n          user.github.company = gitProfile._json.company,\n          user.github.location = gitProfile._json.location,\n          user.github.hireable = gitProfile._json.hireable,\n          user.github.bio = gitProfile._json.bio,\n          user.github.followers = gitProfile._json.followers,\n          user.github.following = gitProfile._json.following,\n\n          // save the info and resolve the user doc\n          user.save((error) => {\n            if (error) { console.log(error); reject(error); }\n            else { resolve(user); }\n          });\n        }\n\n        // user doesn't exists on db\n        else {\n          // check if it is the first user (adam/eve) :-p\n          // assign him/her as the admin\n          User.count({}, (err, count) => {\n            console.log('usercount: ' + count);\n\n            let assignAdmin = false;\n            if (count === 0) assignAdmin = true;\n\n            // create a new user\n            const newUser = new User({\n              name: gitProfile.displayName,\n              username: gitProfile.username,\n              avatarUrl: gitProfile._json.avatar_url,\n              email: email,\n              role: assignAdmin ? 'admin' : 'user',\n              github: {\n                id: gitProfile._json.id,\n                url: gitProfile._json.html_url,\n                company: gitProfile._json.company,\n                location: gitProfile._json.location,\n                hireable: gitProfile._json.hireable,\n                bio: gitProfile._json.bio,\n                followers: gitProfile._json.followers,\n                following: gitProfile._json.following,\n              },\n            });\n\n            // save the user and resolve the user doc\n            newUser.save((error) => {\n              if (error) { console.log(error); reject(error); }\n              else { resolve(newUser); }\n            });\n\n          });\n        }\n      }\n    });\n\n  });\n};\n\n/**\n * get the full profile of a user\n * @param  {String} username\n * @return {Promise}\n */\nconst getFullProfile = (username) => {\n  return new Promise((resolve, reject) => {\n    User\n    .findOne({ username })\n    .lean()\n    .exec((error, result) => {\n      if (error) { console.log(error); reject(error); }\n      else if (!result) reject('not_found');\n      else {\n        // we got the user, now we need all discussions by the user\n        Discussion\n        .find({ user_id: result._id })\n        .populate('forum')\n        .lean()\n        .exec((error, discussions) => {\n          if (error) { console.log(error); reject(error); }\n          else {\n            // we got the discussions by the user\n            // we need to add opinion count to each discussion\n            asyncEach(discussions, (eachDiscussion, callback) => {\n              getAllOpinions(eachDiscussion._id).then(\n                (opinions) => {\n                  // add opinion count to discussion doc\n                  eachDiscussion.opinion_count = opinions ? opinions.length : 0;\n                  callback();\n                },\n                (error) => { console.error(error); callback(error); }\n              );\n            }, (error) => {\n              if (error) { console.log(error); reject(error); }\n              else {\n                result.discussions = discussions;\n                resolve(result);\n              }\n            });\n          }\n        });\n      }\n    });\n  });\n};\n\nmodule.exports = {\n  signInViaGithub,\n  getUser,\n  getFullProfile,\n};\n"
  },
  {
    "path": "backend/entities/user/model.js",
    "content": "/**\n * user model\n */\nconst mongoose = require('mongoose');\n\nconst userSchema = mongoose.Schema({\n  name: String,\n  username: String,\n  avatarUrl: String,\n  email: String,\n  role: { type: String, default: 'user' }, // ['admin', 'moderator', 'user']\n  github: {\n    id: Number,\n    url: String,\n    company: String,\n    location: String,\n    bio: String,\n    hireable: Boolean,\n    followers: Number,\n    following: Number,\n  },\n});\n\nmodule.exports = mongoose.model('user', userSchema);\n"
  },
  {
    "path": "backend/express.js",
    "content": "/**\n * module dependencies for express configuration\n */\nconst passport = require('passport');\nconst morgan = require('morgan');\nconst compress = require('compression');\nconst cookieParser = require('cookie-parser');\nconst bodyParser = require('body-parser');\nconst session = require('express-session');\nconst mongoStore = require('connect-mongo')(session);\nconst flash = require('connect-flash');\n\n/**\n * express configuration\n */\nconst expressConfig = (app, serverConfigs) => {\n\n  // apply gzip compression (should be placed before express.static)\n  app.use(compress());\n\n  // log server requests to console\n  !serverConfigs.PRODUCTION && app.use(morgan('dev'));\n\n  // get data from html froms\n  app.use(bodyParser.json());\n  app.use(bodyParser.urlencoded({ extended: true }));\n\n  // read cookies (should be above session)\n  app.use(cookieParser());\n\n  // use session with mongo\n  app.use(session({\n    resave: false,\n    saveUninitialized: true,\n    secret: 'secret',\n    store: new mongoStore({\n      url: serverConfigs.DBURL,\n      collection : 'sessions',\n    }),\n  }));\n\n  // use passport session\n  app.use(passport.initialize());\n  app.use(passport.session());\n\n  // apply passport configs\n  require('./passport')(app);\n\n  // connect flash for flash messages (should be declared after sessions)\n  app.use(flash());\n\n  // apply development environment additionals\n  if (!serverConfigs.PRODUCTION) {\n    require('./dev')(app);\n  }\n\n  // apply route configs\n  require('./routes')(app);\n};\n\nmodule.exports = expressConfig;\n"
  },
  {
    "path": "backend/mockData/discussions.js",
    "content": "\nconst discussions = [\n  {\n    'forum_id': '58c23d2efce8810b6f20b0b3',\n    'discussion_slug': 'a_pinned_discussion_' + ObjectId,\n    'user_id': '58c242a96ba2030d170f86f9',\n    'date': 1486450269704,\n    'title': 'A pinned discussion',\n    'content': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',\n    'favorites': 2,\n    'tags': ['react', 'redux', 'mongodb'],\n    'pinned': true,\n  },\n  {\n    'forum_id': '58c23d2efce8810b6f20b0b3',\n    'discussion_slug': 'another_pinned_discussion_' + ObjectId,\n    'user_id': '58c242a96ba2030d170f86f9',\n    'date': 1486450269704,\n    'title': 'Another pinned discussion',\n    'content': 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',\n    'favorites': 3,\n    'tags': ['react', 'redux'],\n    'pinned': true,\n  },\n  {\n    'forum_id': '58c23d2efce8810b6f20b0b3',\n    'discussion_slug': 'one_another_pinned_discussion_' + ObjectId,\n    'user_id': '58c242e2fb2e150d2570e02b',\n    'date': 1486450269704,\n    'title': 'One another pinned discussion',\n    'content': 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',\n    'favorites': 5,\n    'tags': ['express', 'mongodb'],\n    'pinned': true,\n  },\n  {\n    'forum_id': '58c23d2efce8810b6f20b0b3',\n    'discussion_slug': 'a_discussion_from_general_forum_' + ObjectId,\n    'user_id': '58c242e2fb2e150d2570e02b',\n    'date': 1486450269704,\n    'title': 'A discussion from general forum',\n    'content': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',\n    'favorites': 2,\n    'tags': ['react', 'redux', 'mongodb'],\n    'pinned': false,\n  },\n];\n\nmodule.exports = discussions;\n"
  },
  {
    "path": "backend/mockData/forum.js",
    "content": "const forums = [\n  {\n    'forum_id': 0,\n    'forum_slug': 'general',\n    'forum_name': 'General',\n  },\n  {\n    'forum_id': 1,\n    'forum_slug': 'react',\n    'forum_name': 'React',\n  },\n  {\n    'forum_id': 2,\n    'forum_slug': 'redux',\n    'forum_name': 'Redux',\n  },\n];\n\nmodule.exports = forums;\n"
  },
  {
    "path": "backend/mockData/opinions.js",
    "content": "const opinions = [\n  {\n    'discussion_id': '58c641904e457708a7147417',\n    'user_id': '58c242e2fb2e150d2570e02b',\n    'date': 1486450269704,\n    'content': 'Awesome stuffs!',\n  },\n  {\n    'discussion_id': '58c641904e457708a7147417',\n    'user_id': '58c242e2fb2e150d2570e02b',\n    'date': 1486450269704,\n    'content': 'Awesome stuffs really!',\n  },\n  {\n    'discussion_id': '58c641cf88336b08c76f3b50',\n    'user_id': '58c242a96ba2030d170f86f9',\n    'date': 1486450269704,\n    'content': 'Great job dude!',\n  },\n  {\n    'discussion_id': '58c641cf88336b08c76f3b50',\n    'user_id': '58c242a96ba2030d170f86f9',\n    'date': 1486450269704,\n    'content': 'These discussions!!!',\n  },\n];\n\nmodule.exports = opinions;\n"
  },
  {
    "path": "backend/mockData/users.js",
    "content": "const users = [\n  {\n    'user_id': 0,\n    'username': 'testuser1',\n    'email': 'testuser1@reforum.abc',\n    'avatarUrl': 'https://robohash.org/quisapientelibero.png?size=50x50&set=set1',\n    'name': 'Test User 1',\n  },\n  {\n    'user_id': 1,\n    'username': 'testuser2',\n    'email': 'testuser2@reforum.abc',\n    'avatarUrl': 'https://robohash.org/magnidictadeserunt.png?size=50x50&set=set1',\n    'name': 'Test User 2',\n  },\n  {\n    'user_id': 2,\n    'username': 'testuser3',\n    'email': 'testuser3@reforum.abc',\n    'avatarUrl': 'https://robohash.org/ducimusnostrumillo.jpg?size=50x50&set=set1',\n    'name': 'Test User 3',\n  },\n  {\n    'user_id': 3,\n    'username': 'testuser4',\n    'email': 'testuser4@reforum.abc',\n    'avatarUrl': 'https://robohash.org/autemharumvitae.bmp?size=50x50&set=set1',\n    'name': 'Test User 4',\n  },\n  {\n    'user_id': 4,\n    'username': 'testuser5',\n    'email': 'testuser5@reforum.abc',\n    'avatarUrl': 'https://robohash.org/similiquealiquidmaiores.jpg?size=50x50&set=set1',\n    'name': 'Test User 5',\n  },\n];\n\nmodule.exports = users;\n"
  },
  {
    "path": "backend/passport.js",
    "content": "/**\n * module dependencies for passport configuration\n */\nconst passport = require('passport');\nconst GitHubStrategy = require('passport-github').Strategy;\n\nconst GITHUB_CLIENT_ID = require('../config/credentials').GITHUB_CLIENT_ID;\nconst GITHUB_CLIENT_SECRET = require('../config/credentials').GITHUB_CLIENT_SECRET;\nconst GITHUB_CALLBACK_URL = require('../config/credentials').GITHUB_CALLBACK_URL;\n\n// controllers\nconst getUser = require('./entities/user/controller').getUser;\nconst signInViaGithub = require('./entities/user/controller').signInViaGithub;\n\n/**\n * passport configuration\n */\nconst passportConfig = (app) => {\n  passport.serializeUser((user, done) => {\n    done(null, user._id);\n  });\n\n  passport.deserializeUser((id, done) => {\n    getUser(id).then(\n      (user) => { done(null, user); },\n      (error) => { done(error); }\n    );\n  });\n\n  // github strategy for passport using OAuth\n  passport.use(new GitHubStrategy(\n    {\n      clientID: GITHUB_CLIENT_ID,\n      clientSecret: GITHUB_CLIENT_SECRET,\n      callbackURL: GITHUB_CALLBACK_URL,\n      scope: 'user:email',\n    },\n    (accessToken, refreshToken, gitProfile, done) => {\n      signInViaGithub(gitProfile).then(\n        (user) => { console.log('got the user'); done(null, user); },\n        (error) => { console.log('something error occurs'); done(error); }\n      );\n    }\n  ));\n};\n\nmodule.exports = passportConfig;\n"
  },
  {
    "path": "backend/routes.js",
    "content": "/**\n * module dependencies for routes configuration\n */\nconst path = require('path');\nconst express = require('express');\n\nconst userAPI = require('./entities/user/api');\nconst forumAPI = require('./entities/forum/api');\nconst discussionAPI = require('./entities/discussion/api');\nconst opinionAPI = require('./entities/opinion/api');\nconst adminAPI = require('./entities/admin/api');\n\n/**\n * routes configurations\n */\nconst routesConfig = (app) => {\n  // serves static files from public directory\n  const publicPath = path.resolve(__dirname, '../public');\n  app.use(express.static(publicPath));\n\n  // serve api endpoint\n  app.get('/api', (req, res) => {\n    res.send('Hello from API endpoint');\n  });\n\n  // apply user apis\n  userAPI(app);\n\n  // apply forum apis\n  forumAPI(app);\n\n  // apply discussion apis\n  discussionAPI(app);\n\n  // apply opinion apis\n  opinionAPI(app);\n\n  // apply admin apis\n  adminAPI(app);\n\n  // all get request will send index.html for react-router\n  // to handle the route request\n  app.get('*', (req, res) => {\n    res.sendFile(path.resolve(__dirname, '../public', 'index.html'));\n  });\n};\n\nmodule.exports = routesConfig;\n"
  },
  {
    "path": "backend/utilities/tools.js",
    "content": "/**\n * Search object properties recursively and\n * perform callback action on each\n * @param  {Object}   obj      [object to search props]\n * @param  {Function} callback [action to perform on each props, two parameters (property, object)]\n * @return {Object}            [new modified object]\n */\nconst deepPropSearch = (obj, callback) => {\n  // new object for immutability\n  const newObj = Object.assign({}, obj);\n\n  // recursive search function\n  const deepSearch = (obj) => {\n    for (const prop in obj) {\n      // perform callback for each property\n      callback && callback(prop, obj);\n\n      // recursive search inside objects/arrays\n      if (typeof obj[prop] === 'object') {\n        if (obj[prop].length && obj[prop].length > 0) {\n          obj[prop].forEach((deepObj) => {\n            deepSearch(deepObj);\n          });\n        } else {\n          deepSearch(obj[prop]);\n        }\n      }\n    }\n  };\n\n  // start deep searching for properties\n  deepSearch(newObj, callback);\n\n  // return new object, maintain immutability\n  return newObj;\n};\n\nconst generateDiscussionSlug = (discussionTitle) => {\n  const ObjectId = require('mongoose').Types.ObjectId();\n  return discussionTitle.replace(/[^a-z0-9]/gi, '_').toLowerCase() + '_' + ObjectId;\n};\n\nmodule.exports = {\n  deepPropSearch,\n  generateDiscussionSlug,\n};\n"
  },
  {
    "path": "config/credentials.js",
    "content": "module.exports = {\n  GITHUB_CLIENT_ID: '',\n  GITHUB_CLIENT_SECRET: '',\n  GITHUB_CALLBACK_URL: '',\n  DBURL: '',\n};\n"
  },
  {
    "path": "config/serverConfig.js",
    "content": "/**\n * module dependencies for server configuration\n */\nconst path = require('path');\nconst databaseUrl = require('./credentials').DBURL;\n\n/**\n * server configurations\n */\nconst serverConfigs = {\n  PRODUCTION: process.env.NODE_ENV === 'production',\n  PORT: process.env.PORT || 8080,\n  ROOT: path.resolve(__dirname, '..'),\n  DBURL: databaseUrl,\n};\n\nmodule.exports = serverConfigs;\n"
  },
  {
    "path": "config/webpack.dev.config.js",
    "content": "/**\n * module dependencies for webpack dev configuration\n */\nconst path = require('path');\nconst webpack = require('webpack');\n\n// define paths\nconst nodeModulesPath = path.resolve(__dirname, '../node_modules');\nconst buildPath = path.resolve(__dirname, '../public', 'build');\nconst mainAppPath = path.resolve(__dirname, '../frontend', 'App', 'index.js');\nconst sharedStylesPath = path.resolve(__dirname, '../frontend', 'SharedStyles');\nconst componentsPath = path.resolve(__dirname, '../frontend', 'Components');\nconst containersPath = path.resolve(__dirname, '../frontend', 'Containers');\nconst viewsPath = path.resolve(__dirname, '../frontend', 'Views');\n\n/**\n * webpack development configuration\n */\nmodule.exports = {\n  target  : 'web',\n  devtool: 'inline-source-map',\n\n  entry: [\n    'webpack-hot-middleware/client',\n    mainAppPath,\n  ],\n\n  output: {\n    filename: 'bundle.js',\n    path: buildPath,\n    publicPath: '/build/',\n  },\n\n  module: {\n    loaders: [\n      {\n        test: /\\.js$/,\n        loaders: [ 'react-hot', 'babel-loader' ],\n        exclude: [nodeModulesPath],\n      },\n      {\n        test: /\\.css$/,\n        loaders: [\n          'style-loader',\n          'css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]',\n          'postcss-loader?sourceMap=inline',\n        ],\n      },\n      { test: /\\.(png|jpg)$/, loader: 'url-loader?limit=8192' },\n      { test: /\\.svg$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml' },\n    ],\n  },\n\n  postcss: [ require('autoprefixer'), require('postcss-nesting') ],\n\n  plugins: [\n    new webpack.HotModuleReplacementPlugin(),\n    new webpack.NoErrorsPlugin(),\n  ],\n\n  resolve : {\n    extensions: ['', '.js', '.css'],\n    alias: {\n      SharedStyles: sharedStylesPath,\n      Components: componentsPath,\n      Containers: containersPath,\n      Views: viewsPath,\n    },\n  },\n};\n"
  },
  {
    "path": "config/webpack.prod.config.js",
    "content": "/**\n * module dependencies for webpack production configuration\n */\nconst path = require('path');\nconst webpack = require('webpack');\nconst ExtractTextPlugin = require('extract-text-webpack-plugin');\n\n// define paths\nconst nodeModulesPath = path.resolve(__dirname, '../node_modules');\nconst buildPath = path.resolve(__dirname, '../public', 'build');\nconst mainAppPath = path.resolve(__dirname, '../frontend', 'App', 'index.js');\nconst sharedStylesPath = path.resolve(__dirname, '../frontend', 'SharedStyles');\nconst componentsPath = path.resolve(__dirname, '../frontend', 'Components');\nconst containersPath = path.resolve(__dirname, '../frontend', 'Containers');\nconst viewsPath = path.resolve(__dirname, '../frontend', 'Views');\n\n/**\n * webpack production configuration\n */\nmodule.exports = {\n  target  : 'web',\n\n  entry: [\n    mainAppPath,\n  ],\n\n  output: {\n    filename: 'bundle.js',\n    path: buildPath,\n  },\n\n  module: {\n    loaders: [\n      {\n        test: /\\.js$/,\n        loaders: [ 'react-hot', 'babel-loader' ],\n        exclude: [nodeModulesPath],\n      },\n      {\n        test: /\\.css$/,\n        loader: ExtractTextPlugin.extract(\n          'style-loader',\n          'css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]!postcss-loader?sourceMap=inline'\n        ),\n      },\n      { test: /\\.(png|jpg)$/, loader: 'url-loader?limit=8192' },\n      { test: /\\.svg$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml' },\n    ],\n  },\n\n  postcss: [ require('autoprefixer'), require('postcss-nesting') ],\n\n  plugins: [\n    new webpack.optimize.DedupePlugin(),\n    new webpack.optimize.OccurrenceOrderPlugin(),\n    new webpack.optimize.UglifyJsPlugin(),\n    new ExtractTextPlugin('style.css', { allChunks: true }),\n  ],\n\n  resolve: {\n    extensions: ['', '.js', '.css'],\n    alias: {\n      SharedStyles: sharedStylesPath,\n      Components: componentsPath,\n      Containers: containersPath,\n      Views: viewsPath,\n    },\n  },\n\n  externals: {\n    'react': 'React',\n    'react-dom': 'ReactDOM',\n    'redux': 'Redux',\n    'react-router': 'ReactRouter',\n    'moment': 'moment',\n  },\n};\n"
  },
  {
    "path": "docs/api.md",
    "content": "# API Docs\n\nWork in progress :-)\n"
  },
  {
    "path": "docs/system_overview.md",
    "content": "# System Overview\n\nWork in progress :-)\n"
  },
  {
    "path": "frontend/App/Admin.js",
    "content": "import React, { Component } from 'react';\nimport { Link, browserHistory } from 'react-router';\nimport { connect } from 'react-redux';\nimport { Helmet } from 'react-helmet';\n\nimport { getUser } from './actions';\n\nimport AdminHeader from 'Containers/AdminHeader';\nimport appLayout from 'SharedStyles/appLayout.css';\nimport styles from './styles.css';\n\nclass AdminContainer extends Component {\n  componentDidMount() {\n    // fetch the user\n    this.props.getUser();\n  }\n\n  render() {\n    const { user } = this.props;\n\n    if (user.fetchingUser) {\n      return (\n        <div style={{ textAlign: 'center', marginTop: 20 }}>\n          Loading users profile...\n        </div>\n      );\n    }\n\n    if (user.role === 'admin') {\n      return (\n        <div>\n          <Helmet><title>ReForum | Admin</title></Helmet>\n          <AdminHeader />\n          {this.props.children}\n        </div>\n      );\n    }\n    else {\n      return (\n        <div style={{ textAlign: 'center', marginTop: 20 }}>\n          We are cordially sorry that you are not allowed to view admin panel!<br />\n          Please go back to <Link to='/'>root</Link> page.\n        </div>\n      );\n    }\n\n    return (\n      <div style={{ textAlign: 'center', marginTop: 20 }}>\n        Something went wrong.<br />\n        Please go back to <Link to='/'>root</Link> page.\n      </div>\n    );\n  }\n}\n\nexport default connect(\n  (state) => { return {\n    user: state.user,\n  }; },\n  (dispatch) => { return {\n    getUser: () => { dispatch(getUser()); },\n  }; }\n)(AdminContainer);\n"
  },
  {
    "path": "frontend/App/App.js",
    "content": "import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Helmet } from 'react-helmet';\n\nimport Header from 'Containers/Header';\nimport Footer from 'Components/Footer';\nimport appLayout from 'SharedStyles/appLayout.css';\nimport styles from './styles.css';\n\nimport { getForums, updateCurrentForum, getUser } from './actions';\n\nclass AppContainer extends Component {\n  componentDidMount() {\n    const {\n      params,\n      updateCurrentForum,\n      getForums,\n      getUser,\n    } = this.props;\n\n    // get all forum list\n    getForums();\n\n    // check for authenticated user\n    getUser();\n\n    // set current forum based on route\n    const currentForum = params.forum || '';\n    updateCurrentForum(currentForum);\n  }\n\n  componentDidUpdate() {\n    const {\n      forums,\n      params,\n      currentForum,\n      updateCurrentForum,\n    } = this.props;\n\n    let newCurrentForum = '';\n    if (params.forum) newCurrentForum = params.forum;\n    else if (forums) newCurrentForum = forums[0].forum_slug;\n\n    // update current forum if necessery\n    if (newCurrentForum !== currentForum) updateCurrentForum(newCurrentForum);\n  }\n\n  render() {\n    const { forums } = this.props;\n\n    // render only if we get the forum lists\n    if (forums) {\n      return (\n        <div>\n          <Helmet><title>ReForum</title></Helmet>\n\n          <div className={styles.gitForkTag}>\n            <a className={styles.gitLink} href=\"https://github.com/shoumma/ReForum\" target=\"_blank\">Fork on Github</a>\n          </div>\n\n          <Header />\n          {this.props.children}\n          <Footer />\n        </div>\n      );\n    }\n\n    return (\n      <div className={styles.loadingWrapper}>Loading...</div>\n    );\n  }\n}\n\nexport default connect(\n  (state) => { return {\n    forums: state.app.forums,\n    currentForum: state.app.currentForum,\n  }; },\n  (dispatch) => { return {\n    getForums: () => { dispatch(getForums()); },\n    updateCurrentForum: (currentForum) => { dispatch(updateCurrentForum(currentForum)); },\n    getUser: () => { dispatch(getUser()); },\n  }; }\n)(AppContainer);\n"
  },
  {
    "path": "frontend/App/actions.js",
    "content": "import _ from 'lodash';\nimport {\n  START_FETCHING_FORUMS,\n  STOP_FETCHING_FORUMS,\n  FETCHING_FORUMS_SUCCESS,\n  FETCHING_FORUMS_FAILURE,\n  UPDATECURRENTFORUM,\n  START_FETCHING_USER,\n  FETCHING_USER_SUCCESS,\n  FETCHING_USER_FAILURE,\n} from './constants';\nimport {\n  fetchForums,\n  fetchUser,\n  signOut,\n} from './api';\n\n/**\n * get all forum list\n * @return {action}\n */\nexport const getForums = () => {\n  return (dispatch, getState) => {\n    dispatch({ type: START_FETCHING_FORUMS });\n\n    fetchForums().then(\n      data => dispatch({ type: FETCHING_FORUMS_SUCCESS, payload: data.data }),\n      error => dispatch({ type: FETCHING_FORUMS_FAILURE })\n    );\n  };\n};\n\n/**\n * update current forum when route change occurs\n * @param  {String} currentForum\n * @return {action}\n */\nexport const updateCurrentForum = (currentForum) => {\n  return {\n    type: UPDATECURRENTFORUM,\n    payload: currentForum,\n  };\n};\n\n/**\n * get the current user from server\n * @return {action}\n */\nexport const getUser = () => {\n  return (dispatch, getState) => {\n    dispatch({ type: START_FETCHING_USER });\n\n    fetchUser().then(\n      data => {\n        if (!data.data._id) dispatch({ type: FETCHING_USER_FAILURE });\n        else dispatch({ type: FETCHING_USER_SUCCESS, payload: data.data });\n      },\n      error => dispatch({ type: FETCHING_USER_FAILURE })\n    );\n  };\n};\n"
  },
  {
    "path": "frontend/App/api.js",
    "content": "import axios from 'axios';\n\nexport const fetchForums = (forum_id) => {\n  return axios.get('/api/forum');\n};\n\nexport const fetchUser = () => {\n  return axios.get('/api/user/getUser');\n};\n"
  },
  {
    "path": "frontend/App/constants.js",
    "content": "export const UPDATECURRENTFORUM = 'update_current_forum';\n\nexport const START_FETCHING_FORUMS = 'start_fetching_forums';\nexport const STOP_FETCHING_FORUMS = 'stop_fetching_forums';\nexport const FETCHING_FORUMS_SUCCESS = 'fetching_forums_success';\nexport const FETCHING_FORUMS_FAILURE = 'fetching_forums_failure';\n\nexport const START_FETCHING_USER = 'start_fetching_user';\nexport const FETCHING_USER_SUCCESS = 'fetching_user_success';\nexport const FETCHING_USER_FAILURE = 'fetching_user_failure';\nexport const SIGNOUT_USER_SUCCESS = 'signOut_user_success';\nexport const SIGNOUT_USER_FAILURE = 'signOut_user_failure';\n"
  },
  {
    "path": "frontend/App/index.js",
    "content": "import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Router, Route, browserHistory, IndexRoute } from 'react-router';\nimport { Provider } from 'react-redux';\nimport styles from './styles';\n\n// app store\nimport appStore from './store';\n\n// app views\nimport AppContainer from './App';\nimport AdminContainer from './Admin';\nimport Dashboard from '../Views/AdminDashboard';\nimport Header from 'Containers/Header';\nimport ForumFeed from '../Views/ForumFeed';\nimport SingleDiscussion from '../Views/SingleDiscussion';\nimport NewDiscussion from '../Views/NewDiscussion';\nimport UserProfile from '../Views/UserProfile';\nimport NotFound from '../Views/NotFound';\n\nReactDOM.render (\n  <Provider store={appStore}>\n    <Router history={browserHistory}>\n      <Route path=\"/admin\" component={AdminContainer}>\n        <IndexRoute component={Dashboard} />\n      </Route>\n      <Route path=\"/\" component={AppContainer}>\n        <IndexRoute component={ForumFeed} />\n        <Route path=\":forum\" component={ForumFeed} />\n        <Route path=\":forum/discussion/:discussion\" component={SingleDiscussion} />\n        <Route path=\":forum/new_discussion\" component={NewDiscussion} />\n        <Route path=\"user/:username\" component={UserProfile} />\n        <Route path=\"*\" component={NotFound} />\n      </Route>\n    </Router>\n  </Provider>,\n  document.getElementById('root')\n);\n"
  },
  {
    "path": "frontend/App/reducers.js",
    "content": "import {\n  START_FETCHING_FORUMS,\n  STOP_FETCHING_FORUMS,\n  FETCHING_FORUMS_SUCCESS,\n  FETCHING_FORUMS_FAILURE,\n  UPDATECURRENTFORUM,\n  START_FETCHING_USER,\n  FETCHING_USER_SUCCESS,\n  FETCHING_USER_FAILURE,\n} from './constants';\n\nconst initialState = {\n  fetchingForums: false,\n  forums: null,\n  currentForum: 'general',\n  error: false,\n};\n\n/**\n * reducer for top level app state\n */\nexport const appReducer = (state = initialState, action) => {\n  switch (action.type) {\n    case START_FETCHING_FORUMS:\n      return Object.assign({}, state, {\n        fetchingForums: true,\n      });;\n\n    case STOP_FETCHING_FORUMS:\n      return Object.assign({}, state, {\n        fetchingForums: false,\n      });;\n\n    case FETCHING_FORUMS_SUCCESS:\n      return Object.assign({}, state, {\n        forums: action.payload,\n        fetchingForums: false,\n        error: false,\n      });\n\n    case FETCHING_FORUMS_FAILURE:\n      return Object.assign({}, state, {\n        fetchingForums: false,\n        error: 'Unable to fetch forums',\n      });\n\n    case UPDATECURRENTFORUM:\n      return Object.assign({}, state, {\n        currentForum: action.payload,\n      });\n\n    default:\n      return state;\n  }\n};\n\n/**\n * reducer for user\n */\nconst initialUserState = {\n  fetchingUser: true,\n  authenticated: false,\n  error: null,\n  _id: null,\n  name: null,\n  email: null,\n  username: null,\n  avatarUrl: null,\n  githubUrl: null,\n  githubLocation: null,\n  githubBio: null,\n  role: null,\n};\n\nexport const userReducer = (state = initialUserState, action) => {\n  switch (action.type) {\n    case START_FETCHING_USER:\n      return Object.assign({}, state, {\n        fetchUser: true,\n      });\n\n    case FETCHING_USER_SUCCESS:\n      const {\n        _id,\n        name,\n        username,\n        avatarUrl,\n        email,\n        githubBio,\n        githubUrl,\n        githubLocation,\n        role,\n      } = action.payload;\n\n      return Object.assign({}, state), {\n        fetchingUser: false,\n        authenticated: true,\n        error: null,\n        _id,\n        name,\n        username,\n        avatarUrl,\n        email,\n        githubBio,\n        githubUrl,\n        githubLocation,\n        role,\n      };\n\n    case FETCHING_USER_FAILURE:\n      return Object.assign({}, initialUserState, {\n        fetchingUser: false,\n        error: 'Unable to fetch user!',\n      });\n\n    default:\n      return state;\n  }\n};\n"
  },
  {
    "path": "frontend/App/store.js",
    "content": "import { createStore, applyMiddleware, compose } from 'redux';\nimport { combineReducers } from 'redux';\nimport thunk from 'redux-thunk';\n\nimport { appReducer, userReducer } from './reducers';\nimport { feedReducer } from '../Views/ForumFeed/reducers';\nimport { singleDiscussionReducer } from '../Views/SingleDiscussion/reducers';\nimport { newDiscussionReducer } from '../Views/NewDiscussion/reducers';\nimport { adminInfoReducer } from '../Views/AdminDashboard/reducers';\nimport { userProfileReducer } from '../Views/UserProfile/reducers';\n\n// root reducer for app\nconst rootReducer = combineReducers({\n  user: userReducer,\n  app: appReducer,\n  feed: feedReducer,\n  discussion: singleDiscussionReducer,\n  newDiscussion: newDiscussionReducer,\n  adminInfo: adminInfoReducer,\n  userProfile: userProfileReducer,\n});\n\n// dev tool extension\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n\n// application store\nlet store = createStore(\n  rootReducer,\n  /* preloaded state, */\n  composeEnhancers(\n    applyMiddleware(thunk)\n  )\n);\n\nexport default store;\n"
  },
  {
    "path": "frontend/App/styles.css",
    "content": "/**\n * Application container stylings\n */\n\n.loadingWrapper {\n  height: 100vh;\n  width: 100vw;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.gitForkTag {\n  position: fixed;\n  bottom:0px;\n  right: 0px;\n\n  background-color: #f9f9f9;\n  border-top: 1px solid #e8e8e8;\n  border-bottom: 1px solid #e8e8e8;\n\n  padding: 5px 50px;\n  transform: rotate(-45deg) translateY(-5px) translateX(54px);\n\n  z-index: 1;\n}\n\n.gitLink {\n  text-decoration: none;\n  color: black;\n}\n"
  },
  {
    "path": "frontend/Components/Button/index.js",
    "content": "import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport styles from './styles';\n\nclass Button extends Component {\n  render() {\n    const {\n      type,\n      fullWidth,\n      noUppercase,\n      className,\n      style,\n      onClick,\n      alwaysActive,\n    } = this.props;\n\n    return (\n      <button\n        onClick={onClick}\n        className={classnames(\n          styles.button,\n          styles.buttonDefaults,\n          styles[type],\n          fullWidth && styles.fullWidth,\n          noUppercase && styles.noUppercase,\n          alwaysActive && styles.alwaysActive,\n          className\n        )}\n        style={style}\n      >\n        {this.props.children}\n      </button>\n    );\n  }\n}\n\nButton.defaultProps = {\n  type: 'default',\n  fullWidth: false,\n  noUppercase: false,\n  alwaysActive: false,\n  className: '',\n  style: {},\n  onClick: () => { },\n};\n\nButton.propTypes = {\n  type: React.PropTypes.oneOf(['default', 'outline']),\n  fullWidth: React.PropTypes.bool,\n  noUppercase: React.PropTypes.bool,\n  alwaysActive: React.PropTypes.bool,\n  className: React.PropTypes.string,\n  style: React.PropTypes.object,\n  onClick: React.PropTypes.func,\n};\n\nexport default Button;\n"
  },
  {
    "path": "frontend/Components/Button/styles.css",
    "content": "@value borderColor, secondaryFontColor, primaryFontColor from 'SharedStyles/globalStyles.css';\n\n/**\n * Button styles\n */\n\n/* resetting all default button styles */\nbutton {\n  background: none;\n  border: 0;\n  color: inherit;\n  font: inherit;\n  line-height: normal;\n  overflow: visible;\n  padding: 0;\n  user-select: none;\n  outline: none;\n  cursor: pointer;\n}\n\n.buttonDefaults {\n  padding: 10px 20px;\n  text-transform: uppercase;\n  font-weight: 700;\n  font-size: 13px;\n  letter-spacing: 0.5px;\n}\n\n.default {\n  color: secondaryFontColor;\n  transition: color 0.3s;\n  &:hover { color: primaryFontColor; }\n}\n\n.outline {\n  color: secondaryFontColor;\n  border: 1px solid borderColor;\n  transition: color 0.3s, border 0.3s;\n  &:hover {\n    color: primaryFontColor;\n    border: 1px solid secondaryFontColor;\n  }\n}\n\n.fullWidth { width: 100%; }\n.noUppercase { text-transform: none; }\n.alwaysActive {\n  color: primaryFontColor;\n  border-color: primaryFontColor;\n}\n"
  },
  {
    "path": "frontend/Components/Dashboard/Counts/index.js",
    "content": "import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport styles from './styles';\n\nclass Counts extends Component {\n  render() {\n    const {\n      count,\n      label,\n    } = this.props;\n\n    return (\n      <div className={styles.container}>\n        <div className={styles.count}>{count}</div>\n        <div className={styles.label}>{label}</div>\n      </div>\n    );\n  }\n}\n\nCounts.defaultProps = {\n  count: 0,\n  label: 'default',\n};\n\nCounts.propTypes = {\n  count: React.PropTypes.number,\n  label: React.PropTypes.string,\n};\n\nexport default Counts;\n"
  },
  {
    "path": "frontend/Components/Dashboard/Counts/styles.css",
    "content": "@value primaryFontColor, secondaryFontColor, borderColor from 'SharedStyles/globalStyles.css';\n@value smallBP from 'SharedStyles/globalStyles.css';\n\n.container {\n  flex: 1;\n  margin: 0px 10px 10px 10px;\n  padding: 20px 10px;\n  max-width: 200px;\n\n  display: flex;\n  align-items: center;\n\n  border: 1px solid borderColor;\n}\n\n.count {\n  font-size: 40px;\n  font-weight: lighter;\n}\n\n.label {\n  margin-left: 20px;\n}\n"
  },
  {
    "path": "frontend/Components/Dashboard/ForumBox/index.js",
    "content": "import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport styles from './styles';\n\nimport Button from 'Components/Button';\n\nclass ForumBox extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      newForumTitle: '',\n      newForumSlug: '',\n      errorMsg: null,\n    };\n\n    this.handleCreateForum = this.handleCreateForum.bind(this);\n  }\n\n  handleCreateForum() {\n    // remove any error messages\n    this.setState({ errorMsg: null });\n\n    const {\n      newForumTitle,\n      newForumSlug,\n    } = this.state;\n\n    let convertedTitle = null;\n    let convertedSlug = null;\n\n    // check and convert forum title\n    if (newForumTitle !== '') {\n      // trim any leading or ending white spaces\n      convertedTitle = newForumTitle.trim();\n\n      // check the length, 4 is hardcoded here\n      if (convertedTitle.length < 4) {\n        return this.setState({ errorMsg: 'Forum title should have at least 4 charecters.' });\n      }\n    } else {\n      return this.setState({ errorMsg: 'Forum title is empty. Please provide a valid Forum Title.' });\n    }\n\n    // check and confirm forum slug\n    if (convertedSlug !== '') {\n      const slugRegex = /^[a-z\\_]+$/;\n      convertedSlug = newForumSlug.match(slugRegex) ? newForumSlug : null;\n\n      // length check\n      if (convertedSlug && convertedSlug.length < 4) {\n        return this.setState({ errorMsg: 'Forum slug should have at least 4 charecters.' });\n      }\n    } else {\n      return this.setState({ errorMsg: 'Forum slug is empty. Please provide a valid Forum Slug.' });\n    }\n\n    if (!convertedTitle) { return this.setState({ errorMsg: 'Please provide a valid Forum Title.' }); }\n    if (!convertedSlug) { return this.setState({ errorMsg: 'Please provide a valid Forum Slug. Slug can only contain small case alphabets and underscore.' }); }\n\n    if (convertedTitle && convertedSlug) { this.props.createAction({ title: convertedTitle, slug: convertedSlug }); }\n  }\n\n  render() {\n    const {\n      forums,\n      creatingForum,\n      deleteAction,\n      deletingForum,\n    } = this.props;\n\n    const {\n      newForumTitle,\n      newForumSlug,\n      errorMsg,\n    } = this.state;\n\n    return (\n      <div className={styles.container}>\n        <div className={styles.title}>Current Forums</div>\n        <div className={styles.forumsContainer}>\n          { deletingForum && <div className={styles.loadingMsg}>Removing forum, please wait...</div> }\n\n          { forums.map((forum) => <div key={forum.id} className={styles.forum}>\n            <div className={styles.forumTitle}>{ forum.name }</div>\n            <div className={styles.forumSlug}>({ forum.slug })</div>\n            <div className={styles.removeButton}>\n              <Button onClick={() => { deleteAction(forum.id); }}>Remove</Button>\n            </div>\n          </div>) }\n\n        </div>\n\n        <div className={styles.createForumContainer}>\n          { creatingForum && <div className={styles.loadingMsg}>Creating forum, please wait...</div> }\n          <div className={styles.createTitle}>Create New Forum</div>\n          <div className={styles.createForum}>\n            <div className={styles.createInputContainer}>\n              <div className={styles.inputLabel}>Title: </div>\n              <input\n                type={'text'}\n                className={styles.createInput}\n                placeholder={'Forum Title'}\n                onChange={(e) => { this.setState({ newForumTitle: e.target.value }); }}\n              />\n            </div>\n            <div className={styles.createInputContainer}>\n              <div className={styles.inputLabel}>Slug: </div>\n              <input\n                type={'text'}\n                className={styles.createInput}\n                placeholder={'forum_slug'}\n                onChange={(e) => { this.setState({ newForumSlug: e.target.value }); }}\n              />\n            </div>\n            <Button onClick={this.handleCreateForum}>Create</Button>\n          </div>\n          { errorMsg && <div className={styles.errorMsg}>{errorMsg}</div> }\n        </div>\n      </div>\n    );\n  }\n}\n\nForumBox.defaultProps = {\n};\n\nForumBox.propTypes = {\n  forums: React.PropTypes.array,\n  deletingForum: React.PropTypes.bool,\n  deleteAction: React.PropTypes.func,\n  creatingForum: React.PropTypes.bool,\n  createAction: React.PropTypes.func,\n};\n\nexport default ForumBox;\n"
  },
  {
    "path": "frontend/Components/Dashboard/ForumBox/styles.css",
    "content": "@value primaryFontColor, secondaryFontColor, borderColor from 'SharedStyles/globalStyles.css';\n@value smallBP from 'SharedStyles/globalStyles.css';\n\n.container {\n  display: flex;\n  flex-direction: column;\n  border: 1px solid borderColor;\n}\n\n.title {\n  padding: 10px 10px;\n  border-bottom: 1px solid borderColor;\n}\n\n.forumsContainer {\n  position: relative;\n\n  & .forum {\n    padding: 0px 20px;\n    display: flex;\n    align-items: center;\n    border-bottom: 1px solid borderColor;\n\n    & .forumTitle { font-weight: bold; }\n    & .forumSlug { color: secondaryFontColor; margin-left: 10px; }\n  }\n}\n\n.createForumContainer {\n  position: relative;\n\n  & .createTitle {\n    border-bottom: none;\n    padding: 10px 10px 0px 10px;\n  }\n\n  & .createForum {\n    padding: 10px 10px;\n    display: flex;\n    align-items: center;\n\n    & .createInputContainer {\n      display: flex;\n      align-items: center;\n      margin-left: 20px;\n      &:first-child { margin-left: 0px; }\n\n      & .inputLabel { margin-right: 10px; }\n      & .createInput { outline: none; padding: 5px 10px; }\n    }\n  }\n}\n\n\n.errorMsg {\n  font-weight: bold;\n  padding: 5px 10px 10px 10px;\n  color: rgba(231, 76, 60,1.0);\n  font-size: 12px;\n  line-height: 14px;\n}\n\n.loadingMsg {\n  position: absolute;\n  top: 0px;\n  left: 0px;\n  width: 100%;\n  height: 100%;\n  background-color: rgba(255, 255, 255, 0.9);\n  border-bottom: 1px solid borderColor;\n\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n"
  },
  {
    "path": "frontend/Components/FeedBox/DiscussionBox/index.js",
    "content": "import React, { Component } from 'react';\nimport { Link } from 'react-router';\nimport classnames from 'classnames';\nimport Moment from 'moment';\nimport styles from './styles';\n\nimport Tag from 'Components/Tag';\n\nclass DiscussionBox extends Component {\n  render() {\n    const {\n      voteCount,\n      userName,\n      userGitHandler,\n      discussionTitle,\n      time,\n      opinionCount,\n      tags,\n      link,\n      userProfile,\n    } = this.props;\n\n    const postTime = Moment(time);\n    const timeDisplay = postTime.from(Moment());\n\n    return (\n      <div className={styles.container}>\n        <div className={classnames(styles.title, userProfile && styles.titleBottomMargin)}><Link to={link}>{discussionTitle}</Link></div>\n\n        { !userProfile && <div className={styles.posterInfo}>\n          <Link to={`/user/${userGitHandler}`} className={styles.name}>{userName}</Link>\n          <a target=\"_blank\" href={`https://www.github.com/${userGitHandler}`} className={styles.gitHandler}>\n            - <i className={classnames('fa fa-github-alt', styles.gitIcon)}></i> {userGitHandler}\n          </a>\n        </div> }\n\n        <div className={styles.boxFooter}>\n          <div className={styles.tagsArea}>\n            { tags.map((tag) => <Tag key={tag} name={tag} />) }\n          </div>\n\n          <div className={styles.postInfo}>\n            <span className={styles.info}>{timeDisplay}</span>\n            <span className={styles.info}>{voteCount} favorites</span>\n            <span className={styles.info}>{opinionCount} opinions</span>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n\nDiscussionBox.defaultProps = {\n  discussionId: 1,\n  voteCount: 20,\n  userName: 'Hello World',\n  userGitHandler: 'github',\n  discussionTitle: 'This is a default post title',\n  time: Moment(),\n  opinionCount: 12,\n  tags: ['react', 'redux', 'nodejs'],\n  link: '',\n  userProfile: false,\n};\n\nDiscussionBox.propTypes = {\n  discussionId: React.PropTypes.number,\n  voteCount: React.PropTypes.number,\n  userName: React.PropTypes.string,\n  userGitHandler: React.PropTypes.string,\n  discussionTitle: React.PropTypes.string,\n  time: React.PropTypes.any,\n  opinionCount: React.PropTypes.number,\n  tags: React.PropTypes.array,\n  link: React.PropTypes.string,\n  userProfile: React.PropTypes.bool,\n};\n\nexport default DiscussionBox;\n"
  },
  {
    "path": "frontend/Components/FeedBox/DiscussionBox/styles.css",
    "content": "@value primaryFontColor, secondaryFontColor, borderColor, backShade from 'SharedStyles/globalStyles';\n@value smallBP from 'SharedStyles/globalStyles';\n\n/**\n * PostBox styles\n */\n\n.container {\n  display: flex;\n  flex-direction: column;\n  padding: 10px;\n  border-bottom: 1px solid borderColor;\n  &:last-child { border-bottom: none; }\n}\n\n.title {\n  font-size: 18px;\n  font-weight: 300;\n\n  & a {\n    text-decoration: none;\n    color: primaryFontColor;\n  }\n}\n\n.titleBottomMargin { margin-bottom: 10px; }\n\n.posterInfo {\n  margin-top: 10px;\n  font-size: 13px;\n  & .name {\n    font-weight: 700;\n    color: secondaryFontColor;\n    text-decoration: none;\n    transition: color 0.3s;\n\n    &:hover { color: primaryFontColor; }\n  }\n  & .gitHandler {\n    margin-left: 5px;\n    text-decoration: none;\n    color: secondaryFontColor;\n    transition: color 0.3s;\n\n    & .gitIcon {\n      font-size: 16px;\n      padding: 0 5px;\n    }\n\n    &:hover { color: primaryFontColor; }\n  }\n}\n\n.boxFooter {\n  margin-top: 10px;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n\n  @media smallBP {\n    margin-top: 0px;\n    flex-direction: column-reverse;\n    align-items: flex-start;\n  }\n}\n\n.tagsArea {\n  display: flex;\n  align-items: center;\n\n  @media smallBP { margin-top: 5px; }\n}\n\n.postInfo {\n  & .info {\n    margin-left: 20px;\n    font-size: 12px;\n    font-weight: 700;\n    text-transform: lowercase;\n    color: secondaryFontColor;\n\n    &:first-child { margin-left: 0px; }\n  }\n}\n"
  },
  {
    "path": "frontend/Components/FeedBox/index.js",
    "content": "import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport Moment from 'moment';\nimport styles from './styles';\n\nimport DiscussionBox from './DiscussionBox';\n\nclass FeedBox extends Component {\n  renderSort() {\n    const {\n      activeSortingMethod,\n      onChangeSortingMethod,\n    } = this.props;\n\n    if (this.props.type === 'general') {\n      return (\n        <div className={styles.sortList}>\n          <span\n            className={classnames(styles.sort, (activeSortingMethod === 'date') && styles.sortActive)}\n            onClick={() => onChangeSortingMethod('date')}\n          >\n            Latest\n          </span>\n          <span\n            className={classnames(styles.sort, (activeSortingMethod === 'popularity') && styles.sortActive)}\n            onClick={() => onChangeSortingMethod('popularity')}\n          >\n            Popular\n          </span>\n        </div>\n      );\n    }\n    return null;\n  }\n\n  renderEmptyDiscussionLine(loading, discussions) {\n    if (!loading) {\n      if (!discussions || discussions.length === 0) {\n        return <div className={styles.loading}>No discussions...</div>;\n      }\n    }\n  }\n\n  render() {\n    const {\n      type,\n      loading,\n      discussions,\n      currentForum,\n      userProfile,\n    } = this.props;\n\n    let discussionBoxTitle = '';\n    if (type === 'general') discussionBoxTitle = 'Discussions';\n    if (type === 'pinned') discussionBoxTitle = 'Pinned';\n\n    return (\n      <div className={styles.container}>\n        <div className={styles.header}>\n          <span className={styles.title}>{discussionBoxTitle}</span>\n          { !userProfile && this.renderSort() }\n        </div>\n        { loading && <div className={styles.loading}>Loading...</div> }\n        { this.renderEmptyDiscussionLine(loading, discussions) }\n        { !loading &&\n          <div className={styles.discussions}>\n            { discussions && discussions.map((discussion) =>\n              <DiscussionBox\n                userProfile={userProfile}\n                key={discussion._id}\n                userName={discussion.user.name || discussion.user.username}\n                userGitHandler={discussion.user.username}\n                discussionTitle={discussion.title}\n                time={discussion.date}\n                tags={discussion.tags}\n                opinionCount={discussion.opinion_count}\n                voteCount={discussion.favorites.length}\n                link={`/${userProfile ? discussion.forum.forum_slug : currentForum}/discussion/${discussion.discussion_slug}`}\n              />\n            ) }\n          </div>\n        }\n      </div>\n    );\n  }\n}\n\nFeedBox.defaultProps = {\n  type: 'general',\n  loading: false,\n  discussions: [],\n  currentForum: 'general',\n  activeSortingMethod: 'date',\n  onChangeSortingMethod: (val) => { },\n  userProfile: false,\n};\n\nFeedBox.propTypes = {\n  type: React.PropTypes.oneOf(['general', 'pinned']),\n  loading: React.PropTypes.bool,\n  discussions: React.PropTypes.array,\n  currentForum: React.PropTypes.string,\n  activeSortingMethod: React.PropTypes.string,\n  onChangeSortingMethod: React.PropTypes.func,\n  userProfile: React.PropTypes.bool,\n};\n\nexport default FeedBox;\n"
  },
  {
    "path": "frontend/Components/FeedBox/styles.css",
    "content": "@value borderColor, backShade, secondaryFontColor, primaryFontColor from 'SharedStyles/globalStyles.css';\n\n/**\n * FeedBox styles\n */\n.container {\n  margin-top: 20px;\n  border: 1px solid borderColor;\n\n  &:first-child { margin-top: 0px; }\n}\n\n.header {\n  border-bottom: 1px solid borderColor;\n  height: 30px;\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n  justify-content: space-between;\n  background-color: backShade;\n}\n\n.title {\n  padding-left: 10px;\n  font-size: 13px;\n  font-weight: 700;\n  letter-spacing: 0.5px;\n  text-transform: uppercase;\n}\n\n.sortList {\n  & .sort {\n    color: secondaryFontColor;\n    display: inline-block;\n    height: 30px;\n    line-height: 30px;\n    font-size: 10px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    padding: 0px 10px;\n    cursor: pointer;\n    user-select: none;\n\n    &.sortActive { color: primaryFontColor; }\n  }\n}\n\n.posts {\n  display: flex;\n  flex-direction: column;\n}\n\n.loading {\n  font-size: 12px;\n  letter-spacing: 0.5px;\n  color: secondaryFontColor;\n  padding: 20px 0px;\n  text-align: center;\n}\n"
  },
  {
    "path": "frontend/Components/Footer/index.js",
    "content": "import React, { Component } from 'react';\nimport classnames from 'classnames';\n\nimport styles from './styles';\nimport appLayout from 'SharedStyles/appLayout.css';\n\nclass Footer extends Component {\n  render() {\n    return (\n      <div className={classnames(appLayout.constraintWidth, styles.contentArea)}>\n        {/* Copyright? Who cares? :-) */}\n      </div>\n    );\n  }\n}\n\n\nFooter.defaultProps = {\n};\n\nFooter.propTypes = {\n};\n\nexport default Footer;\n"
  },
  {
    "path": "frontend/Components/Footer/styles.css",
    "content": "@value smallBP, mediumBP, largeBP from 'SharedStyles/globalStyles';\n\n/**\n * Footer styles\n */\n.contentArea {\n  margin-top: 40px;\n  margin-bottom: 40px;\n  text-align: center;\n}\n"
  },
  {
    "path": "frontend/Components/Header/Logo/index.js",
    "content": "import React, { Component } from 'react';\nimport styles from './styles';\n\nconst Logo = () => {\n  return (\n    <div className={styles.logoContainer}>\n      <div className={styles.logo}>\n        <svg viewBox=\"0 0 100 100\"xmlns=\"http://www.w3.org/2000/svg\">\n          <g id=\"Group\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n            <path d=\"M51.1388842,81.5721454 L69.5667388,100 L92.0066458,100 C96.4114635,100 100,96.4212534 100,92.0066458 L100,7.99335421 C100,3.58853654 96.4212534,0 92.0066458,0 L7.99335421,0 C3.58853654,0 0,3.57874658 0,7.99335421 L0,92.0066458 C0,96.4114635 3.57874658,100 7.99335421,100 L10.5882353,100 L10.5882353,44.7058824 C10.7474244,24.5366987 27.1464843,8.23529412 47.3529412,8.23529412 C67.6575276,8.23529412 84.1176471,24.6954136 84.1176471,45 C84.1176471,64.0263195 69.6647717,79.676989 51.1388842,81.5721454 Z M24.2232146,73.5788183 L24.1176471,73.6843859 L50.4332612,100 L24.1176471,100 L24.1176471,73.4929507 C24.1527823,73.521637 24.1879715,73.5502596 24.2232146,73.5788183 Z\" id=\"Combined-Shape\" fill=\"#F1C40F\"></path>\n            <circle id=\"Oval\" fill=\"#F1C40F\" cx=\"47.6470588\" cy=\"45.2941176\" r=\"23.5294118\"></circle>\n          </g>\n        </svg>\n      </div>\n      <div className={styles.logoTitle}>ReForum</div>\n    </div>\n  );\n};\n\nexport default Logo;\n"
  },
  {
    "path": "frontend/Components/Header/Logo/styles.css",
    "content": "/* logo */\n.logoContainer {\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n}\n\n.logo {\n  width: 40px;\n  height: 40px;\n}\n\n.logoTitle {\n  margin-left: 10px;\n  font-size: 20px;\n  font-weight: 700;\n}\n"
  },
  {
    "path": "frontend/Components/Header/NavigationBar/index.js",
    "content": "import React, { Component } from 'react';\nimport { Link, IndexLink } from 'react-router';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport styles from './styles';\n\nclass NavigationBar extends Component {\n  render() {\n    const {\n      navigationLinks,\n    } = this.props;\n\n    if (navigationLinks) {\n      return (\n        <ul className={styles.navigationBar}>\n          { navigationLinks.map(link => {\n            if (link.id === 0) {\n              return (\n                <li key={_.uniqueId('navLink_')}>\n                  <IndexLink\n                    className={styles.links}\n                    activeClassName={styles.linkActive}\n                    to='/'\n                  >\n                    Home\n                  </IndexLink>\n                </li>\n              );\n            }\n\n            return (\n              <li key={_.uniqueId('navLink_')}>\n                <Link\n                  className={styles.links}\n                  activeClassName={styles.linkActive}\n                  to={link.link}\n                >\n                  {link.name}\n                </Link>\n              </li>\n            );\n          }) }\n        </ul>\n      );\n    }\n\n    return null;\n  }\n}\n\nNavigationBar.defaultProps = {\n  navigationLinks: [\n    {\n      id: 0,\n      name: 'General',\n      link: '/',\n    },\n  ],\n};\n\nNavigationBar.propTypes = {\n  navigationLinks: React.PropTypes.array,\n};\n\nexport default NavigationBar;\n"
  },
  {
    "path": "frontend/Components/Header/NavigationBar/styles.css",
    "content": "@value primaryFontColor, secondaryFontColor, borderColor from 'SharedStyles/globalStyles.css';\n@value smallBP from 'SharedStyles/globalStyles.css';\n\n/**\n * NavigationBar styles\n */\n\n.navigationBar {\n  border-top: 1px solid borderColor;\n  border-bottom: 1px solid borderColor;\n  list-style-type: none;\n  display: flex;\n  margin: 0px;\n  padding: 0px;\n\n  @media smallBP { padding: 0px 10px; }\n}\n\n.links {\n  display: block;\n  padding: 0px 15px;\n  height: 38px;\n  line-height: 38px;\n  text-decoration: none;\n  font-size: 14px;\n  color: secondaryFontColor;\n  user-select: none;\n  transition: color 0.3s;\n}\n\n.links:hover { color: primaryFontColor; }\n\n.linkActive {\n  color: primaryFontColor;\n  background-color: #f9f9f9;\n}\n"
  },
  {
    "path": "frontend/Components/Header/UserMenu/index.js",
    "content": "import React, { Component } from 'react';\nimport { Link } from 'react-router';\nimport classnames from 'classnames';\nimport onClickOutside from 'react-onclickoutside';\nimport styles from './styles';\n\nimport Button from 'Components/Button';\n\nclass UserMenu extends Component {\n  constructor(props) {\n    super(props);\n    this.state = { activeSubMenu: false };\n    this.toggleSubMenu = this.toggleSubMenu.bind(this);\n  }\n\n  handleClickOutside() {\n    this.setState({ activeSubMenu: false });\n  }\n\n  toggleSubMenu() {\n    this.setState((prevState) => {\n      return { activeSubMenu: !prevState.activeSubMenu };\n    });\n  }\n\n  renderSubMenu() {\n    const { activeSubMenu } = this.state;\n    const {\n      signedIn,\n      gitHandler,\n    } = this.props;\n\n    if (activeSubMenu) {\n      return (\n        <div className={styles.subMenu}>\n          <Button className={styles.subMenuClose} onClick={this.toggleSubMenu} alwaysActive>\n            <i className={classnames('fa fa-close')}></i>\n          </Button>\n\n          { !signedIn && <a className={styles.signInLink} href={'/api/user/authViaGitHub'}>\n            <Button className={styles.gitLoginBtn} alwaysActive>\n              <i className={classnames('fa fa-github-alt', styles.subMenuOcto)}></i>\n              <span className={styles.btnLabel}>With GitHub</span>\n            </Button>\n          </a> }\n\n          { signedIn && <span onClick={this.toggleSubMenu}><Link className={styles.subMenuItem} to={`/user/${gitHandler}`}>My Profile</Link></span> }\n          {/* { signedIn && <a className={styles.subMenuItem} href={'#'}>Settings</a> } */}\n          { signedIn && <a className={styles.subMenuItem} href={'/api/user/signout'}>Sign Out</a> }\n        </div>\n      );\n    }\n\n    return null;\n  }\n\n  render() {\n    const {\n      signedIn,\n      userName,\n      avatar,\n      signOutAction,\n    } = this.props;\n\n    if (signedIn) {\n      return (\n        <div style={{ position: 'relative' }}>\n          <div className={styles.container} onClick={this.toggleSubMenu}>\n            <img className={styles.userAvatar} src={avatar} alt={`${userName} Avatar`} />\n            <span className={styles.title}>{userName}</span>\n          </div>\n          {this.renderSubMenu()}\n        </div>\n      );\n    }\n\n    return (\n      <div className={styles.container}>\n        <Button\n          alwaysActive\n          className={classnames(styles.signInBtn, styles.title)}\n          onClick={this.toggleSubMenu}\n        >\n          Sign Up / Sign In\n        </Button>\n\n        {this.renderSubMenu()}\n      </div>\n    );\n  }\n}\n\nUserMenu.defaultProps = {\n  signedIn: false,\n  userName: '',\n  gitHandler: '',\n  avatar: '',\n};\n\nUserMenu.propTypes = {\n  signedIn: React.PropTypes.bool.isRequired,\n  userName: React.PropTypes.string,\n  gitHandler: React.PropTypes.string,\n  avatar: React.PropTypes.string,\n};\n\nexport default onClickOutside(UserMenu);\n"
  },
  {
    "path": "frontend/Components/Header/UserMenu/styles.css",
    "content": "@value primaryFontColor, secondaryFontColor, borderColor from 'SharedStyles/globalStyles.css';\n@value smallBP, mediumBP, largeBP from 'SharedStyles/globalStyles.css';\n\n/**\n * UserMenu styles\n */\n.container {\n  cursor: pointer;\n  position: relative;\n  display: flex;\n  align-items: center;\n  flex-flow: row nowrap;\n}\n\n.userAvatar {\n  width: 40px;\n  height: 40px;\n  border-radius: 50px;\n}\n\n.title {\n  margin-left: 15px;\n  font-size: 14px;\n  font-weight: 700;\n}\n\n.signInLink {\n  color: primaryFontColor;\n  text-decoration: none;\n}\n\n.signInBtn {\n  padding-left: 0px;\n  padding-right: 0px;\n  height: 40px;\n  display: flex;\n  align-items: center;\n}\n\n.subMenu {\n  z-index: 1;\n  padding: 10px 0px;\n  position: absolute;\n  top: 42px;\n  right: 0px;\n  width: 240px;\n\n  background-color: white;\n  border: 1px solid borderColor;\n\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n\n  @media smallBP {\n    position: fixed;\n    top: 0;\n    left: 0;\n    height: 100%;\n    width: 100%;\n    background-color: rgba(255,255,255, 0.8);\n    border: none;\n  }\n}\n\n.subMenuItem {\n  width: 100%;\n  color: secondaryFontColor;\n  text-decoration: none;\n  text-align: center;\n  line-height: 32px;\n\n  &:hover { color: primaryFontColor; }\n\n  @media smallBP {\n    color: primaryFontColor;\n    line-height: 42px;\n  }\n}\n\n.subMenuClose {\n  position: absolute;\n  top: 10px;\n  right: 10px;\n\n  @media mediumBP { display: none; }\n  @media largeBP { display: none; }\n}\n\n.gitLoginBtn {\n  width: 100%;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  padding: 15px 0px;\n}\n\n.subMenuOcto {\n  font-size: 24px;\n  margin-right: 15px;\n}\n"
  },
  {
    "path": "frontend/Components/NewDiscussion/PinButton/index.js",
    "content": "import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport styles from './styles';\n\nimport Button from 'Components/Button';\n\nclass PinButton extends Component {\n  constructor(props) {\n    super(props);\n    this.state = { value: false };\n  }\n\n  componentWillReceiveProps(nextProps) {\n    const { value } = nextProps;\n    this.setState({ value });\n  }\n\n  updateValue(value) {\n    this.props.onChange(value);\n    this.setState({ value });\n  }\n\n  render() {\n    const { value } = this.state;\n\n    return (\n      <div className={styles.container}>\n        <div className={styles.label}>Is it a pinned discussion?</div>\n\n        <div className={styles.btnContainer}>\n          <Button\n            alwaysActive={value ? true : false}\n            onClick={() => { this.updateValue(true); }}\n          >\n            Yes\n          </Button>\n\n          <Button\n            alwaysActive={!value ? true : false}\n            onClick={() => { this.updateValue(false); }}\n          >\n            No\n          </Button>\n        </div>\n\n      </div>\n    );\n  }\n}\n\nPinButton.defaultProps = {\n  onChange: (val) => {},\n  value: false,\n};\n\nPinButton.propTypes = {\n  onChange: React.PropTypes.func,\n  value: React.PropTypes.bool,\n};\n\nexport default PinButton;\n"
  },
  {
    "path": "frontend/Components/NewDiscussion/PinButton/styles.css",
    "content": "@value primaryFontColor, secondaryFontColor, borderColor from 'SharedStyles/globalStyles.css';\n@value smallBP from 'SharedStyles/globalStyles.css';\n\n.container {\n  display: flex;\n  align-items: center;\n  margin: 5px 0px 0px 10px;\n}\n\n.label {\n  margin-right: 10px;\n}\n\n.btnContainer {\n\n}\n\n.button {\n  padding: 10px 20px;\n  border: 1px solid borderColor;\n}\n"
  },
  {
    "path": "frontend/Components/NewDiscussion/TagsInput/index.js",
    "content": "import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport styles from './styles';\n\nimport Button from 'Components/Button';\nimport Tag from 'Components/Tag';\n\nclass TagsInput extends Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      errorMsg: null,\n      tags: [],\n      tagName: '',\n    };\n  }\n\n  componentWillReceiveProps(nextProps) {\n    const { value } = nextProps;\n    this.setState({ tags: value, errorMsg: null });\n  }\n\n  validateTag(tagName) {\n    const regex = /^[a-z0-9.\\-_$@*!]{4,20}$/;\n    return regex.test(tagName);\n  }\n\n  sameTag(tagName) {\n    const { tags } = this.state;\n    let matched = false;\n    tags.map((tag) => {\n      if (tag === tagName) matched = true;\n    });\n    return matched;\n  }\n\n  addTag() {\n    const {\n      tagName,\n      tags,\n      errorMsg,\n    } = this.state;\n\n    if (this.validateTag(tagName)) {\n      if (!this.sameTag(tagName)) {\n        const newTags = tags.concat(tagName);\n        this.setState({\n          tags: newTags,\n          errorMsg: null,\n          tagName: '',\n        });\n        this.props.onChange(newTags);\n      } else {\n        this.setState({ errorMsg: 'Same tag!!!' });\n      }\n    } else {\n      this.setState({ errorMsg: 'Tags can only contain small letters and numbers. No space or special characters please. Min 4 and max 20 chars.' });\n    }\n  }\n\n  removeTag(position) {\n    const { tags } = this.state;\n    const newTags = [...tags.slice(0, position), ...tags.slice(position + 1, tags.length)];\n    this.setState({ tags: newTags });\n    this.props.onChange(newTags);\n  }\n\n  renderTags() {\n    const { tags } = this.state;\n\n    return tags.map((tag, i) => {\n      return (\n        <Tag\n          name={tag}\n          key={tag}\n          withRemove\n          removeAction={() => { this.removeTag(i); }}\n        />\n      );\n    });\n  }\n\n  renderInput() {\n    const {\n      tagName,\n      tags,\n    } = this.state;\n    const { maxTagCount } = this.props;\n\n    if ( tags.length < maxTagCount ) {\n      return (\n        <div className={styles.inputContainer}>\n          <input\n            className={styles.tagInput}\n            placeholder={'tag name...'}\n            value={tagName}\n            onChange={(e) => { this.setState({ tagName: e.target.value }); }}\n          />\n          <Button\n            className={styles.addButton}\n            onClick={() => { this.addTag(); }}\n          >\n            <i className={classnames('fa fa-plus-circle')}></i>\n          </Button>\n        </div>\n      );\n    }\n\n    return null;\n  }\n\n  render() {\n    const {\n      errorMsg,\n      tagName,\n      tags,\n    } = this.state;\n\n    const { maxTagCount } = this.props;\n\n    return (\n      <div className={styles.container}>\n        <div className={styles.tagContainer}>\n          <div className={styles.label}>Tags :</div>\n          { this.renderTags() }\n          { this.renderInput() }\n        </div>\n        { errorMsg && <div className={styles.errorMsg}>{errorMsg}</div> }\n      </div>\n    );\n  }\n}\n\nTagsInput.defaultProps = {\n  value: [],\n  maxTagCount: 3,\n  onChange: (tags) => {},\n};\n\nTagsInput.propTypes = {\n  value: React.PropTypes.array,\n  maxTagCount: React.PropTypes.number,\n  onChange: React.PropTypes.func,\n};\n\nexport default TagsInput;\n"
  },
  {
    "path": "frontend/Components/NewDiscussion/TagsInput/styles.css",
    "content": "@value primaryFontColor, secondaryFontColor, borderColor from 'SharedStyles/globalStyles.css';\n@value smallBP from 'SharedStyles/globalStyles.css';\n\n.container {\n  margin: 0px 0px 0px 10px;\n}\n\n.tagContainer {\n  height: 36px;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n}\n\n.label {\n\n}\n\n.inputContainer {\n  display: flex;\n  align-items: center;\n}\n\n.tagInput {\n  width: 100px;\n  padding: 10px 10px;\n  border: none;\n  outline: none;\n  background-color: none;\n}\n\n.addButton {\n  padding: 5px 10px;\n  font-size: 20px;\n}\n\n.errorMsg {\n  font-weight: bold;\n  margin-top: 5px;\n  color: rgba(231, 76, 60,1.0);\n  font-size: 12px;\n  line-height: 14px;\n}\n"
  },
  {
    "path": "frontend/Components/RichEditor/BlockStyleControls.js",
    "content": "import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport styles from './styles.css';\n\nimport Button from 'Components/Button';\nimport StyleButton from './StyleButton';\n\nclass BlockStyleControls extends Component {\n  render() {\n    const {\n      onToggle,\n      editorState,\n      type,\n    } = this.props;\n\n    const blockTypes = [\n      // {label: 'H1', style: 'header-one'},\n      // {label: 'H2', style: 'header-two'},\n      {label: 'H3', style: 'header-three'},\n      {label: 'H4', style: 'header-four'},\n      {label: 'H5', style: 'header-five'},\n      // {label: 'H6', style: 'header-six'},\n      {label: 'Blockquote', style: 'blockquote'},\n      // {label: 'UL', style: 'unordered-list-item'},\n      // {label: 'OL', style: 'ordered-list-item'},\n      {label: 'Code Block', style: 'code-block'},\n    ];\n\n    const selection = editorState.getSelection();\n    const blockType = editorState\n      .getCurrentContent()\n      .getBlockForKey(selection.getStartKey())\n      .getType();\n\n    return (\n      <div className={styles.controls}>\n        { blockTypes.map((eachType) =>\n          <StyleButton\n            key={eachType.label}\n            onToggle={onToggle}\n            active={eachType.style === blockType}\n            label={eachType.label}\n            style={eachType.style}\n          />\n        ) }\n      </div>\n    );\n  }\n}\n\nBlockStyleControls.propTypes = {\n  onToggle: React.PropTypes.func.isRequired,\n  editorState: React.PropTypes.any.isRequired,\n  type: React.PropTypes.oneOf(['newDiscussion', 'newOpinion']),\n};\n\nexport default BlockStyleControls;\n"
  },
  {
    "path": "frontend/Components/RichEditor/InlineStyleControls.js",
    "content": "import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport styles from './styles.css';\n\nimport Button from 'Components/Button';\nimport StyleButton from './StyleButton';\n\nclass InlineStyleControls extends Component {\n  render() {\n    const {\n      onToggle,\n      editorState,\n    } = this.props;\n\n    const inlineStyles = [\n      {label: 'Bold', style: 'BOLD'},\n      {label: 'Italic', style: 'ITALIC'},\n      // {label: 'Underline', style: 'UNDERLINE'},\n      {label: 'Monospace', style: 'CODE'},\n    ];\n\n    const currentStyle = editorState.getCurrentInlineStyle();\n\n    return (\n      <div className={styles.controls}>\n        { inlineStyles.map((eachType) =>\n          <StyleButton\n            key={eachType.label}\n            onToggle={onToggle}\n            active={currentStyle.has(eachType.style)}\n            label={eachType.label}\n            style={eachType.style}\n          />\n        ) }\n      </div>\n    );\n  }\n}\n\nInlineStyleControls.propTypes = {\n  onToggle: React.PropTypes.func.isRequired,\n  editorState: React.PropTypes.any.isRequired,\n  type: React.PropTypes.oneOf(['newDiscussion', 'newOpinion']),\n};\n\nexport default InlineStyleControls;\n"
  },
  {
    "path": "frontend/Components/RichEditor/StyleButton.js",
    "content": "import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport styles from './styles.css';\n\nclass StyleButton extends React.Component {\n  constructor() {\n    super();\n    this.onToggle = (e) => {\n      e.preventDefault();\n      this.props.onToggle(this.props.style);\n    };\n  }\n\n  render() {\n    let className = `${styles.controlButton}`;\n    if (this.props.active) {\n      className += ` ${styles.controlButtonActive}`;\n    }\n\n    return (\n      <div className={className} onMouseDown={this.onToggle}>\n        {this.props.label}\n      </div>\n    );\n  }\n}\n\nStyleButton.propTypes = {\n  onToggle: React.PropTypes.func.isRequired,\n  active: React.PropTypes.any.isRequired,\n  label: React.PropTypes.string.isRequired,\n  style: React.PropTypes.string.isRequired,\n};\n\nexport default StyleButton;\n"
  },
  {
    "path": "frontend/Components/RichEditor/index.js",
    "content": "import React, { Component } from 'react';\nimport {\n  Editor,\n  EditorState,\n  ContentState,\n  RichUtils,\n  convertToRaw,\n  convertFromRaw,\n} from 'draft-js';\nimport classnames from 'classnames';\nimport styles from './styles';\n\nimport Button from 'Components/Button';\nimport BlockStyleControls from './BlockStyleControls';\nimport InlineStyleControls from './InlineStyleControls';\n\nclass RichEditor extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      editorState: EditorState.createEmpty(),\n    };\n\n    this.focus = () => this.refs.editor.focus();\n    this.onEditorStateChange = this.onEditorStateChange.bind(this);\n    this.handleKeyCommand = this.handleKeyCommand.bind(this);\n    this.onTab = this.onTab.bind(this);\n    this.toggleBlockType = this.toggleBlockType.bind(this);\n    this.toggleInlineStyle = this.toggleInlineStyle.bind(this);\n  }\n\n  componentDidMount() {\n    const { value } = this.props;\n    if (value) {\n      const contentState = convertFromRaw(JSON.parse(value));\n      const editorState = EditorState.createWithContent(contentState);\n      this.setState({ editorState });\n    }\n  }\n\n  onEditorStateChange(editorState) {\n    const { onChange } = this.props;\n    this.setState({ editorState });\n\n    // trigger on change converting the ContentState to raw object\n    onChange(JSON.stringify(convertToRaw(editorState.getCurrentContent())));\n  }\n\n  handleKeyCommand(command) {\n    const newState = RichUtils.handleKeyCommand(this.state.editorState, command);\n    if (newState) {\n      this.onEditorStateChange(newState);\n      return true;\n    }\n    return false;\n  }\n\n  onTab(event) {\n    const maxDepth = 4;\n    this.onEditorStateChange(RichUtils.onTab(event, this.state.editorState, maxDepth));\n  }\n\n  toggleBlockType(blockType) {\n    this.onEditorStateChange(\n      RichUtils.toggleBlockType(\n        this.state.editorState,\n        blockType\n      )\n    );\n  }\n\n  toggleInlineStyle(inlineStyle) {\n    this.onEditorStateChange(\n      RichUtils.toggleInlineStyle(\n        this.state.editorState,\n        inlineStyle\n      )\n    );\n  }\n\n  customBlockStyles(contentBlock) {\n    const type = contentBlock.getType();\n    if (type === 'blockquote') return styles.editorBlockquoteStyle;\n    if (type === 'code-block') return styles.editorCodeStyle;\n    if (type === 'header-one') return styles.editorH1Style;\n    if (type === 'header-two') return styles.editorH2Style;\n    if (type === 'header-three') return styles.editorH3Style;\n  }\n\n  render() {\n    const {\n      type,\n      onSave,\n      readOnly,\n    } = this.props;\n\n    // styling for inline styles\n    const inlineStyleMap = {\n      'CODE': {\n        color: '#e74c3c',\n        backgroundColor: '#f9f9f9',\n        border: '1px solid #e8e8e8',\n        fontFamily: 'monospace',\n        padding: '2px 5px',\n        margin: '0px 5px',\n      },\n    };\n\n    let saveButtonLabel = '';\n    if (type === 'newOpinion') saveButtonLabel = 'Reply';\n    if (type === 'newDiscussion') saveButtonLabel = 'Post Discussion';\n\n    let placeholder = '';\n    if (type === 'newOpinion') placeholder = 'Your opinion...';\n    if (type === 'newDiscussion') placeholder = 'Discussion summary...';\n\n    return (\n      <div className={classnames(styles.container, readOnly && styles.readOnlyContainer)}>\n        { !readOnly && <div className={styles.controlsContainer}>\n          <InlineStyleControls\n            type={type}\n            editorState={this.state.editorState}\n            onToggle={this.toggleInlineStyle}\n          />\n          <BlockStyleControls\n            type={type}\n            editorState={this.state.editorState}\n            onToggle={this.toggleBlockType}\n          />\n        </div> }\n\n        <div\n          className={classnames(\n            styles.editorContainer,\n            !readOnly && styles[type],\n            readOnly && styles.readOnlyEditorContainer\n          )}\n          onClick={this.focus}\n        >\n          <Editor\n            customStyleMap={inlineStyleMap}\n            blockStyleFn={this.customBlockStyles}\n            readOnly={readOnly}\n            editorState={this.state.editorState}\n            onChange={this.onEditorStateChange}\n            placeholder={placeholder}\n            handleKeyCommand={this.handleKeyCommand}\n            onTab={this.onTab}\n            ref='editor'\n          />\n        </div>\n\n        { !readOnly && <Button noUppercase style={{ alignSelf: 'center' }} onClick={onSave}>\n          {saveButtonLabel}\n        </Button> }\n      </div>\n    );\n  }\n}\n\nRichEditor.defaultProps = {\n  readOnly: false,\n  value: null,\n  type: 'newDiscussion',\n  onChange: () => { },\n  onSave: () => { },\n};\n\nRichEditor.propTypes = {\n  readOnly: React.PropTypes.bool,\n  value: React.PropTypes.any,\n  type: React.PropTypes.oneOf(['newDiscussion', 'newOpinion']),\n  onChange: React.PropTypes.func,\n  onSave: React.PropTypes.func,\n};\n\nexport default RichEditor;\n"
  },
  {
    "path": "frontend/Components/RichEditor/styles.css",
    "content": "@value borderColor, secondaryFontColor, primaryFontColor, backShade from 'SharedStyles/globalStyles.css';\n@value smallBP from 'SharedStyles/globalStyles';\n\n/**\n * RichEditor styles\n */\n\n.container {\n  margin-top: 10px;\n  margin-bottom: 20px;\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n  border: 1px solid borderColor;\n}\n\n.readOnlyContainer {\n  border: none;\n}\n\n.editorContainer {\n  padding: 10px 10px;\n  width: 100%;\n  min-height: 60px;\n  border-bottom: 1px solid borderColor;\n  cursor: text;\n\n  & :global .public-DraftEditorPlaceholder-root {\n    position: absolute;\n    color: secondaryFontColor;\n  }\n}\n\n.readOnlyEditorContainer {\n  padding: 0px;\n  border-bottom: none;\n}\n\n.buttonClass {\n  margin-top: 20px;\n}\n\n.newDiscussion { min-height: 300px; }\n\n\n/**\n * Controls\n */\n.controlsContainer {\n  width: 100%;\n  display: flex;\n  flex-direction: row;\n  border-bottom: 1px solid borderColor;\n  @media smallBP { flex-direction: column-reverse; }\n}\n\n.controls {\n  display: flex;\n}\n\n.controlButton {\n  padding: 10px 10px;\n  user-select: none;\n  cursor: pointer;\n\n  text-transform: uppercase;\n  color: secondaryFontColor;\n  font-weight: 700;\n  font-size: 12px;\n  letter-spacing: 0.5px;\n\n  transition: color 0.3s;\n\n  &:hover { color: primaryFontColor; }\n\n  @media smallBP { padding: 5px 10px; }\n}\n\n.controlButtonActive {\n  color: primaryFontColor;\n}\n\n/**\n * editor text styles\n */\n\n.editorBlockquoteStyle {\n  display: inline-block;\n  position: relative;\n  margin: 10px 0px 10px 20px;\n  padding: 10px 20px;\n  background-color: backShade;\n  font-style: italic;\n}\n\n.editorBlockquoteStyle::before {\n  content: '';\n  position: absolute;\n  height: 100%;\n  width: 5px;\n  left: 0px;\n  top: 0px;\n  background-color: borderColor;\n}\n\n.editorCodeStyle {\n  margin: 0px;\n  padding: 0px;\n  line-height: 18px;\n  overflow-x: hidden;\n}\n\n:global .public-DraftStyleDefault-pre {\n  margin: 10px 0px;\n  padding: 5px 5px;\n  background-color: backShade;\n  border: 1px solid borderColor;\n}\n\n.editorH1Style,\n.editorH2Style,\n.editorH3Style { color: #4c4c4c; }\n\n.editorH1Style { font-size: 1.6em; }\n.editorH2Style { font-size: 1.3em; }\n.editorH3Style { font-size: 1.1em; }\n"
  },
  {
    "path": "frontend/Components/SideBar/index.js",
    "content": "import React, { Component } from 'react';\nimport { Link } from 'react-router';\nimport styles from './styles';\n\nimport Button from 'Components/Button';\n\nclass SideBar extends Component {\n  render() {\n    const {\n      currentForum,\n    } = this.props;\n\n    return (\n      <div className={styles.sidebarContainer}>\n        <Link to={`/${currentForum}/new_discussion`}>\n          <Button type='outline' fullWidth noUppercase>\n            New Discussion\n          </Button>\n        </Link>\n      </div>\n    );\n  }\n}\n\n\nSideBar.defaultProps = {\n  currentForum: 'general',\n};\n\nSideBar.propTypes = {\n  currentForum: React.PropTypes.string,\n};\n\nexport default SideBar;\n"
  },
  {
    "path": "frontend/Components/SideBar/styles.css",
    "content": "@value smallBP, mediumBP, largeBP from 'SharedStyles/globalStyles';\n\n/**\n * SideBar component styles\n */\n.sidebarContainer {\n  width: 250px;\n  margin-left: 10px;\n}\n"
  },
  {
    "path": "frontend/Components/SingleDiscussion/Discussion/index.js",
    "content": "import _ from 'lodash';\nimport React, { Component } from 'react';\nimport { Link } from 'react-router';\nimport moment from 'moment';\nimport classnames from 'classnames';\nimport styles from './styles.css';\n\nimport PlaceholderImage from 'SharedStyles/placeholder.jpg';\nimport Button from 'Components/Button';\nimport Tag from 'Components/Tag';\nimport RichEditor from 'Components/RichEditor';\n\nclass Discussion extends Component {\n  render() {\n    const {\n      id,\n      userAvatar,\n      userName,\n      userGitHandler,\n      discTitle,\n      discDate,\n      discContent,\n      tags,\n      favoriteCount,\n      favoriteAction,\n      userFavorited,\n      toggleingFavorite,\n      allowDelete,\n      deletingDiscussion,\n      deleteAction,\n    } = this.props;\n\n    let dateDisplay = moment(discDate);\n    dateDisplay = dateDisplay.from(moment());\n\n    let favCount = '';\n    if (toggleingFavorite) favCount = 'Toggling Favorite...';\n    else if (userFavorited) favCount = `Favorited (${favoriteCount})`;\n    else if (favoriteCount === 0) favCount = 'Make favorite';\n    else if (favoriteCount === 1) favCount = '1 favorite';\n    else favCount = `${favoriteCount} favorites`;\n\n    return (\n      <div className={styles.container}>\n\n        <div className={styles.infoContainer}>\n          <img className={styles.avatar} src={userAvatar} />\n          <div className={styles.columnOnSmallBP}>\n            <div className={styles.userInfo}>\n              <Link to={`/user/${userGitHandler}`} className={styles.name}>{userName || userGitHandler}</Link>\n              <a href={`https://www.github.com/${userGitHandler}`} target=\"_blank\" className={styles.gitHandler}>\n                <i className={classnames('fa fa-github-alt', styles.gitIcon)}></i>\n                <span>{userGitHandler}</span>\n              </a>\n            </div>\n            <div className={styles.dateInfo}>{dateDisplay}</div>\n          </div>\n        </div>\n\n        <div className={styles.discTitle}>{discTitle}</div>\n        <div className={styles.discContent}>\n          <RichEditor\n            readOnly={true}\n            value={discContent}\n          />\n        </div>\n\n        <div className={styles.discFooter}>\n          <div className={styles.tags}>\n            { tags.map(tag => <Tag name={tag} key={_.uniqueId('tag_')} />)}\n          </div>\n          <Button noUppercase className={styles.favoriteButton} onClick={() => { !toggleingFavorite && favoriteAction(id); }}>\n            <i className={classnames(`fa fa-${userFavorited ? 'heart' : 'heart-o'}`)}></i>\n            <span>{favCount}</span>\n          </Button>\n\n          { allowDelete && <Button noUppercase className={styles.deleteButton} onClick={() => { deleteAction(); }}>\n            <i className={classnames('fa fa-trash', styles.trashIcon)}></i>\n            <span>Delete</span>\n          </Button> }\n        </div>\n\n        { deletingDiscussion && <div className={styles.deletingDiscussion}>\n          Deleting Discussion...\n        </div> }\n      </div>\n    );\n  }\n}\n\nDiscussion.defaultProps = {\n  id: 0,\n  userAvatar: PlaceholderImage,\n  userName: 'User name',\n  userGitHandler: 'github',\n  discTitle: 'Default Discussion Title',\n  discDate: 'a day ago',\n  discContent: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',\n  tags: [ 'react', 'redux', 'webkit' ],\n  favoriteCount: 1,\n  favoriteAction: () => { },\n  userFavorited: false,\n  toggleingFavorite: false,\n  allowDelete: false,\n  deletingDiscussion: false,\n  deleteAction: () => { },\n};\n\nDiscussion.propTypes = {\n  id: React.PropTypes.any,\n  userAvatar: React.PropTypes.string,\n  userName: React.PropTypes.string,\n  userGitHandler: React.PropTypes.string,\n  discTitle: React.PropTypes.string,\n  discDate: React.PropTypes.any,\n  discContent: React.PropTypes.any,\n  tags: React.PropTypes.array,\n  favoriteCount: React.PropTypes.number,\n  favoriteAction: React.PropTypes.func,\n  userFavorited: React.PropTypes.bool,\n  toggleingFavorite: React.PropTypes.bool,\n  allowDelete: React.PropTypes.bool,\n  deletingDiscussion: React.PropTypes.bool,\n  deleteAction: React.PropTypes.func,\n};\n\nexport default Discussion;\n"
  },
  {
    "path": "frontend/Components/SingleDiscussion/Discussion/styles.css",
    "content": "@value borderColor, secondaryFontColor, primaryFontColor from 'SharedStyles/globalStyles.css';\n@value smallBP from 'SharedStyles/globalStyles.css';\n\n/**\n * Discussion styles\n */\n\n.container {\n  padding: 20px 10px 0px 10px;\n  position: relative;\n}\n\n.infoContainer {\n  display: flex;\n  align-items: center;\n\n  & .avatar {\n    width: 42px;\n    height: 42px;\n    border-radius: 50px;\n  }\n\n  & .columnOnSmallBP {\n    flex: 1;\n    display: flex;\n    @media smallBP { flex-direction: column; }\n  }\n\n  & .userInfo {\n    margin-left: 10px;\n    flex: 1;\n    display: flex;\n\n    & .name {\n      font-weight: 700;\n      color: primaryFontColor;\n      text-decoration: none;\n    }\n\n    & .gitHandler {\n      margin-left: 15px;\n      text-decoration: none;\n      color: secondaryFontColor;\n      transition: color 0.3s;\n      &:hover { color: primaryFontColor; }\n\n      & .gitIcon { margin-right: 5px; }\n    }\n  }\n\n  & .dateInfo {\n    font-size: 13px;\n    color: secondaryFontColor;\n    @media smallBP { margin-left: 10px; }\n  }\n}\n\n.discTitle {\n  margin-top: 15px;\n  font-size: 24px;\n  line-height: 32px;\n  font-weight: 400;\n}\n\n.discContent {\n  margin-top: 10px;\n  font-size: 15px;\n  line-height: 26px;\n}\n\n.discFooter {\n  margin-top: 10px;\n  display: flex;\n  align-items: center;\n\n  @media smallBP {\n    flex-direction: column;\n    align-items: flex-start;\n  }\n\n  & .tags { flex: 1; }\n\n  & .favoriteButton,\n  & .deleteButton {\n    @media smallBP {\n      margin-top: 5px;\n      padding-left: 0px;\n      padding-right: 0px;\n    }\n    & i {\n      font-size: 20px;\n      margin-right: 10px;\n    }\n  }\n}\n\n.deletingDiscussion {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  background-color: rgba(255, 255, 255, 0.9);\n\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n"
  },
  {
    "path": "frontend/Components/SingleDiscussion/Opinion/index.js",
    "content": "import React, { Component } from 'react';\nimport { Link } from 'react-router';\nimport moment from 'moment';\nimport classnames from 'classnames';\nimport styles from './styles.css';\n\nimport PlaceholderImage from 'SharedStyles/placeholder.jpg';\nimport Button from 'Components/Button';\nimport RichEditor from 'Components/RichEditor';\n\nclass Opinion extends Component {\n  render() {\n    const {\n      opinionId,\n      userAvatar,\n      userName,\n      userGitHandler,\n      opDate,\n      opContent,\n      userId,\n      currentUserId,\n      currentUserRole,\n      deleteAction,\n      deletingOpinion,\n    } = this.props;\n\n    let dateDisplay = moment(opDate);\n    dateDisplay = dateDisplay.from(moment());\n\n    const allowDelete = (userId === currentUserId) || (currentUserRole === 'admin');\n\n    return (\n      <div className={styles.container}>\n        <div className={styles.infoContainer}>\n          <img className={styles.avatar} src={userAvatar} />\n          <div className={styles.userInfo}>\n            <Link to={`/user/${userGitHandler}`} className={styles.name}>{userName || userGitHandler}</Link>\n            <a href={`https://www.github.com/${userGitHandler}`} target=\"_blank\" className={styles.gitHandler}>\n              <i className={classnames('fa fa-github-alt', styles.gitIcon)}></i>\n              <span>{userGitHandler}</span>\n            </a>\n          </div>\n          <div className={styles.dateInfo}>{dateDisplay}</div>\n          { allowDelete && <Button className={styles.deleteButton} noUppercase onClick={() => { deleteAction(opinionId); }}>\n            <i className={classnames('fa fa-trash', styles.trashIcon)}></i>\n            <span>Delete</span>\n          </Button> }\n          {/* <Button noUppercase>Quote</Button> */}\n        </div>\n\n        <div className={styles.opContent}>\n          <RichEditor\n            readOnly\n            value={opContent}\n          />\n        </div>\n\n        { (deletingOpinion === opinionId) && <div className={styles.deletingOpinion}>Deleting Opinion ...</div> }\n      </div>\n    );\n  }\n}\n\nOpinion.defaultProps = {\n  opinionId: '12345',\n  userAvatar: PlaceholderImage,\n  userName: 'User name',\n  userGitHandler: 'github',\n  opDate: 'a day ago',\n  opContent: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',\n  userId: '12345',\n  currentUserId: '12345',\n  currentUserRole: 'user',\n  deleteAction: () => {},\n  deletingOpinion: null,\n};\n\nOpinion.propTypes = {\n  opinionId: React.PropTypes.string,\n  userAvatar: React.PropTypes.string,\n  userName: React.PropTypes.string,\n  userGitHandler: React.PropTypes.string,\n  opDate: React.PropTypes.any,\n  opContent: React.PropTypes.string,\n  userId: React.PropTypes.string,\n  currentUserId: React.PropTypes.string,\n  currentUserRole: React.PropTypes.string,\n  deleteAction: React.PropTypes.func,\n  deletingOpinion: React.PropTypes.any,\n};\n\nexport default Opinion;\n"
  },
  {
    "path": "frontend/Components/SingleDiscussion/Opinion/styles.css",
    "content": "@value borderColor, secondaryFontColor, primaryFontColor from 'SharedStyles/globalStyles.css';\n@value smallBP from 'SharedStyles/globalStyles.css';\n\n/**\n * Opinion styles\n */\n\n.container {\n  position: relative;\n  margin-bottom: 10px;\n  padding: 0px 10px 0px 10px;\n  border: 1px solid borderColor;\n  /*border-bottom: none;\n\n  &:last-child { border-bottom: 1px solid borderColor; }*/\n\n  & .deletingOpinion {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    background-color: rgba(255, 255, 255, 0.9);\n  }\n}\n\n.infoContainer {\n  padding: 5px 0px;\n  display: flex;\n  align-items: center;\n  border-bottom: 1px solid borderColor;\n\n  & .avatar {\n    width: 32px;\n    height: 32px;\n    border-radius: 50px;\n  }\n\n  & .userInfo {\n    margin-left: 10px;\n    flex: 1;\n    display: flex;\n\n    & .name {\n      font-weight: 700;\n      color: primaryFontColor;\n      text-decoration: none;\n    }\n\n    & .gitHandler {\n      margin-left: 15px;\n      text-decoration: none;\n      color: secondaryFontColor;\n      transition: color 0.3s;\n      &:hover { color: primaryFontColor; }\n\n      & .gitIcon { margin-right: 5px; }\n    }\n  }\n\n  & .dateInfo {\n    font-size: 13px;\n    line-height: 13px;\n    color: secondaryFontColor;\n    @media smallBP { margin-left: 10px; }\n  }\n\n  & .deleteButton {\n    padding: 5px 10px;\n    font-weight: normal;\n\n    & .trashIcon {\n      margin-right: 5px;\n      font-size: 16px;\n    }\n  }\n}\n\n.opContent {\n  margin-top: 10px;\n  margin-bottom: 20px;\n  min-height: 60px;\n  font-size: 15px;\n  line-height: 26px;\n}\n\n.commentFooter {\n  display: flex;\n  align-items: center;\n\n  & .favoriteButton {\n    padding: 10px 10px;\n    display: flex;\n    align-items: center;\n    color: secondaryFontColor;\n    cursor: pointer;\n    user-select: none;\n    transition: color 0.3s;\n    &:hover { color: primaryFontColor; }\n\n    & i {\n      font-size: 20px;\n      margin-right: 10px;\n    }\n  }\n}\n"
  },
  {
    "path": "frontend/Components/SingleDiscussion/ReplyBox/index.js",
    "content": "import React, { Component } from 'react';\nimport styles from './styles.css';\n\nimport RichEditor from 'Components/RichEditor';\n\nclass ReplyBox extends Component {\n  render() {\n    const {\n      posting,\n      onSubmit,\n      onChange,\n    } = this.props;\n\n    if (posting) return <div className={styles.loadingWrapper}>Posting your opinion...</div>;\n\n    return (\n      <RichEditor\n        type=\"newOpinion\"\n        onSave={onSubmit}\n        onChange={onChange}\n      />\n    );\n  }\n}\n\nReplyBox.defaultProps = {\n  posting: false,\n  onSubmit: () => { },\n  onChange: (value) => { },\n};\n\nReplyBox.propTypes = {\n  posting: React.PropTypes.bool,\n  onSubmit: React.PropTypes.func,\n  onChange: React.PropTypes.func,\n};\n\nexport default ReplyBox;\n"
  },
  {
    "path": "frontend/Components/SingleDiscussion/ReplyBox/styles.css",
    "content": "@value primaryFontColor, secondaryFontColor from 'SharedStyles/globalStyles.css';\n\n/**\n * Reply styles\n */\n\n.loadingWrapper {\n  font-size: 12px;\n  font-weight: bold;\n  text-align: center;\n  padding: 30px 0px;\n  color: secondaryFontColor;\n}\n"
  },
  {
    "path": "frontend/Components/Tag/index.js",
    "content": "import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport styles from './styles';\n\nimport Button from 'Components/Button';\n\nclass Tag extends Component {\n  render() {\n    const {\n      name,\n      withRemove,\n      removeAction,\n    } = this.props;\n\n    return (\n      <div className={classnames(styles.tag, withRemove && styles.tagWithRemove)}>\n        {name}\n        { withRemove &&\n          <Button\n            onClick={removeAction}\n            className={styles.removeButton}\n          >\n            <i className={'fa fa-close'}></i>\n          </Button>\n        }\n      </div>\n    );\n  }\n}\n\nTag.defaultProps = {\n  name: '',\n  withRemove: false,\n  removeAction: () => {},\n};\n\nTag.propTypes = {\n  name: React.PropTypes.string.isRequired,\n  withRemove: React.PropTypes.bool,\n  removeAction: React.PropTypes.func,\n};\n\nexport default Tag;\n"
  },
  {
    "path": "frontend/Components/Tag/styles.css",
    "content": "@value secondaryFontColor, backShade from 'SharedStyles/globalStyles';\n\n/**\n * Tag styles\n */\n\n.tag {\n  display: inline-block;\n  height: 25px;\n  margin-left: 10px;\n  padding: 0 10px;\n  background-color: backShade;\n  color: secondaryFontColor;\n  font-size: 12px;\n  line-height: 25px;\n\n  user-select: none;\n\n  &:first-child { margin-left: 0; }\n}\n\n.tagWithRemove {\n  display: flex;\n  align-items: center;\n  padding-right: 0px;\n}\n\n.removeButton {\n  padding: 4px 10px;\n}\n"
  },
  {
    "path": "frontend/Components/UserProfile/Profile/index.js",
    "content": "import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport styles from './styles.css';\n\nclass Profile extends Component {\n  render() {\n    const {\n      name,\n      gitHandler,\n      location,\n      avatarUrl,\n    } = this.props;\n\n    return (\n      <div className={styles.container}>\n        <div className={styles.avatarContainer}>\n          <img className={styles.avatar} src={avatarUrl} alt={`${name} avatar`} />\n        </div>\n        <div className={styles.infoContainer}>\n          <div className={styles.name}>{ name }</div>\n          <div className={styles.gitHandler}><i className={classnames('fa fa-github-alt', styles.gitIcon)}></i> { gitHandler }</div>\n          <div className={styles.location}>{ location }</div>\n        </div>\n      </div>\n    );\n  }\n}\n\nProfile.defaultProps = {\n  name: 'Hello World',\n  gitHandler: 'helloWorld',\n  location: 'Somewhere in the world',\n  avatarUrl: 'https://google.com',\n};\n\nProfile.propTypes = {\n  name: React.PropTypes.string,\n  gitHandler: React.PropTypes.string,\n  location: React.PropTypes.string,\n  avatarUrl: React.PropTypes.string,\n};\n\nexport default Profile;\n"
  },
  {
    "path": "frontend/Components/UserProfile/Profile/styles.css",
    "content": "@value primaryFontColor, secondaryFontColor from 'SharedStyles/globalStyles.css';\n\n.container {\n  display: flex;\n  align-items: center;\n}\n\n.avatarContainer {\n  & .avatar {\n    width: 100px;\n    height: 100px;\n    border-radius: 10px;\n  }\n}\n\n.infoContainer {\n  margin-left: 20px;\n  letter-spacing: 0.5px;\n\n  & .name { font-size: 24px; margin-bottom: 10px; }\n  & .gitHandler { font-size: 14px; font-weight: bold; }\n  & .location { font-size: 14px; }\n}\n"
  },
  {
    "path": "frontend/Containers/AdminHeader/index.js",
    "content": "import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router';\nimport classnames from 'classnames';\n\nimport appLayout from 'SharedStyles/appLayout';\nimport styles from './styles';\n\n// components for AdminHeader\nimport UserMenu from 'Components/Header/UserMenu';\nimport Logo from 'Components/Header/Logo';\nimport NavigationBar from 'Components/Header/NavigationBar';\nimport PlaceholderImage from 'SharedStyles/placeholder.jpg';\n\nclass AdminHeader extends Component {\n  renderNavLinks() {\n    return [\n      { name: 'Dashboard', link: '/admin' },\n    ];\n  }\n\n  render() {\n    const {\n      authenticated,\n      name,\n      username,\n      avatarUrl,\n    } = this.props.user;\n\n    return (\n      <div className={classnames(appLayout.constraintWidth)}>\n        <div className={styles.headerTop}>\n          <Logo />\n          Welcome Admin\n          <UserMenu\n            signedIn={authenticated}\n            userName={name || username}\n            gitHandler={username}\n            avatar={avatarUrl}\n          />\n        </div>\n        <NavigationBar\n          navigationLinks={this.renderNavLinks()}\n        />\n      </div>\n    );\n  }\n}\n\nexport default connect(\n  (state) => { return {\n    user: state.user,\n    forums: state.app.forums,\n  }; }\n)(AdminHeader);\n"
  },
  {
    "path": "frontend/Containers/AdminHeader/styles.css",
    "content": "@value smallBP from 'SharedStyles/globalStyles.css';\n\n/**\n * Header Styles\n */\n.headerTop {\n  height: 50px;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n\n  @media smallBP { padding: 0px 10px; }\n}\n"
  },
  {
    "path": "frontend/Containers/Header/index.js",
    "content": "import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport classnames from 'classnames';\n\nimport appLayout from 'SharedStyles/appLayout';\nimport styles from './styles';\n\n// components for Header\nimport UserMenu from 'Components/Header/UserMenu';\nimport Logo from 'Components/Header/Logo';\nimport NavigationBar from 'Components/Header/NavigationBar';\nimport PlaceholderImage from 'SharedStyles/placeholder.jpg';\n\nclass Header extends Component {\n  renderNavLinks() {\n    const { forums } = this.props;\n\n    if (forums) {\n      return forums.map((forum) => {\n        return {\n          id: forum._id,\n          name: forum.forum_name,\n          link: `/${forum.forum_slug}`,\n        };\n      });\n    }\n\n    return null;\n  }\n\n  render() {\n    const {\n      authenticated,\n      name,\n      username,\n      avatarUrl,\n    } = this.props.user;\n\n    return (\n      <div className={classnames(appLayout.constraintWidth)}>\n        <div className={styles.headerTop}>\n          <Logo />\n          <UserMenu\n            signedIn={authenticated}\n            userName={name || username}\n            gitHandler={username}\n            avatar={avatarUrl}\n          />\n        </div>\n        <NavigationBar\n          navigationLinks={this.renderNavLinks()}\n        />\n      </div>\n    );\n  }\n}\n\nexport default connect(\n  (state) => { return {\n    user: state.user,\n    forums: state.app.forums,\n  }; }\n)(Header);\n"
  },
  {
    "path": "frontend/Containers/Header/styles.css",
    "content": "@value smallBP from 'SharedStyles/globalStyles.css';\n\n/**\n * Header Styles\n */\n.headerTop {\n  height: 50px;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n\n  @media smallBP { padding: 0px 10px; }\n}\n"
  },
  {
    "path": "frontend/SharedStyles/appLayout.css",
    "content": "@value largeBP, mediumBP, smallBP from 'SharedStyles/globalStyles';\n\n/**\n * application layout styles\n */\n.constraintWidth {\n  margin: 0px auto;\n  min-width: 320px;\n  max-width: 1100px;\n\n  @media largeBP { padding: 0px; }\n  @media mediumBP { padding: 0px 15px; }\n}\n\n.primaryContent { flex: 1; }\n\n.secondaryContent {\n  width: 260px;\n\n  @media mediumBP { display: none; }\n  @media smallBP { display: none; }\n}\n\n.showOnMediumBP {\n  display: none;\n  @media mediumBP { display: inherit; }\n  @media smallBP { display: inherit; }\n}\n"
  },
  {
    "path": "frontend/SharedStyles/globalStyles.css",
    "content": "/**\n * color variables\n */\n@value themeColor: #F1C40F;\n@value primaryFontColor: #000;\n@value secondaryFontColor: #999;\n@value borderColor: #e8e8e8;\n@value backShade: #f9f9f9;\n\n/**\n * media query breakpoints\n */\n@value largeBP: (min-width: 1100px);\n@value mediumBP: (min-width: 769px) and (max-width: 1099px);\n@value smallBP: (max-width: 768px);\n\n/**\n * global stylings\n */\n\n* { box-sizing: border-box; }\n\n/**\n * typography\n */\nbody {\n  font-size: 14px;\n  line-height: 22px;\n  font-family: 'Lato', helvetica, arial, sans-serif;\n}\n"
  },
  {
    "path": "frontend/Views/AdminDashboard/actions.js",
    "content": "import {\n  GET_ALL_INFO_START,\n  GET_ALL_INFO_SUCCESS,\n  GET_ALL_INFO_FAILURE,\n\n  CREATE_FORUM,\n  CREATE_FORUM_SUCCESS,\n  CREATE_FORUM_FAILURE,\n\n  DELETE_FORUM,\n  DELETE_FORUM_SUCCESS,\n  DELETE_FORUM_FAILURE,\n} from './constants';\n\nimport {\n  getAdminDashboardInfoAPI,\n  createForumAPI,\n  deleteForumAPI,\n} from './api';\n\n/**\n * get all the info needed for dashboard\n * @return {action}\n */\nexport const getAdminDashboardInfo = () => {\n  return (dispatch, getState) => {\n    dispatch({ type: GET_ALL_INFO_START });\n\n    getAdminDashboardInfoAPI().then(\n      data => dispatch({ type: GET_ALL_INFO_SUCCESS, payload: data.data }),\n      error => dispatch({ type: FETCHING_DISCUSSIONS_FAILURE, payload: error })\n    );\n  };\n};\n\n/**\n * create a new forum\n * @param  {Object} forumObj\n * @return {action}\n */\nexport const createForum = (forumObj) => {\n  return (dispatch, getState) => {\n    dispatch({ type: CREATE_FORUM });\n\n    // call the create forum api\n    createForumAPI(forumObj).then(\n      forumData => {\n        // get admin info again to refresh the infos\n        getAdminDashboardInfoAPI().then(\n          data => {\n            // data is refreshed\n            dispatch({ type: GET_ALL_INFO_SUCCESS, payload: data.data });\n\n            // check if the forum was created\n            if (forumData.data.created) { dispatch({ type: CREATE_FORUM_SUCCESS }); }\n            else dispatch({ type: CREATE_FORUM_FAILURE });\n          },\n          error => dispatch({ type: FETCHING_DISCUSSIONS_FAILURE, payload: error })\n        );\n      },\n      error => dispatch({ type: CREATE_FORUM_FAILURE })\n    );\n  };\n};\n\nexport const deleteForum = (forumId) => {\n  return (dispatch, getState) => {\n    dispatch({ type: DELETE_FORUM });\n\n    deleteForumAPI(forumId).then(\n      forumData => {\n        dispatch({ type: GET_ALL_INFO_START });\n\n        // get admin info again to refresh the infos\n        getAdminDashboardInfoAPI().then(\n          data => {\n            dispatch({ type: GET_ALL_INFO_SUCCESS, payload: data.data });\n\n            // check if th eforum was deleted\n            if (forumData.data.deleted) { dispatch({ type: DELETE_FORUM_SUCCESS }); }\n            else dispatch({ type: DELETE_FORUM_FAILURE });\n          },\n          error => dispatch({ type: FETCHING_DISCUSSIONS_FAILURE, payload: error })\n        );\n      },\n      error => dispatch({ type: DELETE_FORUM_FAILURE })\n    );\n  };\n};\n"
  },
  {
    "path": "frontend/Views/AdminDashboard/api.js",
    "content": "import axios from 'axios';\n\nexport const getAdminDashboardInfoAPI = () => {\n  return (axios.get('/api/admin/admin_dashboard_info'));\n};\n\nexport const createForumAPI = (forum_obj) => {\n  return (axios.post('/api/admin/create_forum', forum_obj));\n};\n\nexport const deleteForumAPI = (forum_id) => {\n  return (axios.post('/api/admin/delete_forum', { forum_id }));\n};\n"
  },
  {
    "path": "frontend/Views/AdminDashboard/constants.js",
    "content": "export const GET_ALL_INFO_START = 'get_all_info_start';\nexport const GET_ALL_INFO_SUCCESS = 'get_all_info_success';\nexport const GET_ALL_INFO_FAILURE = 'get_all_info_failure';\n\nexport const CREATE_FORUM = 'create_forum';\nexport const CREATE_FORUM_SUCCESS = 'create_forum_success';\nexport const CREATE_FORUM_FAILURE = 'create_forum_failure';\n\nexport const DELETE_FORUM = 'delete_forum';\nexport const DELETE_FORUM_SUCCESS = 'delete_forum_success';\nexport const DELETE_FORUM_FAILURE = 'delete_forum_failure';\n"
  },
  {
    "path": "frontend/Views/AdminDashboard/index.js",
    "content": "import React, { Component } from 'react';\nimport { Link } from 'react-router';\nimport { connect } from 'react-redux';\nimport classnames from 'classnames';\nimport appLayout from 'SharedStyles/appLayout.css';\nimport styles from './styles.css';\n\nimport {\n  getAdminDashboardInfo,\n  getForums,\n  createForum,\n  deleteForum,\n} from './actions';\nimport Counts from 'Components/Dashboard/Counts';\nimport ForumBox from 'Components/Dashboard/ForumBox';\n\nclass Dashboard extends Component {\n  componentDidMount() {\n    // get information needed for dashboard\n    this.props.getAdminDashboardInfo();\n  }\n\n  render() {\n    const {\n      discussionCount,\n      opinionCount,\n      forumCount,\n      userCount,\n      forums,\n    } = this.props.adminInfo.info;\n\n    const {\n      loadingInfo,\n      creatingForum,\n      creatingForumError,\n      deletingForum,\n      deletingForumError,\n    } = this.props;\n\n    const forumsArray = forums.map((forum) => {\n      return { id: forum._id, name: forum.forum_name, slug: forum.forum_slug };\n    });\n\n    return (\n      <div className={classnames(appLayout.constraintWidth, styles.container)}>\n        { loadingInfo && <div className={classnames(styles.loadingMsg)}>\n          Loading dashboard info...\n        </div> }\n\n        <div className={styles.countsContainer}>\n          <Counts label={'Users'} count={userCount} />\n          <Counts label={'Discussions'} count={discussionCount} />\n          <Counts label={'Opinions'} count={opinionCount} />\n          <Counts label={'Forums'} count={forumCount} />\n        </div>\n\n        <ForumBox\n          forums={forumsArray}\n          deletingForum={deletingForum}\n          deleteAction={(forumId) => { this.props.deleteForum(forumId); }}\n          creatingForum={creatingForum}\n          createAction={(forumObj) => { this.props.createForum(forumObj); }}\n        />\n\n        { creatingForumError && <div className={styles.errorMsg}>{creatingForumError}</div> }\n        { deletingForumError && <div className={styles.errorMsg}>{deletingForumError}</div> }\n      </div>\n    );\n  }\n}\n\nexport default connect(\n  (state) => { return {\n    adminInfo: state.adminInfo,\n    loadingInfo: state.adminInfo.loadingInfo,\n    creatingForum: state.adminInfo.creatingForum,\n    creatingForumError: state.adminInfo.creatingForumError,\n    deletingForum: state.adminInfo.deletingForum,\n    deletingForumError: state.adminInfo.deletingForumError,\n  }; },\n  (dispatch) => { return {\n    getAdminDashboardInfo: () => { dispatch(getAdminDashboardInfo()); },\n    getForums: () => { dispatch(getForums()); },\n    deleteForum: (forumId) => { dispatch(deleteForum(forumId)); },\n    createForum: (forumObj) => { dispatch(createForum(forumObj)); },\n  }; }\n)(Dashboard);\n"
  },
  {
    "path": "frontend/Views/AdminDashboard/reducers.js",
    "content": "import {\n  GET_ALL_INFO_START,\n  GET_ALL_INFO_SUCCESS,\n  GET_ALL_INFO_FAILURE,\n\n  CREATE_FORUM,\n  CREATE_FORUM_SUCCESS,\n  CREATE_FORUM_FAILURE,\n\n  DELETE_FORUM,\n  DELETE_FORUM_SUCCESS,\n  DELETE_FORUM_FAILURE,\n} from './constants';\n\nconst initialState = {\n  loadingInfo: false,\n  info: {\n    discussionCount: 0,\n    opinionCount: 0,\n    forumCount: 0,\n    userCount: 0,\n    forums: [],\n  },\n  error: null,\n\n  creatingForum: false,\n  creatingForumError: null,\n\n  deletingForum: false,\n  deletingForumError: null,\n};\n\nexport const adminInfoReducer = (state = initialState, action) => {\n  switch (action.type) {\n    case GET_ALL_INFO_START:\n      return Object.assign({}, state, {\n        loadingInfo: true,\n        error: null,\n      });\n\n    case GET_ALL_INFO_SUCCESS:\n      return Object.assign({}, state, {\n        loadingInfo: false,\n        info: action.payload,\n        error: null,\n      });\n\n    case GET_ALL_INFO_FAILURE:\n      return Object.assign({}, state, {\n        loadingInfo: false,\n        error: 'Something went wrong while loading admin level information.',\n      });\n\n    case CREATE_FORUM:\n      return Object.assign({}, state, {\n        creatingForumError: null,\n        creatingForum: true,\n      });\n\n    case CREATE_FORUM_SUCCESS:\n      return Object.assign({}, state, {\n        creatingForum: false,\n        creatingForumError: null,\n      });\n\n    case CREATE_FORUM_FAILURE:\n      return Object.assign({}, state, {\n        creatingForum: false,\n        creatingForumError: 'Something went wrong while trying to create the forum. Please try again. Also check out if the forum already exists.',\n      });\n\n    case DELETE_FORUM:\n      return Object.assign({}, state, {\n        deletingForum: true,\n        deletingForumError: null,\n      });\n\n    case DELETE_FORUM_SUCCESS:\n      return Object.assign({}, state, {\n        deletingForum: false,\n        deletingForumError: null,\n      });\n\n    case DELETE_FORUM_FAILURE:\n      return Object.assign({}, state, {\n        deletingForum: false,\n        deletingForumError: 'Something went wrong while trying to delete the forum. Please try again later.',\n      });\n\n    default:\n      return state;\n  }\n};\n"
  },
  {
    "path": "frontend/Views/AdminDashboard/styles.css",
    "content": "@value smallBP from 'SharedStyles/globalStyles';\n\n.container {\n  margin-top: 20px;\n  position: relative;\n}\n\n.countsContainer {\n  margin-top: 40px;\n  margin-bottom: 40px;\n\n  display: flex;\n  justify-content: space-around;\n\n  @media smallBP { flex-wrap: wrap; }\n}\n\n.loadingMsg {\n  margin-top: -30px;\n  position: absolute;\n  top: 0px;\n  left: 0px;\n  width: 100%;\n  text-align: center;\n}\n\n.errorMsg {\n  font-weight: bold;\n  padding: 10px 0px;\n  color: rgba(231, 76, 60,1.0);\n  font-size: 12px;\n  line-height: 14px;\n  text-align: center;\n}\n"
  },
  {
    "path": "frontend/Views/ForumFeed/actions.js",
    "content": "import _ from 'lodash';\nimport {\n  START_FETCHING_DISCUSSIONS,\n  STOP_FETCHING_DISCUSSIONS,\n  FETCHING_DISCUSSIONS_SUCCESS,\n  FETCHING_DISCUSSIONS_FAILURE,\n\n  START_FETCHING_PINNED_DISCUSSIONS,\n  STOP_FETCHING_PINNED_DISCUSSIONS,\n  FETCHING_PINNED_DISCUSSIONS_SUCCESS,\n  FETCHING_PINNED_DISCUSSIONS_FAILURE,\n\n  UPDATE_SORTING_METHOD,\n  INVALID_FORUM,\n} from './constants';\nimport {\n  fetchDiscussions,\n  fetchPinnedDiscussions,\n} from './api';\n\n/**\n * find the id for current forum\n * @param  {Object} state   the state object\n * @param  {String} forum   current forum\n * @return {Number}         the forum id\n */\nconst findForumId = (state, forum) => {\n  const { forums } = state.app;\n  const forumId = _.find(forums, { forum_slug: forum });\n\n  if (forumId) { return forumId._id; }\n  else { return null; }\n};\n\n/**\n * action to fetch forum discussions\n * @param  {String}  forum               current forum slug\n * @param  {Boolean} feedChanged         if the feed has been changed, default is false\n * @param  {String}  sortingMethod       define the sorting method, default is 'date'\n * @param  {Boolean} sortingChanged      if user chagned the sorting method\n * @return {thunk}\n */\nexport const getDiscussions = (forumId, feedChanged=false, sortingChanged=false) => {\n  return (dispatch, getState) => {\n    const sortingMethod = getState().feed.sortingMethod;\n\n    // show the loading message when user change forum or change sorting method\n    if (feedChanged || sortingChanged) dispatch({ type: START_FETCHING_DISCUSSIONS });\n\n    if (!forumId) {\n      dispatch({ type: INVALID_FORUM });\n    }\n    else {\n      // start fetching discussions\n      fetchDiscussions(forumId, sortingMethod).then(\n        data => dispatch({ type: FETCHING_DISCUSSIONS_SUCCESS, payload: data.data }),\n        error => dispatch({ type: FETCHING_DISCUSSIONS_FAILURE })\n      );\n    }\n  };\n};\n\n/**\n * action to fetch forum pinned discussions\n * @param  {String}  forum                current forum\n * @param  {Boolean} [feedChanged=false]  if the feed has been changed\n * @return {thunk}\n */\nexport const getPinnedDiscussions = (forumId, feedChanged) => {\n  return (dispatch, getState) => {\n    // show the loading message when user change forum\n    if (feedChanged) dispatch({ type: START_FETCHING_PINNED_DISCUSSIONS });;\n\n    if (!forumId) {\n      dispatch({ type: INVALID_FORUM });\n    }\n    else {\n      // start fetching pinned discussions\n      return fetchPinnedDiscussions(forumId).then(\n        data => dispatch({ type: FETCHING_PINNED_DISCUSSIONS_SUCCESS, payload: data.data }),\n        error => { console.log(error); dispatch({ type: FETCHING_PINNED_DISCUSSIONS_FAILURE }); }\n      );\n    }\n  };\n};\n\n/**\n * Update sorting method\n * @param  {String} method\n * @return {action}\n */\nexport const updateSortingMethod = (method) => {\n  return { type: UPDATE_SORTING_METHOD, payload: method };\n};\n"
  },
  {
    "path": "frontend/Views/ForumFeed/api.js",
    "content": "import axios from 'axios';\n\n/**\n * feed apis\n */\nexport const fetchDiscussions = (forum_id, sortingMethod) => {\n  return axios.get(`/api/forum/${forum_id}/discussions?sorting_method=${sortingMethod}`);\n};\n\nexport const fetchPinnedDiscussions = (forum_id) => {\n  return axios.get(`/api/forum/${forum_id}/pinned_discussions`);\n};\n"
  },
  {
    "path": "frontend/Views/ForumFeed/constants.js",
    "content": "export const START_FETCHING_DISCUSSIONS = 'start_fetching_discussions';\nexport const STOP_FETCHING_DISCUSSIONS = 'stop_fetching_discussions';\nexport const FETCHING_DISCUSSIONS_SUCCESS = 'fetching_discussions_success';\nexport const FETCHING_DISCUSSIONS_FAILURE = 'fetching_discussions_failure';\n\nexport const START_FETCHING_PINNED_DISCUSSIONS = 'start_fetching_pinned_discussions';\nexport const STOP_FETCHING_PINNED_DISCUSSIONS = 'stop_fetching_pinned_discussions';\nexport const FETCHING_PINNED_DISCUSSIONS_SUCCESS = 'fetching_pinned_discussions_success';\nexport const FETCHING_PINNED_DISCUSSIONS_FAILURE = 'fetching_pinned_discussions_failure';\n\nexport const UPDATE_SORTING_METHOD = 'update_sorting_method';\nexport const INVALID_FORUM = 'invalid_forum';\n"
  },
  {
    "path": "frontend/Views/ForumFeed/index.js",
    "content": "import React, { Component } from 'react';\nimport { Link } from 'react-router';\nimport { connect } from 'react-redux';\nimport { Helmet } from 'react-helmet';\nimport classnames from 'classnames';\n\nimport {\n  getDiscussions,\n  getPinnedDiscussions,\n  updateSortingMethod,\n} from './actions';\n\nimport Button from 'Components/Button';\nimport FeedBox from 'Components/FeedBox';\nimport SideBar from 'Components/SideBar';\n\nimport appLayout from 'SharedStyles/appLayout.css';\nimport styles from './styles.css';\n\nclass ForumFeed extends Component {\n  componentDidMount() {\n    const {\n      currentForumId,\n      getDiscussions,\n      getPinnedDiscussions,\n    } = this.props;\n\n    // get the discussions and pinned discussions\n    getDiscussions(currentForumId());\n    getPinnedDiscussions(currentForumId());\n  }\n\n  componentDidUpdate(prevProps) {\n    const {\n      currentForum,\n      currentForumId,\n      getDiscussions,\n      getPinnedDiscussions,\n    } = this.props;\n\n    // get the discussions again\n    // if the forum didn't matched\n    if (prevProps.currentForum !== currentForum) {\n      const feedChanged = true;\n      getDiscussions(currentForumId(), feedChanged);\n      getPinnedDiscussions(currentForumId(), feedChanged);\n    }\n  }\n\n  handleSortingChange(newSortingMethod) {\n    const {\n      currentForum,\n      getDiscussions,\n      updateSortingMethod,\n      sortingMethod,\n    } = this.props;\n\n    if (sortingMethod !== newSortingMethod) {\n      updateSortingMethod(newSortingMethod);\n      getDiscussions(currentForum, false, true);\n    }\n  }\n\n  renderNewDiscussionButtion() {\n    const { currentForum } = this.props;\n\n    return (\n      <div className={classnames(appLayout.showOnMediumBP, styles.newDiscussionBtn)}>\n        <Link to={`/${currentForum}/new_discussion`}>\n          <Button type='outline' fullWidth noUppercase>\n            New Discussion\n          </Button>\n        </Link>\n      </div>\n    );\n  }\n\n  render() {\n    const {\n      currentForum,\n      discussions,\n      fetchingDiscussions,\n      pinnedDiscussions,\n      fetchingPinnedDiscussions,\n      sortingMethod,\n      error,\n    } = this.props;\n\n    if (error) {\n      return (\n        <div className={classnames(styles.errorMsg)}>\n          {error}\n        </div>\n      );\n    }\n\n    return (\n      <div className={classnames(appLayout.constraintWidth, styles.contentArea)}>\n        <Helmet><title>{`ReForum | ${currentForum}`}</title></Helmet>\n\n        <div className={appLayout.primaryContent}>\n          <FeedBox\n            type='pinned'\n            loading={fetchingPinnedDiscussions}\n            discussions={pinnedDiscussions}\n            currentForum={currentForum}\n          />\n\n          <FeedBox\n            type='general'\n            loading={fetchingDiscussions}\n            discussions={discussions}\n            currentForum={currentForum}\n            onChangeSortingMethod={this.handleSortingChange.bind(this)}\n            activeSortingMethod={sortingMethod}\n          />\n\n          { this.renderNewDiscussionButtion() }\n        </div>\n\n        <div className={appLayout.secondaryContent}>\n          <SideBar currentForum={currentForum} />\n        </div>\n      </div>\n    );\n  }\n}\n\nexport default connect(\n  (state) => { return {\n    currentForum: state.app.currentForum,\n    currentForumId: () => {\n      const currentForumObj = _.find(state.app.forums, { forum_slug: state.app.currentForum });\n      if (currentForumObj) return currentForumObj._id;\n      else return null;\n    },\n    fetchingDiscussions: state.feed.fetchingDiscussions,\n    discussions: state.feed.discussions,\n    fetchingPinnedDiscussions: state.feed.fetchingPinnedDiscussions,\n    sortingMethod: state.feed.sortingMethod,\n    pinnedDiscussions: state.feed.pinnedDiscussions,\n    error: state.feed.error,\n  }; },\n  (dispatch) => { return {\n    getDiscussions: (currentForumId, feedChanged, sortingMethod, sortingChanged) => { dispatch(getDiscussions(currentForumId, feedChanged, sortingMethod, sortingChanged)); },\n    getPinnedDiscussions: (currentForumId, feedChanged) => { dispatch(getPinnedDiscussions(currentForumId, feedChanged)); },\n    updateSortingMethod: (method) => { dispatch(updateSortingMethod(method)); },\n  }; }\n)(ForumFeed);\n"
  },
  {
    "path": "frontend/Views/ForumFeed/reducers.js",
    "content": "import {\n  START_FETCHING_DISCUSSIONS,\n  STOP_FETCHING_DISCUSSIONS,\n  FETCHING_DISCUSSIONS_SUCCESS,\n  FETCHING_DISCUSSIONS_FAILURE,\n\n  START_FETCHING_PINNED_DISCUSSIONS,\n  STOP_FETCHING_PINNED_DISCUSSIONS,\n  FETCHING_PINNED_DISCUSSIONS_SUCCESS,\n  FETCHING_PINNED_DISCUSSIONS_FAILURE,\n\n  UPDATE_SORTING_METHOD,\n  INVALID_FORUM,\n} from './constants';\n\nconst initialState = {\n  fetchingDiscussions: true,\n  discussions: null,\n  fetchingPinnedDiscussions: true,\n  pinnedDiscussions: null,\n  sortingMethod: 'date',\n  error: null,\n};\n\nexport const feedReducer = (state = initialState, action) => {\n  switch(action.type) {\n    case START_FETCHING_DISCUSSIONS:\n      return Object.assign({}, state, {\n        fetchingDiscussions: true,\n        error: null,\n      });;\n\n    case STOP_FETCHING_DISCUSSIONS:\n      return Object.assign({}, state, {\n        fetchingDiscussions: false,\n      });;\n\n    case FETCHING_DISCUSSIONS_SUCCESS:\n      return Object.assign({}, state, {\n        discussions: action.payload,\n        fetchingDiscussions: false,\n        error: null,\n      });\n\n    case FETCHING_DISCUSSIONS_FAILURE:\n      return Object.assign({}, state, {\n        fetchingDiscussions: false,\n        error: 'Unable to fetch discussions at the moment.',\n      });\n\n    case START_FETCHING_PINNED_DISCUSSIONS:\n      return Object.assign({}, state, {\n        fetchingPinnedDiscussions: true,\n        error: null,\n      });;\n\n    case STOP_FETCHING_PINNED_DISCUSSIONS:\n      return Object.assign({}, state, {\n        fetchingPinnedDiscussions: false,\n      });;\n\n    case FETCHING_PINNED_DISCUSSIONS_SUCCESS:\n      return Object.assign({}, state, {\n        pinnedDiscussions: action.payload,\n        fetchingPinnedDiscussions: false,\n        error: null,\n      });\n\n    case FETCHING_PINNED_DISCUSSIONS_FAILURE:\n      return Object.assign({}, state, {\n        fetchingPinnedDiscussions: false,\n        error: 'Unable to fetch pinned discussions at the moment.',\n      });\n\n\n    case UPDATE_SORTING_METHOD:\n      return Object.assign({}, state, {\n        sortingMethod: action.payload,\n      });\n\n    case INVALID_FORUM:\n      return Object.assign({}, state, {\n        error: 'Sorry, couldn\\'t find the forum.',\n        fetchingPinnedDiscussions: false,\n        fetchingDiscussions: false,\n      });\n\n    default:\n      return state;\n  }\n};\n"
  },
  {
    "path": "frontend/Views/ForumFeed/styles.css",
    "content": "@value largeBP from 'SharedStyles/globalStyles';\n\n/**\n * Forum view styles\n */\n.contentArea {\n  display: flex;\n  margin-top: 15px;\n  @media largeBP { flex-flow: row nowrap; }\n}\n\n.newDiscussionBtn {\n  margin-top: 20px;\n}\n\n.errorMsg {\n  margin-top: 20px;\n  color: rgba(231, 76, 60,1.0);\n  text-align: center;\n  font-size: 12px;\n  font-weight: bold;\n}\n"
  },
  {
    "path": "frontend/Views/ForumFeed/tests/actions.test.js",
    "content": "import configureStore from 'redux-mock-store';\nimport thunk from 'redux-thunk';\nimport nock from 'nock';\nimport axios from 'axios';\nimport httpAdapter from 'axios/lib/adapters/http';\nimport * as actions from '../actions';\nimport * as constants from '../constants';\n\n// configure axios\nconst host = 'http://localhost:8080';\naxios.defaults.host = host;\naxios.defaults.adapter = httpAdapter;\n\n// configure the mock store\nconst middlewares = [thunk];\nconst mockStore = configureStore(middlewares);\n\n/**\n * testing getPinnedDiscussions action\n * @type {String}\n */\ndescribe('getPinnedDiscussions', () => {\n  afterEach(() => {\n    // clean nock instances after each test\n    nock.cleanAll();\n  });\n\n  it('should call FETCHING_PINNED_DISCUSSIONS_SUCCESS when fetching pinned discussion has been done', () => {\n    // define a mock forumId\n    const forumId = '1122334455';\n\n    // intercept axios calls with nock\n    nock(host)\n      .get(`/api/forum/${forumId}/pinned_discussions`)\n      .reply(200, {\n        pinnedDiscussions: [],\n      });\n\n    // expected action list\n    const expectedActions = [\n      { type: constants.START_FETCHING_PINNED_DISCUSSIONS },\n      {\n        type: constants.FETCHING_PINNED_DISCUSSIONS_SUCCESS,\n        payload: { pinnedDiscussions: [] },\n      },\n    ];\n\n    // initialize store with empty object\n    const store = mockStore({});\n\n    // perform the test\n    return store.dispatch(actions.getPinnedDiscussions(forumId, true)).then(() => {\n      expect(store.getActions()).toEqual(expectedActions);\n    });\n  });\n});\n\n/**\n * test updateSortingMethod action\n * @type {String}\n */\ndescribe('updateSortingMethod', () => {\n  it('should update the sorting method', () => {\n    const method = 'popularity';\n    const expectedAction = {\n      type: constants.UPDATE_SORTING_METHOD,\n      payload: method,\n    };\n\n    expect(actions.updateSortingMethod(method)).toEqual(expectedAction);\n  });\n});\n"
  },
  {
    "path": "frontend/Views/NewDiscussion/actions.js",
    "content": "import { browserHistory } from 'react-router';\nimport {\n  POSTING_DISCUSSION_START,\n  POSTING_DISCUSSION_END,\n  POSTING_DISCUSSION_SUCCESS,\n  POSTING_DISCUSSION_FAILURE,\n\n  UPDATE_DISCUSSION_TITLE,\n  UPDATE_DISCUSSION_CONTENT,\n  UPDATE_DISCUSSION_PIN_STATUS,\n  UPDATE_DISCUSSION_TAGS,\n\n  CLEAR_SUCCESS_MESSAGE,\n} from './constants';\nimport { postDiscussionApi } from './api';\n\n/**\n * post a new discussion\n * @param  {ObjectId} userId\n * @param  {ObjectId} forumId\n * @param  {String} currentForum\n * @return {action}\n */\nexport const postDiscussion = (userId, forumId, currentForum) => {\n  return (dispatch, getState) => {\n    dispatch({ type: POSTING_DISCUSSION_START });\n\n    // validate discussion inputs\n    // discussion values are in redux state\n    const {\n      title,\n      content,\n      tags,\n      pinned,\n    } = getState().newDiscussion;\n\n    let validated = true;\n\n    if (!userId || !forumId) {\n      validated = false;\n      return dispatch({\n        type: POSTING_DISCUSSION_FAILURE,\n        payload: 'Something is wrong with user/forum.',\n      });\n    }\n\n    if (title === null || title.length < 15) {\n      validated = false;\n      return dispatch({\n        type: POSTING_DISCUSSION_FAILURE,\n        payload: 'Title should be at least 15 characters.',\n      });\n    }\n\n    if (content === null || content.length === 0) {\n      validated = false;\n      return dispatch({\n        type: POSTING_DISCUSSION_FAILURE,\n        payload: 'Please write some content before posting.',\n      });\n    }\n\n    if (tags === null || tags.length === 0) {\n      validated = false;\n      return dispatch({\n        type: POSTING_DISCUSSION_FAILURE,\n        payload: 'Please provide some tags.',\n      });\n    }\n\n    // make api call if post is validated\n    if (validated) {\n      postDiscussionApi({\n        userId,\n        forumId,\n        title,\n        content,\n        tags,\n        pinned,\n      }).then(\n        (data) => {\n          if (data.data.postCreated === true) {\n            dispatch({ type: POSTING_DISCUSSION_SUCCESS });\n            setTimeout(() => { dispatch({ type: CLEAR_SUCCESS_MESSAGE }); }, 2000);\n\n            // issue a redirect to the newly reacted discussion\n            browserHistory.push(`/${currentForum}/discussion/${data.data.discussion_slug}`);\n          } else {\n            dispatch({\n              type: POSTING_DISCUSSION_FAILURE,\n              payload: 'Something is wrong at our server end. Please try again later',\n            });\n          }\n        },\n        (error) => {\n          dispatch({\n            type: POSTING_DISCUSSION_FAILURE,\n            payload: error,\n          });\n        }\n      );\n    }\n  };\n};\n\n/**\n * update the discussion title in redux state (controlled input)\n * @param  {String} value\n * @return {action}\n */\nexport const updateDiscussionTitle = (value) => {\n  return {\n    type: UPDATE_DISCUSSION_TITLE,\n    payload: value,\n  };\n};\n\n/**\n * update discussion content in redux state (controlled input)\n * @param  {Object} value\n * @return {action}\n */\nexport const updateDiscussionContent = (value) => {\n  return {\n    type: UPDATE_DISCUSSION_CONTENT,\n    payload: value,\n  };\n};\n\n/**\n * update discussion pinned status in redux state (controlled input)\n * @param  {Boolean} value\n * @return {action}\n */\nexport const updateDiscussionPinStatus = (value) => {\n  return {\n    type: UPDATE_DISCUSSION_PIN_STATUS,\n    payload: value,\n  };\n};\n\n/**\n * update discussion tags in redux state (controlled input)\n * @param  {Array} value\n * @return {action}\n */\nexport const updateDiscussionTags = (value) => {\n  return {\n    type: UPDATE_DISCUSSION_TAGS,\n    payload: value,\n  };\n};\n"
  },
  {
    "path": "frontend/Views/NewDiscussion/api.js",
    "content": "import axios from 'axios';\n\nexport const postDiscussionApi = (discussion) => {\n  return axios.post('/api/discussion/newDiscussion', discussion);\n};\n"
  },
  {
    "path": "frontend/Views/NewDiscussion/constants.js",
    "content": "export const POSTING_DISCUSSION_START = 'posting_discussion_start';\nexport const POSTING_DISCUSSION_END = 'posting_discussion_end';\nexport const POSTING_DISCUSSION_SUCCESS = 'posting_discussion_success';\nexport const POSTING_DISCUSSION_FAILURE = 'posting_discussion_failure';\n\nexport const UPDATE_DISCUSSION_TITLE = 'update_discussion_title';\nexport const UPDATE_DISCUSSION_CONTENT = 'update_discussion_content';\nexport const UPDATE_DISCUSSION_PIN_STATUS = 'update_discussion_pin_status';\nexport const UPDATE_DISCUSSION_TAGS = 'update_discussion_tags';\n\nexport const CLEAR_SUCCESS_MESSAGE = 'clear_success_message';\n"
  },
  {
    "path": "frontend/Views/NewDiscussion/index.js",
    "content": "import _ from 'lodash';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Helmet } from 'react-helmet';\nimport classnames from 'classnames';\n\nimport RichEditor from 'Components/RichEditor';\nimport PinButton from 'Components/NewDiscussion/PinButton';\nimport TagsInput from 'Components/NewDiscussion/TagsInput';\n\nimport {\n  postDiscussion,\n  updateDiscussionTitle,\n  updateDiscussionContent,\n  updateDiscussionPinStatus,\n  updateDiscussionTags,\n} from './actions';\n\nimport styles from './styles.css';\nimport appLayout from 'SharedStyles/appLayout.css';\n\nclass NewDiscussion extends Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      forumId: null,\n      userId: null,\n      fatalError: null,\n    };\n  }\n\n  componentDidMount() {\n    const {\n      user,\n      currentForum,\n      forums,\n    } = this.props;\n\n    this.setUserAndForumID(user, forums, currentForum);\n  }\n\n  componentWillReceiveProps(nextProps) {\n    const {\n      user,\n      currentForum,\n      forums,\n    } = nextProps;\n\n    this.setUserAndForumID(user, forums, currentForum);\n  }\n\n  setUserAndForumID(user, forums, currentForum) {\n    const forumId = _.find(forums, { forum_slug: currentForum });\n    if (forumId) {\n      const currentForumId = forumId._id;\n      this.setState({\n        forumId: currentForumId,\n        userId: user._id,\n      });\n    } else {\n      this.setState({\n        fatalError: 'Invalid forum buddy, go for the right one!',\n      });\n    }\n  }\n\n  renderEditor() {\n    const {\n      authenticated,\n      role,\n    } = this.props.user;\n\n    const {\n      updateDiscussionTitle,\n      updateDiscussionContent,\n      updateDiscussionPinStatus,\n      updateDiscussionTags,\n      postDiscussion,\n      currentForum,\n    } = this.props;\n\n    const {\n      title,\n      content,\n      tags,\n      pinned,\n    } = this.props.newDiscussion;\n\n    const {\n      forumId,\n      userId,\n    } = this.state;\n\n    // only show the editor when user is authenticated\n    if (authenticated) {\n      return [\n        <input\n          key={'title'}\n          type=\"text\"\n          className={styles.titleInput}\n          placeholder={'Discussion title...'}\n          value={title}\n          onChange={(event) => { updateDiscussionTitle(event.target.value); }}\n        />,\n        (role === 'admin') && <PinButton\n          key={'pinned'}\n          value={pinned}\n          onChange={(value) => { updateDiscussionPinStatus(value); }}\n        />,\n        <TagsInput\n          key={'tags'}\n          value={tags}\n          onChange={(tags) => { updateDiscussionTags(tags); }}\n        />,\n        <RichEditor\n          key={'content'}\n          type='newDiscussion'\n          value={content}\n          onChange={(value) => { updateDiscussionContent(value); }}\n          onSave={() => { postDiscussion(userId, forumId, currentForum); }}\n        />,\n      ];\n    }\n\n    return (\n      <div className={classnames(appLayout.constraintWidth, styles.signInMsg)}>\n        Please sign in before posting a new discussion.\n      </div>\n    );\n  }\n\n  render() {\n    const { fatalError } = this.state;\n\n    if (fatalError) { return (<div className={classnames(styles.errorMsg, styles.fatalError)}>{fatalError}</div>); }\n\n    const { currentForum } = this.props;\n    const {\n      errorMsg,\n      postingSuccess,\n      postingDiscussion,\n    } = this.props.newDiscussion;\n\n    return (\n      <div className={classnames(appLayout.constraintWidth, styles.content)}>\n        <Helmet><title>ReForum | New Discussion</title></Helmet>\n\n        <div className={styles.forumInfo}>\n          You are creating a new discussion on <span className={styles.forumName}>{currentForum}</span> forum.\n        </div>\n        <div className={styles.errorMsg}>{errorMsg}</div>\n        { postingSuccess && <div className={styles.successMsg}>Your discussion is created :-)</div> }\n        { this.renderEditor() }\n        { postingDiscussion && <div className={styles.postingMsg}>Posting discussion...</div> }\n      </div>\n    );\n  }\n}\n\nexport default connect(\n  (state) => { return {\n    user: state.user,\n    forums: state.app.forums,\n    currentForum: state.app.currentForum,\n    newDiscussion: state.newDiscussion,\n  }; },\n  (dispatch) => { return {\n    postDiscussion: (userId, forumId, currentForum) => { dispatch(postDiscussion(userId, forumId, currentForum)); },\n    updateDiscussionTitle: (value) => { dispatch(updateDiscussionTitle(value)); },\n    updateDiscussionContent: (value) => { dispatch(updateDiscussionContent(value)); },\n    updateDiscussionPinStatus: (value) => { dispatch(updateDiscussionPinStatus(value)); },\n    updateDiscussionTags: (value) => { dispatch(updateDiscussionTags(value)); },\n  }; }\n)(NewDiscussion);\n"
  },
  {
    "path": "frontend/Views/NewDiscussion/reducers.js",
    "content": "import {\n  POSTING_DISCUSSION_START,\n  POSTING_DISCUSSION_SUCCESS,\n  POSTING_DISCUSSION_FAILURE,\n\n  UPDATE_DISCUSSION_TITLE,\n  UPDATE_DISCUSSION_CONTENT,\n  UPDATE_DISCUSSION_PIN_STATUS,\n  UPDATE_DISCUSSION_TAGS,\n\n  CLEAR_SUCCESS_MESSAGE,\n} from './constants';\n\nconst initialState = {\n  postingSuccess: false,\n  errorMsg: null,\n  postingDiscussion: false,\n  title: '',\n  content: null,\n  tags: [],\n  pinned: false,\n};\n\nexport const newDiscussionReducer = (state = initialState, action) => {\n  switch (action.type) {\n    case POSTING_DISCUSSION_START:\n      return Object.assign({}, state, {\n        postingDiscussion: true,\n      });\n\n    case POSTING_DISCUSSION_SUCCESS:\n      return Object.assign({}, initialState, {\n        postingSuccess: true,\n        postingDiscussion: false,\n        errorMsg: null,\n      });\n\n    case POSTING_DISCUSSION_FAILURE:\n      return Object.assign({}, state, {\n        postingSuccess: false,\n        postingDiscussion: false,\n        errorMsg: action.payload || 'Unable to post discussion.',\n      });\n\n    case CLEAR_SUCCESS_MESSAGE:\n      return Object.assign({}, initialState, {\n        postingSuccess: false,\n      });\n\n    case UPDATE_DISCUSSION_TITLE:\n      return Object.assign({}, state, {\n        title: action.payload,\n      });\n\n    case UPDATE_DISCUSSION_CONTENT:\n      return Object.assign({}, state, {\n        content: action.payload,\n      });\n\n    case UPDATE_DISCUSSION_PIN_STATUS:\n      return Object.assign({}, state, {\n        pinned: action.payload,\n      });\n\n    case UPDATE_DISCUSSION_TAGS:\n      return Object.assign({}, state, {\n        tags: action.payload,\n      });\n\n    default:\n      return state;\n  }\n};\n"
  },
  {
    "path": "frontend/Views/NewDiscussion/styles.css",
    "content": "@value largeBP, borderColor, secondaryFontColor from 'SharedStyles/globalStyles';\n\n.content {\n  margin-top: 10px;\n  position: relative;\n}\n\n.forumName {\n  font-weight: bold;\n}\n\n.errorMsg {\n  margin-top: 5px;\n  color: rgba(231, 76, 60,1.0);\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 14px;\n}\n\n.fatalError {\n  margin-top: 20px;\n  text-align: center;\n}\n\n.titleInput {\n  margin: 20px 0px 0px 0px;\n  padding: 10px 10px;\n  width: 100%;\n  border: none;\n  outline: none;\n  background-color: none;\n  font-size: 24px;\n  font-weight: 300;\n  /*border-bottom: 1px solid borderColor;*/\n}\n\n.signInMsg {\n  padding: 80px 0px;\n  color: secondaryFontColor;\n  text-align: center;\n}\n\n.postingMsg {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  top: 0px;\n\n  display: flex;\n  justify-content: center;\n  align-items: center;\n\n  background-color: rgba(255, 255, 255, 0.8);\n}\n"
  },
  {
    "path": "frontend/Views/NotFound/index.js",
    "content": "import React, { Component } from 'react';\n\nclass NotFound extends Component {\n  render() {\n    return (\n      <h3>Coudn't found the url buddy. Please check it out.</h3>\n    );\n  }\n}\n\nexport default NotFound;\n"
  },
  {
    "path": "frontend/Views/SingleDiscussion/actions.js",
    "content": "import {\n  FETCHING_SINGLE_DISC_START,\n  FETCHING_SINGLE_DISC_END,\n  FETCHING_SINGLE_DISC_SUCCESS,\n  FETCHING_SINGLE_DISC_FAILURE,\n\n  TOGGLE_FAVORITE_START,\n  TOGGLE_FAVORITE_SUCCESS,\n  TOGGLE_FAVORITE_FAILURE,\n\n  UPDATE_OPINION_CONTENT,\n\n  POSTING_OPINION_START,\n  POSTING_OPINION_SUCCESS,\n  POSTING_OPINION_FAILURE,\n\n  DELETE_DISC_START,\n  DELETE_DISC_SUCCESS,\n  DELETE_DISC_REDIRECT,\n  DELETE_DISC_FAILURE,\n\n  DELETE_OPINION_START,\n  DELETE_OPINION_SUCCESS,\n  DELETE_OPINION_FAILURE,\n} from './constants';\n\nimport {\n  fetchSingleDiscussion,\n  fetchOpinions,\n  toggleFavoriteApi,\n  postOpinionApi,\n  deletePostApi,\n  deleteOpinionApi,\n} from './api';\n\n/**\n * get the discussion from server\n * @param  {String} discussionSlug\n * @return {action}\n */\nexport const getDiscussion = (discussionSlug) => {\n  return (dispatch, getState) => {\n    dispatch({ type: FETCHING_SINGLE_DISC_START });\n    fetchSingleDiscussion(discussionSlug).then(\n      data => {\n        if (data.data) dispatch({ type: FETCHING_SINGLE_DISC_SUCCESS, payload: data.data });\n        else dispatch({ type: FETCHING_SINGLE_DISC_FAILURE });\n      },\n      error => dispatch({ type: FETCHING_SINGLE_DISC_FAILURE })\n    );\n  };\n};\n\n/**\n * toggle favorite status of the discussion\n * @param  {ObjectId} discussionId\n * @return {action}\n */\nexport const toggleFavorite = (discussionId) => {\n  return (dispatch, getState) => {\n    dispatch({ type: TOGGLE_FAVORITE_START });\n\n    toggleFavoriteApi(discussionId).then(\n      data => {\n        if (data.data._id) {\n          dispatch({ type: TOGGLE_FAVORITE_SUCCESS });\n          dispatch({ type: FETCHING_SINGLE_DISC_SUCCESS, payload: data.data });\n        }\n        else dispatch({ type: TOGGLE_FAVORITE_FAILURE });\n      },\n      error => dispatch({ type: TOGGLE_FAVORITE_FAILURE })\n    );\n  };\n};\n\n/**\n * update opinion content in redux state (controlled input)\n * @param  {Object} value\n * @return {action}\n */\nexport const updateOpinionContent = (value) => {\n  return {\n    type: UPDATE_OPINION_CONTENT,\n    payload: value,\n  };\n};\n\n/**\n * post an opinion\n * @param  {Object} opinion\n * @param  {String} discussionSlug\n * @return {action}\n */\nexport const postOpinion = (opinion, discussionSlug) => {\n  return (dispatch, getState) => {\n    // dispatch to show the posting message\n    dispatch({ type: POSTING_OPINION_START });\n\n    // validate the opinion\n    if (!opinion.content || opinion.content.length < 20) {\n      dispatch({ type: POSTING_OPINION_FAILURE, payload: 'Please provide a bit more info in your opinion....at least 20 characters.' });\n    } else {\n      // call the api to post the opinion\n      postOpinionApi(opinion).then(\n        data => {\n          if (data.data._id) {\n            // fetch the discussion to refresh the opinion list\n            fetchSingleDiscussion(discussionSlug).then(\n              data => {\n                dispatch({ type: FETCHING_SINGLE_DISC_SUCCESS, payload: data.data });\n                dispatch({ type: POSTING_OPINION_SUCCESS });\n              },\n              error => dispatch({ type: FETCHING_SINGLE_DISC_FAILURE })\n            );\n          }\n          else dispatch({ type: POSTING_OPINION_FAILURE });\n        },\n        error => dispatch({ type: POSTING_OPINION_FAILURE })\n      );\n    }\n  };\n};\n\n/**\n * delete the discussion post\n * @param  {String} discussionSlug\n * @return {action}\n */\nexport const deletePost = (discussionSlug) => {\n  return (dispatch, getState) => {\n    dispatch({ type: DELETE_DISC_START });\n    deletePostApi(discussionSlug).then(\n      data => {\n        if (data.data.deleted) { dispatch({ type: DELETE_DISC_SUCCESS }); }\n        else { dispatch({ type: DELETE_DISC_FAILURE }); }\n      },\n      error => dispatch({ type: DELETE_DISC_FAILURE })\n    );\n  };\n};\n\n/**\n * after a successfull deletion of a discussion\n * the user should be redirected to the home page\n * @return {action}\n */\nexport const deletedDiscussionRedirect = () => {\n  return (dispatch, getState) => {\n    dispatch({ type: DELETE_DISC_REDIRECT });\n  };\n};\n\n/**\n * delete an opinion\n * @param  {ObjectId} opinionId\n * @param  {String} discussionSlug\n * @return {action}\n */\nexport const deleteOpinion = (opinionId, discussionSlug) => {\n  return (dispatch, getState) => {\n    // show the loading message\n    dispatch({ type: DELETE_OPINION_START, payload: opinionId });\n\n    // call the api\n    deleteOpinionApi(opinionId).then(\n      data => {\n        if (data.data.deleted) {\n\n          // fetch the discussion again to refresh the opinions\n          fetchSingleDiscussion(discussionSlug).then(\n            data => {\n              dispatch({ type: DELETE_OPINION_SUCCESS });\n              dispatch({ type: FETCHING_SINGLE_DISC_SUCCESS, payload: data.data });\n            },\n            error => dispatch({ type: FETCHING_SINGLE_DISC_FAILURE })\n          );\n\n        }\n        else { dispatch({ type: DELETE_OPINION_FAILURE }); }\n      },\n      error => dispatch({ type: DELETE_OPINION_FAILURE })\n    );\n  };\n};\n"
  },
  {
    "path": "frontend/Views/SingleDiscussion/api.js",
    "content": "import axios from 'axios';\n\n/**\n * single discussion apis\n */\nexport const fetchSingleDiscussion = (discussion_slug) => {\n  return axios.get(`/api/discussion/${discussion_slug}`);\n};\n\nexport const toggleFavoriteApi = (discussion_id) => {\n  return axios.put(`/api/discussion/toggleFavorite/${discussion_id}`);\n};\n\nexport const postOpinionApi = (opinion) => {\n  return axios.post('/api/opinion/newOpinion', opinion);\n};\n\nexport const deletePostApi = (discussionSlug) => {\n  return axios.delete(`/api/discussion/deleteDiscussion/${discussionSlug}`);\n};\n\nexport const deleteOpinionApi = (opinionId) => {\n  return axios.delete(`/api/opinion/deleteOpinion/${opinionId}`);\n};\n"
  },
  {
    "path": "frontend/Views/SingleDiscussion/constants.js",
    "content": "export const FETCHING_SINGLE_DISC_START = 'fetching_single_discussion_start';\nexport const FETCHING_SINGLE_DISC_END = 'fetching_single_discussion_end';\nexport const FETCHING_SINGLE_DISC_SUCCESS = 'fetching_single_discussion_success';\nexport const FETCHING_SINGLE_DISC_FAILURE = 'fetching_single_discussion_failure';\n\nexport const TOGGLE_FAVORITE_START = 'toggle_favorite_start';\nexport const TOGGLE_FAVORITE_SUCCESS = 'toggle_favorite_success';\nexport const TOGGLE_FAVORITE_FAILURE = 'toggle_favorite_failure';\n\nexport const UPDATE_OPINION_CONTENT = 'update_opinion_content';\n\nexport const POSTING_OPINION_START = 'posting_opinion_start';\nexport const POSTING_OPINION_SUCCESS = 'posting_opinion_success';\nexport const POSTING_OPINION_FAILURE = 'posting_opinion_failure';\n\nexport const DELETE_DISC_START = 'delete_disc_start';\nexport const DELETE_DISC_SUCCESS = 'delete_disc_success';\nexport const DELETE_DISC_FAILURE = 'delete_disc_failure';\nexport const DELETE_DISC_REDIRECT = 'delete_disc_redirect';\n\nexport const DELETE_OPINION_START = 'delete_opinion_start';\nexport const DELETE_OPINION_SUCCESS = 'delete_opinion_success';\nexport const DELETE_OPINION_FAILURE = 'delete_opinion_failure';\n"
  },
  {
    "path": "frontend/Views/SingleDiscussion/index.js",
    "content": "import _ from 'lodash';\nimport React, { Component } from 'react';\nimport { browserHistory } from 'react-router';\nimport { connect } from 'react-redux';\nimport { Helmet } from 'react-helmet';\nimport classnames from 'classnames';\n\nimport {\n  getDiscussion,\n  toggleFavorite,\n  updateOpinionContent,\n  postOpinion,\n  deletePost,\n  deletedDiscussionRedirect,\n  deleteOpinion,\n} from './actions';\n\nimport Discussion from 'Components/SingleDiscussion/Discussion';\nimport ReplyBox from 'Components/SingleDiscussion/ReplyBox';\nimport Opinion from 'Components/SingleDiscussion/Opinion';\n\nimport styles from './styles.css';\nimport appLayout from 'SharedStyles/appLayout.css';\n\nclass SingleDiscussion extends Component {\n  constructor(props) {\n    super(props);\n    this.state = { opinionContent: '' };\n  }\n\n  componentDidMount() {\n    const {\n      forum,\n      discussion,\n    } = this.props.params;\n\n    this.props.getDiscussion(discussion);\n  }\n\n  componentDidUpdate() {\n    const {\n      deletedDiscussion,\n      deletedDiscussionRedirect,\n    } = this.props;\n\n    const { forum } = this.props.params;\n\n    // check if the discussion is deleted and redirect the user\n    if (deletedDiscussion) {\n      browserHistory.push(`/${forum}`);\n      setTimeout(() => { deletedDiscussionRedirect(); }, 100);\n    }\n  }\n\n  componentWillUnmount() {\n    // remove any existing opinion texts\n    this.props.updateOpinionContent(null);\n  }\n\n  userFavoritedDiscussion(userId, favorites) {\n    let favorited = false;\n    for(let i = 0; i < favorites.length; i++) {\n      if (favorites[i] === userId) favorited = true;\n    }\n    return favorited;\n  }\n\n  handleReplySubmit() {\n    const {\n      forums,\n      postOpinion,\n      discussion,\n      opinionContent,\n      userId,\n    } = this.props;\n\n    const discussion_slug = this.props.params.discussion;\n    const forumSlug = this.props.params.forum;\n    const forumId = _.find(forums, { forum_slug: forumSlug })._id;\n\n    postOpinion(\n      {\n        forum_id: forumId,\n        discussion_id: discussion._id,\n        user_id: userId,\n        content: opinionContent,\n      },\n      discussion_slug\n    );\n  }\n\n  deleteDiscussion() {\n    const { discussion } = this.props.params;\n    const { deletePost } = this.props;\n    deletePost(discussion);\n  }\n\n  deleteOpinion(opinionId) {\n    const { discussion } = this.props.params;\n    const { deleteOpinion } = this.props;\n    deleteOpinion(opinionId, discussion);\n  }\n\n  render() {\n    const {\n      userAuthenticated,\n      fetchingDiscussion,\n      discussion,\n      toggleFavorite,\n      toggleingFavorite,\n      updateOpinionContent,\n      postingOpinion,\n      opinionError,\n      deletingOpinion,\n      deletingDiscussion,\n      error,\n    } = this.props;\n\n    if (error) {\n      return (<div className={styles.errorMsg}>{error}</div>);\n    }\n\n    // return loading status if discussion is not fetched yet\n    if (fetchingDiscussion) {\n      return <div className={styles.loadingWrapper}>Loading discussion ...</div>;\n    }\n\n    const {\n      _id,\n      content,\n      date,\n      favorites,\n      title,\n      tags,\n      opinions,\n    } = discussion;\n\n    const {\n      avatarUrl,\n      name,\n      username,\n    } = discussion.user;\n\n    // check if logged in user is owner of the discussion\n    let allowDelete = false;\n    if (\n      (discussion.user._id === this.props.userId) ||\n      this.props.userRole === 'admin'\n    ) allowDelete = true;\n\n    // check if user favorated the discussion\n    const userFavorited = this.userFavoritedDiscussion(this.props.userId, favorites);\n\n    return (\n      <div className={appLayout.constraintWidth}>\n        <Helmet><title>{`${title} | ReForum`}</title></Helmet>\n\n        <Discussion\n          id={_id}\n          userAvatar={avatarUrl}\n          userName={name}\n          userGitHandler={username}\n          discTitle={title}\n          discDate={date}\n          discContent={content}\n          tags={tags}\n          favoriteCount={favorites.length}\n          favoriteAction={toggleFavorite}\n          userFavorited={userFavorited}\n          toggleingFavorite={toggleingFavorite}\n          allowDelete={allowDelete}\n          deletingDiscussion={deletingDiscussion}\n          deleteAction={this.deleteDiscussion.bind(this)}\n        />\n\n        { opinionError && <div className={styles.errorMsg}>{opinionError}</div> }\n\n        { !userAuthenticated && <div className={styles.signInMsg}>Please sign in to post a reply.</div> }\n        { userAuthenticated && <ReplyBox\n          posting={postingOpinion}\n          onSubmit={this.handleReplySubmit.bind(this)}\n          onChange={(content) => { updateOpinionContent(content); }}\n        /> }\n\n        { opinions && opinions.map((opinion) => {\n          return (\n            <Opinion\n              key={opinion._id}\n              opinionId={opinion._id}\n              userAvatar={opinion.user.avatarUrl}\n              userName={opinion.user.name}\n              userGitHandler={opinion.user.username}\n              opDate={opinion.date}\n              opContent={opinion.content}\n              userId={opinion.user_id}\n              currentUserId={this.props.userId}\n              currentUserRole={this.props.userRole}\n              deleteAction={this.deleteOpinion.bind(this)}\n              deletingOpinion={deletingOpinion}\n            />\n          );\n        }) }\n      </div>\n    );\n  }\n}\n\nexport default connect(\n  (state) => { return {\n    forums: state.app.forums,\n    userAuthenticated: state.user.authenticated,\n    userId: state.user._id,\n    userRole: state.user.role,\n    fetchingDiscussion: state.discussion.fetchingDiscussion,\n    toggleingFavorite: state.discussion.toggleingFavorite,\n    deletingDiscussion: state.discussion.deletingDiscussion,\n    deletedDiscussion: state.discussion.deletedDiscussion,\n    opinionContent: state.discussion.opinionContent,\n    postingOpinion: state.discussion.postingOpinion,\n    opinionError: state.discussion.opinionError,\n    deletingOpinion: state.discussion.deletingOpinion,\n    discussion: state.discussion.discussion,\n    error: state.discussion.error,\n  }; },\n  (dispatch) => { return {\n    getDiscussion: (discussionSlug) => { dispatch(getDiscussion(discussionSlug)); },\n    toggleFavorite: (discussionId) => { dispatch(toggleFavorite(discussionId)); },\n    updateOpinionContent: (content) => { dispatch(updateOpinionContent(content)); },\n    postOpinion: (opinion, discussionSlug) => { dispatch(postOpinion(opinion, discussionSlug)); },\n    deletePost: (discussionSlug) => { dispatch(deletePost(discussionSlug)); },\n    deletedDiscussionRedirect: () => { dispatch(deletedDiscussionRedirect()); },\n    deleteOpinion: (opinionId, discussionSlug) => { dispatch(deleteOpinion(opinionId, discussionSlug)); },\n  }; }\n)(SingleDiscussion);\n"
  },
  {
    "path": "frontend/Views/SingleDiscussion/reducers.js",
    "content": "import {\n  FETCHING_SINGLE_DISC_START,\n  FETCHING_SINGLE_DISC_END,\n  FETCHING_SINGLE_DISC_SUCCESS,\n  FETCHING_SINGLE_DISC_FAILURE,\n\n  TOGGLE_FAVORITE_START,\n  TOGGLE_FAVORITE_SUCCESS,\n  TOGGLE_FAVORITE_FAILURE,\n\n  UPDATE_OPINION_CONTENT,\n\n  POSTING_OPINION_START,\n  POSTING_OPINION_SUCCESS,\n  POSTING_OPINION_FAILURE,\n\n  DELETE_DISC_START,\n  DELETE_DISC_SUCCESS,\n  DELETE_DISC_FAILURE,\n  DELETE_DISC_REDIRECT,\n\n  DELETE_OPINION_START,\n  DELETE_OPINION_SUCCESS,\n  DELETE_OPINION_FAILURE,\n} from './constants';\n\nconst initialState = {\n  fetchingDiscussion: true,\n  toggleingFavorite: false,\n  postingOpinion: false,\n  opinionContent: null,\n  opinionError: null,\n  deletingDiscussion: false,\n  deletedDiscussion: false,\n  deletingOpinion: null,\n  discussion: null,\n  error: null,\n};\n\nexport const singleDiscussionReducer = (state = initialState, action) => {\n  switch(action.type) {\n    case FETCHING_SINGLE_DISC_START:\n      return Object.assign({}, state, {\n        fetchingDiscussion: true,\n      });\n\n    case FETCHING_SINGLE_DISC_END:\n      return Object.assign({}, state, {\n        fetchingDiscussion: false,\n      });\n\n    case FETCHING_SINGLE_DISC_SUCCESS:\n      return Object.assign({}, state, {\n        discussion: action.payload,\n        fetchingDiscussion: false,\n        error: null,\n      });\n\n    case FETCHING_SINGLE_DISC_FAILURE:\n      return Object.assign({}, state, {\n        fetchingDiscussion: false,\n        error: 'Unable to fetch discussion. Please check out the url.',\n      });\n\n    case TOGGLE_FAVORITE_START:\n      return Object.assign({}, state, {\n        toggleingFavorite: true,\n      });\n\n    case TOGGLE_FAVORITE_SUCCESS:\n    case TOGGLE_FAVORITE_FAILURE:\n      return Object.assign({}, state, {\n        toggleingFavorite: false,\n      });\n\n    case UPDATE_OPINION_CONTENT:\n      return Object.assign({}, state, {\n        opinionContent: action.payload,\n      });\n\n    case POSTING_OPINION_START:\n      return Object.assign({}, state, {\n        postingOpinion: true,\n        opinionError: null,\n      });\n\n    case POSTING_OPINION_SUCCESS:\n      return Object.assign({}, state, {\n        postingOpinion: false,\n        opinionContent: null,\n        opinionError: null,\n      });\n\n    case POSTING_OPINION_FAILURE:\n      return Object.assign({}, state, {\n        postingOpinion: false,\n        opinionContent: null,\n        opinionError: action.payload,\n      });\n\n    case DELETE_DISC_START:\n      return Object.assign({}, state, {\n        deletingDiscussion: true,\n      });\n\n    case DELETE_DISC_SUCCESS:\n      return Object.assign({}, state, {\n        deletingDiscussion: false,\n        deletedDiscussion: true,\n      });\n\n    case DELETE_DISC_FAILURE:\n      return Object.assign({}, state, {\n        deletingDiscussion: false,\n        deletedDiscussion: false,\n      });\n\n    case DELETE_DISC_REDIRECT:\n      return Object.assign({}, state, {\n        deletedDiscussion: false,\n      });\n\n    case DELETE_OPINION_START:\n      return Object.assign({}, state, {\n        deletingOpinion: action.payload,\n      });\n\n    case DELETE_OPINION_SUCCESS:\n    case DELETE_OPINION_FAILURE:\n      return Object.assign({}, state, {\n        deletingOpinion: null,\n      });\n\n    default:\n      return state;\n  }\n};\n"
  },
  {
    "path": "frontend/Views/SingleDiscussion/styles.css",
    "content": "@value primaryFontColor, secondaryFontColor from 'SharedStyles/globalStyles.css';\n\n.loadingWrapper {\n  padding: 20px 0px;\n  font-size: 12px;\n  font-weight: bold;\n  text-align: center;\n  color: secondaryFontColor;\n}\n\n.errorMsg {\n  margin-top: 20px;\n  margin-left: 10px;\n  font-size: 12px;\n  font-weight: bold;\n  color: rgba(231, 76, 60,1.0);\n  text-align: center;\n}\n\n.signInMsg {\n  color: secondaryFontColor;\n  font-size: 12px;\n  font-weight: bold;\n  text-align: center;\n  padding: 20px 0px;\n}\n"
  },
  {
    "path": "frontend/Views/UserProfile/actions.js",
    "content": "import {\n  FETCH_USER_PROFILE_START,\n  FETCH_USER_PROFILE_SUCCESS,\n  FETCH_USER_PROFILE_FAILURE,\n} from './constants';\n\nimport {\n  fetchUserProfileApi,\n} from './api';\n\n/**\n * fetch the users profile from the server\n * @param  {String} userSlug\n * @return {action}\n */\nexport const fetchUserProfile = (userSlug) => {\n  return (dispatch, getState) => {\n    dispatch({ type: FETCH_USER_PROFILE_START });\n\n    fetchUserProfileApi(userSlug).then(\n      data => {\n        if (data.data.error) dispatch({ type: FETCH_USER_PROFILE_FAILURE });\n        else dispatch({ type: FETCH_USER_PROFILE_SUCCESS, payload: data.data });\n      },\n      error => dispatch({ type: FETCH_USER_PROFILE_FAILURE })\n    );\n  };\n};\n"
  },
  {
    "path": "frontend/Views/UserProfile/api.js",
    "content": "/**\n * user profile apis\n */\n\nimport axios from 'axios';\n\nexport const fetchUserProfileApi = (userSlug) => {\n  return axios.get(`/api/user/profile/${userSlug}`);\n};\n"
  },
  {
    "path": "frontend/Views/UserProfile/constants.js",
    "content": "export const FETCH_USER_PROFILE_START = 'fetch_user_profile_start';\nexport const FETCH_USER_PROFILE_SUCCESS = 'fetch_user_profile_success';\nexport const FETCH_USER_PROFILE_FAILURE = 'fetch_user_profile_failure';\n"
  },
  {
    "path": "frontend/Views/UserProfile/index.js",
    "content": "import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Helmet } from 'react-helmet';\nimport classnames from 'classnames';\nimport appLayout from 'SharedStyles/appLayout.css';\nimport styles from './styles.css';\n\n// components used in this view\nimport Profile from 'Components/UserProfile/Profile';\nimport FeedBox from 'Components/FeedBox';\n\n// actions\nimport {\n  fetchUserProfile,\n} from './actions';\n\nclass UserProfile extends Component {\n  componentDidMount() {\n    const { fetchUserProfile } = this.props;\n    const { username } = this.props.params;\n    fetchUserProfile(username);\n  }\n\n  componentWillReceiveProps(newProps) {\n    // fetch profile if different username\n    const { username: oldUsername } = this.props.params;\n    const { username: futureUsername } = newProps.params;\n\n    // only update if different usernames\n    if (oldUsername !== futureUsername) {\n      const { fetchUserProfile } = this.props;\n      fetchUserProfile(futureUsername);\n    }\n  }\n\n  render() {\n    const {\n      fetchingProfile,\n      profile,\n      error,\n    } = this.props;\n\n    if (error) {\n      return <div className={styles.errorMsg}>{ error }</div>;\n    }\n\n    const {\n      name,\n      username,\n      avatarUrl,\n      github,\n      discussions,\n    } = profile;\n\n    if (fetchingProfile) {\n      return (\n        <div className={classnames(appLayout.constraintWidth, styles.loadingMsg)}>\n          Loading users profile ...\n        </div>\n      );\n    }\n\n    return (\n      <div className={classnames(appLayout.constraintWidth, styles.container)}>\n        <Helmet><title>{`${name || username} | ReForum`}</title></Helmet>\n\n        <div className={appLayout.primaryContent}>\n          <Profile\n            name={name}\n            gitHandler={username}\n            location={github.location}\n            avatarUrl={avatarUrl}\n          />\n\n          <FeedBox\n            userProfile\n            type='general'\n            discussions={discussions}\n          />\n        </div>\n      </div>\n    );\n  }\n}\n\nexport default connect(\n  (state) => { return {\n    fetchingProfile: state.userProfile.fetchingProfile,\n    profile: state.userProfile.profile,\n    error: state.userProfile.error,\n  }; },\n  (dispatch) => { return {\n    fetchUserProfile: (userSlug) => { dispatch(fetchUserProfile(userSlug)); },\n  }; }\n)(UserProfile);\n"
  },
  {
    "path": "frontend/Views/UserProfile/reducers.js",
    "content": "import {\n  FETCH_USER_PROFILE_START,\n  FETCH_USER_PROFILE_SUCCESS,\n  FETCH_USER_PROFILE_FAILURE,\n} from './constants';\n\nconst initialState = {\n  fetchingProfile: true,\n  profile: {},\n  error: null,\n};\n\nexport const userProfileReducer = (state = initialState, action) => {\n  switch (action.type) {\n    case FETCH_USER_PROFILE_START:\n      return Object.assign({}, state, {\n        fetchingProfile: true,\n        error: null,\n      });\n\n    case FETCH_USER_PROFILE_SUCCESS:\n      return Object.assign({}, state, {\n        fetchingProfile: false,\n        profile: action.payload,\n        error: null,\n      });\n\n    case FETCH_USER_PROFILE_FAILURE:\n      return Object.assign({}, state, {\n        fetchingProfile: false,\n        error: 'Unable to fetch user profile. Please check out for correct username.',\n      });\n\n    default:\n      return state;\n  }\n};\n"
  },
  {
    "path": "frontend/Views/UserProfile/styles.css",
    "content": "@value largeBP from 'SharedStyles/globalStyles';\n\n.container {\n  margin-top: 20px;\n  display: flex;\n  @media largeBP { flex-flow: row nowrap; }\n}\n\n.loadingMsg {\n  margin-top: 20px;\n  text-align: center;\n}\n\n.errorMsg {\n  margin-top: 20px;\n  color: rgba(231, 76, 60,1.0);\n  font-size: 12px;\n  font-weight: bold;\n  text-align: center;\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"reforum\",\n  \"version\": \"1.0.0\",\n  \"description\": \"A forum application built with ReactJS, Redux, Express and MongoDB\",\n  \"author\": \"Provash Shoumma\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/shoumma/ReForum/issues\"\n  },\n  \"homepage\": \"https://github.com/shoumma/ReForum#readme\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/shoumma/ReForum.git\"\n  },\n  \"keywords\": [\n    \"forum\",\n    \"react\",\n    \"redux\",\n    \"express\",\n    \"mongodb\"\n  ],\n  \"main\": \"server.js\",\n  \"engines\": {\n    \"node\": \"7.1.0\"\n  },\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"start\": \"better-npm-run start\",\n    \"start:dev\": \"better-npm-run start:dev\",\n    \"build\": \"webpack --config config/webpack.prod.config.js\"\n  },\n  \"betterScripts\": {\n    \"start\": {\n      \"command\": \"node server.js\",\n      \"env\": {\n        \"NODE_ENV\": \"production\",\n        \"PORT\": 3030\n      }\n    },\n    \"start:dev\": {\n      \"command\": \"node server.js\",\n      \"env\": {\n        \"NODE_ENV\": \"development\",\n        \"PORT\": 8080\n      }\n    }\n  },\n  \"dependencies\": {\n    \"better-npm-run\": \"^0.0.13\",\n    \"body-parser\": \"^1.15.2\",\n    \"compression\": \"^1.6.2\",\n    \"connect-flash\": \"^0.1.1\",\n    \"connect-mongo\": \"^1.3.2\",\n    \"cookie-parser\": \"^1.4.3\",\n    \"express\": \"^4.14.0\",\n    \"express-session\": \"^1.14.2\",\n    \"help\": \"^3.0.2\",\n    \"lodash\": \"^4.17.4\",\n    \"mongoose\": \"^4.7.4\",\n    \"morgan\": \"^1.7.0\",\n    \"passport\": \"^0.3.2\",\n    \"passport-github\": \"^1.1.0\",\n    \"passport-local\": \"^1.0.0\"\n  },\n  \"devDependencies\": {\n    \"async\": \"^2.1.5\",\n    \"autoprefixer\": \"^6.6.1\",\n    \"axios\": \"^0.15.3\",\n    \"babel\": \"^6.5.2\",\n    \"babel-core\": \"^6.20.0\",\n    \"babel-eslint\": \"^7.1.1\",\n    \"babel-jest\": \"^20.0.3\",\n    \"babel-loader\": \"^6.2.9\",\n    \"babel-preset-es2015\": \"^6.18.0\",\n    \"babel-preset-react\": \"^6.16.0\",\n    \"babel-preset-stage-2\": \"^6.18.0\",\n    \"classnames\": \"^2.2.5\",\n    \"css-loader\": \"^0.26.1\",\n    \"draft-js\": \"^0.10.0\",\n    \"eslint\": \"^3.12.1\",\n    \"eslint-plugin-react\": \"^6.8.0\",\n    \"extract-text-webpack-plugin\": \"^1.0.1\",\n    \"file-loader\": \"^0.9.0\",\n    \"jest\": \"^20.0.4\",\n    \"moment\": \"^2.17.1\",\n    \"nock\": \"^9.0.13\",\n    \"postcss-loader\": \"^1.2.2\",\n    \"postcss-nesting\": \"^2.3.1\",\n    \"react\": \"^15.4.1\",\n    \"react-dom\": \"^15.4.1\",\n    \"react-helmet\": \"^5.0.3\",\n    \"react-hot-loader\": \"^1.3.1\",\n    \"react-onclickoutside\": \"^5.10.0\",\n    \"react-redux\": \"^5.0.2\",\n    \"react-router\": \"^3.0.0\",\n    \"redux\": \"^3.6.0\",\n    \"redux-mock-store\": \"^1.2.3\",\n    \"redux-thunk\": \"^2.2.0\",\n    \"style-loader\": \"^0.13.1\",\n    \"url-loader\": \"^0.5.7\",\n    \"webpack\": \"^1.14.0\",\n    \"webpack-dev-middleware\": \"^1.8.4\",\n    \"webpack-hot-middleware\": \"^2.13.2\"\n  }\n}\n"
  },
  {
    "path": "public/build/bundle.js",
    "content": "!function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p=\"\",e(0)}([function(t,e,n){t.exports=n(257)},function(t,e){t.exports=React},function(t,e){function n(){throw new Error(\"setTimeout has not been defined\")}function r(){throw new Error(\"clearTimeout has not been defined\")}function o(t){if(l===setTimeout)return setTimeout(t,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(t,0);try{return l(t,0)}catch(e){try{return l.call(null,t,0)}catch(e){return l.call(this,t,0)}}}function i(t){if(f===clearTimeout)return clearTimeout(t);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(t);try{return f(t)}catch(e){try{return f.call(null,t)}catch(e){return f.call(this,t)}}}function u(){y&&d&&(y=!1,d.length?h=d.concat(h):_=-1,h.length&&a())}function a(){if(!y){var t=o(u);y=!0;for(var e=h.length;e;){for(d=h,h=[];++_<e;)d&&d[_].run();_=-1,e=h.length}d=null,y=!1,i(t)}}function s(t,e){this.fun=t,this.array=e}function c(){}var l,f,p=t.exports={};!function(){try{l=\"function\"==typeof setTimeout?setTimeout:n}catch(t){l=n}try{f=\"function\"==typeof clearTimeout?clearTimeout:r}catch(t){f=r}}();var d,h=[],y=!1,_=-1;p.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];h.push(new s(t,e)),1!==h.length||y||o(a)},s.prototype.run=function(){this.fun.apply(null,this.array)},p.title=\"browser\",p.browser=!0,p.env={},p.argv=[],p.version=\"\",p.versions={},p.on=c,p.addListener=c,p.once=c,p.off=c,p.removeListener=c,p.removeAllListeners=c,p.emit=c,p.prependListener=c,p.prependOnceListener=c,p.listeners=function(t){return[]},p.binding=function(t){throw new Error(\"process.binding is not supported\")},p.cwd=function(){return\"/\"},p.chdir=function(t){throw new Error(\"process.chdir is not supported\")},p.umask=function(){return 0}},function(t,e,n){(function(e){\"use strict\";function n(t,e,n,o,i,u,a,s){if(r(e),!t){var c;if(void 0===e)c=new Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[n,o,i,u,a,s],f=0;c=new Error(e.replace(/%s/g,function(){return l[f++]})),c.name=\"Invariant Violation\"}throw c.framesToPop=1,c}}var r=function(t){};\"production\"!==e.env.NODE_ENV&&(r=function(t){if(void 0===t)throw new Error(\"invariant requires an error message argument\")}),t.exports=n}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e,n){return O.set(t,{selection:e,forceSelection:n,nativelyRenderedContent:null,inlineStyleOverride:null})}function i(t,e){return t.getBlockMap().map(function(n){return h.generate(t,n,e)}).toOrderedMap()}function u(t,e,n,r){var o=t.getCurrentContent().set(\"entityMap\",n),i=o.getBlockMap(),u=t.getImmutable().get(\"treeMap\");return u.merge(e.toSeq().filter(function(t,e){return t!==i.get(e)}).map(function(t){return h.generate(o,t,r)}))}function a(t,e,n,r,o){return n.merge(e.toSeq().filter(function(e){return r.getDecorations(e,t)!==o.getDecorations(e,t)}).map(function(e){return h.generate(t,e,r)}))}function s(t,e){var n=t.getLastChangeType();return e!==n||\"insert-characters\"!==e&&\"backspace-character\"!==e&&\"delete-character\"!==e}function c(t,e){var n=e.getStartKey(),r=e.getStartOffset(),o=t.getBlockForKey(n);return r>0?o.getInlineStyleAt(r-1):o.getLength()?o.getInlineStyleAt(0):f(t,n)}function l(t,e){var n=e.getStartKey(),r=e.getStartOffset(),o=t.getBlockForKey(n);return r<o.getLength()?o.getInlineStyleAt(r):r>0?o.getInlineStyleAt(r-1):f(t,n)}function f(t,e){for(var n,r=t.getBlockBefore(e);r;){if(n=r.getLength())return r.getInlineStyleAt(n-1);r=t.getBlockBefore(r.getKey())}return m()}var p=n(17),d=p||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},h=n(61),y=n(39),_=n(143),g=n(5),v=n(26),m=g.OrderedSet,b=g.Record,E=g.Stack,S={allowUndo:!0,currentContent:null,decorator:null,directionMap:null,forceSelection:!1,inCompositionMode:!1,inlineStyleOverride:null,lastChangeType:null,nativelyRenderedContent:null,redoStack:E(),selection:null,treeMap:null,undoStack:E()},w=b(S),O=function(){function t(e){r(this,t),this._immutable=e}return t.createEmpty=function(e){return t.createWithContent(y.createFromText(\"\"),e)},t.createWithContent=function(e,n){var r=e.getBlockMap().first().getKey();return t.create({currentContent:e,undoStack:E(),redoStack:E(),decorator:n||null,selection:v.createEmpty(r)})},t.create=function(e){var n=e.currentContent,r=e.decorator,o=d({},e,{treeMap:i(n,r),directionMap:_.getDirectionMap(n)});return new t(new w(o))},t.set=function(e,n){var r=e.getImmutable().withMutations(function(t){var r=t.get(\"decorator\"),o=r;null===n.decorator?o=null:n.decorator&&(o=n.decorator);var s=n.currentContent||e.getCurrentContent();if(o!==r){var c,l=t.get(\"treeMap\");return c=o&&r?a(s,s.getBlockMap(),l,o,r):i(s,o),void t.merge({decorator:o,treeMap:c,nativelyRenderedContent:null})}var f=e.getCurrentContent();s!==f&&t.set(\"treeMap\",u(e,s.getBlockMap(),s.getEntityMap(),o)),t.merge(n)});return new t(r)},t.prototype.toJS=function(){return this.getImmutable().toJS()},t.prototype.getAllowUndo=function(){return this.getImmutable().get(\"allowUndo\")},t.prototype.getCurrentContent=function(){return this.getImmutable().get(\"currentContent\")},t.prototype.getUndoStack=function(){return this.getImmutable().get(\"undoStack\")},t.prototype.getRedoStack=function(){return this.getImmutable().get(\"redoStack\")},t.prototype.getSelection=function(){return this.getImmutable().get(\"selection\")},t.prototype.getDecorator=function(){return this.getImmutable().get(\"decorator\")},t.prototype.isInCompositionMode=function(){return this.getImmutable().get(\"inCompositionMode\")},t.prototype.mustForceSelection=function(){return this.getImmutable().get(\"forceSelection\")},t.prototype.getNativelyRenderedContent=function(){return this.getImmutable().get(\"nativelyRenderedContent\")},t.prototype.getLastChangeType=function(){return this.getImmutable().get(\"lastChangeType\")},t.prototype.getInlineStyleOverride=function(){return this.getImmutable().get(\"inlineStyleOverride\")},t.setInlineStyleOverride=function(e,n){return t.set(e,{inlineStyleOverride:n})},t.prototype.getCurrentInlineStyle=function(){var t=this.getInlineStyleOverride();if(null!=t)return t;var e=this.getCurrentContent(),n=this.getSelection();return n.isCollapsed()?c(e,n):l(e,n)},t.prototype.getBlockTree=function(t){return this.getImmutable().getIn([\"treeMap\",t])},t.prototype.isSelectionAtStartOfContent=function(){var t=this.getCurrentContent().getBlockMap().first().getKey();return this.getSelection().hasEdgeWithin(t,0,0)},t.prototype.isSelectionAtEndOfContent=function(){var t=this.getCurrentContent(),e=t.getBlockMap(),n=e.last(),r=n.getLength();return this.getSelection().hasEdgeWithin(n.getKey(),r,r)},t.prototype.getDirectionMap=function(){return this.getImmutable().get(\"directionMap\")},t.acceptSelection=function(t,e){return o(t,e,!1)},t.forceSelection=function(t,e){return e.getHasFocus()||(e=e.set(\"hasFocus\",!0)),o(t,e,!0)},t.moveSelectionToEnd=function(e){var n=e.getCurrentContent(),r=n.getLastBlock(),o=r.getKey(),i=r.getLength();return t.acceptSelection(e,new v({anchorKey:o,anchorOffset:i,focusKey:o,focusOffset:i,isBackward:!1}))},t.moveFocusToEnd=function(e){var n=t.moveSelectionToEnd(e);return t.forceSelection(n,n.getSelection())},t.push=function(e,n,r){if(e.getCurrentContent()===n)return e;var o=\"insert-characters\"!==r,i=_.getDirectionMap(n,e.getDirectionMap());if(!e.getAllowUndo())return t.set(e,{currentContent:n,directionMap:i,lastChangeType:r,selection:n.getSelectionAfter(),forceSelection:o,inlineStyleOverride:null});var u=e.getSelection(),a=e.getCurrentContent(),c=e.getUndoStack(),l=n;u!==a.getSelectionAfter()||s(e,r)?(c=c.push(a),l=l.set(\"selectionBefore\",u)):\"insert-characters\"!==r&&\"backspace-character\"!==r&&\"delete-character\"!==r||(l=l.set(\"selectionBefore\",a.getSelectionBefore()));var f=e.getInlineStyleOverride(),p=[\"adjust-depth\",\"change-block-type\",\"split-block\"];p.indexOf(r)===-1&&(f=null);var d={currentContent:l,directionMap:i,undoStack:c,redoStack:E(),lastChangeType:r,selection:n.getSelectionAfter(),forceSelection:o,inlineStyleOverride:f};return t.set(e,d)},t.undo=function(e){if(!e.getAllowUndo())return e;var n=e.getUndoStack(),r=n.peek();if(!r)return e;var o=e.getCurrentContent(),i=_.getDirectionMap(r,e.getDirectionMap());return t.set(e,{currentContent:r,directionMap:i,undoStack:n.shift(),redoStack:e.getRedoStack().push(o),forceSelection:!0,inlineStyleOverride:null,lastChangeType:\"undo\",nativelyRenderedContent:null,selection:o.getSelectionBefore()})},t.redo=function(e){if(!e.getAllowUndo())return e;var n=e.getRedoStack(),r=n.peek();if(!r)return e;var o=e.getCurrentContent(),i=_.getDirectionMap(r,e.getDirectionMap());return t.set(e,{currentContent:r,directionMap:i,undoStack:e.getUndoStack().push(o),redoStack:n.shift(),forceSelection:!0,inlineStyleOverride:null,lastChangeType:\"redo\",nativelyRenderedContent:null,selection:r.getSelectionAfter()})},t.prototype.getImmutable=function(){return this._immutable},t}();t.exports=O},function(t,e,n){!function(e,n){t.exports=n()}(this,function(){\"use strict\";function t(t,e){e&&(t.prototype=Object.create(e.prototype)),t.prototype.constructor=t}function e(t){return i(t)?t:A(t)}function n(t){return u(t)?t:D(t)}function r(t){return a(t)?t:x(t)}function o(t){return i(t)&&!s(t)?t:P(t)}function i(t){return!(!t||!t[cn])}function u(t){return!(!t||!t[ln])}function a(t){return!(!t||!t[fn])}function s(t){return u(t)||a(t)}function c(t){return!(!t||!t[pn])}function l(t){return t.value=!1,t}function f(t){t&&(t.value=!0)}function p(){}function d(t,e){e=e||0;for(var n=Math.max(0,t.length-e),r=new Array(n),o=0;o<n;o++)r[o]=t[o+e];return r}function h(t){return void 0===t.size&&(t.size=t.__iterate(_)),t.size}function y(t,e){if(\"number\"!=typeof e){var n=e>>>0;if(\"\"+n!==e||4294967295===n)return NaN;e=n}return e<0?h(t)+e:e}function _(){return!0}function g(t,e,n){return(0===t||void 0!==n&&t<=-n)&&(void 0===e||void 0!==n&&e>=n)}function v(t,e){return b(t,e,0)}function m(t,e){return b(t,e,e)}function b(t,e,n){return void 0===t?n:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}function E(t){this.next=t}function S(t,e,n,r){var o=0===t?e:1===t?n:[e,n];return r?r.value=o:r={value:o,done:!1},r}function w(){return{value:void 0,done:!0}}function O(t){return!!I(t)}function T(t){return t&&\"function\"==typeof t.next}function C(t){var e=I(t);return e&&e.call(t)}function I(t){var e=t&&(wn&&t[wn]||t[On]);if(\"function\"==typeof e)return e}function N(t){return t&&\"number\"==typeof t.length}function A(t){return null===t||void 0===t?L():i(t)?t.toSeq():K(t)}function D(t){return null===t||void 0===t?L().toKeyedSeq():i(t)?u(t)?t.toSeq():t.fromEntrySeq():U(t)}function x(t){return null===t||void 0===t?L():i(t)?u(t)?t.entrySeq():t.toIndexedSeq():B(t)}function P(t){return(null===t||void 0===t?L():i(t)?u(t)?t.entrySeq():t:B(t)).toSetSeq()}function k(t){this._array=t,this.size=t.length}function M(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function R(t){this._iterable=t,this.size=t.length||t.size}function F(t){this._iterator=t,this._iteratorCache=[]}function j(t){return!(!t||!t[Cn])}function L(){return In||(In=new k([]))}function U(t){var e=Array.isArray(t)?new k(t).fromEntrySeq():T(t)?new F(t).fromEntrySeq():O(t)?new R(t).fromEntrySeq():\"object\"==typeof t?new M(t):void 0;if(!e)throw new TypeError(\"Expected Array or iterable object of [k, v] entries, or keyed object: \"+t);return e}function B(t){var e=H(t);if(!e)throw new TypeError(\"Expected Array or iterable object of values: \"+t);return e}function K(t){var e=H(t)||\"object\"==typeof t&&new M(t);if(!e)throw new TypeError(\"Expected Array or iterable object of values, or keyed object: \"+t);return e}function H(t){return N(t)?new k(t):T(t)?new F(t):O(t)?new R(t):void 0}function G(t,e,n,r){var o=t._cache;if(o){for(var i=o.length-1,u=0;u<=i;u++){var a=o[n?i-u:u];if(e(a[1],r?a[0]:u,t)===!1)return u+1}return u}return t.__iterateUncached(e,n)}function z(t,e,n,r){var o=t._cache;if(o){var i=o.length-1,u=0;return new E(function(){var t=o[n?i-u:u];return u++>i?w():S(e,r?t[0]:u-1,t[1])})}return t.__iteratorUncached(e,n)}function q(t,e){return e?W(e,t,\"\",{\"\":t}):V(t)}function W(t,e,n,r){return Array.isArray(e)?t.call(r,n,x(e).map(function(n,r){return W(t,n,r,e)})):Y(e)?t.call(r,n,D(e).map(function(n,r){return W(t,n,r,e)})):e}function V(t){return Array.isArray(t)?x(t).map(V).toList():Y(t)?D(t).map(V).toMap():t}function Y(t){return t&&(t.constructor===Object||void 0===t.constructor)}function X(t,e){if(t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1;if(\"function\"==typeof t.valueOf&&\"function\"==typeof e.valueOf){if(t=t.valueOf(),e=e.valueOf(),t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1}return!(\"function\"!=typeof t.equals||\"function\"!=typeof e.equals||!t.equals(e))}function $(t,e){if(t===e)return!0;if(!i(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||u(t)!==u(e)||a(t)!==a(e)||c(t)!==c(e))return!1;if(0===t.size&&0===e.size)return!0;var n=!s(t);if(c(t)){var r=t.entries();return e.every(function(t,e){var o=r.next().value;return o&&X(o[1],t)&&(n||X(o[0],e))})&&r.next().done}var o=!1;if(void 0===t.size)if(void 0===e.size)\"function\"==typeof t.cacheResult&&t.cacheResult();else{o=!0;var l=t;t=e,e=l}var f=!0,p=e.__iterate(function(e,r){if(n?!t.has(e):o?!X(e,t.get(r,gn)):!X(t.get(r,gn),e))return f=!1,!1});return f&&t.size===p}function J(t,e){if(!(this instanceof J))return new J(t,e);if(this._value=t,this.size=void 0===e?1/0:Math.max(0,e),0===this.size){if(Nn)return Nn;Nn=this}}function Z(t,e){if(!t)throw new Error(e)}function Q(t,e,n){if(!(this instanceof Q))return new Q(t,e,n);if(Z(0!==n,\"Cannot step a Range by 0\"),t=t||0,void 0===e&&(e=1/0),n=void 0===n?1:Math.abs(n),e<t&&(n=-n),this._start=t,this._end=e,this._step=n,this.size=Math.max(0,Math.ceil((e-t)/n-1)+1),0===this.size){if(An)return An;An=this}}function tt(){throw TypeError(\"Abstract\")}function et(){}function nt(){}function rt(){}function ot(t){return t>>>1&1073741824|3221225471&t}function it(t){if(t===!1||null===t||void 0===t)return 0;if(\"function\"==typeof t.valueOf&&(t=t.valueOf(),t===!1||null===t||void 0===t))return 0;if(t===!0)return 1;var e=typeof t;if(\"number\"===e){var n=0|t;for(n!==t&&(n^=4294967295*t);t>4294967295;)t/=4294967295,n^=t;return ot(n)}if(\"string\"===e)return t.length>jn?ut(t):at(t);if(\"function\"==typeof t.hashCode)return t.hashCode();if(\"object\"===e)return st(t);if(\"function\"==typeof t.toString)return at(t.toString());throw new Error(\"Value type \"+e+\" cannot be hashed.\")}function ut(t){var e=Bn[t];return void 0===e&&(e=at(t),Un===Ln&&(Un=0,Bn={}),Un++,Bn[t]=e),e}function at(t){for(var e=0,n=0;n<t.length;n++)e=31*e+t.charCodeAt(n)|0;return ot(e)}function st(t){var e;if(Mn&&(e=Dn.get(t),void 0!==e))return e;if(e=t[Fn],void 0!==e)return e;if(!kn){if(e=t.propertyIsEnumerable&&t.propertyIsEnumerable[Fn],void 0!==e)return e;if(e=ct(t),void 0!==e)return e}if(e=++Rn,1073741824&Rn&&(Rn=0),Mn)Dn.set(t,e);else{if(void 0!==Pn&&Pn(t)===!1)throw new Error(\"Non-extensible objects are not allowed as keys.\");if(kn)Object.defineProperty(t,Fn,{enumerable:!1,configurable:!1,writable:!1,value:e});else if(void 0!==t.propertyIsEnumerable&&t.propertyIsEnumerable===t.constructor.prototype.propertyIsEnumerable)t.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},t.propertyIsEnumerable[Fn]=e;else{if(void 0===t.nodeType)throw new Error(\"Unable to set a non-enumerable property on object.\");t[Fn]=e}}return e}function ct(t){if(t&&t.nodeType>0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}function lt(t){Z(t!==1/0,\"Cannot perform this action with an infinite size.\")}function ft(t){return null===t||void 0===t?St():pt(t)&&!c(t)?t:St().withMutations(function(e){var r=n(t);lt(r.size),r.forEach(function(t,n){return e.set(n,t)})})}function pt(t){return!(!t||!t[Kn])}function dt(t,e){this.ownerID=t,this.entries=e}function ht(t,e,n){this.ownerID=t,this.bitmap=e,this.nodes=n}function yt(t,e,n){this.ownerID=t,this.count=e,this.nodes=n}function _t(t,e,n){this.ownerID=t,this.keyHash=e,this.entries=n}function gt(t,e,n){this.ownerID=t,this.keyHash=e,this.entry=n}function vt(t,e,n){this._type=e,this._reverse=n,this._stack=t._root&&bt(t._root)}function mt(t,e){return S(t,e[0],e[1])}function bt(t,e){return{node:t,index:0,__prev:e}}function Et(t,e,n,r){var o=Object.create(Hn);return o.size=t,o._root=e,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function St(){return Gn||(Gn=Et(0))}function wt(t,e,n){var r,o;if(t._root){var i=l(vn),u=l(mn);if(r=Ot(t._root,t.__ownerID,0,void 0,e,n,i,u),!u.value)return t;o=t.size+(i.value?n===gn?-1:1:0)}else{if(n===gn)return t;o=1,r=new dt(t.__ownerID,[[e,n]])}return t.__ownerID?(t.size=o,t._root=r,t.__hash=void 0,t.__altered=!0,t):r?Et(o,r):St()}function Ot(t,e,n,r,o,i,u,a){return t?t.update(e,n,r,o,i,u,a):i===gn?t:(f(a),f(u),new gt(e,r,[o,i]))}function Tt(t){return t.constructor===gt||t.constructor===_t}function Ct(t,e,n,r,o){if(t.keyHash===r)return new _t(e,r,[t.entry,o]);var i,u=(0===n?t.keyHash:t.keyHash>>>n)&_n,a=(0===n?r:r>>>n)&_n,s=u===a?[Ct(t,e,n+hn,r,o)]:(i=new gt(e,r,o),u<a?[t,i]:[i,t]);return new ht(e,1<<u|1<<a,s)}function It(t,e,n,r){t||(t=new p);for(var o=new gt(t,it(n),[n,r]),i=0;i<e.length;i++){var u=e[i];o=o.update(t,0,void 0,u[0],u[1])}return o}function Nt(t,e,n,r){for(var o=0,i=0,u=new Array(n),a=0,s=1,c=e.length;a<c;a++,s<<=1){var l=e[a];void 0!==l&&a!==r&&(o|=s,u[i++]=l)}return new ht(t,o,u)}function At(t,e,n,r,o){for(var i=0,u=new Array(yn),a=0;0!==n;a++,n>>>=1)u[a]=1&n?e[i++]:void 0;return u[r]=o,new yt(t,i+1,u)}function Dt(t,e,r){for(var o=[],u=0;u<r.length;u++){var a=r[u],s=n(a);i(a)||(s=s.map(function(t){return q(t)})),o.push(s)}return kt(t,e,o)}function xt(t,e,n){return t&&t.mergeDeep&&i(e)?t.mergeDeep(e):X(t,e)?t:e}function Pt(t){return function(e,n,r){if(e&&e.mergeDeepWith&&i(n))return e.mergeDeepWith(t,n);var o=t(e,n,r);return X(e,o)?e:o}}function kt(t,e,n){return n=n.filter(function(t){return 0!==t.size}),0===n.length?t:0!==t.size||t.__ownerID||1!==n.length?t.withMutations(function(t){for(var r=e?function(n,r){t.update(r,gn,function(t){return t===gn?n:e(t,n,r)})}:function(e,n){t.set(n,e)},o=0;o<n.length;o++)n[o].forEach(r)}):t.constructor(n[0])}function Mt(t,e,n,r){var o=t===gn,i=e.next();if(i.done){var u=o?n:t,a=r(u);return a===u?t:a}Z(o||t&&t.set,\"invalid keyPath\");var s=i.value,c=o?gn:t.get(s,gn),l=Mt(c,e,n,r);return l===c?t:l===gn?t.remove(s):(o?St():t).set(s,l)}function Rt(t){return t-=t>>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,127&t}function Ft(t,e,n,r){var o=r?t:d(t);return o[e]=n,o}function jt(t,e,n,r){var o=t.length+1;if(r&&e+1===o)return t[e]=n,t;for(var i=new Array(o),u=0,a=0;a<o;a++)a===e?(i[a]=n,u=-1):i[a]=t[a+u];return i}function Lt(t,e,n){var r=t.length-1;if(n&&e===r)return t.pop(),t;for(var o=new Array(r),i=0,u=0;u<r;u++)u===e&&(i=1),o[u]=t[u+i];return o}function Ut(t){var e=zt();if(null===t||void 0===t)return e;if(Bt(t))return t;var n=r(t),o=n.size;return 0===o?e:(lt(o),o>0&&o<yn?Gt(0,o,hn,null,new Kt(n.toArray())):e.withMutations(function(t){t.setSize(o),n.forEach(function(e,n){return t.set(n,e)})}))}function Bt(t){return!(!t||!t[Vn])}function Kt(t,e){this.array=t,this.ownerID=e}function Ht(t,e){function n(t,e,n){return 0===e?r(t,n):o(t,e,n)}function r(t,n){var r=n===a?s&&s.array:t&&t.array,o=n>i?0:i-n,c=u-n;return c>yn&&(c=yn),function(){if(o===c)return $n;var t=e?--c:o++;return r&&r[t]}}function o(t,r,o){var a,s=t&&t.array,c=o>i?0:i-o>>r,l=(u-o>>r)+1;return l>yn&&(l=yn),function(){for(;;){if(a){var t=a();if(t!==$n)return t;a=null}if(c===l)return $n;var i=e?--l:c++;a=n(s&&s[i],r-hn,o+(i<<r))}}}var i=t._origin,u=t._capacity,a=Jt(u),s=t._tail;return n(t._root,t._level,0)}function Gt(t,e,n,r,o,i,u){var a=Object.create(Yn);return a.size=e-t,a._origin=t,a._capacity=e,a._level=n,a._root=r,a._tail=o,a.__ownerID=i,a.__hash=u,a.__altered=!1,a}function zt(){return Xn||(Xn=Gt(0,0,hn))}function qt(t,e,n){if(e=y(t,e),e!==e)return t;if(e>=t.size||e<0)return t.withMutations(function(t){e<0?Xt(t,e).set(0,n):Xt(t,0,e+1).set(e,n)});e+=t._origin;var r=t._tail,o=t._root,i=l(mn);return e>=Jt(t._capacity)?r=Wt(r,t.__ownerID,0,e,n,i):o=Wt(o,t.__ownerID,t._level,e,n,i),i.value?t.__ownerID?(t._root=o,t._tail=r,t.__hash=void 0,t.__altered=!0,t):Gt(t._origin,t._capacity,t._level,o,r):t}function Wt(t,e,n,r,o,i){var u=r>>>n&_n,a=t&&u<t.array.length;if(!a&&void 0===o)return t;var s;if(n>0){var c=t&&t.array[u],l=Wt(c,e,n-hn,r,o,i);return l===c?t:(s=Vt(t,e),s.array[u]=l,s)}return a&&t.array[u]===o?t:(f(i),s=Vt(t,e),void 0===o&&u===s.array.length-1?s.array.pop():s.array[u]=o,s)}function Vt(t,e){return e&&t&&e===t.ownerID?t:new Kt(t?t.array.slice():[],e)}function Yt(t,e){if(e>=Jt(t._capacity))return t._tail;if(e<1<<t._level+hn){for(var n=t._root,r=t._level;n&&r>0;)n=n.array[e>>>r&_n],r-=hn;return n}}function Xt(t,e,n){void 0!==e&&(e|=0),void 0!==n&&(n|=0);var r=t.__ownerID||new p,o=t._origin,i=t._capacity,u=o+e,a=void 0===n?i:n<0?i+n:o+n;if(u===o&&a===i)return t;if(u>=a)return t.clear();for(var s=t._level,c=t._root,l=0;u+l<0;)c=new Kt(c&&c.array.length?[void 0,c]:[],r),s+=hn,l+=1<<s;l&&(u+=l,o+=l,a+=l,i+=l);for(var f=Jt(i),d=Jt(a);d>=1<<s+hn;)c=new Kt(c&&c.array.length?[c]:[],r),s+=hn;var h=t._tail,y=d<f?Yt(t,a-1):d>f?new Kt([],r):h;if(h&&d>f&&u<i&&h.array.length){c=Vt(c,r);for(var _=c,g=s;g>hn;g-=hn){var v=f>>>g&_n;_=_.array[v]=Vt(_.array[v],r)}_.array[f>>>hn&_n]=h}if(a<i&&(y=y&&y.removeAfter(r,0,a)),u>=d)u-=d,a-=d,s=hn,c=null,y=y&&y.removeBefore(r,0,u);else if(u>o||d<f){for(l=0;c;){var m=u>>>s&_n;if(m!==d>>>s&_n)break;m&&(l+=(1<<s)*m),s-=hn,c=c.array[m]}c&&u>o&&(c=c.removeBefore(r,s,u-l)),c&&d<f&&(c=c.removeAfter(r,s,d-l)),l&&(u-=l,a-=l)}return t.__ownerID?(t.size=a-u,t._origin=u,t._capacity=a,t._level=s,t._root=c,t._tail=y,t.__hash=void 0,t.__altered=!0,t):Gt(u,a,s,c,y)}function $t(t,e,n){for(var o=[],u=0,a=0;a<n.length;a++){var s=n[a],c=r(s);c.size>u&&(u=c.size),i(s)||(c=c.map(function(t){return q(t)})),o.push(c)}return u>t.size&&(t=t.setSize(u)),kt(t,e,o)}function Jt(t){return t<yn?0:t-1>>>hn<<hn}function Zt(t){return null===t||void 0===t?ee():Qt(t)?t:ee().withMutations(function(e){var r=n(t);lt(r.size),r.forEach(function(t,n){return e.set(n,t)})})}function Qt(t){return pt(t)&&c(t)}function te(t,e,n,r){var o=Object.create(Zt.prototype);return o.size=t?t.size:0,o._map=t,o._list=e,o.__ownerID=n,o.__hash=r,o}function ee(){return Jn||(Jn=te(St(),zt()))}function ne(t,e,n){var r,o,i=t._map,u=t._list,a=i.get(e),s=void 0!==a;if(n===gn){if(!s)return t;u.size>=yn&&u.size>=2*i.size?(o=u.filter(function(t,e){return void 0!==t&&a!==e}),r=o.toKeyedSeq().map(function(t){return t[0]}).flip().toMap(),t.__ownerID&&(r.__ownerID=o.__ownerID=t.__ownerID)):(r=i.remove(e),o=a===u.size-1?u.pop():u.set(a,void 0))}else if(s){if(n===u.get(a)[1])return t;r=i,o=u.set(a,[e,n])}else r=i.set(e,u.size),o=u.set(u.size,[e,n]);return t.__ownerID?(t.size=r.size,t._map=r,t._list=o,t.__hash=void 0,t):te(r,o)}function re(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function oe(t){this._iter=t,this.size=t.size}function ie(t){this._iter=t,this.size=t.size}function ue(t){this._iter=t,this.size=t.size}function ae(t){var e=Ne(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=Ae,e.__iterateUncached=function(e,n){var r=this;return t.__iterate(function(t,n){return e(n,t,r)!==!1},n)},e.__iteratorUncached=function(e,n){if(e===Sn){var r=t.__iterator(e,n);return new E(function(){var t=r.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t})}return t.__iterator(e===En?bn:En,n)},e}function se(t,e,n){var r=Ne(t);return r.size=t.size,r.has=function(e){return t.has(e)},r.get=function(r,o){var i=t.get(r,gn);return i===gn?o:e.call(n,i,r,t)},r.__iterateUncached=function(r,o){var i=this;return t.__iterate(function(t,o,u){return r(e.call(n,t,o,u),o,i)!==!1},o)},r.__iteratorUncached=function(r,o){var i=t.__iterator(Sn,o);return new E(function(){var o=i.next();if(o.done)return o;var u=o.value,a=u[0];return S(r,a,e.call(n,u[1],a,t),o)})},r}function ce(t,e){var n=Ne(t);return n._iter=t,n.size=t.size,n.reverse=function(){return t},t.flip&&(n.flip=function(){var e=ae(t);return e.reverse=function(){return t.flip()},e}),n.get=function(n,r){return t.get(e?n:-1-n,r)},n.has=function(n){return t.has(e?n:-1-n)},n.includes=function(e){return t.includes(e)},n.cacheResult=Ae,n.__iterate=function(e,n){var r=this;return t.__iterate(function(t,n){return e(t,n,r)},!n)},n.__iterator=function(e,n){return t.__iterator(e,!n)},n}function le(t,e,n,r){var o=Ne(t);return r&&(o.has=function(r){var o=t.get(r,gn);return o!==gn&&!!e.call(n,o,r,t)},o.get=function(r,o){var i=t.get(r,gn);return i!==gn&&e.call(n,i,r,t)?i:o}),o.__iterateUncached=function(o,i){var u=this,a=0;return t.__iterate(function(t,i,s){if(e.call(n,t,i,s))return a++,o(t,r?i:a-1,u)},i),a},o.__iteratorUncached=function(o,i){var u=t.__iterator(Sn,i),a=0;return new E(function(){for(;;){var i=u.next();if(i.done)return i;var s=i.value,c=s[0],l=s[1];if(e.call(n,l,c,t))return S(o,r?c:a++,l,i)}})},o}function fe(t,e,n){var r=ft().asMutable();return t.__iterate(function(o,i){r.update(e.call(n,o,i,t),0,function(t){return t+1})}),r.asImmutable()}function pe(t,e,n){var r=u(t),o=(c(t)?Zt():ft()).asMutable();t.__iterate(function(i,u){o.update(e.call(n,i,u,t),function(t){return t=t||[],t.push(r?[u,i]:i),t})});var i=Ie(t);return o.map(function(e){return Oe(t,i(e))})}function de(t,e,n,r){var o=t.size;if(void 0!==e&&(e|=0),void 0!==n&&(n|=0),g(e,n,o))return t;var i=v(e,o),u=m(n,o);if(i!==i||u!==u)return de(t.toSeq().cacheResult(),e,n,r);var a,s=u-i;s===s&&(a=s<0?0:s);var c=Ne(t);return c.size=0===a?a:t.size&&a||void 0,!r&&j(t)&&a>=0&&(c.get=function(e,n){return e=y(this,e),e>=0&&e<a?t.get(e+i,n):n}),c.__iterateUncached=function(e,n){var o=this;if(0===a)return 0;if(n)return this.cacheResult().__iterate(e,n);var u=0,s=!0,c=0;return t.__iterate(function(t,n){if(!s||!(s=u++<i))return c++,e(t,r?n:c-1,o)!==!1&&c!==a}),c},c.__iteratorUncached=function(e,n){if(0!==a&&n)return this.cacheResult().__iterator(e,n);var o=0!==a&&t.__iterator(e,n),u=0,s=0;return new E(function(){for(;u++<i;)o.next();if(++s>a)return w();var t=o.next();return r||e===En?t:e===bn?S(e,s-1,void 0,t):S(e,s-1,t.value[1],t)})},c}function he(t,e,n){var r=Ne(t);return r.__iterateUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterate(r,o);var u=0;return t.__iterate(function(t,o,a){return e.call(n,t,o,a)&&++u&&r(t,o,i)}),u},r.__iteratorUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterator(r,o);var u=t.__iterator(Sn,o),a=!0;return new E(function(){if(!a)return w();var t=u.next();if(t.done)return t;var o=t.value,s=o[0],c=o[1];return e.call(n,c,s,i)?r===Sn?t:S(r,s,c,t):(a=!1,w())})},r}function ye(t,e,n,r){var o=Ne(t);return o.__iterateUncached=function(o,i){var u=this;if(i)return this.cacheResult().__iterate(o,i);var a=!0,s=0;return t.__iterate(function(t,i,c){if(!a||!(a=e.call(n,t,i,c)))return s++,o(t,r?i:s-1,u)}),s},o.__iteratorUncached=function(o,i){var u=this;if(i)return this.cacheResult().__iterator(o,i);var a=t.__iterator(Sn,i),s=!0,c=0;return new E(function(){var t,i,l;do{if(t=a.next(),t.done)return r||o===En?t:o===bn?S(o,c++,void 0,t):S(o,c++,t.value[1],t);var f=t.value;i=f[0],l=f[1],s&&(s=e.call(n,l,i,u))}while(s);return o===Sn?t:S(o,i,l,t)})},o}function _e(t,e){var r=u(t),o=[t].concat(e).map(function(t){return i(t)?r&&(t=n(t)):t=r?U(t):B(Array.isArray(t)?t:[t]),t}).filter(function(t){return 0!==t.size});if(0===o.length)return t;if(1===o.length){var s=o[0];if(s===t||r&&u(s)||a(t)&&a(s))return s}var c=new k(o);return r?c=c.toKeyedSeq():a(t)||(c=c.toSetSeq()),c=c.flatten(!0),c.size=o.reduce(function(t,e){if(void 0!==t){var n=e.size;if(void 0!==n)return t+n}},0),c}function ge(t,e,n){var r=Ne(t);return r.__iterateUncached=function(r,o){function u(t,c){var l=this;t.__iterate(function(t,o){return(!e||c<e)&&i(t)?u(t,c+1):r(t,n?o:a++,l)===!1&&(s=!0),!s},o)}var a=0,s=!1;return u(t,0),a},r.__iteratorUncached=function(r,o){var u=t.__iterator(r,o),a=[],s=0;return new E(function(){for(;u;){var t=u.next();if(t.done===!1){var c=t.value;if(r===Sn&&(c=c[1]),e&&!(a.length<e)||!i(c))return n?t:S(r,s++,c,t);a.push(u),u=c.__iterator(r,o)}else u=a.pop()}return w()})},r}function ve(t,e,n){var r=Ie(t);return t.toSeq().map(function(o,i){return r(e.call(n,o,i,t))}).flatten(!0)}function me(t,e){var n=Ne(t);return n.size=t.size&&2*t.size-1,n.__iterateUncached=function(n,r){var o=this,i=0;return t.__iterate(function(t,r){return(!i||n(e,i++,o)!==!1)&&n(t,i++,o)!==!1},r),i},n.__iteratorUncached=function(n,r){var o,i=t.__iterator(En,r),u=0;return new E(function(){return(!o||u%2)&&(o=i.next(),o.done)?o:u%2?S(n,u++,e):S(n,u++,o.value,o)})},n}function be(t,e,n){e||(e=De);var r=u(t),o=0,i=t.toSeq().map(function(e,r){return[r,e,o++,n?n(e,r,t):e]}).toArray();return i.sort(function(t,n){return e(t[3],n[3])||t[2]-n[2]}).forEach(r?function(t,e){i[e].length=2}:function(t,e){i[e]=t[1]}),r?D(i):a(t)?x(i):P(i)}function Ee(t,e,n){if(e||(e=De),n){var r=t.toSeq().map(function(e,r){return[e,n(e,r,t)]}).reduce(function(t,n){return Se(e,t[1],n[1])?n:t});return r&&r[0]}return t.reduce(function(t,n){return Se(e,t,n)?n:t})}function Se(t,e,n){var r=t(n,e);return 0===r&&n!==e&&(void 0===n||null===n||n!==n)||r>0}function we(t,n,r){var o=Ne(t);return o.size=new k(r).map(function(t){return t.size}).min(),o.__iterate=function(t,e){for(var n,r=this.__iterator(En,e),o=0;!(n=r.next()).done&&t(n.value,o++,this)!==!1;);return o},o.__iteratorUncached=function(t,o){var i=r.map(function(t){return t=e(t),C(o?t.reverse():t)}),u=0,a=!1;return new E(function(){var e;return a||(e=i.map(function(t){return t.next()}),a=e.some(function(t){return t.done})),a?w():S(t,u++,n.apply(null,e.map(function(t){return t.value})))})},o}function Oe(t,e){return j(t)?e:t.constructor(e)}function Te(t){if(t!==Object(t))throw new TypeError(\"Expected [K, V] tuple: \"+t)}function Ce(t){return lt(t.size),h(t)}function Ie(t){return u(t)?n:a(t)?r:o}function Ne(t){return Object.create((u(t)?D:a(t)?x:P).prototype)}function Ae(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):A.prototype.cacheResult.call(this)}function De(t,e){return t>e?1:t<e?-1:0}function xe(t){var n=C(t);if(!n){if(!N(t))throw new TypeError(\"Expected iterable or array-like: \"+t);n=C(e(t))}return n}function Pe(t,e){var n,r=function(i){if(i instanceof r)return i;if(!(this instanceof r))return new r(i);if(!n){n=!0;var u=Object.keys(t);Re(o,u),o.size=u.length,o._name=e,o._keys=u,o._defaultValues=t}this._map=ft(i)},o=r.prototype=Object.create(Zn);return o.constructor=r,r}function ke(t,e,n){var r=Object.create(Object.getPrototypeOf(t));return r._map=e,r.__ownerID=n,r}function Me(t){return t._name||t.constructor.name||\"Record\"}function Re(t,e){try{e.forEach(Fe.bind(void 0,t))}catch(t){}}function Fe(t,e){Object.defineProperty(t,e,{get:function(){return this.get(e)},set:function(t){Z(this.__ownerID,\"Cannot set on an immutable record.\"),this.set(e,t)}})}function je(t){return null===t||void 0===t?Ke():Le(t)&&!c(t)?t:Ke().withMutations(function(e){var n=o(t);lt(n.size),n.forEach(function(t){return e.add(t)})})}function Le(t){return!(!t||!t[Qn])}function Ue(t,e){return t.__ownerID?(t.size=e.size,t._map=e,t):e===t._map?t:0===e.size?t.__empty():t.__make(e)}function Be(t,e){var n=Object.create(tr);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function Ke(){return er||(er=Be(St()));\n}function He(t){return null===t||void 0===t?qe():Ge(t)?t:qe().withMutations(function(e){var n=o(t);lt(n.size),n.forEach(function(t){return e.add(t)})})}function Ge(t){return Le(t)&&c(t)}function ze(t,e){var n=Object.create(nr);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function qe(){return rr||(rr=ze(ee()))}function We(t){return null===t||void 0===t?Xe():Ve(t)?t:Xe().unshiftAll(t)}function Ve(t){return!(!t||!t[or])}function Ye(t,e,n,r){var o=Object.create(ir);return o.size=t,o._head=e,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function Xe(){return ur||(ur=Ye(0))}function $e(t,e){var n=function(n){t.prototype[n]=e[n]};return Object.keys(e).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach(n),t}function Je(t,e){return e}function Ze(t,e){return[e,t]}function Qe(t){return function(){return!t.apply(this,arguments)}}function tn(t){return function(){return-t.apply(this,arguments)}}function en(t){return\"string\"==typeof t?JSON.stringify(t):t}function nn(){return d(arguments)}function rn(t,e){return t<e?1:t>e?-1:0}function on(t){if(t.size===1/0)return 0;var e=c(t),n=u(t),r=e?1:0,o=t.__iterate(n?e?function(t,e){r=31*r+an(it(t),it(e))|0}:function(t,e){r=r+an(it(t),it(e))|0}:e?function(t){r=31*r+it(t)|0}:function(t){r=r+it(t)|0});return un(o,r)}function un(t,e){return e=xn(e,3432918353),e=xn(e<<15|e>>>-15,461845907),e=xn(e<<13|e>>>-13,5),e=(e+3864292196|0)^t,e=xn(e^e>>>16,2246822507),e=xn(e^e>>>13,3266489909),e=ot(e^e>>>16)}function an(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}var sn=Array.prototype.slice;t(n,e),t(r,e),t(o,e),e.isIterable=i,e.isKeyed=u,e.isIndexed=a,e.isAssociative=s,e.isOrdered=c,e.Keyed=n,e.Indexed=r,e.Set=o;var cn=\"@@__IMMUTABLE_ITERABLE__@@\",ln=\"@@__IMMUTABLE_KEYED__@@\",fn=\"@@__IMMUTABLE_INDEXED__@@\",pn=\"@@__IMMUTABLE_ORDERED__@@\",dn=\"delete\",hn=5,yn=1<<hn,_n=yn-1,gn={},vn={value:!1},mn={value:!1},bn=0,En=1,Sn=2,wn=\"function\"==typeof Symbol&&Symbol.iterator,On=\"@@iterator\",Tn=wn||On;E.prototype.toString=function(){return\"[Iterator]\"},E.KEYS=bn,E.VALUES=En,E.ENTRIES=Sn,E.prototype.inspect=E.prototype.toSource=function(){return this.toString()},E.prototype[Tn]=function(){return this},t(A,e),A.of=function(){return A(arguments)},A.prototype.toSeq=function(){return this},A.prototype.toString=function(){return this.__toString(\"Seq {\",\"}\")},A.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},A.prototype.__iterate=function(t,e){return G(this,t,e,!0)},A.prototype.__iterator=function(t,e){return z(this,t,e,!0)},t(D,A),D.prototype.toKeyedSeq=function(){return this},t(x,A),x.of=function(){return x(arguments)},x.prototype.toIndexedSeq=function(){return this},x.prototype.toString=function(){return this.__toString(\"Seq [\",\"]\")},x.prototype.__iterate=function(t,e){return G(this,t,e,!1)},x.prototype.__iterator=function(t,e){return z(this,t,e,!1)},t(P,A),P.of=function(){return P(arguments)},P.prototype.toSetSeq=function(){return this},A.isSeq=j,A.Keyed=D,A.Set=P,A.Indexed=x;var Cn=\"@@__IMMUTABLE_SEQ__@@\";A.prototype[Cn]=!0,t(k,x),k.prototype.get=function(t,e){return this.has(t)?this._array[y(this,t)]:e},k.prototype.__iterate=function(t,e){for(var n=this._array,r=n.length-1,o=0;o<=r;o++)if(t(n[e?r-o:o],o,this)===!1)return o+1;return o},k.prototype.__iterator=function(t,e){var n=this._array,r=n.length-1,o=0;return new E(function(){return o>r?w():S(t,o,n[e?r-o++:o++])})},t(M,D),M.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},M.prototype.has=function(t){return this._object.hasOwnProperty(t)},M.prototype.__iterate=function(t,e){for(var n=this._object,r=this._keys,o=r.length-1,i=0;i<=o;i++){var u=r[e?o-i:i];if(t(n[u],u,this)===!1)return i+1}return i},M.prototype.__iterator=function(t,e){var n=this._object,r=this._keys,o=r.length-1,i=0;return new E(function(){var u=r[e?o-i:i];return i++>o?w():S(t,u,n[u])})},M.prototype[pn]=!0,t(R,x),R.prototype.__iterateUncached=function(t,e){if(e)return this.cacheResult().__iterate(t,e);var n=this._iterable,r=C(n),o=0;if(T(r))for(var i;!(i=r.next()).done&&t(i.value,o++,this)!==!1;);return o},R.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterable,r=C(n);if(!T(r))return new E(w);var o=0;return new E(function(){var e=r.next();return e.done?e:S(t,o++,e.value)})},t(F,x),F.prototype.__iterateUncached=function(t,e){if(e)return this.cacheResult().__iterate(t,e);for(var n=this._iterator,r=this._iteratorCache,o=0;o<r.length;)if(t(r[o],o++,this)===!1)return o;for(var i;!(i=n.next()).done;){var u=i.value;if(r[o]=u,t(u,o++,this)===!1)break}return o},F.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterator,r=this._iteratorCache,o=0;return new E(function(){if(o>=r.length){var e=n.next();if(e.done)return e;r[o]=e.value}return S(t,o,r[o++])})};var In;t(J,x),J.prototype.toString=function(){return 0===this.size?\"Repeat []\":\"Repeat [ \"+this._value+\" \"+this.size+\" times ]\"},J.prototype.get=function(t,e){return this.has(t)?this._value:e},J.prototype.includes=function(t){return X(this._value,t)},J.prototype.slice=function(t,e){var n=this.size;return g(t,e,n)?this:new J(this._value,m(e,n)-v(t,n))},J.prototype.reverse=function(){return this},J.prototype.indexOf=function(t){return X(this._value,t)?0:-1},J.prototype.lastIndexOf=function(t){return X(this._value,t)?this.size:-1},J.prototype.__iterate=function(t,e){for(var n=0;n<this.size;n++)if(t(this._value,n,this)===!1)return n+1;return n},J.prototype.__iterator=function(t,e){var n=this,r=0;return new E(function(){return r<n.size?S(t,r++,n._value):w()})},J.prototype.equals=function(t){return t instanceof J?X(this._value,t._value):$(t)};var Nn;t(Q,x),Q.prototype.toString=function(){return 0===this.size?\"Range []\":\"Range [ \"+this._start+\"...\"+this._end+(this._step>1?\" by \"+this._step:\"\")+\" ]\"},Q.prototype.get=function(t,e){return this.has(t)?this._start+y(this,t)*this._step:e},Q.prototype.includes=function(t){var e=(t-this._start)/this._step;return e>=0&&e<this.size&&e===Math.floor(e)},Q.prototype.slice=function(t,e){return g(t,e,this.size)?this:(t=v(t,this.size),e=m(e,this.size),e<=t?new Q(0,0):new Q(this.get(t,this._end),this.get(e,this._end),this._step))},Q.prototype.indexOf=function(t){var e=t-this._start;if(e%this._step===0){var n=e/this._step;if(n>=0&&n<this.size)return n}return-1},Q.prototype.lastIndexOf=function(t){return this.indexOf(t)},Q.prototype.__iterate=function(t,e){for(var n=this.size-1,r=this._step,o=e?this._start+n*r:this._start,i=0;i<=n;i++){if(t(o,i,this)===!1)return i+1;o+=e?-r:r}return i},Q.prototype.__iterator=function(t,e){var n=this.size-1,r=this._step,o=e?this._start+n*r:this._start,i=0;return new E(function(){var u=o;return o+=e?-r:r,i>n?w():S(t,i++,u)})},Q.prototype.equals=function(t){return t instanceof Q?this._start===t._start&&this._end===t._end&&this._step===t._step:$(this,t)};var An;t(tt,e),t(et,tt),t(nt,tt),t(rt,tt),tt.Keyed=et,tt.Indexed=nt,tt.Set=rt;var Dn,xn=\"function\"==typeof Math.imul&&Math.imul(4294967295,2)===-2?Math.imul:function(t,e){t|=0,e|=0;var n=65535&t,r=65535&e;return n*r+((t>>>16)*r+n*(e>>>16)<<16>>>0)|0},Pn=Object.isExtensible,kn=function(){try{return Object.defineProperty({},\"@\",{}),!0}catch(t){return!1}}(),Mn=\"function\"==typeof WeakMap;Mn&&(Dn=new WeakMap);var Rn=0,Fn=\"__immutablehash__\";\"function\"==typeof Symbol&&(Fn=Symbol(Fn));var jn=16,Ln=255,Un=0,Bn={};t(ft,et),ft.prototype.toString=function(){return this.__toString(\"Map {\",\"}\")},ft.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},ft.prototype.set=function(t,e){return wt(this,t,e)},ft.prototype.setIn=function(t,e){return this.updateIn(t,gn,function(){return e})},ft.prototype.remove=function(t){return wt(this,t,gn)},ft.prototype.deleteIn=function(t){return this.updateIn(t,function(){return gn})},ft.prototype.update=function(t,e,n){return 1===arguments.length?t(this):this.updateIn([t],e,n)},ft.prototype.updateIn=function(t,e,n){n||(n=e,e=void 0);var r=Mt(this,xe(t),e,n);return r===gn?void 0:r},ft.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):St()},ft.prototype.merge=function(){return Dt(this,void 0,arguments)},ft.prototype.mergeWith=function(t){var e=sn.call(arguments,1);return Dt(this,t,e)},ft.prototype.mergeIn=function(t){var e=sn.call(arguments,1);return this.updateIn(t,St(),function(t){return\"function\"==typeof t.merge?t.merge.apply(t,e):e[e.length-1]})},ft.prototype.mergeDeep=function(){return Dt(this,xt,arguments)},ft.prototype.mergeDeepWith=function(t){var e=sn.call(arguments,1);return Dt(this,Pt(t),e)},ft.prototype.mergeDeepIn=function(t){var e=sn.call(arguments,1);return this.updateIn(t,St(),function(t){return\"function\"==typeof t.mergeDeep?t.mergeDeep.apply(t,e):e[e.length-1]})},ft.prototype.sort=function(t){return Zt(be(this,t))},ft.prototype.sortBy=function(t,e){return Zt(be(this,e,t))},ft.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},ft.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new p)},ft.prototype.asImmutable=function(){return this.__ensureOwner()},ft.prototype.wasAltered=function(){return this.__altered},ft.prototype.__iterator=function(t,e){return new vt(this,t,e)},ft.prototype.__iterate=function(t,e){var n=this,r=0;return this._root&&this._root.iterate(function(e){return r++,t(e[1],e[0],n)},e),r},ft.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Et(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},ft.isMap=pt;var Kn=\"@@__IMMUTABLE_MAP__@@\",Hn=ft.prototype;Hn[Kn]=!0,Hn[dn]=Hn.remove,Hn.removeIn=Hn.deleteIn,dt.prototype.get=function(t,e,n,r){for(var o=this.entries,i=0,u=o.length;i<u;i++)if(X(n,o[i][0]))return o[i][1];return r},dt.prototype.update=function(t,e,n,r,o,i,u){for(var a=o===gn,s=this.entries,c=0,l=s.length;c<l&&!X(r,s[c][0]);c++);var p=c<l;if(p?s[c][1]===o:a)return this;if(f(u),(a||!p)&&f(i),!a||1!==s.length){if(!p&&!a&&s.length>=zn)return It(t,s,r,o);var h=t&&t===this.ownerID,y=h?s:d(s);return p?a?c===l-1?y.pop():y[c]=y.pop():y[c]=[r,o]:y.push([r,o]),h?(this.entries=y,this):new dt(t,y)}},ht.prototype.get=function(t,e,n,r){void 0===e&&(e=it(n));var o=1<<((0===t?e:e>>>t)&_n),i=this.bitmap;return 0===(i&o)?r:this.nodes[Rt(i&o-1)].get(t+hn,e,n,r)},ht.prototype.update=function(t,e,n,r,o,i,u){void 0===n&&(n=it(r));var a=(0===e?n:n>>>e)&_n,s=1<<a,c=this.bitmap,l=0!==(c&s);if(!l&&o===gn)return this;var f=Rt(c&s-1),p=this.nodes,d=l?p[f]:void 0,h=Ot(d,t,e+hn,n,r,o,i,u);if(h===d)return this;if(!l&&h&&p.length>=qn)return At(t,p,c,a,h);if(l&&!h&&2===p.length&&Tt(p[1^f]))return p[1^f];if(l&&h&&1===p.length&&Tt(h))return h;var y=t&&t===this.ownerID,_=l?h?c:c^s:c|s,g=l?h?Ft(p,f,h,y):Lt(p,f,y):jt(p,f,h,y);return y?(this.bitmap=_,this.nodes=g,this):new ht(t,_,g)},yt.prototype.get=function(t,e,n,r){void 0===e&&(e=it(n));var o=(0===t?e:e>>>t)&_n,i=this.nodes[o];return i?i.get(t+hn,e,n,r):r},yt.prototype.update=function(t,e,n,r,o,i,u){void 0===n&&(n=it(r));var a=(0===e?n:n>>>e)&_n,s=o===gn,c=this.nodes,l=c[a];if(s&&!l)return this;var f=Ot(l,t,e+hn,n,r,o,i,u);if(f===l)return this;var p=this.count;if(l){if(!f&&(p--,p<Wn))return Nt(t,c,p,a)}else p++;var d=t&&t===this.ownerID,h=Ft(c,a,f,d);return d?(this.count=p,this.nodes=h,this):new yt(t,p,h)},_t.prototype.get=function(t,e,n,r){for(var o=this.entries,i=0,u=o.length;i<u;i++)if(X(n,o[i][0]))return o[i][1];return r},_t.prototype.update=function(t,e,n,r,o,i,u){void 0===n&&(n=it(r));var a=o===gn;if(n!==this.keyHash)return a?this:(f(u),f(i),Ct(this,t,e,n,[r,o]));for(var s=this.entries,c=0,l=s.length;c<l&&!X(r,s[c][0]);c++);var p=c<l;if(p?s[c][1]===o:a)return this;if(f(u),(a||!p)&&f(i),a&&2===l)return new gt(t,this.keyHash,s[1^c]);var h=t&&t===this.ownerID,y=h?s:d(s);return p?a?c===l-1?y.pop():y[c]=y.pop():y[c]=[r,o]:y.push([r,o]),h?(this.entries=y,this):new _t(t,this.keyHash,y)},gt.prototype.get=function(t,e,n,r){return X(n,this.entry[0])?this.entry[1]:r},gt.prototype.update=function(t,e,n,r,o,i,u){var a=o===gn,s=X(r,this.entry[0]);return(s?o===this.entry[1]:a)?this:(f(u),a?void f(i):s?t&&t===this.ownerID?(this.entry[1]=o,this):new gt(t,this.keyHash,[r,o]):(f(i),Ct(this,t,e,it(r),[r,o])))},dt.prototype.iterate=_t.prototype.iterate=function(t,e){for(var n=this.entries,r=0,o=n.length-1;r<=o;r++)if(t(n[e?o-r:r])===!1)return!1},ht.prototype.iterate=yt.prototype.iterate=function(t,e){for(var n=this.nodes,r=0,o=n.length-1;r<=o;r++){var i=n[e?o-r:r];if(i&&i.iterate(t,e)===!1)return!1}},gt.prototype.iterate=function(t,e){return t(this.entry)},t(vt,E),vt.prototype.next=function(){for(var t=this._type,e=this._stack;e;){var n,r=e.node,o=e.index++;if(r.entry){if(0===o)return mt(t,r.entry)}else if(r.entries){if(n=r.entries.length-1,o<=n)return mt(t,r.entries[this._reverse?n-o:o])}else if(n=r.nodes.length-1,o<=n){var i=r.nodes[this._reverse?n-o:o];if(i){if(i.entry)return mt(t,i.entry);e=this._stack=bt(i,e)}continue}e=this._stack=this._stack.__prev}return w()};var Gn,zn=yn/4,qn=yn/2,Wn=yn/4;t(Ut,nt),Ut.of=function(){return this(arguments)},Ut.prototype.toString=function(){return this.__toString(\"List [\",\"]\")},Ut.prototype.get=function(t,e){if(t=y(this,t),t>=0&&t<this.size){t+=this._origin;var n=Yt(this,t);return n&&n.array[t&_n]}return e},Ut.prototype.set=function(t,e){return qt(this,t,e)},Ut.prototype.remove=function(t){return this.has(t)?0===t?this.shift():t===this.size-1?this.pop():this.splice(t,1):this},Ut.prototype.insert=function(t,e){return this.splice(t,0,e)},Ut.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=hn,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):zt()},Ut.prototype.push=function(){var t=arguments,e=this.size;return this.withMutations(function(n){Xt(n,0,e+t.length);for(var r=0;r<t.length;r++)n.set(e+r,t[r])})},Ut.prototype.pop=function(){return Xt(this,0,-1)},Ut.prototype.unshift=function(){var t=arguments;return this.withMutations(function(e){Xt(e,-t.length);for(var n=0;n<t.length;n++)e.set(n,t[n])})},Ut.prototype.shift=function(){return Xt(this,1)},Ut.prototype.merge=function(){return $t(this,void 0,arguments)},Ut.prototype.mergeWith=function(t){var e=sn.call(arguments,1);return $t(this,t,e)},Ut.prototype.mergeDeep=function(){return $t(this,xt,arguments)},Ut.prototype.mergeDeepWith=function(t){var e=sn.call(arguments,1);return $t(this,Pt(t),e)},Ut.prototype.setSize=function(t){return Xt(this,0,t)},Ut.prototype.slice=function(t,e){var n=this.size;return g(t,e,n)?this:Xt(this,v(t,n),m(e,n))},Ut.prototype.__iterator=function(t,e){var n=0,r=Ht(this,e);return new E(function(){var e=r();return e===$n?w():S(t,n++,e)})},Ut.prototype.__iterate=function(t,e){for(var n,r=0,o=Ht(this,e);(n=o())!==$n&&t(n,r++,this)!==!1;);return r},Ut.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Gt(this._origin,this._capacity,this._level,this._root,this._tail,t,this.__hash):(this.__ownerID=t,this)},Ut.isList=Bt;var Vn=\"@@__IMMUTABLE_LIST__@@\",Yn=Ut.prototype;Yn[Vn]=!0,Yn[dn]=Yn.remove,Yn.setIn=Hn.setIn,Yn.deleteIn=Yn.removeIn=Hn.removeIn,Yn.update=Hn.update,Yn.updateIn=Hn.updateIn,Yn.mergeIn=Hn.mergeIn,Yn.mergeDeepIn=Hn.mergeDeepIn,Yn.withMutations=Hn.withMutations,Yn.asMutable=Hn.asMutable,Yn.asImmutable=Hn.asImmutable,Yn.wasAltered=Hn.wasAltered,Kt.prototype.removeBefore=function(t,e,n){if(n===e?1<<e:0===this.array.length)return this;var r=n>>>e&_n;if(r>=this.array.length)return new Kt([],t);var o,i=0===r;if(e>0){var u=this.array[r];if(o=u&&u.removeBefore(t,e-hn,n),o===u&&i)return this}if(i&&!o)return this;var a=Vt(this,t);if(!i)for(var s=0;s<r;s++)a.array[s]=void 0;return o&&(a.array[r]=o),a},Kt.prototype.removeAfter=function(t,e,n){if(n===(e?1<<e:0)||0===this.array.length)return this;var r=n-1>>>e&_n;if(r>=this.array.length)return this;var o;if(e>0){var i=this.array[r];if(o=i&&i.removeAfter(t,e-hn,n),o===i&&r===this.array.length-1)return this}var u=Vt(this,t);return u.array.splice(r+1),o&&(u.array[r]=o),u};var Xn,$n={};t(Zt,ft),Zt.of=function(){return this(arguments)},Zt.prototype.toString=function(){return this.__toString(\"OrderedMap {\",\"}\")},Zt.prototype.get=function(t,e){var n=this._map.get(t);return void 0!==n?this._list.get(n)[1]:e},Zt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):ee()},Zt.prototype.set=function(t,e){return ne(this,t,e)},Zt.prototype.remove=function(t){return ne(this,t,gn)},Zt.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},Zt.prototype.__iterate=function(t,e){var n=this;return this._list.__iterate(function(e){return e&&t(e[1],e[0],n)},e)},Zt.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},Zt.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),n=this._list.__ensureOwner(t);return t?te(e,n,t,this.__hash):(this.__ownerID=t,this._map=e,this._list=n,this)},Zt.isOrderedMap=Qt,Zt.prototype[pn]=!0,Zt.prototype[dn]=Zt.prototype.remove;var Jn;t(re,D),re.prototype.get=function(t,e){return this._iter.get(t,e)},re.prototype.has=function(t){return this._iter.has(t)},re.prototype.valueSeq=function(){return this._iter.valueSeq()},re.prototype.reverse=function(){var t=this,e=ce(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},re.prototype.map=function(t,e){var n=this,r=se(this,t,e);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(t,e)}),r},re.prototype.__iterate=function(t,e){var n,r=this;return this._iter.__iterate(this._useKeys?function(e,n){return t(e,n,r)}:(n=e?Ce(this):0,function(o){return t(o,e?--n:n++,r)}),e)},re.prototype.__iterator=function(t,e){if(this._useKeys)return this._iter.__iterator(t,e);var n=this._iter.__iterator(En,e),r=e?Ce(this):0;return new E(function(){var o=n.next();return o.done?o:S(t,e?--r:r++,o.value,o)})},re.prototype[pn]=!0,t(oe,x),oe.prototype.includes=function(t){return this._iter.includes(t)},oe.prototype.__iterate=function(t,e){var n=this,r=0;return this._iter.__iterate(function(e){return t(e,r++,n)},e)},oe.prototype.__iterator=function(t,e){var n=this._iter.__iterator(En,e),r=0;return new E(function(){var e=n.next();return e.done?e:S(t,r++,e.value,e)})},t(ie,P),ie.prototype.has=function(t){return this._iter.includes(t)},ie.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){return t(e,e,n)},e)},ie.prototype.__iterator=function(t,e){var n=this._iter.__iterator(En,e);return new E(function(){var e=n.next();return e.done?e:S(t,e.value,e.value,e)})},t(ue,D),ue.prototype.entrySeq=function(){return this._iter.toSeq()},ue.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){if(e){Te(e);var r=i(e);return t(r?e.get(1):e[1],r?e.get(0):e[0],n)}},e)},ue.prototype.__iterator=function(t,e){var n=this._iter.__iterator(En,e);return new E(function(){for(;;){var e=n.next();if(e.done)return e;var r=e.value;if(r){Te(r);var o=i(r);return S(t,o?r.get(0):r[0],o?r.get(1):r[1],e)}}})},oe.prototype.cacheResult=re.prototype.cacheResult=ie.prototype.cacheResult=ue.prototype.cacheResult=Ae,t(Pe,et),Pe.prototype.toString=function(){return this.__toString(Me(this)+\" {\",\"}\")},Pe.prototype.has=function(t){return this._defaultValues.hasOwnProperty(t)},Pe.prototype.get=function(t,e){if(!this.has(t))return e;var n=this._defaultValues[t];return this._map?this._map.get(t,n):n},Pe.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var t=this.constructor;return t._empty||(t._empty=ke(this,St()))},Pe.prototype.set=function(t,e){if(!this.has(t))throw new Error('Cannot set unknown key \"'+t+'\" on '+Me(this));var n=this._map&&this._map.set(t,e);return this.__ownerID||n===this._map?this:ke(this,n)},Pe.prototype.remove=function(t){if(!this.has(t))return this;var e=this._map&&this._map.remove(t);return this.__ownerID||e===this._map?this:ke(this,e)},Pe.prototype.wasAltered=function(){return this._map.wasAltered()},Pe.prototype.__iterator=function(t,e){var r=this;return n(this._defaultValues).map(function(t,e){return r.get(e)}).__iterator(t,e)},Pe.prototype.__iterate=function(t,e){var r=this;return n(this._defaultValues).map(function(t,e){return r.get(e)}).__iterate(t,e)},Pe.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map&&this._map.__ensureOwner(t);return t?ke(this,e,t):(this.__ownerID=t,this._map=e,this)};var Zn=Pe.prototype;Zn[dn]=Zn.remove,Zn.deleteIn=Zn.removeIn=Hn.removeIn,Zn.merge=Hn.merge,Zn.mergeWith=Hn.mergeWith,Zn.mergeIn=Hn.mergeIn,Zn.mergeDeep=Hn.mergeDeep,Zn.mergeDeepWith=Hn.mergeDeepWith,Zn.mergeDeepIn=Hn.mergeDeepIn,Zn.setIn=Hn.setIn,Zn.update=Hn.update,Zn.updateIn=Hn.updateIn,Zn.withMutations=Hn.withMutations,Zn.asMutable=Hn.asMutable,Zn.asImmutable=Hn.asImmutable,t(je,rt),je.of=function(){return this(arguments)},je.fromKeys=function(t){return this(n(t).keySeq())},je.prototype.toString=function(){return this.__toString(\"Set {\",\"}\")},je.prototype.has=function(t){return this._map.has(t)},je.prototype.add=function(t){return Ue(this,this._map.set(t,!0))},je.prototype.remove=function(t){return Ue(this,this._map.remove(t))},je.prototype.clear=function(){return Ue(this,this._map.clear())},je.prototype.union=function(){var t=sn.call(arguments,0);return t=t.filter(function(t){return 0!==t.size}),0===t.length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations(function(e){for(var n=0;n<t.length;n++)o(t[n]).forEach(function(t){return e.add(t)})}):this.constructor(t[0])},je.prototype.intersect=function(){var t=sn.call(arguments,0);if(0===t.length)return this;t=t.map(function(t){return o(t)});var e=this;return this.withMutations(function(n){e.forEach(function(e){t.every(function(t){return t.includes(e)})||n.remove(e)})})},je.prototype.subtract=function(){var t=sn.call(arguments,0);if(0===t.length)return this;t=t.map(function(t){return o(t)});var e=this;return this.withMutations(function(n){e.forEach(function(e){t.some(function(t){return t.includes(e)})&&n.remove(e)})})},je.prototype.merge=function(){return this.union.apply(this,arguments)},je.prototype.mergeWith=function(t){var e=sn.call(arguments,1);return this.union.apply(this,e)},je.prototype.sort=function(t){return He(be(this,t))},je.prototype.sortBy=function(t,e){return He(be(this,e,t))},je.prototype.wasAltered=function(){return this._map.wasAltered()},je.prototype.__iterate=function(t,e){var n=this;return this._map.__iterate(function(e,r){return t(r,r,n)},e)},je.prototype.__iterator=function(t,e){return this._map.map(function(t,e){return e}).__iterator(t,e)},je.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t);return t?this.__make(e,t):(this.__ownerID=t,this._map=e,this)},je.isSet=Le;var Qn=\"@@__IMMUTABLE_SET__@@\",tr=je.prototype;tr[Qn]=!0,tr[dn]=tr.remove,tr.mergeDeep=tr.merge,tr.mergeDeepWith=tr.mergeWith,tr.withMutations=Hn.withMutations,tr.asMutable=Hn.asMutable,tr.asImmutable=Hn.asImmutable,tr.__empty=Ke,tr.__make=Be;var er;t(He,je),He.of=function(){return this(arguments)},He.fromKeys=function(t){return this(n(t).keySeq())},He.prototype.toString=function(){return this.__toString(\"OrderedSet {\",\"}\")},He.isOrderedSet=Ge;var nr=He.prototype;nr[pn]=!0,nr.__empty=qe,nr.__make=ze;var rr;t(We,nt),We.of=function(){return this(arguments)},We.prototype.toString=function(){return this.__toString(\"Stack [\",\"]\")},We.prototype.get=function(t,e){var n=this._head;for(t=y(this,t);n&&t--;)n=n.next;return n?n.value:e},We.prototype.peek=function(){return this._head&&this._head.value},We.prototype.push=function(){if(0===arguments.length)return this;for(var t=this.size+arguments.length,e=this._head,n=arguments.length-1;n>=0;n--)e={value:arguments[n],next:e};return this.__ownerID?(this.size=t,this._head=e,this.__hash=void 0,this.__altered=!0,this):Ye(t,e)},We.prototype.pushAll=function(t){if(t=r(t),0===t.size)return this;lt(t.size);var e=this.size,n=this._head;return t.reverse().forEach(function(t){e++,n={value:t,next:n}}),this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):Ye(e,n)},We.prototype.pop=function(){return this.slice(1)},We.prototype.unshift=function(){return this.push.apply(this,arguments)},We.prototype.unshiftAll=function(t){return this.pushAll(t)},We.prototype.shift=function(){return this.pop.apply(this,arguments)},We.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Xe()},We.prototype.slice=function(t,e){if(g(t,e,this.size))return this;var n=v(t,this.size),r=m(e,this.size);if(r!==this.size)return nt.prototype.slice.call(this,t,e);for(var o=this.size-n,i=this._head;n--;)i=i.next;return this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):Ye(o,i)},We.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Ye(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},We.prototype.__iterate=function(t,e){if(e)return this.reverse().__iterate(t);for(var n=0,r=this._head;r&&t(r.value,n++,this)!==!1;)r=r.next;return n},We.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var n=0,r=this._head;return new E(function(){if(r){var e=r.value;return r=r.next,S(t,n++,e)}return w()})},We.isStack=Ve;var or=\"@@__IMMUTABLE_STACK__@@\",ir=We.prototype;ir[or]=!0,ir.withMutations=Hn.withMutations,ir.asMutable=Hn.asMutable,ir.asImmutable=Hn.asImmutable,ir.wasAltered=Hn.wasAltered;var ur;e.Iterator=E,$e(e,{toArray:function(){lt(this.size);var t=new Array(this.size||0);return this.valueSeq().__iterate(function(e,n){t[n]=e}),t},toIndexedSeq:function(){return new oe(this)},toJS:function(){return this.toSeq().map(function(t){return t&&\"function\"==typeof t.toJS?t.toJS():t}).__toJS()},toJSON:function(){return this.toSeq().map(function(t){return t&&\"function\"==typeof t.toJSON?t.toJSON():t}).__toJS()},toKeyedSeq:function(){return new re(this,!0)},toMap:function(){return ft(this.toKeyedSeq())},toObject:function(){lt(this.size);var t={};return this.__iterate(function(e,n){t[n]=e}),t},toOrderedMap:function(){return Zt(this.toKeyedSeq())},toOrderedSet:function(){return He(u(this)?this.valueSeq():this)},toSet:function(){return je(u(this)?this.valueSeq():this)},toSetSeq:function(){return new ie(this)},toSeq:function(){return a(this)?this.toIndexedSeq():u(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return We(u(this)?this.valueSeq():this)},toList:function(){return Ut(u(this)?this.valueSeq():this)},toString:function(){return\"[Iterable]\"},__toString:function(t,e){return 0===this.size?t+e:t+\" \"+this.toSeq().map(this.__toStringMapper).join(\", \")+\" \"+e},concat:function(){var t=sn.call(arguments,0);return Oe(this,_e(this,t))},includes:function(t){return this.some(function(e){return X(e,t)})},entries:function(){return this.__iterator(Sn)},every:function(t,e){lt(this.size);var n=!0;return this.__iterate(function(r,o,i){if(!t.call(e,r,o,i))return n=!1,!1}),n},filter:function(t,e){return Oe(this,le(this,t,e,!0))},find:function(t,e,n){var r=this.findEntry(t,e);return r?r[1]:n},findEntry:function(t,e){var n;return this.__iterate(function(r,o,i){if(t.call(e,r,o,i))return n=[o,r],!1}),n},findLastEntry:function(t,e){return this.toSeq().reverse().findEntry(t,e)},forEach:function(t,e){return lt(this.size),this.__iterate(e?t.bind(e):t)},join:function(t){lt(this.size),t=void 0!==t?\"\"+t:\",\";var e=\"\",n=!0;return this.__iterate(function(r){n?n=!1:e+=t,e+=null!==r&&void 0!==r?r.toString():\"\"}),e},keys:function(){return this.__iterator(bn)},map:function(t,e){return Oe(this,se(this,t,e))},reduce:function(t,e,n){lt(this.size);var r,o;return arguments.length<2?o=!0:r=e,this.__iterate(function(e,i,u){o?(o=!1,r=e):r=t.call(n,r,e,i,u)}),r},reduceRight:function(t,e,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return Oe(this,ce(this,!0))},slice:function(t,e){return Oe(this,de(this,t,e,!0))},some:function(t,e){return!this.every(Qe(t),e)},sort:function(t){return Oe(this,be(this,t))},values:function(){return this.__iterator(En)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some(function(){return!0})},count:function(t,e){return h(t?this.toSeq().filter(t,e):this)},countBy:function(t,e){return fe(this,t,e)},equals:function(t){return $(this,t)},entrySeq:function(){var t=this;if(t._cache)return new k(t._cache);var e=t.toSeq().map(Ze).toIndexedSeq();return e.fromEntrySeq=function(){return t.toSeq()},e},filterNot:function(t,e){return this.filter(Qe(t),e)},findLast:function(t,e,n){return this.toKeyedSeq().reverse().find(t,e,n)},first:function(){return this.find(_)},flatMap:function(t,e){return Oe(this,ve(this,t,e))},flatten:function(t){return Oe(this,ge(this,t,!0))},fromEntrySeq:function(){return new ue(this)},get:function(t,e){return this.find(function(e,n){return X(n,t)},void 0,e)},getIn:function(t,e){for(var n,r=this,o=xe(t);!(n=o.next()).done;){var i=n.value;if(r=r&&r.get?r.get(i,gn):gn,r===gn)return e}return r},groupBy:function(t,e){return pe(this,t,e)},has:function(t){return this.get(t,gn)!==gn},hasIn:function(t){return this.getIn(t,gn)!==gn},isSubset:function(t){return t=\"function\"==typeof t.includes?t:e(t),this.every(function(e){return t.includes(e)})},isSuperset:function(t){return t=\"function\"==typeof t.isSubset?t:e(t),t.isSubset(this)},keySeq:function(){return this.toSeq().map(Je).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},max:function(t){return Ee(this,t)},maxBy:function(t,e){return Ee(this,e,t)},min:function(t){return Ee(this,t?tn(t):rn)},minBy:function(t,e){return Ee(this,e?tn(e):rn,t)},rest:function(){return this.slice(1)},skip:function(t){return this.slice(Math.max(0,t))},skipLast:function(t){return Oe(this,this.toSeq().reverse().skip(t).reverse())},skipWhile:function(t,e){return Oe(this,ye(this,t,e,!0))},skipUntil:function(t,e){return this.skipWhile(Qe(t),e)},sortBy:function(t,e){return Oe(this,be(this,e,t))},take:function(t){return this.slice(0,Math.max(0,t))},takeLast:function(t){return Oe(this,this.toSeq().reverse().take(t).reverse())},takeWhile:function(t,e){return Oe(this,he(this,t,e))},takeUntil:function(t,e){return this.takeWhile(Qe(t),e)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=on(this))}});var ar=e.prototype;ar[cn]=!0,ar[Tn]=ar.values,ar.__toJS=ar.toArray,ar.__toStringMapper=en,ar.inspect=ar.toSource=function(){return this.toString()},ar.chain=ar.flatMap,ar.contains=ar.includes,function(){try{Object.defineProperty(ar,\"length\",{get:function(){if(!e.noLengthWarning){var t;try{throw new Error}catch(e){t=e.stack}if(t.indexOf(\"_wrapObject\")===-1)return console&&console.warn&&console.warn(\"iterable.length has been deprecated, use iterable.size or iterable.count(). This warning will become a silent error in a future version. \"+t),this.size}}})}catch(t){}}(),$e(n,{flip:function(){return Oe(this,ae(this))},findKey:function(t,e){var n=this.findEntry(t,e);return n&&n[0]},findLastKey:function(t,e){return this.toSeq().reverse().findKey(t,e)},keyOf:function(t){return this.findKey(function(e){return X(e,t)})},lastKeyOf:function(t){return this.findLastKey(function(e){return X(e,t)})},mapEntries:function(t,e){var n=this,r=0;return Oe(this,this.toSeq().map(function(o,i){return t.call(e,[i,o],r++,n)}).fromEntrySeq())},mapKeys:function(t,e){var n=this;return Oe(this,this.toSeq().flip().map(function(r,o){return t.call(e,r,o,n)}).flip())}});var sr=n.prototype;sr[ln]=!0,sr[Tn]=ar.entries,sr.__toJS=ar.toObject,sr.__toStringMapper=function(t,e){return JSON.stringify(e)+\": \"+en(t)},$e(r,{toKeyedSeq:function(){return new re(this,!1)},filter:function(t,e){return Oe(this,le(this,t,e,!1));\n},findIndex:function(t,e){var n=this.findEntry(t,e);return n?n[0]:-1},indexOf:function(t){var e=this.toKeyedSeq().keyOf(t);return void 0===e?-1:e},lastIndexOf:function(t){var e=this.toKeyedSeq().reverse().keyOf(t);return void 0===e?-1:e},reverse:function(){return Oe(this,ce(this,!1))},slice:function(t,e){return Oe(this,de(this,t,e,!1))},splice:function(t,e){var n=arguments.length;if(e=Math.max(0|e,0),0===n||2===n&&!e)return this;t=v(t,t<0?this.count():this.size);var r=this.slice(0,t);return Oe(this,1===n?r:r.concat(d(arguments,2),this.slice(t+e)))},findLastIndex:function(t,e){var n=this.toKeyedSeq().findLastKey(t,e);return void 0===n?-1:n},first:function(){return this.get(0)},flatten:function(t){return Oe(this,ge(this,t,!1))},get:function(t,e){return t=y(this,t),t<0||this.size===1/0||void 0!==this.size&&t>this.size?e:this.find(function(e,n){return n===t},void 0,e)},has:function(t){return t=y(this,t),t>=0&&(void 0!==this.size?this.size===1/0||t<this.size:this.indexOf(t)!==-1)},interpose:function(t){return Oe(this,me(this,t))},interleave:function(){var t=[this].concat(d(arguments)),e=we(this.toSeq(),x.of,t),n=e.flatten(!0);return e.size&&(n.size=e.size*t.length),Oe(this,n)},last:function(){return this.get(-1)},skipWhile:function(t,e){return Oe(this,ye(this,t,e,!1))},zip:function(){var t=[this].concat(d(arguments));return Oe(this,we(this,nn,t))},zipWith:function(t){var e=d(arguments);return e[0]=this,Oe(this,we(this,t,e))}}),r.prototype[fn]=!0,r.prototype[pn]=!0,$e(o,{get:function(t,e){return this.has(t)?t:e},includes:function(t){return this.has(t)},keySeq:function(){return this.valueSeq()}}),o.prototype.has=ar.includes,$e(D,n.prototype),$e(x,r.prototype),$e(P,o.prototype),$e(et,n.prototype),$e(nt,r.prototype),$e(rt,o.prototype);var cr={Iterable:e,Seq:A,Collection:tt,Map:ft,OrderedMap:Zt,List:Ut,Stack:We,Set:je,OrderedSet:He,Record:Pe,Range:Q,Repeat:J,is:X,fromJS:q};return cr})},function(t,e,n){var r,o;/*!\n\t  Copyright (c) 2016 Jed Watson.\n\t  Licensed under the MIT License (MIT), see\n\t  http://jedwatson.github.io/classnames\n\t*/\n!function(){\"use strict\";function n(){for(var t=[],e=0;e<arguments.length;e++){var r=arguments[e];if(r){var o=typeof r;if(\"string\"===o||\"number\"===o)t.push(r);else if(Array.isArray(r))t.push(n.apply(null,r));else if(\"object\"===o)for(var u in r)i.call(r,u)&&r[u]&&t.push(u)}}return t.join(\" \")}var i={}.hasOwnProperty;\"undefined\"!=typeof t&&t.exports?t.exports=n:(r=[],o=function(){return n}.apply(e,r),!(void 0!==o&&(t.exports=o)))}()},function(t,e,n){(function(e){\"use strict\";var r=n(12),o=n(130),i=n(65),u=n(5),a=n(148),s=n(169),c=n(32),l=n(174),f=n(175),p=n(3),d=n(186),h=n(80),y=n(188),_=n(190),g=u.OrderedSet,v={replaceText:function(t,e,n,o,i){var u=h(t,e),a=y(u,e),s=r.create({style:o||g(),entity:i||null});return f(a,a.getSelectionAfter(),n,s)},insertText:function(t,n,r,o,i){return n.isCollapsed()?void 0:\"production\"!==e.env.NODE_ENV?p(!1,\"Target range must be collapsed for `insertText`.\"):p(!1),v.replaceText(t,n,r,o,i)},moveText:function(t,e,n){var r=c(t,e),o=v.removeRange(t,e,\"backward\");return v.replaceWithFragment(o,n,r)},replaceWithFragment:function(t,e,n){var r=h(t,e),o=y(r,e);return l(o,o.getSelectionAfter(),n)},removeRange:function(t,e,n){var r=void 0,o=void 0,u=void 0,a=void 0;e.getIsBackward()&&(e=e.merge({anchorKey:e.getFocusKey(),anchorOffset:e.getFocusOffset(),focusKey:e.getAnchorKey(),focusOffset:e.getAnchorOffset(),isBackward:!1})),r=e.getAnchorKey(),o=e.getFocusKey(),u=t.getBlockForKey(r),a=t.getBlockForKey(o);var c=e.getStartOffset(),l=e.getEndOffset(),f=u.getEntityAt(c),p=a.getEntityAt(l-1);if(r===o&&f&&f===p){var d=s(t.getEntityMap(),u,a,e,n);return y(t,d)}var _=e;i.draft_segmented_entities_behavior&&(_=s(t.getEntityMap(),u,a,e,n));var g=h(t,_);return y(g,_)},splitBlock:function(t,e){var n=h(t,e),r=y(n,e);return _(r,r.getSelectionAfter())},applyInlineStyle:function(t,e,n){return o.add(t,e,n)},removeInlineStyle:function(t,e,n){return o.remove(t,e,n)},setBlockType:function(t,e,n){return d(t,e,function(t){return t.merge({type:n,depth:0})})},setBlockData:function(t,e,n){return d(t,e,function(t){return t.merge({data:n})})},mergeBlockData:function(t,e,n){return d(t,e,function(t){return t.merge({data:t.getData().merge(n)})})},applyEntity:function(t,e,n){var r=h(t,e);return a(r,e,n)}};t.exports=v}).call(e,n(2))},function(t,e){t.exports=ReactRouter},function(t,e,n){\"use strict\";function r(t){return\"[object Array]\"===w.call(t)}function o(t){return\"[object ArrayBuffer]\"===w.call(t)}function i(t){return\"undefined\"!=typeof FormData&&t instanceof FormData}function u(t){var e;return e=\"undefined\"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer}function a(t){return\"string\"==typeof t}function s(t){return\"number\"==typeof t}function c(t){return\"undefined\"==typeof t}function l(t){return null!==t&&\"object\"==typeof t}function f(t){return\"[object Date]\"===w.call(t)}function p(t){return\"[object File]\"===w.call(t)}function d(t){return\"[object Blob]\"===w.call(t)}function h(t){return\"[object Function]\"===w.call(t)}function y(t){return l(t)&&h(t.pipe)}function _(t){return\"undefined\"!=typeof URLSearchParams&&t instanceof URLSearchParams}function g(t){return t.replace(/^\\s*/,\"\").replace(/\\s*$/,\"\")}function v(){return\"undefined\"!=typeof window&&\"undefined\"!=typeof document&&\"function\"==typeof document.createElement}function m(t,e){if(null!==t&&\"undefined\"!=typeof t)if(\"object\"==typeof t||r(t)||(t=[t]),r(t))for(var n=0,o=t.length;n<o;n++)e.call(null,t[n],n,t);else for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.call(null,t[i],i,t)}function b(){function t(t,n){\"object\"==typeof e[n]&&\"object\"==typeof t?e[n]=b(e[n],t):e[n]=t}for(var e={},n=0,r=arguments.length;n<r;n++)m(arguments[n],t);return e}function E(t,e,n){return m(e,function(e,r){n&&\"function\"==typeof e?t[r]=S(e,n):t[r]=e}),t}var S=n(60),w=Object.prototype.toString;t.exports={isArray:r,isArrayBuffer:o,isFormData:i,isArrayBufferView:u,isString:a,isNumber:s,isObject:l,isUndefined:c,isDate:f,isFile:p,isBlob:d,isFunction:h,isStream:y,isURLSearchParams:_,isStandardBrowserEnv:v,forEach:m,merge:b,extend:E,trim:g}},function(t,e){\"use strict\";var n=function(t){if(null!=t)return t;throw new Error(\"Got unexpected null or undefined\")};t.exports=n},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(6),l=t(c),f=n(193),p=t(f),d=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){var t=this.props,e=t.type,n=t.fullWidth,r=t.noUppercase,o=t.className,i=t.style,u=t.onClick,a=t.alwaysActive;return s.default.createElement(\"button\",{onClick:u,className:(0,l.default)(p.default.button,p.default.buttonDefaults,p.default[e],n&&p.default.fullWidth,r&&p.default.noUppercase,a&&p.default.alwaysActive,o),style:i},this.props.children)}}]),e}(a.Component);d.defaultProps={type:\"default\",fullWidth:!1,noUppercase:!1,alwaysActive:!1,className:\"\",style:{},onClick:function(){}},d.propTypes={type:s.default.PropTypes.oneOf([\"default\",\"outline\"]),fullWidth:s.default.PropTypes.bool,noUppercase:s.default.PropTypes.bool,alwaysActive:s.default.PropTypes.bool,className:s.default.PropTypes.string,style:s.default.PropTypes.object,onClick:s.default.PropTypes.func},e.default=d}).call(this)}finally{}},function(t,e,n){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var u=n(5),a=u.Map,s=u.OrderedSet,c=u.Record,l=s(),f={style:l,entity:null},p=c(f),d=function(t){function e(){return r(this,e),o(this,t.apply(this,arguments))}return i(e,t),e.prototype.getStyle=function(){return this.get(\"style\")},e.prototype.getEntity=function(){return this.get(\"entity\")},e.prototype.hasStyle=function(t){return this.getStyle().includes(t)},e.applyStyle=function(t,n){var r=t.set(\"style\",t.getStyle().add(n));return e.create(r)},e.removeStyle=function(t,n){var r=t.set(\"style\",t.getStyle().remove(n));return e.create(r)},e.applyEntity=function(t,n){var r=t.getEntity()===n?t:t.set(\"entity\",n);return e.create(r)},e.create=function(t){if(!t)return h;var n={style:l,entity:null},r=a(n).merge(t),o=y.get(r);if(o)return o;var i=new e(r);return y=y.set(r,i),i},e}(p),h=new d,y=a([[a(f),h]]);d.EMPTY=h,t.exports=d},function(t,e){\"use strict\";function n(){for(var t=void 0;void 0===t||r.hasOwnProperty(t)||!isNaN(+t);)t=Math.floor(Math.random()*o).toString(32);return r[t]=!0,t}var r={},o=Math.pow(2,24);t.exports=n},function(t,e){t.exports={largeBP:\"(min-width: 1100px)\",mediumBP:\"(min-width: 769px) and (max-width: 1099px)\",smallBP:\"(max-width: 768px)\",constraintWidth:\"appLayout__constraintWidth___em4FP\",primaryContent:\"appLayout__primaryContent___9dnWU\",secondaryContent:\"appLayout__secondaryContent___1AiAM\",showOnMediumBP:\"appLayout__showOnMediumBP___2u4Og\"}},function(t,e,n){\"use strict\";function r(t,e,n,r){if(t===n)return!0;if(!n.startsWith(t))return!1;var o=n.slice(t.length);return!!e&&(o=r?r(o):o,u.contains(o,e))}function o(t){return\"Windows\"===i.platformName?t.replace(/^\\s*NT/,\"\"):t}var i=n(221),u=n(222),a=n(236),s=n(237),c={isBrowser:function(t){return r(i.browserName,i.browserFullVersion,t)},isBrowserArchitecture:function(t){return r(i.browserArchitecture,null,t)},isDevice:function(t){return r(i.deviceName,null,t)},isEngine:function(t){return r(i.engineName,i.engineVersion,t)},isPlatform:function(t){return r(i.platformName,i.platformFullVersion,t,o)},isPlatformArchitecture:function(t){return r(i.platformArchitecture,null,t)}};t.exports=a(c,s)},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0,e.connect=e.connectAdvanced=e.createProvider=e.Provider=void 0;var o=n(296),i=r(o),u=n(101),a=r(u),s=n(297),c=r(s);e.Provider=i.default,e.createProvider=o.createProvider,e.connectAdvanced=a.default,e.connect=c.default},function(t,e){/*\n\tobject-assign\n\t(c) Sindre Sorhus\n\t@license MIT\n\t*/\n\"use strict\";function n(t){if(null===t||void 0===t)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(t)}function r(){try{if(!Object.assign)return!1;var t=new String(\"abc\");if(t[5]=\"de\",\"5\"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e[\"_\"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map(function(t){return e[t]});if(\"0123456789\"!==r.join(\"\"))return!1;var o={};return\"abcdefghijklmnopqrst\".split(\"\").forEach(function(t){o[t]=t}),\"abcdefghijklmnopqrst\"===Object.keys(Object.assign({},o)).join(\"\")}catch(t){return!1}}var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,u=Object.prototype.propertyIsEnumerable;t.exports=r()?Object.assign:function(t,e){for(var r,a,s=n(t),c=1;c<arguments.length;c++){r=Object(arguments[c]);for(var l in r)i.call(r,l)&&(s[l]=r[l]);if(o){a=o(r);for(var f=0;f<a.length;f++)u.call(r,a[f])&&(s[a[f]]=r[a[f]])}}return s}},function(t,e,n){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function u(t,e){return t.getStyle()===e.getStyle()}function a(t,e){return t.getEntity()===e.getEntity()}var s=n(5),c=n(31),l=s.List,f=s.Map,p=s.OrderedSet,d=s.Record,h=p(),y={key:\"\",type:\"unstyled\",text:\"\",characterList:l(),depth:0,data:f()},_=d(y),g=function(t){function e(){return r(this,e),o(this,t.apply(this,arguments))}return i(e,t),e.prototype.getKey=function(){return this.get(\"key\")},e.prototype.getType=function(){return this.get(\"type\")},e.prototype.getText=function(){return this.get(\"text\")},e.prototype.getCharacterList=function(){return this.get(\"characterList\")},e.prototype.getLength=function(){return this.getText().length},e.prototype.getDepth=function(){return this.get(\"depth\")},e.prototype.getData=function(){return this.get(\"data\")},e.prototype.getInlineStyleAt=function(t){var e=this.getCharacterList().get(t);return e?e.getStyle():h},e.prototype.getEntityAt=function(t){var e=this.getCharacterList().get(t);return e?e.getEntity():null},e.prototype.findStyleRanges=function(t,e){c(this.getCharacterList(),u,t,e)},e.prototype.findEntityRanges=function(t,e){c(this.getCharacterList(),a,t,e)},e}(_);t.exports=g},function(t,e,n){(function(e){\"use strict\";function r(t){return p<=t&&t<=y}function o(t,n){if(0<=n&&n<t.length?void 0:\"production\"!==e.env.NODE_ENV?f(!1,\"isSurrogatePair: Invalid index %s for string length %s.\",n,t.length):f(!1),n+1===t.length)return!1;var r=t.charCodeAt(n),o=t.charCodeAt(n+1);return p<=r&&r<=d&&h<=o&&o<=y}function i(t){return _.test(t)}function u(t,e){return 1+r(t.charCodeAt(e))}function a(t){if(!i(t))return t.length;for(var e=0,n=0;n<t.length;n+=u(t,n))e++;return e}function s(t,e,n){if(e=e||0,n=void 0===n?1/0:n||0,!i(t))return t.substr(e,n);var r=t.length;if(r<=0||e>r||n<=0)return\"\";var o=0;if(e>0){for(;e>0&&o<r;e--)o+=u(t,o);if(o>=r)return\"\"}else if(e<0){for(o=r;e<0&&0<o;e++)o-=u(t,o-1);o<0&&(o=0)}var a=r;if(n<r)for(a=o;n>0&&a<r;n--)a+=u(t,a);return t.substring(o,a)}function c(t,e,n){e=e||0,n=void 0===n?1/0:n||0,e<0&&(e=0),n<0&&(n=0);var r=Math.abs(n-e);return e=e<n?e:n,s(t,e,r)}function l(t){for(var e=[],n=0;n<t.length;n+=u(t,n))e.push(t.codePointAt(n));return e}var f=n(3),p=55296,d=56319,h=56320,y=57343,_=/[\\uD800-\\uDFFF]/,g={getCodePoints:l,getUTF16Length:u,hasSurrogateUnit:i,isCodeUnitInSurrogateRange:r,isSurrogatePair:o,strlen:a,substring:c,substr:s};t.exports=g}).call(e,n(2))},function(t,e){t.exports=ReactDOM},function(t,e,n){t.exports=n(106)},function(t,e){\"use strict\";function n(t){return function(){return t}}var r=function(){};r.thatReturns=n,r.thatReturnsFalse=n(!1),r.thatReturnsTrue=n(!0),r.thatReturnsNull=n(null),r.thatReturnsThis=function(){return this},r.thatReturnsArgument=function(t){return t},t.exports=r},function(t,e,n){var r;(function(t,o){(function(){function i(t,e){return t.set(e[0],e[1]),t}function u(t,e){return t.add(e),t}function a(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function s(t,e,n,r){for(var o=-1,i=null==t?0:t.length;++o<i;){var u=t[o];e(r,u,n(u),t)}return r}function c(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&e(t[n],n,t)!==!1;);return t}function l(t,e){for(var n=null==t?0:t.length;n--&&e(t[n],n,t)!==!1;);return t}function f(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function p(t,e){for(var n=-1,r=null==t?0:t.length,o=0,i=[];++n<r;){var u=t[n];e(u,n,t)&&(i[o++]=u)}return i}function d(t,e){var n=null==t?0:t.length;return!!n&&O(t,e,0)>-1}function h(t,e,n){for(var r=-1,o=null==t?0:t.length;++r<o;)if(n(e,t[r]))return!0;return!1}function y(t,e){for(var n=-1,r=null==t?0:t.length,o=Array(r);++n<r;)o[n]=e(t[n],n,t);return o}function _(t,e){for(var n=-1,r=e.length,o=t.length;++n<r;)t[o+n]=e[n];return t}function g(t,e,n,r){var o=-1,i=null==t?0:t.length;for(r&&i&&(n=t[++o]);++o<i;)n=e(n,t[o],o,t);return n}function v(t,e,n,r){var o=null==t?0:t.length;for(r&&o&&(n=t[--o]);o--;)n=e(n,t[o],o,t);return n}function m(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function b(t){return t.split(\"\")}function E(t){return t.match(Ge)||[]}function S(t,e,n){var r;return n(t,function(t,n,o){if(e(t,n,o))return r=n,!1}),r}function w(t,e,n,r){for(var o=t.length,i=n+(r?1:-1);r?i--:++i<o;)if(e(t[i],i,t))return i;return-1}function O(t,e,n){return e===e?J(t,e,n):w(t,C,n)}function T(t,e,n,r){for(var o=n-1,i=t.length;++o<i;)if(r(t[o],e))return o;return-1}function C(t){return t!==t}function I(t,e){var n=null==t?0:t.length;return n?P(t,e)/n:jt}function N(t){return function(e){return null==e?ot:e[t]}}function A(t){return function(e){return null==t?ot:t[e]}}function D(t,e,n,r,o){return o(t,function(t,o,i){n=r?(r=!1,t):e(n,t,o,i)}),n}function x(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}function P(t,e){for(var n,r=-1,o=t.length;++r<o;){var i=e(t[r]);i!==ot&&(n=n===ot?i:n+i)}return n}function k(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function M(t,e){return y(e,function(e){return[e,t[e]]})}function R(t){return function(e){return t(e)}}function F(t,e){return y(e,function(e){return t[e]})}function j(t,e){return t.has(e)}function L(t,e){for(var n=-1,r=t.length;++n<r&&O(e,t[n],0)>-1;);return n}function U(t,e){for(var n=t.length;n--&&O(e,t[n],0)>-1;);return n}function B(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}function K(t){return\"\\\\\"+nr[t]}function H(t,e){return null==t?ot:t[e]}function G(t){return Vn.test(t)}function z(t){return Yn.test(t)}function q(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}function W(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function V(t,e){return function(n){return t(e(n))}}function Y(t,e){for(var n=-1,r=t.length,o=0,i=[];++n<r;){var u=t[n];u!==e&&u!==ft||(t[n]=ft,i[o++]=n)}return i}function X(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function $(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=[t,t]}),n}function J(t,e,n){for(var r=n-1,o=t.length;++r<o;)if(t[r]===e)return r;return-1}function Z(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}function Q(t){return G(t)?et(t):mr(t)}function tt(t){return G(t)?nt(t):b(t)}function et(t){for(var e=qn.lastIndex=0;qn.test(t);)++e;return e}function nt(t){return t.match(qn)||[]}function rt(t){return t.match(Wn)||[]}var ot,it=\"4.17.4\",ut=200,at=\"Unsupported core-js use. Try https://npms.io/search?q=ponyfill.\",st=\"Expected a function\",ct=\"__lodash_hash_undefined__\",lt=500,ft=\"__lodash_placeholder__\",pt=1,dt=2,ht=4,yt=1,_t=2,gt=1,vt=2,mt=4,bt=8,Et=16,St=32,wt=64,Ot=128,Tt=256,Ct=512,It=30,Nt=\"...\",At=800,Dt=16,xt=1,Pt=2,kt=3,Mt=1/0,Rt=9007199254740991,Ft=1.7976931348623157e308,jt=NaN,Lt=4294967295,Ut=Lt-1,Bt=Lt>>>1,Kt=[[\"ary\",Ot],[\"bind\",gt],[\"bindKey\",vt],[\"curry\",bt],[\"curryRight\",Et],[\"flip\",Ct],[\"partial\",St],[\"partialRight\",wt],[\"rearg\",Tt]],Ht=\"[object Arguments]\",Gt=\"[object Array]\",zt=\"[object AsyncFunction]\",qt=\"[object Boolean]\",Wt=\"[object Date]\",Vt=\"[object DOMException]\",Yt=\"[object Error]\",Xt=\"[object Function]\",$t=\"[object GeneratorFunction]\",Jt=\"[object Map]\",Zt=\"[object Number]\",Qt=\"[object Null]\",te=\"[object Object]\",ee=\"[object Promise]\",ne=\"[object Proxy]\",re=\"[object RegExp]\",oe=\"[object Set]\",ie=\"[object String]\",ue=\"[object Symbol]\",ae=\"[object Undefined]\",se=\"[object WeakMap]\",ce=\"[object WeakSet]\",le=\"[object ArrayBuffer]\",fe=\"[object DataView]\",pe=\"[object Float32Array]\",de=\"[object Float64Array]\",he=\"[object Int8Array]\",ye=\"[object Int16Array]\",_e=\"[object Int32Array]\",ge=\"[object Uint8Array]\",ve=\"[object Uint8ClampedArray]\",me=\"[object Uint16Array]\",be=\"[object Uint32Array]\",Ee=/\\b__p \\+= '';/g,Se=/\\b(__p \\+=) '' \\+/g,we=/(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g,Oe=/&(?:amp|lt|gt|quot|#39);/g,Te=/[&<>\"']/g,Ce=RegExp(Oe.source),Ie=RegExp(Te.source),Ne=/<%-([\\s\\S]+?)%>/g,Ae=/<%([\\s\\S]+?)%>/g,De=/<%=([\\s\\S]+?)%>/g,xe=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Pe=/^\\w*$/,ke=/^\\./,Me=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,Re=/[\\\\^$.*+?()[\\]{}|]/g,Fe=RegExp(Re.source),je=/^\\s+|\\s+$/g,Le=/^\\s+/,Ue=/\\s+$/,Be=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,Ke=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,He=/,? & /,Ge=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g,ze=/\\\\(\\\\)?/g,qe=/\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g,We=/\\w*$/,Ve=/^[-+]0x[0-9a-f]+$/i,Ye=/^0b[01]+$/i,Xe=/^\\[object .+?Constructor\\]$/,$e=/^0o[0-7]+$/i,Je=/^(?:0|[1-9]\\d*)$/,Ze=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,Qe=/($^)/,tn=/['\\n\\r\\u2028\\u2029\\\\]/g,en=\"\\\\ud800-\\\\udfff\",nn=\"\\\\u0300-\\\\u036f\",rn=\"\\\\ufe20-\\\\ufe2f\",on=\"\\\\u20d0-\\\\u20ff\",un=nn+rn+on,an=\"\\\\u2700-\\\\u27bf\",sn=\"a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff\",cn=\"\\\\xac\\\\xb1\\\\xd7\\\\xf7\",ln=\"\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\",fn=\"\\\\u2000-\\\\u206f\",pn=\" \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",dn=\"A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\",hn=\"\\\\ufe0e\\\\ufe0f\",yn=cn+ln+fn+pn,_n=\"['’]\",gn=\"[\"+en+\"]\",vn=\"[\"+yn+\"]\",mn=\"[\"+un+\"]\",bn=\"\\\\d+\",En=\"[\"+an+\"]\",Sn=\"[\"+sn+\"]\",wn=\"[^\"+en+yn+bn+an+sn+dn+\"]\",On=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",Tn=\"(?:\"+mn+\"|\"+On+\")\",Cn=\"[^\"+en+\"]\",In=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",Nn=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",An=\"[\"+dn+\"]\",Dn=\"\\\\u200d\",xn=\"(?:\"+Sn+\"|\"+wn+\")\",Pn=\"(?:\"+An+\"|\"+wn+\")\",kn=\"(?:\"+_n+\"(?:d|ll|m|re|s|t|ve))?\",Mn=\"(?:\"+_n+\"(?:D|LL|M|RE|S|T|VE))?\",Rn=Tn+\"?\",Fn=\"[\"+hn+\"]?\",jn=\"(?:\"+Dn+\"(?:\"+[Cn,In,Nn].join(\"|\")+\")\"+Fn+Rn+\")*\",Ln=\"\\\\d*(?:(?:1st|2nd|3rd|(?![123])\\\\dth)\\\\b)\",Un=\"\\\\d*(?:(?:1ST|2ND|3RD|(?![123])\\\\dTH)\\\\b)\",Bn=Fn+Rn+jn,Kn=\"(?:\"+[En,In,Nn].join(\"|\")+\")\"+Bn,Hn=\"(?:\"+[Cn+mn+\"?\",mn,In,Nn,gn].join(\"|\")+\")\",Gn=RegExp(_n,\"g\"),zn=RegExp(mn,\"g\"),qn=RegExp(On+\"(?=\"+On+\")|\"+Hn+Bn,\"g\"),Wn=RegExp([An+\"?\"+Sn+\"+\"+kn+\"(?=\"+[vn,An,\"$\"].join(\"|\")+\")\",Pn+\"+\"+Mn+\"(?=\"+[vn,An+xn,\"$\"].join(\"|\")+\")\",An+\"?\"+xn+\"+\"+kn,An+\"+\"+Mn,Un,Ln,bn,Kn].join(\"|\"),\"g\"),Vn=RegExp(\"[\"+Dn+en+un+hn+\"]\"),Yn=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Xn=[\"Array\",\"Buffer\",\"DataView\",\"Date\",\"Error\",\"Float32Array\",\"Float64Array\",\"Function\",\"Int8Array\",\"Int16Array\",\"Int32Array\",\"Map\",\"Math\",\"Object\",\"Promise\",\"RegExp\",\"Set\",\"String\",\"Symbol\",\"TypeError\",\"Uint8Array\",\"Uint8ClampedArray\",\"Uint16Array\",\"Uint32Array\",\"WeakMap\",\"_\",\"clearTimeout\",\"isFinite\",\"parseInt\",\"setTimeout\"],$n=-1,Jn={};Jn[pe]=Jn[de]=Jn[he]=Jn[ye]=Jn[_e]=Jn[ge]=Jn[ve]=Jn[me]=Jn[be]=!0,Jn[Ht]=Jn[Gt]=Jn[le]=Jn[qt]=Jn[fe]=Jn[Wt]=Jn[Yt]=Jn[Xt]=Jn[Jt]=Jn[Zt]=Jn[te]=Jn[re]=Jn[oe]=Jn[ie]=Jn[se]=!1;var Zn={};Zn[Ht]=Zn[Gt]=Zn[le]=Zn[fe]=Zn[qt]=Zn[Wt]=Zn[pe]=Zn[de]=Zn[he]=Zn[ye]=Zn[_e]=Zn[Jt]=Zn[Zt]=Zn[te]=Zn[re]=Zn[oe]=Zn[ie]=Zn[ue]=Zn[ge]=Zn[ve]=Zn[me]=Zn[be]=!0,Zn[Yt]=Zn[Xt]=Zn[se]=!1;var Qn={\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"Ç\":\"C\",\"ç\":\"c\",\"Ð\":\"D\",\"ð\":\"d\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"Ñ\":\"N\",\"ñ\":\"n\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"Ý\":\"Y\",\"ý\":\"y\",\"ÿ\":\"y\",\"Æ\":\"Ae\",\"æ\":\"ae\",\"Þ\":\"Th\",\"þ\":\"th\",\"ß\":\"ss\",\"Ā\":\"A\",\"Ă\":\"A\",\"Ą\":\"A\",\"ā\":\"a\",\"ă\":\"a\",\"ą\":\"a\",\"Ć\":\"C\",\"Ĉ\":\"C\",\"Ċ\":\"C\",\"Č\":\"C\",\"ć\":\"c\",\"ĉ\":\"c\",\"ċ\":\"c\",\"č\":\"c\",\"Ď\":\"D\",\"Đ\":\"D\",\"ď\":\"d\",\"đ\":\"d\",\"Ē\":\"E\",\"Ĕ\":\"E\",\"Ė\":\"E\",\"Ę\":\"E\",\"Ě\":\"E\",\"ē\":\"e\",\"ĕ\":\"e\",\"ė\":\"e\",\"ę\":\"e\",\"ě\":\"e\",\"Ĝ\":\"G\",\"Ğ\":\"G\",\"Ġ\":\"G\",\"Ģ\":\"G\",\"ĝ\":\"g\",\"ğ\":\"g\",\"ġ\":\"g\",\"ģ\":\"g\",\"Ĥ\":\"H\",\"Ħ\":\"H\",\"ĥ\":\"h\",\"ħ\":\"h\",\"Ĩ\":\"I\",\"Ī\":\"I\",\"Ĭ\":\"I\",\"Į\":\"I\",\"İ\":\"I\",\"ĩ\":\"i\",\"ī\":\"i\",\"ĭ\":\"i\",\"į\":\"i\",\"ı\":\"i\",\"Ĵ\":\"J\",\"ĵ\":\"j\",\"Ķ\":\"K\",\"ķ\":\"k\",\"ĸ\":\"k\",\"Ĺ\":\"L\",\"Ļ\":\"L\",\"Ľ\":\"L\",\"Ŀ\":\"L\",\"Ł\":\"L\",\"ĺ\":\"l\",\"ļ\":\"l\",\"ľ\":\"l\",\"ŀ\":\"l\",\"ł\":\"l\",\"Ń\":\"N\",\"Ņ\":\"N\",\"Ň\":\"N\",\"Ŋ\":\"N\",\"ń\":\"n\",\"ņ\":\"n\",\"ň\":\"n\",\"ŋ\":\"n\",\"Ō\":\"O\",\"Ŏ\":\"O\",\"Ő\":\"O\",\"ō\":\"o\",\"ŏ\":\"o\",\"ő\":\"o\",\"Ŕ\":\"R\",\"Ŗ\":\"R\",\"Ř\":\"R\",\"ŕ\":\"r\",\"ŗ\":\"r\",\"ř\":\"r\",\"Ś\":\"S\",\"Ŝ\":\"S\",\"Ş\":\"S\",\"Š\":\"S\",\"ś\":\"s\",\"ŝ\":\"s\",\"ş\":\"s\",\"š\":\"s\",\"Ţ\":\"T\",\"Ť\":\"T\",\"Ŧ\":\"T\",\"ţ\":\"t\",\"ť\":\"t\",\"ŧ\":\"t\",\"Ũ\":\"U\",\"Ū\":\"U\",\"Ŭ\":\"U\",\"Ů\":\"U\",\"Ű\":\"U\",\"Ų\":\"U\",\"ũ\":\"u\",\"ū\":\"u\",\"ŭ\":\"u\",\"ů\":\"u\",\"ű\":\"u\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"Ż\":\"Z\",\"Ž\":\"Z\",\"ź\":\"z\",\"ż\":\"z\",\"ž\":\"z\",\"Ĳ\":\"IJ\",\"ĳ\":\"ij\",\"Œ\":\"Oe\",\"œ\":\"oe\",\"ŉ\":\"'n\",\"ſ\":\"s\"},tr={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},er={\"&amp;\":\"&\",\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"',\"&#39;\":\"'\"},nr={\"\\\\\":\"\\\\\",\"'\":\"'\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},rr=parseFloat,or=parseInt,ir=\"object\"==typeof t&&t&&t.Object===Object&&t,ur=\"object\"==typeof self&&self&&self.Object===Object&&self,ar=ir||ur||Function(\"return this\")(),sr=\"object\"==typeof e&&e&&!e.nodeType&&e,cr=sr&&\"object\"==typeof o&&o&&!o.nodeType&&o,lr=cr&&cr.exports===sr,fr=lr&&ir.process,pr=function(){try{return fr&&fr.binding&&fr.binding(\"util\")}catch(t){}}(),dr=pr&&pr.isArrayBuffer,hr=pr&&pr.isDate,yr=pr&&pr.isMap,_r=pr&&pr.isRegExp,gr=pr&&pr.isSet,vr=pr&&pr.isTypedArray,mr=N(\"length\"),br=A(Qn),Er=A(tr),Sr=A(er),wr=function t(e){function n(t){if(cs(t)&&!Ep(t)&&!(t instanceof b)){if(t instanceof o)return t;if(bl.call(t,\"__wrapped__\"))return uu(t)}return new o(t)}function r(){}function o(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=ot}function b(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Lt,this.__views__=[]}function A(){var t=new b(this.__wrapped__);return t.__actions__=Ko(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ko(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ko(this.__views__),t}function J(){if(this.__filtered__){var t=new b(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function et(){var t=this.__wrapped__.value(),e=this.__dir__,n=Ep(t),r=e<0,o=n?t.length:0,i=Di(0,o,this.__views__),u=i.start,a=i.end,s=a-u,c=r?a:u-1,l=this.__iteratees__,f=l.length,p=0,d=$l(s,this.__takeCount__);if(!n||!r&&o==s&&d==s)return So(t,this.__actions__);var h=[];t:for(;s--&&p<d;){c+=e;for(var y=-1,_=t[c];++y<f;){var g=l[y],v=g.iteratee,m=g.type,b=v(_);if(m==Pt)_=b;else if(!b){if(m==xt)continue t;break t}}h[p++]=_}return h}function nt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function Ge(){this.__data__=af?af(null):{},this.size=0}function en(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function nn(t){var e=this.__data__;if(af){var n=e[t];return n===ct?ot:n}return bl.call(e,t)?e[t]:ot}function rn(t){var e=this.__data__;return af?e[t]!==ot:bl.call(e,t)}function on(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=af&&e===ot?ct:e,this}function un(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function an(){this.__data__=[],this.size=0}function sn(t){var e=this.__data__,n=kn(e,t);if(n<0)return!1;var r=e.length-1;return n==r?e.pop():Ml.call(e,n,1),--this.size,!0}function cn(t){var e=this.__data__,n=kn(e,t);return n<0?ot:e[n][1]}function ln(t){return kn(this.__data__,t)>-1}function fn(t,e){var n=this.__data__,r=kn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function pn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function dn(){this.size=0,this.__data__={hash:new nt,map:new(nf||un),string:new nt}}function hn(t){var e=Ci(this,t).delete(t);return this.size-=e?1:0,e}function yn(t){return Ci(this,t).get(t)}function _n(t){return Ci(this,t).has(t)}function gn(t,e){var n=Ci(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}function vn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new pn;++e<n;)this.add(t[e])}function mn(t){return this.__data__.set(t,ct),this}function bn(t){return this.__data__.has(t)}function En(t){var e=this.__data__=new un(t);this.size=e.size}function Sn(){this.__data__=new un,this.size=0}function wn(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}function On(t){return this.__data__.get(t)}function Tn(t){return this.__data__.has(t)}function Cn(t,e){var n=this.__data__;if(n instanceof un){var r=n.__data__;if(!nf||r.length<ut-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new pn(r)}return n.set(t,e),this.size=n.size,this}function In(t,e){var n=Ep(t),r=!n&&bp(t),o=!n&&!r&&wp(t),i=!n&&!r&&!o&&Np(t),u=n||r||o||i,a=u?k(t.length,dl):[],s=a.length;for(var c in t)!e&&!bl.call(t,c)||u&&(\"length\"==c||o&&(\"offset\"==c||\"parent\"==c)||i&&(\"buffer\"==c||\"byteLength\"==c||\"byteOffset\"==c)||Li(c,s))||a.push(c);return a}function Nn(t){var e=t.length;return e?t[no(0,e-1)]:ot}function An(t,e){return nu(Ko(t),Un(e,0,t.length))}function Dn(t){return nu(Ko(t))}function xn(t,e,n){(n===ot||Xa(t[e],n))&&(n!==ot||e in t)||jn(t,e,n)}function Pn(t,e,n){var r=t[e];bl.call(t,e)&&Xa(r,n)&&(n!==ot||e in t)||jn(t,e,n)}function kn(t,e){for(var n=t.length;n--;)if(Xa(t[n][0],e))return n;return-1}function Mn(t,e,n,r){return mf(t,function(t,o,i){e(r,t,n(t),i)}),r}function Rn(t,e){return t&&Ho(e,zs(e),t)}function Fn(t,e){return t&&Ho(e,qs(e),t)}function jn(t,e,n){\"__proto__\"==e&&Ll?Ll(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Ln(t,e){for(var n=-1,r=e.length,o=ul(r),i=null==t;++n<r;)o[n]=i?ot:Ks(t,e[n]);return o}function Un(t,e,n){return t===t&&(n!==ot&&(t=t<=n?t:n),e!==ot&&(t=t>=e?t:e)),t}function Bn(t,e,n,r,o,i){var u,a=e&pt,s=e&dt,l=e&ht;if(n&&(u=o?n(t,r,o,i):n(t)),u!==ot)return u;if(!ss(t))return t;var f=Ep(t);if(f){if(u=ki(t),!a)return Ko(t,u)}else{var p=xf(t),d=p==Xt||p==$t;if(wp(t))return Ao(t,a);if(p==te||p==Ht||d&&!o){if(u=s||d?{}:Mi(t),!a)return s?zo(t,Fn(u,t)):Go(t,Rn(u,t))}else{if(!Zn[p])return o?t:{};u=Ri(t,p,Bn,a)}}i||(i=new En);var h=i.get(t);if(h)return h;i.set(t,u);var y=l?s?Si:Ei:s?qs:zs,_=f?ot:y(t);return c(_||t,function(r,o){_&&(o=r,r=t[o]),Pn(u,o,Bn(r,e,n,o,t,i))}),u}function Kn(t){var e=zs(t);return function(n){return Hn(n,t,e)}}function Hn(t,e,n){var r=n.length;if(null==t)return!r;for(t=fl(t);r--;){var o=n[r],i=e[o],u=t[o];if(u===ot&&!(o in t)||!i(u))return!1}return!0}function qn(t,e,n){if(\"function\"!=typeof t)throw new hl(st);return Mf(function(){t.apply(ot,n)},e)}function Wn(t,e,n,r){var o=-1,i=d,u=!0,a=t.length,s=[],c=e.length;if(!a)return s;n&&(e=y(e,R(n))),r?(i=h,u=!1):e.length>=ut&&(i=j,u=!1,e=new vn(e));t:for(;++o<a;){var l=t[o],f=null==n?l:n(l);if(l=r||0!==l?l:0,u&&f===f){for(var p=c;p--;)if(e[p]===f)continue t;s.push(l)}else i(e,f,r)||s.push(l)}return s}function Vn(t,e){var n=!0;return mf(t,function(t,r,o){return n=!!e(t,r,o)}),n}function Yn(t,e,n){for(var r=-1,o=t.length;++r<o;){var i=t[r],u=e(i);if(null!=u&&(a===ot?u===u&&!bs(u):n(u,a)))var a=u,s=i}return s}function Qn(t,e,n,r){var o=t.length;for(n=Cs(n),n<0&&(n=-n>o?0:o+n),r=r===ot||r>o?o:Cs(r),r<0&&(r+=o),r=n>r?0:Is(r);n<r;)t[n++]=e;return t}function tr(t,e){var n=[];return mf(t,function(t,r,o){e(t,r,o)&&n.push(t)}),n}function er(t,e,n,r,o){var i=-1,u=t.length;for(n||(n=ji),o||(o=[]);++i<u;){var a=t[i];e>0&&n(a)?e>1?er(a,e-1,n,r,o):_(o,a):r||(o[o.length]=a)}return o}function nr(t,e){return t&&Ef(t,e,zs)}function ir(t,e){return t&&Sf(t,e,zs)}function ur(t,e){return p(e,function(e){return is(t[e])})}function sr(t,e){e=Io(e,t);for(var n=0,r=e.length;null!=t&&n<r;)t=t[ru(e[n++])];return n&&n==r?t:ot}function cr(t,e,n){var r=e(t);return Ep(t)?r:_(r,n(t))}function fr(t){return null==t?t===ot?ae:Qt:jl&&jl in fl(t)?Ai(t):$i(t)}function pr(t,e){return t>e}function mr(t,e){return null!=t&&bl.call(t,e)}function wr(t,e){return null!=t&&e in fl(t)}function Tr(t,e,n){return t>=$l(e,n)&&t<Xl(e,n)}function Cr(t,e,n){for(var r=n?h:d,o=t[0].length,i=t.length,u=i,a=ul(i),s=1/0,c=[];u--;){var l=t[u];u&&e&&(l=y(l,R(e))),s=$l(l.length,s),a[u]=!n&&(e||o>=120&&l.length>=120)?new vn(u&&l):ot}l=t[0];var f=-1,p=a[0];t:for(;++f<o&&c.length<s;){var _=l[f],g=e?e(_):_;if(_=n||0!==_?_:0,!(p?j(p,g):r(c,g,n))){for(u=i;--u;){var v=a[u];if(!(v?j(v,g):r(t[u],g,n)))continue t}p&&p.push(g),c.push(_)}}return c}function Ir(t,e,n,r){return nr(t,function(t,o,i){e(r,n(t),o,i)}),r}function Nr(t,e,n){e=Io(e,t),t=Zi(t,e);var r=null==t?t:t[ru(Tu(e))];return null==r?ot:a(r,t,n)}function Ar(t){return cs(t)&&fr(t)==Ht}function Dr(t){return cs(t)&&fr(t)==le}function xr(t){return cs(t)&&fr(t)==Wt}function Pr(t,e,n,r,o){return t===e||(null==t||null==e||!cs(t)&&!cs(e)?t!==t&&e!==e:kr(t,e,n,r,Pr,o))}function kr(t,e,n,r,o,i){var u=Ep(t),a=Ep(e),s=u?Gt:xf(t),c=a?Gt:xf(e);s=s==Ht?te:s,c=c==Ht?te:c;var l=s==te,f=c==te,p=s==c;if(p&&wp(t)){if(!wp(e))return!1;u=!0,l=!1}if(p&&!l)return i||(i=new En),u||Np(t)?gi(t,e,n,r,o,i):vi(t,e,s,n,r,o,i);if(!(n&yt)){var d=l&&bl.call(t,\"__wrapped__\"),h=f&&bl.call(e,\"__wrapped__\");if(d||h){var y=d?t.value():t,_=h?e.value():e;return i||(i=new En),o(y,_,n,r,i)}}return!!p&&(i||(i=new En),mi(t,e,n,r,o,i))}function Mr(t){return cs(t)&&xf(t)==Jt}function Rr(t,e,n,r){var o=n.length,i=o,u=!r;if(null==t)return!i;for(t=fl(t);o--;){var a=n[o];if(u&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++o<i;){a=n[o];var s=a[0],c=t[s],l=a[1];if(u&&a[2]){if(c===ot&&!(s in t))return!1}else{var f=new En;if(r)var p=r(c,l,s,t,e,f);if(!(p===ot?Pr(l,c,yt|_t,r,f):p))return!1}}return!0}function Fr(t){if(!ss(t)||Gi(t))return!1;var e=is(t)?Cl:Xe;return e.test(ou(t))}function jr(t){return cs(t)&&fr(t)==re}function Lr(t){return cs(t)&&xf(t)==oe}function Ur(t){return cs(t)&&as(t.length)&&!!Jn[fr(t)]}function Br(t){return\"function\"==typeof t?t:null==t?Mc:\"object\"==typeof t?Ep(t)?Wr(t[0],t[1]):qr(t):Hc(t)}function Kr(t){if(!zi(t))return Yl(t);var e=[];for(var n in fl(t))bl.call(t,n)&&\"constructor\"!=n&&e.push(n);return e}function Hr(t){if(!ss(t))return Xi(t);var e=zi(t),n=[];for(var r in t)(\"constructor\"!=r||!e&&bl.call(t,r))&&n.push(r);return n}function Gr(t,e){return t<e}function zr(t,e){var n=-1,r=$a(t)?ul(t.length):[];return mf(t,function(t,o,i){r[++n]=e(t,o,i)}),r}function qr(t){var e=Ii(t);return 1==e.length&&e[0][2]?Wi(e[0][0],e[0][1]):function(n){return n===t||Rr(n,t,e)}}function Wr(t,e){return Bi(t)&&qi(e)?Wi(ru(t),e):function(n){var r=Ks(n,t);return r===ot&&r===e?Gs(n,t):Pr(e,r,yt|_t)}}function Vr(t,e,n,r,o){t!==e&&Ef(e,function(i,u){if(ss(i))o||(o=new En),Yr(t,e,u,n,Vr,r,o);else{var a=r?r(t[u],i,u+\"\",t,e,o):ot;a===ot&&(a=i),xn(t,u,a)}},qs)}function Yr(t,e,n,r,o,i,u){var a=t[n],s=e[n],c=u.get(s);if(c)return void xn(t,n,c);var l=i?i(a,s,n+\"\",t,e,u):ot,f=l===ot;if(f){var p=Ep(s),d=!p&&wp(s),h=!p&&!d&&Np(s);l=s,p||d||h?Ep(a)?l=a:Ja(a)?l=Ko(a):d?(f=!1,l=Ao(s,!0)):h?(f=!1,l=Fo(s,!0)):l=[]:gs(s)||bp(s)?(l=a,bp(a)?l=As(a):(!ss(a)||r&&is(a))&&(l=Mi(s))):f=!1}f&&(u.set(s,l),o(l,s,r,i,u),u.delete(s)),xn(t,n,l)}function Xr(t,e){var n=t.length;if(n)return e+=e<0?n:0,Li(e,n)?t[e]:ot}function $r(t,e,n){var r=-1;e=y(e.length?e:[Mc],R(Ti()));var o=zr(t,function(t,n,o){var i=y(e,function(e){return e(t)});return{criteria:i,index:++r,value:t}});return x(o,function(t,e){return Lo(t,e,n)})}function Jr(t,e){return Zr(t,e,function(e,n){return Gs(t,n)})}function Zr(t,e,n){for(var r=-1,o=e.length,i={};++r<o;){var u=e[r],a=sr(t,u);n(a,u)&&so(i,Io(u,t),a)}return i}function Qr(t){return function(e){return sr(e,t)}}function to(t,e,n,r){var o=r?T:O,i=-1,u=e.length,a=t;for(t===e&&(e=Ko(e)),n&&(a=y(t,R(n)));++i<u;)for(var s=0,c=e[i],l=n?n(c):c;(s=o(a,l,s,r))>-1;)a!==t&&Ml.call(a,s,1),Ml.call(t,s,1);return t}function eo(t,e){for(var n=t?e.length:0,r=n-1;n--;){var o=e[n];if(n==r||o!==i){var i=o;Li(o)?Ml.call(t,o,1):mo(t,o)}}return t}function no(t,e){return t+Gl(Ql()*(e-t+1))}function ro(t,e,n,r){for(var o=-1,i=Xl(Hl((e-t)/(n||1)),0),u=ul(i);i--;)u[r?i:++o]=t,t+=n;return u}function oo(t,e){var n=\"\";if(!t||e<1||e>Rt)return n;do e%2&&(n+=t),e=Gl(e/2),e&&(t+=t);while(e);return n}function io(t,e){return Rf(Ji(t,e,Mc),t+\"\")}function uo(t){return Nn(rc(t))}function ao(t,e){var n=rc(t);return nu(n,Un(e,0,n.length))}function so(t,e,n,r){if(!ss(t))return t;e=Io(e,t);for(var o=-1,i=e.length,u=i-1,a=t;null!=a&&++o<i;){var s=ru(e[o]),c=n;if(o!=u){var l=a[s];c=r?r(l,s,a):ot,c===ot&&(c=ss(l)?l:Li(e[o+1])?[]:{})}Pn(a,s,c),a=a[s]}return t}function co(t){return nu(rc(t))}function lo(t,e,n){var r=-1,o=t.length;e<0&&(e=-e>o?0:o+e),n=n>o?o:n,n<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var i=ul(o);++r<o;)i[r]=t[r+e];return i}function fo(t,e){var n;return mf(t,function(t,r,o){return n=e(t,r,o),!n}),!!n}function po(t,e,n){var r=0,o=null==t?r:t.length;if(\"number\"==typeof e&&e===e&&o<=Bt){for(;r<o;){var i=r+o>>>1,u=t[i];null!==u&&!bs(u)&&(n?u<=e:u<e)?r=i+1:o=i}return o}return ho(t,e,Mc,n)}function ho(t,e,n,r){e=n(e);for(var o=0,i=null==t?0:t.length,u=e!==e,a=null===e,s=bs(e),c=e===ot;o<i;){var l=Gl((o+i)/2),f=n(t[l]),p=f!==ot,d=null===f,h=f===f,y=bs(f);if(u)var _=r||h;else _=c?h&&(r||p):a?h&&p&&(r||!d):s?h&&p&&!d&&(r||!y):!d&&!y&&(r?f<=e:f<e);_?o=l+1:i=l}return $l(i,Ut)}function yo(t,e){for(var n=-1,r=t.length,o=0,i=[];++n<r;){var u=t[n],a=e?e(u):u;if(!n||!Xa(a,s)){var s=a;i[o++]=0===u?0:u}}return i}function _o(t){return\"number\"==typeof t?t:bs(t)?jt:+t}function go(t){if(\"string\"==typeof t)return t;if(Ep(t))return y(t,go)+\"\";if(bs(t))return gf?gf.call(t):\"\";var e=t+\"\";return\"0\"==e&&1/t==-Mt?\"-0\":e}function vo(t,e,n){var r=-1,o=d,i=t.length,u=!0,a=[],s=a;if(n)u=!1,o=h;else if(i>=ut){var c=e?null:If(t);if(c)return X(c);u=!1,o=j,s=new vn}else s=e?[]:a;t:for(;++r<i;){var l=t[r],f=e?e(l):l;if(l=n||0!==l?l:0,u&&f===f){for(var p=s.length;p--;)if(s[p]===f)continue t;e&&s.push(f),a.push(l)}else o(s,f,n)||(s!==a&&s.push(f),a.push(l))}return a}function mo(t,e){return e=Io(e,t),t=Zi(t,e),null==t||delete t[ru(Tu(e))]}function bo(t,e,n,r){return so(t,e,n(sr(t,e)),r)}function Eo(t,e,n,r){for(var o=t.length,i=r?o:-1;(r?i--:++i<o)&&e(t[i],i,t););return n?lo(t,r?0:i,r?i+1:o):lo(t,r?i+1:0,r?o:i)}function So(t,e){var n=t;return n instanceof b&&(n=n.value()),g(e,function(t,e){return e.func.apply(e.thisArg,_([t],e.args))},n)}function wo(t,e,n){var r=t.length;if(r<2)return r?vo(t[0]):[];for(var o=-1,i=ul(r);++o<r;)for(var u=t[o],a=-1;++a<r;)a!=o&&(i[o]=Wn(i[o]||u,t[a],e,n));return vo(er(i,1),e,n)}function Oo(t,e,n){for(var r=-1,o=t.length,i=e.length,u={};++r<o;){var a=r<i?e[r]:ot;n(u,t[r],a)}return u}function To(t){return Ja(t)?t:[]}function Co(t){return\"function\"==typeof t?t:Mc}function Io(t,e){return Ep(t)?t:Bi(t,e)?[t]:Ff(xs(t))}function No(t,e,n){var r=t.length;return n=n===ot?r:n,!e&&n>=r?t:lo(t,e,n)}function Ao(t,e){if(e)return t.slice();var n=t.length,r=Dl?Dl(n):new t.constructor(n);return t.copy(r),r}function Do(t){var e=new t.constructor(t.byteLength);return new Al(e).set(new Al(t)),e}function xo(t,e){var n=e?Do(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}function Po(t,e,n){var r=e?n(W(t),pt):W(t);return g(r,i,new t.constructor)}function ko(t){var e=new t.constructor(t.source,We.exec(t));return e.lastIndex=t.lastIndex,e}function Mo(t,e,n){var r=e?n(X(t),pt):X(t);return g(r,u,new t.constructor)}function Ro(t){return _f?fl(_f.call(t)):{}}function Fo(t,e){var n=e?Do(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function jo(t,e){if(t!==e){var n=t!==ot,r=null===t,o=t===t,i=bs(t),u=e!==ot,a=null===e,s=e===e,c=bs(e);if(!a&&!c&&!i&&t>e||i&&u&&s&&!a&&!c||r&&u&&s||!n&&s||!o)return 1;if(!r&&!i&&!c&&t<e||c&&n&&o&&!r&&!i||a&&n&&o||!u&&o||!s)return-1}return 0}function Lo(t,e,n){for(var r=-1,o=t.criteria,i=e.criteria,u=o.length,a=n.length;++r<u;){var s=jo(o[r],i[r]);if(s){if(r>=a)return s;var c=n[r];return s*(\"desc\"==c?-1:1)}}return t.index-e.index}function Uo(t,e,n,r){for(var o=-1,i=t.length,u=n.length,a=-1,s=e.length,c=Xl(i-u,0),l=ul(s+c),f=!r;++a<s;)l[a]=e[a];for(;++o<u;)(f||o<i)&&(l[n[o]]=t[o]);for(;c--;)l[a++]=t[o++];return l}function Bo(t,e,n,r){for(var o=-1,i=t.length,u=-1,a=n.length,s=-1,c=e.length,l=Xl(i-a,0),f=ul(l+c),p=!r;++o<l;)f[o]=t[o];for(var d=o;++s<c;)f[d+s]=e[s];for(;++u<a;)(p||o<i)&&(f[d+n[u]]=t[o++]);return f}function Ko(t,e){var n=-1,r=t.length;for(e||(e=ul(r));++n<r;)e[n]=t[n];return e}function Ho(t,e,n,r){var o=!n;n||(n={});for(var i=-1,u=e.length;++i<u;){var a=e[i],s=r?r(n[a],t[a],a,n,t):ot;s===ot&&(s=t[a]),o?jn(n,a,s):Pn(n,a,s)}return n}function Go(t,e){return Ho(t,Af(t),e)}function zo(t,e){return Ho(t,Df(t),e)}function qo(t,e){return function(n,r){var o=Ep(n)?s:Mn,i=e?e():{};return o(n,t,Ti(r,2),i)}}function Wo(t){return io(function(e,n){var r=-1,o=n.length,i=o>1?n[o-1]:ot,u=o>2?n[2]:ot;for(i=t.length>3&&\"function\"==typeof i?(o--,i):ot,u&&Ui(n[0],n[1],u)&&(i=o<3?ot:i,o=1),e=fl(e);++r<o;){var a=n[r];a&&t(e,a,r,i)}return e})}function Vo(t,e){return function(n,r){if(null==n)return n;if(!$a(n))return t(n,r);for(var o=n.length,i=e?o:-1,u=fl(n);(e?i--:++i<o)&&r(u[i],i,u)!==!1;);return n}}function Yo(t){return function(e,n,r){for(var o=-1,i=fl(e),u=r(e),a=u.length;a--;){var s=u[t?a:++o];if(n(i[s],s,i)===!1)break}return e}}function Xo(t,e,n){function r(){var e=this&&this!==ar&&this instanceof r?i:t;return e.apply(o?n:this,arguments)}var o=e&gt,i=Zo(t);return r}function $o(t){return function(e){e=xs(e);var n=G(e)?tt(e):ot,r=n?n[0]:e.charAt(0),o=n?No(n,1).join(\"\"):e.slice(1);return r[t]()+o}}function Jo(t){return function(e){return g(Ac(cc(e).replace(Gn,\"\")),t,\"\")}}function Zo(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=vf(t.prototype),r=t.apply(n,e);return ss(r)?r:n}}function Qo(t,e,n){function r(){for(var i=arguments.length,u=ul(i),s=i,c=Oi(r);s--;)u[s]=arguments[s];var l=i<3&&u[0]!==c&&u[i-1]!==c?[]:Y(u,c);if(i-=l.length,i<n)return li(t,e,ni,r.placeholder,ot,u,l,ot,ot,n-i);var f=this&&this!==ar&&this instanceof r?o:t;return a(f,this,u)}var o=Zo(t);return r}function ti(t){return function(e,n,r){var o=fl(e);if(!$a(e)){var i=Ti(n,3);e=zs(e),n=function(t){return i(o[t],t,o)}}var u=t(e,n,r);return u>-1?o[i?e[u]:u]:ot}}function ei(t){return bi(function(e){var n=e.length,r=n,i=o.prototype.thru;for(t&&e.reverse();r--;){var u=e[r];if(\"function\"!=typeof u)throw new hl(st);if(i&&!a&&\"wrapper\"==wi(u))var a=new o([],!0)}for(r=a?r:n;++r<n;){u=e[r];var s=wi(u),c=\"wrapper\"==s?Nf(u):ot;a=c&&Hi(c[0])&&c[1]==(Ot|bt|St|Tt)&&!c[4].length&&1==c[9]?a[wi(c[0])].apply(a,c[3]):1==u.length&&Hi(u)?a[s]():a.thru(u)}return function(){var t=arguments,r=t[0];if(a&&1==t.length&&Ep(r))return a.plant(r).value();\nfor(var o=0,i=n?e[o].apply(this,t):r;++o<n;)i=e[o].call(this,i);return i}})}function ni(t,e,n,r,o,i,u,a,s,c){function l(){for(var g=arguments.length,v=ul(g),m=g;m--;)v[m]=arguments[m];if(h)var b=Oi(l),E=B(v,b);if(r&&(v=Uo(v,r,o,h)),i&&(v=Bo(v,i,u,h)),g-=E,h&&g<c){var S=Y(v,b);return li(t,e,ni,l.placeholder,n,v,S,a,s,c-g)}var w=p?n:this,O=d?w[t]:t;return g=v.length,a?v=Qi(v,a):y&&g>1&&v.reverse(),f&&s<g&&(v.length=s),this&&this!==ar&&this instanceof l&&(O=_||Zo(O)),O.apply(w,v)}var f=e&Ot,p=e&gt,d=e&vt,h=e&(bt|Et),y=e&Ct,_=d?ot:Zo(t);return l}function ri(t,e){return function(n,r){return Ir(n,t,e(r),{})}}function oi(t,e){return function(n,r){var o;if(n===ot&&r===ot)return e;if(n!==ot&&(o=n),r!==ot){if(o===ot)return r;\"string\"==typeof n||\"string\"==typeof r?(n=go(n),r=go(r)):(n=_o(n),r=_o(r)),o=t(n,r)}return o}}function ii(t){return bi(function(e){return e=y(e,R(Ti())),io(function(n){var r=this;return t(e,function(t){return a(t,r,n)})})})}function ui(t,e){e=e===ot?\" \":go(e);var n=e.length;if(n<2)return n?oo(e,t):e;var r=oo(e,Hl(t/Q(e)));return G(e)?No(tt(r),0,t).join(\"\"):r.slice(0,t)}function ai(t,e,n,r){function o(){for(var e=-1,s=arguments.length,c=-1,l=r.length,f=ul(l+s),p=this&&this!==ar&&this instanceof o?u:t;++c<l;)f[c]=r[c];for(;s--;)f[c++]=arguments[++e];return a(p,i?n:this,f)}var i=e&gt,u=Zo(t);return o}function si(t){return function(e,n,r){return r&&\"number\"!=typeof r&&Ui(e,n,r)&&(n=r=ot),e=Ts(e),n===ot?(n=e,e=0):n=Ts(n),r=r===ot?e<n?1:-1:Ts(r),ro(e,n,r,t)}}function ci(t){return function(e,n){return\"string\"==typeof e&&\"string\"==typeof n||(e=Ns(e),n=Ns(n)),t(e,n)}}function li(t,e,n,r,o,i,u,a,s,c){var l=e&bt,f=l?u:ot,p=l?ot:u,d=l?i:ot,h=l?ot:i;e|=l?St:wt,e&=~(l?wt:St),e&mt||(e&=~(gt|vt));var y=[t,e,o,d,f,h,p,a,s,c],_=n.apply(ot,y);return Hi(t)&&kf(_,y),_.placeholder=r,tu(_,t,e)}function fi(t){var e=ll[t];return function(t,n){if(t=Ns(t),n=null==n?0:$l(Cs(n),292)){var r=(xs(t)+\"e\").split(\"e\"),o=e(r[0]+\"e\"+(+r[1]+n));return r=(xs(o)+\"e\").split(\"e\"),+(r[0]+\"e\"+(+r[1]-n))}return e(t)}}function pi(t){return function(e){var n=xf(e);return n==Jt?W(e):n==oe?$(e):M(e,t(e))}}function di(t,e,n,r,o,i,u,a){var s=e&vt;if(!s&&\"function\"!=typeof t)throw new hl(st);var c=r?r.length:0;if(c||(e&=~(St|wt),r=o=ot),u=u===ot?u:Xl(Cs(u),0),a=a===ot?a:Cs(a),c-=o?o.length:0,e&wt){var l=r,f=o;r=o=ot}var p=s?ot:Nf(t),d=[t,e,n,r,o,l,f,i,u,a];if(p&&Yi(d,p),t=d[0],e=d[1],n=d[2],r=d[3],o=d[4],a=d[9]=d[9]===ot?s?0:t.length:Xl(d[9]-c,0),!a&&e&(bt|Et)&&(e&=~(bt|Et)),e&&e!=gt)h=e==bt||e==Et?Qo(t,e,a):e!=St&&e!=(gt|St)||o.length?ni.apply(ot,d):ai(t,e,n,r);else var h=Xo(t,e,n);var y=p?wf:kf;return tu(y(h,d),t,e)}function hi(t,e,n,r){return t===ot||Xa(t,gl[n])&&!bl.call(r,n)?e:t}function yi(t,e,n,r,o,i){return ss(t)&&ss(e)&&(i.set(e,t),Vr(t,e,ot,yi,i),i.delete(e)),t}function _i(t){return gs(t)?ot:t}function gi(t,e,n,r,o,i){var u=n&yt,a=t.length,s=e.length;if(a!=s&&!(u&&s>a))return!1;var c=i.get(t);if(c&&i.get(e))return c==e;var l=-1,f=!0,p=n&_t?new vn:ot;for(i.set(t,e),i.set(e,t);++l<a;){var d=t[l],h=e[l];if(r)var y=u?r(h,d,l,e,t,i):r(d,h,l,t,e,i);if(y!==ot){if(y)continue;f=!1;break}if(p){if(!m(e,function(t,e){if(!j(p,e)&&(d===t||o(d,t,n,r,i)))return p.push(e)})){f=!1;break}}else if(d!==h&&!o(d,h,n,r,i)){f=!1;break}}return i.delete(t),i.delete(e),f}function vi(t,e,n,r,o,i,u){switch(n){case fe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case le:return!(t.byteLength!=e.byteLength||!i(new Al(t),new Al(e)));case qt:case Wt:case Zt:return Xa(+t,+e);case Yt:return t.name==e.name&&t.message==e.message;case re:case ie:return t==e+\"\";case Jt:var a=W;case oe:var s=r&yt;if(a||(a=X),t.size!=e.size&&!s)return!1;var c=u.get(t);if(c)return c==e;r|=_t,u.set(t,e);var l=gi(a(t),a(e),r,o,i,u);return u.delete(t),l;case ue:if(_f)return _f.call(t)==_f.call(e)}return!1}function mi(t,e,n,r,o,i){var u=n&yt,a=Ei(t),s=a.length,c=Ei(e),l=c.length;if(s!=l&&!u)return!1;for(var f=s;f--;){var p=a[f];if(!(u?p in e:bl.call(e,p)))return!1}var d=i.get(t);if(d&&i.get(e))return d==e;var h=!0;i.set(t,e),i.set(e,t);for(var y=u;++f<s;){p=a[f];var _=t[p],g=e[p];if(r)var v=u?r(g,_,p,e,t,i):r(_,g,p,t,e,i);if(!(v===ot?_===g||o(_,g,n,r,i):v)){h=!1;break}y||(y=\"constructor\"==p)}if(h&&!y){var m=t.constructor,b=e.constructor;m!=b&&\"constructor\"in t&&\"constructor\"in e&&!(\"function\"==typeof m&&m instanceof m&&\"function\"==typeof b&&b instanceof b)&&(h=!1)}return i.delete(t),i.delete(e),h}function bi(t){return Rf(Ji(t,ot,gu),t+\"\")}function Ei(t){return cr(t,zs,Af)}function Si(t){return cr(t,qs,Df)}function wi(t){for(var e=t.name+\"\",n=cf[e],r=bl.call(cf,e)?n.length:0;r--;){var o=n[r],i=o.func;if(null==i||i==t)return o.name}return e}function Oi(t){var e=bl.call(n,\"placeholder\")?n:t;return e.placeholder}function Ti(){var t=n.iteratee||Rc;return t=t===Rc?Br:t,arguments.length?t(arguments[0],arguments[1]):t}function Ci(t,e){var n=t.__data__;return Ki(e)?n[\"string\"==typeof e?\"string\":\"hash\"]:n.map}function Ii(t){for(var e=zs(t),n=e.length;n--;){var r=e[n],o=t[r];e[n]=[r,o,qi(o)]}return e}function Ni(t,e){var n=H(t,e);return Fr(n)?n:ot}function Ai(t){var e=bl.call(t,jl),n=t[jl];try{t[jl]=ot;var r=!0}catch(t){}var o=wl.call(t);return r&&(e?t[jl]=n:delete t[jl]),o}function Di(t,e,n){for(var r=-1,o=n.length;++r<o;){var i=n[r],u=i.size;switch(i.type){case\"drop\":t+=u;break;case\"dropRight\":e-=u;break;case\"take\":e=$l(e,t+u);break;case\"takeRight\":t=Xl(t,e-u)}}return{start:t,end:e}}function xi(t){var e=t.match(Ke);return e?e[1].split(He):[]}function Pi(t,e,n){e=Io(e,t);for(var r=-1,o=e.length,i=!1;++r<o;){var u=ru(e[r]);if(!(i=null!=t&&n(t,u)))break;t=t[u]}return i||++r!=o?i:(o=null==t?0:t.length,!!o&&as(o)&&Li(u,o)&&(Ep(t)||bp(t)))}function ki(t){var e=t.length,n=t.constructor(e);return e&&\"string\"==typeof t[0]&&bl.call(t,\"index\")&&(n.index=t.index,n.input=t.input),n}function Mi(t){return\"function\"!=typeof t.constructor||zi(t)?{}:vf(xl(t))}function Ri(t,e,n,r){var o=t.constructor;switch(e){case le:return Do(t);case qt:case Wt:return new o(+t);case fe:return xo(t,r);case pe:case de:case he:case ye:case _e:case ge:case ve:case me:case be:return Fo(t,r);case Jt:return Po(t,r,n);case Zt:case ie:return new o(t);case re:return ko(t);case oe:return Mo(t,r,n);case ue:return Ro(t)}}function Fi(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(n>1?\"& \":\"\")+e[r],e=e.join(n>2?\", \":\" \"),t.replace(Be,\"{\\n/* [wrapped with \"+e+\"] */\\n\")}function ji(t){return Ep(t)||bp(t)||!!(Rl&&t&&t[Rl])}function Li(t,e){return e=null==e?Rt:e,!!e&&(\"number\"==typeof t||Je.test(t))&&t>-1&&t%1==0&&t<e}function Ui(t,e,n){if(!ss(n))return!1;var r=typeof e;return!!(\"number\"==r?$a(n)&&Li(e,n.length):\"string\"==r&&e in n)&&Xa(n[e],t)}function Bi(t,e){if(Ep(t))return!1;var n=typeof t;return!(\"number\"!=n&&\"symbol\"!=n&&\"boolean\"!=n&&null!=t&&!bs(t))||(Pe.test(t)||!xe.test(t)||null!=e&&t in fl(e))}function Ki(t){var e=typeof t;return\"string\"==e||\"number\"==e||\"symbol\"==e||\"boolean\"==e?\"__proto__\"!==t:null===t}function Hi(t){var e=wi(t),r=n[e];if(\"function\"!=typeof r||!(e in b.prototype))return!1;if(t===r)return!0;var o=Nf(r);return!!o&&t===o[0]}function Gi(t){return!!Sl&&Sl in t}function zi(t){var e=t&&t.constructor,n=\"function\"==typeof e&&e.prototype||gl;return t===n}function qi(t){return t===t&&!ss(t)}function Wi(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==ot||t in fl(n)))}}function Vi(t){var e=Ra(t,function(t){return n.size===lt&&n.clear(),t}),n=e.cache;return e}function Yi(t,e){var n=t[1],r=e[1],o=n|r,i=o<(gt|vt|Ot),u=r==Ot&&n==bt||r==Ot&&n==Tt&&t[7].length<=e[8]||r==(Ot|Tt)&&e[7].length<=e[8]&&n==bt;if(!i&&!u)return t;r&gt&&(t[2]=e[2],o|=n&gt?0:mt);var a=e[3];if(a){var s=t[3];t[3]=s?Uo(s,a,e[4]):a,t[4]=s?Y(t[3],ft):e[4]}return a=e[5],a&&(s=t[5],t[5]=s?Bo(s,a,e[6]):a,t[6]=s?Y(t[5],ft):e[6]),a=e[7],a&&(t[7]=a),r&Ot&&(t[8]=null==t[8]?e[8]:$l(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=o,t}function Xi(t){var e=[];if(null!=t)for(var n in fl(t))e.push(n);return e}function $i(t){return wl.call(t)}function Ji(t,e,n){return e=Xl(e===ot?t.length-1:e,0),function(){for(var r=arguments,o=-1,i=Xl(r.length-e,0),u=ul(i);++o<i;)u[o]=r[e+o];o=-1;for(var s=ul(e+1);++o<e;)s[o]=r[o];return s[e]=n(u),a(t,this,s)}}function Zi(t,e){return e.length<2?t:sr(t,lo(e,0,-1))}function Qi(t,e){for(var n=t.length,r=$l(e.length,n),o=Ko(t);r--;){var i=e[r];t[r]=Li(i,n)?o[i]:ot}return t}function tu(t,e,n){var r=e+\"\";return Rf(t,Fi(r,iu(xi(r),n)))}function eu(t){var e=0,n=0;return function(){var r=Jl(),o=Dt-(r-n);if(n=r,o>0){if(++e>=At)return arguments[0]}else e=0;return t.apply(ot,arguments)}}function nu(t,e){var n=-1,r=t.length,o=r-1;for(e=e===ot?r:e;++n<e;){var i=no(n,o),u=t[i];t[i]=t[n],t[n]=u}return t.length=e,t}function ru(t){if(\"string\"==typeof t||bs(t))return t;var e=t+\"\";return\"0\"==e&&1/t==-Mt?\"-0\":e}function ou(t){if(null!=t){try{return ml.call(t)}catch(t){}try{return t+\"\"}catch(t){}}return\"\"}function iu(t,e){return c(Kt,function(n){var r=\"_.\"+n[0];e&n[1]&&!d(t,r)&&t.push(r)}),t.sort()}function uu(t){if(t instanceof b)return t.clone();var e=new o(t.__wrapped__,t.__chain__);return e.__actions__=Ko(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}function au(t,e,n){e=(n?Ui(t,e,n):e===ot)?1:Xl(Cs(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var o=0,i=0,u=ul(Hl(r/e));o<r;)u[i++]=lo(t,o,o+=e);return u}function su(t){for(var e=-1,n=null==t?0:t.length,r=0,o=[];++e<n;){var i=t[e];i&&(o[r++]=i)}return o}function cu(){var t=arguments.length;if(!t)return[];for(var e=ul(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return _(Ep(n)?Ko(n):[n],er(e,1))}function lu(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===ot?1:Cs(e),lo(t,e<0?0:e,r)):[]}function fu(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===ot?1:Cs(e),e=r-e,lo(t,0,e<0?0:e)):[]}function pu(t,e){return t&&t.length?Eo(t,Ti(e,3),!0,!0):[]}function du(t,e){return t&&t.length?Eo(t,Ti(e,3),!0):[]}function hu(t,e,n,r){var o=null==t?0:t.length;return o?(n&&\"number\"!=typeof n&&Ui(t,e,n)&&(n=0,r=o),Qn(t,e,n,r)):[]}function yu(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var o=null==n?0:Cs(n);return o<0&&(o=Xl(r+o,0)),w(t,Ti(e,3),o)}function _u(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var o=r-1;return n!==ot&&(o=Cs(n),o=n<0?Xl(r+o,0):$l(o,r-1)),w(t,Ti(e,3),o,!0)}function gu(t){var e=null==t?0:t.length;return e?er(t,1):[]}function vu(t){var e=null==t?0:t.length;return e?er(t,Mt):[]}function mu(t,e){var n=null==t?0:t.length;return n?(e=e===ot?1:Cs(e),er(t,e)):[]}function bu(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var o=t[e];r[o[0]]=o[1]}return r}function Eu(t){return t&&t.length?t[0]:ot}function Su(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var o=null==n?0:Cs(n);return o<0&&(o=Xl(r+o,0)),O(t,e,o)}function wu(t){var e=null==t?0:t.length;return e?lo(t,0,-1):[]}function Ou(t,e){return null==t?\"\":Vl.call(t,e)}function Tu(t){var e=null==t?0:t.length;return e?t[e-1]:ot}function Cu(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var o=r;return n!==ot&&(o=Cs(n),o=o<0?Xl(r+o,0):$l(o,r-1)),e===e?Z(t,e,o):w(t,C,o,!0)}function Iu(t,e){return t&&t.length?Xr(t,Cs(e)):ot}function Nu(t,e){return t&&t.length&&e&&e.length?to(t,e):t}function Au(t,e,n){return t&&t.length&&e&&e.length?to(t,e,Ti(n,2)):t}function Du(t,e,n){return t&&t.length&&e&&e.length?to(t,e,ot,n):t}function xu(t,e){var n=[];if(!t||!t.length)return n;var r=-1,o=[],i=t.length;for(e=Ti(e,3);++r<i;){var u=t[r];e(u,r,t)&&(n.push(u),o.push(r))}return eo(t,o),n}function Pu(t){return null==t?t:tf.call(t)}function ku(t,e,n){var r=null==t?0:t.length;return r?(n&&\"number\"!=typeof n&&Ui(t,e,n)?(e=0,n=r):(e=null==e?0:Cs(e),n=n===ot?r:Cs(n)),lo(t,e,n)):[]}function Mu(t,e){return po(t,e)}function Ru(t,e,n){return ho(t,e,Ti(n,2))}function Fu(t,e){var n=null==t?0:t.length;if(n){var r=po(t,e);if(r<n&&Xa(t[r],e))return r}return-1}function ju(t,e){return po(t,e,!0)}function Lu(t,e,n){return ho(t,e,Ti(n,2),!0)}function Uu(t,e){var n=null==t?0:t.length;if(n){var r=po(t,e,!0)-1;if(Xa(t[r],e))return r}return-1}function Bu(t){return t&&t.length?yo(t):[]}function Ku(t,e){return t&&t.length?yo(t,Ti(e,2)):[]}function Hu(t){var e=null==t?0:t.length;return e?lo(t,1,e):[]}function Gu(t,e,n){return t&&t.length?(e=n||e===ot?1:Cs(e),lo(t,0,e<0?0:e)):[]}function zu(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===ot?1:Cs(e),e=r-e,lo(t,e<0?0:e,r)):[]}function qu(t,e){return t&&t.length?Eo(t,Ti(e,3),!1,!0):[]}function Wu(t,e){return t&&t.length?Eo(t,Ti(e,3)):[]}function Vu(t){return t&&t.length?vo(t):[]}function Yu(t,e){return t&&t.length?vo(t,Ti(e,2)):[]}function Xu(t,e){return e=\"function\"==typeof e?e:ot,t&&t.length?vo(t,ot,e):[]}function $u(t){if(!t||!t.length)return[];var e=0;return t=p(t,function(t){if(Ja(t))return e=Xl(t.length,e),!0}),k(e,function(e){return y(t,N(e))})}function Ju(t,e){if(!t||!t.length)return[];var n=$u(t);return null==e?n:y(n,function(t){return a(e,ot,t)})}function Zu(t,e){return Oo(t||[],e||[],Pn)}function Qu(t,e){return Oo(t||[],e||[],so)}function ta(t){var e=n(t);return e.__chain__=!0,e}function ea(t,e){return e(t),t}function na(t,e){return e(t)}function ra(){return ta(this)}function oa(){return new o(this.value(),this.__chain__)}function ia(){this.__values__===ot&&(this.__values__=Os(this.value()));var t=this.__index__>=this.__values__.length,e=t?ot:this.__values__[this.__index__++];return{done:t,value:e}}function ua(){return this}function aa(t){for(var e,n=this;n instanceof r;){var o=uu(n);o.__index__=0,o.__values__=ot,e?i.__wrapped__=o:e=o;var i=o;n=n.__wrapped__}return i.__wrapped__=t,e}function sa(){var t=this.__wrapped__;if(t instanceof b){var e=t;return this.__actions__.length&&(e=new b(this)),e=e.reverse(),e.__actions__.push({func:na,args:[Pu],thisArg:ot}),new o(e,this.__chain__)}return this.thru(Pu)}function ca(){return So(this.__wrapped__,this.__actions__)}function la(t,e,n){var r=Ep(t)?f:Vn;return n&&Ui(t,e,n)&&(e=ot),r(t,Ti(e,3))}function fa(t,e){var n=Ep(t)?p:tr;return n(t,Ti(e,3))}function pa(t,e){return er(va(t,e),1)}function da(t,e){return er(va(t,e),Mt)}function ha(t,e,n){return n=n===ot?1:Cs(n),er(va(t,e),n)}function ya(t,e){var n=Ep(t)?c:mf;return n(t,Ti(e,3))}function _a(t,e){var n=Ep(t)?l:bf;return n(t,Ti(e,3))}function ga(t,e,n,r){t=$a(t)?t:rc(t),n=n&&!r?Cs(n):0;var o=t.length;return n<0&&(n=Xl(o+n,0)),ms(t)?n<=o&&t.indexOf(e,n)>-1:!!o&&O(t,e,n)>-1}function va(t,e){var n=Ep(t)?y:zr;return n(t,Ti(e,3))}function ma(t,e,n,r){return null==t?[]:(Ep(e)||(e=null==e?[]:[e]),n=r?ot:n,Ep(n)||(n=null==n?[]:[n]),$r(t,e,n))}function ba(t,e,n){var r=Ep(t)?g:D,o=arguments.length<3;return r(t,Ti(e,4),n,o,mf)}function Ea(t,e,n){var r=Ep(t)?v:D,o=arguments.length<3;return r(t,Ti(e,4),n,o,bf)}function Sa(t,e){var n=Ep(t)?p:tr;return n(t,Fa(Ti(e,3)))}function wa(t){var e=Ep(t)?Nn:uo;return e(t)}function Oa(t,e,n){e=(n?Ui(t,e,n):e===ot)?1:Cs(e);var r=Ep(t)?An:ao;return r(t,e)}function Ta(t){var e=Ep(t)?Dn:co;return e(t)}function Ca(t){if(null==t)return 0;if($a(t))return ms(t)?Q(t):t.length;var e=xf(t);return e==Jt||e==oe?t.size:Kr(t).length}function Ia(t,e,n){var r=Ep(t)?m:fo;return n&&Ui(t,e,n)&&(e=ot),r(t,Ti(e,3))}function Na(t,e){if(\"function\"!=typeof e)throw new hl(st);return t=Cs(t),function(){if(--t<1)return e.apply(this,arguments)}}function Aa(t,e,n){return e=n?ot:e,e=t&&null==e?t.length:e,di(t,Ot,ot,ot,ot,ot,e)}function Da(t,e){var n;if(\"function\"!=typeof e)throw new hl(st);return t=Cs(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=ot),n}}function xa(t,e,n){e=n?ot:e;var r=di(t,bt,ot,ot,ot,ot,ot,e);return r.placeholder=xa.placeholder,r}function Pa(t,e,n){e=n?ot:e;var r=di(t,Et,ot,ot,ot,ot,ot,e);return r.placeholder=Pa.placeholder,r}function ka(t,e,n){function r(e){var n=p,r=d;return p=d=ot,v=e,y=t.apply(r,n)}function o(t){return v=t,_=Mf(a,e),m?r(t):y}function i(t){var n=t-g,r=t-v,o=e-n;return b?$l(o,h-r):o}function u(t){var n=t-g,r=t-v;return g===ot||n>=e||n<0||b&&r>=h}function a(){var t=cp();return u(t)?s(t):void(_=Mf(a,i(t)))}function s(t){return _=ot,E&&p?r(t):(p=d=ot,y)}function c(){_!==ot&&Cf(_),v=0,p=g=d=_=ot}function l(){return _===ot?y:s(cp())}function f(){var t=cp(),n=u(t);if(p=arguments,d=this,g=t,n){if(_===ot)return o(g);if(b)return _=Mf(a,e),r(g)}return _===ot&&(_=Mf(a,e)),y}var p,d,h,y,_,g,v=0,m=!1,b=!1,E=!0;if(\"function\"!=typeof t)throw new hl(st);return e=Ns(e)||0,ss(n)&&(m=!!n.leading,b=\"maxWait\"in n,h=b?Xl(Ns(n.maxWait)||0,e):h,E=\"trailing\"in n?!!n.trailing:E),f.cancel=c,f.flush=l,f}function Ma(t){return di(t,Ct)}function Ra(t,e){if(\"function\"!=typeof t||null!=e&&\"function\"!=typeof e)throw new hl(st);var n=function(){var r=arguments,o=e?e.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var u=t.apply(this,r);return n.cache=i.set(o,u)||i,u};return n.cache=new(Ra.Cache||pn),n}function Fa(t){if(\"function\"!=typeof t)throw new hl(st);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}function ja(t){return Da(2,t)}function La(t,e){if(\"function\"!=typeof t)throw new hl(st);return e=e===ot?e:Cs(e),io(t,e)}function Ua(t,e){if(\"function\"!=typeof t)throw new hl(st);return e=null==e?0:Xl(Cs(e),0),io(function(n){var r=n[e],o=No(n,0,e);return r&&_(o,r),a(t,this,o)})}function Ba(t,e,n){var r=!0,o=!0;if(\"function\"!=typeof t)throw new hl(st);return ss(n)&&(r=\"leading\"in n?!!n.leading:r,o=\"trailing\"in n?!!n.trailing:o),ka(t,e,{leading:r,maxWait:e,trailing:o})}function Ka(t){return Aa(t,1)}function Ha(t,e){return yp(Co(e),t)}function Ga(){if(!arguments.length)return[];var t=arguments[0];return Ep(t)?t:[t]}function za(t){return Bn(t,ht)}function qa(t,e){return e=\"function\"==typeof e?e:ot,Bn(t,ht,e)}function Wa(t){return Bn(t,pt|ht)}function Va(t,e){return e=\"function\"==typeof e?e:ot,Bn(t,pt|ht,e)}function Ya(t,e){return null==e||Hn(t,e,zs(e))}function Xa(t,e){return t===e||t!==t&&e!==e}function $a(t){return null!=t&&as(t.length)&&!is(t)}function Ja(t){return cs(t)&&$a(t)}function Za(t){return t===!0||t===!1||cs(t)&&fr(t)==qt}function Qa(t){return cs(t)&&1===t.nodeType&&!gs(t)}function ts(t){if(null==t)return!0;if($a(t)&&(Ep(t)||\"string\"==typeof t||\"function\"==typeof t.splice||wp(t)||Np(t)||bp(t)))return!t.length;var e=xf(t);if(e==Jt||e==oe)return!t.size;if(zi(t))return!Kr(t).length;for(var n in t)if(bl.call(t,n))return!1;return!0}function es(t,e){return Pr(t,e)}function ns(t,e,n){n=\"function\"==typeof n?n:ot;var r=n?n(t,e):ot;return r===ot?Pr(t,e,ot,n):!!r}function rs(t){if(!cs(t))return!1;var e=fr(t);return e==Yt||e==Vt||\"string\"==typeof t.message&&\"string\"==typeof t.name&&!gs(t)}function os(t){return\"number\"==typeof t&&Wl(t)}function is(t){if(!ss(t))return!1;var e=fr(t);return e==Xt||e==$t||e==zt||e==ne}function us(t){return\"number\"==typeof t&&t==Cs(t)}function as(t){return\"number\"==typeof t&&t>-1&&t%1==0&&t<=Rt}function ss(t){var e=typeof t;return null!=t&&(\"object\"==e||\"function\"==e)}function cs(t){return null!=t&&\"object\"==typeof t}function ls(t,e){return t===e||Rr(t,e,Ii(e))}function fs(t,e,n){return n=\"function\"==typeof n?n:ot,Rr(t,e,Ii(e),n)}function ps(t){return _s(t)&&t!=+t}function ds(t){if(Pf(t))throw new sl(at);return Fr(t)}function hs(t){return null===t}function ys(t){return null==t}function _s(t){return\"number\"==typeof t||cs(t)&&fr(t)==Zt}function gs(t){if(!cs(t)||fr(t)!=te)return!1;var e=xl(t);if(null===e)return!0;var n=bl.call(e,\"constructor\")&&e.constructor;return\"function\"==typeof n&&n instanceof n&&ml.call(n)==Ol}function vs(t){return us(t)&&t>=-Rt&&t<=Rt}function ms(t){return\"string\"==typeof t||!Ep(t)&&cs(t)&&fr(t)==ie}function bs(t){return\"symbol\"==typeof t||cs(t)&&fr(t)==ue}function Es(t){return t===ot}function Ss(t){return cs(t)&&xf(t)==se}function ws(t){return cs(t)&&fr(t)==ce}function Os(t){if(!t)return[];if($a(t))return ms(t)?tt(t):Ko(t);if(Fl&&t[Fl])return q(t[Fl]());var e=xf(t),n=e==Jt?W:e==oe?X:rc;return n(t)}function Ts(t){if(!t)return 0===t?t:0;if(t=Ns(t),t===Mt||t===-Mt){var e=t<0?-1:1;return e*Ft}return t===t?t:0}function Cs(t){var e=Ts(t),n=e%1;return e===e?n?e-n:e:0}function Is(t){return t?Un(Cs(t),0,Lt):0}function Ns(t){if(\"number\"==typeof t)return t;if(bs(t))return jt;if(ss(t)){var e=\"function\"==typeof t.valueOf?t.valueOf():t;t=ss(e)?e+\"\":e}if(\"string\"!=typeof t)return 0===t?t:+t;t=t.replace(je,\"\");var n=Ye.test(t);return n||$e.test(t)?or(t.slice(2),n?2:8):Ve.test(t)?jt:+t}function As(t){return Ho(t,qs(t))}function Ds(t){return t?Un(Cs(t),-Rt,Rt):0===t?t:0}function xs(t){return null==t?\"\":go(t)}function Ps(t,e){var n=vf(t);return null==e?n:Rn(n,e)}function ks(t,e){return S(t,Ti(e,3),nr)}function Ms(t,e){return S(t,Ti(e,3),ir)}function Rs(t,e){return null==t?t:Ef(t,Ti(e,3),qs)}function Fs(t,e){return null==t?t:Sf(t,Ti(e,3),qs)}function js(t,e){return t&&nr(t,Ti(e,3))}function Ls(t,e){return t&&ir(t,Ti(e,3))}function Us(t){return null==t?[]:ur(t,zs(t))}function Bs(t){return null==t?[]:ur(t,qs(t))}function Ks(t,e,n){var r=null==t?ot:sr(t,e);return r===ot?n:r}function Hs(t,e){return null!=t&&Pi(t,e,mr)}function Gs(t,e){return null!=t&&Pi(t,e,wr)}function zs(t){return $a(t)?In(t):Kr(t)}function qs(t){return $a(t)?In(t,!0):Hr(t)}function Ws(t,e){var n={};return e=Ti(e,3),nr(t,function(t,r,o){jn(n,e(t,r,o),t)}),n}function Vs(t,e){var n={};return e=Ti(e,3),nr(t,function(t,r,o){jn(n,r,e(t,r,o))}),n}function Ys(t,e){return Xs(t,Fa(Ti(e)))}function Xs(t,e){if(null==t)return{};var n=y(Si(t),function(t){return[t]});return e=Ti(e),Zr(t,n,function(t,n){return e(t,n[0])})}function $s(t,e,n){e=Io(e,t);var r=-1,o=e.length;for(o||(o=1,t=ot);++r<o;){var i=null==t?ot:t[ru(e[r])];i===ot&&(r=o,i=n),t=is(i)?i.call(t):i}return t}function Js(t,e,n){return null==t?t:so(t,e,n)}function Zs(t,e,n,r){return r=\"function\"==typeof r?r:ot,null==t?t:so(t,e,n,r)}function Qs(t,e,n){var r=Ep(t),o=r||wp(t)||Np(t);if(e=Ti(e,4),null==n){var i=t&&t.constructor;n=o?r?new i:[]:ss(t)&&is(i)?vf(xl(t)):{}}return(o?c:nr)(t,function(t,r,o){return e(n,t,r,o)}),n}function tc(t,e){return null==t||mo(t,e)}function ec(t,e,n){return null==t?t:bo(t,e,Co(n))}function nc(t,e,n,r){return r=\"function\"==typeof r?r:ot,null==t?t:bo(t,e,Co(n),r)}function rc(t){return null==t?[]:F(t,zs(t))}function oc(t){return null==t?[]:F(t,qs(t))}function ic(t,e,n){return n===ot&&(n=e,e=ot),n!==ot&&(n=Ns(n),n=n===n?n:0),e!==ot&&(e=Ns(e),e=e===e?e:0),Un(Ns(t),e,n)}function uc(t,e,n){return e=Ts(e),n===ot?(n=e,e=0):n=Ts(n),t=Ns(t),Tr(t,e,n)}function ac(t,e,n){if(n&&\"boolean\"!=typeof n&&Ui(t,e,n)&&(e=n=ot),n===ot&&(\"boolean\"==typeof e?(n=e,e=ot):\"boolean\"==typeof t&&(n=t,t=ot)),t===ot&&e===ot?(t=0,e=1):(t=Ts(t),e===ot?(e=t,t=0):e=Ts(e)),t>e){var r=t;t=e,e=r}if(n||t%1||e%1){var o=Ql();return $l(t+o*(e-t+rr(\"1e-\"+((o+\"\").length-1))),e)}return no(t,e)}function sc(t){return td(xs(t).toLowerCase())}function cc(t){return t=xs(t),t&&t.replace(Ze,br).replace(zn,\"\")}function lc(t,e,n){t=xs(t),e=go(e);var r=t.length;n=n===ot?r:Un(Cs(n),0,r);var o=n;return n-=e.length,n>=0&&t.slice(n,o)==e}function fc(t){return t=xs(t),t&&Ie.test(t)?t.replace(Te,Er):t}function pc(t){return t=xs(t),t&&Fe.test(t)?t.replace(Re,\"\\\\$&\"):t}function dc(t,e,n){t=xs(t),e=Cs(e);var r=e?Q(t):0;if(!e||r>=e)return t;var o=(e-r)/2;return ui(Gl(o),n)+t+ui(Hl(o),n)}function hc(t,e,n){t=xs(t),e=Cs(e);var r=e?Q(t):0;return e&&r<e?t+ui(e-r,n):t}function yc(t,e,n){t=xs(t),e=Cs(e);var r=e?Q(t):0;return e&&r<e?ui(e-r,n)+t:t}function _c(t,e,n){return n||null==e?e=0:e&&(e=+e),Zl(xs(t).replace(Le,\"\"),e||0)}function gc(t,e,n){return e=(n?Ui(t,e,n):e===ot)?1:Cs(e),oo(xs(t),e)}function vc(){var t=arguments,e=xs(t[0]);return t.length<3?e:e.replace(t[1],t[2])}function mc(t,e,n){return n&&\"number\"!=typeof n&&Ui(t,e,n)&&(e=n=ot),(n=n===ot?Lt:n>>>0)?(t=xs(t),t&&(\"string\"==typeof e||null!=e&&!Cp(e))&&(e=go(e),!e&&G(t))?No(tt(t),0,n):t.split(e,n)):[]}function bc(t,e,n){return t=xs(t),n=null==n?0:Un(Cs(n),0,t.length),e=go(e),t.slice(n,n+e.length)==e}function Ec(t,e,r){var o=n.templateSettings;r&&Ui(t,e,r)&&(e=ot),t=xs(t),e=kp({},e,o,hi);var i,u,a=kp({},e.imports,o.imports,hi),s=zs(a),c=F(a,s),l=0,f=e.interpolate||Qe,p=\"__p += '\",d=pl((e.escape||Qe).source+\"|\"+f.source+\"|\"+(f===De?qe:Qe).source+\"|\"+(e.evaluate||Qe).source+\"|$\",\"g\"),h=\"//# sourceURL=\"+(\"sourceURL\"in e?e.sourceURL:\"lodash.templateSources[\"+ ++$n+\"]\")+\"\\n\";t.replace(d,function(e,n,r,o,a,s){return r||(r=o),p+=t.slice(l,s).replace(tn,K),n&&(i=!0,p+=\"' +\\n__e(\"+n+\") +\\n'\"),a&&(u=!0,p+=\"';\\n\"+a+\";\\n__p += '\"),r&&(p+=\"' +\\n((__t = (\"+r+\")) == null ? '' : __t) +\\n'\"),l=s+e.length,e}),p+=\"';\\n\";var y=e.variable;y||(p=\"with (obj) {\\n\"+p+\"\\n}\\n\"),p=(u?p.replace(Ee,\"\"):p).replace(Se,\"$1\").replace(we,\"$1;\"),p=\"function(\"+(y||\"obj\")+\") {\\n\"+(y?\"\":\"obj || (obj = {});\\n\")+\"var __t, __p = ''\"+(i?\", __e = _.escape\":\"\")+(u?\", __j = Array.prototype.join;\\nfunction print() { __p += __j.call(arguments, '') }\\n\":\";\\n\")+p+\"return __p\\n}\";var _=ed(function(){return cl(s,h+\"return \"+p).apply(ot,c)});if(_.source=p,rs(_))throw _;return _}function Sc(t){return xs(t).toLowerCase()}function wc(t){return xs(t).toUpperCase()}function Oc(t,e,n){if(t=xs(t),t&&(n||e===ot))return t.replace(je,\"\");if(!t||!(e=go(e)))return t;var r=tt(t),o=tt(e),i=L(r,o),u=U(r,o)+1;return No(r,i,u).join(\"\")}function Tc(t,e,n){if(t=xs(t),t&&(n||e===ot))return t.replace(Ue,\"\");if(!t||!(e=go(e)))return t;var r=tt(t),o=U(r,tt(e))+1;return No(r,0,o).join(\"\")}function Cc(t,e,n){if(t=xs(t),t&&(n||e===ot))return t.replace(Le,\"\");if(!t||!(e=go(e)))return t;var r=tt(t),o=L(r,tt(e));return No(r,o).join(\"\")}function Ic(t,e){var n=It,r=Nt;if(ss(e)){var o=\"separator\"in e?e.separator:o;n=\"length\"in e?Cs(e.length):n,r=\"omission\"in e?go(e.omission):r}t=xs(t);var i=t.length;if(G(t)){var u=tt(t);i=u.length}if(n>=i)return t;var a=n-Q(r);if(a<1)return r;var s=u?No(u,0,a).join(\"\"):t.slice(0,a);if(o===ot)return s+r;if(u&&(a+=s.length-a),Cp(o)){if(t.slice(a).search(o)){var c,l=s;for(o.global||(o=pl(o.source,xs(We.exec(o))+\"g\")),o.lastIndex=0;c=o.exec(l);)var f=c.index;s=s.slice(0,f===ot?a:f)}}else if(t.indexOf(go(o),a)!=a){var p=s.lastIndexOf(o);p>-1&&(s=s.slice(0,p))}return s+r}function Nc(t){return t=xs(t),t&&Ce.test(t)?t.replace(Oe,Sr):t}function Ac(t,e,n){return t=xs(t),e=n?ot:e,e===ot?z(t)?rt(t):E(t):t.match(e)||[]}function Dc(t){var e=null==t?0:t.length,n=Ti();return t=e?y(t,function(t){if(\"function\"!=typeof t[1])throw new hl(st);return[n(t[0]),t[1]]}):[],io(function(n){for(var r=-1;++r<e;){var o=t[r];if(a(o[0],this,n))return a(o[1],this,n)}})}function xc(t){return Kn(Bn(t,pt))}function Pc(t){return function(){return t}}function kc(t,e){return null==t||t!==t?e:t}function Mc(t){return t}function Rc(t){return Br(\"function\"==typeof t?t:Bn(t,pt))}function Fc(t){return qr(Bn(t,pt))}function jc(t,e){return Wr(t,Bn(e,pt))}function Lc(t,e,n){var r=zs(e),o=ur(e,r);null!=n||ss(e)&&(o.length||!r.length)||(n=e,e=t,t=this,o=ur(e,zs(e)));var i=!(ss(n)&&\"chain\"in n&&!n.chain),u=is(t);return c(o,function(n){var r=e[n];t[n]=r,u&&(t.prototype[n]=function(){var e=this.__chain__;if(i||e){var n=t(this.__wrapped__),o=n.__actions__=Ko(this.__actions__);return o.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,_([this.value()],arguments))})}),t}function Uc(){return ar._===this&&(ar._=Tl),this}function Bc(){}function Kc(t){return t=Cs(t),io(function(e){return Xr(e,t)})}function Hc(t){return Bi(t)?N(ru(t)):Qr(t)}function Gc(t){return function(e){return null==t?ot:sr(t,e)}}function zc(){return[]}function qc(){return!1}function Wc(){return{}}function Vc(){return\"\"}function Yc(){return!0}function Xc(t,e){if(t=Cs(t),t<1||t>Rt)return[];var n=Lt,r=$l(t,Lt);e=Ti(e),t-=Lt;for(var o=k(r,e);++n<t;)e(n);return o}function $c(t){return Ep(t)?y(t,ru):bs(t)?[t]:Ko(Ff(xs(t)))}function Jc(t){var e=++El;return xs(t)+e}function Zc(t){return t&&t.length?Yn(t,Mc,pr):ot}function Qc(t,e){return t&&t.length?Yn(t,Ti(e,2),pr):ot}function tl(t){return I(t,Mc)}function el(t,e){return I(t,Ti(e,2))}function nl(t){return t&&t.length?Yn(t,Mc,Gr):ot}function rl(t,e){return t&&t.length?Yn(t,Ti(e,2),Gr):ot}function ol(t){return t&&t.length?P(t,Mc):0}function il(t,e){return t&&t.length?P(t,Ti(e,2)):0}e=null==e?ar:Or.defaults(ar.Object(),e,Or.pick(ar,Xn));var ul=e.Array,al=e.Date,sl=e.Error,cl=e.Function,ll=e.Math,fl=e.Object,pl=e.RegExp,dl=e.String,hl=e.TypeError,yl=ul.prototype,_l=cl.prototype,gl=fl.prototype,vl=e[\"__core-js_shared__\"],ml=_l.toString,bl=gl.hasOwnProperty,El=0,Sl=function(){var t=/[^.]+$/.exec(vl&&vl.keys&&vl.keys.IE_PROTO||\"\");return t?\"Symbol(src)_1.\"+t:\"\"}(),wl=gl.toString,Ol=ml.call(fl),Tl=ar._,Cl=pl(\"^\"+ml.call(bl).replace(Re,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),Il=lr?e.Buffer:ot,Nl=e.Symbol,Al=e.Uint8Array,Dl=Il?Il.allocUnsafe:ot,xl=V(fl.getPrototypeOf,fl),Pl=fl.create,kl=gl.propertyIsEnumerable,Ml=yl.splice,Rl=Nl?Nl.isConcatSpreadable:ot,Fl=Nl?Nl.iterator:ot,jl=Nl?Nl.toStringTag:ot,Ll=function(){try{var t=Ni(fl,\"defineProperty\");return t({},\"\",{}),t}catch(t){}}(),Ul=e.clearTimeout!==ar.clearTimeout&&e.clearTimeout,Bl=al&&al.now!==ar.Date.now&&al.now,Kl=e.setTimeout!==ar.setTimeout&&e.setTimeout,Hl=ll.ceil,Gl=ll.floor,zl=fl.getOwnPropertySymbols,ql=Il?Il.isBuffer:ot,Wl=e.isFinite,Vl=yl.join,Yl=V(fl.keys,fl),Xl=ll.max,$l=ll.min,Jl=al.now,Zl=e.parseInt,Ql=ll.random,tf=yl.reverse,ef=Ni(e,\"DataView\"),nf=Ni(e,\"Map\"),rf=Ni(e,\"Promise\"),of=Ni(e,\"Set\"),uf=Ni(e,\"WeakMap\"),af=Ni(fl,\"create\"),sf=uf&&new uf,cf={},lf=ou(ef),ff=ou(nf),pf=ou(rf),df=ou(of),hf=ou(uf),yf=Nl?Nl.prototype:ot,_f=yf?yf.valueOf:ot,gf=yf?yf.toString:ot,vf=function(){function t(){}return function(e){if(!ss(e))return{};if(Pl)return Pl(e);t.prototype=e;var n=new t;return t.prototype=ot,n}}();n.templateSettings={escape:Ne,evaluate:Ae,interpolate:De,variable:\"\",imports:{_:n}},n.prototype=r.prototype,n.prototype.constructor=n,o.prototype=vf(r.prototype),o.prototype.constructor=o,b.prototype=vf(r.prototype),b.prototype.constructor=b,nt.prototype.clear=Ge,nt.prototype.delete=en,nt.prototype.get=nn,nt.prototype.has=rn,nt.prototype.set=on,un.prototype.clear=an,un.prototype.delete=sn,un.prototype.get=cn,un.prototype.has=ln,un.prototype.set=fn,pn.prototype.clear=dn,pn.prototype.delete=hn,pn.prototype.get=yn,pn.prototype.has=_n,pn.prototype.set=gn,vn.prototype.add=vn.prototype.push=mn,vn.prototype.has=bn,En.prototype.clear=Sn,En.prototype.delete=wn,En.prototype.get=On,En.prototype.has=Tn,En.prototype.set=Cn;var mf=Vo(nr),bf=Vo(ir,!0),Ef=Yo(),Sf=Yo(!0),wf=sf?function(t,e){return sf.set(t,e),t}:Mc,Of=Ll?function(t,e){return Ll(t,\"toString\",{configurable:!0,enumerable:!1,value:Pc(e),writable:!0})}:Mc,Tf=io,Cf=Ul||function(t){return ar.clearTimeout(t)},If=of&&1/X(new of([,-0]))[1]==Mt?function(t){return new of(t)}:Bc,Nf=sf?function(t){return sf.get(t)}:Bc,Af=zl?function(t){return null==t?[]:(t=fl(t),p(zl(t),function(e){return kl.call(t,e)}))}:zc,Df=zl?function(t){for(var e=[];t;)_(e,Af(t)),t=xl(t);return e}:zc,xf=fr;(ef&&xf(new ef(new ArrayBuffer(1)))!=fe||nf&&xf(new nf)!=Jt||rf&&xf(rf.resolve())!=ee||of&&xf(new of)!=oe||uf&&xf(new uf)!=se)&&(xf=function(t){var e=fr(t),n=e==te?t.constructor:ot,r=n?ou(n):\"\";if(r)switch(r){case lf:return fe;case ff:return Jt;case pf:return ee;case df:return oe;case hf:return se}return e});var Pf=vl?is:qc,kf=eu(wf),Mf=Kl||function(t,e){return ar.setTimeout(t,e)},Rf=eu(Of),Ff=Vi(function(t){var e=[];return ke.test(t)&&e.push(\"\"),t.replace(Me,function(t,n,r,o){e.push(r?o.replace(ze,\"$1\"):n||t)}),e}),jf=io(function(t,e){return Ja(t)?Wn(t,er(e,1,Ja,!0)):[]}),Lf=io(function(t,e){var n=Tu(e);return Ja(n)&&(n=ot),Ja(t)?Wn(t,er(e,1,Ja,!0),Ti(n,2)):[]}),Uf=io(function(t,e){var n=Tu(e);return Ja(n)&&(n=ot),Ja(t)?Wn(t,er(e,1,Ja,!0),ot,n):[]}),Bf=io(function(t){var e=y(t,To);return e.length&&e[0]===t[0]?Cr(e):[]}),Kf=io(function(t){var e=Tu(t),n=y(t,To);return e===Tu(n)?e=ot:n.pop(),n.length&&n[0]===t[0]?Cr(n,Ti(e,2)):[]}),Hf=io(function(t){var e=Tu(t),n=y(t,To);return e=\"function\"==typeof e?e:ot,e&&n.pop(),n.length&&n[0]===t[0]?Cr(n,ot,e):[]}),Gf=io(Nu),zf=bi(function(t,e){var n=null==t?0:t.length,r=Ln(t,e);return eo(t,y(e,function(t){return Li(t,n)?+t:t}).sort(jo)),r}),qf=io(function(t){\nreturn vo(er(t,1,Ja,!0))}),Wf=io(function(t){var e=Tu(t);return Ja(e)&&(e=ot),vo(er(t,1,Ja,!0),Ti(e,2))}),Vf=io(function(t){var e=Tu(t);return e=\"function\"==typeof e?e:ot,vo(er(t,1,Ja,!0),ot,e)}),Yf=io(function(t,e){return Ja(t)?Wn(t,e):[]}),Xf=io(function(t){return wo(p(t,Ja))}),$f=io(function(t){var e=Tu(t);return Ja(e)&&(e=ot),wo(p(t,Ja),Ti(e,2))}),Jf=io(function(t){var e=Tu(t);return e=\"function\"==typeof e?e:ot,wo(p(t,Ja),ot,e)}),Zf=io($u),Qf=io(function(t){var e=t.length,n=e>1?t[e-1]:ot;return n=\"function\"==typeof n?(t.pop(),n):ot,Ju(t,n)}),tp=bi(function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,i=function(e){return Ln(e,t)};return!(e>1||this.__actions__.length)&&r instanceof b&&Li(n)?(r=r.slice(n,+n+(e?1:0)),r.__actions__.push({func:na,args:[i],thisArg:ot}),new o(r,this.__chain__).thru(function(t){return e&&!t.length&&t.push(ot),t})):this.thru(i)}),ep=qo(function(t,e,n){bl.call(t,n)?++t[n]:jn(t,n,1)}),np=ti(yu),rp=ti(_u),op=qo(function(t,e,n){bl.call(t,n)?t[n].push(e):jn(t,n,[e])}),ip=io(function(t,e,n){var r=-1,o=\"function\"==typeof e,i=$a(t)?ul(t.length):[];return mf(t,function(t){i[++r]=o?a(e,t,n):Nr(t,e,n)}),i}),up=qo(function(t,e,n){jn(t,n,e)}),ap=qo(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),sp=io(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Ui(t,e[0],e[1])?e=[]:n>2&&Ui(e[0],e[1],e[2])&&(e=[e[0]]),$r(t,er(e,1),[])}),cp=Bl||function(){return ar.Date.now()},lp=io(function(t,e,n){var r=gt;if(n.length){var o=Y(n,Oi(lp));r|=St}return di(t,r,e,n,o)}),fp=io(function(t,e,n){var r=gt|vt;if(n.length){var o=Y(n,Oi(fp));r|=St}return di(e,r,t,n,o)}),pp=io(function(t,e){return qn(t,1,e)}),dp=io(function(t,e,n){return qn(t,Ns(e)||0,n)});Ra.Cache=pn;var hp=Tf(function(t,e){e=1==e.length&&Ep(e[0])?y(e[0],R(Ti())):y(er(e,1),R(Ti()));var n=e.length;return io(function(r){for(var o=-1,i=$l(r.length,n);++o<i;)r[o]=e[o].call(this,r[o]);return a(t,this,r)})}),yp=io(function(t,e){var n=Y(e,Oi(yp));return di(t,St,ot,e,n)}),_p=io(function(t,e){var n=Y(e,Oi(_p));return di(t,wt,ot,e,n)}),gp=bi(function(t,e){return di(t,Tt,ot,ot,ot,e)}),vp=ci(pr),mp=ci(function(t,e){return t>=e}),bp=Ar(function(){return arguments}())?Ar:function(t){return cs(t)&&bl.call(t,\"callee\")&&!kl.call(t,\"callee\")},Ep=ul.isArray,Sp=dr?R(dr):Dr,wp=ql||qc,Op=hr?R(hr):xr,Tp=yr?R(yr):Mr,Cp=_r?R(_r):jr,Ip=gr?R(gr):Lr,Np=vr?R(vr):Ur,Ap=ci(Gr),Dp=ci(function(t,e){return t<=e}),xp=Wo(function(t,e){if(zi(e)||$a(e))return void Ho(e,zs(e),t);for(var n in e)bl.call(e,n)&&Pn(t,n,e[n])}),Pp=Wo(function(t,e){Ho(e,qs(e),t)}),kp=Wo(function(t,e,n,r){Ho(e,qs(e),t,r)}),Mp=Wo(function(t,e,n,r){Ho(e,zs(e),t,r)}),Rp=bi(Ln),Fp=io(function(t){return t.push(ot,hi),a(kp,ot,t)}),jp=io(function(t){return t.push(ot,yi),a(Hp,ot,t)}),Lp=ri(function(t,e,n){t[e]=n},Pc(Mc)),Up=ri(function(t,e,n){bl.call(t,e)?t[e].push(n):t[e]=[n]},Ti),Bp=io(Nr),Kp=Wo(function(t,e,n){Vr(t,e,n)}),Hp=Wo(function(t,e,n,r){Vr(t,e,n,r)}),Gp=bi(function(t,e){var n={};if(null==t)return n;var r=!1;e=y(e,function(e){return e=Io(e,t),r||(r=e.length>1),e}),Ho(t,Si(t),n),r&&(n=Bn(n,pt|dt|ht,_i));for(var o=e.length;o--;)mo(n,e[o]);return n}),zp=bi(function(t,e){return null==t?{}:Jr(t,e)}),qp=pi(zs),Wp=pi(qs),Vp=Jo(function(t,e,n){return e=e.toLowerCase(),t+(n?sc(e):e)}),Yp=Jo(function(t,e,n){return t+(n?\"-\":\"\")+e.toLowerCase()}),Xp=Jo(function(t,e,n){return t+(n?\" \":\"\")+e.toLowerCase()}),$p=$o(\"toLowerCase\"),Jp=Jo(function(t,e,n){return t+(n?\"_\":\"\")+e.toLowerCase()}),Zp=Jo(function(t,e,n){return t+(n?\" \":\"\")+td(e)}),Qp=Jo(function(t,e,n){return t+(n?\" \":\"\")+e.toUpperCase()}),td=$o(\"toUpperCase\"),ed=io(function(t,e){try{return a(t,ot,e)}catch(t){return rs(t)?t:new sl(t)}}),nd=bi(function(t,e){return c(e,function(e){e=ru(e),jn(t,e,lp(t[e],t))}),t}),rd=ei(),od=ei(!0),id=io(function(t,e){return function(n){return Nr(n,t,e)}}),ud=io(function(t,e){return function(n){return Nr(t,n,e)}}),ad=ii(y),sd=ii(f),cd=ii(m),ld=si(),fd=si(!0),pd=oi(function(t,e){return t+e},0),dd=fi(\"ceil\"),hd=oi(function(t,e){return t/e},1),yd=fi(\"floor\"),_d=oi(function(t,e){return t*e},1),gd=fi(\"round\"),vd=oi(function(t,e){return t-e},0);return n.after=Na,n.ary=Aa,n.assign=xp,n.assignIn=Pp,n.assignInWith=kp,n.assignWith=Mp,n.at=Rp,n.before=Da,n.bind=lp,n.bindAll=nd,n.bindKey=fp,n.castArray=Ga,n.chain=ta,n.chunk=au,n.compact=su,n.concat=cu,n.cond=Dc,n.conforms=xc,n.constant=Pc,n.countBy=ep,n.create=Ps,n.curry=xa,n.curryRight=Pa,n.debounce=ka,n.defaults=Fp,n.defaultsDeep=jp,n.defer=pp,n.delay=dp,n.difference=jf,n.differenceBy=Lf,n.differenceWith=Uf,n.drop=lu,n.dropRight=fu,n.dropRightWhile=pu,n.dropWhile=du,n.fill=hu,n.filter=fa,n.flatMap=pa,n.flatMapDeep=da,n.flatMapDepth=ha,n.flatten=gu,n.flattenDeep=vu,n.flattenDepth=mu,n.flip=Ma,n.flow=rd,n.flowRight=od,n.fromPairs=bu,n.functions=Us,n.functionsIn=Bs,n.groupBy=op,n.initial=wu,n.intersection=Bf,n.intersectionBy=Kf,n.intersectionWith=Hf,n.invert=Lp,n.invertBy=Up,n.invokeMap=ip,n.iteratee=Rc,n.keyBy=up,n.keys=zs,n.keysIn=qs,n.map=va,n.mapKeys=Ws,n.mapValues=Vs,n.matches=Fc,n.matchesProperty=jc,n.memoize=Ra,n.merge=Kp,n.mergeWith=Hp,n.method=id,n.methodOf=ud,n.mixin=Lc,n.negate=Fa,n.nthArg=Kc,n.omit=Gp,n.omitBy=Ys,n.once=ja,n.orderBy=ma,n.over=ad,n.overArgs=hp,n.overEvery=sd,n.overSome=cd,n.partial=yp,n.partialRight=_p,n.partition=ap,n.pick=zp,n.pickBy=Xs,n.property=Hc,n.propertyOf=Gc,n.pull=Gf,n.pullAll=Nu,n.pullAllBy=Au,n.pullAllWith=Du,n.pullAt=zf,n.range=ld,n.rangeRight=fd,n.rearg=gp,n.reject=Sa,n.remove=xu,n.rest=La,n.reverse=Pu,n.sampleSize=Oa,n.set=Js,n.setWith=Zs,n.shuffle=Ta,n.slice=ku,n.sortBy=sp,n.sortedUniq=Bu,n.sortedUniqBy=Ku,n.split=mc,n.spread=Ua,n.tail=Hu,n.take=Gu,n.takeRight=zu,n.takeRightWhile=qu,n.takeWhile=Wu,n.tap=ea,n.throttle=Ba,n.thru=na,n.toArray=Os,n.toPairs=qp,n.toPairsIn=Wp,n.toPath=$c,n.toPlainObject=As,n.transform=Qs,n.unary=Ka,n.union=qf,n.unionBy=Wf,n.unionWith=Vf,n.uniq=Vu,n.uniqBy=Yu,n.uniqWith=Xu,n.unset=tc,n.unzip=$u,n.unzipWith=Ju,n.update=ec,n.updateWith=nc,n.values=rc,n.valuesIn=oc,n.without=Yf,n.words=Ac,n.wrap=Ha,n.xor=Xf,n.xorBy=$f,n.xorWith=Jf,n.zip=Zf,n.zipObject=Zu,n.zipObjectDeep=Qu,n.zipWith=Qf,n.entries=qp,n.entriesIn=Wp,n.extend=Pp,n.extendWith=kp,Lc(n,n),n.add=pd,n.attempt=ed,n.camelCase=Vp,n.capitalize=sc,n.ceil=dd,n.clamp=ic,n.clone=za,n.cloneDeep=Wa,n.cloneDeepWith=Va,n.cloneWith=qa,n.conformsTo=Ya,n.deburr=cc,n.defaultTo=kc,n.divide=hd,n.endsWith=lc,n.eq=Xa,n.escape=fc,n.escapeRegExp=pc,n.every=la,n.find=np,n.findIndex=yu,n.findKey=ks,n.findLast=rp,n.findLastIndex=_u,n.findLastKey=Ms,n.floor=yd,n.forEach=ya,n.forEachRight=_a,n.forIn=Rs,n.forInRight=Fs,n.forOwn=js,n.forOwnRight=Ls,n.get=Ks,n.gt=vp,n.gte=mp,n.has=Hs,n.hasIn=Gs,n.head=Eu,n.identity=Mc,n.includes=ga,n.indexOf=Su,n.inRange=uc,n.invoke=Bp,n.isArguments=bp,n.isArray=Ep,n.isArrayBuffer=Sp,n.isArrayLike=$a,n.isArrayLikeObject=Ja,n.isBoolean=Za,n.isBuffer=wp,n.isDate=Op,n.isElement=Qa,n.isEmpty=ts,n.isEqual=es,n.isEqualWith=ns,n.isError=rs,n.isFinite=os,n.isFunction=is,n.isInteger=us,n.isLength=as,n.isMap=Tp,n.isMatch=ls,n.isMatchWith=fs,n.isNaN=ps,n.isNative=ds,n.isNil=ys,n.isNull=hs,n.isNumber=_s,n.isObject=ss,n.isObjectLike=cs,n.isPlainObject=gs,n.isRegExp=Cp,n.isSafeInteger=vs,n.isSet=Ip,n.isString=ms,n.isSymbol=bs,n.isTypedArray=Np,n.isUndefined=Es,n.isWeakMap=Ss,n.isWeakSet=ws,n.join=Ou,n.kebabCase=Yp,n.last=Tu,n.lastIndexOf=Cu,n.lowerCase=Xp,n.lowerFirst=$p,n.lt=Ap,n.lte=Dp,n.max=Zc,n.maxBy=Qc,n.mean=tl,n.meanBy=el,n.min=nl,n.minBy=rl,n.stubArray=zc,n.stubFalse=qc,n.stubObject=Wc,n.stubString=Vc,n.stubTrue=Yc,n.multiply=_d,n.nth=Iu,n.noConflict=Uc,n.noop=Bc,n.now=cp,n.pad=dc,n.padEnd=hc,n.padStart=yc,n.parseInt=_c,n.random=ac,n.reduce=ba,n.reduceRight=Ea,n.repeat=gc,n.replace=vc,n.result=$s,n.round=gd,n.runInContext=t,n.sample=wa,n.size=Ca,n.snakeCase=Jp,n.some=Ia,n.sortedIndex=Mu,n.sortedIndexBy=Ru,n.sortedIndexOf=Fu,n.sortedLastIndex=ju,n.sortedLastIndexBy=Lu,n.sortedLastIndexOf=Uu,n.startCase=Zp,n.startsWith=bc,n.subtract=vd,n.sum=ol,n.sumBy=il,n.template=Ec,n.times=Xc,n.toFinite=Ts,n.toInteger=Cs,n.toLength=Is,n.toLower=Sc,n.toNumber=Ns,n.toSafeInteger=Ds,n.toString=xs,n.toUpper=wc,n.trim=Oc,n.trimEnd=Tc,n.trimStart=Cc,n.truncate=Ic,n.unescape=Nc,n.uniqueId=Jc,n.upperCase=Qp,n.upperFirst=td,n.each=ya,n.eachRight=_a,n.first=Eu,Lc(n,function(){var t={};return nr(n,function(e,r){bl.call(n.prototype,r)||(t[r]=e)}),t}(),{chain:!1}),n.VERSION=it,c([\"bind\",\"bindKey\",\"curry\",\"curryRight\",\"partial\",\"partialRight\"],function(t){n[t].placeholder=n}),c([\"drop\",\"take\"],function(t,e){b.prototype[t]=function(n){n=n===ot?1:Xl(Cs(n),0);var r=this.__filtered__&&!e?new b(this):this.clone();return r.__filtered__?r.__takeCount__=$l(n,r.__takeCount__):r.__views__.push({size:$l(n,Lt),type:t+(r.__dir__<0?\"Right\":\"\")}),r},b.prototype[t+\"Right\"]=function(e){return this.reverse()[t](e).reverse()}}),c([\"filter\",\"map\",\"takeWhile\"],function(t,e){var n=e+1,r=n==xt||n==kt;b.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Ti(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),c([\"head\",\"last\"],function(t,e){var n=\"take\"+(e?\"Right\":\"\");b.prototype[t]=function(){return this[n](1).value()[0]}}),c([\"initial\",\"tail\"],function(t,e){var n=\"drop\"+(e?\"\":\"Right\");b.prototype[t]=function(){return this.__filtered__?new b(this):this[n](1)}}),b.prototype.compact=function(){return this.filter(Mc)},b.prototype.find=function(t){return this.filter(t).head()},b.prototype.findLast=function(t){return this.reverse().find(t)},b.prototype.invokeMap=io(function(t,e){return\"function\"==typeof t?new b(this):this.map(function(n){return Nr(n,t,e)})}),b.prototype.reject=function(t){return this.filter(Fa(Ti(t)))},b.prototype.slice=function(t,e){t=Cs(t);var n=this;return n.__filtered__&&(t>0||e<0)?new b(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==ot&&(e=Cs(e),n=e<0?n.dropRight(-e):n.take(e-t)),n)},b.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},b.prototype.toArray=function(){return this.take(Lt)},nr(b.prototype,function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),u=n[i?\"take\"+(\"last\"==e?\"Right\":\"\"):e],a=i||/^find/.test(e);u&&(n.prototype[e]=function(){var e=this.__wrapped__,s=i?[1]:arguments,c=e instanceof b,l=s[0],f=c||Ep(e),p=function(t){var e=u.apply(n,_([t],s));return i&&d?e[0]:e};f&&r&&\"function\"==typeof l&&1!=l.length&&(c=f=!1);var d=this.__chain__,h=!!this.__actions__.length,y=a&&!d,g=c&&!h;if(!a&&f){e=g?e:new b(this);var v=t.apply(e,s);return v.__actions__.push({func:na,args:[p],thisArg:ot}),new o(v,d)}return y&&g?t.apply(this,s):(v=this.thru(p),y?i?v.value()[0]:v.value():v)})}),c([\"pop\",\"push\",\"shift\",\"sort\",\"splice\",\"unshift\"],function(t){var e=yl[t],r=/^(?:push|sort|unshift)$/.test(t)?\"tap\":\"thru\",o=/^(?:pop|shift)$/.test(t);n.prototype[t]=function(){var t=arguments;if(o&&!this.__chain__){var n=this.value();return e.apply(Ep(n)?n:[],t)}return this[r](function(n){return e.apply(Ep(n)?n:[],t)})}}),nr(b.prototype,function(t,e){var r=n[e];if(r){var o=r.name+\"\",i=cf[o]||(cf[o]=[]);i.push({name:e,func:r})}}),cf[ni(ot,vt).name]=[{name:\"wrapper\",func:ot}],b.prototype.clone=A,b.prototype.reverse=J,b.prototype.value=et,n.prototype.at=tp,n.prototype.chain=ra,n.prototype.commit=oa,n.prototype.next=ia,n.prototype.plant=aa,n.prototype.reverse=sa,n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=ca,n.prototype.first=n.prototype.head,Fl&&(n.prototype[Fl]=ua),n},Or=wr();ar._=Or,r=function(){return Or}.call(e,n,e,o),!(r!==ot&&(o.exports=r))}).call(this)}).call(e,function(){return this}(),n(311)(t))},function(t,e,n){(function(t){function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){var n={};for(var r in t)e.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function u(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function a(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}e.__esModule=!0,e.Helmet=void 0;var s=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},c=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),l=n(1),f=r(l),p=n(52),d=r(p),h=n(305),y=r(h),_=n(125),g=r(_),v=n(253),m=n(87),b=function(e){var n,r;return r=n=function(n){function r(){return i(this,r),u(this,n.apply(this,arguments))}return a(r,n),r.prototype.shouldComponentUpdate=function(t){return!(0,g.default)(this.props,t)},r.prototype.mapNestedChildrenToProps=function(t,e){if(!e)return null;switch(t.type){case m.TAG_NAMES.SCRIPT:case m.TAG_NAMES.NOSCRIPT:return{innerHTML:e};case m.TAG_NAMES.STYLE:return{cssText:e}}throw new Error(\"<\"+t.type+\" /> elements are self-closing and can not contain children. Refer to our API for more information.\")},r.prototype.flattenArrayTypeChildren=function(t){var e,n=t.child,r=t.arrayTypeChildren,o=t.newChildProps,i=t.nestedChildren;return s({},r,(e={},e[n.type]=[].concat(r[n.type]||[],[s({},o,this.mapNestedChildrenToProps(n,i))]),e))},r.prototype.mapObjectTypeChildren=function(t){var e,n,r=t.child,o=t.newProps,i=t.newChildProps,u=t.nestedChildren;switch(r.type){case m.TAG_NAMES.TITLE:return s({},o,(e={},e[r.type]=u,e.titleAttributes=s({},i),e));case m.TAG_NAMES.BODY:return s({},o,{bodyAttributes:s({},i)});case m.TAG_NAMES.HTML:return s({},o,{htmlAttributes:s({},i)})}return s({},o,(n={},n[r.type]=s({},i),n))},r.prototype.mapArrayTypeChildrenToProps=function(t,e){var n=s({},e);return Object.keys(t).forEach(function(e){var r;n=s({},n,(r={},r[e]=t[e],r))}),n},r.prototype.warnOnInvalidChildren=function(e,n){if(\"production\"!==t.env.NODE_ENV){if(!m.VALID_TAG_NAMES.some(function(t){return e.type===t}))return\"function\"==typeof e.type?(0,v.warn)(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\"):(0,v.warn)(\"Only elements types \"+m.VALID_TAG_NAMES.join(\", \")+\" are allowed. Helmet does not support rendering <\"+e.type+\"> elements. Refer to our API for more information.\");if(n&&\"string\"!=typeof n&&(!Array.isArray(n)||n.some(function(t){return\"string\"!=typeof t})))throw new Error(\"Helmet expects a string as a child of <\"+e.type+\">. Did you forget to wrap your children in braces? ( <\"+e.type+\">{``}</\"+e.type+\"> ) Refer to our API for more information.\")}return!0},r.prototype.mapChildrenToProps=function(t,e){var n=this,r={};return f.default.Children.forEach(t,function(t){if(t&&t.props){var i=t.props,u=i.children,a=o(i,[\"children\"]),s=(0,v.convertReactPropstoHtmlAttributes)(a);switch(n.warnOnInvalidChildren(t,u),t.type){case m.TAG_NAMES.LINK:case m.TAG_NAMES.META:case m.TAG_NAMES.NOSCRIPT:case m.TAG_NAMES.SCRIPT:case m.TAG_NAMES.STYLE:r=n.flattenArrayTypeChildren({child:t,arrayTypeChildren:r,newChildProps:s,nestedChildren:u});break;default:e=n.mapObjectTypeChildren({child:t,newProps:e,newChildProps:s,nestedChildren:u})}}}),e=this.mapArrayTypeChildrenToProps(r,e)},r.prototype.render=function(){var t=this.props,n=t.children,r=o(t,[\"children\"]),i=s({},r);return n&&(i=this.mapChildrenToProps(n,i)),f.default.createElement(e,i)},c(r,null,[{key:\"canUseDOM\",set:function(t){e.canUseDOM=t}}]),r}(f.default.Component),n.propTypes={base:d.default.object,bodyAttributes:d.default.object,children:d.default.oneOfType([d.default.arrayOf(d.default.node),d.default.node]),defaultTitle:d.default.string,encodeSpecialCharacters:d.default.bool,htmlAttributes:d.default.object,link:d.default.arrayOf(d.default.object),meta:d.default.arrayOf(d.default.object),noscript:d.default.arrayOf(d.default.object),onChangeClientState:d.default.func,script:d.default.arrayOf(d.default.object),style:d.default.arrayOf(d.default.object),title:d.default.string,titleAttributes:d.default.object,titleTemplate:d.default.string},n.defaultProps={encodeSpecialCharacters:!0},n.peek=e.peek,n.rewind=function(){var t=e.rewind();return t||(t=(0,v.mapStateOnServer)({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:\"\",titleAttributes:{}})),t},r},E=function(){return null},S=(0,y.default)(v.reducePropsToState,v.handleClientStateChange,v.mapStateOnServer)(E),w=b(S);w.renderStatic=w.rewind,e.Helmet=w,e.default=w}).call(e,n(2))},function(t,e,n){\"use strict\";var r=n(5),o=r.OrderedMap,i={createFromArray:function(t){return o(t.map(function(t){return[t.getKey(),t]}))}};t.exports=i},function(t,e,n){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var u=n(5),a=u.Record,s={anchorKey:\"\",anchorOffset:0,focusKey:\"\",focusOffset:0,isBackward:!1,hasFocus:!1},c=a(s),l=function(t){function e(){return r(this,e),o(this,t.apply(this,arguments))}return i(e,t),e.prototype.serialize=function(){return\"Anchor: \"+this.getAnchorKey()+\":\"+this.getAnchorOffset()+\", Focus: \"+this.getFocusKey()+\":\"+this.getFocusOffset()+\", Is Backward: \"+String(this.getIsBackward())+\", Has Focus: \"+String(this.getHasFocus())},e.prototype.getAnchorKey=function(){return this.get(\"anchorKey\")},e.prototype.getAnchorOffset=function(){return this.get(\"anchorOffset\")},e.prototype.getFocusKey=function(){return this.get(\"focusKey\")},e.prototype.getFocusOffset=function(){return this.get(\"focusOffset\")},e.prototype.getIsBackward=function(){return this.get(\"isBackward\")},e.prototype.getHasFocus=function(){return this.get(\"hasFocus\")},e.prototype.hasEdgeWithin=function(t,e,n){var r=this.getAnchorKey(),o=this.getFocusKey();if(r===o&&r===t){var i=this.getStartOffset(),u=this.getEndOffset();return e<=u&&i<=n}if(t!==r&&t!==o)return!1;var a=t===r?this.getAnchorOffset():this.getFocusOffset();return e<=a&&n>=a},e.prototype.isCollapsed=function(){return this.getAnchorKey()===this.getFocusKey()&&this.getAnchorOffset()===this.getFocusOffset()},e.prototype.getStartKey=function(){return this.getIsBackward()?this.getFocusKey():this.getAnchorKey()},e.prototype.getStartOffset=function(){return this.getIsBackward()?this.getFocusOffset():this.getAnchorOffset()},e.prototype.getEndKey=function(){return this.getIsBackward()?this.getAnchorKey():this.getFocusKey()},e.prototype.getEndOffset=function(){return this.getIsBackward()?this.getAnchorOffset():this.getFocusOffset()},e.createEmpty=function(t){return new e({anchorKey:t,anchorOffset:0,focusKey:t,focusOffset:0,isBackward:!1,hasFocus:!1})},e}(c);t.exports=l},function(t,e,n){\"use strict\";function r(t,e,n){var r=t.getSelection(),i=t.getCurrentContent(),u=r;if(r.isCollapsed()){if(\"forward\"===n){if(t.isSelectionAtEndOfContent())return i}else if(t.isSelectionAtStartOfContent())return i;if(u=e(t),u===r)return i}return o.removeRange(i,u,n)}var o=n(7);t.exports=r},function(t,e){\"use strict\";function n(t){return\"object\"==typeof t?Object.keys(t).filter(function(e){return t[e]}).map(r).join(\" \"):Array.prototype.map.call(arguments,r).join(\" \")}function r(t){return t.replace(/\\//g,\"-\")}t.exports=n},function(t,e,n){(function(e){\"use strict\";function r(t,e){console.warn(\"WARNING: \"+t+' will be deprecated soon!\\nPlease use \"'+e+'\" instead.')}var o=n(17),i=o||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},u=n(64),a=n(5),s=n(3),c=a.Map,l=c(),f=0,p={getLastCreatedEntityKey:function(){return r(\"DraftEntity.getLastCreatedEntityKey\",\"contentState.getLastCreatedEntityKey\"),p.__getLastCreatedEntityKey()},create:function(t,e,n){return r(\"DraftEntity.create\",\"contentState.createEntity\"),p.__create(t,e,n)},add:function(t){return r(\"DraftEntity.add\",\"contentState.addEntity\"),p.__add(t)},get:function(t){return r(\"DraftEntity.get\",\"contentState.getEntity\"),p.__get(t)},mergeData:function(t,e){return r(\"DraftEntity.mergeData\",\"contentState.mergeEntityData\"),p.__mergeData(t,e)},replaceData:function(t,e){return r(\"DraftEntity.replaceData\",\"contentState.replaceEntityData\"),p.__replaceData(t,e)},__getLastCreatedEntityKey:function(){return\"\"+f},__create:function(t,e,n){return p.__add(new u({type:t,mutability:e,data:n||{}}))},__add:function(t){var e=\"\"+ ++f;return l=l.set(e,t),e},__get:function(t){var n=l.get(t);return n?void 0:\"production\"!==e.env.NODE_ENV?s(!1,\"Unknown DraftEntity key.\"):s(!1),n},__mergeData:function(t,e){var n=p.__get(t),r=i({},n.getData(),e),o=n.set(\"data\",r);return l=l.set(t,o),o},__replaceData:function(t,e){var n=p.__get(t),r=n.set(\"data\",e);return l=l.set(t,r),r}};t.exports=p}).call(e,n(2))},function(t,e){\"use strict\";var n=\"-\",r={encode:function(t,e,r){return t+n+e+n+r},decode:function(t){var e=t.split(n),r=e[0],o=e[1],i=e[2];return{blockKey:r,decoratorKey:parseInt(o,10),leafKey:parseInt(i,10)}}};t.exports=r},function(t,e){\"use strict\";function n(t,e,n,r){if(t.size){var o=0;t.reduce(function(t,i,u){return e(t,i)||(n(t)&&r(o,u),o=u),i}),n(t.last())&&r(o,t.count())}}t.exports=n},function(t,e,n){\"use strict\";function r(t,e){var n=e.getStartKey(),r=e.getStartOffset(),u=e.getEndKey(),a=e.getEndOffset(),s=i(t,e),c=s.getBlockMap(),l=c.keySeq(),f=l.indexOf(n),p=l.indexOf(u)+1,d=c.slice(f,p).map(function(t,e){var i=o(),s=t.getText(),c=t.getCharacterList();return n===u?t.merge({key:i,text:s.slice(r,a),characterList:c.slice(r,a)}):e===n?t.merge({key:i,text:s.slice(r),characterList:c.slice(r)}):e===u?t.merge({key:i,text:s.slice(0,a),characterList:c.slice(0,a)}):t.set(\"key\",i)});return d.toOrderedMap()}var o=n(13),i=n(80);t.exports=r},function(t,e){\"use strict\";function n(t){return\"handled\"===t||t===!0}t.exports=n},function(t,e){t.exports={borderColor:\"#e8e8e8\",secondaryFontColor:\"#999\",primaryFontColor:\"#000\",backShade:\"#f9f9f9\",smallBP:\"(max-width: 768px)\",container:\"styles__container___3PDJi\",readOnlyContainer:\"styles__readOnlyContainer___3hVP7\",editorContainer:\"styles__editorContainer___iw-p7\",readOnlyEditorContainer:\"styles__readOnlyEditorContainer___28ncO\",buttonClass:\"styles__buttonClass___3vmZx\",newDiscussion:\"styles__newDiscussion___3M2tI\",controlsContainer:\"styles__controlsContainer___3iK1a\",controls:\"styles__controls___1eYW4\",controlButton:\"styles__controlButton___1-_np\",controlButtonActive:\"styles__controlButtonActive___1AiPt\",editorBlockquoteStyle:\"styles__editorBlockquoteStyle___18Q7o\",editorCodeStyle:\"styles__editorCodeStyle___SQGdI\",editorH1Style:\"styles__editorH1Style___nTQHA\",editorH2Style:\"styles__editorH2Style___3oRI5\",editorH3Style:\"styles__editorH3Style___2pK4Q\"}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(131),l=n(6),f=t(l),p=n(34),d=t(p),h=n(11),y=t(h),_=n(266),g=t(_),v=n(267),m=t(v),b=function(t){function e(t){r(this,e);var n=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return n.state={editorState:c.EditorState.createEmpty()},n.focus=function(){return n.refs.editor.focus()},n.onEditorStateChange=n.onEditorStateChange.bind(n),n.handleKeyCommand=n.handleKeyCommand.bind(n),n.onTab=n.onTab.bind(n),n.toggleBlockType=n.toggleBlockType.bind(n),n.toggleInlineStyle=n.toggleInlineStyle.bind(n),n}return i(e,t),u(e,[{key:\"componentDidMount\",value:function(){var t=this.props.value;if(t){var e=(0,c.convertFromRaw)(JSON.parse(t)),n=c.EditorState.createWithContent(e);this.setState({editorState:n})}}},{key:\"onEditorStateChange\",value:function(t){var e=this.props.onChange;this.setState({editorState:t}),e(JSON.stringify((0,c.convertToRaw)(t.getCurrentContent())))}},{key:\"handleKeyCommand\",value:function(t){var e=c.RichUtils.handleKeyCommand(this.state.editorState,t);return!!e&&(this.onEditorStateChange(e),!0)}},{key:\"onTab\",value:function(t){var e=4;this.onEditorStateChange(c.RichUtils.onTab(t,this.state.editorState,e))}},{key:\"toggleBlockType\",value:function(t){this.onEditorStateChange(c.RichUtils.toggleBlockType(this.state.editorState,t))}},{key:\"toggleInlineStyle\",value:function(t){this.onEditorStateChange(c.RichUtils.toggleInlineStyle(this.state.editorState,t))}},{key:\"customBlockStyles\",value:function(t){var e=t.getType();return\"blockquote\"===e?d.default.editorBlockquoteStyle:\"code-block\"===e?d.default.editorCodeStyle:\"header-one\"===e?d.default.editorH1Style:\"header-two\"===e?d.default.editorH2Style:\"header-three\"===e?d.default.editorH3Style:void 0}},{key:\"render\",value:function(){var t=this.props,e=t.type,n=t.onSave,r=t.readOnly,o={CODE:{color:\"#e74c3c\",backgroundColor:\"#f9f9f9\",border:\"1px solid #e8e8e8\",fontFamily:\"monospace\",padding:\"2px 5px\",margin:\"0px 5px\"}},i=\"\";\"newOpinion\"===e&&(i=\"Reply\"),\"newDiscussion\"===e&&(i=\"Post Discussion\");var u=\"\";return\"newOpinion\"===e&&(u=\"Your opinion...\"),\"newDiscussion\"===e&&(u=\"Discussion summary...\"),s.default.createElement(\"div\",{className:(0,f.default)(d.default.container,r&&d.default.readOnlyContainer)},!r&&s.default.createElement(\"div\",{className:d.default.controlsContainer},s.default.createElement(m.default,{type:e,editorState:this.state.editorState,onToggle:this.toggleInlineStyle}),s.default.createElement(g.default,{type:e,editorState:this.state.editorState,onToggle:this.toggleBlockType})),s.default.createElement(\"div\",{className:(0,f.default)(d.default.editorContainer,!r&&d.default[e],r&&d.default.readOnlyEditorContainer),onClick:this.focus},s.default.createElement(c.Editor,{customStyleMap:o,blockStyleFn:this.customBlockStyles,readOnly:r,editorState:this.state.editorState,onChange:this.onEditorStateChange,placeholder:u,handleKeyCommand:this.handleKeyCommand,onTab:this.onTab,ref:\"editor\"})),!r&&s.default.createElement(y.default,{noUppercase:!0,style:{alignSelf:\"center\"},onClick:n},i))}}]),e}(a.Component);b.defaultProps={readOnly:!1,value:null,type:\"newDiscussion\",onChange:function(){},onSave:function(){}},b.propTypes={readOnly:s.default.PropTypes.bool,value:s.default.PropTypes.any,type:s.default.PropTypes.oneOf([\"newDiscussion\",\"newOpinion\"]),onChange:s.default.PropTypes.func,onSave:s.default.PropTypes.func},e.default=b}).call(this)}finally{}},function(t,e,n){t.exports=n.p+\"5bc01c7d93bd790abcdf6d4108f4e00d.jpg\"},function(t,e){t.exports=moment},function(t,e,n){(function(e){\"use strict\";function r(t,e){!i.isUndefined(t)&&i.isUndefined(t[\"Content-Type\"])&&(t[\"Content-Type\"]=e)}function o(){var t;return\"undefined\"!=typeof XMLHttpRequest?t=n(56):\"undefined\"!=typeof e&&(t=n(56)),t}var i=n(9),u=n(120),a=/^\\)\\]\\}',?\\n/,s={\"Content-Type\":\"application/x-www-form-urlencoded\"},c={adapter:o(),transformRequest:[function(t,e){return u(e,\"Content-Type\"),i.isFormData(t)||i.isArrayBuffer(t)||i.isStream(t)||i.isFile(t)||i.isBlob(t)?t:i.isArrayBufferView(t)?t.buffer:i.isURLSearchParams(t)?(r(e,\"application/x-www-form-urlencoded;charset=utf-8\"),t.toString()):i.isObject(t)?(r(e,\"application/json;charset=utf-8\"),JSON.stringify(t)):t}],transformResponse:[function(t){if(\"string\"==typeof t){t=t.replace(a,\"\");try{t=JSON.parse(t)}catch(t){}}return t}],timeout:0,xsrfCookieName:\"XSRF-TOKEN\",xsrfHeaderName:\"X-XSRF-TOKEN\",maxContentLength:-1,validateStatus:function(t){return t>=200&&t<300}};c.headers={common:{Accept:\"application/json, text/plain, */*\"}},i.forEach([\"delete\",\"get\",\"head\"],function(t){c.headers[t]={}}),i.forEach([\"post\",\"put\",\"patch\"],function(t){c.headers[t]=i.merge(s)}),t.exports=c}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var u=n(25),a=n(12),s=n(18),c=n(29),l=n(5),f=n(26),p=n(13),d=n(45),h=l.List,y=l.Record,_=l.Repeat,g={entityMap:null,blockMap:null,selectionBefore:null,selectionAfter:null},v=y(g),m=function(t){function e(){return r(this,e),o(this,t.apply(this,arguments))}return i(e,t),e.prototype.getEntityMap=function(){return c},e.prototype.getBlockMap=function(){return this.get(\"blockMap\")},e.prototype.getSelectionBefore=function(){return this.get(\"selectionBefore\")},e.prototype.getSelectionAfter=function(){return this.get(\"selectionAfter\")},e.prototype.getBlockForKey=function(t){var e=this.getBlockMap().get(t);return e},e.prototype.getKeyBefore=function(t){return this.getBlockMap().reverse().keySeq().skipUntil(function(e){return e===t}).skip(1).first()},e.prototype.getKeyAfter=function(t){return this.getBlockMap().keySeq().skipUntil(function(e){return e===t}).skip(1).first()},e.prototype.getBlockAfter=function(t){return this.getBlockMap().skipUntil(function(e,n){return n===t}).skip(1).first()},e.prototype.getBlockBefore=function(t){return this.getBlockMap().reverse().skipUntil(function(e,n){return n===t}).skip(1).first()},e.prototype.getBlocksAsArray=function(){return this.getBlockMap().toArray()},e.prototype.getFirstBlock=function(){return this.getBlockMap().first()},e.prototype.getLastBlock=function(){return this.getBlockMap().last()},e.prototype.getPlainText=function(t){return this.getBlockMap().map(function(t){return t?t.getText():\"\"}).join(t||\"\\n\")},e.prototype.getLastCreatedEntityKey=function(){return c.__getLastCreatedEntityKey()},e.prototype.hasText=function(){var t=this.getBlockMap();return t.size>1||t.first().getLength()>0},e.prototype.createEntity=function(t,e,n){return c.__create(t,e,n),this},e.prototype.mergeEntityData=function(t,e){return c.__mergeData(t,e),this},e.prototype.replaceEntityData=function(t,e){return c.__replaceData(t,e),this},e.prototype.addEntity=function(t){return c.__add(t),this},e.prototype.getEntity=function(t){return c.__get(t)},e.createFromBlockArray=function(t,n){var r=Array.isArray(t)?t:t.contentBlocks,o=u.createFromArray(r),i=o.isEmpty()?new f:f.createEmpty(o.first().getKey());return new e({blockMap:o,entityMap:n||c,selectionBefore:i,selectionAfter:i})},e.createFromText=function(t){var n=arguments.length<=1||void 0===arguments[1]?/\\r\\n?|\\n/g:arguments[1],r=t.split(n),o=r.map(function(t){return t=d(t),new s({key:p(),text:t,type:\"unstyled\",\ncharacterList:h(_(a.EMPTY,t.length))})});return e.createFromBlockArray(o)},e}(v);t.exports=m},function(t,e,n){\"use strict\";var r=n(5),o=r.Map,i=n(1),u=n(28),a=i.createElement(\"ul\",{className:u(\"public/DraftStyleDefault/ul\")}),s=i.createElement(\"ol\",{className:u(\"public/DraftStyleDefault/ol\")}),c=i.createElement(\"pre\",{className:u(\"public/DraftStyleDefault/pre\")}),l=o({\"header-one\":{element:\"h1\"},\"header-two\":{element:\"h2\"},\"header-three\":{element:\"h3\"},\"header-four\":{element:\"h4\"},\"header-five\":{element:\"h5\"},\"header-six\":{element:\"h6\"},\"unordered-list-item\":{element:\"li\",wrapper:a},\"ordered-list-item\":{element:\"li\",wrapper:s},blockquote:{element:\"blockquote\"},atomic:{element:\"figure\"},\"code-block\":{element:\"pre\",wrapper:c},unstyled:{element:\"div\",aliasedElements:[\"p\"]}});t.exports=l},function(t,e,n){\"use strict\";var r=n(15),o=r.isPlatform(\"Mac OS X\"),i={isCtrlKeyCommand:function(t){return!!t.ctrlKey&&!t.altKey},isOptionKeyCommand:function(t){return o&&t.altKey},hasCommandModifier:function(t){return o?!!t.metaKey&&!t.altKey:i.isCtrlKeyCommand(t)}};t.exports=i},function(t,e,n){\"use strict\";function r(t){for(var e=t;e&&e!==document.documentElement;){var n=o(e);if(null!=n)return n;e=e.parentNode}return null}var o=n(74);t.exports=r},function(t,e){\"use strict\";function n(t,e){var n;if(e.isCollapsed()){var o=e.getAnchorKey(),i=e.getAnchorOffset();return i>0?(n=t.getBlockForKey(o).getEntityAt(i-1),r(t.getEntityMap(),n)):null}var u=e.getStartKey(),a=e.getStartOffset(),s=t.getBlockForKey(u);return n=a===s.getLength()?null:s.getEntityAt(a),r(t.getEntityMap(),n)}function r(t,e){if(e){var n=t.__get(e);return\"MUTABLE\"===n.getMutability()?e:null}return null}t.exports=n},function(t,e){\"use strict\";function n(t,e){var n=t.getSelection(),r=t.getCurrentContent(),o=n.getStartKey(),i=n.getStartOffset(),u=o,a=0;if(e>i){var s=r.getKeyBefore(o);if(null==s)u=o;else{u=s;var c=r.getBlockForKey(s);a=c.getText().length}}else a=i-e;return n.merge({focusKey:u,focusOffset:a,isBackward:!0})}t.exports=n},function(t,e){\"use strict\";function n(t){return t.replace(r,\"\")}var r=new RegExp(\"\\r\",\"g\");t.exports=n},function(t,e){t.exports={loadingWrapper:\"styles__loadingWrapper___3oy4O\"}},function(t,e){\"use strict\";t.exports={BACKSPACE:8,TAB:9,RETURN:13,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46,COMMA:188,PERIOD:190,A:65,Z:90,ZERO:48,NUMPAD_0:96,NUMPAD_9:105}},function(t,e,n){\"use strict\";function r(t,e){var n=i.get(t,e);return\"auto\"===n||\"scroll\"===n}var o=n(229),i={get:o,getScrollParent:function(t){if(!t)return null;for(var e=t.ownerDocument;t&&t!==e.body;){if(r(t,\"overflow\")||r(t,\"overflowY\")||r(t,\"overflowX\"))return t;t=t.parentNode}return e.defaultView||e.parentWindow}};t.exports=i},function(t,e,n){(function(e){\"use strict\";function r(t){return t===f||t===p}function o(t){return r(t)?void 0:\"production\"!==e.env.NODE_ENV?c(!1,\"`dir` must be a strong direction to be converted to HTML Direction\"):c(!1),t===f?\"ltr\":\"rtl\"}function i(t,n){return r(t)?void 0:\"production\"!==e.env.NODE_ENV?c(!1,\"`dir` must be a strong direction to be converted to HTML Direction\"):c(!1),r(n)?void 0:\"production\"!==e.env.NODE_ENV?c(!1,\"`otherDir` must be a strong direction to be converted to HTML Direction\"):c(!1),t===n?null:o(t)}function u(t){d=t}function a(){u(f)}function s(){return d||this.initGlobalDir(),d?void 0:\"production\"!==e.env.NODE_ENV?c(!1,\"Global direction not set.\"):c(!1),d}var c=n(3),l=\"NEUTRAL\",f=\"LTR\",p=\"RTL\",d=null,h={NEUTRAL:l,LTR:f,RTL:p,isStrong:r,getHTMLDir:o,getHTMLDirIfDifferent:i,setGlobalDir:u,initGlobalDir:a,getGlobalDir:s};t.exports=h}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t){var e=o(t.ownerDocument||t.document);t.Window&&t instanceof t.Window&&(t=e);var n=i(t),r=t===e?t.ownerDocument.documentElement:t,u=t.scrollWidth-r.clientWidth,a=t.scrollHeight-r.clientHeight;return n.x=Math.max(0,Math.min(n.x,u)),n.y=Math.max(0,Math.min(n.y,a)),n}var o=n(226),i=n(230);t.exports=r},function(t,e,n){(function(e){\"use strict\";var r=n(22),o=r;\"production\"!==e.env.NODE_ENV&&!function(){var t=function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var o=0,i=\"Warning: \"+t.replace(/%s/g,function(){return n[o++]});\"undefined\"!=typeof console&&console.error(i);try{throw new Error(i)}catch(t){}};o=function(e,n){if(void 0===n)throw new Error(\"`warning(condition, format, ...args)` requires a warning message argument\");if(0!==n.indexOf(\"Failed Composite propType: \")&&!e){for(var r=arguments.length,o=Array(r>2?r-2:0),i=2;i<r;i++)o[i-2]=arguments[i];t.apply(void 0,[n].concat(o))}}}(),t.exports=o}).call(e,n(2))},function(t,e,n){(function(e){if(\"production\"!==e.env.NODE_ENV){var r=\"function\"==typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,o=function(t){return\"object\"==typeof t&&null!==t&&t.$$typeof===r},i=!0;t.exports=n(252)(o,i)}else t.exports=n(251)()}).call(e,n(2))},function(t,e){\"use strict\";var n=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";t.exports=n},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(6),l=t(c),f=n(208),p=t(f),d=n(11),h=t(d),y=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){var t=this.props,e=t.name,n=t.withRemove,r=t.removeAction;return s.default.createElement(\"div\",{className:(0,l.default)(p.default.tag,n&&p.default.tagWithRemove)},e,n&&s.default.createElement(h.default,{onClick:r,className:p.default.removeButton},s.default.createElement(\"i\",{className:\"fa fa-close\"})))}}]),e}(a.Component);y.defaultProps={name:\"\",withRemove:!1,removeAction:function(){}},y.propTypes={name:s.default.PropTypes.string.isRequired,withRemove:s.default.PropTypes.bool,removeAction:s.default.PropTypes.func},e.default=y}).call(this)}finally{}},function(t,e){\"use strict\";function n(t){\"undefined\"!=typeof console&&\"function\"==typeof console.error&&console.error(t);try{throw new Error(t)}catch(t){}}e.__esModule=!0,e.default=n},function(t,e,n){(function(e){\"use strict\";var r=n(9),o=n(112),i=n(115),u=n(121),a=n(119),s=n(59),c=\"undefined\"!=typeof window&&window.btoa&&window.btoa.bind(window)||n(114);t.exports=function(t){return new Promise(function(l,f){var p=t.data,d=t.headers;r.isFormData(p)&&delete d[\"Content-Type\"];var h=new XMLHttpRequest,y=\"onreadystatechange\",_=!1;if(\"test\"===e.env.NODE_ENV||\"undefined\"==typeof window||!window.XDomainRequest||\"withCredentials\"in h||a(t.url)||(h=new window.XDomainRequest,y=\"onload\",_=!0,h.onprogress=function(){},h.ontimeout=function(){}),t.auth){var g=t.auth.username||\"\",v=t.auth.password||\"\";d.Authorization=\"Basic \"+c(g+\":\"+v)}if(h.open(t.method.toUpperCase(),i(t.url,t.params,t.paramsSerializer),!0),h.timeout=t.timeout,h[y]=function(){if(h&&(4===h.readyState||_)&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf(\"file:\"))){var e=\"getAllResponseHeaders\"in h?u(h.getAllResponseHeaders()):null,n=t.responseType&&\"text\"!==t.responseType?h.response:h.responseText,r={data:n,status:1223===h.status?204:h.status,statusText:1223===h.status?\"No Content\":h.statusText,headers:e,config:t,request:h};o(l,f,r),h=null}},h.onerror=function(){f(s(\"Network Error\",t)),h=null},h.ontimeout=function(){f(s(\"timeout of \"+t.timeout+\"ms exceeded\",t,\"ECONNABORTED\")),h=null},r.isStandardBrowserEnv()){var m=n(117),b=(t.withCredentials||a(t.url))&&t.xsrfCookieName?m.read(t.xsrfCookieName):void 0;b&&(d[t.xsrfHeaderName]=b)}if(\"setRequestHeader\"in h&&r.forEach(d,function(t,e){\"undefined\"==typeof p&&\"content-type\"===e.toLowerCase()?delete d[e]:h.setRequestHeader(e,t)}),t.withCredentials&&(h.withCredentials=!0),t.responseType)try{h.responseType=t.responseType}catch(t){if(\"json\"!==h.responseType)throw t}\"function\"==typeof t.onDownloadProgress&&h.addEventListener(\"progress\",t.onDownloadProgress),\"function\"==typeof t.onUploadProgress&&h.upload&&h.upload.addEventListener(\"progress\",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then(function(t){h&&(h.abort(),f(t),h=null)}),void 0===p&&(p=null),h.send(p)})}}).call(e,n(2))},function(t,e){\"use strict\";function n(t){this.message=t}n.prototype.toString=function(){return\"Cancel\"+(this.message?\": \"+this.message:\"\")},n.prototype.__CANCEL__=!0,t.exports=n},function(t,e){\"use strict\";t.exports=function(t){return!(!t||!t.__CANCEL__)}},function(t,e,n){\"use strict\";var r=n(111);t.exports=function(t,e,n,o){var i=new Error(t);return r(i,e,n,o)}},function(t,e){\"use strict\";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return t.apply(e,n)}}},function(t,e,n){\"use strict\";function r(t,e){var n=[],r=t.map(function(t){return t.getStyle()}).toList();return a(r,o,f,function(t,r){n.push(new h({start:t+e,end:r+e}))}),s(n)}function o(t,e){return t===e}var i=n(5),u=n(22),a=n(31),s=i.List,c=i.Repeat,l=i.Record,f=u.thatReturnsTrue,p=\"-\",d={start:null,end:null},h=l(d),y={start:null,end:null,decoratorKey:null,leaves:null},_=l(y),g={generate:function(t,e,n){var i=e.getLength();if(!i)return s.of(new _({start:0,end:0,decoratorKey:null,leaves:s.of(new h({start:0,end:0}))}));var u=[],l=n?n.getDecorations(e,t):s(c(null,i)),p=e.getCharacterList();return a(l,o,f,function(t,e){u.push(new _({start:t,end:e,decoratorKey:l.get(t),leaves:r(p.slice(t,e).toList(),t)}))}),s(u)},getFingerprint:function(t){return t.map(function(t){var e=t.get(\"decoratorKey\"),n=null!==e?e+\".\"+(t.get(\"end\")-t.get(\"start\")):\"\";return\"\"+n+\".\"+t.get(\"leaves\").size}).join(p)}};t.exports=g},function(t,e){\"use strict\";t.exports={BOLD:{fontWeight:\"bold\"},CODE:{fontFamily:\"monospace\",wordWrap:\"break-word\"},ITALIC:{fontStyle:\"italic\"},STRIKETHROUGH:{textDecoration:\"line-through\"},UNDERLINE:{textDecoration:\"underline\"}}},function(t,e,n){(function(e){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function u(t,e){return t.getAnchorKey()===e||t.getFocusKey()===e}var a=n(17),s=a||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},c=n(137),l=n(30),f=n(1),p=n(20),d=n(82),h=n(48),y=n(83),_=n(49),g=n(28),v=n(227),m=n(50),b=n(231),E=n(3),S=n(10),w=10,O=function(t){function n(){return r(this,n),o(this,t.apply(this,arguments))}return i(n,t),n.prototype.shouldComponentUpdate=function(t){return this.props.block!==t.block||this.props.tree!==t.tree||this.props.direction!==t.direction||u(t.selection,t.block.getKey())&&t.forceSelection},n.prototype.componentDidMount=function(){var t=this.props.selection,n=t.getEndKey();if(t.getHasFocus()&&n===this.props.block.getKey()){var r,o=p.findDOMNode(this),i=h.getScrollParent(o),u=m(i);if(i===window){var a=v(o),s=a.y+a.height,c=b().height;r=s-c,r>0&&window.scrollTo(u.x,u.y+r+w)}else{o instanceof HTMLElement?void 0:\"production\"!==e.env.NODE_ENV?E(!1,\"blockNode is not an HTMLElement\"):E(!1);var l=o.offsetHeight+o.offsetTop,f=i.offsetHeight+u.y;r=l-f,r>0&&d.setTop(i,d.getTop(i)+r+w)}}},n.prototype._renderChildren=function(){var t=this,e=this.props.block,n=e.getKey(),r=e.getText(),o=this.props.tree.size-1,i=u(this.props.selection,n);return this.props.tree.map(function(u,a){var p=u.get(\"leaves\"),d=p.size-1,h=p.map(function(u,s){var p=l.encode(n,a,s),h=u.get(\"start\"),y=u.get(\"end\");return f.createElement(c,{key:p,offsetKey:p,block:e,start:h,selection:i?t.props.selection:void 0,forceSelection:t.props.forceSelection,text:r.slice(h,y),styleSet:e.getInlineStyleAt(h),customStyleMap:t.props.customStyleMap,customStyleFn:t.props.customStyleFn,isLast:a===o&&s===d})}).toArray(),g=u.get(\"decoratorKey\");if(null==g)return h;if(!t.props.decorator)return h;var v=S(t.props.decorator),m=v.getComponentForKey(g);if(!m)return h;var b=v.getPropsForKey(g),E=l.encode(n,a,0),w=r.slice(p.first().get(\"start\"),p.last().get(\"end\")),O=_.getHTMLDirIfDifferent(y.getDirection(w),t.props.direction);return f.createElement(m,s({},b,{contentState:t.props.contentState,decoratedText:w,dir:O,key:E,entityKey:e.getEntityAt(u.get(\"start\")),offsetKey:E}),h)}).toArray()},n.prototype.render=function(){var t=this.props,e=t.direction,n=t.offsetKey,r=g({\"public/DraftStyleDefault/block\":!0,\"public/DraftStyleDefault/ltr\":\"LTR\"===e,\"public/DraftStyleDefault/rtl\":\"RTL\"===e});return f.createElement(\"div\",{\"data-offset-key\":n,className:r},this._renderChildren())},n}(f.Component);t.exports=O}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var u=n(5),a=u.Record,s=a({type:\"TOKEN\",mutability:\"IMMUTABLE\",data:Object}),c=function(t){function e(){return r(this,e),o(this,t.apply(this,arguments))}return i(e,t),e.prototype.getType=function(){return this.get(\"type\")},e.prototype.getMutability=function(){return this.get(\"mutability\")},e.prototype.getData=function(){return this.get(\"data\")},e}(s);t.exports=c},function(t,e){\"use strict\";var n={draft_killswitch_allow_nontextnodes:!1,draft_segmented_entities_behavior:!1};t.exports=n},function(t,e,n){\"use strict\";function r(t,e){var n=e?f.exec(t):c.exec(t);return n?n[0]:t}var o=n(218),i=o.getPunctuation(),u=\"['‘’]\",a=\"\\\\s|(?![_])\"+i,s=\"^(?:\"+a+\")*(?:\"+u+\"|(?!\"+a+\").)*(?:(?!\"+a+\").)\",c=new RegExp(s),l=\"(?:(?!\"+a+\").)(?:\"+u+\"|(?!\"+a+\").)*(?:\"+a+\")*$\",f=new RegExp(l),p={getBackward:function(t){return r(t,!0)},getForward:function(t){return r(t,!1)}};t.exports=p},function(t,e){\"use strict\";var n={stringify:function(t){return\"_\"+String(t)},unstringify:function(t){return t.slice(1)}};t.exports=n},function(t,e,n){(function(e){\"use strict\";function r(){return{text:\"\",inlines:[],entities:[],blocks:[]}}function o(t){var e=new Array(1);return t&&(e[0]=t),{text:R,inlines:[k()],entities:e,blocks:[]}}function i(){return{text:\"\\n\",inlines:[k()],entities:new Array(1),blocks:[]}}function u(t,e){return{text:\"\\r\",inlines:[k()],entities:new Array(1),blocks:[{type:t,depth:Math.max(0,Math.min(F,e))}]}}function a(t,e){return\"li\"===t?\"ol\"===e?\"ordered-list-item\":\"unordered-list-item\":null}function s(t){var e=t.get(\"unstyled\").element,n=new x([]);return t.forEach(function(t){t.aliasedElements&&t.aliasedElements.forEach(function(t){n=n.add(t)}),n=n.add(t.element)}),n.filter(function(t){return t&&t!==e}).toArray().sort()}function c(t,e,n){for(var r=0;r<n.length;r++){var o=n[r](t,e);if(o)return o}return null}function l(t,e,n){var r=n.filter(function(e){return e.element===t||e.wrapper===t||e.aliasedElements&&e.aliasedElements.some(function(e){return e===t})}).keySeq().toSet().toArray().sort();switch(r.length){case 0:return\"unstyled\";case 1:return r[0];default:return c(t,e,[a])||\"unstyled\"}}function f(t,e,n){var r=z[t];return r?n=n.add(r).toOrderedSet():e instanceof HTMLElement&&!function(){var t=e;n=n.withMutations(function(e){var n=t.style.fontWeight,r=t.style.fontStyle,o=t.style.textDecoration;H.indexOf(n)>=0?e.add(\"BOLD\"):G.indexOf(n)>=0&&e.remove(\"BOLD\"),\"italic\"===r?e.add(\"ITALIC\"):\"normal\"===r&&e.remove(\"ITALIC\"),\"underline\"===o&&e.add(\"UNDERLINE\"),\"line-through\"===o&&e.add(\"STRIKETHROUGH\"),\"none\"===o&&(e.remove(\"UNDERLINE\"),e.remove(\"STRIKETHROUGH\"))}).toOrderedSet()}(),n}function p(t,e){var n=t.text.slice(-1),r=e.text.slice(0,1);if(\"\\r\"===n&&\"\\r\"===r&&(t.text=t.text.slice(0,-1),t.inlines.pop(),t.entities.pop(),t.blocks.pop()),\"\\r\"===n){if(e.text===R||\"\\n\"===e.text)return t;r!==R&&\"\\n\"!==r||(e.text=e.text.slice(1),e.inlines.shift(),e.entities.shift())}return{text:t.text+e.text,inlines:t.inlines.concat(e.inlines),entities:t.entities.concat(e.entities),blocks:t.blocks.concat(e.blocks)}}function d(t,e){return e.some(function(e){return t.indexOf(\"<\"+e)!==-1})}function h(t){t instanceof HTMLAnchorElement?void 0:\"production\"!==e.env.NODE_ENV?I(!1,\"Link must be an HTMLAnchorElement.\"):I(!1);var n=t.protocol;return\"http:\"===n||\"https:\"===n||\"mailto:\"===n}function y(t,e,n,a,s,c,d,_,g){var m=e.nodeName.toLowerCase(),b=!1,E=\"unstyled\",w=v,T=t;if(\"#text\"===m){var C=e.textContent;return\"\"===C.trim()&&\"pre\"!==s?{chunk:o(g),entityMap:t}:(\"pre\"!==s&&(C=C.replace(L,R)),v=m,{chunk:{text:C,inlines:Array(C.length).fill(n),entities:Array(C.length).fill(g),blocks:[]},entityMap:t})}if(v=m,\"br\"===m)return\"br\"!==w||s&&\"unstyled\"!==l(s,a,_)?{chunk:i(),entityMap:t}:{chunk:u(\"unstyled\",d),entityMap:t};\"img\"===m&&e instanceof HTMLImageElement&&e.attributes.getNamedItem(\"src\")&&e.attributes.getNamedItem(\"src\").value&&!function(){var t=e,n={};W.forEach(function(e){var r=t.getAttribute(e);r&&(n[e]=r)});var r=new O(n.src).toString();e.textContent=r,g=S.__create(\"IMAGE\",\"MUTABLE\",n||{})}();var I=r(),N=null;n=f(m,e,n),\"ul\"!==m&&\"ol\"!==m||(a&&(d+=1),a=m),s||c.indexOf(m)===-1?a&&\"li\"===s&&\"li\"===m&&(I=u(l(m,a,_),d),s=m,b=!0,E=\"ul\"===a?\"unordered-list-item\":\"ordered-list-item\"):(I=u(l(m,a,_),d),s=m,b=!0);var A=e.firstChild;null!=A&&(m=A.nodeName.toLowerCase());for(var D=null;A;){A instanceof HTMLAnchorElement&&A.href&&h(A)?!function(){var t=A,e={};q.forEach(function(n){var r=t.getAttribute(n);r&&(e[n]=r)}),e.url=new O(t.href).toString(),D=S.__create(\"LINK\",\"MUTABLE\",e||{})}():D=void 0;var x=y(T,A,n,a,s,c,d,_,D||g),P=x.chunk,k=x.entityMap;N=P,T=k,I=p(I,N);var M=A.nextSibling;M&&c.indexOf(m)>=0&&s&&(I=p(I,i())),M&&(m=M.nodeName.toLowerCase()),A=M}return b&&(I=p(I,u(E,d))),{chunk:I,entityMap:T}}function _(t,e,n,r){t=t.trim().replace(j,\"\").replace(U,R).replace(B,\"\").replace(K,\"\");var o=s(n),i=e(t);if(!i)return null;v=null;var u=d(t,o)?o:[\"div\"],a=y(r,i,k(),\"ul\",null,u,-1,n),c=a.chunk,l=a.entityMap;return 0===c.text.indexOf(\"\\r\")&&(c={text:c.text.slice(1),inlines:c.inlines.slice(1),entities:c.entities.slice(1),blocks:c.blocks}),\"\\r\"===c.text.slice(-1)&&(c.text=c.text.slice(0,-1),c.inlines=c.inlines.slice(0,-1),c.entities=c.entities.slice(0,-1),c.blocks.pop()),0===c.blocks.length&&c.blocks.push({type:\"unstyled\",depth:0}),c.text.split(\"\\r\").length===c.blocks.length+1&&c.blocks.unshift({type:\"unstyled\",depth:0}),{chunk:c,entityMap:l}}function g(t){var e=arguments.length<=1||void 0===arguments[1]?C:arguments[1],n=arguments.length<=2||void 0===arguments[2]?E:arguments[2],r=_(t,e,n,S);if(null==r)return null;var o=r.chunk,i=r.entityMap,u=0;return{contentBlocks:o.text.split(\"\\r\").map(function(t,e){t=A(t);var n=u+t.length,r=N(o).inlines.slice(u,n),i=N(o).entities.slice(u,n),a=P(r.map(function(t,e){var n={style:t,entity:null};return i[e]&&(n.entity=i[e]),m.create(n)}));return u=n+1,new b({key:T(),type:N(o).blocks[e].type,depth:N(o).blocks[e].depth,text:t,characterList:a})}),entityMap:i}}var v,m=n(12),b=n(18),E=n(40),S=n(29),w=n(5),O=n(219),T=n(13),C=n(73),I=n(3),N=n(10),A=n(45),D=n(5),x=D.Set,P=w.List,k=w.OrderedSet,M=\"&nbsp;\",R=\" \",F=4,j=new RegExp(\"\\r\",\"g\"),L=new RegExp(\"\\n\",\"g\"),U=new RegExp(M,\"g\"),B=new RegExp(\"&#13;?\",\"g\"),K=new RegExp(\"&#8203;?\",\"g\"),H=[\"bold\",\"bolder\",\"500\",\"600\",\"700\",\"800\",\"900\"],G=[\"light\",\"lighter\",\"100\",\"200\",\"300\",\"400\"],z={b:\"BOLD\",code:\"CODE\",del:\"STRIKETHROUGH\",em:\"ITALIC\",i:\"ITALIC\",s:\"STRIKETHROUGH\",strike:\"STRIKETHROUGH\",strong:\"BOLD\",u:\"UNDERLINE\"},q=[\"className\",\"href\",\"rel\",\"target\",\"title\"],W=[\"alt\",\"className\",\"height\",\"src\",\"width\"];t.exports=g}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t){return f&&t.altKey||y(t)}function o(t){return h(t)?t.shiftKey?\"redo\":\"undo\":null}function i(t){return p&&t.shiftKey?null:r(t)?\"delete-word\":\"delete\"}function u(t){return h(t)&&f?\"backspace-to-start-of-line\":r(t)?\"backspace-word\":\"backspace\"}function a(t){switch(t.keyCode){case 66:return h(t)?\"bold\":null;case 68:return y(t)?\"delete\":null;case 72:return y(t)?\"backspace\":null;case 73:return h(t)?\"italic\":null;case 74:return h(t)?\"code\":null;case 75:return!p&&y(t)?\"secondary-cut\":null;case 77:return y(t)?\"split-block\":null;case 79:return y(t)?\"split-block\":null;case 84:return f&&y(t)?\"transpose-characters\":null;case 85:return h(t)?\"underline\":null;case 87:return f&&y(t)?\"backspace-word\":null;case 89:return y(t)?p?\"redo\":\"secondary-paste\":null;case 90:return o(t)||null;case c.RETURN:return\"split-block\";case c.DELETE:return i(t);case c.BACKSPACE:return u(t);case c.LEFT:return d&&h(t)?\"move-selection-to-start-of-block\":null;case c.RIGHT:return d&&h(t)?\"move-selection-to-end-of-block\":null;default:return null}}var s=n(41),c=n(47),l=n(15),f=l.isPlatform(\"Mac OS X\"),p=l.isPlatform(\"Windows\"),d=f&&l.isBrowser(\"Firefox < 29\"),h=s.hasCommandModifier,y=s.isCtrlKeyCommand;t.exports=a},function(t,e,n){(function(e){\"use strict\";function r(t,e,n,r,o,i){var a=n.nodeType===Node.TEXT_NODE,c=o.nodeType===Node.TEXT_NODE;if(a&&c)return{selectionState:l(t,p(s(n)),r,p(s(o)),i),needsRecovery:!1};var f=null,d=null,h=!0;return a?(f={key:p(s(n)),offset:r},d=u(e,o,i)):c?(d={key:p(s(o)),offset:i},f=u(e,n,r)):(f=u(e,n,r),d=u(e,o,i),n===o&&r===i&&(h=!!n.firstChild&&\"BR\"!==n.firstChild.nodeName)),{selectionState:l(t,f.key,f.offset,d.key,d.offset),needsRecovery:h}}function o(t){for(;t.firstChild&&c(t.firstChild);)t=t.firstChild;return t}function i(t){for(;t.lastChild&&c(t.lastChild);)t=t.lastChild;return t}function u(t,n,r){var u=n,l=s(u);if(null!=l||t&&(t===u||t.firstChild===u)?void 0:\"production\"!==e.env.NODE_ENV?f(!1,\"Unknown node in selection range.\"):f(!1),t===u&&(u=u.firstChild,u instanceof Element&&\"true\"===u.getAttribute(\"data-contents\")?void 0:\"production\"!==e.env.NODE_ENV?f(!1,\"Invalid DraftEditorContents structure.\"):f(!1),r>0&&(r=u.childNodes.length)),0===r){var d=null;if(null!=l)d=l;else{var h=o(u);d=p(c(h))}return{key:d,offset:0}}var y=u.childNodes[r-1],_=null,g=null;if(c(y)){var v=i(y);_=p(c(v)),g=a(v)}else _=p(l),g=a(y);return{key:_,offset:g}}function a(t){var e=t.textContent;return\"\\n\"===e?0:e.length}var s=n(42),c=n(74),l=n(76),f=n(3),p=n(10);t.exports=r}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t){var e=t.getSelection();return e.isCollapsed()?null:o(t.getCurrentContent(),e)}var o=n(32);t.exports=r},function(t,e,n){(function(e){\"use strict\";function r(t){for(var n=t.cloneRange(),r=[],o=t.endContainer;null!=o;o=o.parentNode){var u=o===t.commonAncestorContainer;u?n.setStart(t.startContainer,t.startOffset):n.setStart(n.endContainer,0);var a=Array.from(n.getClientRects());if(r.push(a),u){var s;return r.reverse(),(s=[]).concat.apply(s,r)}n.setEndBefore(o)}\"production\"!==e.env.NODE_ENV?i(!1,\"Found an unexpected detached subtree when getting range client rects.\"):i(!1)}var o=n(15),i=n(3),u=o.isBrowser(\"Chrome\"),a=u?r:function(t){return Array.from(t.getClientRects())};t.exports=a}).call(e,n(2))},function(t,e,n){(function(e){\"use strict\";function r(t){var n,r=null;return!u&&document.implementation&&document.implementation.createHTMLDocument&&(n=document.implementation.createHTMLDocument(\"foo\"),n.documentElement?void 0:\"production\"!==e.env.NODE_ENV?i(!1,\"Missing doc.documentElement\"):i(!1),n.documentElement.innerHTML=t,r=n.getElementsByTagName(\"body\")[0]),r}var o=n(15),i=n(3),u=o.isBrowser(\"IE <= 9\");t.exports=r}).call(e,n(2))},function(t,e){\"use strict\";function n(t){if(t instanceof Element){var e=t.getAttribute(\"data-offset-key\");if(e)return e;for(var r=0;r<t.childNodes.length;r++){var o=n(t.childNodes[r]);if(o)return o}}return null}t.exports=n},function(t,e){(function(e){\"use strict\";function n(t,e){var n=0,o=[];t.forEach(function(i){r(i,function(r){n++,r&&o.push(r.slice(0,u)),n==t.length&&e(o.join(\"\\r\"))})})}function r(t,n){if(!e.FileReader||t.type&&!(t.type in i))return void n(\"\");if(\"\"===t.type){var r=\"\";return o.test(t.name)&&(r=t.name.replace(o,\"\")),void n(r)}var u=new FileReader;u.onload=function(){n(u.result)},u.onerror=function(){n(\"\")},u.readAsText(t)}var o=/\\.textClipping$/,i={\"text/plain\":!0,\"text/html\":!0,\"text/rtf\":!0},u=5e3;t.exports=n}).call(e,function(){return this}())},function(t,e,n){(function(e){\"use strict\";function r(t,n,r,u,a){var s=i(t.getSelection());if(!(\"production\"===e.env.NODE_ENV||n&&u))return console.warn(\"Invalid selection state.\",arguments,t.toJS()),s;var c=o.decode(n),l=c.blockKey,f=t.getBlockTree(l).getIn([c.decoratorKey,\"leaves\",c.leafKey]),p=o.decode(u),d=p.blockKey,h=t.getBlockTree(d).getIn([p.decoratorKey,\"leaves\",p.leafKey]),y=f.get(\"start\"),_=h.get(\"start\"),g=f?y+r:null,v=h?_+a:null,m=s.getAnchorKey()===l&&s.getAnchorOffset()===g&&s.getFocusKey()===d&&s.getFocusOffset()===v;if(m)return s;var b=!1;if(l===d){var E=f.get(\"end\"),S=h.get(\"end\");b=_===y&&S===E?a<r:_<y}else{var w=t.getCurrentContent().getBlockMap().keySeq().skipUntil(function(t){return t===l||t===d}).first();b=w===d}return s.merge({anchorKey:l,anchorOffset:g,focusKey:d,focusOffset:v,isBackward:b})}var o=n(30),i=n(10);t.exports=r}).call(e,n(2))},function(t,e){\"use strict\";function n(t,e,n){if(n===t.count())e.forEach(function(e){t=t.push(e)});else if(0===n)e.reverse().forEach(function(e){t=t.unshift(e)});else{var r=t.slice(0,n),o=t.slice(n);t=r.concat(e,o).toList()}return t}t.exports=n},function(t,e){\"use strict\";function n(t){var e=t.getSelection(),n=e.getAnchorKey(),r=t.getBlockTree(n),o=e.getStartOffset(),i=!1;return r.some(function(t){return o===t.get(\"start\")?(i=!0,!0):o<t.get(\"end\")&&t.get(\"leaves\").some(function(t){var e=t.get(\"start\");return o===e&&(i=!0,!0)})}),i}t.exports=n},function(t,e){\"use strict\";function n(t,e){var n,r=t.getSelection(),o=r.getStartKey(),i=r.getStartOffset(),u=t.getCurrentContent(),a=o,s=u.getBlockForKey(o);return e>s.getText().length-i?(a=u.getKeyAfter(o),n=0):n=i+e,r.merge({focusKey:a,focusOffset:n})}t.exports=n},function(t,e,n){(function(e){\"use strict\";function r(t,e){var n=t.getBlockMap(),r=t.getEntityMap(),o={},u=e.getStartKey(),a=e.getStartOffset(),s=n.get(u),c=i(r,s,a);c!==s&&(o[u]=c);var l=e.getEndKey(),f=e.getEndOffset(),p=n.get(l);u===l&&(p=c);var d=i(r,p,f);return d!==p&&(o[l]=d),Object.keys(o).length?t.merge({blockMap:n.merge(o),selectionAfter:e}):t.set(\"selectionAfter\",e)}function o(t,n,r){var o;return a(t,function(t,e){return t.getEntity()===e.getEntity()},function(t){return t.getEntity()===n},function(t,e){t<=r&&e>=r&&(o={start:t,end:e})}),\"object\"!=typeof o?\"production\"!==e.env.NODE_ENV?s(!1,\"Removal range must exist within character list.\"):s(!1):void 0,o}function i(t,e,n){var r=e.getCharacterList(),i=n>0?r.get(n-1):void 0,a=n<r.count()?r.get(n):void 0,s=i?i.getEntity():void 0,c=a?a.getEntity():void 0;if(c&&c===s){var l=t.__get(c);if(\"MUTABLE\"!==l.getMutability()){for(var f,p=o(r,c,n),d=p.start,h=p.end;d<h;)f=r.get(d),r=r.set(d,u.applyEntity(f,null)),d++;return e.set(\"characterList\",r)}}return e}var u=n(12),a=n(31),s=n(3);t.exports=r}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t){if(\"file\"==t.kind)return t.getAsFile()}var i=n(217),u=n(224),a=n(22),s=new RegExp(\"\\r\\n\",\"g\"),c=\"\\n\",l={\"text/rtf\":1,\"text/html\":1},f=function(){function t(e){r(this,t),this.data=e,this.types=e.types?u(e.types):[]}return t.prototype.isRichText=function(){return!(!this.getHTML()||!this.getText())||!this.isImage()&&this.types.some(function(t){return l[t]})},t.prototype.getText=function(){var t;return this.data.getData&&(this.types.length?this.types.indexOf(\"text/plain\")!=-1&&(t=this.data.getData(\"text/plain\")):t=this.data.getData(\"Text\")),t?t.replace(s,c):null},t.prototype.getHTML=function(){if(this.data.getData){if(!this.types.length)return this.data.getData(\"Text\");if(this.types.indexOf(\"text/html\")!=-1)return this.data.getData(\"text/html\")}},t.prototype.isLink=function(){return this.types.some(function(t){return t.indexOf(\"Url\")!=-1||t.indexOf(\"text/uri-list\")!=-1||t.indexOf(\"text/x-moz-url\")})},t.prototype.getLink=function(){if(this.data.getData){if(this.types.indexOf(\"text/x-moz-url\")!=-1){var t=this.data.getData(\"text/x-moz-url\").split(\"\\n\");return t[0]}return this.types.indexOf(\"text/uri-list\")!=-1?this.data.getData(\"text/uri-list\"):this.data.getData(\"url\")}return null},t.prototype.isImage=function t(){var t=this.types.some(function(t){return t.indexOf(\"application/x-moz-file\")!=-1});if(t)return!0;for(var e=this.getFiles(),n=0;n<e.length;n++){var r=e[n].type;if(!i.isImage(r))return!1}return!0},t.prototype.getCount=function(){return this.data.hasOwnProperty(\"items\")?this.data.items.length:this.data.hasOwnProperty(\"mozItemCount\")?this.data.mozItemCount:this.data.files?this.data.files.length:null},t.prototype.getFiles=function(){return this.data.items?Array.prototype.slice.call(this.data.items).map(o).filter(a.thatReturnsArgument):this.data.files?Array.prototype.slice.call(this.data.files):[]},t.prototype.hasFiles=function(){return this.getFiles().length>0},t}();t.exports=f},function(t,e){\"use strict\";function n(t,e){return!!e&&(t===e.documentElement||t===e.body)}var r={getTop:function(t){var e=t.ownerDocument;return n(t,e)?e.body.scrollTop||e.documentElement.scrollTop:t.scrollTop},setTop:function(t,e){var r=t.ownerDocument;n(t,r)?r.body.scrollTop=r.documentElement.scrollTop=e:t.scrollTop=e},getLeft:function(t){var e=t.ownerDocument;return n(t,e)?e.body.scrollLeft||e.documentElement.scrollLeft:t.scrollLeft},setLeft:function(t,e){var r=t.ownerDocument;n(t,r)?r.body.scrollLeft=r.documentElement.scrollLeft=e:t.scrollLeft=e}};t.exports=r},function(t,e,n){(function(e){\"use strict\";function r(t){var e=p.exec(t);return null==e?null:e[0]}function o(t){var e=r(t);return null==e?c.NEUTRAL:d.exec(e)?c.RTL:c.LTR}function i(t,e){if(e=e||c.NEUTRAL,!t.length)return e;var n=o(t);return n===c.NEUTRAL?e:n}function u(t,n){return n||(n=c.getGlobalDir()),c.isStrong(n)?void 0:\"production\"!==e.env.NODE_ENV?l(!1,\"Fallback direction must be a strong direction\"):l(!1),i(t,n)}function a(t,e){return u(t,e)===c.LTR}function s(t,e){return u(t,e)===c.RTL}var c=n(49),l=n(3),f={L:\"A-Za-zªµºÀ-ÖØ-öø-ƺƻƼ-ƿǀ-ǃǄ-ʓʔʕ-ʯʰ-ʸʻ-ˁː-ˑˠ-ˤˮͰ-ͳͶ-ͷͺͻ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҂Ҋ-ԯԱ-Ֆՙ՚-՟ա-և։ःऄ-हऻऽा-ीॉ-ौॎ-ॏॐक़-ॡ।-॥०-९॰ॱॲ-ঀং-ঃঅ-ঌএ-ঐও-নপ-রলশ-হঽা-ীে-ৈো-ৌৎৗড়-ঢ়য়-ৡ০-৯ৰ-ৱ৴-৹৺ਃਅ-ਊਏ-ਐਓ-ਨਪ-ਰਲ-ਲ਼ਵ-ਸ਼ਸ-ਹਾ-ੀਖ਼-ੜਫ਼੦-੯ੲ-ੴઃઅ-ઍએ-ઑઓ-નપ-રલ-ળવ-હઽા-ીૉો-ૌૐૠ-ૡ૦-૯૰ଂ-ଃଅ-ଌଏ-ଐଓ-ନପ-ରଲ-ଳଵ-ହଽାୀେ-ୈୋ-ୌୗଡ଼-ଢ଼ୟ-ୡ୦-୯୰ୱ୲-୷ஃஅ-ஊஎ-ஐஒ-கங-சஜஞ-டண-தந-பம-ஹா-ிு-ூெ-ைொ-ௌௐௗ௦-௯௰-௲ఁ-ఃఅ-ఌఎ-ఐఒ-నప-హఽు-ౄౘ-ౙౠ-ౡ౦-౯౿ಂ-ಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽಾಿೀ-ೄೆೇ-ೈೊ-ೋೕ-ೖೞೠ-ೡ೦-೯ೱ-ೲം-ഃഅ-ഌഎ-ഐഒ-ഺഽാ-ീെ-ൈൊ-ൌൎൗൠ-ൡ൦-൯൰-൵൹ൺ-ൿං-ඃඅ-ඖක-නඳ-රලව-ෆා-ෑෘ-ෟ෦-෯ෲ-ෳ෴ก-ะา-ำเ-ๅๆ๏๐-๙๚-๛ກ-ຂຄງ-ຈຊຍດ-ທນ-ຟມ-ຣລວສ-ຫອ-ະາ-ຳຽເ-ໄໆ໐-໙ໜ-ໟༀ༁-༃༄-༒༓༔༕-༗༚-༟༠-༩༪-༳༴༶༸༾-༿ཀ-ཇཉ-ཬཿ྅ྈ-ྌ྾-࿅࿇-࿌࿎-࿏࿐-࿔࿕-࿘࿙-࿚က-ဪါ-ာေးျ-ြဿ၀-၉၊-၏ၐ-ၕၖ-ၗၚ-ၝၡၢ-ၤၥ-ၦၧ-ၭၮ-ၰၵ-ႁႃ-ႄႇ-ႌႎႏ႐-႙ႚ-ႜ႞-႟Ⴀ-ჅჇჍა-ჺ჻ჼჽ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፠-፨፩-፼ᎀ-ᎏᎠ-Ᏼᐁ-ᙬ᙭-᙮ᙯ-ᙿᚁ-ᚚᚠ-ᛪ᛫-᛭ᛮ-ᛰᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱ᜵-᜶ᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳាើ-ៅះ-ៈ។-៖ៗ៘-៚ៜ០-៩᠐-᠙ᠠ-ᡂᡃᡄ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᤣ-ᤦᤩ-ᤫᤰ-ᤱᤳ-ᤸ᥆-᥏ᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧀᧁ-ᧇᧈ-ᧉ᧐-᧙᧚ᨀ-ᨖᨙ-ᨚ᨞-᨟ᨠ-ᩔᩕᩗᩡᩣ-ᩤᩭ-ᩲ᪀-᪉᪐-᪙᪠-᪦ᪧ᪨-᪭ᬄᬅ-ᬳᬵᬻᬽ-ᭁᭃ-᭄ᭅ-ᭋ᭐-᭙᭚-᭠᭡-᭪᭴-᭼ᮂᮃ-ᮠᮡᮦ-ᮧ᮪ᮮ-ᮯ᮰-᮹ᮺ-ᯥᯧᯪ-ᯬᯮ᯲-᯳᯼-᯿ᰀ-ᰣᰤ-ᰫᰴ-ᰵ᰻-᰿᱀-᱉ᱍ-ᱏ᱐-᱙ᱚ-ᱷᱸ-ᱽ᱾-᱿᳀-᳇᳓᳡ᳩ-ᳬᳮ-ᳱᳲ-ᳳᳵ-ᳶᴀ-ᴫᴬ-ᵪᵫ-ᵷᵸᵹ-ᶚᶛ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‎ⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℴℵ-ℸℹℼ-ℿⅅ-ⅉⅎ⅏Ⅰ-ↂↃ-ↄↅ-ↈ⌶-⍺⎕⒜-ⓩ⚬⠀-⣿Ⰰ-Ⱞⰰ-ⱞⱠ-ⱻⱼ-ⱽⱾ-ⳤⳫ-ⳮⳲ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵰ⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々〆〇〡-〩〮-〯〱-〵〸-〺〻〼ぁ-ゖゝ-ゞゟァ-ヺー-ヾヿㄅ-ㄭㄱ-ㆎ㆐-㆑㆒-㆕㆖-㆟ㆠ-ㆺㇰ-ㇿ㈀-㈜㈠-㈩㈪-㉇㉈-㉏㉠-㉻㉿㊀-㊉㊊-㊰㋀-㋋㋐-㋾㌀-㍶㍻-㏝㏠-㏾㐀-䶵一-鿌ꀀ-ꀔꀕꀖ-ꒌꓐ-ꓷꓸ-ꓽ꓾-꓿ꔀ-ꘋꘌꘐ-ꘟ꘠-꘩ꘪ-ꘫꙀ-ꙭꙮꚀ-ꚛꚜ-ꚝꚠ-ꛥꛦ-ꛯ꛲-꛷Ꜣ-ꝯꝰꝱ-ꞇ꞉-꞊Ꞌ-ꞎꞐ-ꞭꞰ-Ʇꟷꟸ-ꟹꟺꟻ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꠣ-ꠤꠧ꠰-꠵꠶-꠷ꡀ-ꡳꢀ-ꢁꢂ-ꢳꢴ-ꣃ꣎-꣏꣐-꣙ꣲ-ꣷ꣸-꣺ꣻ꤀-꤉ꤊ-ꤥ꤮-꤯ꤰ-ꥆꥒ-꥓꥟ꥠ-ꥼꦃꦄ-ꦲꦴ-ꦵꦺ-ꦻꦽ-꧀꧁-꧍ꧏ꧐-꧙꧞-꧟ꧠ-ꧤꧦꧧ-ꧯ꧰-꧹ꧺ-ꧾꨀ-ꨨꨯ-ꨰꨳ-ꨴꩀ-ꩂꩄ-ꩋꩍ꩐-꩙꩜-꩟ꩠ-ꩯꩰꩱ-ꩶ꩷-꩹ꩺꩻꩽꩾ-ꪯꪱꪵ-ꪶꪹ-ꪽꫀꫂꫛ-ꫜꫝ꫞-꫟ꫠ-ꫪꫫꫮ-ꫯ꫰-꫱ꫲꫳ-ꫴꫵꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚ꭛ꭜ-ꭟꭤ-ꭥꯀ-ꯢꯣ-ꯤꯦ-ꯧꯩ-ꯪ꯫꯬꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ-豈-舘並-龎ﬀ-ﬆﬓ-ﬗＡ-Ｚａ-ｚｦ-ｯｰｱ-ﾝﾞ-ﾟﾠ-ﾾￂ-ￇￊ-ￏￒ-ￗￚ-ￜ\",\nR:\"֐־׀׃׆׈-׏א-ת׫-ׯװ-ײ׳-״׵-׿߀-߉ߊ-ߪߴ-ߵߺ߻-߿ࠀ-ࠕࠚࠤࠨ࠮-࠯࠰-࠾࠿ࡀ-ࡘ࡜-࡝࡞࡟-࢟‏יִײַ-ﬨשׁ-זּ﬷טּ-לּ﬽מּ﬿נּ-סּ﭂ףּ-פּ﭅צּ-ﭏ\",AL:\"؈؋؍؛؜؝؞-؟ؠ-ؿـف-ي٭ٮ-ٯٱ-ۓ۔ەۥ-ۦۮ-ۯۺ-ۼ۽-۾ۿ܀-܍܎܏ܐܒ-ܯ݋-݌ݍ-ޥޱ޲-޿ࢠ-ࢲࢳ-ࣣﭐ-ﮱ﮲-﯁﯂-﯒ﯓ-ﴽ﵀-﵏ﵐ-ﶏ﶐-﶑ﶒ-ﷇ﷈-﷏ﷰ-ﷻ﷼﷾-﷿ﹰ-ﹴ﹵ﹶ-ﻼ﻽-﻾\"},p=new RegExp(\"[\"+f.L+f.R+f.AL+\"]\"),d=new RegExp(\"[\"+f.R+f.AL+\"]\"),h={firstStrongChar:r,firstStrongCharDir:o,resolveBlockDir:i,getDirection:u,isDirectionLTR:a,isDirectionRTL:s};t.exports=h}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t,e){return!(!t||!e)&&(t===e||!o(t)&&(o(e)?r(t,e.parentNode):\"contains\"in t?t.contains(e):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(e))))}var o=n(234);t.exports=r},function(t,e){\"use strict\";function n(t){if(t=t||(\"undefined\"!=typeof document?document:void 0),\"undefined\"==typeof t)return null;try{return t.activeElement||t.body}catch(e){return t.body}}t.exports=n},function(t,e,n){var r=n(247),o=r.Symbol;t.exports=o},function(t,e){e.__esModule=!0;var n=(e.ATTRIBUTE_NAMES={BODY:\"bodyAttributes\",HTML:\"htmlAttributes\",TITLE:\"titleAttributes\"},e.TAG_NAMES={BASE:\"base\",BODY:\"body\",HEAD:\"head\",HTML:\"html\",LINK:\"link\",META:\"meta\",NOSCRIPT:\"noscript\",SCRIPT:\"script\",STYLE:\"style\",TITLE:\"title\"}),r=(e.VALID_TAG_NAMES=Object.keys(n).map(function(t){return n[t]}),e.TAG_PROPERTIES={CHARSET:\"charset\",CSS_TEXT:\"cssText\",HREF:\"href\",HTTPEQUIV:\"http-equiv\",INNER_HTML:\"innerHTML\",ITEM_PROP:\"itemprop\",NAME:\"name\",PROPERTY:\"property\",REL:\"rel\",SRC:\"src\"},e.REACT_TAG_MAP={accesskey:\"accessKey\",charset:\"charSet\",class:\"className\",contenteditable:\"contentEditable\",contextmenu:\"contextMenu\",\"http-equiv\":\"httpEquiv\",itemprop:\"itemProp\",tabindex:\"tabIndex\"});e.HELMET_PROPS={DEFAULT_TITLE:\"defaultTitle\",ENCODE_SPECIAL_CHARACTERS:\"encodeSpecialCharacters\",ON_CHANGE_CLIENT_STATE:\"onChangeClientState\",TITLE_TEMPLATE:\"titleTemplate\"},e.HTML_TAG_MAP=Object.keys(r).reduce(function(t,e){return t[r[e]]=e,t},{}),e.SELF_CLOSING_TAGS=[n.NOSCRIPT,n.SCRIPT,n.STYLE],e.HELMET_ATTRIBUTE=\"data-react-helmet\"},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.getUser=e.updateCurrentForum=e.getForums=void 0;var r=n(23),o=(t(r),n(89)),i=n(256);e.getForums=function(){return function(t,e){t({type:o.START_FETCHING_FORUMS}),(0,i.fetchForums)().then(function(e){return t({type:o.FETCHING_FORUMS_SUCCESS,payload:e.data})},function(e){return t({type:o.FETCHING_FORUMS_FAILURE})})}},e.updateCurrentForum=function(t){return{type:o.UPDATECURRENTFORUM,payload:t}},e.getUser=function(){return function(t,e){t({type:o.START_FETCHING_USER}),(0,i.fetchUser)().then(function(e){t(e.data._id?{type:o.FETCHING_USER_SUCCESS,payload:e.data}:{type:o.FETCHING_USER_FAILURE})},function(e){return t({type:o.FETCHING_USER_FAILURE})})}}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.UPDATECURRENTFORUM=\"update_current_forum\",e.START_FETCHING_FORUMS=\"start_fetching_forums\",e.STOP_FETCHING_FORUMS=\"stop_fetching_forums\",e.FETCHING_FORUMS_SUCCESS=\"fetching_forums_success\",e.FETCHING_FORUMS_FAILURE=\"fetching_forums_failure\",e.START_FETCHING_USER=\"start_fetching_user\",e.FETCHING_USER_SUCCESS=\"fetching_user_success\",e.FETCHING_USER_FAILURE=\"fetching_user_failure\",e.SIGNOUT_USER_SUCCESS=\"signOut_user_success\",e.SIGNOUT_USER_FAILURE=\"signOut_user_failure\"}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(6),l=t(c),f=n(37),p=(t(f),n(197)),d=t(p),h=n(262),y=t(h),_=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"renderSort\",value:function(){var t=this.props,e=t.activeSortingMethod,n=t.onChangeSortingMethod;return\"general\"===this.props.type?s.default.createElement(\"div\",{className:d.default.sortList},s.default.createElement(\"span\",{className:(0,l.default)(d.default.sort,\"date\"===e&&d.default.sortActive),onClick:function(){return n(\"date\")}},\"Latest\"),s.default.createElement(\"span\",{className:(0,l.default)(d.default.sort,\"popularity\"===e&&d.default.sortActive),onClick:function(){return n(\"popularity\")}},\"Popular\")):null}},{key:\"renderEmptyDiscussionLine\",value:function(t,e){if(!(t||e&&0!==e.length))return s.default.createElement(\"div\",{className:d.default.loading},\"No discussions...\")}},{key:\"render\",value:function(){var t=this.props,e=t.type,n=t.loading,r=t.discussions,o=t.currentForum,i=t.userProfile,u=\"\";return\"general\"===e&&(u=\"Discussions\"),\"pinned\"===e&&(u=\"Pinned\"),s.default.createElement(\"div\",{className:d.default.container},s.default.createElement(\"div\",{className:d.default.header},s.default.createElement(\"span\",{className:d.default.title},u),!i&&this.renderSort()),n&&s.default.createElement(\"div\",{className:d.default.loading},\"Loading...\"),this.renderEmptyDiscussionLine(n,r),!n&&s.default.createElement(\"div\",{className:d.default.discussions},r&&r.map(function(t){return s.default.createElement(y.default,{userProfile:i,key:t._id,userName:t.user.name||t.user.username,userGitHandler:t.user.username,discussionTitle:t.title,time:t.date,tags:t.tags,opinionCount:t.opinion_count,voteCount:t.favorites.length,link:\"/\"+(i?t.forum.forum_slug:o)+\"/discussion/\"+t.discussion_slug})})))}}]),e}(a.Component);_.defaultProps={type:\"general\",loading:!1,discussions:[],currentForum:\"general\",activeSortingMethod:\"date\",onChangeSortingMethod:function(t){},userProfile:!1},_.propTypes={type:s.default.PropTypes.oneOf([\"general\",\"pinned\"]),loading:s.default.PropTypes.bool,discussions:s.default.PropTypes.array,currentForum:s.default.PropTypes.string,activeSortingMethod:s.default.PropTypes.string,onChangeSortingMethod:s.default.PropTypes.func,userProfile:s.default.PropTypes.bool},e.default=_}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0});var r=n(1),o=t(r),i=n(199),u=t(i),a=function(){return o.default.createElement(\"div\",{className:u.default.logoContainer},o.default.createElement(\"div\",{className:u.default.logo},o.default.createElement(\"svg\",{viewBox:\"0 0 100 100\",xmlns:\"http://www.w3.org/2000/svg\"},o.default.createElement(\"g\",{id:\"Group\",stroke:\"none\",strokeWidth:\"1\",fill:\"none\",fillRule:\"evenodd\"},o.default.createElement(\"path\",{d:\"M51.1388842,81.5721454 L69.5667388,100 L92.0066458,100 C96.4114635,100 100,96.4212534 100,92.0066458 L100,7.99335421 C100,3.58853654 96.4212534,0 92.0066458,0 L7.99335421,0 C3.58853654,0 0,3.57874658 0,7.99335421 L0,92.0066458 C0,96.4114635 3.57874658,100 7.99335421,100 L10.5882353,100 L10.5882353,44.7058824 C10.7474244,24.5366987 27.1464843,8.23529412 47.3529412,8.23529412 C67.6575276,8.23529412 84.1176471,24.6954136 84.1176471,45 C84.1176471,64.0263195 69.6647717,79.676989 51.1388842,81.5721454 Z M24.2232146,73.5788183 L24.1176471,73.6843859 L50.4332612,100 L24.1176471,100 L24.1176471,73.4929507 C24.1527823,73.521637 24.1879715,73.5502596 24.2232146,73.5788183 Z\",id:\"Combined-Shape\",fill:\"#F1C40F\"}),o.default.createElement(\"circle\",{id:\"Oval\",fill:\"#F1C40F\",cx:\"47.6470588\",cy:\"45.2941176\",r:\"23.5294118\"})))),o.default.createElement(\"div\",{className:u.default.logoTitle},\"ReForum\"))};e.default=a}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(8),l=n(6),f=(t(l),n(23)),p=t(f),d=n(200),h=t(d),y=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){var t=this.props.navigationLinks;return t?s.default.createElement(\"ul\",{className:h.default.navigationBar},t.map(function(t){return 0===t.id?s.default.createElement(\"li\",{key:p.default.uniqueId(\"navLink_\")},s.default.createElement(c.IndexLink,{className:h.default.links,activeClassName:h.default.linkActive,to:\"/\"},\"Home\")):s.default.createElement(\"li\",{key:p.default.uniqueId(\"navLink_\")},s.default.createElement(c.Link,{className:h.default.links,activeClassName:h.default.linkActive,to:t.link},t.name))})):null}}]),e}(a.Component);y.defaultProps={navigationLinks:[{id:0,name:\"General\",link:\"/\"}]},y.propTypes={navigationLinks:s.default.PropTypes.array},e.default=y}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(8),l=n(6),f=t(l),p=n(295),d=t(p),h=n(201),y=t(h),_=n(11),g=t(_),v=function(t){function e(t){r(this,e);var n=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return n.state={activeSubMenu:!1},n.toggleSubMenu=n.toggleSubMenu.bind(n),n}return i(e,t),u(e,[{key:\"handleClickOutside\",value:function(){this.setState({activeSubMenu:!1})}},{key:\"toggleSubMenu\",value:function(){this.setState(function(t){return{activeSubMenu:!t.activeSubMenu}})}},{key:\"renderSubMenu\",value:function(){var t=this.state.activeSubMenu,e=this.props,n=e.signedIn,r=e.gitHandler;return t?s.default.createElement(\"div\",{className:y.default.subMenu},s.default.createElement(g.default,{className:y.default.subMenuClose,onClick:this.toggleSubMenu,alwaysActive:!0},s.default.createElement(\"i\",{className:(0,f.default)(\"fa fa-close\")})),!n&&s.default.createElement(\"a\",{className:y.default.signInLink,href:\"/api/user/authViaGitHub\"},s.default.createElement(g.default,{className:y.default.gitLoginBtn,alwaysActive:!0},s.default.createElement(\"i\",{className:(0,f.default)(\"fa fa-github-alt\",y.default.subMenuOcto)}),s.default.createElement(\"span\",{className:y.default.btnLabel},\"With GitHub\"))),n&&s.default.createElement(\"span\",{onClick:this.toggleSubMenu},s.default.createElement(c.Link,{className:y.default.subMenuItem,to:\"/user/\"+r},\"My Profile\")),n&&s.default.createElement(\"a\",{className:y.default.subMenuItem,href:\"/api/user/signout\"},\"Sign Out\")):null}},{key:\"render\",value:function(){var t=this.props,e=t.signedIn,n=t.userName,r=t.avatar;t.signOutAction;return e?s.default.createElement(\"div\",{style:{position:\"relative\"}},s.default.createElement(\"div\",{className:y.default.container,onClick:this.toggleSubMenu},s.default.createElement(\"img\",{className:y.default.userAvatar,src:r,alt:n+\" Avatar\"}),s.default.createElement(\"span\",{className:y.default.title},n)),this.renderSubMenu()):s.default.createElement(\"div\",{className:y.default.container},s.default.createElement(g.default,{alwaysActive:!0,className:(0,f.default)(y.default.signInBtn,y.default.title),onClick:this.toggleSubMenu},\"Sign Up / Sign In\"),this.renderSubMenu())}}]),e}(a.Component);v.defaultProps={signedIn:!1,userName:\"\",gitHandler:\"\",avatar:\"\"},v.propTypes={signedIn:s.default.PropTypes.bool.isRequired,userName:s.default.PropTypes.string,gitHandler:s.default.PropTypes.string,avatar:s.default.PropTypes.string},e.default=(0,d.default)(v)}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(6),l=(t(c),n(34)),f=t(l),p=function(t){function e(){r(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.onToggle=function(e){e.preventDefault(),t.props.onToggle(t.props.style)},t}return i(e,t),u(e,[{key:\"render\",value:function(){var t=\"\"+f.default.controlButton;return this.props.active&&(t+=\" \"+f.default.controlButtonActive),s.default.createElement(\"div\",{className:t,onMouseDown:this.onToggle},this.props.label)}}]),e}(s.default.Component);p.propTypes={onToggle:s.default.PropTypes.func.isRequired,active:s.default.PropTypes.any.isRequired,label:s.default.PropTypes.string.isRequired,style:s.default.PropTypes.string.isRequired},e.default=p}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(16),l=n(6),f=t(l),p=n(14),d=t(p),h=n(211),y=t(h),_=n(93),g=t(_),v=n(91),m=t(v),b=n(92),E=t(b),S=n(36),w=(t(S),function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"renderNavLinks\",value:function(){var t=this.props.forums;return t?t.map(function(t){return{id:t._id,name:t.forum_name,link:\"/\"+t.forum_slug}}):null}},{key:\"render\",value:function(){var t=this.props.user,e=t.authenticated,n=t.name,r=t.username,o=t.avatarUrl;return s.default.createElement(\"div\",{className:(0,f.default)(d.default.constraintWidth)},s.default.createElement(\"div\",{className:y.default.headerTop},s.default.createElement(m.default,null),s.default.createElement(g.default,{signedIn:e,userName:n||r,gitHandler:r,avatar:o})),s.default.createElement(E.default,{navigationLinks:this.renderNavLinks()}))}}]),e}(a.Component));e.default=(0,c.connect)(function(t){return{user:t.user,forums:t.app.forums}})(w)}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.GET_ALL_INFO_START=\"get_all_info_start\",e.GET_ALL_INFO_SUCCESS=\"get_all_info_success\",e.GET_ALL_INFO_FAILURE=\"get_all_info_failure\",e.CREATE_FORUM=\"create_forum\",e.CREATE_FORUM_SUCCESS=\"create_forum_success\",e.CREATE_FORUM_FAILURE=\"create_forum_failure\",e.DELETE_FORUM=\"delete_forum\",e.DELETE_FORUM_SUCCESS=\"delete_forum_success\",e.DELETE_FORUM_FAILURE=\"delete_forum_failure\"}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.START_FETCHING_DISCUSSIONS=\"start_fetching_discussions\",e.STOP_FETCHING_DISCUSSIONS=\"stop_fetching_discussions\",e.FETCHING_DISCUSSIONS_SUCCESS=\"fetching_discussions_success\",e.FETCHING_DISCUSSIONS_FAILURE=\"fetching_discussions_failure\",e.START_FETCHING_PINNED_DISCUSSIONS=\"start_fetching_pinned_discussions\",e.STOP_FETCHING_PINNED_DISCUSSIONS=\"stop_fetching_pinned_discussions\",e.FETCHING_PINNED_DISCUSSIONS_SUCCESS=\"fetching_pinned_discussions_success\",e.FETCHING_PINNED_DISCUSSIONS_FAILURE=\"fetching_pinned_discussions_failure\",e.UPDATE_SORTING_METHOD=\"update_sorting_method\",e.INVALID_FORUM=\"invalid_forum\"}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.POSTING_DISCUSSION_START=\"posting_discussion_start\",e.POSTING_DISCUSSION_END=\"posting_discussion_end\",e.POSTING_DISCUSSION_SUCCESS=\"posting_discussion_success\",e.POSTING_DISCUSSION_FAILURE=\"posting_discussion_failure\",e.UPDATE_DISCUSSION_TITLE=\"update_discussion_title\",e.UPDATE_DISCUSSION_CONTENT=\"update_discussion_content\",e.UPDATE_DISCUSSION_PIN_STATUS=\"update_discussion_pin_status\",e.UPDATE_DISCUSSION_TAGS=\"update_discussion_tags\",e.CLEAR_SUCCESS_MESSAGE=\"clear_success_message\"}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.FETCHING_SINGLE_DISC_START=\"fetching_single_discussion_start\",e.FETCHING_SINGLE_DISC_END=\"fetching_single_discussion_end\",e.FETCHING_SINGLE_DISC_SUCCESS=\"fetching_single_discussion_success\",e.FETCHING_SINGLE_DISC_FAILURE=\"fetching_single_discussion_failure\",e.TOGGLE_FAVORITE_START=\"toggle_favorite_start\",e.TOGGLE_FAVORITE_SUCCESS=\"toggle_favorite_success\",e.TOGGLE_FAVORITE_FAILURE=\"toggle_favorite_failure\",e.UPDATE_OPINION_CONTENT=\"update_opinion_content\",e.POSTING_OPINION_START=\"posting_opinion_start\",e.POSTING_OPINION_SUCCESS=\"posting_opinion_success\",e.POSTING_OPINION_FAILURE=\"posting_opinion_failure\",e.DELETE_DISC_START=\"delete_disc_start\",e.DELETE_DISC_SUCCESS=\"delete_disc_success\",e.DELETE_DISC_FAILURE=\"delete_disc_failure\",e.DELETE_DISC_REDIRECT=\"delete_disc_redirect\",e.DELETE_OPINION_START=\"delete_opinion_start\",e.DELETE_OPINION_SUCCESS=\"delete_opinion_success\",e.DELETE_OPINION_FAILURE=\"delete_opinion_failure\"}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.FETCH_USER_PROFILE_START=\"fetch_user_profile_start\",e.FETCH_USER_PROFILE_SUCCESS=\"fetch_user_profile_success\",e.FETCH_USER_PROFILE_FAILURE=\"fetch_user_profile_failure\"}).call(this)}finally{}},function(t,e,n){(function(t){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function u(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t,e){var n={};for(var r in t)e.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function s(){}function c(t,e){var n={run:function(r){try{var o=t(e.getState(),r);(o!==n.props||n.error)&&(n.shouldComponentUpdate=!0,n.props=o,n.error=null)}catch(t){n.shouldComponentUpdate=!0,n.error=t}}};return n}function l(e){var n,r,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},p=l.getDisplayName,h=void 0===p?function(t){return\"ConnectAdvanced(\"+t+\")\"}:p,g=l.methodName,S=void 0===g?\"connectAdvanced\":g,w=l.renderCountProp,O=void 0===w?void 0:w,T=l.shouldHandleStateChanges,C=void 0===T||T,I=l.storeKey,N=void 0===I?\"store\":I,A=l.withRef,D=void 0!==A&&A,x=a(l,[\"getDisplayName\",\"methodName\",\"renderCountProp\",\"shouldHandleStateChanges\",\"storeKey\",\"withRef\"]),P=N+\"Subscription\",k=b++,M=(n={},n[N]=m.storeShape,n[P]=m.subscriptionShape,n),R=(r={},r[P]=m.subscriptionShape,r);return function(n){(0,y.default)(\"function\"==typeof n,\"You must pass a component to the function returned by connect. Instead received \"+JSON.stringify(n));var r=n.displayName||n.name||\"Component\",a=h(r),l=f({},x,{getDisplayName:h,methodName:S,renderCountProp:O,shouldHandleStateChanges:C,storeKey:N,withRef:D,displayName:a,wrappedComponentName:r,WrappedComponent:n}),p=function(t){function r(e,n){o(this,r);var u=i(this,t.call(this,e,n));return u.version=k,u.state={},u.renderCount=0,u.store=e[N]||n[N],u.propsMode=Boolean(e[N]),u.setWrappedInstance=u.setWrappedInstance.bind(u),(0,y.default)(u.store,'Could not find \"'+N+'\" in either the context or props of '+('\"'+a+'\". Either wrap the root component in a <Provider>, ')+('or explicitly pass \"'+N+'\" as a prop to \"'+a+'\".')),u.initSelector(),u.initSubscription(),u}return u(r,t),r.prototype.getChildContext=function(){var t,e=this.propsMode?null:this.subscription;return t={},t[P]=e||this.context[P],t},r.prototype.componentDidMount=function(){C&&(this.subscription.trySubscribe(),this.selector.run(this.props),this.selector.shouldComponentUpdate&&this.forceUpdate())},r.prototype.componentWillReceiveProps=function(t){this.selector.run(t)},r.prototype.shouldComponentUpdate=function(){return this.selector.shouldComponentUpdate},r.prototype.componentWillUnmount=function(){this.subscription&&this.subscription.tryUnsubscribe(),this.subscription=null,this.notifyNestedSubs=s,this.store=null,this.selector.run=s,this.selector.shouldComponentUpdate=!1},r.prototype.getWrappedInstance=function(){return(0,y.default)(D,\"To access the wrapped instance, you need to specify \"+(\"{ withRef: true } in the options argument of the \"+S+\"() call.\")),this.wrappedInstance},r.prototype.setWrappedInstance=function(t){this.wrappedInstance=t},r.prototype.initSelector=function(){var t=e(this.store.dispatch,l);this.selector=c(t,this.store),this.selector.run(this.props)},r.prototype.initSubscription=function(){if(C){var t=(this.propsMode?this.props:this.context)[P];this.subscription=new v.default(this.store,t,this.onStateChange.bind(this)),this.notifyNestedSubs=this.subscription.notifyNestedSubs.bind(this.subscription)}},r.prototype.onStateChange=function(){this.selector.run(this.props),this.selector.shouldComponentUpdate?(this.componentDidUpdate=this.notifyNestedSubsOnComponentDidUpdate,this.setState(E)):this.notifyNestedSubs()},r.prototype.notifyNestedSubsOnComponentDidUpdate=function(){this.componentDidUpdate=void 0,this.notifyNestedSubs()},r.prototype.isSubscribed=function(){return Boolean(this.subscription)&&this.subscription.isSubscribed()},r.prototype.addExtraProps=function(t){if(!(D||O||this.propsMode&&this.subscription))return t;var e=f({},t);return D&&(e.ref=this.setWrappedInstance),O&&(e[O]=this.renderCount++),this.propsMode&&this.subscription&&(e[P]=this.subscription),e},r.prototype.render=function(){var t=this.selector;if(t.shouldComponentUpdate=!1,t.error)throw t.error;return(0,_.createElement)(n,this.addExtraProps(t.props))},r}(_.Component);return p.WrappedComponent=n,p.displayName=a,p.childContextTypes=R,p.contextTypes=M,p.propTypes=M,\"production\"!==t.env.NODE_ENV&&(p.prototype.componentWillUpdate=function(){this.version!==k&&(this.version=k,this.initSelector(),this.subscription&&this.subscription.tryUnsubscribe(),this.initSubscription(),C&&this.subscription.trySubscribe())}),(0,d.default)(p,n)}}e.__esModule=!0;var f=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};e.default=l;var p=n(239),d=r(p),h=n(240),y=r(h),_=n(1),g=n(303),v=r(g),m=n(103),b=0,E={}}).call(e,n(2))},function(t,e,n){(function(t){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}function o(t){return function(e,n){function r(){return o}var o=t(e,n);return r.dependsOnOwnProps=!1,r}}function i(t){return null!==t.dependsOnOwnProps&&void 0!==t.dependsOnOwnProps?Boolean(t.dependsOnOwnProps):1!==t.length}function u(e,n){return function(r,o){var u=o.displayName,a=function(t,e){return a.dependsOnOwnProps?a.mapToProps(t,e):a.mapToProps(t)};return a.dependsOnOwnProps=!0,a.mapToProps=function(r,o){a.mapToProps=e,a.dependsOnOwnProps=i(e);var c=a(r,o);return\"function\"==typeof c&&(a.mapToProps=c,a.dependsOnOwnProps=i(c),c=a(r,o)),\"production\"!==t.env.NODE_ENV&&(0,s.default)(c,u,n),c},a}}e.__esModule=!0,e.wrapMapToPropsConstant=o,e.getDependsOnOwnProps=i,e.wrapMapToPropsFunc=u;var a=n(104),s=r(a)}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0,e.storeShape=e.subscriptionShape=void 0;var o=n(52),i=r(o);e.subscriptionShape=i.default.shape({trySubscribe:i.default.func.isRequired,tryUnsubscribe:i.default.func.isRequired,notifyNestedSubs:i.default.func.isRequired,isSubscribed:i.default.func.isRequired}),e.storeShape=i.default.shape({subscribe:i.default.func.isRequired,dispatch:i.default.func.isRequired,getState:i.default.func.isRequired})},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){(0,u.default)(t)||(0,s.default)(n+\"() in \"+e+\" must return a plain object. Instead received \"+t+\".\")}e.__esModule=!0,e.default=o;var i=n(249),u=r(i),a=n(55),s=r(a)},function(t,e){t.exports=Redux},function(t,e,n){\"use strict\";function r(t){var e=new u(t),n=i(u.prototype.request,e);return o.extend(n,u.prototype,e),o.extend(n,e),n}var o=n(9),i=n(60),u=n(108),a=n(38),s=r(a);s.Axios=u,s.create=function(t){return r(o.merge(a,t))},s.Cancel=n(57),s.CancelToken=n(107),s.isCancel=n(58),s.all=function(t){return Promise.all(t)},s.spread=n(122),t.exports=s,t.exports.default=s},function(t,e,n){\"use strict\";function r(t){if(\"function\"!=typeof t)throw new TypeError(\"executor must be a function.\");var e;this.promise=new Promise(function(t){e=t});var n=this;t(function(t){n.reason||(n.reason=new o(t),e(n.reason))})}var o=n(57);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var t,e=new r(function(e){t=e});return{token:e,cancel:t}},t.exports=r},function(t,e,n){\"use strict\";function r(t){this.defaults=t,this.interceptors={request:new u,response:new u}}var o=n(38),i=n(9),u=n(109),a=n(110),s=n(118),c=n(116);r.prototype.request=function(t){\"string\"==typeof t&&(t=i.merge({url:arguments[0]},arguments[1])),t=i.merge(o,this.defaults,{method:\"get\"},t),t.baseURL&&!s(t.url)&&(t.url=c(t.baseURL,t.url));var e=[a,void 0],n=Promise.resolve(t);for(this.interceptors.request.forEach(function(t){e.unshift(t.fulfilled,t.rejected)}),this.interceptors.response.forEach(function(t){e.push(t.fulfilled,t.rejected)});e.length;)n=n.then(e.shift(),e.shift());return n},i.forEach([\"delete\",\"get\",\"head\"],function(t){r.prototype[t]=function(e,n){return this.request(i.merge(n||{},{method:t,url:e}))}}),i.forEach([\"post\",\"put\",\"patch\"],function(t){r.prototype[t]=function(e,n,r){return this.request(i.merge(r||{},{method:t,url:e,data:n}))}}),t.exports=r},function(t,e,n){\"use strict\";function r(){this.handlers=[]}var o=n(9);r.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},r.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},r.prototype.forEach=function(t){o.forEach(this.handlers,function(e){null!==e&&t(e)})},t.exports=r},function(t,e,n){\"use strict\";function r(t){t.cancelToken&&t.cancelToken.throwIfRequested()}var o=n(9),i=n(113),u=n(58),a=n(38);t.exports=function(t){r(t),t.headers=t.headers||{},t.data=i(t.data,t.headers,t.transformRequest),t.headers=o.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),o.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\",\"common\"],function(e){delete t.headers[e]});var e=t.adapter||a.adapter;return e(t).then(function(e){return r(t),e.data=i(e.data,e.headers,t.transformResponse),e},function(e){return u(e)||(r(t),e&&e.response&&(e.response.data=i(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)})}},function(t,e){\"use strict\";t.exports=function(t,e,n,r){return t.config=e,n&&(t.code=n),t.response=r,t}},function(t,e,n){\"use strict\";var r=n(59);t.exports=function(t,e,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?e(r(\"Request failed with status code \"+n.status,n.config,null,n)):t(n)}},function(t,e,n){\"use strict\";var r=n(9);t.exports=function(t,e,n){return r.forEach(n,function(n){t=n(t,e)}),t}},function(t,e){\"use strict\";function n(){this.message=\"String contains an invalid character\"}function r(t){for(var e,r,i=String(t),u=\"\",a=0,s=o;i.charAt(0|a)||(s=\"=\",a%1);u+=s.charAt(63&e>>8-a%1*8)){if(r=i.charCodeAt(a+=.75),r>255)throw new n;e=e<<8|r}return u}var o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";n.prototype=new Error,n.prototype.code=5,n.prototype.name=\"InvalidCharacterError\",t.exports=r},function(t,e,n){\"use strict\";function r(t){return encodeURIComponent(t).replace(/%40/gi,\"@\").replace(/%3A/gi,\":\").replace(/%24/g,\"$\").replace(/%2C/gi,\",\").replace(/%20/g,\"+\").replace(/%5B/gi,\"[\").replace(/%5D/gi,\"]\")}var o=n(9);t.exports=function(t,e,n){if(!e)return t;var i;if(n)i=n(e);else if(o.isURLSearchParams(e))i=e.toString();else{var u=[];o.forEach(e,function(t,e){null!==t&&\"undefined\"!=typeof t&&(o.isArray(t)&&(e+=\"[]\"),o.isArray(t)||(t=[t]),o.forEach(t,function(t){o.isDate(t)?t=t.toISOString():o.isObject(t)&&(t=JSON.stringify(t)),u.push(r(e)+\"=\"+r(t))}))}),i=u.join(\"&\")}return i&&(t+=(t.indexOf(\"?\")===-1?\"?\":\"&\")+i),t}},function(t,e){\"use strict\";t.exports=function(t,e){return t.replace(/\\/+$/,\"\")+\"/\"+e.replace(/^\\/+/,\"\")}},function(t,e,n){\"use strict\";var r=n(9);t.exports=r.isStandardBrowserEnv()?function(){return{write:function(t,e,n,o,i,u){var a=[];a.push(t+\"=\"+encodeURIComponent(e)),r.isNumber(n)&&a.push(\"expires=\"+new Date(n).toGMTString()),r.isString(o)&&a.push(\"path=\"+o),r.isString(i)&&a.push(\"domain=\"+i),u===!0&&a.push(\"secure\"),document.cookie=a.join(\"; \")},read:function(t){var e=document.cookie.match(new RegExp(\"(^|;\\\\s*)(\"+t+\")=([^;]*)\"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,\"\",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}\n}}()},function(t,e){\"use strict\";t.exports=function(t){return/^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(t)}},function(t,e,n){\"use strict\";var r=n(9);t.exports=r.isStandardBrowserEnv()?function(){function t(t){var e=t;return n&&(o.setAttribute(\"href\",e),e=o.href),o.setAttribute(\"href\",e),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,\"\"):\"\",host:o.host,search:o.search?o.search.replace(/^\\?/,\"\"):\"\",hash:o.hash?o.hash.replace(/^#/,\"\"):\"\",hostname:o.hostname,port:o.port,pathname:\"/\"===o.pathname.charAt(0)?o.pathname:\"/\"+o.pathname}}var e,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement(\"a\");return e=t(window.location.href),function(n){var o=r.isString(n)?t(n):n;return o.protocol===e.protocol&&o.host===e.host}}():function(){return function(){return!0}}()},function(t,e,n){\"use strict\";var r=n(9);t.exports=function(t,e){r.forEach(t,function(n,r){r!==e&&r.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[r])})}},function(t,e,n){\"use strict\";var r=n(9);t.exports=function(t){var e,n,o,i={};return t?(r.forEach(t.split(\"\\n\"),function(t){o=t.indexOf(\":\"),e=r.trim(t.substr(0,o)).toLowerCase(),n=r.trim(t.substr(o+1)),e&&(i[e]=i[e]?i[e]+\", \"+n:n)}),i):i}},function(t,e){\"use strict\";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e,n){(function(e){\"use strict\";function r(t){return t}function o(t,n,o){function f(t,n,r){for(var o in n)n.hasOwnProperty(o)&&(\"production\"!==e.env.NODE_ENV?s(\"function\"==typeof n[o],\"%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.\",t.displayName||\"ReactClass\",c[r],o):void 0)}function p(t,e){var n=S.hasOwnProperty(e)?S[e]:null;T.hasOwnProperty(e)&&a(\"OVERRIDE_BASE\"===n,\"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.\",e),t&&a(\"DEFINE_MANY\"===n||\"DEFINE_MANY_MERGED\"===n,\"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.\",e)}function d(t,r){if(r){a(\"function\"!=typeof r,\"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object.\"),a(!n(r),\"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.\");var o=t.prototype,i=o.__reactAutoBindPairs;r.hasOwnProperty(l)&&w.mixins(t,r.mixins);for(var u in r)if(r.hasOwnProperty(u)&&u!==l){var c=r[u],f=o.hasOwnProperty(u);if(p(f,u),w.hasOwnProperty(u))w[u](t,c);else{var d=S.hasOwnProperty(u),h=\"function\"==typeof c,y=h&&!d&&!f&&r.autobind!==!1;if(y)i.push(u,c),o[u]=c;else if(f){var v=S[u];a(d&&(\"DEFINE_MANY_MERGED\"===v||\"DEFINE_MANY\"===v),\"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.\",v,u),\"DEFINE_MANY_MERGED\"===v?o[u]=_(o[u],c):\"DEFINE_MANY\"===v&&(o[u]=g(o[u],c))}else o[u]=c,\"production\"!==e.env.NODE_ENV&&\"function\"==typeof c&&r.displayName&&(o[u].displayName=r.displayName+\"_\"+u)}}}else if(\"production\"!==e.env.NODE_ENV){var m=typeof r,b=\"object\"===m&&null!==r;\"production\"!==e.env.NODE_ENV?s(b,\"%s: You're attempting to include a mixin that is either null or not an object. Check the mixins included by the component, as well as any mixins they include themselves. Expected object but got %s.\",t.displayName||\"ReactClass\",null===r?null:m):void 0}}function h(t,e){if(e)for(var n in e){var r=e[n];if(e.hasOwnProperty(n)){var o=n in w;a(!o,'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it as an instance property instead; it will still be accessible on the constructor.',n);var i=n in t;a(!i,\"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.\",n),t[n]=r}}}function y(t,e){a(t&&e&&\"object\"==typeof t&&\"object\"==typeof e,\"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.\");for(var n in e)e.hasOwnProperty(n)&&(a(void 0===t[n],\"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.\",n),t[n]=e[n]);return t}function _(t,e){return function(){var n=t.apply(this,arguments),r=e.apply(this,arguments);if(null==n)return r;if(null==r)return n;var o={};return y(o,n),y(o,r),o}}function g(t,e){return function(){t.apply(this,arguments),e.apply(this,arguments)}}function v(t,n){var r=n.bind(t);if(\"production\"!==e.env.NODE_ENV){r.__reactBoundContext=t,r.__reactBoundMethod=n,r.__reactBoundArguments=null;var o=t.constructor.displayName,i=r.bind;r.bind=function(u){for(var a=arguments.length,c=Array(a>1?a-1:0),l=1;l<a;l++)c[l-1]=arguments[l];if(u!==t&&null!==u)\"production\"!==e.env.NODE_ENV?s(!1,\"bind(): React component methods may only be bound to the component instance. See %s\",o):void 0;else if(!c.length)return\"production\"!==e.env.NODE_ENV?s(!1,\"bind(): You are binding a component method to the component. React does this for you automatically in a high-performance way, so you can safely remove this call. See %s\",o):void 0,r;var f=i.apply(r,arguments);return f.__reactBoundContext=t,f.__reactBoundMethod=n,f.__reactBoundArguments=c,f}}return r}function m(t){for(var e=t.__reactAutoBindPairs,n=0;n<e.length;n+=2){var r=e[n],o=e[n+1];t[r]=v(t,o)}}function b(t){var n=r(function(t,r,i){\"production\"!==e.env.NODE_ENV&&(\"production\"!==e.env.NODE_ENV?s(this instanceof n,\"Something is calling a React component directly. Use a factory or JSX instead. See: https://fb.me/react-legacyfactory\"):void 0),this.__reactAutoBindPairs.length&&m(this),this.props=t,this.context=r,this.refs=u,this.updater=i||o,this.state=null;var c=this.getInitialState?this.getInitialState():null;\"production\"!==e.env.NODE_ENV&&void 0===c&&this.getInitialState._isMockFunction&&(c=null),a(\"object\"==typeof c&&!Array.isArray(c),\"%s.getInitialState(): must return an object or null\",n.displayName||\"ReactCompositeComponent\"),this.state=c});n.prototype=new C,n.prototype.constructor=n,n.prototype.__reactAutoBindPairs=[],E.forEach(d.bind(null,n)),d(n,O),d(n,t),n.getDefaultProps&&(n.defaultProps=n.getDefaultProps()),\"production\"!==e.env.NODE_ENV&&(n.getDefaultProps&&(n.getDefaultProps.isReactClassApproved={}),n.prototype.getInitialState&&(n.prototype.getInitialState.isReactClassApproved={})),a(n.prototype.render,\"createClass(...): Class specification must implement a `render` method.\"),\"production\"!==e.env.NODE_ENV&&(\"production\"!==e.env.NODE_ENV?s(!n.prototype.componentShouldUpdate,\"%s has a method called componentShouldUpdate(). Did you mean shouldComponentUpdate()? The name is phrased as a question because the function is expected to return a value.\",t.displayName||\"A component\"):void 0,\"production\"!==e.env.NODE_ENV?s(!n.prototype.componentWillRecieveProps,\"%s has a method called componentWillRecieveProps(). Did you mean componentWillReceiveProps()?\",t.displayName||\"A component\"):void 0);for(var i in S)n.prototype[i]||(n.prototype[i]=null);return n}var E=[],S={mixins:\"DEFINE_MANY\",statics:\"DEFINE_MANY\",propTypes:\"DEFINE_MANY\",contextTypes:\"DEFINE_MANY\",childContextTypes:\"DEFINE_MANY\",getDefaultProps:\"DEFINE_MANY_MERGED\",getInitialState:\"DEFINE_MANY_MERGED\",getChildContext:\"DEFINE_MANY_MERGED\",render:\"DEFINE_ONCE\",componentWillMount:\"DEFINE_MANY\",componentDidMount:\"DEFINE_MANY\",componentWillReceiveProps:\"DEFINE_MANY\",shouldComponentUpdate:\"DEFINE_ONCE\",componentWillUpdate:\"DEFINE_MANY\",componentDidUpdate:\"DEFINE_MANY\",componentWillUnmount:\"DEFINE_MANY\",updateComponent:\"OVERRIDE_BASE\"},w={displayName:function(t,e){t.displayName=e},mixins:function(t,e){if(e)for(var n=0;n<e.length;n++)d(t,e[n])},childContextTypes:function(t,n){\"production\"!==e.env.NODE_ENV&&f(t,n,\"childContext\"),t.childContextTypes=i({},t.childContextTypes,n)},contextTypes:function(t,n){\"production\"!==e.env.NODE_ENV&&f(t,n,\"context\"),t.contextTypes=i({},t.contextTypes,n)},getDefaultProps:function(t,e){t.getDefaultProps?t.getDefaultProps=_(t.getDefaultProps,e):t.getDefaultProps=e},propTypes:function(t,n){\"production\"!==e.env.NODE_ENV&&f(t,n,\"prop\"),t.propTypes=i({},t.propTypes,n)},statics:function(t,e){h(t,e)},autobind:function(){}},O={componentDidMount:function(){this.__isMounted=!0},componentWillUnmount:function(){this.__isMounted=!1}},T={replaceState:function(t,e){this.updater.enqueueReplaceState(this,t,e)},isMounted:function(){return\"production\"!==e.env.NODE_ENV&&(\"production\"!==e.env.NODE_ENV?s(this.__didWarnIsMounted,\"%s: isMounted is deprecated. Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.\",this.constructor&&this.constructor.displayName||this.name||\"Component\"):void 0,this.__didWarnIsMounted=!0),!!this.__isMounted}},C=function(){};return i(C.prototype,t.prototype,T),b}var i=n(17),u=n(225),a=n(3);if(\"production\"!==e.env.NODE_ENV)var s=n(51);var c,l=\"mixins\";c=\"production\"!==e.env.NODE_ENV?{prop:\"prop\",context:\"context\",childContext:\"child context\"}:{},t.exports=o}).call(e,n(2))},function(t,e,n){\"use strict\";var r=n(1),o=n(123),i=(new r.Component).updater;t.exports=o(r.Component,r.isValidElement,i)},function(t,e,n){function r(t){return null===t||void 0===t}function o(t){return!(!t||\"object\"!=typeof t||\"number\"!=typeof t.length)&&(\"function\"==typeof t.copy&&\"function\"==typeof t.slice&&!(t.length>0&&\"number\"!=typeof t[0]))}function i(t,e,n){var i,l;if(r(t)||r(e))return!1;if(t.prototype!==e.prototype)return!1;if(s(t))return!!s(e)&&(t=u.call(t),e=u.call(e),c(t,e,n));if(o(t)){if(!o(e))return!1;if(t.length!==e.length)return!1;for(i=0;i<t.length;i++)if(t[i]!==e[i])return!1;return!0}try{var f=a(t),p=a(e)}catch(t){return!1}if(f.length!=p.length)return!1;for(f.sort(),p.sort(),i=f.length-1;i>=0;i--)if(f[i]!=p[i])return!1;for(i=f.length-1;i>=0;i--)if(l=f[i],!c(t[l],e[l],n))return!1;return typeof t==typeof e}var u=Array.prototype.slice,a=n(127),s=n(126),c=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||\"object\"!=typeof t&&\"object\"!=typeof e?n.strict?t===e:t==e:i(t,e,n))}},function(t,e){function n(t){return\"[object Arguments]\"==Object.prototype.toString.call(t)}function r(t){return t&&\"object\"==typeof t&&\"number\"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,\"callee\")&&!Object.prototype.propertyIsEnumerable.call(t,\"callee\")||!1}var o=\"[object Arguments]\"==function(){return Object.prototype.toString.call(arguments)}();e=t.exports=o?n:r,e.supported=n,e.unsupported=r},function(t,e){function n(t){var e=[];for(var n in t)e.push(n);return e}e=t.exports=\"function\"==typeof Object.keys?Object.keys:n,e.shim=n},function(t,e,n){\"use strict\";var r=n(25),o=n(12),i=n(18),u=n(7),a=n(4),s=(n(26),n(5)),c=n(13),l=n(187),f=s.List,p=s.Repeat,d={insertAtomicBlock:function(t,e,n){var s=t.getCurrentContent(),l=t.getSelection(),d=u.removeRange(s,l,\"backward\"),h=d.getSelectionAfter(),y=u.splitBlock(d,h),_=y.getSelectionAfter(),g=u.setBlockType(y,_,\"atomic\"),v=o.create({entity:e}),m=[new i({key:c(),type:\"atomic\",text:n,characterList:f(p(v,n.length))}),new i({key:c(),type:\"unstyled\",text:\"\",characterList:f()})],b=r.createFromArray(m),E=u.replaceWithFragment(g,_,b),S=E.merge({selectionBefore:l,selectionAfter:E.getSelectionAfter().set(\"hasFocus\",!0)});return a.push(t,S,\"insert-fragment\")},moveAtomicBlock:function(t,e,n,r){var o=t.getCurrentContent(),i=t.getSelection(),s=void 0;if(\"before\"===r||\"after\"===r){var c=o.getBlockForKey(\"before\"===r?n.getStartKey():n.getEndKey());s=l(o,e,c,r)}else{var f=u.removeRange(o,n,\"backward\"),p=f.getSelectionAfter(),d=f.getBlockForKey(p.getFocusKey());if(0===p.getStartOffset())s=l(f,e,d,\"before\");else if(p.getEndOffset()===d.getLength())s=l(f,e,d,\"after\");else{var h=u.splitBlock(f,p),y=h.getSelectionAfter(),_=h.getBlockForKey(y.getFocusKey());s=l(h,e,_,\"before\")}}var g=s.merge({selectionBefore:i,selectionAfter:s.getSelectionAfter().set(\"hasFocus\",!0)});return a.push(t,g,\"move-block\")}};t.exports=d},function(t,e,n){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e,n){for(var r=e;r<n;r++)if(null!=t[r])return!1;return!0}function i(t,e,n,r){for(var o=e;o<n;o++)t[o]=r}var u=n(5),a=u.List,s=\".\",c=function(){function t(e){r(this,t),this._decorators=e.slice()}return t.prototype.getDecorations=function(t,e){var n=Array(t.getText().length).fill(null);return this._decorators.forEach(function(r,u){var a=0,c=r.strategy,l=function(t,e){o(n,t,e)&&(i(n,t,e,u+s+a),a++)};c(t,l,e)}),a(n)},t.prototype.getComponentForKey=function(t){var e=parseInt(t.split(s)[0],10);return this._decorators[e].component},t.prototype.getPropsForKey=function(t){var e=parseInt(t.split(s)[0],10);return this._decorators[e].props},t}();t.exports=c},function(t,e,n){\"use strict\";function r(t,e,n,r){var i=t.getBlockMap(),a=e.getStartKey(),s=e.getStartOffset(),c=e.getEndKey(),l=e.getEndOffset(),f=i.skipUntil(function(t,e){return e===a}).takeUntil(function(t,e){return e===c}).concat(u([[c,i.get(c)]])).map(function(t,e){var i,u;a===c?(i=s,u=l):(i=e===a?s:0,u=e===c?l:t.getLength());for(var f,p=t.getCharacterList();i<u;)f=p.get(i),p=p.set(i,r?o.applyStyle(f,n):o.removeStyle(f,n)),i++;return t.set(\"characterList\",p)});return t.merge({blockMap:i.merge(f),selectionBefore:e,selectionAfter:e})}var o=n(12),i=n(5),u=i.Map,a={add:function(t,e,n){return r(t,e,n,!0)},remove:function(t,e,n){return r(t,e,n,!1)}};t.exports=a},function(t,e,n){\"use strict\";var r=n(128),o=n(25),i=n(12),u=n(129),a=n(18),s=n(39),c=n(40),l=n(62),f=n(132),p=n(63),d=n(29),h=n(7),y=n(64),_=n(4),g=n(41),v=n(144),m=n(26),b=n(149),E=n(68),S=n(150),w=n(13),O=n(69),T=n(173),C={Editor:f,EditorBlock:p,EditorState:_,CompositeDecorator:u,Entity:d,EntityInstance:y,BlockMapBuilder:o,CharacterMetadata:i,ContentBlock:a,ContentState:s,SelectionState:m,AtomicBlockUtils:r,KeyBindingUtil:g,Modifier:h,RichUtils:v,DefaultDraftBlockRenderMap:c,DefaultDraftInlineStyle:l,convertFromHTML:E,convertFromRaw:S,convertToRaw:b,genKey:w,getDefaultKeyBinding:O,getVisibleSelectionRect:T};t.exports=C},function(t,e,n){(function(e){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var u=n(17),a=u||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},s=n(40),c=n(62),l=n(133),f=n(134),p=n(135),d=n(136),h=n(138),y=n(4),_=n(1),g=n(20),v=n(82),m=n(48),b=n(15),E=n(28),S=n(22),w=n(13),O=n(69),T=n(50),C=n(3),I=n(10),N=b.isBrowser(\"IE\"),A=!N,D={edit:d,composite:l,drag:p,cut:null,render:null},x=function(t){function n(e){r(this,n);var i=o(this,t.call(this,e));return i._blockSelectEvents=!1,i._clipboard=null,i._handler=null,i._dragCount=0,i._editorKey=e.editorKey||w(),i._placeholderAccessibilityID=\"placeholder-\"+i._editorKey,i._latestEditorState=e.editorState,i._onBeforeInput=i._buildHandler(\"onBeforeInput\"),i._onBlur=i._buildHandler(\"onBlur\"),i._onCharacterData=i._buildHandler(\"onCharacterData\"),i._onCompositionEnd=i._buildHandler(\"onCompositionEnd\"),i._onCompositionStart=i._buildHandler(\"onCompositionStart\"),i._onCopy=i._buildHandler(\"onCopy\"),i._onCut=i._buildHandler(\"onCut\"),i._onDragEnd=i._buildHandler(\"onDragEnd\"),i._onDragOver=i._buildHandler(\"onDragOver\"),i._onDragStart=i._buildHandler(\"onDragStart\"),i._onDrop=i._buildHandler(\"onDrop\"),i._onInput=i._buildHandler(\"onInput\"),i._onFocus=i._buildHandler(\"onFocus\"),i._onKeyDown=i._buildHandler(\"onKeyDown\"),i._onKeyPress=i._buildHandler(\"onKeyPress\"),i._onKeyUp=i._buildHandler(\"onKeyUp\"),i._onMouseDown=i._buildHandler(\"onMouseDown\"),i._onMouseUp=i._buildHandler(\"onMouseUp\"),i._onPaste=i._buildHandler(\"onPaste\"),i._onSelect=i._buildHandler(\"onSelect\"),i.focus=i._focus.bind(i),i.blur=i._blur.bind(i),i.setMode=i._setMode.bind(i),i.exitCurrentMode=i._exitCurrentMode.bind(i),i.restoreEditorDOM=i._restoreEditorDOM.bind(i),i.setClipboard=i._setClipboard.bind(i),i.getClipboard=i._getClipboard.bind(i),i.getEditorKey=function(){return i._editorKey},i.update=i._update.bind(i),i.onDragEnter=i._onDragEnter.bind(i),i.onDragLeave=i._onDragLeave.bind(i),i.state={contentsKey:0},i}return i(n,t),n.prototype._buildHandler=function(t){var e=this;return function(n){if(!e.props.readOnly){var r=e._handler&&e._handler[t];r&&r(e,n)}}},n.prototype._showPlaceholder=function(){return!!this.props.placeholder&&!this.props.editorState.isInCompositionMode()&&!this.props.editorState.getCurrentContent().hasText()},n.prototype._renderPlaceholder=function(){return this._showPlaceholder()?_.createElement(h,{text:I(this.props.placeholder),editorState:this.props.editorState,textAlignment:this.props.textAlignment,accessibilityID:this._placeholderAccessibilityID}):null},n.prototype.render=function(){var t=this.props,e=t.readOnly,n=t.textAlignment,r=E({\"DraftEditor/root\":!0,\"DraftEditor/alignLeft\":\"left\"===n,\"DraftEditor/alignRight\":\"right\"===n,\"DraftEditor/alignCenter\":\"center\"===n}),o={outline:\"none\",whiteSpace:\"pre-wrap\",wordWrap:\"break-word\"};return _.createElement(\"div\",{className:r},this._renderPlaceholder(),_.createElement(\"div\",{className:E(\"DraftEditor/editorContainer\"),ref:\"editorContainer\"},_.createElement(\"div\",{\"aria-activedescendant\":e?null:this.props.ariaActiveDescendantID,\"aria-autocomplete\":e?null:this.props.ariaAutoComplete,\"aria-describedby\":this._showPlaceholder()?this._placeholderAccessibilityID:null,\"aria-expanded\":e?null:this.props.ariaExpanded,\"aria-haspopup\":e?null:this.props.ariaHasPopup,\"aria-label\":this.props.ariaLabel,\"aria-owns\":e?null:this.props.ariaOwneeID,autoCapitalize:this.props.autoCapitalize,autoComplete:this.props.autoComplete,autoCorrect:this.props.autoCorrect,className:E({notranslate:!e,\"public/DraftEditor/content\":!0}),contentEditable:!e,\"data-testid\":this.props.webDriverTestID,onBeforeInput:this._onBeforeInput,onBlur:this._onBlur,onCompositionEnd:this._onCompositionEnd,onCompositionStart:this._onCompositionStart,onCopy:this._onCopy,onCut:this._onCut,onDragEnd:this._onDragEnd,onDragEnter:this.onDragEnter,onDragLeave:this.onDragLeave,onDragOver:this._onDragOver,onDragStart:this._onDragStart,onDrop:this._onDrop,onFocus:this._onFocus,onInput:this._onInput,onKeyDown:this._onKeyDown,onKeyPress:this._onKeyPress,onKeyUp:this._onKeyUp,onMouseUp:this._onMouseUp,onPaste:this._onPaste,onSelect:this._onSelect,ref:\"editor\",role:e?null:this.props.role||\"textbox\",spellCheck:A&&this.props.spellCheck,style:o,suppressContentEditableWarning:!0,tabIndex:this.props.tabIndex},_.createElement(f,{blockRenderMap:this.props.blockRenderMap,blockRendererFn:this.props.blockRendererFn,blockStyleFn:this.props.blockStyleFn,customStyleMap:a({},c,this.props.customStyleMap),customStyleFn:this.props.customStyleFn,editorKey:this._editorKey,editorState:this.props.editorState,key:\"contents\"+this.state.contentsKey,textDirectionality:this.props.textDirectionality}))))},n.prototype.componentDidMount=function(){this.setMode(\"edit\"),N&&document.execCommand(\"AutoUrlDetect\",!1,!1)},n.prototype.componentWillUpdate=function(t){this._blockSelectEvents=!0,this._latestEditorState=t.editorState},n.prototype.componentDidUpdate=function(){this._blockSelectEvents=!1},n.prototype._focus=function(t){var n=this.props.editorState,r=n.getSelection().getHasFocus(),o=g.findDOMNode(this.refs.editor),i=m.getScrollParent(o),u=t||T(i),a=u.x,s=u.y;o instanceof HTMLElement?void 0:\"production\"!==e.env.NODE_ENV?C(!1,\"editorNode is not an HTMLElement\"):C(!1),o.focus(),i===window?window.scrollTo(a,s):v.setTop(i,s),r||this.update(y.forceSelection(n,n.getSelection()))},n.prototype._blur=function(){var t=g.findDOMNode(this.refs.editor);t instanceof HTMLElement?void 0:\"production\"!==e.env.NODE_ENV?C(!1,\"editorNode is not an HTMLElement\"):C(!1),t.blur()},n.prototype._setMode=function(t){this._handler=D[t]},n.prototype._exitCurrentMode=function(){this.setMode(\"edit\")},n.prototype._restoreEditorDOM=function(t){var e=this;this.setState({contentsKey:this.state.contentsKey+1},function(){e._focus(t)})},n.prototype._setClipboard=function(t){this._clipboard=t},n.prototype._getClipboard=function(){return this._clipboard},n.prototype._update=function(t){this._latestEditorState=t,this.props.onChange(t)},n.prototype._onDragEnter=function(){this._dragCount++},n.prototype._onDragLeave=function(){this._dragCount--,0===this._dragCount&&this.exitCurrentMode()},n}(_.Component);x.defaultProps={blockRenderMap:s,blockRendererFn:S.thatReturnsNull,blockStyleFn:S.thatReturns(\"\"),keyBindingFn:O,readOnly:!1,spellCheck:!1,stripPastedStyles:!1},t.exports=x}).call(e,n(2))},function(t,e,n){\"use strict\";var r=n(7),o=n(4),i=n(47),u=n(43),a=n(78),s=20,c=!1,l=!1,f=\"\",p={onBeforeInput:function(t,e){f=(f||\"\")+e.data},onCompositionStart:function(t){l=!0},onCompositionEnd:function(t){c=!1,l=!1,setTimeout(function(){c||p.resolveComposition(t)},s)},onKeyDown:function(t,e){return l?void(e.which!==i.RIGHT&&e.which!==i.LEFT||e.preventDefault()):(p.resolveComposition(t),void t._onKeyDown(e))},onKeyPress:function(t,e){e.which===i.RETURN&&e.preventDefault()},resolveComposition:function(t){if(!l){c=!0;var e=f;f=\"\";var n=o.set(t._latestEditorState,{inCompositionMode:!1}),i=n.getCurrentInlineStyle(),s=u(n.getCurrentContent(),n.getSelection()),p=!e||a(n)||i.size>0||null!==s;if(p&&t.restoreEditorDOM(),t.exitCurrentMode(),e){var d=r.replaceText(n.getCurrentContent(),n.getSelection(),e,i,s);return void t.update(o.push(n,d,\"insert-characters\"))}p&&t.update(o.set(n,{nativelyRenderedContent:null,forceSelection:!0}))}}};t.exports=p},function(t,e,n){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function u(t,e,n,r){return p({\"public/DraftStyleDefault/unorderedListItem\":\"unordered-list-item\"===t,\"public/DraftStyleDefault/orderedListItem\":\"ordered-list-item\"===t,\"public/DraftStyleDefault/reset\":n,\"public/DraftStyleDefault/depth0\":0===e,\"public/DraftStyleDefault/depth1\":1===e,\"public/DraftStyleDefault/depth2\":2===e,\"public/DraftStyleDefault/depth3\":3===e,\"public/DraftStyleDefault/depth4\":4===e,\"public/DraftStyleDefault/listLTR\":\"LTR\"===r,\"public/DraftStyleDefault/listRTL\":\"RTL\"===r})}var a=n(17),s=a||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},c=n(63),l=n(30),f=(n(4),n(1)),p=n(28),d=n(235),h=n(10),y=function(t){function e(){return r(this,e),o(this,t.apply(this,arguments))}return i(e,t),e.prototype.shouldComponentUpdate=function(t){var e=this.props.editorState,n=t.editorState,r=e.getDirectionMap(),o=n.getDirectionMap();if(r!==o)return!0;var i=e.getSelection().getHasFocus(),u=n.getSelection().getHasFocus();if(i!==u)return!0;var a=n.getNativelyRenderedContent(),s=e.isInCompositionMode(),c=n.isInCompositionMode();if(e===n||null!==a&&n.getCurrentContent()===a||s&&c)return!1;var l=e.getCurrentContent(),f=n.getCurrentContent(),p=e.getDecorator(),d=n.getDecorator();return s!==c||l!==f||p!==d||n.mustForceSelection()},e.prototype.render=function(){for(var t=this.props,e=t.blockRenderMap,n=t.blockRendererFn,r=t.customStyleMap,o=t.customStyleFn,i=t.editorState,a=i.getCurrentContent(),p=i.getSelection(),y=i.mustForceSelection(),_=i.getDecorator(),g=h(i.getDirectionMap()),v=a.getBlocksAsArray(),m=[],b=null,E=null,S=0;S<v.length;S++){var w=v[S],O=w.getKey(),T=w.getType(),C=n(w),I=void 0,N=void 0,A=void 0;C&&(I=C.component,N=C.props,A=C.editable);var D=this.props.textDirectionality,x=D?D:g.get(O),P=l.encode(O,0,0),k={contentState:a,block:w,blockProps:N,customStyleMap:r,customStyleFn:o,decorator:_,direction:x,forceSelection:y,key:O,offsetKey:P,selection:p,tree:i.getBlockTree(O)},M=e.get(T),R=M.wrapper,F=M.element||e.get(\"unstyled\").element,j=w.getDepth(),L=this.props.blockStyleFn(w);if(\"li\"===F){var U=E!==R||null===b||j>b;L=d(L,u(T,j,U,x))}var B=I||c,K={className:L,\"data-block\":!0,\"data-editor\":this.props.editorKey,\"data-offset-key\":P,key:O};void 0!==A&&(K=s({},K,{contentEditable:A,suppressContentEditableWarning:!0}));var H=f.createElement(F,K,f.createElement(B,k));m.push({block:H,wrapperTemplate:R,key:O,offsetKey:P}),b=R?w.getDepth():null,E=R}for(var G=[],z=0;z<m.length;){var q=m[z];if(q.wrapperTemplate){var W=[];do W.push(m[z].block),z++;while(z<m.length&&m[z].wrapperTemplate===q.wrapperTemplate);var V=f.cloneElement(q.wrapperTemplate,{key:q.key+\"-wrap\",\"data-offset-key\":q.offsetKey},W);G.push(V)}else G.push(q.block),z++}return f.createElement(\"div\",{\"data-contents\":\"true\"},G)},e}(f.Component);t.exports=y},function(t,e,n){\"use strict\";function r(t,e){var n=null,r=null;if(\"function\"==typeof document.caretRangeFromPoint){var o=document.caretRangeFromPoint(t.x,t.y);n=o.startContainer,r=o.startOffset}else{if(!t.rangeParent)return null;n=t.rangeParent,r=t.rangeOffset}n=p(n),r=p(r);var i=p(c(n));return f(e,i,r,i,r)}function o(t,e){var n=a.moveText(t.getCurrentContent(),t.getSelection(),e);return s.push(t,n,\"insert-fragment\")}function i(t,e,n){var r=a.insertText(t.getCurrentContent(),e,n,t.getCurrentInlineStyle());return s.push(t,r,\"insert-fragment\")}var u=n(81),a=n(7),s=n(4),c=n(42),l=n(75),f=n(76),p=n(10),d=n(33),h={onDragEnd:function(t){t.exitCurrentMode()},onDrop:function(t,e){var n=new u(e.nativeEvent.dataTransfer),a=t._latestEditorState,s=r(e.nativeEvent,a);if(e.preventDefault(),t.exitCurrentMode(),null!=s){var c=n.getFiles();if(c.length>0){if(t.props.handleDroppedFiles&&d(t.props.handleDroppedFiles(s,c)))return;return void l(c,function(e){e&&t.update(i(a,s,e))})}var f=t._internalDrag?\"internal\":\"external\";if(!t.props.handleDrop||!d(t.props.handleDrop(s,n,f)))return t._internalDrag?void t.update(o(a,s)):void t.update(i(a,s,n.getText()))}}};t.exports=h},function(t,e,n){\"use strict\";var r=n(154),o=n(155),i=n(156),u=n(157),a=n(158),s=n(159),c=n(160),l=n(161),f=n(162),p=n(163),d=n(164),h=n(165),y={onBeforeInput:r,onBlur:o,onCompositionStart:i,onCopy:u,onCut:a,onDragOver:s,onDragStart:c,onFocus:l,onInput:f,onKeyDown:p,onPaste:d,onSelect:h};t.exports=y},function(t,e,n){(function(e){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var u=n(17),a=(n(18),n(139)),s=n(1),c=n(20),l=n(3),f=n(189),p=function(t){function n(){return r(this,n),o(this,t.apply(this,arguments))}return i(n,t),n.prototype._setSelection=function(){var t=this.props.selection;if(null!=t&&t.getHasFocus()){var n=this.props,r=n.block,o=n.start,i=n.text,u=r.getKey(),a=o+i.length;if(t.hasEdgeWithin(u,o,a)){var s=c.findDOMNode(this);s?void 0:\"production\"!==e.env.NODE_ENV?l(!1,\"Missing node\"):l(!1);var p=s.firstChild;p?void 0:\"production\"!==e.env.NODE_ENV?l(!1,\"Missing child\"):l(!1);var d=void 0;p.nodeType===Node.TEXT_NODE?d=p:\"BR\"===p.tagName?d=s:(d=p.firstChild,d?void 0:\"production\"!==e.env.NODE_ENV?l(!1,\"Missing targetNode\"):l(!1)),f(t,d,u,o,a)}}},n.prototype.shouldComponentUpdate=function(t){var n=c.findDOMNode(this.refs.leaf);return n?void 0:\"production\"!==e.env.NODE_ENV?l(!1,\"Missing leafNode\"):l(!1),n.textContent!==t.text||t.styleSet!==this.props.styleSet||t.forceSelection},n.prototype.componentDidUpdate=function(){this._setSelection()},n.prototype.componentDidMount=function(){this._setSelection()},n.prototype.render=function(){var t=this.props.block,e=this.props.text;e.endsWith(\"\\n\")&&this.props.isLast&&(e+=\"\\n\");var n=this.props,r=n.customStyleMap,o=n.customStyleFn,i=n.offsetKey,c=n.styleSet,l=c.reduce(function(t,e){var n={},o=r[e];return void 0!==o&&t.textDecoration!==o.textDecoration&&(n.textDecoration=[t.textDecoration,o.textDecoration].join(\" \").trim()),u(t,o,n)},{});if(o){var f=o(c,t);l=u(l,f)}return s.createElement(\"span\",{\"data-offset-key\":i,ref:\"leaf\",style:l},s.createElement(a,null,e))},n}(s.Component);t.exports=p}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var u=n(1),a=n(28),s=function(t){function e(){return r(this,e),o(this,t.apply(this,arguments))}return i(e,t),e.prototype.shouldComponentUpdate=function(t){return this.props.text!==t.text||this.props.editorState.getSelection().getHasFocus()!==t.editorState.getSelection().getHasFocus()},e.prototype.render=function(){var t=this.props.editorState.getSelection().getHasFocus(),e=a({\"public/DraftEditorPlaceholder/root\":!0,\"public/DraftEditorPlaceholder/hasFocus\":t});return u.createElement(\"div\",{className:e},u.createElement(\"div\",{className:a(\"public/DraftEditorPlaceholder/inner\"),id:this.props.accessibilityID},this.props.text))},e}(u.Component);t.exports=s},function(t,e,n){(function(e){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function u(t){return f?\"\\n\"===t.textContent:\"BR\"===t.tagName}var a=n(1),s=n(20),c=n(15),l=n(3),f=c.isBrowser(\"IE <= 11\"),p=f?a.createElement(\"span\",{key:\"A\",\"data-text\":\"true\"},\"\\n\"):a.createElement(\"br\",{key:\"A\",\"data-text\":\"true\"}),d=f?a.createElement(\"span\",{key:\"B\",\"data-text\":\"true\"},\"\\n\"):a.createElement(\"br\",{key:\"B\",\"data-text\":\"true\"}),h=function(t){function n(e){r(this,n);var i=o(this,t.call(this,e));return i._forceFlag=!1,i}return i(n,t),n.prototype.shouldComponentUpdate=function(t){var n=s.findDOMNode(this),r=\"\"===t.children;return n instanceof Element?void 0:\"production\"!==e.env.NODE_ENV?l(!1,\"node is not an Element\"):l(!1),r?!u(n):n.textContent!==t.children},n.prototype.componentWillUpdate=function(){this._forceFlag=!this._forceFlag},n.prototype.render=function(){return\"\"===this.props.children?this._forceFlag?p:d:a.createElement(\"span\",{key:this._forceFlag?\"A\":\"B\",\"data-text\":\"true\"},this.props.children)},n}(a.Component);t.exports=h}).call(e,n(2));\n},function(t,e){\"use strict\";var n={getRemovalRange:function(t,e,n,r,o){var i=n.split(\" \");i=i.map(function(t,e){if(\"forward\"===o){if(e>0)return\" \"+t}else if(e<i.length-1)return t+\" \";return t});for(var u,a,s=r,c=null,l=null,f=0;f<i.length;f++){if(a=i[f],u=s+a.length,t<u&&s<e)null!==c?l=u:(c=s,l=u);else if(null!==c)break;s=u}var p=r+n.length,d=c===r,h=l===p;return(!d&&h||d&&!h)&&(\"forward\"===o?l!==p&&l++:c!==r&&c--),{start:c,end:l}}};t.exports=n},function(t,e){\"use strict\";t.exports={logSelectionStateFailure:function(){return null}}},function(t,e,n){\"use strict\";var r=(n(12),n(18)),o=n(5),i=n(68),u=n(13),a=n(73),s=n(45),c=o.List,l=o.Repeat,f={processHTML:function(t,e){return i(t,a,e)},processText:function(t,e){return t.map(function(t){return t=s(t),new r({key:u(),type:\"unstyled\",text:t,characterList:c(l(e,t.length))})})}};t.exports=f},function(t,e,n){\"use strict\";var r,o=n(5),i=n(220),u=n(10),a=o.OrderedMap,s={getDirectionMap:function(t,e){r?r.reset():r=new i;var n=t.getBlockMap(),s=n.valueSeq().map(function(t){return u(r).getDirection(t.getText())}),c=a(n.keySeq().zip(s));return null!=e&&o.is(e,c)?e:c}};t.exports=s},function(t,e,n){\"use strict\";var r=n(7),o=n(4),i=(n(26),n(146)),u=n(10),a={currentBlockContainsLink:function(t){var e=t.getSelection(),n=t.getCurrentContent(),r=n.getEntityMap();return n.getBlockForKey(e.getAnchorKey()).getCharacterList().slice(e.getStartOffset(),e.getEndOffset()).some(function(t){var e=t.getEntity();return!!e&&\"LINK\"===r.__get(e).getType()})},getCurrentBlockType:function(t){var e=t.getSelection();return t.getCurrentContent().getBlockForKey(e.getStartKey()).getType()},getDataObjectForLinkURL:function(t){return{url:t.toString()}},handleKeyCommand:function(t,e){switch(e){case\"bold\":return a.toggleInlineStyle(t,\"BOLD\");case\"italic\":return a.toggleInlineStyle(t,\"ITALIC\");case\"underline\":return a.toggleInlineStyle(t,\"UNDERLINE\");case\"code\":return a.toggleCode(t);case\"backspace\":case\"backspace-word\":case\"backspace-to-start-of-line\":return a.onBackspace(t);case\"delete\":case\"delete-word\":case\"delete-to-end-of-block\":return a.onDelete(t);default:return null}},insertSoftNewline:function(t){var e=r.insertText(t.getCurrentContent(),t.getSelection(),\"\\n\",t.getCurrentInlineStyle(),null),n=o.push(t,e,\"insert-characters\");return o.forceSelection(n,e.getSelectionAfter())},onBackspace:function(t){var e=t.getSelection();if(!e.isCollapsed()||e.getAnchorOffset()||e.getFocusOffset())return null;var n=t.getCurrentContent(),r=e.getStartKey(),i=n.getBlockBefore(r);if(i&&\"atomic\"===i.getType()){var u=n.getBlockMap().delete(i.getKey()),s=n.merge({blockMap:u,selectionAfter:e});if(s!==n)return o.push(t,s,\"remove-range\")}var c=a.tryToRemoveBlockStyle(t);return c?o.push(t,c,\"change-block-type\"):null},onDelete:function(t){var e=t.getSelection();if(!e.isCollapsed())return null;var n=t.getCurrentContent(),i=e.getStartKey(),u=n.getBlockForKey(i),a=u.getLength();if(e.getStartOffset()<a)return null;var s=n.getBlockAfter(i);if(!s||\"atomic\"!==s.getType())return null;var c=e.merge({focusKey:s.getKey(),focusOffset:s.getLength()}),l=r.removeRange(n,c,\"forward\");return l!==n?o.push(t,l,\"remove-range\"):null},onTab:function(t,e,n){var r=e.getSelection(),u=r.getAnchorKey();if(u!==r.getFocusKey())return e;var a=e.getCurrentContent(),s=a.getBlockForKey(u),c=s.getType();if(\"unordered-list-item\"!==c&&\"ordered-list-item\"!==c)return e;t.preventDefault();var l=a.getBlockBefore(u);if(!l)return e;var f=l.getType();if(\"unordered-list-item\"!==f&&\"ordered-list-item\"!==f)return e;var p=s.getDepth();if(!t.shiftKey&&p===n)return e;n=Math.min(l.getDepth()+1,n);var d=i(a,r,t.shiftKey?-1:1,n);return o.push(e,d,\"adjust-depth\")},toggleBlockType:function(t,e){var n=t.getSelection(),i=n.getStartKey(),a=n.getEndKey(),s=t.getCurrentContent(),c=n;if(i!==a&&0===n.getEndOffset()){var l=u(s.getBlockBefore(a));a=l.getKey(),c=c.merge({anchorKey:i,anchorOffset:n.getStartOffset(),focusKey:a,focusOffset:l.getLength(),isBackward:!1})}var f=s.getBlockMap().skipWhile(function(t,e){return e!==i}).reverse().skipWhile(function(t,e){return e!==a}).some(function(t){return\"atomic\"===t.getType()});if(f)return t;var p=s.getBlockForKey(i).getType()===e?\"unstyled\":e;return o.push(t,r.setBlockType(s,c,p),\"change-block-type\")},toggleCode:function(t){var e=t.getSelection(),n=e.getAnchorKey(),r=e.getFocusKey();return e.isCollapsed()||n!==r?a.toggleBlockType(t,\"code-block\"):a.toggleInlineStyle(t,\"CODE\")},toggleInlineStyle:function(t,e){var n=t.getSelection(),i=t.getCurrentInlineStyle();if(n.isCollapsed())return o.setInlineStyleOverride(t,i.has(e)?i.remove(e):i.add(e));var u,a=t.getCurrentContent();return u=i.has(e)?r.removeInlineStyle(a,n,e):r.applyInlineStyle(a,n,e),o.push(t,u,\"change-inline-style\")},toggleLink:function(t,e,n){var i=r.applyEntity(t.getCurrentContent(),e,n);return o.push(t,i,\"apply-entity\")},tryToRemoveBlockStyle:function(t){var e=t.getSelection(),n=e.getAnchorOffset();if(e.isCollapsed()&&0===n){var o=e.getAnchorKey(),i=t.getCurrentContent(),u=i.getBlockForKey(o);if(u.getLength()>0)return null;var a=u.getType(),s=i.getBlockBefore(o);if(\"code-block\"===a&&s&&\"code-block\"===s.getType())return null;if(\"unstyled\"!==a)return r.setBlockType(i,e,\"unstyled\")}return null}};t.exports=a},function(t,e,n){\"use strict\";var r=n(7),o=n(4),i=n(32),u=n(10),a=null,s={cut:function(t){var e=t.getCurrentContent(),n=t.getSelection(),s=null;if(n.isCollapsed()){var c=n.getAnchorKey(),l=e.getBlockForKey(c).getLength();if(l===n.getAnchorOffset())return t;s=n.set(\"focusOffset\",l)}else s=n;s=u(s),a=i(e,s);var f=r.removeRange(e,s,\"forward\");return f===e?t:o.push(t,f,\"remove-range\")},paste:function(t){if(!a)return t;var e=r.replaceWithFragment(t.getCurrentContent(),t.getSelection(),a);return o.push(t,e,\"insert-fragment\")}};t.exports=s},function(t,e){\"use strict\";function n(t,e,n,r){var o=e.getStartKey(),i=e.getEndKey(),u=t.getBlockMap(),a=u.toSeq().skipUntil(function(t,e){return e===o}).takeUntil(function(t,e){return e===i}).concat([[i,u.get(i)]]).map(function(t){var e=t.getDepth()+n;return e=Math.max(0,Math.min(e,r)),t.set(\"depth\",e)});return u=u.merge(a),t.merge({blockMap:u,selectionBefore:e,selectionAfter:e})}t.exports=n},function(t,e,n){\"use strict\";function r(t,e,n,r){for(var i=t.getCharacterList();e<n;)i=i.set(e,o.applyEntity(i.get(e),r)),e++;return t.set(\"characterList\",i)}var o=n(12);t.exports=r},function(t,e,n){\"use strict\";function r(t,e,n){var r=t.getBlockMap(),u=e.getStartKey(),a=e.getStartOffset(),s=e.getEndKey(),c=e.getEndOffset(),l=r.skipUntil(function(t,e){return e===u}).takeUntil(function(t,e){return e===s}).toOrderedMap().merge(o.OrderedMap([[s,r.get(s)]])).map(function(t,e){var r=e===u?a:0,o=e===s?c:t.getLength();return i(t,r,o,n)});return t.merge({blockMap:r.merge(l),selectionBefore:e,selectionAfter:e})}var o=n(5),i=n(147);t.exports=r},function(t,e,n){\"use strict\";function r(t){var e=0,n={},r=[];t.getBlockMap().forEach(function(t,a){t.findEntityRanges(function(t){return null!==t.getEntity()},function(r){var i=o.stringify(t.getEntityAt(r));n.hasOwnProperty(i)||(n[i]=\"\"+e++)}),r.push({key:a,text:t.getText(),type:t.getType(),depth:t.getDepth(),inlineStyleRanges:u(t),entityRanges:i(t,n),data:t.getData().toObject()})});var a=Object.keys(n),s={};return a.forEach(function(e,n){var r=t.getEntity(o.unstringify(e));s[n]={type:r.getType(),mutability:r.getMutability(),data:r.getData()}}),{entityMap:s,blocks:r}}var o=n(67),i=n(166),u=n(167);t.exports=r},function(t,e,n){\"use strict\";function r(t){var e=t.blocks,n=t.entityMap,r={};Object.keys(n).forEach(function(t){var e=n[t],o=e.type,i=e.mutability,u=e.data,a=s.__create(o,i,u||{});r[t]=a});var o=e.map(function(t){var e=t.key,n=t.type,o=t.text,a=t.depth,s=t.inlineStyleRanges,d=t.entityRanges,y=t.data;e=e||p(),n=n||\"unstyled\",a=a||0,s=s||[],d=d||[],y=h(y);var _=f(o,s),g=d.filter(function(t){return r.hasOwnProperty(t.key)}).map(function(t){return i({},t,{key:r[t.key]})}),v=l(o,g),m=c(_,v);return new u({key:e,type:n,text:o,depth:a,characterList:m,data:y})});return a.createFromBlockArray(o)}var o=n(17),i=o||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},u=n(18),a=n(39),s=n(29),c=n(151),l=n(152),f=n(153),p=n(13),d=n(5),h=d.Map;t.exports=r},function(t,e,n){\"use strict\";function r(t,e){var n=t.map(function(t,n){var r=e[n];return o.create({style:t,entity:r})});return u(n)}var o=n(12),i=n(5),u=i.List;t.exports=r},function(t,e,n){\"use strict\";function r(t,e){var n=Array(t.length).fill(null);return e&&e.forEach(function(e){for(var r=i(t,0,e.offset).length,o=r+i(t,e.offset,e.length).length,u=r;u<o;u++)n[u]=e.key}),n}var o=n(19),i=o.substr;t.exports=r},function(t,e,n){\"use strict\";function r(t,e){var n=Array(t.length).fill(s);return e&&e.forEach(function(e){for(var r=a(t,0,e.offset).length,o=r+a(t,e.offset,e.length).length;r<o;)n[r]=n[r].add(e.style),r++}),n}var o=n(19),i=n(5),u=i.OrderedSet,a=o.substr,s=u();t.exports=r},function(t,e,n){\"use strict\";function r(t){return g&&(t==y||t==_)}function o(t,e,n,r){var o=a.replaceText(t.getCurrentContent(),t.getSelection(),e,n,r);return s.push(t,o,\"insert-characters\")}function i(t,e){void 0!==t._pendingStateFromBeforeInput&&(t.update(t._pendingStateFromBeforeInput),t._pendingStateFromBeforeInput=void 0);var n=t._latestEditorState,i=e.data;if(i){if(t.props.handleBeforeInput&&h(t.props.handleBeforeInput(i,n)))return void e.preventDefault();var a=n.getSelection();if(!a.isCollapsed())return e.preventDefault(),void t.update(o(n,i,n.getCurrentInlineStyle(),l(n.getCurrentContent(),n.getSelection())));var c=!f(n),y=o(n,i,n.getCurrentInlineStyle(),l(n.getCurrentContent(),n.getSelection()));if(!c)return e.preventDefault(),void t.update(y);var _=a.getAnchorKey(),g=n.getBlockTree(_),v=u.getFingerprint(g),m=u.getFingerprint(y.getBlockTree(_));r(i)||v!==m||p(y.getDirectionMap()).get(_)!==p(n.getDirectionMap()).get(_)?(e.preventDefault(),t.update(y)):(y=s.set(y,{nativelyRenderedContent:y.getCurrentContent()}),t._pendingStateFromBeforeInput=y,d(function(){void 0!==t._pendingStateFromBeforeInput&&(t.update(t._pendingStateFromBeforeInput),t._pendingStateFromBeforeInput=void 0)}))}}var u=n(61),a=n(7),s=n(4),c=n(15),l=n(43),f=n(78),p=n(10),d=n(238),h=n(33),y=\"'\",_=\"/\",g=c.isBrowser(\"Firefox\");t.exports=i},function(t,e,n){(function(e){\"use strict\";function r(t,n){a&&u()===document.body&&e.getSelection().removeAllRanges();var r=t._latestEditorState,i=r.getSelection();if(i.getHasFocus()){var s=i.set(\"hasFocus\",!1);t.props.onBlur&&t.props.onBlur(n),t.update(o.acceptSelection(r,s))}}var o=n(4),i=n(15),u=n(85),a=i.isEngine(\"WebKit\");t.exports=r}).call(e,function(){return this}())},function(t,e,n){\"use strict\";function r(t,e){t.setMode(\"composite\"),t.update(o.set(t._latestEditorState,{inCompositionMode:!0})),t._onCompositionStart(e)}var o=n(4);t.exports=r},function(t,e,n){\"use strict\";function r(t,e){var n=t._latestEditorState,r=n.getSelection();return r.isCollapsed()?void e.preventDefault():void t.setClipboard(o(t._latestEditorState))}var o=n(71);t.exports=r},function(t,e,n){\"use strict\";function r(t,e){var n=t._latestEditorState,r=n.getSelection();if(r.isCollapsed())return void e.preventDefault();var i=a.getScrollParent(e.target),u=c(i),l=u.x,f=u.y,p=s(n);t.setClipboard(p),t.setMode(\"cut\"),setTimeout(function(){t.restoreEditorDOM({x:l,y:f}),t.exitCurrentMode(),t.update(o(n))},0)}function o(t){var e=i.removeRange(t.getCurrentContent(),t.getSelection(),\"forward\");return u.push(t,e,\"remove-range\")}var i=n(7),u=n(4),a=n(48),s=n(71),c=n(50);t.exports=r},function(t,e){\"use strict\";function n(t,e){t._internalDrag=!1,t.setMode(\"drag\"),e.preventDefault()}t.exports=n},function(t,e){\"use strict\";function n(t){t._internalDrag=!0,t.setMode(\"drag\")}t.exports=n},function(t,e,n){\"use strict\";function r(t,e){var n=t._latestEditorState,r=n.getSelection();if(!r.getHasFocus()){var i=r.set(\"hasFocus\",!0);t.props.onFocus&&t.props.onFocus(e),t.update(o.forceSelection(n,i))}}var o=n(4);t.exports=r},function(t,e,n){(function(e){\"use strict\";function r(t){void 0!==t._pendingStateFromBeforeInput&&(t.update(t._pendingStateFromBeforeInput),t._pendingStateFromBeforeInput=void 0);var n=e.getSelection(),r=n.anchorNode,s=n.isCollapsed,d=r.nodeType!==Node.TEXT_NODE,h=r.nodeType!==Node.TEXT_NODE&&r.nodeType!==Node.ELEMENT_NODE;if(o.draft_killswitch_allow_nontextnodes){if(d)return}else if(h)return;if(r.nodeType===Node.TEXT_NODE&&(null!==r.previousSibling||null!==r.nextSibling)){var y=r.parentNode;r.nodeValue=y.textContent;for(var _=y.firstChild;null!==_;_=_.nextSibling)_!==r&&y.removeChild(_)}var g=r.textContent,v=t._latestEditorState,m=l(c(r)),b=u.decode(m),E=b.blockKey,S=b.decoratorKey,w=b.leafKey,O=v.getBlockTree(E).getIn([S,\"leaves\",w]),T=O.start,C=O.end,I=v.getCurrentContent(),N=I.getBlockForKey(E),A=N.getText().slice(T,C);if(g.endsWith(p)&&(g=g.slice(0,-1)),g!==A){var D,x,P,k,M=v.getSelection(),R=M.merge({anchorOffset:T,focusOffset:C,isBackward:!1}),F=N.getEntityAt(T),j=F&&I.getEntity(F),L=j&&j.getMutability(),U=\"MUTABLE\"===L,B=U?\"spellcheck-change\":\"apply-entity\",K=i.replaceText(I,R,g,N.getInlineStyleAt(T),U?N.getEntityAt(T):null);if(f)D=n.anchorOffset,x=n.focusOffset,P=T+Math.min(D,x),k=P+Math.abs(D-x),D=P,x=k;else{var H=g.length-A.length;P=M.getStartOffset(),k=M.getEndOffset(),D=s?k+H:P,x=k+H}var G=K.merge({selectionBefore:I.getSelectionAfter(),selectionAfter:M.merge({anchorOffset:D,focusOffset:x})});t.update(a.push(v,G,B))}}var o=n(65),i=n(7),u=n(30),a=n(4),s=n(15),c=n(42),l=n(10),f=s.isEngine(\"Gecko\"),p=\"\\n\\n\";t.exports=r}).call(e,function(){return this}())},function(t,e,n){\"use strict\";function r(t,e){switch(t){case\"redo\":return u.redo(e);case\"delete\":return _(e);case\"delete-word\":return d(e);case\"backspace\":return y(e);case\"backspace-word\":return p(e);case\"backspace-to-start-of-line\":return f(e);case\"split-block\":return h(e);case\"transpose-characters\":return m(e);case\"move-selection-to-start-of-block\":return v(e);case\"move-selection-to-end-of-block\":return g(e);case\"secondary-cut\":return c.cut(e);case\"secondary-paste\":return c.paste(e);default:return e}}function o(t,e){var n=e.which,o=t._latestEditorState;switch(n){case s.RETURN:if(e.preventDefault(),t.props.handleReturn&&E(t.props.handleReturn(e,o)))return;break;case s.ESC:return e.preventDefault(),void(t.props.onEscape&&t.props.onEscape(e));case s.TAB:return void(t.props.onTab&&t.props.onTab(e));case s.UP:return void(t.props.onUpArrow&&t.props.onUpArrow(e));case s.DOWN:return void(t.props.onDownArrow&&t.props.onDownArrow(e));case s.SPACE:if(w&&S(e)){e.preventDefault();var a=i.replaceText(o.getCurrentContent(),o.getSelection(),\" \");return void t.update(u.push(o,a,\"insert-characters\"))}}var c=t.props.keyBindingFn(e);if(c){if(\"undo\"===c)return void b(e,o,t.update);if(e.preventDefault(),!t.props.handleKeyCommand||!E(t.props.handleKeyCommand(c,o))){var l=r(c,o);l!==o&&t.update(l)}}}var i=n(7),u=n(4),a=n(41),s=n(47),c=n(145),l=n(15),f=n(176),p=n(177),d=n(178),h=n(179),y=n(182),_=n(183),g=n(180),v=n(181),m=n(184),b=n(185),E=n(33),S=a.isOptionKeyCommand,w=l.isBrowser(\"Chrome\");t.exports=o},function(t,e,n){\"use strict\";function r(t,e){e.preventDefault();var n=new s(e.clipboardData);if(!n.isRichText()){var r=n.getFiles(),_=n.getText();if(r.length>0){if(t.props.handlePastedFiles&&h(t.props.handlePastedFiles(r)))return;return void d(r,function(e){if(e=e||_){var n=t._latestEditorState,r=y(e),o=a.create({style:n.getCurrentInlineStyle(),entity:p(n.getCurrentContent(),n.getSelection())}),i=l.processText(r,o),s=u.createFromArray(i),d=c.replaceWithFragment(n.getCurrentContent(),n.getSelection(),s);t.update(f.push(n,d,\"insert-fragment\"))}})}}var g=[],v=n.getText(),m=n.getHTML(),b=t._latestEditorState;if(!t.props.handlePastedText||!h(t.props.handlePastedText(v,m,b))){if(v&&(g=y(v)),!t.props.stripPastedStyles){var E=t.getClipboard();if(n.isRichText()&&E){if(m.indexOf(t.getEditorKey())!==-1||1===g.length&&1===E.size&&E.first().getText()===v)return void t.update(o(t._latestEditorState,E))}else if(E&&n.types.includes(\"com.apple.webarchive\")&&!n.types.includes(\"text/html\")&&i(g,E))return void t.update(o(t._latestEditorState,E));if(m){var S=l.processHTML(m,t.props.blockRenderMap);if(S){var w=S.contentBlocks,O=S.entityMap;if(w){var T=u.createFromArray(w);return void t.update(o(t._latestEditorState,T,O))}}}t.setClipboard(null)}if(g.length){var C=a.create({style:b.getCurrentInlineStyle(),entity:p(b.getCurrentContent(),b.getSelection())}),I=l.processText(g,C),N=u.createFromArray(I);t.update(o(t._latestEditorState,N))}}}function o(t,e,n){var r=c.replaceWithFragment(t.getCurrentContent(),t.getSelection(),e);return f.push(t,r.set(\"entityMap\",n),\"insert-fragment\")}function i(t,e){return t.length===e.size&&e.valueSeq().every(function(e,n){return e.getText()===t[n]})}var u=n(25),a=n(12),s=n(81),c=n(7),l=n(142),f=n(4),p=n(43),d=n(75),h=n(33),y=n(191);t.exports=r},function(t,e,n){(function(e){\"use strict\";function r(t){if(!t._blockSelectEvents&&t._latestEditorState===t.props.editorState){var n=t.props.editorState,r=i.findDOMNode(t.refs.editorContainer);r?void 0:\"production\"!==e.env.NODE_ENV?a(!1,\"Missing editorNode\"):a(!1),r.firstChild instanceof HTMLElement?void 0:\"production\"!==e.env.NODE_ENV?a(!1,\"editorNode.firstChild is not an HTMLElement\"):a(!1);var s=u(n,r.firstChild),c=s.selectionState;c!==n.getSelection()&&(n=s.needsRecovery?o.forceSelection(n,c):o.acceptSelection(n,c),t.update(n))}}var o=n(4),i=n(20),u=n(170),a=n(3);t.exports=r}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t,e){var n=[];return t.findEntityRanges(function(t){return!!t.getEntity()},function(r,i){var a=t.getText(),s=t.getEntityAt(r);n.push({offset:u(a.slice(0,r)),length:u(a.slice(r,i)),key:Number(e[o.stringify(s)])})}),n}var o=n(67),i=n(19),u=i.strlen;t.exports=r},function(t,e,n){\"use strict\";function r(t,e,n){var r=[],o=e.map(function(t){return t.has(n)}).toList();return u(o,a,s,function(e,o){var u=t.getText();r.push({offset:i.strlen(u.slice(0,e)),length:i.strlen(u.slice(e,o)),style:n})}),r}function o(t){var e=t.getCharacterList().map(function(t){return t.getStyle()}).toList(),n=e.flatten().toSet().map(function(n){return r(t,e,n)});return Array.prototype.concat.apply(c,n.toJS())}var i=n(19),u=n(31),a=function(t,e){return t===e},s=function(t){return!!t},c=[];t.exports=o},function(t,e,n){(function(e){\"use strict\";function r(t){var n=getComputedStyle(t),r=document.createElement(\"div\");r.style.fontFamily=n.fontFamily,r.style.fontSize=n.fontSize,r.style.fontStyle=n.fontStyle,r.style.fontWeight=n.fontWeight,r.style.lineHeight=n.lineHeight,r.style.position=\"absolute\",r.textContent=\"M\";var o=document.body;o?void 0:\"production\"!==e.env.NODE_ENV?c(!1,\"Missing document.body\"):c(!1),o.appendChild(r);var i=r.getBoundingClientRect();return o.removeChild(r),i.height}function o(t,e){for(var n=1/0,r=1/0,o=-(1/0),i=-(1/0),u=0;u<t.length;u++){var a=t[u];0!==a.width&&1!==a.width&&(n=Math.min(n,a.top),r=Math.min(r,a.bottom),o=Math.max(o,a.top),i=Math.max(i,a.bottom))}return o<=r&&o-n<e&&i-r<e}function i(t){switch(t.nodeType){case Node.DOCUMENT_TYPE_NODE:return 0;case Node.TEXT_NODE:case Node.PROCESSING_INSTRUCTION_NODE:case Node.COMMENT_NODE:return t.length;default:return t.childNodes.length}}function u(t){t.collapsed?void 0:\"production\"!==e.env.NODE_ENV?c(!1,\"expandRangeToStartOfLine: Provided range is not collapsed.\"):c(!1),t=t.cloneRange();var n=t.startContainer;1!==n.nodeType&&(n=n.parentNode);var u=r(n),l=t.endContainer,f=t.endOffset;for(t.setStart(t.startContainer,0);o(s(t),u)&&(l=t.startContainer,f=t.startOffset,l.parentNode?void 0:\"production\"!==e.env.NODE_ENV?c(!1,\"Found unexpected detached subtree when traversing.\"):c(!1),t.setStartBefore(l),1!==l.nodeType||\"inline\"===getComputedStyle(l).display););for(var p=l,d=f-1;;){for(var h=p.nodeValue,y=d;y>=0;y--)if(!(null!=h&&y>0&&a.isSurrogatePair(h,y-1))){if(t.setStart(p,y),!o(s(t),u))break;l=p,f=y}if(y===-1||0===p.childNodes.length)break;p=p.childNodes[y],d=i(p)}return t.setStart(l,f),t}var a=n(19),s=n(72),c=n(3);t.exports=u}).call(e,n(2))},function(t,e,n){(function(e){\"use strict\";function r(t,e,n,r,i){var u=r.getStartOffset(),a=r.getEndOffset(),s=e.getEntityAt(u),c=n.getEntityAt(a-1);if(!s&&!c)return r;var l=r;if(s&&s===c)l=o(t,e,l,i,s,!0,!0);else if(s&&c){var f=o(t,e,l,i,s,!1,!0),p=o(t,n,l,i,c,!1,!1);l=l.merge({anchorOffset:f.getAnchorOffset(),focusOffset:p.getFocusOffset(),isBackward:!1})}else if(s){var d=o(t,e,l,i,s,!1,!0);l=l.merge({anchorOffset:d.getStartOffset(),isBackward:!1})}else if(c){var h=o(t,n,l,i,c,!1,!1);l=l.merge({focusOffset:h.getEndOffset(),isBackward:!1})}return l}function o(t,n,r,o,s,c,l){var f=r.getStartOffset(),p=r.getEndOffset(),d=t.__get(s),h=d.getMutability(),y=l?f:p;if(\"MUTABLE\"===h)return r;var _=u(n,s).filter(function(t){return y<=t.end&&y>=t.start});1!=_.length?\"production\"!==e.env.NODE_ENV?a(!1,\"There should only be one entity range within this removal range.\"):a(!1):void 0;var g=_[0];if(\"IMMUTABLE\"===h)return r.merge({anchorOffset:g.start,focusOffset:g.end,isBackward:!1});c||(l?p=g.end:f=g.start);var v=i.getRemovalRange(f,p,n.getText().slice(g.start,g.end),g.start,o);return r.merge({anchorOffset:v.start,focusOffset:v.end,isBackward:!1})}var i=n(140),u=n(172),a=n(3);t.exports=r}).call(e,n(2))},function(t,e,n){(function(e){\"use strict\";function r(t,n){var r=e.getSelection();return 0===r.rangeCount?{selectionState:t.getSelection().set(\"hasFocus\",!1),needsRecovery:!1}:o(t,n,r.anchorNode,r.anchorOffset,r.focusNode,r.focusOffset)}var o=n(70);t.exports=r}).call(e,function(){return this}())},function(t,e,n){\"use strict\";function r(t){var e=o(t),n=0,r=0,i=0,u=0;if(e.length){if(e.length>1&&0===e[0].width){var a=e[1];n=a.top,r=a.right,i=a.bottom,u=a.left}else{var s=e[0];n=s.top,r=s.right,i=s.bottom,u=s.left}for(var c=1;c<e.length;c++){var l=e[c];0!==l.height&&0!==l.width&&(n=Math.min(n,l.top),r=Math.max(r,l.right),i=Math.max(i,l.bottom),u=Math.min(u,l.left))}}return{top:n,right:r,bottom:i,left:u,width:r-u,height:i-n}}var o=n(72);t.exports=r},function(t,e,n){(function(e){\"use strict\";function r(t,n){var r=[];return t.findEntityRanges(function(t){return t.getEntity()===n},function(t,e){r.push({start:t,end:e})}),r.length?void 0:\"production\"!==e.env.NODE_ENV?o(!1,\"Entity key not found in this range.\"):o(!1),r}var o=n(3);t.exports=r}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t){var e=t.getSelection();if(!e.rangeCount)return null;var n=e.getRangeAt(0),r=o(n),i=r.top,u=r.right,a=r.bottom,s=r.left;return 0===i&&0===u&&0===a&&0===s?null:r}var o=n(171);t.exports=r},function(t,e,n){(function(e){\"use strict\";function r(t,n,r){n.isCollapsed()?void 0:\"production\"!==e.env.NODE_ENV?a(!1,\"`insertFragment` should only be called with a collapsed selection state.\"):a(!1);var s,c,l=n.getStartKey(),f=n.getStartOffset(),p=t.getBlockMap(),d=r.size;if(1===d){var h=p.get(l),y=r.first(),_=h.getText(),g=h.getCharacterList(),v=h.merge({text:_.slice(0,f)+y.getText()+_.slice(f),characterList:u(g,y.getCharacterList(),f),data:y.getData()});return p=p.set(l,v),s=l,c=f+y.getText().length,t.merge({blockMap:p.set(l,v),selectionBefore:n,selectionAfter:n.merge({anchorKey:s,anchorOffset:c,focusKey:s,focusOffset:c,isBackward:!1})})}var m=[];return t.getBlockMap().forEach(function(t,e){if(e!==l)return void m.push(t);var n=t.getText(),o=t.getCharacterList(),u=n.length,a=n.slice(0,f),c=o.slice(0,f),p=r.first(),h=t.merge({text:a+p.getText(),characterList:c.concat(p.getCharacterList()),type:a?t.getType():p.getType(),data:p.getData()});m.push(h),r.slice(1,d-1).forEach(function(t){m.push(t.set(\"key\",i()))});var y=n.slice(f,u),_=o.slice(f,u),g=r.last();s=i();var v=g.merge({key:s,text:g.getText()+y,characterList:g.getCharacterList().concat(_),data:g.getData()});m.push(v)}),c=r.last().getLength(),t.merge({blockMap:o.createFromArray(m),selectionBefore:n,selectionAfter:n.merge({anchorKey:s,anchorOffset:c,focusKey:s,focusOffset:c,isBackward:!1})})}var o=n(25),i=n(13),u=n(77),a=n(3);t.exports=r}).call(e,n(2))},function(t,e,n){(function(e){\"use strict\";function r(t,n,r,o){n.isCollapsed()?void 0:\"production\"!==e.env.NODE_ENV?u(!1,\"`insertText` should only be called with a collapsed range.\"):u(!1);var s=r.length;if(!s)return t;var c=t.getBlockMap(),l=n.getStartKey(),f=n.getStartOffset(),p=c.get(l),d=p.getText(),h=p.merge({text:d.slice(0,f)+r+d.slice(f,p.getLength()),characterList:i(p.getCharacterList(),a(o,s).toList(),f)}),y=f+s;return t.merge({blockMap:c.set(l,h),selectionAfter:n.merge({anchorOffset:y,focusOffset:y})})}var o=n(5),i=n(77),u=n(3),a=o.Repeat;t.exports=r}).call(e,n(2))},function(t,e,n){(function(e){\"use strict\";function r(t){var n=s(t,function(t){var n=t.getSelection();if(n.isCollapsed()&&0===n.getAnchorOffset())return a(t,1);var r=e.getSelection(),o=r.getRangeAt(0);return o=i(o),u(t,null,o.endContainer,o.endOffset,o.startContainer,o.startOffset).selectionState},\"backward\");return n===t.getCurrentContent()?t:o.push(t,n,\"remove-range\")}var o=n(4),i=n(168),u=n(70),a=n(44),s=n(27);t.exports=r}).call(e,function(){return this}())},function(t,e,n){\"use strict\";function r(t){var e=a(t,function(t){var e=t.getSelection(),n=e.getStartOffset();if(0===n)return u(t,1);var r=e.getStartKey(),i=t.getCurrentContent(),a=i.getBlockForKey(r).getText().slice(0,n),s=o.getBackward(a);return u(t,s.length||1)},\"backward\");return e===t.getCurrentContent()?t:i.push(t,e,\"remove-range\")}var o=n(66),i=n(4),u=n(44),a=n(27);t.exports=r},function(t,e,n){\"use strict\";function r(t){var e=a(t,function(t){var e=t.getSelection(),n=e.getStartOffset(),r=e.getStartKey(),i=t.getCurrentContent(),a=i.getBlockForKey(r).getText().slice(n),s=o.getForward(a);return u(t,s.length||1)},\"forward\");return e===t.getCurrentContent()?t:i.push(t,e,\"remove-range\")}var o=n(66),i=n(4),u=n(79),a=n(27);t.exports=r},function(t,e,n){\"use strict\";function r(t){var e=o.splitBlock(t.getCurrentContent(),t.getSelection());return i.push(t,e,\"split-block\")}var o=n(7),i=n(4);t.exports=r},function(t,e,n){\"use strict\";function r(t){var e=t.getSelection(),n=e.getEndKey(),r=t.getCurrentContent(),i=r.getBlockForKey(n).getLength();return o.set(t,{selection:e.merge({anchorKey:n,anchorOffset:i,focusKey:n,focusOffset:i,isBackward:!1}),forceSelection:!0})}var o=n(4);t.exports=r},function(t,e,n){\"use strict\";function r(t){var e=t.getSelection(),n=e.getStartKey();return o.set(t,{selection:e.merge({anchorKey:n,anchorOffset:0,focusKey:n,focusOffset:0,isBackward:!1}),forceSelection:!0})}var o=n(4);t.exports=r},function(t,e,n){\"use strict\";function r(t){var e=a(t,function(t){var e=t.getSelection(),n=t.getCurrentContent(),r=e.getAnchorKey(),o=e.getAnchorOffset(),a=n.getBlockForKey(r).getText()[o-1];return u(t,a?i.getUTF16Length(a,0):1)},\"backward\");if(e===t.getCurrentContent())return t;var n=t.getSelection();return o.push(t,e.set(\"selectionBefore\",n),n.isCollapsed()?\"backspace-character\":\"remove-range\")}var o=n(4),i=n(19),u=n(44),a=n(27);t.exports=r},function(t,e,n){\"use strict\";function r(t){var e=a(t,function(t){var e=t.getSelection(),n=t.getCurrentContent(),r=e.getAnchorKey(),o=e.getAnchorOffset(),a=n.getBlockForKey(r).getText()[o];return u(t,a?i.getUTF16Length(a,0):1)},\"forward\");if(e===t.getCurrentContent())return t;var n=t.getSelection();return o.push(t,e.set(\"selectionBefore\",n),n.isCollapsed()?\"delete-character\":\"remove-range\")}var o=n(4),i=n(19),u=n(79),a=n(27);t.exports=r},function(t,e,n){\"use strict\";function r(t){var e=t.getSelection();if(!e.isCollapsed())return t;var n=e.getAnchorOffset();if(0===n)return t;var r=e.getAnchorKey(),a=t.getCurrentContent(),s=a.getBlockForKey(r),c=s.getLength();if(c<=1)return t;var l,f;n===c?(l=e.set(\"anchorOffset\",n-1),f=e):(l=e.set(\"focusOffset\",n+1),f=l.set(\"anchorOffset\",n+1));var p=u(a,l),d=o.removeRange(a,l,\"backward\"),h=d.getSelectionAfter(),y=h.getAnchorOffset()-1,_=h.merge({anchorOffset:y,focusOffset:y}),g=o.replaceWithFragment(d,_,p),v=i.push(t,g,\"insert-fragment\");return i.acceptSelection(v,f)}var o=n(7),i=n(4),u=n(32);t.exports=r},function(t,e,n){\"use strict\";function r(t,e,n){var r=o.undo(e);if(\"spellcheck-change\"===e.getLastChangeType()){var i=r.getCurrentContent();return void n(o.set(r,{nativelyRenderedContent:i}))}return t.preventDefault(),e.getNativelyRenderedContent()?(n(o.set(e,{nativelyRenderedContent:null})),void setTimeout(function(){n(r)},0)):void n(r)}var o=n(4);t.exports=r},function(t,e,n){\"use strict\";function r(t,e,n){var r=e.getStartKey(),o=e.getEndKey(),u=t.getBlockMap(),a=u.toSeq().skipUntil(function(t,e){return e===r}).takeUntil(function(t,e){return e===o}).concat(i([[o,u.get(o)]])).map(n);return t.merge({blockMap:u.merge(a),selectionBefore:e,selectionAfter:e})}var o=n(5),i=o.Map;t.exports=r},function(t,e,n){(function(e){\"use strict\";function r(t,n,r,i){n.getKey()===r.getKey()?\"production\"!==e.env.NODE_ENV?o(!1,\"Block cannot be moved next to itself.\"):o(!1):void 0,\"replace\"===i?\"production\"!==e.env.NODE_ENV?o(!1,\"Replacing blocks is not supported.\"):o(!1):void 0;var u=r.getKey(),a=t.getBlockBefore(u),s=t.getBlockAfter(u),c=t.getBlockMap(),l=c.delete(n.getKey()),f=l.toSeq().takeUntil(function(t){return t===r}),p=l.toSeq().skipUntil(function(t){return t===r}).skip(1),d=void 0;return\"before\"===i?(a&&a.getKey()===n.getKey()?\"production\"!==e.env.NODE_ENV?o(!1,\"Block cannot be moved next to itself.\"):o(!1):void 0,d=f.concat([[n.getKey(),n],[r.getKey(),r]],p).toOrderedMap()):\"after\"===i&&(s&&s.getKey()===n.getKey()?\"production\"!==e.env.NODE_ENV?o(!1,\"Block cannot be moved next to itself.\"):o(!1):void 0,d=f.concat([[r.getKey(),r],[n.getKey(),n]],p).toOrderedMap()),t.merge({blockMap:d,selectionBefore:t.getSelectionAfter(),selectionAfter:t.getSelectionAfter().merge({anchorKey:n.getKey(),focusKey:n.getKey()})})}var o=n(3);t.exports=r}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t,e){if(e.isCollapsed())return t;var n,r=t.getBlockMap(),u=e.getStartKey(),a=e.getStartOffset(),s=e.getEndKey(),c=e.getEndOffset(),l=r.get(u),f=r.get(s);n=l===f?o(l.getCharacterList(),a,c):l.getCharacterList().slice(0,a).concat(f.getCharacterList().slice(c));var p=l.merge({text:l.getText().slice(0,a)+f.getText().slice(c),characterList:n}),d=r.toSeq().skipUntil(function(t,e){return e===u}).takeUntil(function(t,e){return e===s}).concat(i.Map([[s,null]])).map(function(t,e){return e===u?p:null});return r=r.merge(d).filter(function(t){return!!t}),t.merge({blockMap:r,selectionBefore:e,selectionAfter:e.merge({anchorKey:u,anchorOffset:a,focusKey:u,focusOffset:a,isBackward:!1})})}function o(t,e,n){if(0===e)for(;e<n;)t=t.shift(),e++;else if(n===t.count())for(;n>e;)t=t.pop(),n--;else{var r=t.slice(0,e),o=t.slice(n);t=r.concat(o).toList()}return t}var i=n(5);t.exports=r},function(t,e,n){(function(e,r){\"use strict\";function o(t){if(!t)return\"[empty]\";var n=i(t);return n.nodeType===Node.TEXT_NODE?n.textContent:(n instanceof Element?void 0:\"production\"!==e.env.NODE_ENV?h(!1,\"Node must be an Element if it is not a text node.\"):h(!1),n.innerHTML)}function i(t){if(t.nodeType===Node.TEXT_NODE){var e=t.textContent.length;return document.createTextNode(\"[text \"+e+\"]\")}for(var n=t.cloneNode(),r=t.childNodes,o=0;o<r.length;o++)n.appendChild(i(r[o]));return n}function u(t){for(var e=t;e;){if(e instanceof Element&&e.hasAttribute(\"contenteditable\"))return o(e);e=e.parentNode}return\"Could not find contentEditable parent of node\"}function a(t){return null===t.nodeValue?t.childNodes.length:t.nodeValue.length}function s(t,e,n,o,i){if(p(document.documentElement,e)){var u=r.getSelection(),a=t.getAnchorKey(),s=t.getAnchorOffset(),f=t.getFocusKey(),d=t.getFocusOffset(),h=t.getIsBackward();if(!u.extend&&h){var y=a,_=s;a=f,s=d,f=y,d=_,h=!1}var g=a===n&&o<=s&&i>=s,v=f===n&&o<=d&&i>=d;if(g&&v)return u.removeAllRanges(),l(u,e,s-o,t),void c(u,e,d-o,t);if(h){if(v&&(u.removeAllRanges(),l(u,e,d-o,t)),g){var m=u.focusNode,b=u.focusOffset;u.removeAllRanges(),l(u,e,s-o,t),c(u,m,b,t)}}else g&&(u.removeAllRanges(),l(u,e,s-o,t)),v&&c(u,e,d-o,t)}}function c(t,e,n,r){if(t.extend&&p(d(),e))n>a(e)&&f.logSelectionStateFailure({anonymizedDom:u(e),extraParams:JSON.stringify({offset:n}),selectionState:JSON.stringify(r.toJS())\n}),t.extend(e,n);else{var o=t.getRangeAt(0);o.setEnd(e,n),t.addRange(o.cloneRange())}}function l(t,e,n,r){var o=document.createRange();n>a(e)&&f.logSelectionStateFailure({anonymizedDom:u(e),extraParams:JSON.stringify({offset:n}),selectionState:JSON.stringify(r.toJS())}),o.setStart(e,n),t.addRange(o)}var f=n(141),p=n(84),d=n(85),h=n(3);t.exports=s}).call(e,n(2),function(){return this}())},function(t,e,n){(function(e){\"use strict\";function r(t,n){n.isCollapsed()?void 0:\"production\"!==e.env.NODE_ENV?u(!1,\"Selection range must be collapsed.\"):u(!1);var r=n.getAnchorKey(),o=n.getAnchorOffset(),s=t.getBlockMap(),c=s.get(r),l=c.getText(),f=c.getCharacterList(),p=c.merge({text:l.slice(0,o),characterList:f.slice(0,o)}),d=i(),h=p.merge({key:d,text:l.slice(o),characterList:f.slice(o),data:a()}),y=s.toSeq().takeUntil(function(t){return t===c}),_=s.toSeq().skipUntil(function(t){return t===c}).rest(),g=y.concat([[p.getKey(),p],[h.getKey(),h]],_).toOrderedMap();return t.merge({blockMap:g,selectionBefore:n,selectionAfter:n.merge({anchorKey:d,anchorOffset:0,focusKey:d,focusOffset:0,isBackward:!1})})}var o=n(5),i=n(13),u=n(3),a=o.Map;t.exports=r}).call(e,n(2))},function(t,e){\"use strict\";function n(t){return t.split(r)}var r=/\\r\\n?|\\n/g;t.exports=n},function(t,e,n){var r;/*!\n\t  Copyright (c) 2015 Jed Watson.\n\t  Based on code that is Copyright 2013-2015, Facebook, Inc.\n\t  All rights reserved.\n\t*/\n!function(){\"use strict\";var o=!(\"undefined\"==typeof window||!window.document||!window.document.createElement),i={canUseDOM:o,canUseWorkers:\"undefined\"!=typeof Worker,canUseEventListeners:o&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:o&&!!window.screen};r=function(){return i}.call(e,n,e,t),!(void 0!==r&&(t.exports=r))}()},function(t,e){t.exports={borderColor:\"#e8e8e8\",secondaryFontColor:\"#999\",primaryFontColor:\"#000\",buttonDefaults:\"styles__buttonDefaults___3oGQ3\",default:\"styles__default___2g5MD\",outline:\"styles__outline___1lCxC\",fullWidth:\"styles__fullWidth___2am33\",noUppercase:\"styles__noUppercase___1oklF\",alwaysActive:\"styles__alwaysActive___xpIKs\"}},function(t,e){t.exports={primaryFontColor:\"#000\",secondaryFontColor:\"#999\",borderColor:\"#e8e8e8\",smallBP:\"(max-width: 768px)\",container:\"styles__container___9e-CF\",count:\"styles__count___1Hz84\",label:\"styles__label___wruYF\"}},function(t,e){t.exports={primaryFontColor:\"#000\",secondaryFontColor:\"#999\",borderColor:\"#e8e8e8\",smallBP:\"(max-width: 768px)\",container:\"styles__container___27hQe\",title:\"styles__title___i6J36\",forumsContainer:\"styles__forumsContainer___25k9j\",forum:\"styles__forum___3irCC\",forumTitle:\"styles__forumTitle___2uLm8\",forumSlug:\"styles__forumSlug___UKlk6\",createForumContainer:\"styles__createForumContainer___23xVV\",createTitle:\"styles__createTitle___3QiXx\",createForum:\"styles__createForum___3sXG5\",createInputContainer:\"styles__createInputContainer___3iDOy\",inputLabel:\"styles__inputLabel___FvpWO\",createInput:\"styles__createInput___3-KLM\",errorMsg:\"styles__errorMsg___33m3k\",loadingMsg:\"styles__loadingMsg___2D258\"}},function(t,e){t.exports={primaryFontColor:\"#000\",secondaryFontColor:\"#999\",borderColor:\"#e8e8e8\",backShade:\"#f9f9f9\",smallBP:\"(max-width: 768px)\",container:\"styles__container___NQp7m\",title:\"styles__title___ndZKE\",titleBottomMargin:\"styles__titleBottomMargin___2vh27\",posterInfo:\"styles__posterInfo___2ZXs_\",name:\"styles__name___2gQp6\",gitHandler:\"styles__gitHandler___2iekf\",gitIcon:\"styles__gitIcon___114uy\",boxFooter:\"styles__boxFooter___2J-V6\",tagsArea:\"styles__tagsArea___1iHnX\",postInfo:\"styles__postInfo___mIXO-\",info:\"styles__info___2qtij\"}},function(t,e){t.exports={borderColor:\"#e8e8e8\",backShade:\"#f9f9f9\",secondaryFontColor:\"#999\",primaryFontColor:\"#000\",container:\"styles__container___2Zc9g\",header:\"styles__header___2QRy3\",title:\"styles__title___1C1s4\",sortList:\"styles__sortList___34ysa\",sort:\"styles__sort___x6iwf\",sortActive:\"styles__sortActive___1jxqE\",posts:\"styles__posts___2dUQ8\",loading:\"styles__loading___W47Qm\"}},function(t,e){t.exports={smallBP:\"(max-width: 768px)\",mediumBP:\"(min-width: 769px) and (max-width: 1099px)\",largeBP:\"(min-width: 1100px)\",contentArea:\"styles__contentArea___WZYS4\"}},function(t,e){t.exports={logoContainer:\"styles__logoContainer___cfrEN\",logo:\"styles__logo___NxPQF\",logoTitle:\"styles__logoTitle___x3mHL\"}},function(t,e){t.exports={primaryFontColor:\"#000\",secondaryFontColor:\"#999\",borderColor:\"#e8e8e8\",smallBP:\"(max-width: 768px)\",navigationBar:\"styles__navigationBar___KeAy9\",links:\"styles__links___1xyDG\",linkActive:\"styles__linkActive___2Y2ja\"}},function(t,e){t.exports={primaryFontColor:\"#000\",secondaryFontColor:\"#999\",borderColor:\"#e8e8e8\",smallBP:\"(max-width: 768px)\",mediumBP:\"(min-width: 769px) and (max-width: 1099px)\",largeBP:\"(min-width: 1100px)\",container:\"styles__container___2G0s1\",userAvatar:\"styles__userAvatar___2x2U9\",title:\"styles__title___3YZUE\",signInLink:\"styles__signInLink___3ZKxV\",signInBtn:\"styles__signInBtn___1BFGn\",subMenu:\"styles__subMenu___1JknN\",subMenuItem:\"styles__subMenuItem___1KmrY\",subMenuClose:\"styles__subMenuClose____N_WK\",gitLoginBtn:\"styles__gitLoginBtn___3NFM7\",subMenuOcto:\"styles__subMenuOcto___LP6hs\"}},function(t,e){t.exports={primaryFontColor:\"#000\",secondaryFontColor:\"#999\",borderColor:\"#e8e8e8\",smallBP:\"(max-width: 768px)\",container:\"styles__container___6rE5a\",label:\"styles__label___16pu4\",btnContainer:\"styles__btnContainer___1AKy9\",button:\"styles__button___2WL76\"}},function(t,e){t.exports={primaryFontColor:\"#000\",secondaryFontColor:\"#999\",borderColor:\"#e8e8e8\",smallBP:\"(max-width: 768px)\",container:\"styles__container___NvgJU\",tagContainer:\"styles__tagContainer___3loPa\",label:\"styles__label___33VaT\",inputContainer:\"styles__inputContainer___2CRQc\",tagInput:\"styles__tagInput___DdDal\",addButton:\"styles__addButton___1AQ5e\",errorMsg:\"styles__errorMsg___1PUBU\"}},function(t,e){t.exports={smallBP:\"(max-width: 768px)\",mediumBP:\"(min-width: 769px) and (max-width: 1099px)\",largeBP:\"(min-width: 1100px)\",sidebarContainer:\"styles__sidebarContainer___HAOwb\"}},function(t,e){t.exports={borderColor:\"#e8e8e8\",secondaryFontColor:\"#999\",primaryFontColor:\"#000\",smallBP:\"(max-width: 768px)\",container:\"styles__container___3ag3D\",infoContainer:\"styles__infoContainer___1tSHN\",avatar:\"styles__avatar___376XZ\",columnOnSmallBP:\"styles__columnOnSmallBP___3xMyn\",userInfo:\"styles__userInfo___1s-_s\",name:\"styles__name___131nz\",gitHandler:\"styles__gitHandler___3YZ6H\",gitIcon:\"styles__gitIcon___1gL9A\",dateInfo:\"styles__dateInfo___29yAX\",discTitle:\"styles__discTitle___7Xb4z\",discContent:\"styles__discContent___atQHi\",discFooter:\"styles__discFooter___1m4IN\",tags:\"styles__tags___2sgC-\",favoriteButton:\"styles__favoriteButton___1fys7\",deleteButton:\"styles__deleteButton___3Fuge\",deletingDiscussion:\"styles__deletingDiscussion___31KKR\"}},function(t,e){t.exports={borderColor:\"#e8e8e8\",secondaryFontColor:\"#999\",primaryFontColor:\"#000\",smallBP:\"(max-width: 768px)\",container:\"styles__container___rYBS1\",deletingOpinion:\"styles__deletingOpinion___3OvgA\",infoContainer:\"styles__infoContainer___11miR\",avatar:\"styles__avatar___2t9RT\",userInfo:\"styles__userInfo___1WfED\",name:\"styles__name___1pyUc\",gitHandler:\"styles__gitHandler___2NsxB\",gitIcon:\"styles__gitIcon___1jwLm\",dateInfo:\"styles__dateInfo___1sNRb\",deleteButton:\"styles__deleteButton___7DU3C\",trashIcon:\"styles__trashIcon___10LOT\",opContent:\"styles__opContent___3uhOR\",commentFooter:\"styles__commentFooter___jLIS_\",favoriteButton:\"styles__favoriteButton___1p64L\"}},function(t,e){t.exports={primaryFontColor:\"#000\",secondaryFontColor:\"#999\",loadingWrapper:\"styles__loadingWrapper___wu9So\"}},function(t,e){t.exports={secondaryFontColor:\"#999\",backShade:\"#f9f9f9\",tag:\"styles__tag___2zdjL\",tagWithRemove:\"styles__tagWithRemove___23VDZ\",removeButton:\"styles__removeButton___16ijs\"}},function(t,e){t.exports={primaryFontColor:\"#000\",secondaryFontColor:\"#999\",container:\"styles__container___2Pi24\",avatarContainer:\"styles__avatarContainer___37DQE\",avatar:\"styles__avatar___16Tnl\",infoContainer:\"styles__infoContainer___igQvO\",name:\"styles__name___3fv6x\",gitHandler:\"styles__gitHandler____b2zz\",location:\"styles__location___26u56\"}},function(t,e){t.exports={smallBP:\"(max-width: 768px)\",headerTop:\"styles__headerTop___3bbXK\"}},function(t,e){t.exports={smallBP:\"(max-width: 768px)\",headerTop:\"styles__headerTop___CXJuh\"}},function(t,e){t.exports={smallBP:\"(max-width: 768px)\",container:\"styles__container___hbucR\",countsContainer:\"styles__countsContainer___2lFrb\",loadingMsg:\"styles__loadingMsg___eZLyT\",errorMsg:\"styles__errorMsg___26G-n\"}},function(t,e){t.exports={largeBP:\"(min-width: 1100px)\",contentArea:\"styles__contentArea___Vl0kO\",newDiscussionBtn:\"styles__newDiscussionBtn___3kHGs\",errorMsg:\"styles__errorMsg___3Nrkg\"}},function(t,e){t.exports={largeBP:\"(min-width: 1100px)\",borderColor:\"#e8e8e8\",secondaryFontColor:\"#999\",content:\"styles__content___3IxIG\",forumName:\"styles__forumName___2ba7X\",errorMsg:\"styles__errorMsg___2JPWM\",fatalError:\"styles__fatalError___2LDsp\",titleInput:\"styles__titleInput___2t3D2\",signInMsg:\"styles__signInMsg___1bvy8\",postingMsg:\"styles__postingMsg___ClCfQ\"}},function(t,e){t.exports={primaryFontColor:\"#000\",secondaryFontColor:\"#999\",loadingWrapper:\"styles__loadingWrapper___3BujS\",errorMsg:\"styles__errorMsg___vja8k\",signInMsg:\"styles__signInMsg___PeG2-\"}},function(t,e){t.exports={largeBP:\"(min-width: 1100px)\",container:\"styles__container___DqS3K\",loadingMsg:\"styles__loadingMsg___27gCw\",errorMsg:\"styles__errorMsg___D92D_\"}},function(t,e){\"use strict\";function n(t){return t.split(\"/\")}var r={isImage:function(t){return\"image\"===n(t)[0]},isJpeg:function(t){var e=n(t);return r.isImage(t)&&(\"jpeg\"===e[1]||\"pjpeg\"===e[1])}};t.exports=r},function(t,e){\"use strict\";var n=\"[.,+*?$|#{}()'\\\\^\\\\-\\\\[\\\\]\\\\\\\\\\\\/!@%\\\"~=<>_:;・、。〈-】〔-〟：-？！-／［-｀｛-･⸮؟٪-٬؛،؍﴾﴿᠁।၊။‐-‧‰-⁞¡-±´-¸º»¿]\";t.exports={getPunctuation:function(){return n}}},function(t,e){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var r=function(){function t(e){n(this,t),this._uri=e}return t.prototype.toString=function(){return this._uri},t}();t.exports=r},function(t,e,n){(function(e){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var o=n(83),i=n(49),u=n(3),a=function(){function t(n){r(this,t),n?i.isStrong(n)?void 0:\"production\"!==e.env.NODE_ENV?u(!1,\"Default direction must be a strong direction (LTR or RTL)\"):u(!1):n=i.getGlobalDir(),this._defaultDir=n,this.reset()}return t.prototype.reset=function(){this._lastDir=this._defaultDir},t.prototype.getDirection=function(t){return this._lastDir=o.getDirection(t,this._lastDir),this._lastDir},t}();t.exports=a}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t){return a[t]||t}function o(t){if(!t)return{major:\"\",minor:\"\"};var e=t.split(\".\");return{major:e[0],minor:e[1]}}var i=n(309),u=\"Unknown\",a={\"Mac OS\":\"Mac OS X\"},s=new i,c=s.getResult(),l=o(c.browser.version),f={browserArchitecture:c.cpu.architecture||u,browserFullVersion:c.browser.version||u,browserMinorVersion:l.minor||u,browserName:c.browser.name||u,browserVersion:c.browser.major||u,deviceName:c.device.model||u,engineName:c.engine.name||u,engineVersion:c.engine.version||u,platformArchitecture:c.cpu.architecture||u,platformName:r(c.os.name)||u,platformVersion:c.os.version||u,platformFullVersion:c.os.version||u};t.exports=f},function(t,e,n){(function(e){\"use strict\";function r(t,e){var n=t.split(S);return n.length>1?n.some(function(t){return C.contains(t,e)}):(t=n[0].trim(),o(t,e))}function o(t,n){var r=t.split(w);if(r.length>0&&r.length<=2?void 0:\"production\"!==e.env.NODE_ENV?b(!1,'the \"-\" operator expects exactly 2 operands'):b(!1),1===r.length)return i(r[0],n);var o=r[0],u=r[1];return h(o)&&h(u)?void 0:\"production\"!==e.env.NODE_ENV?b(!1,'operands to the \"-\" operator must be simple (no modifiers)'):b(!1),i(\">=\"+o,n)&&i(\"<=\"+u,n)}function i(t,e){if(t=t.trim(),\"\"===t)return!0;var n=e.split(E),r=p(t),o=r.modifier,i=r.rangeComponents;switch(o){case\"<\":return u(n,i);case\"<=\":return a(n,i);case\">=\":return c(n,i);case\">\":return l(n,i);case\"~\":case\"~>\":return f(n,i);default:return s(n,i)}}function u(t,e){return m(t,e)===-1}function a(t,e){var n=m(t,e);return n===-1||0===n}function s(t,e){return 0===m(t,e)}function c(t,e){var n=m(t,e);return 1===n||0===n}function l(t,e){return 1===m(t,e)}function f(t,e){var n=e.slice(),r=e.slice();r.length>1&&r.pop();var o=r.length-1,i=parseInt(r[o],10);return d(i)&&(r[o]=i+1+\"\"),c(t,n)&&u(t,r)}function p(t){var n=t.split(E),r=n[0].match(O);return r?void 0:\"production\"!==e.env.NODE_ENV?b(!1,\"expected regex to match but it did not\"):b(!1),{modifier:r[1],rangeComponents:[r[2]].concat(n.slice(1))}}function d(t){return!isNaN(t)&&isFinite(t)}function h(t){return!p(t).modifier}function y(t,e){for(var n=t.length;n<e;n++)t[n]=\"0\"}function _(t,e){t=t.slice(),e=e.slice(),y(t,e.length);for(var n=0;n<e.length;n++){var r=e[n].match(/^[x*]$/i);if(r&&(e[n]=t[n]=\"0\",\"*\"===r[0]&&n===e.length-1))for(var o=n;o<t.length;o++)t[o]=\"0\"}return y(e,t.length),[t,e]}function g(t,e){var n=t.match(T)[1],r=e.match(T)[1],o=parseInt(n,10),i=parseInt(r,10);return d(o)&&d(i)&&o!==i?v(o,i):v(t,e)}function v(t,n){return typeof t!=typeof n?\"production\"!==e.env.NODE_ENV?b(!1,'\"a\" and \"b\" must be of the same type'):b(!1):void 0,t>n?1:t<n?-1:0}function m(t,e){for(var n=_(t,e),r=n[0],o=n[1],i=0;i<o.length;i++){var u=g(r[i],o[i]);if(u)return u}return 0}var b=n(3),E=/\\./,S=/\\|\\|/,w=/\\s+\\-\\s+/,O=/^(<=|<|=|>=|~>|~|>|)?\\s*(.+)/,T=/^(\\d*)(.*)/,C={contains:function(t,e){return r(t.trim(),e.trim())}};t.exports=C}).call(e,n(2))},function(t,e){\"use strict\";function n(t){return t.replace(r,function(t,e){return e.toUpperCase()})}var r=/-(.)/g;t.exports=n},function(t,e,n){(function(e){\"use strict\";function r(t){var n=t.length;if(Array.isArray(t)||\"object\"!=typeof t&&\"function\"!=typeof t?\"production\"!==e.env.NODE_ENV?u(!1,\"toArray: Array-like object expected\"):u(!1):void 0,\"number\"!=typeof n?\"production\"!==e.env.NODE_ENV?u(!1,\"toArray: Object needs a length property\"):u(!1):void 0,0===n||n-1 in t?void 0:\"production\"!==e.env.NODE_ENV?u(!1,\"toArray: Object should have keys for indices\"):u(!1),\"function\"==typeof t.callee?\"production\"!==e.env.NODE_ENV?u(!1,\"toArray: Object can't be `arguments`. Use rest params (function(...args) {}) or Array.from() instead.\"):u(!1):void 0,t.hasOwnProperty)try{return Array.prototype.slice.call(t)}catch(t){}for(var r=Array(n),o=0;o<n;o++)r[o]=t[o];return r}function o(t){return!!t&&(\"object\"==typeof t||\"function\"==typeof t)&&\"length\"in t&&!(\"setInterval\"in t)&&\"number\"!=typeof t.nodeType&&(Array.isArray(t)||\"callee\"in t||\"item\"in t)}function i(t){return o(t)?Array.isArray(t)?t.slice():r(t):[t]}var u=n(3);t.exports=i}).call(e,n(2))},function(t,e,n){(function(e){\"use strict\";var n={};\"production\"!==e.env.NODE_ENV&&Object.freeze(n),t.exports=n}).call(e,n(2))},function(t,e){\"use strict\";function n(t){return t=t||document,r||\"CSS1Compat\"!==t.compatMode?t.body:t.documentElement}var r=\"undefined\"!=typeof navigator&&navigator.userAgent.indexOf(\"AppleWebKit\")>-1;t.exports=n},function(t,e,n){\"use strict\";function r(t){var e=o(t);return{x:e.left,y:e.top,width:e.right-e.left,height:e.bottom-e.top}}var o=n(228);t.exports=r},function(t,e,n){\"use strict\";function r(t){var e=t.ownerDocument.documentElement;if(!(\"getBoundingClientRect\"in t&&o(e,t)))return{left:0,right:0,top:0,bottom:0};var n=t.getBoundingClientRect();return{left:Math.round(n.left)-e.clientLeft,right:Math.round(n.right)-e.clientLeft,top:Math.round(n.top)-e.clientTop,bottom:Math.round(n.bottom)-e.clientTop}}var o=n(84);t.exports=r},function(t,e,n){\"use strict\";function r(t){return null==t?t:String(t)}function o(t,e){var n=void 0;if(window.getComputedStyle&&(n=window.getComputedStyle(t,null)))return r(n.getPropertyValue(u(e)));if(document.defaultView&&document.defaultView.getComputedStyle){if(n=document.defaultView.getComputedStyle(t,null))return r(n.getPropertyValue(u(e)));if(\"display\"===e)return\"none\"}return r(t.currentStyle?\"float\"===e?t.currentStyle.cssFloat||t.currentStyle.styleFloat:t.currentStyle[i(e)]:t.style&&t.style[i(e)])}var i=n(223),u=n(232);t.exports=o},function(t,e){\"use strict\";function n(t){return t.Window&&t instanceof t.Window?{x:t.pageXOffset||t.document.documentElement.scrollLeft,y:t.pageYOffset||t.document.documentElement.scrollTop}:{x:t.scrollLeft,y:t.scrollTop}}t.exports=n},function(t,e){\"use strict\";function n(){var t=void 0;return document.documentElement&&(t=document.documentElement.clientWidth),!t&&document.body&&(t=document.body.clientWidth),t||0}function r(){var t=void 0;return document.documentElement&&(t=document.documentElement.clientHeight),!t&&document.body&&(t=document.body.clientHeight),t||0}function o(){return{width:window.innerWidth||n(),height:window.innerHeight||r()}}o.withoutScrollbars=function(){return{width:n(),height:r()}},t.exports=o},function(t,e){\"use strict\";function n(t){return t.replace(r,\"-$1\").toLowerCase()}var r=/([A-Z])/g;t.exports=n},function(t,e){\"use strict\";function n(t){var e=t?t.ownerDocument||t:document,n=e.defaultView||window;return!(!t||!(\"function\"==typeof n.Node?t instanceof n.Node:\"object\"==typeof t&&\"number\"==typeof t.nodeType&&\"string\"==typeof t.nodeName))}t.exports=n},function(t,e,n){\"use strict\";function r(t){return o(t)&&3==t.nodeType}var o=n(233);t.exports=r},function(t,e){\"use strict\";function n(t){t||(t=\"\");var e=void 0,n=arguments.length;if(n>1)for(var r=1;r<n;r++)e=arguments[r],e&&(t=(t?t+\" \":\"\")+e);return t}t.exports=n},function(t,e){\"use strict\";function n(t,e,n){if(!t)return null;var o={};for(var i in t)r.call(t,i)&&(o[i]=e.call(n,t[i],i,t));return o}var r=Object.prototype.hasOwnProperty;t.exports=n},function(t,e){\"use strict\";function n(t){var e={};return function(n){return e.hasOwnProperty(n)||(e[n]=t.call(this,n)),e[n]}}t.exports=n},function(t,e,n){(function(e){\"use strict\";n(307),t.exports=e.setImmediate}).call(e,function(){return this}())},function(t,e){\"use strict\";var n={childContextTypes:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,mixins:!0,propTypes:!0,type:!0},r={name:!0,length:!0,prototype:!0,caller:!0,arguments:!0,arity:!0},o=\"function\"==typeof Object.getOwnPropertySymbols;t.exports=function(t,e,i){if(\"string\"!=typeof e){var u=Object.getOwnPropertyNames(e);o&&(u=u.concat(Object.getOwnPropertySymbols(e)));for(var a=0;a<u.length;++a)if(!(n[u[a]]||r[u[a]]||i&&i[u[a]]))try{t[u[a]]=e[u[a]]}catch(t){}}return t}},function(t,e,n){(function(e){\"use strict\";var n=function(t,n,r,o,i,u,a,s){if(\"production\"!==e.env.NODE_ENV&&void 0===n)throw new Error(\"invariant requires an error message argument\");if(!t){var c;if(void 0===n)c=new Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[r,o,i,u,a,s],f=0;c=new Error(n.replace(/%s/g,function(){return l[f++]})),c.name=\"Invariant Violation\"}throw c.framesToPop=1,c}};t.exports=n}).call(e,n(2))},function(t,e,n){function r(t){return null==t?void 0===t?s:a:c&&c in Object(t)?i(t):u(t)}var o=n(86),i=n(244),u=n(245),a=\"[object Null]\",s=\"[object Undefined]\",c=o?o.toStringTag:void 0;t.exports=r},function(t,e){(function(e){var n=\"object\"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(e,function(){return this}())},function(t,e,n){var r=n(246),o=r(Object.getPrototypeOf,Object);t.exports=o},function(t,e,n){function r(t){var e=u.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(t){}var o=a.call(t);return r&&(e?t[s]=n:delete t[s]),o}var o=n(86),i=Object.prototype,u=i.hasOwnProperty,a=i.toString,s=o?o.toStringTag:void 0;t.exports=r},function(t,e){function n(t){return o.call(t)}var r=Object.prototype,o=r.toString;t.exports=n},function(t,e){function n(t,e){return function(n){return t(e(n))}}t.exports=n},function(t,e,n){var r=n(242),o=\"object\"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function(\"return this\")();t.exports=i},function(t,e){function n(t){return null!=t&&\"object\"==typeof t}t.exports=n},function(t,e,n){function r(t){if(!u(t)||o(t)!=a)return!1;var e=i(t);if(null===e)return!0;var n=f.call(e,\"constructor\")&&e.constructor;return\"function\"==typeof n&&n instanceof n&&l.call(n)==p}var o=n(241),i=n(243),u=n(248),a=\"[object Object]\",s=Function.prototype,c=Object.prototype,l=s.toString,f=c.hasOwnProperty,p=l.call(Object);t.exports=r},function(t,e,n){(function(e){\"use strict\";function r(t,n,r,s,c){if(\"production\"!==e.env.NODE_ENV)for(var l in t)if(t.hasOwnProperty(l)){var f;try{o(\"function\"==typeof t[l],\"%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.\",s||\"React class\",r,l),f=t[l](n,l,s,r,null,u)}catch(t){f=t}if(i(!f||f instanceof Error,\"%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\",s||\"React class\",r,l,typeof f),f instanceof Error&&!(f.message in a)){a[f.message]=!0;var p=c?c():\"\";i(!1,\"Failed %s type: %s%s\",r,f.message,null!=p?p:\"\")}}}if(\"production\"!==e.env.NODE_ENV)var o=n(3),i=n(51),u=n(53),a={};t.exports=r}).call(e,n(2))},function(t,e,n){\"use strict\";var r=n(22),o=n(3),i=n(53);t.exports=function(){function t(t,e,n,r,u,a){a!==i&&o(!1,\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\")}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e};return n.checkPropTypes=r,n.PropTypes=n,n}},function(t,e,n){(function(e){\"use strict\";var r=n(22),o=n(3),i=n(51),u=n(53),a=n(250);t.exports=function(t,n){function s(t){var e=t&&(N&&t[N]||t[A]);if(\"function\"==typeof e)return e}function c(t,e){return t===e?0!==t||1/t===1/e:t!==t&&e!==e}function l(t){this.message=t,this.stack=\"\"}function f(t){function r(r,c,f,p,d,h,y){if(p=p||D,h=h||f,y!==u)if(n)o(!1,\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types\");else if(\"production\"!==e.env.NODE_ENV&&\"undefined\"!=typeof console){var _=p+\":\"+f;!a[_]&&s<3&&(i(!1,\"You are manually calling a React.PropTypes validation function for the `%s` prop on `%s`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.\",h,p),a[_]=!0,s++)}return null==c[f]?r?new l(null===c[f]?\"The \"+d+\" `\"+h+\"` is marked as required \"+(\"in `\"+p+\"`, but its value is `null`.\"):\"The \"+d+\" `\"+h+\"` is marked as required in \"+(\"`\"+p+\"`, but its value is `undefined`.\")):null:t(c,f,p,d,h)}if(\"production\"!==e.env.NODE_ENV)var a={},s=0;var c=r.bind(null,!1);return c.isRequired=r.bind(null,!0),c}function p(t){function e(e,n,r,o,i,u){var a=e[n],s=O(a);if(s!==t){var c=T(a);return new l(\"Invalid \"+o+\" `\"+i+\"` of type \"+(\"`\"+c+\"` supplied to `\"+r+\"`, expected \")+(\"`\"+t+\"`.\"))}return null}return f(e)}function d(){return f(r.thatReturnsNull)}function h(t){function e(e,n,r,o,i){if(\"function\"!=typeof t)return new l(\"Property `\"+i+\"` of component `\"+r+\"` has invalid PropType notation inside arrayOf.\");var a=e[n];if(!Array.isArray(a)){var s=O(a);return new l(\"Invalid \"+o+\" `\"+i+\"` of type \"+(\"`\"+s+\"` supplied to `\"+r+\"`, expected an array.\"))}for(var c=0;c<a.length;c++){var f=t(a,c,r,o,i+\"[\"+c+\"]\",u);if(f instanceof Error)return f}return null}return f(e)}function y(){function e(e,n,r,o,i){var u=e[n];if(!t(u)){var a=O(u);return new l(\"Invalid \"+o+\" `\"+i+\"` of type \"+(\"`\"+a+\"` supplied to `\"+r+\"`, expected a single ReactElement.\"))}return null}return f(e)}function _(t){function e(e,n,r,o,i){if(!(e[n]instanceof t)){var u=t.name||D,a=I(e[n]);return new l(\"Invalid \"+o+\" `\"+i+\"` of type \"+(\"`\"+a+\"` supplied to `\"+r+\"`, expected \")+(\"instance of `\"+u+\"`.\"))}return null}return f(e)}function g(t){function n(e,n,r,o,i){for(var u=e[n],a=0;a<t.length;a++)if(c(u,t[a]))return null;var s=JSON.stringify(t);return new l(\"Invalid \"+o+\" `\"+i+\"` of value `\"+u+\"` \"+(\"supplied to `\"+r+\"`, expected one of \"+s+\".\"))}return Array.isArray(t)?f(n):(\"production\"!==e.env.NODE_ENV?i(!1,\"Invalid argument supplied to oneOf, expected an instance of array.\"):void 0,r.thatReturnsNull)}function v(t){function e(e,n,r,o,i){if(\"function\"!=typeof t)return new l(\"Property `\"+i+\"` of component `\"+r+\"` has invalid PropType notation inside objectOf.\");var a=e[n],s=O(a);if(\"object\"!==s)return new l(\"Invalid \"+o+\" `\"+i+\"` of type \"+(\"`\"+s+\"` supplied to `\"+r+\"`, expected an object.\"));for(var c in a)if(a.hasOwnProperty(c)){var f=t(a,c,r,o,i+\".\"+c,u);if(f instanceof Error)return f}return null}return f(e)}function m(t){function n(e,n,r,o,i){for(var a=0;a<t.length;a++){var s=t[a];if(null==s(e,n,r,o,i,u))return null}return new l(\"Invalid \"+o+\" `\"+i+\"` supplied to \"+(\"`\"+r+\"`.\"))}if(!Array.isArray(t))return\"production\"!==e.env.NODE_ENV?i(!1,\"Invalid argument supplied to oneOfType, expected an instance of array.\"):void 0,r.thatReturnsNull;for(var o=0;o<t.length;o++){var a=t[o];if(\"function\"!=typeof a)return i(!1,\"Invalid argument supplid to oneOfType. Expected an array of check functions, but received %s at index %s.\",C(a),o),r.thatReturnsNull}return f(n)}function b(){function t(t,e,n,r,o){return S(t[e])?null:new l(\"Invalid \"+r+\" `\"+o+\"` supplied to \"+(\"`\"+n+\"`, expected a ReactNode.\"))}return f(t)}function E(t){function e(e,n,r,o,i){var a=e[n],s=O(a);if(\"object\"!==s)return new l(\"Invalid \"+o+\" `\"+i+\"` of type `\"+s+\"` \"+(\"supplied to `\"+r+\"`, expected `object`.\"));for(var c in t){var f=t[c];if(f){var p=f(a,c,r,o,i+\".\"+c,u);if(p)return p}}return null}return f(e)}function S(e){switch(typeof e){case\"number\":case\"string\":case\"undefined\":return!0;case\"boolean\":return!e;case\"object\":if(Array.isArray(e))return e.every(S);if(null===e||t(e))return!0;var n=s(e);if(!n)return!1;var r,o=n.call(e);if(n!==e.entries){for(;!(r=o.next()).done;)if(!S(r.value))return!1}else for(;!(r=o.next()).done;){var i=r.value;if(i&&!S(i[1]))return!1}return!0;default:return!1}}function w(t,e){return\"symbol\"===t||(\"Symbol\"===e[\"@@toStringTag\"]||\"function\"==typeof Symbol&&e instanceof Symbol)}function O(t){var e=typeof t;return Array.isArray(t)?\"array\":t instanceof RegExp?\"object\":w(e,t)?\"symbol\":e}function T(t){if(\"undefined\"==typeof t||null===t)return\"\"+t;var e=O(t);if(\"object\"===e){if(t instanceof Date)return\"date\";if(t instanceof RegExp)return\"regexp\"}return e}function C(t){var e=T(t);switch(e){case\"array\":case\"object\":return\"an \"+e;case\"boolean\":case\"date\":case\"regexp\":return\"a \"+e;default:return e}}function I(t){return t.constructor&&t.constructor.name?t.constructor.name:D}var N=\"function\"==typeof Symbol&&Symbol.iterator,A=\"@@iterator\",D=\"<<anonymous>>\",x={array:p(\"array\"),bool:p(\"boolean\"),func:p(\"function\"),number:p(\"number\"),object:p(\"object\"),string:p(\"string\"),symbol:p(\"symbol\"),any:d(),arrayOf:h,element:y(),instanceOf:_,node:b(),objectOf:v,oneOf:g,oneOfType:m,shape:E};return l.prototype=Error.prototype,x.checkPropTypes=a,x.PropTypes=x,x}}).call(e,n(2))},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0,e.warn=e.requestIdleCallback=e.reducePropsToState=e.mapStateOnServer=e.handleClientStateChange=e.convertReactPropstoHtmlAttributes=void 0;var o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},u=n(1),a=r(u),s=n(17),c=r(s),l=n(87),f=function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e===!1?String(t):String(t).replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#x27;\")},p=function(t){var e=g(t,l.TAG_NAMES.TITLE),n=g(t,l.HELMET_PROPS.TITLE_TEMPLATE);if(n&&e)return n.replace(/%s/g,function(){return e});var r=g(t,l.HELMET_PROPS.DEFAULT_TITLE);return e||r||void 0},d=function(t){return g(t,l.HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||function(){}},h=function(t,e){return e.filter(function(e){return\"undefined\"!=typeof e[t]}).map(function(e){return e[t]}).reduce(function(t,e){return i({},t,e)},{})},y=function(t,e){return e.filter(function(t){return\"undefined\"!=typeof t[l.TAG_NAMES.BASE]}).map(function(t){return t[l.TAG_NAMES.BASE]}).reverse().reduce(function(e,n){if(!e.length)for(var r=Object.keys(n),o=0;o<r.length;o++){var i=r[o],u=i.toLowerCase();if(t.indexOf(u)!==-1&&n[u])return e.concat(n)}return e},[])},_=function(t,e,n){var r={};return n.filter(function(e){return!!Array.isArray(e[t])||(\"undefined\"!=typeof e[t]&&E(\"Helmet: \"+t+' should be of type \"Array\". Instead found type \"'+o(e[t])+'\"'),!1)}).map(function(e){return e[t]}).reverse().reduce(function(t,n){var o={};n.filter(function(t){for(var n=void 0,i=Object.keys(t),u=0;u<i.length;u++){var a=i[u],s=a.toLowerCase();e.indexOf(s)===-1||n===l.TAG_PROPERTIES.REL&&\"canonical\"===t[n].toLowerCase()||s===l.TAG_PROPERTIES.REL&&\"stylesheet\"===t[s].toLowerCase()||(n=s),e.indexOf(a)===-1||a!==l.TAG_PROPERTIES.INNER_HTML&&a!==l.TAG_PROPERTIES.CSS_TEXT&&a!==l.TAG_PROPERTIES.ITEM_PROP||(n=a)}if(!n||!t[n])return!1;var c=t[n].toLowerCase();return r[n]||(r[n]={}),o[n]||(o[n]={}),!r[n][c]&&(o[n][c]=!0,!0)}).reverse().forEach(function(e){return t.push(e)});for(var i=Object.keys(o),u=0;u<i.length;u++){var a=i[u],s=(0,c.default)({},r[a],o[a]);r[a]=s}return t},[]).reverse()},g=function(t,e){for(var n=t.length-1;n>=0;n--){var r=t[n];if(r.hasOwnProperty(e))return r[e]}return null},v=function(t){return{baseTag:y([l.TAG_PROPERTIES.HREF],t),bodyAttributes:h(l.ATTRIBUTE_NAMES.BODY,t),encode:g(t,l.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:h(l.ATTRIBUTE_NAMES.HTML,t),linkTags:_(l.TAG_NAMES.LINK,[l.TAG_PROPERTIES.REL,l.TAG_PROPERTIES.HREF],t),metaTags:_(l.TAG_NAMES.META,[l.TAG_PROPERTIES.NAME,l.TAG_PROPERTIES.CHARSET,l.TAG_PROPERTIES.HTTPEQUIV,l.TAG_PROPERTIES.PROPERTY,l.TAG_PROPERTIES.ITEM_PROP],t),noscriptTags:_(l.TAG_NAMES.NOSCRIPT,[l.TAG_PROPERTIES.INNER_HTML],t),onChangeClientState:d(t),scriptTags:_(l.TAG_NAMES.SCRIPT,[l.TAG_PROPERTIES.SRC,l.TAG_PROPERTIES.INNER_HTML],t),styleTags:_(l.TAG_NAMES.STYLE,[l.TAG_PROPERTIES.CSS_TEXT],t),title:p(t),titleAttributes:h(l.ATTRIBUTE_NAMES.TITLE,t)}},m=function(){return\"undefined\"!=typeof window&&\"undefined\"!=typeof window.requestIdleCallback?window.requestIdleCallback:function(t){var e=Date.now();return setTimeout(function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})},1)}}(),b=function(){return\"undefined\"!=typeof window&&\"undefined\"!=typeof window.cancelIdleCallback?window.cancelIdleCallback:function(t){return clearTimeout(t)}}(),E=function(t){return console&&\"function\"==typeof console.warn&&console.warn(t)},S=null,w=function(t){var e=t.baseTag,n=t.bodyAttributes,r=t.htmlAttributes,o=t.linkTags,i=t.metaTags,u=t.noscriptTags,a=t.onChangeClientState,s=t.scriptTags,c=t.styleTags,f=t.title,p=t.titleAttributes;S&&b(S),S=m(function(){T(l.TAG_NAMES.BODY,n),T(l.TAG_NAMES.HTML,r),O(f,p);var d={baseTag:C(l.TAG_NAMES.BASE,e),linkTags:C(l.TAG_NAMES.LINK,o),metaTags:C(l.TAG_NAMES.META,i),noscriptTags:C(l.TAG_NAMES.NOSCRIPT,u),scriptTags:C(l.TAG_NAMES.SCRIPT,s),styleTags:C(l.TAG_NAMES.STYLE,c)},h={},y={};Object.keys(d).forEach(function(t){var e=d[t],n=e.newTags,r=e.oldTags;n.length&&(h[t]=n),r.length&&(y[t]=d[t].oldTags)}),S=null,a(t,h,y)})},O=function(t,e){\"undefined\"!=typeof t&&document.title!==t&&(document.title=Array.isArray(t)?t.join(\"\"):t),T(l.TAG_NAMES.TITLE,e)},T=function(t,e){var n=document.getElementsByTagName(t)[0];if(n){for(var r=n.getAttribute(l.HELMET_ATTRIBUTE),o=r?r.split(\",\"):[],i=[].concat(o),u=Object.keys(e),a=0;a<u.length;a++){var s=u[a],c=e[s]||\"\";n.getAttribute(s)!==c&&n.setAttribute(s,c),o.indexOf(s)===-1&&o.push(s);var f=i.indexOf(s);f!==-1&&i.splice(f,1)}for(var p=i.length-1;p>=0;p--)n.removeAttribute(i[p]);o.length===i.length?n.removeAttribute(l.HELMET_ATTRIBUTE):n.getAttribute(l.HELMET_ATTRIBUTE)!==u.join(\",\")&&n.setAttribute(l.HELMET_ATTRIBUTE,u.join(\",\"))}},C=function(t,e){var n=document.head||document.querySelector(l.TAG_NAMES.HEAD),r=n.querySelectorAll(t+\"[\"+l.HELMET_ATTRIBUTE+\"]\"),o=Array.prototype.slice.call(r),i=[],u=void 0;return e&&e.length&&e.forEach(function(e){var n=document.createElement(t);for(var r in e)if(e.hasOwnProperty(r))if(r===l.TAG_PROPERTIES.INNER_HTML)n.innerHTML=e.innerHTML;else if(r===l.TAG_PROPERTIES.CSS_TEXT)n.styleSheet?n.styleSheet.cssText=e.cssText:n.appendChild(document.createTextNode(e.cssText));else{var a=\"undefined\"==typeof e[r]?\"\":e[r];n.setAttribute(r,a)}n.setAttribute(l.HELMET_ATTRIBUTE,\"true\"),o.some(function(t,e){return u=e,n.isEqualNode(t)})?o.splice(u,1):i.push(n)}),o.forEach(function(t){return t.parentNode.removeChild(t)}),i.forEach(function(t){return n.appendChild(t)}),{oldTags:o,newTags:i}},I=function(t){return Object.keys(t).reduce(function(e,n){var r=\"undefined\"!=typeof t[n]?n+'=\"'+t[n]+'\"':\"\"+n;return e?e+\" \"+r:r},\"\")},N=function(t,e,n,r){var o=I(n);return o?\"<\"+t+\" \"+l.HELMET_ATTRIBUTE+'=\"true\" '+o+\">\"+f(e,r)+\"</\"+t+\">\":\"<\"+t+\" \"+l.HELMET_ATTRIBUTE+'=\"true\">'+f(e,r)+\"</\"+t+\">\";\n},A=function(t,e,n){return e.reduce(function(e,r){var o=Object.keys(r).filter(function(t){return!(t===l.TAG_PROPERTIES.INNER_HTML||t===l.TAG_PROPERTIES.CSS_TEXT)}).reduce(function(t,e){var o=\"undefined\"==typeof r[e]?e:e+'=\"'+f(r[e],n)+'\"';return t?t+\" \"+o:o},\"\"),i=r.innerHTML||r.cssText||\"\",u=l.SELF_CLOSING_TAGS.indexOf(t)===-1;return e+\"<\"+t+\" \"+l.HELMET_ATTRIBUTE+'=\"true\" '+o+(u?\"/>\":\">\"+i+\"</\"+t+\">\")},\"\")},D=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(t).reduce(function(e,n){return e[l.REACT_TAG_MAP[n]||n]=t[n],e},e)},x=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(t).reduce(function(e,n){return e[l.HTML_TAG_MAP[n]||n]=t[n],e},e)},P=function(t,e,n){var r,o=(r={key:e},r[l.HELMET_ATTRIBUTE]=!0,r),i=D(n,o);return[a.default.createElement(l.TAG_NAMES.TITLE,i,e)]},k=function(t,e){return e.map(function(e,n){var r,o=(r={key:n},r[l.HELMET_ATTRIBUTE]=!0,r);return Object.keys(e).forEach(function(t){var n=l.REACT_TAG_MAP[t]||t;if(n===l.TAG_PROPERTIES.INNER_HTML||n===l.TAG_PROPERTIES.CSS_TEXT){var r=e.innerHTML||e.cssText;o.dangerouslySetInnerHTML={__html:r}}else o[n]=e[t]}),a.default.createElement(t,o)})},M=function(t,e,n){switch(t){case l.TAG_NAMES.TITLE:return{toComponent:function(){return P(t,e.title,e.titleAttributes,n)},toString:function(){return N(t,e.title,e.titleAttributes,n)}};case l.ATTRIBUTE_NAMES.BODY:case l.ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return D(e)},toString:function(){return I(e)}};default:return{toComponent:function(){return k(t,e)},toString:function(){return A(t,e,n)}}}},R=function(t){var e=t.baseTag,n=t.bodyAttributes,r=t.encode,o=t.htmlAttributes,i=t.linkTags,u=t.metaTags,a=t.noscriptTags,s=t.scriptTags,c=t.styleTags,f=t.title,p=void 0===f?\"\":f,d=t.titleAttributes;return{base:M(l.TAG_NAMES.BASE,e,r),bodyAttributes:M(l.ATTRIBUTE_NAMES.BODY,n,r),htmlAttributes:M(l.ATTRIBUTE_NAMES.HTML,o,r),link:M(l.TAG_NAMES.LINK,i,r),meta:M(l.TAG_NAMES.META,u,r),noscript:M(l.TAG_NAMES.NOSCRIPT,a,r),script:M(l.TAG_NAMES.SCRIPT,s,r),style:M(l.TAG_NAMES.STYLE,c,r),title:M(l.TAG_NAMES.TITLE,{title:p,titleAttributes:d},r)}};e.convertReactPropstoHtmlAttributes=x,e.handleClientStateChange=w,e.mapStateOnServer=R,e.reducePropsToState=v,e.requestIdleCallback=m,e.warn=E},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(8),l=n(16),f=n(24),p=n(88),d=n(273),h=t(d),y=n(14),_=(t(y),n(46)),g=(t(_),function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"componentDidMount\",value:function(){this.props.getUser()}},{key:\"render\",value:function(){var t=this.props.user;return t.fetchingUser?s.default.createElement(\"div\",{style:{textAlign:\"center\",marginTop:20}},\"Loading users profile...\"):\"admin\"===t.role?s.default.createElement(\"div\",null,s.default.createElement(f.Helmet,null,s.default.createElement(\"title\",null,\"ReForum | Admin\")),s.default.createElement(h.default,null),this.props.children):s.default.createElement(\"div\",{style:{textAlign:\"center\",marginTop:20}},\"We are cordially sorry that you are not allowed to view admin panel!\",s.default.createElement(\"br\",null),\"Please go back to \",s.default.createElement(c.Link,{to:\"/\"},\"root\"),\" page.\")}}]),e}(a.Component));e.default=(0,l.connect)(function(t){return{user:t.user}},function(t){return{getUser:function(){t((0,p.getUser)())}}})(g)}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(16),l=n(24),f=n(95),p=t(f),d=n(263),h=t(d),y=n(14),_=(t(y),n(46)),g=t(_),v=n(88),m=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"componentDidMount\",value:function(){var t=this.props,e=t.params,n=t.updateCurrentForum,r=t.getForums,o=t.getUser;r(),o();var i=e.forum||\"general\";n(i)}},{key:\"componentDidUpdate\",value:function(){var t=this.props,e=t.params,n=t.currentForum,r=t.updateCurrentForum,o=e.forum||\"general\";o!==n&&r(o)}},{key:\"render\",value:function(){var t=this.props.forums;return t?s.default.createElement(\"div\",null,s.default.createElement(l.Helmet,null,s.default.createElement(\"title\",null,\"ReForum\")),s.default.createElement(p.default,null),this.props.children,s.default.createElement(h.default,null)):s.default.createElement(\"div\",{className:g.default.loadingWrapper},\"Loading...\")}}]),e}(a.Component);e.default=(0,c.connect)(function(t){return{forums:t.app.forums,currentForum:t.app.currentForum}},function(t){return{getForums:function(){t((0,v.getForums)())},updateCurrentForum:function(e){t((0,v.updateCurrentForum)(e))},getUser:function(){t((0,v.getUser)())}}})(m)}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.fetchUser=e.fetchForums=void 0;var r=n(21),o=t(r);e.fetchForums=function(t){return o.default.get(\"/api/forum\")},e.fetchUser=function(){return o.default.get(\"/api/user/getUser\")}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}var e=n(1),r=t(e),o=n(20),i=t(o),u=n(8),a=n(16),s=n(46),c=(t(s),n(259)),l=t(c),f=n(255),p=t(f),d=n(254),h=t(d),y=n(276),_=t(y),g=n(95),v=(t(g),n(280)),m=t(v),b=n(289),E=t(b),S=n(284),w=t(S),O=n(293),T=t(O),C=n(286),I=t(C);i.default.render(r.default.createElement(a.Provider,{store:l.default},r.default.createElement(u.Router,{history:u.browserHistory},r.default.createElement(u.Route,{path:\"/admin\",component:h.default},r.default.createElement(u.IndexRoute,{component:_.default})),r.default.createElement(u.Route,{path:\"/\",component:p.default},r.default.createElement(u.IndexRoute,{component:m.default}),r.default.createElement(u.Route,{path:\":forum\",component:m.default}),r.default.createElement(u.Route,{path:\":forum/discussion/:discussion\",component:E.default}),r.default.createElement(u.Route,{path:\":forum/new_discussion\",component:w.default}),r.default.createElement(u.Route,{path:\"user/:username\",component:T.default}),r.default.createElement(u.Route,{path:\"*\",component:I.default})))),document.getElementById(\"root\"))}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.userReducer=e.appReducer=void 0;var t=n(89),r={fetchingForums:!1,forums:null,currentForum:\"general\",error:!1},o=(e.appReducer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,n=arguments[1];switch(n.type){case t.START_FETCHING_FORUMS:return Object.assign({},e,{fetchingForums:!0});case t.STOP_FETCHING_FORUMS:return Object.assign({},e,{fetchingForums:!1});case t.FETCHING_FORUMS_SUCCESS:return Object.assign({},e,{forums:n.payload,fetchingForums:!1,error:!1});case t.FETCHING_FORUMS_FAILURE:return Object.assign({},e,{fetchingForums:!1,error:\"Unable to fetch forums\"});case t.UPDATECURRENTFORUM:return Object.assign({},e,{currentForum:n.payload});default:return e}},{fetchingUser:!0,authenticated:!1,error:null,_id:null,name:null,email:null,username:null,avatarUrl:null,githubUrl:null,githubLocation:null,githubBio:null,role:null});e.userReducer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o,n=arguments[1];switch(n.type){case t.START_FETCHING_USER:return Object.assign({},e,{fetchUser:!0});case t.FETCHING_USER_SUCCESS:var r=n.payload,i=r._id,u=r.name,a=r.username,s=r.avatarUrl,c=r.email,l=r.githubBio,f=r.githubUrl,p=r.githubLocation,d=r.role;return Object.assign({},e),{fetchingUser:!1,authenticated:!0,error:null,_id:i,name:u,username:a,avatarUrl:s,email:c,githubBio:l,githubUrl:f,githubLocation:p,role:d};case t.FETCHING_USER_FAILURE:return Object.assign({},o,{fetchingUser:!1,error:\"Unable to fetch user!\"});default:return e}}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0});var r=n(105),o=n(306),i=t(o),u=n(258),a=n(281),s=n(290),c=n(285),l=n(277),f=n(294),p=(0,r.combineReducers)({user:u.userReducer,app:u.appReducer,feed:a.feedReducer,discussion:s.singleDiscussionReducer,newDiscussion:c.newDiscussionReducer,adminInfo:l.adminInfoReducer,userProfile:f.userProfileReducer}),d=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||r.compose,h=(0,r.createStore)(p,d((0,r.applyMiddleware)(i.default)));e.default=h}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(6),l=(t(c),n(194)),f=t(l),p=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){var t=this.props,e=t.count,n=t.label;return s.default.createElement(\"div\",{className:f.default.container},s.default.createElement(\"div\",{className:f.default.count},e),s.default.createElement(\"div\",{className:f.default.label},n))}}]),e}(a.Component);p.defaultProps={count:0,label:\"default\"},p.propTypes={count:s.default.PropTypes.number,label:s.default.PropTypes.string},e.default=p}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(6),l=(t(c),n(195)),f=t(l),p=n(11),d=t(p),h=function(t){function e(t){r(this,e);var n=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return n.state={newForumTitle:\"\",newForumSlug:\"\",errorMsg:null},n.handleCreateForum=n.handleCreateForum.bind(n),n}return i(e,t),u(e,[{key:\"handleCreateForum\",value:function(){this.setState({errorMsg:null});var t=this.state,e=t.newForumTitle,n=t.newForumSlug,r=null,o=null;if(\"\"===e)return this.setState({errorMsg:\"Forum title is empty. Please provide a valid Forum Title.\"});if(r=e.trim(),r.length<4)return this.setState({errorMsg:\"Forum title should have at least 4 charecters.\"});if(\"\"===o)return this.setState({errorMsg:\"Forum slug is empty. Please provide a valid Forum Slug.\"});var i=/^[a-z\\_]+$/;return o=n.match(i)?n:null,o&&o.length<4?this.setState({errorMsg:\"Forum slug should have at least 4 charecters.\"}):r?o?void(r&&o&&this.props.createAction({title:r,slug:o})):this.setState({errorMsg:\"Please provide a valid Forum Slug. Slug can only contain small case alphabets and underscore.\"}):this.setState({errorMsg:\"Please provide a valid Forum Title.\"})}},{key:\"render\",value:function(){var t=this,e=this.props,n=e.forums,r=e.creatingForum,o=e.deleteAction,i=e.deletingForum,u=this.state,a=(u.newForumTitle,u.newForumSlug,u.errorMsg);return s.default.createElement(\"div\",{className:f.default.container},s.default.createElement(\"div\",{className:f.default.title},\"Current Forums\"),s.default.createElement(\"div\",{className:f.default.forumsContainer},i&&s.default.createElement(\"div\",{className:f.default.loadingMsg},\"Removing forum, please wait...\"),n.map(function(t){return s.default.createElement(\"div\",{key:t.id,className:f.default.forum},s.default.createElement(\"div\",{className:f.default.forumTitle},t.name),s.default.createElement(\"div\",{className:f.default.forumSlug},\"(\",t.slug,\")\"),s.default.createElement(\"div\",{className:f.default.removeButton},s.default.createElement(d.default,{onClick:function(){o(t.id)}},\"Remove\")))})),s.default.createElement(\"div\",{className:f.default.createForumContainer},r&&s.default.createElement(\"div\",{className:f.default.loadingMsg},\"Creating forum, please wait...\"),s.default.createElement(\"div\",{className:f.default.createTitle},\"Create New Forum\"),s.default.createElement(\"div\",{className:f.default.createForum},s.default.createElement(\"div\",{className:f.default.createInputContainer},s.default.createElement(\"div\",{className:f.default.inputLabel},\"Title: \"),s.default.createElement(\"input\",{type:\"text\",className:f.default.createInput,placeholder:\"Forum Title\",onChange:function(e){t.setState({newForumTitle:e.target.value})}})),s.default.createElement(\"div\",{className:f.default.createInputContainer},s.default.createElement(\"div\",{className:f.default.inputLabel},\"Slug: \"),s.default.createElement(\"input\",{type:\"text\",className:f.default.createInput,placeholder:\"forum_slug\",onChange:function(e){t.setState({newForumSlug:e.target.value})}})),s.default.createElement(d.default,{onClick:this.handleCreateForum},\"Create\")),a&&s.default.createElement(\"div\",{className:f.default.errorMsg},a)))}}]),e}(a.Component);h.defaultProps={},h.propTypes={forums:s.default.PropTypes.array,deletingForum:s.default.PropTypes.bool,deleteAction:s.default.PropTypes.func,creatingForum:s.default.PropTypes.bool,createAction:s.default.PropTypes.func},e.default=h}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(8),l=n(6),f=t(l),p=n(37),d=t(p),h=n(196),y=t(h),_=n(54),g=t(_),v=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){var t=this.props,e=t.voteCount,n=t.userName,r=t.userGitHandler,o=t.discussionTitle,i=t.time,u=t.opinionCount,a=t.tags,l=t.link,p=t.userProfile,h=(0,d.default)(i),_=h.from((0,d.default)());return s.default.createElement(\"div\",{className:y.default.container},s.default.createElement(\"div\",{className:(0,f.default)(y.default.title,p&&y.default.titleBottomMargin)},s.default.createElement(c.Link,{to:l},o)),!p&&s.default.createElement(\"div\",{className:y.default.posterInfo},s.default.createElement(c.Link,{to:\"/user/\"+r,className:y.default.name},n),s.default.createElement(\"a\",{target:\"_blank\",href:\"https://www.github.com/\"+r,className:y.default.gitHandler},\"- \",s.default.createElement(\"i\",{className:(0,f.default)(\"fa fa-github-alt\",y.default.gitIcon)}),\" \",r)),s.default.createElement(\"div\",{className:y.default.boxFooter},s.default.createElement(\"div\",{className:y.default.tagsArea},a.map(function(t){return s.default.createElement(g.default,{key:t,name:t})})),s.default.createElement(\"div\",{className:y.default.postInfo},s.default.createElement(\"span\",{className:y.default.info},_),s.default.createElement(\"span\",{className:y.default.info},e,\" favorites\"),s.default.createElement(\"span\",{className:y.default.info},u,\" opinions\"))))}}]),e}(a.Component);v.defaultProps={discussionId:1,voteCount:20,userName:\"Hello World\",userGitHandler:\"github\",discussionTitle:\"This is a default post title\",time:(0,d.default)(),opinionCount:12,tags:[\"react\",\"redux\",\"nodejs\"],link:\"\",userProfile:!1},v.propTypes={discussionId:s.default.PropTypes.number,voteCount:s.default.PropTypes.number,userName:s.default.PropTypes.string,userGitHandler:s.default.PropTypes.string,discussionTitle:s.default.PropTypes.string,time:s.default.PropTypes.any,opinionCount:s.default.PropTypes.number,tags:s.default.PropTypes.array,link:s.default.PropTypes.string,userProfile:s.default.PropTypes.bool},e.default=v}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(6),l=t(c),f=n(198),p=t(f),d=n(14),h=t(d),y=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){return s.default.createElement(\"div\",{className:(0,l.default)(h.default.constraintWidth,p.default.contentArea)})}}]),e}(a.Component);y.defaultProps={},y.propTypes={},e.default=y}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(6),l=(t(c),n(202)),f=t(l),p=n(11),d=t(p),h=function(t){function e(t){r(this,e);var n=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return n.state={value:!1},n}return i(e,t),u(e,[{key:\"componentWillReceiveProps\",value:function(t){var e=t.value;this.setState({value:e})}},{key:\"updateValue\",value:function(t){this.props.onChange(t),this.setState({value:t})}},{key:\"render\",value:function(){var t=this,e=this.state.value;return s.default.createElement(\"div\",{className:f.default.container},s.default.createElement(\"div\",{className:f.default.label},\"Is it a pinned discussion?\"),s.default.createElement(\"div\",{className:f.default.btnContainer},s.default.createElement(d.default,{alwaysActive:!!e,onClick:function(){t.updateValue(!0)}},\"Yes\"),s.default.createElement(d.default,{alwaysActive:!e,onClick:function(){t.updateValue(!1)}},\"No\")))}}]),e}(a.Component);h.defaultProps={onChange:function(t){},value:!1},h.propTypes={onChange:s.default.PropTypes.func,value:s.default.PropTypes.bool},e.default=h}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function u(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),s=n(1),c=t(s),l=n(6),f=t(l),p=n(23),d=(t(p),n(203)),h=t(d),y=n(11),_=t(y),g=n(54),v=t(g),m=function(t){function e(t){o(this,e);var n=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return n.state={errorMsg:null,tags:[],tagName:\"\"},n}return u(e,t),a(e,[{key:\"componentWillReceiveProps\",value:function(t){var e=t.value;this.setState({tags:e,errorMsg:null})}},{key:\"validateTag\",value:function(t){var e=/^[a-z0-9.\\-_$@*!]{4,20}$/;return e.test(t)}},{key:\"sameTag\",value:function(t){var e=this.state.tags,n=!1;return e.map(function(e){e===t&&(n=!0)}),n}},{key:\"addTag\",value:function(){var t=this.state,e=t.tagName,n=t.tags;t.errorMsg;if(this.validateTag(e))if(this.sameTag(e))this.setState({errorMsg:\"Same tag!!!\"});else{var r=n.concat(e);this.setState({tags:r,errorMsg:null,tagName:\"\"}),this.props.onChange(r)}else this.setState({errorMsg:\"Tags can only contain small letters and numbers. No space or special characters please. Min 4 and max 20 chars.\"})}},{key:\"removeTag\",value:function(t){var e=this.state.tags,n=[].concat(r(e.slice(0,t)),r(e.slice(t+1,e.length)));this.setState({tags:n}),this.props.onChange(n)}},{key:\"renderTags\",value:function(){var t=this,e=this.state.tags;return e.map(function(e,n){return c.default.createElement(v.default,{name:e,key:e,withRemove:!0,removeAction:function(){t.removeTag(n)}})})}},{key:\"renderInput\",value:function(){var t=this,e=this.state,n=e.tagName,r=e.tags,o=this.props.maxTagCount;return r.length<o?c.default.createElement(\"div\",{className:h.default.inputContainer},c.default.createElement(\"input\",{className:h.default.tagInput,placeholder:\"tag name...\",value:n,onChange:function(e){t.setState({tagName:e.target.value})}}),c.default.createElement(_.default,{className:h.default.addButton,onClick:function(){t.addTag()}},c.default.createElement(\"i\",{className:(0,f.default)(\"fa fa-plus-circle\")}))):null}},{key:\"render\",value:function(){var t=this.state,e=t.errorMsg;t.tagName,t.tags,this.props.maxTagCount;return c.default.createElement(\"div\",{className:h.default.container},c.default.createElement(\"div\",{className:h.default.tagContainer},c.default.createElement(\"div\",{className:h.default.label},\"Tags :\"),this.renderTags(),this.renderInput()),e&&c.default.createElement(\"div\",{className:h.default.errorMsg},e))}}]),e}(s.Component);m.defaultProps={value:[],maxTagCount:3,onChange:function(t){}},m.propTypes={value:c.default.PropTypes.array,maxTagCount:c.default.PropTypes.number,onChange:c.default.PropTypes.func},e.default=m}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(6),l=(t(c),n(34)),f=t(l),p=n(11),d=(t(p),n(94)),h=t(d),y=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){var t=this.props,e=t.onToggle,n=t.editorState,r=(t.type,[{label:\"H3\",style:\"header-three\"},{label:\"H4\",style:\"header-four\"},{label:\"H5\",style:\"header-five\"},{label:\"Blockquote\",style:\"blockquote\"},{label:\"Code Block\",style:\"code-block\"}]),o=n.getSelection(),i=n.getCurrentContent().getBlockForKey(o.getStartKey()).getType();return s.default.createElement(\"div\",{className:f.default.controls},r.map(function(t){return s.default.createElement(h.default,{key:t.label,onToggle:e,active:t.style===i,label:t.label,style:t.style})}))}}]),e}(a.Component);y.propTypes={onToggle:s.default.PropTypes.func.isRequired,editorState:s.default.PropTypes.any.isRequired,type:s.default.PropTypes.oneOf([\"newDiscussion\",\"newOpinion\"])},e.default=y}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(6),l=(t(c),n(34)),f=t(l),p=n(11),d=(t(p),n(94)),h=t(d),y=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){var t=this.props,e=t.onToggle,n=t.editorState,r=[{label:\"Bold\",style:\"BOLD\"},{label:\"Italic\",style:\"ITALIC\"},{label:\"Monospace\",style:\"CODE\"}],o=n.getCurrentInlineStyle();return s.default.createElement(\"div\",{className:f.default.controls},r.map(function(t){return s.default.createElement(h.default,{key:t.label,onToggle:e,active:o.has(t.style),label:t.label,style:t.style})}))}}]),e}(a.Component);y.propTypes={onToggle:s.default.PropTypes.func.isRequired,editorState:s.default.PropTypes.any.isRequired,type:s.default.PropTypes.oneOf([\"newDiscussion\",\"newOpinion\"])},e.default=y}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(8),l=n(204),f=t(l),p=n(11),d=t(p),h=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){var t=this.props.currentForum;return s.default.createElement(\"div\",{className:f.default.sidebarContainer},s.default.createElement(c.Link,{to:\"/\"+t+\"/new_discussion\"},s.default.createElement(d.default,{type:\"outline\",fullWidth:!0,noUppercase:!0},\"New Discussion\")))}}]),e}(a.Component);h.defaultProps={currentForum:\"general\"},h.propTypes={currentForum:s.default.PropTypes.string},e.default=h}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e;\n}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(23),s=t(a),c=n(1),l=t(c),f=n(8),p=n(37),d=t(p),h=n(6),y=t(h),_=n(205),g=t(_),v=n(36),m=t(v),b=n(11),E=t(b),S=n(54),w=t(S),O=n(35),T=t(O),C=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){var t=this.props,e=t.id,n=t.userAvatar,r=t.userName,o=t.userGitHandler,i=t.discTitle,u=t.discDate,a=t.discContent,c=t.tags,p=t.favoriteCount,h=t.favoriteAction,_=t.userFavorited,v=t.toggleingFavorite,m=t.allowDelete,b=t.deletingDiscussion,S=t.deleteAction,O=(0,d.default)(u);O=O.from((0,d.default)());var C=\"\";return C=v?\"Toggling Favorite...\":_?\"Favorited (\"+p+\")\":0===p?\"Make favorite\":1===p?\"1 favorite\":p+\" favorites\",l.default.createElement(\"div\",{className:g.default.container},l.default.createElement(\"div\",{className:g.default.infoContainer},l.default.createElement(\"img\",{className:g.default.avatar,src:n}),l.default.createElement(\"div\",{className:g.default.columnOnSmallBP},l.default.createElement(\"div\",{className:g.default.userInfo},l.default.createElement(f.Link,{to:\"/user/\"+o,className:g.default.name},r||o),l.default.createElement(\"a\",{href:\"https://www.github.com/\"+o,target:\"_blank\",className:g.default.gitHandler},l.default.createElement(\"i\",{className:(0,y.default)(\"fa fa-github-alt\",g.default.gitIcon)}),l.default.createElement(\"span\",null,o))),l.default.createElement(\"div\",{className:g.default.dateInfo},O))),l.default.createElement(\"div\",{className:g.default.discTitle},i),l.default.createElement(\"div\",{className:g.default.discContent},l.default.createElement(T.default,{readOnly:!0,value:a})),l.default.createElement(\"div\",{className:g.default.discFooter},l.default.createElement(\"div\",{className:g.default.tags},c.map(function(t){return l.default.createElement(w.default,{name:t,key:s.default.uniqueId(\"tag_\")})})),l.default.createElement(E.default,{noUppercase:!0,className:g.default.favoriteButton,onClick:function(){!v&&h(e)}},l.default.createElement(\"i\",{className:(0,y.default)(\"fa fa-\"+(_?\"heart\":\"heart-o\"))}),l.default.createElement(\"span\",null,C)),m&&l.default.createElement(E.default,{noUppercase:!0,className:g.default.deleteButton,onClick:function(){S()}},l.default.createElement(\"i\",{className:(0,y.default)(\"fa fa-trash\",g.default.trashIcon)}),l.default.createElement(\"span\",null,\"Delete\"))),b&&l.default.createElement(\"div\",{className:g.default.deletingDiscussion},\"Deleting Discussion...\"))}}]),e}(c.Component);C.defaultProps={id:0,userAvatar:m.default,userName:\"User name\",userGitHandler:\"github\",discTitle:\"Default Discussion Title\",discDate:\"a day ago\",discContent:\"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\",tags:[\"react\",\"redux\",\"webkit\"],favoriteCount:1,favoriteAction:function(){},userFavorited:!1,toggleingFavorite:!1,allowDelete:!1,deletingDiscussion:!1,deleteAction:function(){}},C.propTypes={id:l.default.PropTypes.any,userAvatar:l.default.PropTypes.string,userName:l.default.PropTypes.string,userGitHandler:l.default.PropTypes.string,discTitle:l.default.PropTypes.string,discDate:l.default.PropTypes.any,discContent:l.default.PropTypes.any,tags:l.default.PropTypes.array,favoriteCount:l.default.PropTypes.number,favoriteAction:l.default.PropTypes.func,userFavorited:l.default.PropTypes.bool,toggleingFavorite:l.default.PropTypes.bool,allowDelete:l.default.PropTypes.bool,deletingDiscussion:l.default.PropTypes.bool,deleteAction:l.default.PropTypes.func},e.default=C}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(8),l=n(37),f=t(l),p=n(6),d=t(p),h=n(206),y=t(h),_=n(36),g=t(_),v=n(11),m=t(v),b=n(35),E=t(b),S=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){var t=this.props,e=t.opinionId,n=t.userAvatar,r=t.userName,o=t.userGitHandler,i=t.opDate,u=t.opContent,a=t.userId,l=t.currentUserId,p=t.currentUserRole,h=t.deleteAction,_=t.deletingOpinion,g=(0,f.default)(i);g=g.from((0,f.default)());var v=a===l||\"admin\"===p;return s.default.createElement(\"div\",{className:y.default.container},s.default.createElement(\"div\",{className:y.default.infoContainer},s.default.createElement(\"img\",{className:y.default.avatar,src:n}),s.default.createElement(\"div\",{className:y.default.userInfo},s.default.createElement(c.Link,{to:\"/user/\"+o,className:y.default.name},r||o),s.default.createElement(\"a\",{href:\"https://www.github.com/\"+o,target:\"_blank\",className:y.default.gitHandler},s.default.createElement(\"i\",{className:(0,d.default)(\"fa fa-github-alt\",y.default.gitIcon)}),s.default.createElement(\"span\",null,o))),s.default.createElement(\"div\",{className:y.default.dateInfo},g),v&&s.default.createElement(m.default,{className:y.default.deleteButton,noUppercase:!0,onClick:function(){h(e)}},s.default.createElement(\"i\",{className:(0,d.default)(\"fa fa-trash\",y.default.trashIcon)}),s.default.createElement(\"span\",null,\"Delete\"))),s.default.createElement(\"div\",{className:y.default.opContent},s.default.createElement(E.default,{readOnly:!0,value:u})),_===e&&s.default.createElement(\"div\",{className:y.default.deletingOpinion},\"Deleting Opinion ...\"))}}]),e}(a.Component);S.defaultProps={opinionId:\"12345\",userAvatar:g.default,userName:\"User name\",userGitHandler:\"github\",opDate:\"a day ago\",opContent:\"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",userId:\"12345\",currentUserId:\"12345\",currentUserRole:\"user\",deleteAction:function(){},deletingOpinion:null},S.propTypes={opinionId:s.default.PropTypes.string,userAvatar:s.default.PropTypes.string,userName:s.default.PropTypes.string,userGitHandler:s.default.PropTypes.string,opDate:s.default.PropTypes.any,opContent:s.default.PropTypes.string,userId:s.default.PropTypes.string,currentUserId:s.default.PropTypes.string,currentUserRole:s.default.PropTypes.string,deleteAction:s.default.PropTypes.func,deletingOpinion:s.default.PropTypes.any},e.default=S}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(207),l=t(c),f=n(35),p=t(f),d=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){var t=this.props,e=t.posting,n=t.onSubmit,r=t.onChange;return e?s.default.createElement(\"div\",{className:l.default.loadingWrapper},\"Posting your opinion...\"):s.default.createElement(p.default,{type:\"newOpinion\",onSave:n,onChange:r})}}]),e}(a.Component);d.defaultProps={posting:!1,onSubmit:function(){},onChange:function(t){}},d.propTypes={posting:s.default.PropTypes.bool,onSubmit:s.default.PropTypes.func,onChange:s.default.PropTypes.func},e.default=d}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(6),l=t(c),f=n(209),p=t(f),d=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){var t=this.props,e=t.name,n=t.gitHandler,r=t.location,o=t.avatarUrl;return s.default.createElement(\"div\",{className:p.default.container},s.default.createElement(\"div\",{className:p.default.avatarContainer},s.default.createElement(\"img\",{className:p.default.avatar,src:o,alt:e+\" avatar\"})),s.default.createElement(\"div\",{className:p.default.infoContainer},s.default.createElement(\"div\",{className:p.default.name},e),s.default.createElement(\"div\",{className:p.default.gitHandler},s.default.createElement(\"i\",{className:(0,l.default)(\"fa fa-github-alt\",p.default.gitIcon)}),\" \",n),s.default.createElement(\"div\",{className:p.default.location},r)))}}]),e}(a.Component);d.defaultProps={name:\"Hello World\",gitHandler:\"helloWorld\",location:\"Somewhere in the world\",avatarUrl:\"https://google.com\"},d.propTypes={name:s.default.PropTypes.string,gitHandler:s.default.PropTypes.string,location:s.default.PropTypes.string,avatarUrl:s.default.PropTypes.string},e.default=d}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(16),l=(n(8),n(6)),f=t(l),p=n(14),d=t(p),h=n(210),y=t(h),_=n(93),g=t(_),v=n(91),m=t(v),b=n(92),E=t(b),S=n(36),w=(t(S),function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"renderNavLinks\",value:function(){return[{name:\"Dashboard\",link:\"/admin\"}]}},{key:\"render\",value:function(){var t=this.props.user,e=t.authenticated,n=t.name,r=t.username,o=t.avatarUrl;return s.default.createElement(\"div\",{className:(0,f.default)(d.default.constraintWidth)},s.default.createElement(\"div\",{className:y.default.headerTop},s.default.createElement(m.default,null),\"Welcome Admin\",s.default.createElement(g.default,{signedIn:e,userName:n||r,gitHandler:r,avatar:o})),s.default.createElement(E.default,{navigationLinks:this.renderNavLinks()}))}}]),e}(a.Component));e.default=(0,c.connect)(function(t){return{user:t.user,forums:t.app.forums}})(w)}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.deleteForum=e.createForum=e.getAdminDashboardInfo=void 0;var t=n(96),r=n(275);e.getAdminDashboardInfo=function(){return function(e,n){e({type:t.GET_ALL_INFO_START}),(0,r.getAdminDashboardInfoAPI)().then(function(n){return e({type:t.GET_ALL_INFO_SUCCESS,payload:n.data})},function(t){return e({type:FETCHING_DISCUSSIONS_FAILURE,payload:t})})}},e.createForum=function(e){return function(n,o){n({type:t.CREATE_FORUM}),(0,r.createForumAPI)(e).then(function(e){(0,r.getAdminDashboardInfoAPI)().then(function(r){n({type:t.GET_ALL_INFO_SUCCESS,payload:r.data}),n(e.data.created?{type:t.CREATE_FORUM_SUCCESS}:{type:t.CREATE_FORUM_FAILURE})},function(t){return n({type:FETCHING_DISCUSSIONS_FAILURE,payload:t})})},function(e){return n({type:t.CREATE_FORUM_FAILURE})})}},e.deleteForum=function(e){return function(n,o){n({type:t.DELETE_FORUM}),(0,r.deleteForumAPI)(e).then(function(e){n({type:t.GET_ALL_INFO_START}),(0,r.getAdminDashboardInfoAPI)().then(function(r){n({type:t.GET_ALL_INFO_SUCCESS,payload:r.data}),n(e.data.deleted?{type:t.DELETE_FORUM_SUCCESS}:{type:t.DELETE_FORUM_FAILURE})},function(t){return n({type:FETCHING_DISCUSSIONS_FAILURE,payload:t})})},function(e){return n({type:t.DELETE_FORUM_FAILURE})})}}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.deleteForumAPI=e.createForumAPI=e.getAdminDashboardInfoAPI=void 0;var r=n(21),o=t(r);e.getAdminDashboardInfoAPI=function(){return o.default.get(\"/api/admin/admin_dashboard_info\")},e.createForumAPI=function(t){return o.default.post(\"/api/admin/create_forum\",t)},e.deleteForumAPI=function(t){return o.default.post(\"/api/admin/delete_forum\",{forum_id:t})}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=(n(8),n(16)),l=n(6),f=t(l),p=n(14),d=t(p),h=n(212),y=t(h),_=n(274),g=n(260),v=t(g),m=n(261),b=t(m),E=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"componentDidMount\",value:function(){this.props.getAdminDashboardInfo()}},{key:\"render\",value:function(){var t=this,e=this.props.adminInfo.info,n=e.discussionCount,r=e.opinionCount,o=e.forumCount,i=e.userCount,u=e.forums,a=this.props,c=a.loadingInfo,l=a.creatingForum,p=a.creatingForumError,h=a.deletingForum,_=a.deletingForumError,g=u.map(function(t){return{id:t._id,name:t.forum_name,slug:t.forum_slug}});return s.default.createElement(\"div\",{className:(0,f.default)(d.default.constraintWidth,y.default.container)},c&&s.default.createElement(\"div\",{className:(0,f.default)(y.default.loadingMsg)},\"Loading dashboard info...\"),s.default.createElement(\"div\",{className:y.default.countsContainer},s.default.createElement(v.default,{label:\"Users\",count:i}),s.default.createElement(v.default,{label:\"Discussions\",count:n}),s.default.createElement(v.default,{label:\"Opinions\",count:r}),s.default.createElement(v.default,{label:\"Forums\",count:o})),s.default.createElement(b.default,{forums:g,deletingForum:h,deleteAction:function(e){t.props.deleteForum(e)},creatingForum:l,createAction:function(e){t.props.createForum(e)}}),p&&s.default.createElement(\"div\",{className:y.default.errorMsg},p),_&&s.default.createElement(\"div\",{className:y.default.errorMsg},_))}}]),e}(a.Component);e.default=(0,c.connect)(function(t){return{adminInfo:t.adminInfo,loadingInfo:t.adminInfo.loadingInfo,creatingForum:t.adminInfo.creatingForum,creatingForumError:t.adminInfo.creatingForumError,deletingForum:t.adminInfo.deletingForum,deletingForumError:t.adminInfo.deletingForumError}},function(t){return{getAdminDashboardInfo:function(){t((0,_.getAdminDashboardInfo)())},getForums:function(){t((0,_.getForums)())},deleteForum:function(e){t((0,_.deleteForum)(e))},createForum:function(e){t((0,_.createForum)(e))}}})(E)}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.adminInfoReducer=void 0;var t=n(96),r={loadingInfo:!1,info:{discussionCount:0,opinionCount:0,forumCount:0,userCount:0,forums:[]},error:null,creatingForum:!1,creatingForumError:null,deletingForum:!1,deletingForumError:null};e.adminInfoReducer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,n=arguments[1];switch(n.type){case t.GET_ALL_INFO_START:return Object.assign({},e,{loadingInfo:!0,error:null});case t.GET_ALL_INFO_SUCCESS:return Object.assign({},e,{loadingInfo:!1,info:n.payload,error:null});case t.GET_ALL_INFO_FAILURE:return Object.assign({},e,{loadingInfo:!1,error:\"Something went wrong while loading admin level information.\"});case t.CREATE_FORUM:return Object.assign({},e,{creatingForumError:null,creatingForum:!0});case t.CREATE_FORUM_SUCCESS:return Object.assign({},e,{creatingForum:!1,creatingForumError:null});case t.CREATE_FORUM_FAILURE:return Object.assign({},e,{creatingForum:!1,creatingForumError:\"Something went wrong while trying to create the forum. Please try again. Also check out if the forum already exists.\"});case t.DELETE_FORUM:return Object.assign({},e,{deletingForum:!0,deletingForumError:null});case t.DELETE_FORUM_SUCCESS:return Object.assign({},e,{deletingForum:!1,deletingForumError:null});case t.DELETE_FORUM_FAILURE:return Object.assign({},e,{deletingForum:!1,deletingForumError:\"Something went wrong while trying to delete the forum. Please try again later.\"});default:return e}}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.updateSortingMethod=e.getPinnedDiscussions=e.getDiscussions=void 0;var r=n(23),o=t(r),i=n(97),u=n(279),a=function(t,e){var n=t.app.forums,r=o.default.find(n,{forum_slug:e});return r?r._id:null};e.getDiscussions=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return function(r,o){var s=a(o(),t),c=o().feed.sortingMethod;(e||n)&&r({type:i.START_FETCHING_DISCUSSIONS}),s?(0,u.fetchDiscussions)(s,c).then(function(t){return r({type:i.FETCHING_DISCUSSIONS_SUCCESS,payload:t.data})},function(t){return r({type:i.FETCHING_DISCUSSIONS_FAILURE})}):r({type:i.INVALID_FORUM})}},e.getPinnedDiscussions=function(t,e){return function(n,r){var o=a(r(),t);e&&n({type:i.START_FETCHING_PINNED_DISCUSSIONS}),o?(0,u.fetchPinnedDiscussions)(o).then(function(t){return n({type:i.FETCHING_PINNED_DISCUSSIONS_SUCCESS,payload:t.data})},function(t){return n({type:i.FETCHING_PINNED_DISCUSSIONS_FAILURE})}):n({type:i.INVALID_FORUM})}},e.updateSortingMethod=function(t){return{type:i.UPDATE_SORTING_METHOD,payload:t}}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.fetchPinnedDiscussions=e.fetchDiscussions=void 0;var r=n(21),o=t(r);e.fetchDiscussions=function(t,e){return o.default.get(\"/api/forum/\"+t+\"/discussions?sorting_method=\"+e)},e.fetchPinnedDiscussions=function(t){return o.default.get(\"/api/forum/\"+t+\"/pinned_discussions\")}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(8),l=n(16),f=n(24),p=n(6),d=t(p),h=n(278),y=n(11),_=t(y),g=n(90),v=t(g),m=n(268),b=t(m),E=n(14),S=t(E),w=n(213),O=t(w),T=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"componentDidMount\",value:function(){var t=this.props,e=t.currentForum,n=t.getDiscussions,r=t.getPinnedDiscussions;n(e),r(e)}},{key:\"componentDidUpdate\",value:function(t){var e=this.props,n=e.currentForum,r=e.getDiscussions,o=e.getPinnedDiscussions;if(t.currentForum!==n){var i=!0;r(n,i),o(n,i)}}},{key:\"handleSortingChange\",value:function(t){var e=this.props,n=e.currentForum,r=e.getDiscussions,o=e.updateSortingMethod,i=e.sortingMethod;i!==t&&(o(t),r(n,!1,!0))}},{key:\"renderNewDiscussionButtion\",value:function(){var t=this.props.currentForum;return s.default.createElement(\"div\",{className:(0,d.default)(S.default.showOnMediumBP,O.default.newDiscussionBtn)},s.default.createElement(c.Link,{to:\"/\"+t+\"/new_discussion\"},s.default.createElement(_.default,{type:\"outline\",fullWidth:!0,noUppercase:!0},\"New Discussion\")))}},{key:\"render\",value:function(){var t=this.props,e=t.currentForum,n=t.discussions,r=t.fetchingDiscussions,o=t.pinnedDiscussions,i=t.fetchingPinnedDiscussions,u=t.sortingMethod,a=t.error;return a?s.default.createElement(\"div\",{className:(0,d.default)(O.default.errorMsg)},a):s.default.createElement(\"div\",{className:(0,d.default)(S.default.constraintWidth,O.default.contentArea)},s.default.createElement(f.Helmet,null,s.default.createElement(\"title\",null,\"ReForum | \"+e)),s.default.createElement(\"div\",{className:S.default.primaryContent},s.default.createElement(v.default,{type:\"pinned\",loading:i,discussions:o,currentForum:e}),s.default.createElement(v.default,{type:\"general\",loading:r,discussions:n,currentForum:e,onChangeSortingMethod:this.handleSortingChange.bind(this),activeSortingMethod:u}),this.renderNewDiscussionButtion()),s.default.createElement(\"div\",{className:S.default.secondaryContent},s.default.createElement(b.default,{currentForum:e})))}}]),e}(a.Component);e.default=(0,l.connect)(function(t){return{currentForum:t.app.currentForum,fetchingDiscussions:t.feed.fetchingDiscussions,discussions:t.feed.discussions,fetchingPinnedDiscussions:t.feed.fetchingPinnedDiscussions,sortingMethod:t.feed.sortingMethod,pinnedDiscussions:t.feed.pinnedDiscussions,error:t.feed.error}},function(t){return{getDiscussions:function(e,n,r,o){t((0,h.getDiscussions)(e,n,r,o))},getPinnedDiscussions:function(e,n){t((0,h.getPinnedDiscussions)(e,n))},updateSortingMethod:function(e){t((0,h.updateSortingMethod)(e))}}})(T)}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.feedReducer=void 0;var t=n(97),r={fetchingDiscussions:!0,discussions:null,fetchingPinnedDiscussions:!0,pinnedDiscussions:null,sortingMethod:\"date\",error:null};e.feedReducer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,n=arguments[1];switch(n.type){case t.START_FETCHING_DISCUSSIONS:return Object.assign({},e,{fetchingDiscussions:!0,error:null});case t.STOP_FETCHING_DISCUSSIONS:return Object.assign({},e,{fetchingDiscussions:!1});case t.FETCHING_DISCUSSIONS_SUCCESS:return Object.assign({},e,{discussions:n.payload,fetchingDiscussions:!1,error:null});case t.FETCHING_DISCUSSIONS_FAILURE:return Object.assign({},e,{fetchingDiscussions:!1,error:\"Unable to fetch discussions at the moment.\"});case t.START_FETCHING_PINNED_DISCUSSIONS:return Object.assign({},e,{fetchingPinnedDiscussions:!0,error:null});case t.STOP_FETCHING_PINNED_DISCUSSIONS:return Object.assign({},e,{fetchingPinnedDiscussions:!1});case t.FETCHING_PINNED_DISCUSSIONS_SUCCESS:return Object.assign({},e,{pinnedDiscussions:n.payload,fetchingPinnedDiscussions:!1,error:null});case t.FETCHING_PINNED_DISCUSSIONS_FAILURE:return Object.assign({},e,{fetchingPinnedDiscussions:!1,error:\"Unable to fetch pinned discussions at the moment.\"});case t.UPDATE_SORTING_METHOD:return Object.assign({},e,{sortingMethod:n.payload});case t.INVALID_FORUM:return Object.assign({},e,{error:\"Sorry, couldn't find the forum.\",fetchingPinnedDiscussions:!1,fetchingDiscussions:!1});default:return e}}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.updateDiscussionTags=e.updateDiscussionPinStatus=e.updateDiscussionContent=e.updateDiscussionTitle=e.postDiscussion=void 0;var t=n(8),r=n(98),o=n(283);e.postDiscussion=function(e,n,i){return function(u,a){u({type:r.POSTING_DISCUSSION_START});var s=a().newDiscussion,c=s.title,l=s.content,f=s.tags,p=s.pinned,d=!0;return e&&n?null===c||c.length<15?(d=!1,u({type:r.POSTING_DISCUSSION_FAILURE,payload:\"Title should be at least 15 characters.\"})):null===l||0===l.length?(d=!1,u({type:r.POSTING_DISCUSSION_FAILURE,payload:\"Please write some content before posting.\"})):null===f||0===f.length?(d=!1,u({type:r.POSTING_DISCUSSION_FAILURE,payload:\"Please provide some tags.\"})):void(d&&(0,o.postDiscussionApi)({userId:e,forumId:n,title:c,content:l,tags:f,pinned:p}).then(function(e){e.data.postCreated===!0?(u({type:r.POSTING_DISCUSSION_SUCCESS}),setTimeout(function(){u({type:r.CLEAR_SUCCESS_MESSAGE})},2e3),t.browserHistory.push(\"/\"+i+\"/discussion/\"+e.data.discussion_slug)):u({type:r.POSTING_DISCUSSION_FAILURE,payload:\"Something is wrong at our server end. Please try again later\"})},function(t){u({type:r.POSTING_DISCUSSION_FAILURE,payload:t})})):(d=!1,u({type:r.POSTING_DISCUSSION_FAILURE,payload:\"Something is wrong with user/forum.\"}))}},e.updateDiscussionTitle=function(t){return{type:r.UPDATE_DISCUSSION_TITLE,payload:t}},e.updateDiscussionContent=function(t){return{type:r.UPDATE_DISCUSSION_CONTENT,payload:t}},e.updateDiscussionPinStatus=function(t){return{type:r.UPDATE_DISCUSSION_PIN_STATUS,payload:t}},e.updateDiscussionTags=function(t){return{type:r.UPDATE_DISCUSSION_TAGS,payload:t}}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.postDiscussionApi=void 0;var r=n(21),o=t(r);e.postDiscussionApi=function(t){return o.default.post(\"/api/discussion/newDiscussion\",t)}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(23),s=t(a),c=n(1),l=t(c),f=n(16),p=n(24),d=n(6),h=t(d),y=n(35),_=t(y),g=n(264),v=t(g),m=n(265),b=t(m),E=n(282),S=n(214),w=t(S),O=n(14),T=t(O),C=function(t){function e(t){r(this,e);var n=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return n.state={forumId:null,userId:null,fatalError:null},n}return i(e,t),u(e,[{key:\"componentDidMount\",value:function(){var t=this.props,e=t.user,n=t.currentForum,r=t.forums;this.setUserAndForumID(e,r,n)}},{key:\"componentWillReceiveProps\",value:function(t){var e=t.user,n=t.currentForum,r=t.forums;this.setUserAndForumID(e,r,n)}},{key:\"setUserAndForumID\",value:function(t,e,n){var r=s.default.find(e,{forum_slug:n});if(r){var o=r._id;this.setState({forumId:o,userId:t._id})}else this.setState({fatalError:\"Invalid forum buddy, go for the right one!\"})}},{key:\"renderEditor\",value:function(){var t=this.props.user,e=t.authenticated,n=t.role,r=this.props,o=r.updateDiscussionTitle,i=r.updateDiscussionContent,u=r.updateDiscussionPinStatus,a=r.updateDiscussionTags,s=r.postDiscussion,c=r.currentForum,f=this.props.newDiscussion,p=f.title,d=f.content,y=f.tags,g=f.pinned,m=this.state,E=m.forumId,S=m.userId;return e?[l.default.createElement(\"input\",{key:\"title\",type:\"text\",className:w.default.titleInput,placeholder:\"Discussion title...\",value:p,onChange:function(t){o(t.target.value)}}),\"admin\"===n&&l.default.createElement(v.default,{key:\"pinned\",value:g,onChange:function(t){u(t)}}),l.default.createElement(b.default,{key:\"tags\",value:y,onChange:function(t){a(t)}}),l.default.createElement(_.default,{key:\"content\",type:\"newDiscussion\",value:d,onChange:function(t){i(t)},onSave:function(){s(S,E,c)}})]:l.default.createElement(\"div\",{className:(0,h.default)(T.default.constraintWidth,w.default.signInMsg)},\"Please sign in before posting a new discussion.\")}},{key:\"render\",value:function(){var t=this.state.fatalError;if(t)return l.default.createElement(\"div\",{className:(0,h.default)(w.default.errorMsg,w.default.fatalError)},t);var e=this.props.currentForum,n=this.props.newDiscussion,r=n.errorMsg,o=n.postingSuccess,i=n.postingDiscussion;\nreturn l.default.createElement(\"div\",{className:(0,h.default)(T.default.constraintWidth,w.default.content)},l.default.createElement(p.Helmet,null,l.default.createElement(\"title\",null,\"ReForum | New Discussion\")),l.default.createElement(\"div\",{className:w.default.forumInfo},\"You are creating a new discussion on \",l.default.createElement(\"span\",{className:w.default.forumName},e),\" forum.\"),l.default.createElement(\"div\",{className:w.default.errorMsg},r),o&&l.default.createElement(\"div\",{className:w.default.successMsg},\"Your discussion is created :-)\"),this.renderEditor(),i&&l.default.createElement(\"div\",{className:w.default.postingMsg},\"Posting discussion...\"))}}]),e}(c.Component);e.default=(0,f.connect)(function(t){return{user:t.user,forums:t.app.forums,currentForum:t.app.currentForum,newDiscussion:t.newDiscussion}},function(t){return{postDiscussion:function(e,n,r){t((0,E.postDiscussion)(e,n,r))},updateDiscussionTitle:function(e){t((0,E.updateDiscussionTitle)(e))},updateDiscussionContent:function(e){t((0,E.updateDiscussionContent)(e))},updateDiscussionPinStatus:function(e){t((0,E.updateDiscussionPinStatus)(e))},updateDiscussionTags:function(e){t((0,E.updateDiscussionTags)(e))}}})(C)}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.newDiscussionReducer=void 0;var t=n(98),r={postingSuccess:!1,errorMsg:null,postingDiscussion:!1,title:\"\",content:null,tags:[],pinned:!1};e.newDiscussionReducer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,n=arguments[1];switch(n.type){case t.POSTING_DISCUSSION_START:return Object.assign({},e,{postingDiscussion:!0});case t.POSTING_DISCUSSION_SUCCESS:return Object.assign({},r,{postingSuccess:!0,postingDiscussion:!1,errorMsg:null});case t.POSTING_DISCUSSION_FAILURE:return Object.assign({},e,{postingSuccess:!1,postingDiscussion:!1,errorMsg:n.payload||\"Unable to post discussion.\"});case t.CLEAR_SUCCESS_MESSAGE:return Object.assign({},r,{postingSuccess:!1});case t.UPDATE_DISCUSSION_TITLE:return Object.assign({},e,{title:n.payload});case t.UPDATE_DISCUSSION_CONTENT:return Object.assign({},e,{content:n.payload});case t.UPDATE_DISCUSSION_PIN_STATUS:return Object.assign({},e,{pinned:n.payload});case t.UPDATE_DISCUSSION_TAGS:return Object.assign({},e,{tags:n.payload});default:return e}}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"render\",value:function(){return s.default.createElement(\"h2\",null,\"Coudn't found the url buddy. Please check it out.\")}}]),e}(a.Component);e.default=c}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.deleteOpinion=e.deletedDiscussionRedirect=e.deletePost=e.postOpinion=e.updateOpinionContent=e.toggleFavorite=e.getDiscussion=void 0;var t=n(99),r=n(288);e.getDiscussion=function(e){return function(n,o){n({type:t.FETCHING_SINGLE_DISC_START}),(0,r.fetchSingleDiscussion)(e).then(function(e){n(e.data?{type:t.FETCHING_SINGLE_DISC_SUCCESS,payload:e.data}:{type:t.FETCHING_SINGLE_DISC_FAILURE})},function(e){return n({type:t.FETCHING_SINGLE_DISC_FAILURE})})}},e.toggleFavorite=function(e){return function(n,o){n({type:t.TOGGLE_FAVORITE_START}),(0,r.toggleFavoriteApi)(e).then(function(e){e.data._id?(n({type:t.TOGGLE_FAVORITE_SUCCESS}),n({type:t.FETCHING_SINGLE_DISC_SUCCESS,payload:e.data})):n({type:t.TOGGLE_FAVORITE_FAILURE})},function(e){return n({type:t.TOGGLE_FAVORITE_FAILURE})})}},e.updateOpinionContent=function(e){return{type:t.UPDATE_OPINION_CONTENT,payload:e}},e.postOpinion=function(e,n){return function(o,i){o({type:t.POSTING_OPINION_START}),!e.content||e.content.length<20?o({type:t.POSTING_OPINION_FAILURE,payload:\"Please provide a bit more info in your opinion....at least 20 characters.\"}):(0,r.postOpinionApi)(e).then(function(e){e.data._id?(0,r.fetchSingleDiscussion)(n).then(function(e){o({type:t.FETCHING_SINGLE_DISC_SUCCESS,payload:e.data}),o({type:t.POSTING_OPINION_SUCCESS})},function(e){return o({type:t.FETCHING_SINGLE_DISC_FAILURE})}):o({type:t.POSTING_OPINION_FAILURE})},function(e){return o({type:t.POSTING_OPINION_FAILURE})})}},e.deletePost=function(e){return function(n,o){n({type:t.DELETE_DISC_START}),(0,r.deletePostApi)(e).then(function(e){n(e.data.deleted?{type:t.DELETE_DISC_SUCCESS}:{type:t.DELETE_DISC_FAILURE})},function(e){return n({type:t.DELETE_DISC_FAILURE})})}},e.deletedDiscussionRedirect=function(){return function(e,n){e({type:t.DELETE_DISC_REDIRECT})}},e.deleteOpinion=function(e,n){return function(o,i){o({type:t.DELETE_OPINION_START,payload:e}),(0,r.deleteOpinionApi)(e).then(function(e){e.data.deleted?(0,r.fetchSingleDiscussion)(n).then(function(e){o({type:t.DELETE_OPINION_SUCCESS}),o({type:t.FETCHING_SINGLE_DISC_SUCCESS,payload:e.data})},function(e){return o({type:t.FETCHING_SINGLE_DISC_FAILURE})}):o({type:t.DELETE_OPINION_FAILURE})},function(e){return o({type:t.DELETE_OPINION_FAILURE})})}}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.deleteOpinionApi=e.deletePostApi=e.postOpinionApi=e.toggleFavoriteApi=e.fetchSingleDiscussion=void 0;var r=n(21),o=t(r);e.fetchSingleDiscussion=function(t){return o.default.get(\"/api/discussion/\"+t)},e.toggleFavoriteApi=function(t){return o.default.put(\"/api/discussion/toggleFavorite/\"+t)},e.postOpinionApi=function(t){return o.default.post(\"/api/opinion/newOpinion\",t)},e.deletePostApi=function(t){return o.default.delete(\"/api/discussion/deleteDiscussion/\"+t)},e.deleteOpinionApi=function(t){return o.default.delete(\"/api/opinion/deleteOpinion/\"+t)}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(8),l=n(16),f=n(24),p=n(6),d=(t(p),n(287)),h=n(269),y=t(h),_=n(271),g=t(_),v=n(270),m=t(v),b=n(215),E=t(b),S=n(14),w=t(S),O=function(t){function e(t){r(this,e);var n=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return n.state={opinionContent:\"\"},n}return i(e,t),u(e,[{key:\"componentDidMount\",value:function(){var t=this.props.params,e=(t.forum,t.discussion);this.props.getDiscussion(e)}},{key:\"componentDidUpdate\",value:function(){var t=this.props,e=t.deletedDiscussion,n=t.deletedDiscussionRedirect,r=this.props.params.forum;e&&(c.browserHistory.push(\"/\"+r),setTimeout(function(){n()},100))}},{key:\"componentWillUnmount\",value:function(){this.props.updateOpinionContent(null)}},{key:\"userFavoritedDiscussion\",value:function(t,e){for(var n=!1,r=0;r<e.length;r++)e[r]===t&&(n=!0);return n}},{key:\"handleReplySubmit\",value:function(){var t=this.props,e=t.postOpinion,n=t.discussion,r=t.opinionContent,o=t.userId,i=this.props.params.discussion;e({discussion_id:n._id,user_id:o,content:r},i)}},{key:\"deleteDiscussion\",value:function(){var t=this.props.params.discussion,e=this.props.deletePost;e(t)}},{key:\"deleteOpinion\",value:function t(e){var n=this.props.params.discussion,t=this.props.deleteOpinion;t(e,n)}},{key:\"render\",value:function(){var t=this,e=this.props,n=e.userAuthenticated,r=e.fetchingDiscussion,o=e.discussion,i=e.toggleFavorite,u=e.toggleingFavorite,a=e.updateOpinionContent,c=e.postingOpinion,l=e.opinionError,p=e.deletingOpinion,d=e.deletingDiscussion,h=e.error;if(h)return s.default.createElement(\"div\",{className:E.default.errorMsg},h);if(r)return s.default.createElement(\"div\",{className:E.default.loadingWrapper},\"Loading discussion ...\");var _=o._id,v=o.content,b=o.date,S=o.favorites,O=o.title,T=o.tags,C=o.opinions,I=o.user,N=I.avatarUrl,A=I.name,D=I.username,x=!1;o.user._id!==this.props.userId&&\"admin\"!==this.props.userRole||(x=!0);var P=this.userFavoritedDiscussion(this.props.userId,S);return s.default.createElement(\"div\",{className:w.default.constraintWidth},s.default.createElement(f.Helmet,null,s.default.createElement(\"title\",null,O+\" | ReForum\")),s.default.createElement(y.default,{id:_,userAvatar:N,userName:A,userGitHandler:D,discTitle:O,discDate:b,discContent:v,tags:T,favoriteCount:S.length,favoriteAction:i,userFavorited:P,toggleingFavorite:u,allowDelete:x,deletingDiscussion:d,deleteAction:this.deleteDiscussion.bind(this)}),l&&s.default.createElement(\"div\",{className:E.default.errorMsg},l),!n&&s.default.createElement(\"div\",{className:E.default.signInMsg},\"Please sign in to post a reply.\"),n&&s.default.createElement(g.default,{posting:c,onSubmit:this.handleReplySubmit.bind(this),onChange:function(t){a(t)}}),C&&C.map(function(e){return s.default.createElement(m.default,{key:e._id,opinionId:e._id,userAvatar:e.user.avatarUrl,userName:e.user.name,userGitHandler:e.user.username,opDate:e.date,opContent:e.content,userId:e.user_id,currentUserId:t.props.userId,currentUserRole:t.props.userRole,deleteAction:t.deleteOpinion.bind(t),deletingOpinion:p})}))}}]),e}(a.Component);e.default=(0,l.connect)(function(t){return{userAuthenticated:t.user.authenticated,userId:t.user._id,userRole:t.user.role,fetchingDiscussion:t.discussion.fetchingDiscussion,toggleingFavorite:t.discussion.toggleingFavorite,deletingDiscussion:t.discussion.deletingDiscussion,deletedDiscussion:t.discussion.deletedDiscussion,opinionContent:t.discussion.opinionContent,postingOpinion:t.discussion.postingOpinion,opinionError:t.discussion.opinionError,deletingOpinion:t.discussion.deletingOpinion,discussion:t.discussion.discussion,error:t.discussion.error}},function(t){return{getDiscussion:function(e){t((0,d.getDiscussion)(e))},toggleFavorite:function(e){t((0,d.toggleFavorite)(e))},updateOpinionContent:function(e){t((0,d.updateOpinionContent)(e))},postOpinion:function(e,n){t((0,d.postOpinion)(e,n))},deletePost:function(e){t((0,d.deletePost)(e))},deletedDiscussionRedirect:function(){t((0,d.deletedDiscussionRedirect)())},deleteOpinion:function(e,n){t((0,d.deleteOpinion)(e,n))}}})(O)}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.singleDiscussionReducer=void 0;var t=n(99),r={fetchingDiscussion:!0,toggleingFavorite:!1,postingOpinion:!1,opinionContent:null,opinionError:null,deletingDiscussion:!1,deletedDiscussion:!1,deletingOpinion:null,discussion:null,error:null};e.singleDiscussionReducer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,n=arguments[1];switch(n.type){case t.FETCHING_SINGLE_DISC_START:return Object.assign({},e,{fetchingDiscussion:!0});case t.FETCHING_SINGLE_DISC_END:return Object.assign({},e,{fetchingDiscussion:!1});case t.FETCHING_SINGLE_DISC_SUCCESS:return Object.assign({},e,{discussion:n.payload,fetchingDiscussion:!1,error:null});case t.FETCHING_SINGLE_DISC_FAILURE:return Object.assign({},e,{fetchingDiscussion:!1,error:\"Unable to fetch discussion. Please check out the url.\"});case t.TOGGLE_FAVORITE_START:return Object.assign({},e,{toggleingFavorite:!0});case t.TOGGLE_FAVORITE_SUCCESS:case t.TOGGLE_FAVORITE_FAILURE:return Object.assign({},e,{toggleingFavorite:!1});case t.UPDATE_OPINION_CONTENT:return Object.assign({},e,{opinionContent:n.payload});case t.POSTING_OPINION_START:return Object.assign({},e,{postingOpinion:!0,opinionError:null});case t.POSTING_OPINION_SUCCESS:return Object.assign({},e,{postingOpinion:!1,opinionContent:null,opinionError:null});case t.POSTING_OPINION_FAILURE:return Object.assign({},e,{postingOpinion:!1,opinionContent:null,opinionError:n.payload});case t.DELETE_DISC_START:return Object.assign({},e,{deletingDiscussion:!0});case t.DELETE_DISC_SUCCESS:return Object.assign({},e,{deletingDiscussion:!1,deletedDiscussion:!0});case t.DELETE_DISC_FAILURE:return Object.assign({},e,{deletingDiscussion:!1,deletedDiscussion:!1});case t.DELETE_DISC_REDIRECT:return Object.assign({},e,{deletedDiscussion:!1});case t.DELETE_OPINION_START:return Object.assign({},e,{deletingOpinion:n.payload});case t.DELETE_OPINION_SUCCESS:case t.DELETE_OPINION_FAILURE:return Object.assign({},e,{deletingOpinion:null});default:return e}}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.fetchUserProfile=void 0;var t=n(100),r=n(292);e.fetchUserProfile=function(e){return function(n,o){n({type:t.FETCH_USER_PROFILE_START}),(0,r.fetchUserProfileApi)(e).then(function(e){n(e.data.error?{type:t.FETCH_USER_PROFILE_FAILURE}:{type:t.FETCH_USER_PROFILE_SUCCESS,payload:e.data})},function(e){return n({type:t.FETCH_USER_PROFILE_FAILURE})})}}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.fetchUserProfileApi=void 0;var r=n(21),o=t(r);e.fetchUserProfileApi=function(t){return o.default.get(\"/api/user/profile/\"+t)}}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";function t(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,\"__esModule\",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(1),s=t(a),c=n(16),l=n(24),f=n(6),p=t(f),d=n(14),h=t(d),y=n(216),_=t(y),g=n(272),v=t(g),m=n(90),b=t(m),E=n(291),S=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),u(e,[{key:\"componentDidMount\",value:function(){var t=this.props.fetchUserProfile,e=this.props.params.username;t(e)}},{key:\"render\",value:function(){var t=this.props,e=t.fetchingProfile,n=t.profile,r=t.error;if(r)return s.default.createElement(\"div\",{className:_.default.errorMsg},r);var o=n.name,i=n.username,u=n.avatarUrl,a=n.github,c=n.discussions;return e?s.default.createElement(\"div\",{className:(0,p.default)(h.default.constraintWidth,_.default.loadingMsg)},\"Loading users profile ...\"):s.default.createElement(\"div\",{className:(0,p.default)(h.default.constraintWidth,_.default.container)},s.default.createElement(l.Helmet,null,s.default.createElement(\"title\",null,(o||i)+\" | ReForum\")),s.default.createElement(\"div\",{className:h.default.primaryContent},s.default.createElement(v.default,{name:o,gitHandler:i,location:a.location,avatarUrl:u}),s.default.createElement(b.default,{userProfile:!0,type:\"general\",discussions:c})))}}]),e}(a.Component);e.default=(0,c.connect)(function(t){return{fetchingProfile:t.userProfile.fetchingProfile,profile:t.userProfile.profile,error:t.userProfile.error}},function(t){return{fetchUserProfile:function(e){t((0,E.fetchUserProfile)(e))}}})(S)}).call(this)}finally{}},function(t,e,n){try{(function(){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.userProfileReducer=void 0;var t=n(100),r={fetchingProfile:!0,profile:{},error:null};e.userProfileReducer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,n=arguments[1];switch(n.type){case t.FETCH_USER_PROFILE_START:return Object.assign({},e,{fetchingProfile:!0,error:null});case t.FETCH_USER_PROFILE_SUCCESS:return Object.assign({},e,{fetchingProfile:!1,profile:n.payload,error:null});case t.FETCH_USER_PROFILE_FAILURE:return Object.assign({},e,{fetchingProfile:!1,error:\"Unable to fetch user profile. Please check out for correct username.\"});default:return e}}}).call(this)}finally{}},function(t,e,n){var r,o;!function(i){function u(t,e,n,r){return function(t,o){var i=r({statics:{getClass:function(){return t.getClass?t.getClass():t}},getInstance:function(){return t.prototype.isReactComponent?this.refs.instance:this},__outsideClickHandler:function(){},getDefaultProps:function(){return{excludeScrollbar:o&&o.excludeScrollbar}},componentDidMount:function(){if(\"undefined\"!=typeof document&&document.createElement){var t,r=this.getInstance();if(o&&\"function\"==typeof o.handleClickOutside){if(t=o.handleClickOutside(r),\"function\"!=typeof t)throw new Error(\"Component lacks a function for processing outside click events specified by the handleClickOutside config option.\")}else if(\"function\"==typeof r.handleClickOutside)t=e.Component.prototype.isPrototypeOf(r)?r.handleClickOutside.bind(r):r.handleClickOutside;else{if(\"function\"!=typeof r.props.handleClickOutside)throw new Error(\"Component lacks a handleClickOutside(event) function for processing outside click events.\");t=r.props.handleClickOutside}var i=n.findDOMNode(r);null===i&&(console.warn(\"Antipattern warning: there was no DOM node associated with the component that is being wrapped by outsideClick.\"),console.warn([\"This is typically caused by having a component that starts life with a render function that\",\"returns `null` (due to a state or props value), so that the component 'exist' in the React\",\"chain of components, but not in the DOM.\\n\\nInstead, you need to refactor your code so that the\",\"decision of whether or not to show your component is handled by the parent, in their render()\",\"function.\\n\\nIn code, rather than:\\n\\n  A{render(){return check? <.../> : null;}\\n  B{render(){<A check=... />}\\n\\nmake sure that you\",\"use:\\n\\n  A{render(){return <.../>}\\n  B{render(){return <...>{ check ? <A/> : null }<...>}}\\n\\nThat is:\",\"the parent is always responsible for deciding whether or not to render any of its children.\",\"It is not the child's responsibility to decide whether a render instruction from above should\",\"get ignored or not by returning `null`.\\n\\nWhen any component gets its render() function called,\",\"that is the signal that it should be rendering its part of the UI. It may in turn decide not to\",\"render all of *its* children, but it should never return `null` for itself. It is not responsible\",\"for that decision.\"].join(\" \")));var u=this.__outsideClickHandler=y(i,r,t,this.props.outsideClickIgnoreClass||l,this.props.excludeScrollbar,this.props.preventDefault||!1,this.props.stopPropagation||!1),a=s.length;s.push(this),c[a]=u,this.props.disableOnClickOutside||this.enableOnClickOutside()}},componentWillReceiveProps:function(t){this.props.disableOnClickOutside&&!t.disableOnClickOutside?this.enableOnClickOutside():!this.props.disableOnClickOutside&&t.disableOnClickOutside&&this.disableOnClickOutside()},componentWillUnmount:function(){this.disableOnClickOutside(),this.__outsideClickHandler=!1;var t=s.indexOf(this);t>-1&&(c[t]&&c.splice(t,1),s.splice(t,1))},enableOnClickOutside:function(){var t=this.__outsideClickHandler;if(\"undefined\"!=typeof document){var e=this.props.eventTypes||f;e.forEach||(e=[e]),e.forEach(function(e){document.addEventListener(e,t)})}},disableOnClickOutside:function(){var t=this.__outsideClickHandler;if(\"undefined\"!=typeof document){var e=this.props.eventTypes||f;e.forEach||(e=[e]),e.forEach(function(e){document.removeEventListener(e,t)})}},render:function(){var n=this.props,r={};return Object.keys(this.props).forEach(function(t){\"excludeScrollbar\"!==t&&(r[t]=n[t])}),t.prototype.isReactComponent&&(r.ref=\"instance\"),r.disableOnClickOutside=this.disableOnClickOutside,r.enableOnClickOutside=this.enableOnClickOutside,e.createElement(t,r)}});return function(t,e){var n=t.displayName||t.name||\"Component\";e.displayName=\"OnClickOutside(\"+n+\")\"}(t,i),i}}function a(i,u){r=[n(1),n(20),n(124)],o=function(t,e,n){return n||(n=t.createClass),u(i,t,e,n)}.apply(e,r),!(void 0!==o&&(t.exports=o))}var s=[],c=[],l=\"ignore-react-onclickoutside\",f=[\"mousedown\",\"touchstart\"],p=function(t,e,n){return t===e||(t.correspondingElement?t.correspondingElement.classList.contains(n):t.classList.contains(n))},d=function(t,e,n){if(t===e)return!0;for(;t.parentNode;){if(p(t,e,n))return!0;t=t.parentNode}return t},h=function(t){return document.documentElement.clientWidth<=t.clientX||document.documentElement.clientHeight<=t.clientY},y=function(t,e,n,r,o,i,u){return function(e){i&&e.preventDefault(),u&&e.stopPropagation();var a=e.target;o&&h(e)||d(a,t,r)!==document||n(e)}};a(i,u)}(this)},function(t,e,n){(function(t){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function u(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(){y||(y=!0,(0,h.default)(\"<Provider> does not support changing `store` on the fly. It is most likely that you see this error because you updated to Redux 2.x and React Redux 2.x which no longer hot reload reducers automatically. See https://github.com/reactjs/react-redux/releases/tag/v2.0.0 for the migration instructions.\"))}function s(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"store\",r=arguments[1],s=r||n+\"Subscription\",l=function(t){function e(r,u){o(this,e);var a=i(this,t.call(this,r,u));return a[n]=r.store,a}return u(e,t),e.prototype.getChildContext=function(){var t;return t={},t[n]=this[n],t[s]=null,t},e.prototype.render=function(){return c.Children.only(this.props.children)},e}(c.Component);return\"production\"!==t.env.NODE_ENV&&(l.prototype.componentWillReceiveProps=function(t){this[n]!==t.store&&a()}),l.propTypes={store:p.storeShape.isRequired,children:f.default.element.isRequired},l.childContextTypes=(e={},e[n]=p.storeShape.isRequired,e[s]=p.subscriptionShape,e),l.displayName=\"Provider\",l}e.__esModule=!0,e.createProvider=s;var c=n(1),l=n(52),f=r(l),p=n(103),d=n(55),h=r(d),y=!1;e.default=s()}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){var n={};for(var r in t)e.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function i(t,e,n){for(var r=e.length-1;r>=0;r--){var o=e[r](t);if(o)return o}return function(e,r){throw new Error(\"Invalid value of type \"+typeof t+\" for \"+n+\" argument when connecting component \"+r.wrappedComponentName+\".\")}}function u(t,e){return t===e}function a(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.connectHOC,n=void 0===e?l.default:e,r=t.mapStateToPropsFactories,a=void 0===r?_.default:r,c=t.mapDispatchToPropsFactories,f=void 0===c?h.default:c,d=t.mergePropsFactories,y=void 0===d?v.default:d,g=t.selectorFactory,m=void 0===g?b.default:g;return function(t,e,r){var c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},l=c.pure,d=void 0===l||l,h=c.areStatesEqual,_=void 0===h?u:h,g=c.areOwnPropsEqual,v=void 0===g?p.default:g,b=c.areStatePropsEqual,E=void 0===b?p.default:b,S=c.areMergedPropsEqual,w=void 0===S?p.default:S,O=o(c,[\"pure\",\"areStatesEqual\",\"areOwnPropsEqual\",\"areStatePropsEqual\",\"areMergedPropsEqual\"]),T=i(t,a,\"mapStateToProps\"),C=i(e,f,\"mapDispatchToProps\"),I=i(r,y,\"mergeProps\");return n(m,s({methodName:\"connect\",getDisplayName:function(t){return\"Connect(\"+t+\")\"},shouldHandleStateChanges:Boolean(t),initMapStateToProps:T,initMapDispatchToProps:C,initMergeProps:I,pure:d,areStatesEqual:_,areOwnPropsEqual:v,areStatePropsEqual:E,areMergedPropsEqual:w},O))}}e.__esModule=!0;var s=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};e.createConnect=a;var c=n(101),l=r(c),f=n(304),p=r(f),d=n(298),h=r(d),y=n(299),_=r(y),g=n(300),v=r(g),m=n(301),b=r(m);e.default=a()},function(t,e,n){\"use strict\";function r(t){return\"function\"==typeof t?(0,a.wrapMapToPropsFunc)(t,\"mapDispatchToProps\"):void 0}function o(t){return t?void 0:(0,a.wrapMapToPropsConstant)(function(t){return{dispatch:t}})}function i(t){return t&&\"object\"==typeof t?(0,a.wrapMapToPropsConstant)(function(e){return(0,u.bindActionCreators)(t,e)}):void 0}e.__esModule=!0,e.whenMapDispatchToPropsIsFunction=r,e.whenMapDispatchToPropsIsMissing=o,e.whenMapDispatchToPropsIsObject=i;var u=n(105),a=n(102);e.default=[r,o,i]},function(t,e,n){\"use strict\";function r(t){return\"function\"==typeof t?(0,i.wrapMapToPropsFunc)(t,\"mapStateToProps\"):void 0}function o(t){return t?void 0:(0,i.wrapMapToPropsConstant)(function(){return{}})}e.__esModule=!0,e.whenMapStateToPropsIsFunction=r,e.whenMapStateToPropsIsMissing=o;var i=n(102);e.default=[r,o]},function(t,e,n){(function(t){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return s({},n,t,e)}function i(e){return function(n,r){var o=r.displayName,i=r.pure,u=r.areMergedPropsEqual,a=!1,s=void 0;return function(n,r,c){var f=e(n,r,c);return a?i&&u(f,s)||(s=f):(a=!0,s=f,\"production\"!==t.env.NODE_ENV&&(0,l.default)(s,o,\"mergeProps\")),s}}}function u(t){return\"function\"==typeof t?i(t):void 0}function a(t){return t?void 0:function(){return o}}e.__esModule=!0;var s=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};e.defaultMergeProps=o,e.wrapMergePropsFunc=i,e.whenMergePropsIsFunction=u,e.whenMergePropsIsOmitted=a;var c=n(104),l=r(c);e.default=[u,a]}).call(e,n(2))},function(t,e,n){(function(t){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){var n={};for(var r in t)e.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function i(t,e,n,r){return function(o,i){return n(t(o,i),e(r,i),i)}}function u(t,e,n,r,o){function i(o,i){return h=o,y=i,_=t(h,y),g=e(r,y),v=n(_,g,y),d=!0,v}function u(){return _=t(h,y),e.dependsOnOwnProps&&(g=e(r,y)),v=n(_,g,y)}function a(){return t.dependsOnOwnProps&&(_=t(h,y)),e.dependsOnOwnProps&&(g=e(r,y)),v=n(_,g,y)}function s(){var e=t(h,y),r=!p(e,_);return _=e,r&&(v=n(_,g,y)),v}function c(t,e){var n=!f(e,y),r=!l(t,h);return h=t,y=e,n&&r?u():n?a():r?s():v}var l=o.areStatesEqual,f=o.areOwnPropsEqual,p=o.areStatePropsEqual,d=!1,h=void 0,y=void 0,_=void 0,g=void 0,v=void 0;return function(t,e){return d?c(t,e):i(t,e)}}function a(e,n){var r=n.initMapStateToProps,a=n.initMapDispatchToProps,s=n.initMergeProps,l=o(n,[\"initMapStateToProps\",\"initMapDispatchToProps\",\"initMergeProps\"]),f=r(e,l),p=a(e,l),d=s(e,l);\"production\"!==t.env.NODE_ENV&&(0,c.default)(f,p,d,l.displayName);var h=l.pure?u:i;return h(f,p,d,e,l)}e.__esModule=!0,e.impureFinalPropsSelectorFactory=i,e.pureFinalPropsSelectorFactory=u,e.default=a;var s=n(302),c=r(s)}).call(e,n(2))},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){if(!t)throw new Error(\"Unexpected value for \"+e+\" in \"+n+\".\");\"mapStateToProps\"!==e&&\"mapDispatchToProps\"!==e||t.hasOwnProperty(\"dependsOnOwnProps\")||(0,a.default)(\"The selector for \"+e+\" of \"+n+\" did not specify a value for dependsOnOwnProps.\")}function i(t,e,n,r){o(t,\"mapStateToProps\",r),o(e,\"mapDispatchToProps\",r),o(n,\"mergeProps\",r)}e.__esModule=!0,e.default=i;var u=n(55),a=r(u)},function(t,e){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function r(){var t=[],e=[];return{clear:function(){e=o,t=o},notify:function(){for(var n=t=e,r=0;r<n.length;r++)n[r]()},subscribe:function(n){var r=!0;return e===t&&(e=t.slice()),e.push(n),function(){r&&t!==o&&(r=!1,e===t&&(e=t.slice()),e.splice(e.indexOf(n),1))}}}}e.__esModule=!0;var o=null,i={notify:function(){}},u=function(){function t(e,r,o){n(this,t),this.store=e,this.parentSub=r,this.onStateChange=o,this.unsubscribe=null,this.listeners=i}return t.prototype.addNestedSub=function(t){return this.trySubscribe(),this.listeners.subscribe(t)},t.prototype.notifyNestedSubs=function(){this.listeners.notify()},t.prototype.isSubscribed=function(){return Boolean(this.unsubscribe)},t.prototype.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.onStateChange):this.store.subscribe(this.onStateChange),this.listeners=r())},t.prototype.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=i)},t}();e.default=u},function(t,e){\"use strict\";function n(t,e){return t===e?0!==t||0!==e||1/t===1/e:t!==t&&e!==e}function r(t,e){if(n(t,e))return!0;if(\"object\"!=typeof t||null===t||\"object\"!=typeof e||null===e)return!1;var r=Object.keys(t),i=Object.keys(e);if(r.length!==i.length)return!1;for(var u=0;u<r.length;u++)if(!o.call(e,r[u])||!n(t[r[u]],e[r[u]]))return!1;return!0}e.__esModule=!0,e.default=r;var o=Object.prototype.hasOwnProperty},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function u(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=n(1),s=r(a),c=n(192),l=r(c),f=n(308),p=r(f);t.exports=function(t,e,n){function r(t){return t.displayName||t.name||\"Component\"}if(\"function\"!=typeof t)throw new Error(\"Expected reducePropsToState to be a function.\");if(\"function\"!=typeof e)throw new Error(\"Expected handleStateChangeOnClient to be a function.\");if(\"undefined\"!=typeof n&&\"function\"!=typeof n)throw new Error(\"Expected mapStateOnServer to either be undefined or a function.\");\nreturn function(c){function f(){h=t(d.map(function(t){return t.props})),y.canUseDOM?e(h):n&&(h=n(h))}if(\"function\"!=typeof c)throw new Error(\"Expected WrappedComponent to be a React component.\");var d=[],h=void 0,y=function(t){function e(){return o(this,e),i(this,t.apply(this,arguments))}return u(e,t),e.peek=function(){return h},e.rewind=function(){if(e.canUseDOM)throw new Error(\"You may only call rewind() on the server. Call peek() to read the current state.\");var t=h;return h=void 0,d=[],t},e.prototype.shouldComponentUpdate=function(t){return!(0,p.default)(t,this.props)},e.prototype.componentWillMount=function(){d.push(this),f()},e.prototype.componentDidUpdate=function(){f()},e.prototype.componentWillUnmount=function(){var t=d.indexOf(this);d.splice(t,1),f()},e.prototype.render=function(){return s.default.createElement(c,this.props)},e}(a.Component);return y.displayName=\"SideEffect(\"+r(c)+\")\",y.canUseDOM=l.default.canUseDOM,y}}},function(t,e){\"use strict\";function n(t){return function(e){var n=e.dispatch,r=e.getState;return function(e){return function(o){return\"function\"==typeof o?o(n,r,t):e(o)}}}}e.__esModule=!0;var r=n();r.withExtraArgument=n,e.default=r},function(t,e,n){(function(t,e){!function(t,n){\"use strict\";function r(t){\"function\"!=typeof t&&(t=new Function(\"\"+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var r={callback:t,args:e};return y[h]=r,d(h),h++}function o(t){delete y[t]}function i(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}function u(t){if(_)setTimeout(u,0,t);else{var e=y[t];if(e){_=!0;try{i(e)}finally{o(t),_=!1}}}}function a(){d=function(t){e.nextTick(function(){u(t)})}}function s(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage(\"\",\"*\"),t.onmessage=n,e}}function c(){var e=\"setImmediate$\"+Math.random()+\"$\",n=function(n){n.source===t&&\"string\"==typeof n.data&&0===n.data.indexOf(e)&&u(+n.data.slice(e.length))};t.addEventListener?t.addEventListener(\"message\",n,!1):t.attachEvent(\"onmessage\",n),d=function(n){t.postMessage(e+n,\"*\")}}function l(){var t=new MessageChannel;t.port1.onmessage=function(t){var e=t.data;u(e)},d=function(e){t.port2.postMessage(e)}}function f(){var t=g.documentElement;d=function(e){var n=g.createElement(\"script\");n.onreadystatechange=function(){u(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}function p(){d=function(t){setTimeout(u,0,t)}}if(!t.setImmediate){var d,h=1,y={},_=!1,g=t.document,v=Object.getPrototypeOf&&Object.getPrototypeOf(t);v=v&&v.setTimeout?v:t,\"[object process]\"==={}.toString.call(t.process)?a():s()?c():t.MessageChannel?l():g&&\"onreadystatechange\"in g.createElement(\"script\")?f():p(),v.setImmediate=r,v.clearImmediate=o}}(\"undefined\"==typeof self?\"undefined\"==typeof t?this:t:self)}).call(e,function(){return this}(),n(2))},function(t,e){t.exports=function(t,e,n,r){var o=n?n.call(r,t,e):void 0;if(void 0!==o)return!!o;if(t===e)return!0;if(\"object\"!=typeof t||!t||\"object\"!=typeof e||!e)return!1;var i=Object.keys(t),u=Object.keys(e);if(i.length!==u.length)return!1;for(var a=Object.prototype.hasOwnProperty.bind(e),s=0;s<i.length;s++){var c=i[s];if(!a(c))return!1;var l=t[c],f=e[c];if(o=n?n.call(r,l,f,c):void 0,o===!1||void 0===o&&l!==f)return!1}return!0}},function(t,e,n){var r;!function(o,i){\"use strict\";var u=\"0.7.12\",a=\"\",s=\"?\",c=\"function\",l=\"undefined\",f=\"object\",p=\"string\",d=\"major\",h=\"model\",y=\"name\",_=\"type\",g=\"vendor\",v=\"version\",m=\"architecture\",b=\"console\",E=\"mobile\",S=\"tablet\",w=\"smarttv\",O=\"wearable\",T=\"embedded\",C={extend:function(t,e){var n={};for(var r in t)e[r]&&e[r].length%2===0?n[r]=e[r].concat(t[r]):n[r]=t[r];return n},has:function(t,e){return\"string\"==typeof t&&e.toLowerCase().indexOf(t.toLowerCase())!==-1},lowerize:function(t){return t.toLowerCase()},major:function(t){return typeof t===p?t.replace(/[^\\d\\.]/g,\"\").split(\".\")[0]:i},trim:function(t){return t.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\"\")}},I={rgx:function(){for(var t,e,n,r,o,u,a,s=0,p=arguments;s<p.length&&!u;){var d=p[s],h=p[s+1];if(typeof t===l){t={};for(r in h)h.hasOwnProperty(r)&&(o=h[r],typeof o===f?t[o[0]]=i:t[o]=i)}for(e=n=0;e<d.length&&!u;)if(u=d[e++].exec(this.getUA()))for(r=0;r<h.length;r++)a=u[++n],o=h[r],typeof o===f&&o.length>0?2==o.length?typeof o[1]==c?t[o[0]]=o[1].call(this,a):t[o[0]]=o[1]:3==o.length?typeof o[1]!==c||o[1].exec&&o[1].test?t[o[0]]=a?a.replace(o[1],o[2]):i:t[o[0]]=a?o[1].call(this,a,o[2]):i:4==o.length&&(t[o[0]]=a?o[3].call(this,a.replace(o[1],o[2])):i):t[o]=a?a:i;s+=2}return t},str:function(t,e){for(var n in e)if(typeof e[n]===f&&e[n].length>0){for(var r=0;r<e[n].length;r++)if(C.has(e[n][r],t))return n===s?i:n}else if(C.has(e[n],t))return n===s?i:n;return t}},N={browser:{oldsafari:{version:{\"1.0\":\"/8\",1.2:\"/1\",1.3:\"/3\",\"2.0\":\"/412\",\"2.0.2\":\"/416\",\"2.0.3\":\"/417\",\"2.0.4\":\"/419\",\"?\":\"/\"}}},device:{amazon:{model:{\"Fire Phone\":[\"SD\",\"KF\"]}},sprint:{model:{\"Evo Shift 4G\":\"7373KT\"},vendor:{HTC:\"APA\",Sprint:\"Sprint\"}}},os:{windows:{version:{ME:\"4.90\",\"NT 3.11\":\"NT3.51\",\"NT 4.0\":\"NT4.0\",2000:\"NT 5.0\",XP:[\"NT 5.1\",\"NT 5.2\"],Vista:\"NT 6.0\",7:\"NT 6.1\",8:\"NT 6.2\",8.1:\"NT 6.3\",10:[\"NT 6.4\",\"NT 10.0\"],RT:\"ARM\"}}}},A={browser:[[/(opera\\smini)\\/([\\w\\.-]+)/i,/(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i,/(opera).+version\\/([\\w\\.]+)/i,/(opera)[\\/\\s]+([\\w\\.]+)/i],[y,v],[/(opios)[\\/\\s]+([\\w\\.]+)/i],[[y,\"Opera Mini\"],v],[/\\s(opr)\\/([\\w\\.]+)/i],[[y,\"Opera\"],v],[/(kindle)\\/([\\w\\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]+)*/i,/(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,/(?:ms|\\()(ie)\\s([\\w\\.]+)/i,/(rekonq)\\/([\\w\\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs)\\/([\\w\\.-]+)/i],[y,v],[/(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i],[[y,\"IE\"],v],[/(edge)\\/((\\d+)?[\\w\\.]+)/i],[y,v],[/(yabrowser)\\/([\\w\\.]+)/i],[[y,\"Yandex\"],v],[/(comodo_dragon)\\/([\\w\\.]+)/i],[[y,/_/g,\" \"],v],[/(micromessenger)\\/([\\w\\.]+)/i],[[y,\"WeChat\"],v],[/xiaomi\\/miuibrowser\\/([\\w\\.]+)/i],[v,[y,\"MIUI Browser\"]],[/\\swv\\).+(chrome)\\/([\\w\\.]+)/i],[[y,/(.+)/,\"$1 WebView\"],v],[/android.+samsungbrowser\\/([\\w\\.]+)/i,/android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i],[v,[y,\"Android Browser\"]],[/(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i,/(qqbrowser)[\\/\\s]?([\\w\\.]+)/i],[y,v],[/(uc\\s?browser)[\\/\\s]?([\\w\\.]+)/i,/ucweb.+(ucbrowser)[\\/\\s]?([\\w\\.]+)/i,/juc.+(ucweb)[\\/\\s]?([\\w\\.]+)/i],[[y,\"UCBrowser\"],v],[/(dolfin)\\/([\\w\\.]+)/i],[[y,\"Dolphin\"],v],[/((?:android.+)crmo|crios)\\/([\\w\\.]+)/i],[[y,\"Chrome\"],v],[/;fbav\\/([\\w\\.]+);/i],[v,[y,\"Facebook\"]],[/fxios\\/([\\w\\.-]+)/i],[v,[y,\"Firefox\"]],[/version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i],[v,[y,\"Mobile Safari\"]],[/version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i],[v,y],[/webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i],[y,[v,I.str,N.browser.oldsafari.version]],[/(konqueror)\\/([\\w\\.]+)/i,/(webkit|khtml)\\/([\\w\\.]+)/i],[y,v],[/(navigator|netscape)\\/([\\w\\.-]+)/i],[[y,\"Netscape\"],v],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\\/([\\w\\.-]+)/i,/(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,/(links)\\s\\(([\\w\\.]+)/i,/(gobrowser)\\/?([\\w\\.]+)*/i,/(ice\\s?browser)\\/v?([\\w\\._]+)/i,/(mosaic)[\\/\\s]([\\w\\.]+)/i],[y,v]],cpu:[[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i],[[m,\"amd64\"]],[/(ia32(?=;))/i],[[m,C.lowerize]],[/((?:i[346]|x)86)[;\\)]/i],[[m,\"ia32\"]],[/windows\\s(ce|mobile);\\sppc;/i],[[m,\"arm\"]],[/((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i],[[m,/ower/,\"\",C.lowerize]],[/(sun4\\w)[;\\)]/i],[[m,\"sparc\"]],[/((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+;))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i],[[m,C.lowerize]]],device:[[/\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i],[h,g,[_,S]],[/applecoremedia\\/[\\w\\.]+ \\((ipad)/],[h,[g,\"Apple\"],[_,S]],[/(apple\\s{0,1}tv)/i],[[h,\"Apple TV\"],[g,\"Apple\"]],[/(archos)\\s(gamepad2?)/i,/(hp).+(touchpad)/i,/(hp).+(tablet)/i,/(kindle)\\/([\\w\\.]+)/i,/\\s(nook)[\\w\\s]+build\\/(\\w+)/i,/(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i],[g,h,[_,S]],[/(kf[A-z]+)\\sbuild\\/[\\w\\.]+.*silk\\//i],[h,[g,\"Amazon\"],[_,S]],[/(sd|kf)[0349hijorstuw]+\\sbuild\\/[\\w\\.]+.*silk\\//i],[[h,I.str,N.device.amazon.model],[g,\"Amazon\"],[_,E]],[/\\((ip[honed|\\s\\w*]+);.+(apple)/i],[h,g,[_,E]],[/\\((ip[honed|\\s\\w*]+);/i],[h,[g,\"Apple\"],[_,E]],[/(blackberry)[\\s-]?(\\w+)/i,/(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|huawei|meizu|motorola|polytron)[\\s_-]?([\\w-]+)*/i,/(hp)\\s([\\w\\s]+\\w)/i,/(asus)-?(\\w+)/i],[g,h,[_,E]],[/\\(bb10;\\s(\\w+)/i],[h,[g,\"BlackBerry\"],[_,E]],[/android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i],[h,[g,\"Asus\"],[_,S]],[/(sony)\\s(tablet\\s[ps])\\sbuild\\//i,/(sony)?(?:sgp.+)\\sbuild\\//i],[[g,\"Sony\"],[h,\"Xperia Tablet\"],[_,S]],[/(?:sony)?(?:(?:(?:c|d)\\d{4})|(?:so[-l].+))\\sbuild\\//i],[[g,\"Sony\"],[h,\"Xperia Phone\"],[_,E]],[/\\s(ouya)\\s/i,/(nintendo)\\s([wids3u]+)/i],[g,h,[_,b]],[/android.+;\\s(shield)\\sbuild/i],[h,[g,\"Nvidia\"],[_,b]],[/(playstation\\s[34portablevi]+)/i],[h,[g,\"Sony\"],[_,b]],[/(sprint\\s(\\w+))/i],[[g,I.str,N.device.sprint.vendor],[h,I.str,N.device.sprint.model],[_,E]],[/(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i],[g,h,[_,S]],[/(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i,/(zte)-(\\w+)*/i,/(alcatel|geeksphone|huawei|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]+)*/i],[g,[h,/_/g,\" \"],[_,E]],[/(nexus\\s9)/i],[h,[g,\"HTC\"],[_,S]],[/(nexus\\s6p)/i],[h,[g,\"Huawei\"],[_,E]],[/(microsoft);\\s(lumia[\\s\\w]+)/i],[g,h,[_,E]],[/[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i],[h,[g,\"Microsoft\"],[_,b]],[/(kin\\.[onetw]{3})/i],[[h,/\\./g,\" \"],[g,\"Microsoft\"],[_,E]],[/\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?(:?\\s4g)?)[\\w\\s]+build\\//i,/mot[\\s-]?(\\w+)*/i,/(XT\\d{3,4}) build\\//i,/(nexus\\s6)/i],[h,[g,\"Motorola\"],[_,E]],[/android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i],[h,[g,\"Motorola\"],[_,S]],[/hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i],[[g,C.trim],[h,C.trim],[_,w]],[/hbbtv.+maple;(\\d+)/i],[[h,/^/,\"SmartTV\"],[g,\"Samsung\"],[_,w]],[/\\(dtv[\\);].+(aquos)/i],[h,[g,\"Sharp\"],[_,w]],[/android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,/((SM-T\\w+))/i],[[g,\"Samsung\"],h,[_,S]],[/smart-tv.+(samsung)/i],[g,[_,w],h],[/((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,/(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)*/i,/sec-((sgh\\w+))/i],[[g,\"Samsung\"],h,[_,E]],[/sie-(\\w+)*/i],[h,[g,\"Siemens\"],[_,E]],[/(maemo|nokia).*(n900|lumia\\s\\d+)/i,/(nokia)[\\s_-]?([\\w-]+)*/i],[[g,\"Nokia\"],h,[_,E]],[/android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i],[h,[g,\"Acer\"],[_,S]],[/android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i],[[g,\"LG\"],h,[_,S]],[/(lg) netcast\\.tv/i],[g,h,[_,w]],[/(nexus\\s[45])/i,/lg[e;\\s\\/-]+(\\w+)*/i],[h,[g,\"LG\"],[_,E]],[/android.+(ideatab[a-z0-9\\-\\s]+)/i],[h,[g,\"Lenovo\"],[_,S]],[/linux;.+((jolla));/i],[g,h,[_,E]],[/((pebble))app\\/[\\d\\.]+\\s/i],[g,h,[_,O]],[/android.+;\\s(glass)\\s\\d/i],[h,[g,\"Google\"],[_,O]],[/android.+(\\w+)\\s+build\\/hm\\1/i,/android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i,/android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d\\w)?)\\s+build/i],[[h,/_/g,\" \"],[g,\"Xiaomi\"],[_,E]],[/android.+a000(1)\\s+build/i],[h,[g,\"OnePlus\"],[_,E]],[/\\s(tablet)[;\\/]/i,/\\s(mobile)(?:[;\\/]|\\ssafari)/i],[[_,C.lowerize],g,h]],engine:[[/windows.+\\sedge\\/([\\w\\.]+)/i],[v,[y,\"EdgeHTML\"]],[/(presto)\\/([\\w\\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i,/(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i,/(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i],[y,v],[/rv\\:([\\w\\.]+).*(gecko)/i],[v,y]],os:[[/microsoft\\s(windows)\\s(vista|xp)/i],[y,v],[/(windows)\\snt\\s6\\.2;\\s(arm)/i,/(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s]+\\w)*/i,/(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i],[y,[v,I.str,N.os.windows.version]],[/(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i],[[y,\"Windows\"],[v,I.str,N.os.windows.version]],[/\\((bb)(10);/i],[[y,\"BlackBerry\"],v],[/(blackberry)\\w*\\/?([\\w\\.]+)*/i,/(tizen)[\\/\\s]([\\w\\.]+)/i,/(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]+)*/i,/linux;.+(sailfish);/i],[y,v],[/(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]+)*/i],[[y,\"Symbian\"],v],[/\\((series40);/i],[y],[/mozilla.+\\(mobile;.+gecko.+firefox/i],[[y,\"Firefox OS\"],v],[/(nintendo|playstation)\\s([wids34portablevu]+)/i,/(mint)[\\/\\s\\(]?(\\w+)*/i,/(mageia|vectorlinux)[;\\s]/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]+)*/i,/(hurd|linux)\\s?([\\w\\.]+)*/i,/(gnu)\\s?([\\w\\.]+)*/i],[y,v],[/(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i],[[y,\"Chromium OS\"],v],[/(sunos)\\s?([\\w\\.]+\\d)*/i],[[y,\"Solaris\"],v],[/\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]+)*/i],[y,v],[/(haiku)\\s(\\w+)/i],[y,v],[/(ip[honead]+)(?:.*os\\s([\\w]+)*\\slike\\smac|;\\sopera)/i],[[y,\"iOS\"],[v,/_/g,\".\"]],[/(mac\\sos\\sx)\\s?([\\w\\s\\.]+\\w)*/i,/(macintosh|mac(?=_powerpc)\\s)/i],[[y,\"Mac OS\"],[v,/_/g,\".\"]],[/((?:open)?solaris)[\\/\\s-]?([\\w\\.]+)*/i,/(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.]*)*/i,/(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms)/i,/(unix)\\s?([\\w\\.]+)*/i],[y,v]]},D=function(t,e){if(!(this instanceof D))return new D(t,e).getResult();var n=t||(o&&o.navigator&&o.navigator.userAgent?o.navigator.userAgent:a),r=e?C.extend(A,e):A;return this.getBrowser=function(){var t=I.rgx.apply(this,r.browser);return t.major=C.major(t.version),t},this.getCPU=function(){return I.rgx.apply(this,r.cpu)},this.getDevice=function(){return I.rgx.apply(this,r.device)},this.getEngine=function(){return I.rgx.apply(this,r.engine)},this.getOS=function(){return I.rgx.apply(this,r.os)},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return n},this.setUA=function(t){return n=t,this},this};D.VERSION=u,D.BROWSER={NAME:y,MAJOR:d,VERSION:v},D.CPU={ARCHITECTURE:m},D.DEVICE={MODEL:h,VENDOR:g,TYPE:_,CONSOLE:b,MOBILE:E,SMARTTV:w,TABLET:S,WEARABLE:O,EMBEDDED:T},D.ENGINE={NAME:y,VERSION:v},D.OS={NAME:y,VERSION:v},typeof e!==l?(typeof t!==l&&t.exports&&(e=t.exports=D),e.UAParser=D):\"function\"===c&&n(310)?(r=function(){return D}.call(e,n,e,t),!(r!==i&&(t.exports=r))):o.UAParser=D;var x=o.jQuery||o.Zepto;if(typeof x!==l){var P=new D;x.ua=P.getResult(),x.ua.get=function(){return P.getUA()},x.ua.set=function(t){P.setUA(t);var e=P.getResult();for(var n in e)x.ua[n]=e[n]}}}(\"object\"==typeof window?window:this)},function(t,e){(function(e){t.exports=e}).call(e,{})},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}]);"
  },
  {
    "path": "public/build/style.css",
    "content": ".styles__loadingWrapper___3oy4O{height:100vh;width:100vw;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}*{box-sizing:border-box}body{font-size:14px;line-height:22px;font-family:Lato,helvetica,arial,sans-serif}.appLayout__constraintWidth___em4FP{margin:0 auto;min-width:320px;max-width:1100px}@media (min-width: 1100px){.appLayout__constraintWidth___em4FP{padding:0}}@media (min-width: 769px) and (max-width: 1099px){.appLayout__constraintWidth___em4FP{padding:0 15px}}.appLayout__primaryContent___9dnWU{-webkit-box-flex:1;-ms-flex:1;flex:1}.appLayout__secondaryContent___1AiAM{width:260px}@media (min-width: 769px) and (max-width: 1099px){.appLayout__secondaryContent___1AiAM{display:none}}@media (max-width: 768px){.appLayout__secondaryContent___1AiAM{display:none}}.appLayout__showOnMediumBP___2u4Og{display:none}@media (min-width: 769px) and (max-width: 1099px){.appLayout__showOnMediumBP___2u4Og{display:inherit}}@media (max-width: 768px){.appLayout__showOnMediumBP___2u4Og{display:inherit}}.styles__headerTop___CXJuh{height:50px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media (max-width: 768px){.styles__headerTop___CXJuh{padding:0 10px}}.styles__container___2G0s1{cursor:pointer;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap}.styles__userAvatar___2x2U9{width:40px;height:40px;border-radius:50px}.styles__title___3YZUE{margin-left:15px;font-size:14px;font-weight:700}.styles__signInLink___3ZKxV{color:#000;text-decoration:none}.styles__signInBtn___1BFGn{padding-left:0;padding-right:0;height:40px}.styles__signInBtn___1BFGn,.styles__subMenu___1JknN{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.styles__subMenu___1JknN{z-index:1;padding:10px 0;position:absolute;top:42px;right:0;width:240px;background-color:#fff;border:1px solid #e8e8e8;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}@media (max-width: 768px){.styles__subMenu___1JknN{position:fixed;top:0;left:0;height:100%;width:100%;background-color:hsla(0,0%,100%,.8);border:none}}.styles__subMenuItem___1KmrY{width:100%;color:#999;text-decoration:none;text-align:center;line-height:32px}.styles__subMenuItem___1KmrY:hover{color:#000}@media (max-width: 768px){.styles__subMenuItem___1KmrY{color:#000;line-height:42px}}.styles__subMenuClose____N_WK{position:absolute;top:10px;right:10px}@media (min-width: 769px) and (max-width: 1099px){.styles__subMenuClose____N_WK{display:none}}@media (min-width: 1100px){.styles__subMenuClose____N_WK{display:none}}.styles__gitLoginBtn___3NFM7{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:15px 0}.styles__subMenuOcto___LP6hs{font-size:24px;margin-right:15px}button{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none;cursor:pointer}.styles__buttonDefaults___3oGQ3{padding:10px 20px;text-transform:uppercase;font-weight:700;font-size:13px;letter-spacing:.5px}.styles__default___2g5MD{color:#999;transition:color .3s}.styles__default___2g5MD:hover{color:#000}.styles__outline___1lCxC{color:#999;border:1px solid #e8e8e8;transition:color .3s,border .3s}.styles__outline___1lCxC:hover{color:#000;border:1px solid #999}.styles__fullWidth___2am33{width:100%}.styles__noUppercase___1oklF{text-transform:none}.styles__alwaysActive___xpIKs{color:#000;border-color:#000}.styles__logoContainer___cfrEN{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.styles__logo___NxPQF{width:40px;height:40px}.styles__logoTitle___x3mHL{margin-left:10px;font-size:20px;font-weight:700}.styles__navigationBar___KeAy9{border-top:1px solid #e8e8e8;border-bottom:1px solid #e8e8e8;list-style-type:none;display:-webkit-box;display:-ms-flexbox;display:flex;margin:0;padding:0}@media (max-width: 768px){.styles__navigationBar___KeAy9{padding:0 10px}}.styles__links___1xyDG{display:block;padding:0 15px;height:38px;line-height:38px;text-decoration:none;font-size:14px;color:#999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color .3s}.styles__linkActive___2Y2ja,.styles__links___1xyDG:hover{color:#000}.styles__linkActive___2Y2ja{background-color:#f9f9f9}.styles__contentArea___WZYS4{margin-top:40px;margin-bottom:40px;text-align:center}.styles__headerTop___3bbXK{height:50px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media (max-width: 768px){.styles__headerTop___3bbXK{padding:0 10px}}.styles__container___hbucR{margin-top:20px;position:relative}.styles__countsContainer___2lFrb{margin-top:40px;margin-bottom:40px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}@media (max-width: 768px){.styles__countsContainer___2lFrb{-ms-flex-wrap:wrap;flex-wrap:wrap}}.styles__loadingMsg___eZLyT{margin-top:-30px;position:absolute;top:0;left:0;width:100%;text-align:center}.styles__errorMsg___26G-n{font-weight:700;padding:10px 0;color:#e74c3c;font-size:12px;line-height:14px;text-align:center}.styles__container___9e-CF{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 10px 10px;padding:20px 10px;max-width:200px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid #e8e8e8}.styles__count___1Hz84{font-size:40px;font-weight:lighter}.styles__label___wruYF{margin-left:20px}.styles__container___27hQe{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border:1px solid #e8e8e8}.styles__title___i6J36{padding:10px;border-bottom:1px solid #e8e8e8}.styles__forumsContainer___25k9j{position:relative}.styles__forumsContainer___25k9j .styles__forum___3irCC{padding:0 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #e8e8e8}.styles__forumsContainer___25k9j .styles__forum___3irCC .styles__forumTitle___2uLm8{font-weight:700}.styles__forumsContainer___25k9j .styles__forum___3irCC .styles__forumSlug___UKlk6{color:#999;margin-left:10px}.styles__createForumContainer___23xVV{position:relative}.styles__createForumContainer___23xVV .styles__createTitle___3QiXx{border-bottom:none;padding:10px 10px 0}.styles__createForumContainer___23xVV .styles__createForum___3sXG5{padding:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.styles__createForumContainer___23xVV .styles__createForum___3sXG5 .styles__createInputContainer___3iDOy{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:20px}.styles__createForumContainer___23xVV .styles__createForum___3sXG5 .styles__createInputContainer___3iDOy:first-child{margin-left:0}.styles__createForumContainer___23xVV .styles__createForum___3sXG5 .styles__createInputContainer___3iDOy .styles__inputLabel___FvpWO{margin-right:10px}.styles__createForumContainer___23xVV .styles__createForum___3sXG5 .styles__createInputContainer___3iDOy .styles__createInput___3-KLM{outline:none;padding:5px 10px}.styles__errorMsg___33m3k{font-weight:700;padding:5px 10px 10px;color:#e74c3c;font-size:12px;line-height:14px}.styles__loadingMsg___2D258{position:absolute;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.9);border-bottom:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.styles__container___2Zc9g{margin-top:20px;border:1px solid #e8e8e8}.styles__container___2Zc9g:first-child{margin-top:0}.styles__header___2QRy3{border-bottom:1px solid #e8e8e8;height:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background-color:#f9f9f9}.styles__title___1C1s4{padding-left:10px;font-size:13px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}.styles__sortList___34ysa .styles__sort___x6iwf{color:#999;display:inline-block;height:30px;line-height:30px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:0 10px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.styles__sortList___34ysa .styles__sort___x6iwf.styles__sortActive___1jxqE{color:#000}.styles__posts___2dUQ8{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.styles__loading___W47Qm{font-size:12px;letter-spacing:.5px;color:#999;padding:20px 0;text-align:center}.styles__container___NQp7m{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:10px;border-bottom:1px solid #e8e8e8}.styles__container___NQp7m:last-child{border-bottom:none}.styles__title___ndZKE{font-size:18px;font-weight:300}.styles__title___ndZKE a{text-decoration:none;color:#000}.styles__titleBottomMargin___2vh27{margin-bottom:10px}.styles__posterInfo___2ZXs_{margin-top:10px;font-size:13px}.styles__posterInfo___2ZXs_ .styles__name___2gQp6{font-weight:700;color:#999;text-decoration:none;transition:color .3s}.styles__posterInfo___2ZXs_ .styles__name___2gQp6:hover{color:#000}.styles__posterInfo___2ZXs_ .styles__gitHandler___2iekf{margin-left:5px;text-decoration:none;color:#999;transition:color .3s}.styles__posterInfo___2ZXs_ .styles__gitHandler___2iekf .styles__gitIcon___114uy{font-size:16px;padding:0 5px}.styles__posterInfo___2ZXs_ .styles__gitHandler___2iekf:hover{color:#000}.styles__boxFooter___2J-V6{margin-top:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media (max-width: 768px){.styles__boxFooter___2J-V6{margin-top:0;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}}.styles__tagsArea___1iHnX{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media (max-width: 768px){.styles__tagsArea___1iHnX{margin-top:5px}}.styles__postInfo___mIXO- .styles__info___2qtij{margin-left:20px;font-size:12px;font-weight:700;text-transform:lowercase;color:#999}.styles__postInfo___mIXO- .styles__info___2qtij:first-child{margin-left:0}.styles__tag___2zdjL{display:inline-block;height:25px;margin-left:10px;padding:0 10px;background-color:#f9f9f9;color:#999;font-size:12px;line-height:25px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.styles__tag___2zdjL:first-child{margin-left:0}.styles__tagWithRemove___23VDZ{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-right:0}.styles__removeButton___16ijs{padding:4px 10px}.styles__sidebarContainer___HAOwb{width:250px;margin-left:10px}.styles__contentArea___Vl0kO{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:15px}@media (min-width: 1100px){.styles__contentArea___Vl0kO{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap}}.styles__newDiscussionBtn___3kHGs{margin-top:20px}.styles__errorMsg___3Nrkg{margin-top:20px;color:#e74c3c;text-align:center;font-size:12px;font-weight:700}.styles__container___3ag3D{padding:20px 10px 0;position:relative}.styles__infoContainer___1tSHN{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.styles__infoContainer___1tSHN .styles__avatar___376XZ{width:42px;height:42px;border-radius:50px}.styles__infoContainer___1tSHN .styles__columnOnSmallBP___3xMyn{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex}@media (max-width: 768px){.styles__infoContainer___1tSHN .styles__columnOnSmallBP___3xMyn{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.styles__infoContainer___1tSHN .styles__userInfo___1s-_s{margin-left:10px;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex}.styles__infoContainer___1tSHN .styles__userInfo___1s-_s .styles__name___131nz{font-weight:700;color:#000;text-decoration:none}.styles__infoContainer___1tSHN .styles__userInfo___1s-_s .styles__gitHandler___3YZ6H{margin-left:15px;text-decoration:none;color:#999;transition:color .3s}.styles__infoContainer___1tSHN .styles__userInfo___1s-_s .styles__gitHandler___3YZ6H:hover{color:#000}.styles__infoContainer___1tSHN .styles__userInfo___1s-_s .styles__gitHandler___3YZ6H .styles__gitIcon___1gL9A{margin-right:5px}.styles__infoContainer___1tSHN .styles__dateInfo___29yAX{font-size:13px;color:#999}@media (max-width: 768px){.styles__infoContainer___1tSHN .styles__dateInfo___29yAX{margin-left:10px}}.styles__discTitle___7Xb4z{margin-top:15px;font-size:24px;line-height:32px;font-weight:400}.styles__discContent___atQHi{margin-top:10px;font-size:15px;line-height:26px}.styles__discFooter___1m4IN{margin-top:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media (max-width: 768px){.styles__discFooter___1m4IN{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}}.styles__discFooter___1m4IN .styles__tags___2sgC-{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width: 768px){.styles__discFooter___1m4IN .styles__deleteButton___3Fuge,.styles__discFooter___1m4IN .styles__favoriteButton___1fys7{margin-top:5px;padding-left:0;padding-right:0}}.styles__discFooter___1m4IN .styles__deleteButton___3Fuge i,.styles__discFooter___1m4IN .styles__favoriteButton___1fys7 i{font-size:20px;margin-right:10px}.styles__deletingDiscussion___31KKR{position:absolute;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.9);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.styles__container___3PDJi{margin-top:10px;margin-bottom:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;border:1px solid #e8e8e8}.styles__readOnlyContainer___3hVP7{border:none}.styles__editorContainer___iw-p7{padding:10px;width:100%;min-height:60px;border-bottom:1px solid #e8e8e8;cursor:text}.styles__editorContainer___iw-p7 .public-DraftEditorPlaceholder-root{position:absolute;color:#999}.styles__readOnlyEditorContainer___28ncO{padding:0;border-bottom:none}.styles__buttonClass___3vmZx{margin-top:20px}.styles__newDiscussion___3M2tI{min-height:300px}.styles__controlsContainer___3iK1a{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;border-bottom:1px solid #e8e8e8}@media (max-width: 768px){.styles__controlsContainer___3iK1a{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.styles__controls___1eYW4{display:-webkit-box;display:-ms-flexbox;display:flex}.styles__controlButton___1-_np{padding:10px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;text-transform:uppercase;color:#999;font-weight:700;font-size:12px;letter-spacing:.5px;transition:color .3s}.styles__controlButton___1-_np:hover{color:#000}@media (max-width: 768px){.styles__controlButton___1-_np{padding:5px 10px}}.styles__controlButtonActive___1AiPt{color:#000}.styles__editorBlockquoteStyle___18Q7o{display:inline-block;position:relative;margin:10px 0 10px 20px;padding:10px 20px;background-color:#f9f9f9;font-style:italic}.styles__editorBlockquoteStyle___18Q7o:before{content:\"\";position:absolute;height:100%;width:5px;left:0;top:0;background-color:#e8e8e8}.styles__editorCodeStyle___SQGdI{margin:0;padding:0;line-height:18px;overflow-x:hidden}.public-DraftStyleDefault-pre{margin:10px 0;padding:5px;background-color:#f9f9f9;border:1px solid #e8e8e8}.styles__editorH1Style___nTQHA,.styles__editorH2Style___3oRI5,.styles__editorH3Style___2pK4Q{color:#4c4c4c}.styles__editorH1Style___nTQHA{font-size:1.6em}.styles__editorH2Style___3oRI5{font-size:1.3em}.styles__editorH3Style___2pK4Q{font-size:1.1em}.styles__loadingWrapper___wu9So{font-size:12px;font-weight:700;text-align:center;padding:30px 0;color:#999}.styles__container___rYBS1{position:relative;margin-bottom:10px;padding:0 10px;border:1px solid #e8e8e8}.styles__container___rYBS1 .styles__deletingOpinion___3OvgA{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background-color:hsla(0,0%,100%,.9)}.styles__container___rYBS1 .styles__deletingOpinion___3OvgA,.styles__infoContainer___11miR{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.styles__infoContainer___11miR{padding:5px 0;border-bottom:1px solid #e8e8e8}.styles__infoContainer___11miR .styles__avatar___2t9RT{width:32px;height:32px;border-radius:50px}.styles__infoContainer___11miR .styles__userInfo___1WfED{margin-left:10px;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex}.styles__infoContainer___11miR .styles__userInfo___1WfED .styles__name___1pyUc{font-weight:700;color:#000;text-decoration:none}.styles__infoContainer___11miR .styles__userInfo___1WfED .styles__gitHandler___2NsxB{margin-left:15px;text-decoration:none;color:#999;transition:color .3s}.styles__infoContainer___11miR .styles__userInfo___1WfED .styles__gitHandler___2NsxB:hover{color:#000}.styles__infoContainer___11miR .styles__userInfo___1WfED .styles__gitHandler___2NsxB .styles__gitIcon___1jwLm{margin-right:5px}.styles__infoContainer___11miR .styles__dateInfo___1sNRb{font-size:13px;line-height:13px;color:#999}@media (max-width: 768px){.styles__infoContainer___11miR .styles__dateInfo___1sNRb{margin-left:10px}}.styles__infoContainer___11miR .styles__deleteButton___7DU3C{padding:5px 10px;font-weight:400}.styles__infoContainer___11miR .styles__deleteButton___7DU3C .styles__trashIcon___10LOT{margin-right:5px;font-size:16px}.styles__opContent___3uhOR{margin-top:10px;margin-bottom:20px;min-height:60px;font-size:15px;line-height:26px}.styles__commentFooter___jLIS_,.styles__commentFooter___jLIS_ .styles__favoriteButton___1p64L{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.styles__commentFooter___jLIS_ .styles__favoriteButton___1p64L{padding:10px;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color .3s}.styles__commentFooter___jLIS_ .styles__favoriteButton___1p64L:hover{color:#000}.styles__commentFooter___jLIS_ .styles__favoriteButton___1p64L i{font-size:20px;margin-right:10px}.styles__loadingWrapper___3BujS{padding:20px 0;font-size:12px;font-weight:700;text-align:center;color:#999}.styles__errorMsg___vja8k{margin-top:20px;margin-left:10px;font-size:12px;font-weight:700;color:#e74c3c;text-align:center}.styles__signInMsg___PeG2-{color:#999;font-size:12px;font-weight:700;text-align:center;padding:20px 0}.styles__container___6rE5a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:5px 0 0 10px}.styles__label___16pu4{margin-right:10px}.styles__button___2WL76{padding:10px 20px;border:1px solid #e8e8e8}.styles__container___NvgJU{margin:0 0 0 10px}.styles__tagContainer___3loPa{height:36px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.styles__inputContainer___2CRQc{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.styles__tagInput___DdDal{width:100px;padding:10px;border:none;outline:none;background-color:none}.styles__addButton___1AQ5e{padding:5px 10px;font-size:20px}.styles__errorMsg___1PUBU{font-weight:700;margin-top:5px;color:#e74c3c;font-size:12px;line-height:14px}.styles__content___3IxIG{margin-top:10px;position:relative}.styles__forumName___2ba7X{font-weight:700}.styles__errorMsg___2JPWM{margin-top:5px;color:#e74c3c;font-size:12px;font-weight:700;line-height:14px}.styles__fatalError___2LDsp{margin-top:20px;text-align:center}.styles__titleInput___2t3D2{margin:20px 0 0;padding:10px;width:100%;border:none;outline:none;background-color:none;font-size:24px;font-weight:300}.styles__signInMsg___1bvy8{padding:80px 0;color:#999;text-align:center}.styles__postingMsg___ClCfQ{position:absolute;width:100%;height:100%;top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:hsla(0,0%,100%,.8)}.styles__container___DqS3K{margin-top:20px;display:-webkit-box;display:-ms-flexbox;display:flex}@media (min-width: 1100px){.styles__container___DqS3K{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap}}.styles__errorMsg___D92D_,.styles__loadingMsg___27gCw{margin-top:20px;text-align:center}.styles__errorMsg___D92D_{color:#e74c3c;font-size:12px;font-weight:700}.styles__container___2Pi24{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.styles__avatarContainer___37DQE .styles__avatar___16Tnl{width:100px;height:100px;border-radius:10px}.styles__infoContainer___igQvO{margin-left:20px;letter-spacing:.5px}.styles__infoContainer___igQvO .styles__name___3fv6x{font-size:24px;margin-bottom:10px}.styles__infoContainer___igQvO .styles__gitHandler____b2zz{font-size:14px;font-weight:700}.styles__infoContainer___igQvO .styles__location___26u56{font-size:14px}"
  },
  {
    "path": "public/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css\">\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Lato:300,400,700\" rel=\"stylesheet\">\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css\">\n    <link rel=\"stylesheet\" href=\"/build/style.css\">\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/react/15.4.1/react.min.js\"></script>\n    <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/react/15.4.1/react-dom.min.js\"></script>\n    <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/redux/3.6.0/redux.min.js\"></script>\n    <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/react-router/3.0.0/ReactRouter.min.js\"></script>\n    <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js\"></script>\n    <script type=\"text/javascript\" src=\"/build/bundle.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "server.js",
    "content": "// modules for server\nconst path = require('path');\nconst express = require('express');\nconst mongoose = require('mongoose');\nconst passport = require('passport');\n\n// server configurations\nconst serverConfigs = require('./config/serverConfig');\n\n// connect to database\nmongoose.connect(serverConfigs.DBURL);\n\n// initialize express\nconst app = express();\n\n// apply express configs\nrequire('./backend/express')(app, serverConfigs);\n\n// fire up the server\napp.listen(serverConfigs.PORT, (error) => {\n  if (error) throw error;\n  console.log('Server running on port: ' + serverConfigs.PORT);\n});\n"
  }
]