summaryrefslogtreecommitdiff
path: root/old
diff options
context:
space:
mode:
Diffstat (limited to 'old')
-rw-r--r--old/faiss/requirements.txt11
-rw-r--r--old/faiss/run.sh1
-rw-r--r--old/faiss/static/css/app.css289
-rw-r--r--old/faiss/static/favicon.icobin0 -> 15086 bytes
-rw-r--r--old/faiss/static/img/play.pngbin0 -> 1231 bytes
-rw-r--r--old/faiss/static/index.html83
-rw-r--r--old/faiss/static/js/app.js491
-rw-r--r--old/faiss/static/js/dataUriToBlob.js58
-rw-r--r--old/faiss/static/js/metadata-app.js50
-rw-r--r--old/faiss/static/js/store2.min.js5
-rw-r--r--old/faiss/static/metadata.html11
-rw-r--r--old/faiss/static/search.html1
-rw-r--r--old/faiss/util.py29
-rw-r--r--old/faiss/wsgi.py5
-rw-r--r--old/server/app/README.md17
-rw-r--r--old/server/app/__init__.py39
-rw-r--r--old/server/app/basemodels.py5
-rw-r--r--old/server/app/favicon.icobin0 -> 318 bytes
-rw-r--r--old/server/app/index.html161
-rw-r--r--old/server/app/main/__init__.py5
-rw-r--r--old/server/app/main/errors.py32
-rw-r--r--old/server/app/main/forms.py60
-rw-r--r--old/server/app/main/img_proc_config.py20
-rw-r--r--old/server/app/main/paths.py19
-rw-r--r--old/server/app/main/tasks.py374
-rw-r--r--old/server/app/main/utils.py37
-rw-r--r--old/server/app/main/views.py300
-rw-r--r--old/server/app/static/css/bootstrap.min.css6
-rw-r--r--old/server/app/static/css/dullbrown-theme.css502
-rw-r--r--old/server/app/static/css/projector.css52
-rw-r--r--old/server/app/static/js/app.js158
-rw-r--r--old/server/app/static/js/upload.js319
-rw-r--r--old/server/app/static/js/util.js32
-rw-r--r--old/server/app/static/js/vendor/ExifReader.js1363
-rw-r--r--old/server/app/static/js/vendor/canvas-to-blob.js111
-rw-r--r--old/server/app/static/js/vendor/jquery-3.3.1.min.js2
-rw-r--r--old/server/app/static/js/vendor/nanobar.min.js3
-rw-r--r--old/server/app/static/js/vendor/prefixfree.js527
-rw-r--r--old/server/app/templates/403.html35
-rw-r--r--old/server/app/templates/404.html33
-rw-r--r--old/server/app/templates/500.html34
-rw-r--r--old/server/app/templates/base.html33
-rw-r--r--old/server/app/templates/celery.html43
-rw-r--r--old/server/app/templates/display.html69
-rw-r--r--old/server/app/templates/index.html161
-rw-r--r--old/server/celery_worker.py7
-rw-r--r--old/server/config.py78
-rwxr-xr-xold/server/deploy.sh20
-rw-r--r--old/server/dulldream.wsgi.py13
-rwxr-xr-xold/server/run-celery.sh3
-rwxr-xr-xold/server/run-dev.sh1
-rwxr-xr-xold/server/run-gunicorn.sh2
-rwxr-xr-xold/server/run-redis.sh2
-rw-r--r--old/server/run.py12
54 files changed, 5724 insertions, 0 deletions
diff --git a/old/faiss/requirements.txt b/old/faiss/requirements.txt
new file mode 100644
index 00000000..1d60aabc
--- /dev/null
+++ b/old/faiss/requirements.txt
@@ -0,0 +1,11 @@
+Pillow
+h5py
+tensorflow
+Keras
+Flask
+opencv-python
+imagehash
+scikit-image
+scikit-learn
+imutils
+
diff --git a/old/faiss/run.sh b/old/faiss/run.sh
new file mode 100644
index 00000000..8f9e77e2
--- /dev/null
+++ b/old/faiss/run.sh
@@ -0,0 +1 @@
+uwsgi --http 127.0.0.1:5000 --file wsgi.py --callable app --processes 1
diff --git a/old/faiss/static/css/app.css b/old/faiss/static/css/app.css
new file mode 100644
index 00000000..a3b24736
--- /dev/null
+++ b/old/faiss/static/css/app.css
@@ -0,0 +1,289 @@
+/* css boilerplate */
+
+* { box-sizing: border-box; }
+html,body {
+ margin: 0; padding: 0;
+ width: 100%; height: 100%;
+}
+body {
+ font-family: Helvetica, sans-serif;
+ font-weight: 300;
+ padding-top: 60px;
+}
+
+/* header */
+
+header {
+ position: fixed;
+ top: 0;
+ left: 0;
+ height: 60px;
+ width: 100%;
+ background: #11f;
+ color: white;
+ align-items: stretch;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ z-index: 3;
+}
+header > section {
+ justify-content: flex-start;
+ align-items: center;
+ display: flex;
+ flex: 1 0;
+ font-weight: bold;
+}
+header > section:last-of-type {
+ justify-content: flex-end;
+}
+header a {
+ color: hsla(0,0%,100%,.89);
+ text-decoration: none;
+ line-height: 18px;
+ font-size: 14px;
+ font-weight: 700;
+ padding: .35rem .4rem;
+ white-space: nowrap;
+}
+header .logged-in {
+ font-size: 12px;
+ font-weight: normal;
+ padding: 0 0.5rem;
+}
+header .logout {
+ padding: 0 6px;
+ border-left: 1px solid #99f;
+}
+header .logout a {
+ font-size: 12px;
+}
+.menuToggle {
+ width: 30px;
+ height: 30px;
+ margin: 5px;
+ cursor: pointer;
+ line-height: 1;
+}
+
+/* form at the top */
+
+#form {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ margin: 20px;
+ padding: 20px;
+ border: 1px solid #ddd;
+}
+input[type=text] {
+ border: 1px solid #888;
+ padding: 4px;
+ font-size: 15px;
+}
+input[type=file] {
+ max-width: 200px;
+ border-radius: 2px;
+}
+input[type=file]:invalid + button { visibility: hidden!important; }
+input[type=file]:valid + button { visibility: visible!important; }
+#form > div {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+}
+#form > div * {
+ margin: 0 3px;
+}
+
+/* saving UI form */
+
+label {
+ display: block;
+ white-space: nowrap;
+ padding-bottom: 10px;
+}
+label:last-child {
+ padding-bottom: 0;
+}
+label span {
+ display: inline-block;
+ min-width: 80px;
+}
+.saving_ui {
+ display: none;
+}
+.saving .saving_ui {
+ display: flex;
+ border: 1px solid #ddd;
+ margin: 20px;
+ padding: 20px;
+ flex-direction: row;
+ justify-content: space-between;
+}
+
+/* query box, shows either searched image, directory name, etc */
+
+.loading .results,
+.prefetch .query, .prefetch .results,
+.browsing .score, .browsing .browse,
+.photo .browse,
+.saving .score {
+ display: none;
+}
+.browsing .query div { display: inline; margin-left: 5px; font-weight: bold; }
+.saving .query div { display: inline; margin-left: 5px; font-weight: bold; }
+.load_message {
+ opacity: 0;
+}
+.loading .load_message {
+ display: block;
+ margin: 20px;
+ font-weight: bold;
+}
+
+.query {
+ margin: 20px;
+}
+.query > div {
+ margin-top: 10px;
+ position: relative;
+ display: flex;
+ flex-direction: row;
+ align-items: flex-start;
+}
+.query img {
+ cursor: crosshair;
+ max-width: 400px;
+ display: block;
+}
+.query > div > .box {
+ position: absolute;
+ border: 1px solid #11f;
+ background: rgba(17,17,255,0.1);
+ pointer-events: none;
+}
+.query canvas {
+ margin-left: 20px;
+ max-width: 200px;
+}
+
+/* search results */
+
+.results {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+}
+.results > div {
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-end;
+ width: 210px;
+ margin: 15px;
+ padding: 5px;
+ border: 1px solid transparent;
+}
+.results > div.saved {
+ border-radius: 2px;
+ background: #fafaaa;
+}
+.results > div img {
+ cursor: pointer;
+ max-width: 210px;
+ margin-bottom: 10px;
+}
+.results > div > div {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+}
+.results a:visited .btn {
+ color: #99d;
+}
+.score {
+ font-size: 12px;
+ color: #444;
+}
+
+
+/* spinner */
+
+.loader {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: absolute;
+ top: 0; left: 0;
+ width: 100%; height: 100%;
+ background: rgba(255,255,255,0.9);
+}
+.loader > div {
+ background: white;
+ padding: 20px;
+ box-shadow: 0 1px 2px #bbb;
+ border-radius: 2px;
+}
+.spinner {
+ position: relative;
+ width: 32px;
+ height: 32px;
+ color: #11f;
+ margin: 0 auto;
+}
+.spinner:after {
+ position: absolute;
+ margin: auto;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ content: " ";
+ display: inline-block;
+ border-radius: 50%;
+ border-style: solid;
+ border-width: 0.15em;
+ -webkit-background-clip: padding-box;
+ border-color: currentColor currentColor currentColor transparent;
+ box-sizing: border-box;
+ -webkit-animation: ld-cycle 0.7s infinite linear;
+ animation: ld-cycle 0.7s infinite linear;
+}
+@-webkit-keyframes ld-cycle {
+ 0%, 50%, 100% {
+ animation-timing-function: cubic-bezier(0.5, 0.5, 0.5, 0.5);
+ }
+ 0% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ }
+ 50% {
+ -webkit-transform: rotate(180deg);
+ transform: rotate(180deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+@keyframes ld-cycle {
+ 0%, 50%, 100% {
+ animation-timing-function: cubic-bezier(0.5, 0.5, 0.5, 0.5);
+ }
+ 0% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ }
+ 50% {
+ -webkit-transform: rotate(180deg);
+ transform: rotate(180deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
diff --git a/old/faiss/static/favicon.ico b/old/faiss/static/favicon.ico
new file mode 100644
index 00000000..d97f2f59
--- /dev/null
+++ b/old/faiss/static/favicon.ico
Binary files differ
diff --git a/old/faiss/static/img/play.png b/old/faiss/static/img/play.png
new file mode 100644
index 00000000..40f76045
--- /dev/null
+++ b/old/faiss/static/img/play.png
Binary files differ
diff --git a/old/faiss/static/index.html b/old/faiss/static/index.html
new file mode 100644
index 00000000..cf59c628
--- /dev/null
+++ b/old/faiss/static/index.html
@@ -0,0 +1,83 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="UTF-8" />
+<base href='/search/' />
+<link rel="stylesheet" href="static/css/app.css">
+<link rel="shortcut icon" href="static/favicon.ico" />
+<title>VFrame Image Import</title>
+</head>
+<body class='prefetch'>
+
+<header>
+ <section class="navbar-section">
+ <a href="/"><img class="menuToggle" alt='logo' src="static/css/vframe-logo.png" /></a>
+ <a href="/categories/">Categories</a>
+ <a href="/groups/user/">Assignments</a>
+ <a href="/images/new/">Add Image</a>
+ <a href="/search/">Search</a>
+ </section>
+
+ <section class="navbar-section last-navbar-section">
+ <span class="menu-help"><a href="/static/explore/treemap.html">Explore Data</a></span>
+ <span class="menu-help"><a href="/help/">Help</a></span>
+ <span class="login-out logged-in"><span class="capitalize"></span></span>
+ <span class="logout login-out"><a href="/accounts/logout/">Logout</a></span>
+ </section>
+</header>
+
+<div class="container">
+
+<div id="form">
+ <div>
+ <input type="file" name="img" accept="image/*" required>
+ <button class='btn upload_again'>Upload Again</button>
+ </div>
+ <div class="general_ui">
+ <button class='btn panic'>Panic</button>
+ <button class='btn random'>Random</button>
+ <button class='btn view_saved'>View Saved</button>
+ </div>
+</div>
+
+<div class="saving_ui">
+ <div>
+ <label><span>Title</span> <input type="text" name="title" placeholder="Enter a title"></label>
+ <label><span></span><input type="checkbox" name="graphic"> Graphic content</label>
+ </label>
+ <label><span></span>
+ <button class='btn create_new_group'>Create New Group</button>
+ <button class='btn check'>Check Duplicates</button>
+ <button class='btn reset'>Clear Selection</button>
+ </label>
+ </div>
+</div>
+
+<div class="query">
+ <span class='msg'></span>
+ <div></div>
+</div>
+
+<div class="results">
+</div>
+
+
+</div>
+<script type="text/html" id="result-template">
+ <div class='{className}'>
+ <img src="{img}" crossorigin="anonymous">
+ <div>
+ <div class='score'>{score}</div>
+ <a href='{metadata}'><button class='btn metadata'>Info</button></a>
+ <a href='{browse}'><button class='btn browse'>Expand</button></a>
+ <a href='{search}'><button class='btn search'>Search</button></a>
+ </div>
+ </div>
+</script>
+</body>
+<script src="static/js/store2.min.js"></script>
+<script src="static/js/dataUriToBlob.js"></script>
+<script src="static/js/app.js"></script>
+</html>
+
+
diff --git a/old/faiss/static/js/app.js b/old/faiss/static/js/app.js
new file mode 100644
index 00000000..77164c76
--- /dev/null
+++ b/old/faiss/static/js/app.js
@@ -0,0 +1,491 @@
+/* eslint no-use-before-define: 0, camelcase: 0, one-var-declaration-per-line: 0, one-var: 0, quotes: 0, prefer-destructuring: 0, no-alert: 0, no-console: 0, no-multi-assign: 0 */
+
+function loadApp() {
+ const result_template = document.querySelector('#result-template').innerHTML
+ const results_el = document.querySelector('.results')
+ const query_div = document.body.querySelector('.query > div')
+ let bounds
+ let token, username
+ let x, y, mouse_x, mouse_y, dx, dy, box
+ let dragging = false
+ let cropping = false
+ let creating = false
+ let did_check = false
+
+ function init() {
+ login()
+ bind()
+ route()
+ }
+ function bind() {
+ window.onpopstate = route
+ document.querySelector('[name=img]').addEventListener('change', upload)
+ on('click', '.results a', preventDefault)
+ on('click', '.search', search)
+ on('click', '.panic', panic)
+ on('click', '.upload_again', upload_again)
+ on('click', '.browse', browse)
+ on('click', '.results img', save)
+ on('click', '.view_saved', loadSaved)
+ on('click', '.create_new_group', createNewGroup)
+ on('click', '.reset', reset)
+ on('click', '.random', random)
+ on('click', '.check', check)
+ on('mousedown', '.query img', down)
+ window.addEventListener('mousemove', move)
+ window.addEventListener('mouseup', up)
+ window.addEventListener('keydown', keydown)
+ }
+ function route() {
+ const path = window.location.pathname.split('/')
+ // remove initial slash
+ path.shift()
+ // remove dummy route
+ if (path[0] === 'search') path.shift()
+ switch (path[0]) {
+ case 'fetch':
+ search({ target: { url: window.location.search.substr(1).split('=')[1] } })
+ break
+ case 'view':
+ search(path.slice(1))
+ break
+ case 'q':
+ if (path.length === 3) {
+ search({ target: { dir: path[1], fn: path[2] } })
+ } else {
+ browse({ target: { dir: path[1], fn: null } })
+ }
+ break
+ case 'saved':
+ loadSaved()
+ break
+ default:
+ break
+ }
+ }
+ function keydown(e) {
+ switch (e.keyCode) {
+ case 27: // escape
+ panic()
+ break
+ default:
+ break
+ }
+ }
+
+ // load search results
+ function loadResults(data) {
+ console.log(data)
+ if (!data.query.url) return
+ // console.log(data)
+ document.body.className = 'searching'
+ const path = getPathFromImage(data.query.url)
+ pushState('searching', "/search/fetch/?url=" + path.url)
+ if (path.dir === 'uploaded' && path.fn.match('_filename')) {
+ loadMessage(
+ "<a href='javascript:history.go(-1)'>&lt; Back</a> | "
+ + "Searching subregion, "
+ + "found " + data.results.length + " images"
+ )
+ } else {
+ loadMessage(
+ "Found " + data.results.length + " images"
+ )
+ }
+ loadQuery(data.query.url)
+ if (!data.results.length) {
+ results_el.innerHTML = "No results"
+ return
+ }
+ const saved = window.store.get('saved', [])
+
+ results_el.innerHTML = data.results.map(res => {
+ const { distance, file, hash, frame, url } = res
+ const isSaved = saved.indexOf(url) !== -1
+ const { type } = getPathFromImage(url)
+ let className = isSaved ? 'saved' : ''
+ className += ' ' + type
+ let t = result_template
+ .replace('{score}', Math.floor(clamp(1 - distance, 0, 1) * 100) + "%")
+ .replace('{browse}', '/search/q/' + hash)
+ .replace('{search}', '/search/view/' + [file, hash, frame].join('/'))
+ .replace('{metadata}', '/metadata/' + hash)
+ .replace('{className}', className)
+ .replace('{saved_msg}', isSaved ? 'Saved' : 'Save')
+ .replace('{img}', url)
+ return t
+ }).join('')
+ }
+
+ function loadDirectory(data) {
+ console.log(data)
+ document.body.className = 'browsing'
+ pushState('searching', "/search/q/" + data.path)
+ loadMessage("Video: <b>" + data.path + "</b>")
+ loadQuery("")
+ if (!data.results.length) {
+ results_el.innerHTML = "No frames found"
+ return
+ }
+ const saved = window.store.get('saved', [])
+ results_el.innerHTML = data.results
+ .map(result => [parseInt(result.frame, 10), result])
+ .sort((a, b) => a[0] - b[0])
+ .map(pair => {
+ let { file, hash, frame, url } = pair[1]
+ const isSaved = saved.indexOf(url) !== -1
+ let className = isSaved ? 'saved' : ''
+ let t = result_template
+ .replace('{img}', url)
+ .replace('{browse}', '/search/q/' + hash)
+ .replace('{search}', '/search/view/' + [file, hash, frame].join('/'))
+ .replace('{metadata}', '/metadata/' + hash)
+ .replace('{className}', className)
+ .replace('{saved_msg}', isSaved ? 'Saved' : 'Save')
+ return t
+ }).join('')
+ }
+ function loadSaved() {
+ document.body.className = 'saving'
+ pushState('View saved', "/search/saved")
+ const saved = window.store.get('saved', [])
+ cropping = false
+ loadMessage(saved.length + " saved image" + (saved.length === 1 ? "" : "s"))
+ loadQuery('')
+ const box_el = document.querySelector('.box')
+ if (box_el) box_el.parentNode.removeChild(box_el)
+ results_el.innerHTML = saved.map(href => {
+ const { url, dir } = getPathFromImage({ src: href })
+ let className = 'saved'
+ let t = result_template
+ .replace('{img}', href)
+ .replace('{browse}', '/search/q/' + dir)
+ .replace('{search}', '/search/fetch/?url=' + url)
+ .replace('{metadata}', '/metadata/' + dir)
+ .replace('{className}', className)
+ .replace('{saved_msg}', 'Saved')
+ return t
+ }).join('')
+ }
+ function loadQuery(path) {
+ if (cropping) return
+ const qd = document.querySelector('.query div')
+ qd.innerHTML = ''
+ if (path.match(/(gif|jpe?g|png)$/)) {
+ const img = new Image()
+ img.setAttribute('crossorigin', 'anonymous')
+ img.src = path.replace('sm', 'md')
+ qd.appendChild(img)
+ } else {
+ qd.innerHTML = path || ""
+ }
+ }
+ function loadMessage(msg) {
+ document.querySelector('.query .msg').innerHTML = msg
+ }
+
+ // panic button
+ function panic() {
+ loadMessage('Query cleared')
+ loadQuery('')
+ results_el.innerHTML = ''
+ }
+
+ // adding stuff to localstorage
+ function save(e) {
+ const { url } = getPathFromImage(e.target)
+ const saved = window.store.get('saved', [])
+ let newList = saved || []
+ if (saved.indexOf(url) !== -1) {
+ newList = saved.filter(f => f !== url)
+ e.target.parentNode.classList.remove('saved')
+ } else {
+ newList.push(url)
+ e.target.parentNode.classList.add('saved')
+ }
+ window.store.set('saved', newList)
+ }
+ function reset() {
+ const shouldReset = window.confirm("This will reset the saved images. Are you sure?")
+ if (!shouldReset) return
+ window.store.set('saved', [])
+ loadSaved()
+ document.querySelector('[name=title]').value = ''
+ window.alert("Reset saved images")
+ }
+
+ // submit the new group
+ function createNewGroup() {
+ const title = document.querySelector('[name=title]').value.trim().replace(/[^-_a-zA-Z0-9 ]/g, "")
+ const saved = window.store.get('saved', [])
+ const graphic = document.querySelector('[name=graphic]').checked
+ if (!title.length) return alert("Please enter a title for this group")
+ if (!saved.length) return alert("Please pick some images to save")
+ if (!did_check) {
+ alert('Automatically checking for duplicates. Please doublecheck your selection.')
+ return check()
+ }
+ if (creating) return null
+ creating = true
+ return http_post("/api/images/import/new/", {
+ title,
+ graphic,
+ saved
+ }).then(res => {
+ console.log(res)
+ window.store.set('saved', [])
+ window.location.href = '/groups/show/' + res.image_group.id
+ }).catch(res => {
+ alert('Error creating group. The server response is logged to the console.')
+ console.log(res)
+ creating = false
+ })
+ }
+
+ // api queries
+ function login() {
+ const isLocal = (window.location.hostname === '0.0.0.0')
+ try {
+ // csrftoken = "test" // getCookie('csrftoken')
+ const auth = JSON.parse(window.store.get('persist:root').auth)
+ token = auth.token
+ username = auth.user.username
+ if (!token && !isLocal) {
+ window.location.href = '/'
+ }
+ } catch (e) {
+ if (!isLocal) {
+ window.location.href = '/'
+ }
+ }
+ document.querySelector('.logged-in .capitalize').innerHTML = username || 'user'
+ }
+
+ function upload(e) {
+ cropping = false
+ const files = e.dataTransfer ? e.dataTransfer.files : e.target.files
+ let i, f
+ for (i = 0, f; i < files.length; i++) {
+ f = files[i]
+ if (f && f.type.match('image.*')) break
+ }
+ if (!f) return
+ do_upload(f)
+ }
+
+ function do_upload(f) {
+ const fd = new FormData()
+ fd.append('query_img', f)
+ document.body.className = 'loading'
+ http_post('/search/api/upload', fd).then(loadResults)
+ }
+
+ function upload_again() {
+ const { files } = document.querySelector('input[type=file]')
+ if (!files.length) {
+ window.alert('Please upload a file.')
+ return
+ }
+ upload({
+ dataTransfer: { files }
+ })
+ }
+
+ function search(e) {
+ if (e.length) return search_by_vector(e)
+ const { url } = getPath(e.target)
+ cropping = false
+ document.body.className = 'loading'
+ loadQuery(url)
+ loadMessage('Loading results...')
+ http_get('/search/api/fetch/?url=' + url).then(loadResults)
+ }
+
+ function search_by_vector(e) {
+ cropping = false
+ document.body.className = 'loading'
+ loadQuery('')
+ loadMessage('Loading results...')
+ http_get('/search/api/search/' + e.join('/')).then(loadResults)
+ }
+
+ function browse(e) {
+ document.body.className = 'loading'
+ cropping = false
+ let dir;
+ if (e.target.dir) {
+ dir = e.target.dir
+ }
+ else {
+ const href = e.target.parentNode.href
+ dir = href.split('/')[5]
+ console.log(href, dir)
+ }
+ loadMessage('Listing video...')
+ http_get('/search/api/list/' + dir).then(loadDirectory)
+ }
+
+ function check() {
+ http_post('/api/images/import/search/', {
+ saved: window.store.get('saved') || [],
+ }).then(res => {
+ console.log(res)
+ const { good, bad } = res
+ did_check = true
+ window.store.set('saved', good)
+ if (!bad.length) {
+ return alert("No duplicates found.")
+ }
+ bad.forEach(path => {
+ const el = document.querySelector('img[src="' + path + '"]')
+ if (el) el.parentNode.classList.remove('saved')
+ })
+ return alert("Untagged " + bad.length + " duplicate" + (bad.length === 1 ? "" : "s") + ".")
+ })
+ }
+
+ function random() {
+ http_get('/search/api/random').then(loadResults)
+ }
+
+ // drawing a box
+ function down(e) {
+ e.preventDefault()
+ dragging = true
+ bounds = query_div.querySelector('img').getBoundingClientRect()
+ mouse_x = e.pageX
+ mouse_y = e.pageY
+ x = mouse_x - bounds.left
+ y = mouse_y - bounds.top
+ dx = dy = 0
+ box = document.querySelector('.box') || document.createElement('div')
+ box.className = 'box'
+ box.style.left = x + 'px'
+ box.style.top = y + 'px'
+ box.style.width = 0 + 'px'
+ box.style.height = 0 + 'px'
+ query_div.appendChild(box)
+ }
+ function move(e) {
+ if (!dragging) return
+ e.preventDefault()
+ dx = clamp(e.pageX - mouse_x, 0, bounds.width - x)
+ dy = clamp(e.pageY - mouse_y, 0, bounds.height - y)
+ box.style.width = dx + 'px'
+ box.style.height = dy + 'px'
+ }
+ function up(e) {
+ if (!dragging) return
+ dragging = false
+ e.preventDefault()
+ const img = query_div.querySelector('img')
+ const canvas = query_div.querySelector('canvas') || document.createElement('canvas')
+ const ctx = canvas.getContext('2d')
+ const ratio = img.naturalWidth / bounds.width
+ canvas.width = dx * ratio
+ canvas.height = dy * ratio
+ if (dx < 10 || dy < 10) {
+ if (canvas.parentNode) canvas.parentNode.removeChild(canvas)
+ const box_el = document.querySelector('.box')
+ if (box_el) box_el.parentNode.removeChild(box_el)
+ return
+ }
+ query_div.appendChild(canvas)
+ ctx.drawImage(
+ img,
+ x * ratio,
+ y * ratio,
+ dx * ratio,
+ dy * ratio,
+ 0, 0, canvas.width, canvas.height
+ )
+ cropping = true
+ const blob = window.dataUriToBlob(canvas.toDataURL('image/jpeg', 0.9))
+ do_upload(blob)
+ }
+
+ // utility functions
+ function http_get(url) {
+ return fetch(url).then(res => res.json())
+ }
+ function http_post(url, data) {
+ let headers
+ if (data instanceof FormData) {
+ headers = {
+ Accept: 'application/json, application/xml, text/play, text/html, *.*',
+ Authorization: 'Token ' + token,
+ }
+ } else {
+ headers = {
+ Accept: 'application/json, application/xml, text/play, text/html, *.*',
+ 'Content-Type': 'application/json; charset=utf-8',
+ Authorization: 'Token ' + token,
+ }
+ data = JSON.stringify(data)
+ }
+
+ // headers['X-CSRFToken'] = csrftoken
+ return fetch(url, {
+ method: 'POST',
+ body: data,
+ credentials: 'include',
+ headers,
+ }).then(res => res.json())
+ }
+ function on(evt, sel, handler) {
+ document.addEventListener(evt, function (event) {
+ let t = event.target
+ while (t && t !== this) {
+ if (t.matches(sel)) {
+ handler.call(t, event)
+ }
+ t = t.parentNode
+ }
+ })
+ }
+ function getPathFromImage(el) {
+ const url = el.src ? el.src : el
+ const partz = url.split('/')
+ let type, dir, fn
+ if (partz.length === 3) {
+ type = 'photo'
+ dir = ''
+ fn = ''
+ }
+ if (partz.length === 9) {
+ type = 'photo'
+ dir = partz[6]
+ fn = ''
+ } else if (partz.length === 10) {
+ type = 'video'
+ dir = partz[6]
+ fn = partz[7]
+ }
+ return { type, dir, fn, url }
+ }
+ function getPath(el) {
+ if (el.url) {
+ return getPathFromImage(el.url)
+ } if (el.dir) {
+ return el
+ }
+ el = el.parentNode.parentNode.parentNode.querySelector('img')
+ return getPathFromImage(el)
+ }
+ function pushState(txt, path) {
+ if (window.location.pathname === path) return
+ console.log('pushstate', path)
+ window.history.pushState({}, txt, path)
+ }
+ function preventDefault(e) {
+ if (e && !e.target.classList.contains('metadata')) {
+ e.preventDefault()
+ }
+ }
+ function clamp(n, a, b) { return n < a ? a : n < b ? n : b }
+
+ // initialize the app when the DOM is ready
+ document.addEventListener('DOMContentLoaded', init)
+}
+
+loadApp()
diff --git a/old/faiss/static/js/dataUriToBlob.js b/old/faiss/static/js/dataUriToBlob.js
new file mode 100644
index 00000000..80189b8d
--- /dev/null
+++ b/old/faiss/static/js/dataUriToBlob.js
@@ -0,0 +1,58 @@
+var dataUriToUint8Array = function(uri){
+ var data = uri.split(',')[1];
+ var bytes = atob(data);
+ var buf = new ArrayBuffer(bytes.length);
+ var u8 = new Uint8Array(buf);
+ for (var i = 0; i < bytes.length; i++) {
+ u8[i] = bytes.charCodeAt(i);
+ }
+ return u8
+}
+
+window.dataUriToBlob = (function(){
+/**
+ * Blob constructor.
+ */
+
+var Blob = window.Blob;
+
+/**
+ * ArrayBufferView support.
+ */
+
+var hasArrayBufferView = new Blob([new Uint8Array(100)]).size == 100;
+
+/**
+ * Return a `Blob` for the given data `uri`.
+ *
+ * @param {String} uri
+ * @return {Blob}
+ * @api public
+ */
+
+var dataUriToBlob = function(uri){
+ var data = uri.split(',')[1];
+ var bytes = atob(data);
+ var buf = new ArrayBuffer(bytes.length);
+ var arr = new Uint8Array(buf);
+ for (var i = 0; i < bytes.length; i++) {
+ arr[i] = bytes.charCodeAt(i);
+ }
+
+ if (!hasArrayBufferView) arr = buf;
+ var blob = new Blob([arr], { type: mime(uri) });
+ blob.slice = blob.slice || blob.webkitSlice;
+ return blob;
+};
+
+/**
+ * Return data uri mime type.
+ */
+
+function mime(uri) {
+ return uri.split(';')[0].slice(5);
+}
+
+return dataUriToBlob;
+
+})()
diff --git a/old/faiss/static/js/metadata-app.js b/old/faiss/static/js/metadata-app.js
new file mode 100644
index 00000000..fa2265fa
--- /dev/null
+++ b/old/faiss/static/js/metadata-app.js
@@ -0,0 +1,50 @@
+!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=212)}([function(e,t,n){var r=n(99),o=36e5,i=6e4,a=2,u=/[T ]/,s=/:/,c=/^(\d{2})$/,l=[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],f=/^(\d{4})/,d=[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],p=/^-(\d{2})$/,h=/^-?(\d{3})$/,m=/^-?(\d{2})-?(\d{2})$/,v=/^-?W(\d{2})$/,y=/^-?W(\d{2})-?(\d{1})$/,g=/^(\d{2}([.,]\d*)?)$/,_=/^(\d{2}):?(\d{2}([.,]\d*)?)$/,b=/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,w=/([Z+-].*)$/,x=/^(Z)$/,E=/^([+-])(\d{2})$/,O=/^([+-])(\d{2}):?(\d{2})$/;function S(e,t,n){t=t||0,n=n||0;var r=new Date(0);r.setUTCFullYear(e,0,4);var o=7*t+n+1-(r.getUTCDay()||7);return r.setUTCDate(r.getUTCDate()+o),r}e.exports=function(e,t){if(r(e))return new Date(e.getTime());if("string"!=typeof e)return new Date(e);var n=(t||{}).additionalDigits;n=null==n?a:Number(n);var T=function(e){var t,n={},r=e.split(u);if(s.test(r[0])?(n.date=null,t=r[0]):(n.date=r[0],t=r[1]),t){var o=w.exec(t);o?(n.time=t.replace(o[1],""),n.timezone=o[1]):n.time=t}return n}(e),k=function(e,t){var n,r=l[t],o=d[t];if(n=f.exec(e)||o.exec(e)){var i=n[1];return{year:parseInt(i,10),restDateString:e.slice(i.length)}}if(n=c.exec(e)||r.exec(e)){var a=n[1];return{year:100*parseInt(a,10),restDateString:e.slice(a.length)}}return{year:null}}(T.date,n),R=k.year,j=function(e,t){if(null===t)return null;var n,r,o,i;if(0===e.length)return(r=new Date(0)).setUTCFullYear(t),r;if(n=p.exec(e))return r=new Date(0),o=parseInt(n[1],10)-1,r.setUTCFullYear(t,o),r;if(n=h.exec(e)){r=new Date(0);var a=parseInt(n[1],10);return r.setUTCFullYear(t,0,a),r}if(n=m.exec(e)){r=new Date(0),o=parseInt(n[1],10)-1;var u=parseInt(n[2],10);return r.setUTCFullYear(t,o,u),r}if(n=v.exec(e))return i=parseInt(n[1],10)-1,S(t,i);if(n=y.exec(e)){i=parseInt(n[1],10)-1;var s=parseInt(n[2],10)-1;return S(t,i,s)}return null}(k.restDateString,R);if(j){var P,C=j.getTime(),M=0;return T.time&&(M=function(e){var t,n,r;if(t=g.exec(e))return(n=parseFloat(t[1].replace(",",".")))%24*o;if(t=_.exec(e))return n=parseInt(t[1],10),r=parseFloat(t[2].replace(",",".")),n%24*o+r*i;if(t=b.exec(e)){n=parseInt(t[1],10),r=parseInt(t[2],10);var a=parseFloat(t[3].replace(",","."));return n%24*o+r*i+1e3*a}return null}(T.time)),T.timezone?P=function(e){var t,n;return(t=x.exec(e))?0:(t=E.exec(e))?(n=60*parseInt(t[2],10),"+"===t[1]?-n:n):(t=O.exec(e))?(n=60*parseInt(t[2],10)+parseInt(t[3],10),"+"===t[1]?-n:n):0}(T.timezone):(P=new Date(C+M).getTimezoneOffset(),P=new Date(C+M+P*i).getTimezoneOffset()),new Date(C+M+P*i)}return new Date(e)}},function(e,t,n){"use strict";e.exports=n(213)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(220),o=n(117),i=n(224);n.d(t,"Provider",function(){return r.b}),n.d(t,"createProvider",function(){return r.a}),n.d(t,"connectAdvanced",function(){return o.a}),n.d(t,"connect",function(){return i.a})},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(340));t.default=r.default||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}},function(e,t,n){e.exports={default:n(243),__esModule:!0}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(126));t.default=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),(0,r.default)(e,o.key,o)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}()},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(78));t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,r.default)(t))&&"function"!=typeof t?e:t}},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(266)),o=a(n(270)),i=a(n(78));function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,i.default)(t)));e.prototype=(0,o.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(r.default?(0,r.default)(e,t):e.__proto__=t)}},function(e,t){var n=e.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Video=t.Keyframes=t.Keyframe=t.DetectionBoxes=t.DetectionList=t.Classifier=t.ActiveLink=t.TableCell=t.TableRow=t.TableTuples=t.TableArray=t.TableObject=t.Gate=t.Loader=t.Sidebar=t.Footer=t.Header=void 0;var r=v(n(287)),o=v(n(318)),i=v(n(330)),a=v(n(334)),u=v(n(335)),s=v(n(336)),c=v(n(337)),l=v(n(338)),f=v(n(339)),d=v(n(344)),p=v(n(357)),h=v(n(497)),m=n(498);function v(e){return e&&e.__esModule?e:{default:e}}n(500),t.Header=r.default,t.Footer=s.default,t.Sidebar=l.default,t.Loader=c.default,t.Gate=f.default,t.TableObject=m.TableObject,t.TableArray=m.TableArray,t.TableTuples=m.TableTuples,t.TableRow=m.TableRow,t.TableCell=m.TableCell,t.ActiveLink=o.default,t.Classifier=i.default,t.DetectionList=u.default,t.DetectionBoxes=a.default,t.Keyframe=d.default,t.Keyframes=p.default,t.Video=h.default},function(e,t,n){e.exports=n(221)()},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){var r=n(75)("wks"),o=n(55),i=n(13).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"createStore",function(){return s}),n.d(t,"combineReducers",function(){return l}),n.d(t,"bindActionCreators",function(){return d}),n.d(t,"applyMiddleware",function(){return h}),n.d(t,"compose",function(){return p}),n.d(t,"__DO_NOT_USE__ActionTypes",function(){return o});var r=n(227),o={INIT:"@@redux/INIT"+Math.random().toString(36).substring(7).split("").join("."),REPLACE:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")},i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function u(e){if("object"!==(void 0===e?"undefined":i(e))||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function s(e,t,n){var a;if("function"==typeof t&&void 0===n&&(n=t,t=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(s)(e,t)}if("function"!=typeof e)throw new Error("Expected the reducer to be a function.");var c=e,l=t,f=[],d=f,p=!1;function h(){d===f&&(d=f.slice())}function m(){if(p)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return l}function v(e){if("function"!=typeof e)throw new Error("Expected the listener to be a function.");if(p)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var t=!0;return h(),d.push(e),function(){if(t){if(p)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");t=!1,h();var n=d.indexOf(e);d.splice(n,1)}}}function y(e){if(!u(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(p)throw new Error("Reducers may not dispatch actions.");try{p=!0,l=c(l,e)}finally{p=!1}for(var t=f=d,n=0;n<t.length;n++){(0,t[n])()}return e}return y({type:o.INIT}),(a={dispatch:y,subscribe:v,getState:m,replaceReducer:function(e){if("function"!=typeof e)throw new Error("Expected the nextReducer to be a function.");c=e,y({type:o.REPLACE})}})[r.a]=function(){var e,t=v;return(e={subscribe:function(e){if("object"!==(void 0===e?"undefined":i(e))||null===e)throw new TypeError("Expected the observer to be an object.");function n(){e.next&&e.next(m())}return n(),{unsubscribe:t(n)}}})[r.a]=function(){return this},e},a}function c(e,t){var n=t&&t.type;return"Given "+(n&&'action "'+String(n)+'"'||"an action")+', reducer "'+e+'" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.'}function l(e){for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var i=t[r];0,"function"==typeof e[i]&&(n[i]=e[i])}var a=Object.keys(n);var u=void 0;try{!function(e){Object.keys(e).forEach(function(t){var n=e[t];if(void 0===n(void 0,{type:o.INIT}))throw new Error('Reducer "'+t+"\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.");if(void 0===n(void 0,{type:"@@redux/PROBE_UNKNOWN_ACTION_"+Math.random().toString(36).substring(7).split("").join(".")}))throw new Error('Reducer "'+t+"\" returned undefined when probed with a random type. Don't try to handle "+o.INIT+' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')})}(n)}catch(e){u=e}return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];if(u)throw u;for(var r=!1,o={},i=0;i<a.length;i++){var s=a[i],l=n[s],f=e[s],d=l(f,t);if(void 0===d){var p=c(s,t);throw new Error(p)}o[s]=d,r=r||d!==f}return r?o:e}}function f(e,t){return function(){return t(e.apply(this,arguments))}}function d(e,t){if("function"==typeof e)return f(e,t);if("object"!==(void 0===e?"undefined":i(e))||null===e)throw new Error("bindActionCreators expected an object or a function, instead received "+(null===e?"null":void 0===e?"undefined":i(e))+'. Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');for(var n=Object.keys(e),r={},o=0;o<n.length;o++){var a=n[o],u=e[a];"function"==typeof u&&(r[a]=f(u,t))}return r}function p(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce(function(e,t){return function(){return e(t.apply(void 0,arguments))}})}function h(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){return function(){for(var n=arguments.length,r=Array(n),o=0;o<n;o++)r[o]=arguments[o];var i=e.apply(void 0,r),u=function(){throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},s={getState:i.getState,dispatch:function(){return u.apply(void 0,arguments)}},c=t.map(function(e){return e(s)});return u=p.apply(void 0,c)(i.dispatch),a({},i,{dispatch:u})}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(319);n.d(t,"BrowserRouter",function(){return r.a});var o=n(320);n.d(t,"HashRouter",function(){return o.a});var i=n(152);n.d(t,"Link",function(){return i.a});var a=n(321);n.d(t,"MemoryRouter",function(){return a.a});var u=n(322);n.d(t,"NavLink",function(){return u.a});var s=n(323);n.d(t,"Prompt",function(){return s.a});var c=n(324);n.d(t,"Redirect",function(){return c.a});var l=n(153);n.d(t,"Route",function(){return l.a});var f=n(92);n.d(t,"Router",function(){return f.a});var d=n(325);n.d(t,"StaticRouter",function(){return d.a});var p=n(326);n.d(t,"Switch",function(){return p.a});var h=n(327);n.d(t,"generatePath",function(){return h.a});var m=n(328);n.d(t,"matchPath",function(){return m.a});var v=n(329);n.d(t,"withRouter",function(){return v.a})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.login=t.post=t.preloadImage=t.keyframeUri=t.metadataUri=t.imageUrl=t.hashPath=t.clamp=t.px=t.percent=t.timestamp=t.padSeconds=t.courtesyS=t.verify=t.isVerified=t.pad=t.formatName=t.widths=t.isDesktop=t.isMobile=t.isAndroid=t.isiPad=t.isiPhone=void 0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(93));var o=t.isiPhone=!(!navigator.userAgent.match(/iPhone/i)&&!navigator.userAgent.match(/iPod/i)),i=t.isiPad=!!navigator.userAgent.match(/iPad/i),a=t.isAndroid=!!navigator.userAgent.match(/Android/i),u=t.isMobile=o||i||a,s=t.isDesktop=!u;document.body.parentNode.classList.add(s?"desktop":"mobile");t.widths={th:160,sm:320,md:640,lg:1280};var c="id url cc sa fp md5 sha256".split(" ").map(function(e){return"_"+e}),l=c.map(function(e){return e.toUpperCase()}),f=(t.formatName=function(e){return c.forEach(function(t,n){return e=e.replace(t,l[n])}),e.replace(/_/g," ")},t.pad=function(e,t){for(var n=String(e||0);n.length<t;)n="0"+n;return n}),d=t.isVerified=function(e){return 1===e||"1"===e||"verified"===e},p=(t.verify=function(e){return d(e)?"verified":"unverified"},t.courtesyS=function(e,t){return e+" "+(1===e?t:t+"s")},t.padSeconds=function(e){return e<10?"0"+e:e}),h=(t.timestamp=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;e/=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;var t=p(Math.round(e)%60);return(e=Math.floor(e/60))>60?Math.floor(e/60)+":"+p(e%60)+":"+t:e%60+":"+t},t.percent=function(e){return(100*e).toFixed(1)+"%"},t.px=function(e,t){return Math.round(e*t)+"px"},t.clamp=function(e,t,n){return e<t?t:e<n?e:n},t.hashPath=function(e){if(!e||e.length<9)throw new Error("Invalid sha256");return[e.slice(0,3),e.slice(3,6),e.slice(6,9),e].join("/")}),m=t.imageUrl=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"th";return["https://sa-vframe.ams3.digitaloceanspaces.com/v1/media/keyframes",d(e)?null:"unverified",h(t),f(n,6),r,"index.jpg"].filter(function(e){return!!e}).join("/")},v=(t.metadataUri=function(e,t){return"/metadata/"+e+"/"+t+"/"},t.keyframeUri=function(e,t){return"/metadata/"+e+"/keyframe/"+f(t,6)+"/"},t.preloadImage=function(e){var t=e.verified,n=e.hash,r=e.frame,o=e.url;n&&r&&(o=m(t,n,r,"md"));var i=new Image,a=!1;i.onload=function(){a||(a=!0,i.onload=null)},i.crossOrigin="anonymous",i.src=o,i.complete&&i.onload()},null),y="",g="",_=(t.post=function(e,t,n){_();var o=void 0;t instanceof FormData?o={Accept:"application/json, application/xml, text/play, text/html, *.*"}:(o={Accept:"application/json, application/xml, text/play, text/html, *.*","Content-Type":"application/json; charset=utf-8"},t=(0,r.default)(t));var i={method:"POST",body:t,headers:o,credentials:"include"};return n&&(o.Authorization="Token "+y),fetch(e,i).then(function(e){return e.json()})},t.login=function(){if(v)return v;var e="0.0.0.0"===window.location.hostname||"127.0.0.1"===window.location.hostname;try{var t=JSON.parse(JSON.parse(localStorage.getItem("persist:root")).auth);return y=t.token,g=t.user.username,y&&console.log("logged in",g),v=t,y||e||(window.location.href="/"),t}catch(t){return e||(window.location.href="/"),{}}})},function(e,t,n){var r=n(13),o=n(10),i=n(34),a=n(26),u=n(25),s=function(e,t,n){var c,l,f,d=e&s.F,p=e&s.G,h=e&s.S,m=e&s.P,v=e&s.B,y=e&s.W,g=p?o:o[t]||(o[t]={}),_=g.prototype,b=p?r:h?r[t]:(r[t]||{}).prototype;for(c in p&&(n=t),n)(l=!d&&b&&void 0!==b[c])&&u(g,c)||(f=l?b[c]:n[c],g[c]=p&&"function"!=typeof b[c]?n[c]:v&&l?i(f,r):y&&b[c]==f?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):m&&"function"==typeof f?i(Function.call,f):f,m&&((g.virtual||(g.virtual={}))[c]=f,e&s.R&&_&&!_[c]&&a(_,c,f)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,e.exports=s},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,i,a,u){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,i,a,u],l=0;(s=new Error(t.replace(/%s/g,function(){return c[l++]}))).name="Invariant Violation"}throw s.framesToPop=1,s}}},function(e,t,n){var r=n(23);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.random=t.browse=t.search=t.searchByFrame=t.searchByVerifiedFrame=t.upload=t.updateOptions=t.panic=t.publicUrl=void 0;var r=s(n(4)),o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(39)),i=n(94),a=n(17),u=s(n(354));function s(e){return e&&e.__esModule?e:{default:e}}var c={upload:function(){return"https://syrianarchive.vframe.io/search/api/upload"},search:function(){return"https://syrianarchive.vframe.io/search/api/fetch"},searchByVerifiedFrame:function(e,t,n){return"https://syrianarchive.vframe.io/search/api/search/"+e+"/"+t+"/"+(0,a.pad)(n,6)},searchByFrame:function(e,t){return"https://syrianarchive.vframe.io/search/api/search/"+e+"/"+(0,a.pad)(t,6)},browse:function(e){return"https://syrianarchive.vframe.io/search/api/list/"+e},random:function(){return"https://syrianarchive.vframe.io/search/api/random"},check:function(){return"https://syrianarchive.vframe.io/api/images/import/search"}},l=t.publicUrl={browse:function(e){return"/search/browse/"+e},searchByVerifiedFrame:function(e,t,n){return"/search/keyframe/"+(0,a.verify)(e)+"/"+t+"/"+(0,a.pad)(n,6)},searchByFrame:function(e,t){return"/search/keyframe/"+e+"/"+(0,a.pad)(t,6)},review:function(){return"/search/review/"}},f=function(e,t){return{type:o.search.loading,tag:e,offset:t}},d=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return{type:o.search.loaded,tag:e,data:t,offset:n}},p=function(e,t){return{type:o.search.error,tag:e,err:t}};t.panic=function(){return function(e){i.history.push("/search/"),e({type:o.search.panic})}},t.updateOptions=function(e){return function(t){t({type:o.search.update_options,opt:e})}},t.upload=function(e,t){return function(n){var o=i.store.getState().search.options,u=new FormData;u.append("query_img",e),u.append("limit",o.perPage),t||n(f("query")),(0,a.post)(c.upload(),u).then(function(e){if(t){var o=e.query.timing;e.query=(0,r.default)({},t,{timing:o});var a={};if(e.query.crop){var u=e.query.crop,s=u.x,c=u.y,l=u.w,f=u.h;a.crop=[s,c,l,f].map(function(e){return parseInt(e,10)}).join(",")}t.url&&!t.hash&&(a.url=t.url)}else e.query.url&&!window.location.search.match(e.query.url)&&i.history.push("/search/?url="+e.query.url);n(d("query",e))}).catch(function(e){return n(p("query",e))})}},t.searchByVerifiedFrame=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return function(o){var s=i.store.getState().search.options;o(f("query",r));var l=u.default.stringify({limit:s.perPage,offset:r});(0,a.preloadImage)({verified:e,hash:t,frame:n}),fetch(c.searchByVerifiedFrame(e,t,n)+"?"+l,{method:"GET",mode:"cors"}).then(function(e){return e.json()}).then(function(e){return o(d("query",e,r))}).catch(function(e){return o(p("query",e))})}},t.searchByFrame=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return function(r){var o=i.store.getState().search.options;r(f("query",n));var s=u.default.stringify({limit:o.perPage,offset:n});(0,a.preloadImage)({verified:!1,hash:e,frame:t}),fetch(c.searchByFrame(e,t)+"?"+s,{method:"GET",mode:"cors"}).then(function(e){return e.json()}).then(function(e){return r(d("query",e,n))}).catch(function(e){return r(p("query",e))})}},t.search=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return function(n){var r=i.store.getState().search.options;n(f("query",t));var o=u.default.stringify({url:e,limit:r.perPage,offset:t});0===e.indexOf("static")&&(0,a.preloadImage)({uri:e}),fetch(c.search(e)+"?"+o,{method:"GET",mode:"cors"}).then(function(e){return e.json()}).then(function(e){return n(d("query",e,t))}).catch(function(e){return n(p("query",e))})}},t.browse=function(e){return function(t){var n="browse";t(f(n)),fetch(c[n](e),{method:"GET",mode:"cors"}).then(function(e){return e.json()}).then(function(e){return t(d(n,e))}).catch(function(e){return t(p(n,e))})}},t.random=function(){return function(e){var t=i.store.getState().search.options,n=u.default.stringify({limit:t.perPage});e(f("query")),fetch(c.random()+"?"+n,{method:"GET",mode:"cors"}).then(function(e){return e.json()}).then(function(t){e(d("query",t)),i.history.push(l.searchByVerifiedFrame(t.query.verified,t.query.hash,t.query.frame))}).catch(function(t){return e(p("query",t))})}}},function(e,t,n){var r=n(20),o=n(125),i=n(77),a=Object.defineProperty;t.f=n(24)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){e.exports=!n(35)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(22),o=n(43);e.exports=n(24)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(275);n.d(t,"createBrowserHistory",function(){return r.a});var o=n(278);n.d(t,"createHashHistory",function(){return o.a});var i=n(279);n.d(t,"createMemoryHistory",function(){return i.a});var a=n(62);n.d(t,"createLocation",function(){return a.a}),n.d(t,"locationsAreEqual",function(){return a.b});var u=n(47);n.d(t,"parsePath",function(){return u.d}),n.d(t,"createPath",function(){return u.b})},function(e,t,n){e.exports={default:n(331),__esModule:!0}},function(e,t,n){var r=n(0),o=n(30);e.exports=function(e){var t=r(e),n=t.getFullYear(),i=new Date(0);i.setFullYear(n+1,0,4),i.setHours(0,0,0,0);var a=o(i),u=new Date(0);u.setFullYear(n,0,4),u.setHours(0,0,0,0);var s=o(u);return t.getTime()>=a.getTime()?n+1:t.getTime()>=s.getTime()?n:n-1}},function(e,t,n){var r=n(66);e.exports=function(e){return r(e,{weekStartsOn:1})}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e);return t.setHours(0,0,0,0),t}},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},function(e,t,n){"use strict";var r=n(70),o=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=f;var i=n(54);i.inherits=n(32);var a=n(201),u=n(111);i.inherits(f,a);for(var s=o(u.prototype),c=0;c<s.length;c++){var l=s[c];f.prototype[l]||(f.prototype[l]=u.prototype[l])}function f(e){if(!(this instanceof f))return new f(e);a.call(this,e),u.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",d)}function d(){this.allowHalfOpen||this._writableState.ended||r.nextTick(p,this)}function p(e){e.end()}Object.defineProperty(f.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(f.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}}),f.prototype._destroy=function(e,t){this.push(null),this.end(),r.nextTick(t,e)}},function(e,t,n){var r=n(56);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports={}},function(e,t,n){var r=n(130),o=n(73);e.exports=function(e){return r(o(e))}},function(e,t,n){"use strict";var r=function(){};e.exports=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=t.asType=function(e,t){return[e,t].join("_").toUpperCase()},o=t.tagAsType=function(e,t){return t.reduce(function(t,n){return t[n]=r(e,n),t},{})};t.metadata=o("metadata",["loading","loaded","loaded_many","error","set_hash"]),t.search=o("search",["loading","loaded","error","panic","update_options"]),t.review=o("review",["loading","loaded","error","save","unsave","refresh","clear","dedupe","create","set_count"]),t.init="@@INIT"},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function u(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var s,c=[],l=!1,f=-1;function d(){l&&s&&(l=!1,s.length?c=s.concat(c):f=-1,c.length&&p())}function p(){if(!l){var e=u(d);l=!0;for(var t=c.length;t;){for(s=c,c=[];++f<t;)s&&s[f].run();f=-1,t=c.length}s=null,l=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function m(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];c.push(new h(e,t)),1!==c.length||l||u(p)},h.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=m,o.addListener=m,o.once=m,o.off=m,o.removeListener=m,o.removeAllListeners=m,o.emit=m,o.prependListener=m,o.prependOnceListener=m,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(e,t,n){var r=n(73);e.exports=function(e){return Object(r(e))}},function(e,t){e.exports=!0},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var r=n(249)(!0);n(127)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var r=n(129),o=n(82);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){"use strict";n.d(t,"a",function(){return r}),n.d(t,"f",function(){return o}),n.d(t,"c",function(){return i}),n.d(t,"e",function(){return a}),n.d(t,"g",function(){return u}),n.d(t,"d",function(){return s}),n.d(t,"b",function(){return c});var r=function(e){return"/"===e.charAt(0)?e:"/"+e},o=function(e){return"/"===e.charAt(0)?e.substr(1):e},i=function(e,t){return new RegExp("^"+t+"(\\/|\\?|#|$)","i").test(e)},a=function(e,t){return i(e,t)?e.substr(t.length):e},u=function(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e},s=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}},c=function(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var o=function(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}(r),i=r.sources.map(function(e){return"/*# sourceURL="+r.sourceRoot+e+" */"});return[n].concat(i).concat([o]).join("\n")}return[n].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o<this.length;o++){var i=this[o][0];"number"==typeof i&&(r[i]=!0)}for(o=0;o<e.length;o++){var a=e[o];"number"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),t.push(a))}},t}},function(e,t,n){var r={},o=function(e){var t;return function(){return void 0===t&&(t=e.apply(this,arguments)),t}}(function(){return window&&document&&document.all&&!window.atob}),i=function(e){var t={};return function(e){if("function"==typeof e)return e();if(void 0===t[e]){var n=function(e){return document.querySelector(e)}.call(this,e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}}(),a=null,u=0,s=[],c=n(317);function l(e,t){for(var n=0;n<e.length;n++){var o=e[n],i=r[o.id];if(i){i.refs++;for(var a=0;a<i.parts.length;a++)i.parts[a](o.parts[a]);for(;a<o.parts.length;a++)i.parts.push(v(o.parts[a],t))}else{var u=[];for(a=0;a<o.parts.length;a++)u.push(v(o.parts[a],t));r[o.id]={id:o.id,refs:1,parts:u}}}}function f(e,t){for(var n=[],r={},o=0;o<e.length;o++){var i=e[o],a=t.base?i[0]+t.base:i[0],u={css:i[1],media:i[2],sourceMap:i[3]};r[a]?r[a].parts.push(u):n.push(r[a]={id:a,parts:[u]})}return n}function d(e,t){var n=i(e.insertInto);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");var r=s[s.length-1];if("top"===e.insertAt)r?r.nextSibling?n.insertBefore(t,r.nextSibling):n.appendChild(t):n.insertBefore(t,n.firstChild),s.push(t);else if("bottom"===e.insertAt)n.appendChild(t);else{if("object"!=typeof e.insertAt||!e.insertAt.before)throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");var o=i(e.insertInto+" "+e.insertAt.before);n.insertBefore(t,o)}}function p(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e);var t=s.indexOf(e);t>=0&&s.splice(t,1)}function h(e){var t=document.createElement("style");return void 0===e.attrs.type&&(e.attrs.type="text/css"),m(t,e.attrs),d(e,t),t}function m(e,t){Object.keys(t).forEach(function(n){e.setAttribute(n,t[n])})}function v(e,t){var n,r,o,i;if(t.transform&&e.css){if(!(i=t.transform(e.css)))return function(){};e.css=i}if(t.singleton){var s=u++;n=a||(a=h(t)),r=g.bind(null,n,s,!1),o=g.bind(null,n,s,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",m(t,e.attrs),d(e,t),t}(t),r=function(e,t,n){var r=n.css,o=n.sourceMap,i=void 0===t.convertToAbsoluteUrls&&o;(t.convertToAbsoluteUrls||i)&&(r=c(r));o&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([r],{type:"text/css"}),u=e.href;e.href=URL.createObjectURL(a),u&&URL.revokeObjectURL(u)}.bind(null,n,t),o=function(){p(n),n.href&&URL.revokeObjectURL(n.href)}):(n=h(t),r=function(e,t){var n=t.css,r=t.media;r&&e.setAttribute("media",r);if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}.bind(null,n),o=function(){p(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=o()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=f(e,t);return l(n,t),function(e){for(var o=[],i=0;i<n.length;i++){var a=n[i];(u=r[a.id]).refs--,o.push(u)}e&&l(f(e,t),t);for(i=0;i<o.length;i++){var u;if(0===(u=o[i]).refs){for(var s=0;s<u.parts.length;s++)u.parts[s]();delete r[u.id]}}}};var y=function(){var e=[];return function(t,n){return e[t]=n,e.filter(Boolean).join("\n")}}();function g(e,t,n,r){var o=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=y(t,o);else{var i=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(i,a[t]):e.appendChild(i)}}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setDate(n.getDate()+o),n}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e).getTime(),o=Number(t);return new Date(n+o)}},function(e,t,n){var r=n(29),o=n(30);e.exports=function(e){var t=r(e),n=new Date(0);return n.setFullYear(t,0,4),n.setHours(0,0,0,0),o(n)}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e).getTime(),o=r(t).getTime();return n<o?-1:n>o?1:0}},function(e,t,n){(function(e){function n(e){return Object.prototype.toString.call(e)}t.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===n(e)},t.isBoolean=function(e){return"boolean"==typeof e},t.isNull=function(e){return null===e},t.isNullOrUndefined=function(e){return null==e},t.isNumber=function(e){return"number"==typeof e},t.isString=function(e){return"string"==typeof e},t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=function(e){return void 0===e},t.isRegExp=function(e){return"[object RegExp]"===n(e)},t.isObject=function(e){return"object"==typeof e&&null!==e},t.isDate=function(e){return"[object Date]"===n(e)},t.isError=function(e){return"[object Error]"===n(e)||e instanceof Error},t.isFunction=function(e){return"function"==typeof e},t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=e.isBuffer}).call(t,n(204).Buffer)},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var r=n(22).f,o=n(25),i=n(14)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){n(254);for(var r=n(13),o=n(26),i=n(36),a=n(14)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),s=0;s<u.length;s++){var c=u[s],l=r[c],f=l&&l.prototype;f&&!f[a]&&o(f,a,c),i[c]=i.Array}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=t.LOCATION_CHANGE="@@router/LOCATION_CHANGE",o=(t.onLocationChanged=function(e,t){return{type:g("LOCATION_CHANGE"),payload:{location:e,action:t}}},t.CALL_HISTORY_METHOD="@@router/CALL_HISTORY_METHOD"),i=function(e){return function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return{type:g("CALL_HISTORY_METHOD"),payload:{method:e,args:n}}}},a=t.push=g("updateLocation")("push"),u=t.replace=g("updateLocation")("replace"),s=t.go=g("updateLocation")("go"),c=t.goBack=g("updateLocation")("goBack"),l=t.goForward=g("updateLocation")("goForward");t.routerActions={push:g("push"),replace:g("replace"),go:g("go"),goBack:g("goBack"),goForward:g("goForward")};function f(){try{if(e)return e}catch(e){try{if(window)return window}catch(e){return this}}}var d=null;function p(){if(null===d){var e=f();e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__||(e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__=0),d=__$$GLOBAL_REWIRE_NEXT_MODULE_ID__++}return d}function h(){var e=f();return e.__$$GLOBAL_REWIRE_REGISTRY__||(e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)),__$$GLOBAL_REWIRE_REGISTRY__}function m(){var e=p(),t=h(),n=t[e];return n||(t[e]=Object.create(null),n=t[e]),n}!function(){var e=f();e.__rewire_reset_all__||(e.__rewire_reset_all__=function(){e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)})}();var v="__INTENTIONAL_UNDEFINED__",y={};function g(e){var t=m();if(void 0===t[e])return function(e){switch(e){case"LOCATION_CHANGE":return r;case"CALL_HISTORY_METHOD":return o;case"updateLocation":return i;case"push":return a;case"replace":return u;case"go":return s;case"goBack":return c;case"goForward":return l}return}(e);var n=t[e];return n===v?void 0:n}function _(e,t){var r=m();if("object"!==(void 0===e?"undefined":n(e)))return r[e]=void 0===t?v:t,function(){b(e)};Object.keys(e).forEach(function(t){r[t]=e[t]})}function b(e){var t=m();delete t[e],0==Object.keys(t).length&&delete h()[p]}function w(e){var t=m(),n=Object.keys(e),r={};function o(){n.forEach(function(e){t[e]=r[e]})}return function(i){n.forEach(function(n){r[n]=t[n],t[n]=e[n]});var a=i();return a&&"function"==typeof a.then?a.then(o).catch(o):o(),a}}!function(){function e(e,t){Object.defineProperty(y,e,{value:t,enumerable:!1,configurable:!0})}e("__get__",g),e("__GetDependency__",g),e("__Rewire__",_),e("__set__",_),e("__reset__",b),e("__ResetDependency__",b),e("__with__",w)}(),t.__get__=g,t.__GetDependency__=g,t.__Rewire__=_,t.__set__=_,t.__ResetDependency__=b,t.__RewireAPI__=y,t.default=y}).call(t,n(3))},function(e,t,n){"use strict";var r=function(){};e.exports=r},function(e,t,n){"use strict";n.d(t,"a",function(){return u}),n.d(t,"b",function(){return s});var r=n(276),o=n(277),i=n(47),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(e,t,n,o){var u=void 0;"string"==typeof e?(u=Object(i.d)(e)).state=t:(void 0===(u=a({},e)).pathname&&(u.pathname=""),u.search?"?"!==u.search.charAt(0)&&(u.search="?"+u.search):u.search="",u.hash?"#"!==u.hash.charAt(0)&&(u.hash="#"+u.hash):u.hash="",void 0!==t&&void 0===u.state&&(u.state=t));try{u.pathname=decodeURI(u.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+u.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(u.key=n),o?u.pathname?"/"!==u.pathname.charAt(0)&&(u.pathname=Object(r.a)(u.pathname,o.pathname)):u.pathname=o.pathname:u.pathname||(u.pathname="/"),u},s=function(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&Object(o.a)(e.state,t.state)}},function(e,t,n){"use strict";var r=n(38),o=n.n(r),i=n(19),a=n.n(i),u=n(1),s=n.n(u),c=n(12),l=n.n(c),f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function d(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var p=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=d(this,e.call.apply(e,[this].concat(i))),r.state={match:r.computeMatch(r.props.history.location.pathname)},d(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getChildContext=function(){return{router:f({},this.context.router,{history:this.props.history,route:{location:this.props.history.location,match:this.state.match}})}},t.prototype.computeMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}},t.prototype.componentWillMount=function(){var e=this,t=this.props,n=t.children,r=t.history;a()(null==n||1===s.a.Children.count(n),"A <Router> may have only one child element"),this.unlisten=r.listen(function(){e.setState({match:e.computeMatch(r.location.pathname)})})},t.prototype.componentWillReceiveProps=function(e){o()(this.props.history===e.history,"You cannot change <Router history>")},t.prototype.componentWillUnmount=function(){this.unlisten()},t.prototype.render=function(){var e=this.props.children;return e?s.a.Children.only(e):null},t}(s.a.Component);p.propTypes={history:l.a.object.isRequired,children:l.a.node},p.contextTypes={router:l.a.object},p.childContextTypes={router:l.a.object.isRequired},t.a=p},function(e,t,n){"use strict";var r=n(140),o=n.n(r),i={},a=0;t.a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"string"==typeof t&&(t={path:t});var r=t,u=r.path,s=r.exact,c=void 0!==s&&s,l=r.strict,f=void 0!==l&&l,d=r.sensitive,p=void 0!==d&&d;if(null==u)return n;var h=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=i[n]||(i[n]={});if(r[e])return r[e];var u=[],s={re:o()(e,u,t),keys:u};return a<1e4&&(r[e]=s,a++),s}(u,{end:c,strict:f,sensitive:p}),m=h.re,v=h.keys,y=m.exec(e);if(!y)return null;var g=y[0],_=y.slice(1),b=e===g;return c&&!b?null:{path:u,url:"/"===u&&""===g?"/":g,isExact:b,params:v.reduce(function(e,t,n){return e[t.name]=_[n],e},{})}}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(126));t.default=function(e,t,n){return t in e?(0,r.default)(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=t&&Number(t.weekStartsOn)||0,o=r(e),i=o.getDay(),a=(i<n?7:0)+i-n;return o.setDate(o.getDate()-a),o.setHours(0,0,0,0),o}},function(e,t,n){var r=n(31),o=6e4,i=864e5;e.exports=function(e,t){var n=r(e),a=r(t),u=n.getTime()-n.getTimezoneOffset()*o,s=a.getTime()-a.getTimezoneOffset()*o;return Math.round((u-s)/i)}},function(e,t,n){var r=n(0),o=n(100);e.exports=function(e,t){var n=r(e),i=Number(t),a=n.getMonth()+i,u=new Date(0);u.setFullYear(n.getFullYear(),a,1),u.setHours(0,0,0,0);var s=o(u);return n.setMonth(a,Math.min(s,n.getDate())),n}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()-o.getTime()}},function(e,t,n){"use strict";(function(t){!t.version||0===t.version.indexOf("v0.")||0===t.version.indexOf("v1.")&&0!==t.version.indexOf("v1.8.")?e.exports={nextTick:function(e,n,r,o){if("function"!=typeof e)throw new TypeError('"callback" argument must be a function');var i,a,u=arguments.length;switch(u){case 0:case 1:return t.nextTick(e);case 2:return t.nextTick(function(){e.call(null,n)});case 3:return t.nextTick(function(){e.call(null,n,r)});case 4:return t.nextTick(function(){e.call(null,n,r,o)});default:for(i=new Array(u-1),a=0;a<i.length;)i[a++]=arguments[a];return t.nextTick(function(){e.apply(null,i)})}}}:e.exports=t}).call(t,n(40))},function(e,t,n){var r=n(204),o=r.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function a(e,t,n){return o(e,t,n)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=a),i(o,a),a.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return o(e,t,n)},a.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=o(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},a.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return o(e)},a.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},function(e,t,n){"use strict";t.a=function(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(75)("keys"),o=n(55);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(10),o=n(13),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(42)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(e,t,n){var r=n(23),o=n(13).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t,n){var r=n(23);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(247)),o=a(n(257)),i="function"==typeof o.default&&"symbol"==typeof r.default?function(e){return typeof e}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":typeof e};function a(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof o.default&&"symbol"===i(r.default)?function(e){return void 0===e?"undefined":i(e)}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":void 0===e?"undefined":i(e)}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(20),o=n(251),i=n(82),a=n(74)("IE_PROTO"),u=function(){},s=function(){var e,t=n(76)("iframe"),r=i.length;for(t.style.display="none",n(131).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),s=e.F;r--;)delete s.prototype[i[r]];return s()};e.exports=Object.create||function(e,t){var n;return null!==e?(u.prototype=r(e),n=new u,u.prototype=null,n[a]=e):n=s(),void 0===t?n:o(n,t)}},function(e,t,n){var r=n(79),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){t.f=n(14)},function(e,t,n){var r=n(13),o=n(10),i=n(42),a=n(83),u=n(22).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||u(t,e,{value:a.f(e)})}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(136);n.d(t,"MemoryRouter",function(){return r.a});var o=n(138);n.d(t,"Prompt",function(){return o.a});var i=n(139);n.d(t,"Redirect",function(){return i.a});var a=n(89);n.d(t,"Route",function(){return a.a});var u=n(63);n.d(t,"Router",function(){return u.a});var s=n(141);n.d(t,"StaticRouter",function(){return s.a});var c=n(142);n.d(t,"Switch",function(){return c.a});var l=n(88);n.d(t,"generatePath",function(){return l.a});var f=n(64);n.d(t,"matchPath",function(){return f.a});var d=n(143);n.d(t,"withRouter",function(){return d.a})},function(e,t,n){"use strict";var r=n(61),o=n.n(r);t.a=function(){var e=null,t=[];return{setPrompt:function(t){return o()(null==e,"A history supports only one prompt at a time"),e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,i){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,i):(o()(!1,"A history needs a getUserConfirmation function in order to use a prompt message"),i(!0)):i(!1!==a)}else i(!0)},appendListener:function(e){var n=!0,r=function(){n&&e.apply(void 0,arguments)};return t.push(r),function(){n=!1,t=t.filter(function(e){return e!==r})}},notifyListeners:function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach(function(e){return e.apply(void 0,n)})}}}},function(e,t,n){"use strict";var r=n(140),o=n.n(r),i={},a=0;t.a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"/"===e?e:function(e){var t=e,n=i[t]||(i[t]={});if(n[e])return n[e];var r=o.a.compile(e);return a<1e4&&(n[e]=r,a++),r}(e)(t,{pretty:!0})}},function(e,t,n){"use strict";var r=n(38),o=n.n(r),i=n(19),a=n.n(i),u=n(1),s=n.n(u),c=n(12),l=n.n(c),f=n(64),d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function p(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var h=function(e){return 0===s.a.Children.count(e)},m=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=p(this,e.call.apply(e,[this].concat(i))),r.state={match:r.computeMatch(r.props,r.context.router)},p(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getChildContext=function(){return{router:d({},this.context.router,{route:{location:this.props.location||this.context.router.route.location,match:this.state.match}})}},t.prototype.computeMatch=function(e,t){var n=e.computedMatch,r=e.location,o=e.path,i=e.strict,u=e.exact,s=e.sensitive;if(n)return n;a()(t,"You should not use <Route> or withRouter() outside a <Router>");var c=t.route,l=(r||c.location).pathname;return Object(f.a)(l,{path:o,strict:i,exact:u,sensitive:s},c.match)},t.prototype.componentWillMount=function(){o()(!(this.props.component&&this.props.render),"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored"),o()(!(this.props.component&&this.props.children&&!h(this.props.children)),"You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored"),o()(!(this.props.render&&this.props.children&&!h(this.props.children)),"You should not use <Route render> and <Route children> in the same route; <Route children> will be ignored")},t.prototype.componentWillReceiveProps=function(e,t){o()(!(e.location&&!this.props.location),'<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),o()(!(!e.location&&this.props.location),'<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.'),this.setState({match:this.computeMatch(e,t.router)})},t.prototype.render=function(){var e=this.state.match,t=this.props,n=t.children,r=t.component,o=t.render,i=this.context.router,a=i.history,u=i.route,c=i.staticContext,l={match:e,location:this.props.location||u.location,history:a,staticContext:c};return r?e?s.a.createElement(r,l):null:o?e?o(l):null:"function"==typeof n?n(l):n&&!h(n)?s.a.Children.only(n):null},t}(s.a.Component);m.propTypes={computedMatch:l.a.object,path:l.a.string,exact:l.a.bool,strict:l.a.bool,sensitive:l.a.bool,component:l.a.func,render:l.a.func,children:l.a.oneOfType([l.a.func,l.a.node]),location:l.a.object},m.contextTypes={router:l.a.shape({history:l.a.object.isRequired,route:l.a.object.isRequired,staticContext:l.a.object})},m.childContextTypes={router:l.a.object.isRequired},t.a=m},function(e,t,n){"use strict";e.exports=n(288)},function(e,t,n){"use strict";t.a=function(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}},function(e,t,n){"use strict";var r=n(63);t.a=r.a},function(e,t,n){e.exports={default:n(333),__esModule:!0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.history=t.store=void 0;var r=n(15),o=n(135),i=n(27),a=f(n(345)),u=n(17),s=f(n(346)),c=f(n(347)),l=f(n(353));function f(e){return e&&e.__esModule?e:{default:e}}var d=(0,r.combineReducers)({auth:function(){return arguments.length>0&&void 0!==arguments[0]?arguments[0]:(0,u.login)()},metadata:s.default,search:c.default,review:l.default});var p=(0,i.createBrowserHistory)(),h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],n=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||r.compose;return(0,r.createStore)((0,o.connectRouter)(t)(d),e,n((0,r.applyMiddleware)(a.default,(0,o.routerMiddleware)(t))))}({},p);t.store=h,t.history=p},function(e,t,n){var r=n(96),o=n(14)("iterator"),i=n(36);e.exports=n(10).getIteratorMethod=function(e){if(void 0!=e)return e[o]||e["@@iterator"]||i[r(e)]}},function(e,t,n){var r=n(46),o=n(14)("toStringTag"),i="Arguments"==r(function(){return arguments}());e.exports=function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:i?r(t):"Object"==(a=r(t))&&"function"==typeof t.callee?"Arguments":a}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.create=t.dedupe=t.exportCSV=t.clear=t.refresh=t.toggleSaved=t.unsave=t.save=void 0;var r=f(n(365)),o=f(n(28)),i=n(165),a=f(n(478)),u=f(n(496)),s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(39)),c=n(17),l=n(159);function f(e){return e&&e.__esModule?e:{default:e}}var d=function(){return"/api/images/import/new/"},p=function(e){return{type:s.metadata.loading,tag:e}},h=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{type:s.metadata.loaded,tag:e,data:t}},m=function(e,t){return{type:s.metadata.error,tag:e,err:t}},v=t.save=function(e){return function(t){console.log("save",e);var n=(0,l.getSavedFromStore)(),r=n[e.hash]||{frames:{},hash:e.hash,verified:e.verified};e.frame&&(r.frames[parseInt(e.frame,10)]=!0),r.verified=e.verified,n[e.hash]=r,t({type:s.review.save,saved:n}),t({type:s.review.dedupe,payload:!1})}},y=t.unsave=function(e){return function(t){console.log("unsave",e);var n=(0,l.getSavedFromStore)(),r=n[e.hash];r&&e.frame&&r.frames[parseInt(e.frame,10)]&&(r.frames[parseInt(e.frame,10)]=!1),t({type:s.review.unsave,saved:n})}};t.toggleSaved=function(e){return function(t){var n=e.hash,r=e.frame,o=(0,l.getSavedFromStore)(),i=o[n],a=!1;console.log(o,i),i&&r&&i.frames&&i.frames[parseInt(r,10)]&&(a=i.frames[parseInt(r,10)]),console.log(a),a?y(e)(t):v(e)(t)}},t.refresh=function(){return function(e){var t=(0,l.getSavedFromStore)();(0,o.default)(t).forEach(function(e){var n=t[e],r=0,i=(0,o.default)(n.frames);i.forEach(function(e){n.frames[e]||(delete n.frames[e],r+=1)}),i.length&&i.length!==r||delete t[e]}),e({type:s.review.refresh,saved:t})}},t.clear=function(){return function(e){e({type:s.review.clear})}},t.exportCSV=function(){return function(e){console.log("export CSV");var t=(0,l.getSavedFromStore)(),n=(0,o.default)(t).sort().map(function(e){var n=t[e],r=n.verified,i=n.hash,a=n.frames;return[i,(0,o.default)(a).join(", "),(0,c.verify)(r)]});(0,a.default)(n,function(t,r){var o=new Blob([r],{type:"text/csv"});(0,u.default)(o,"vsearch_investigation_"+(0,i.format)(new Date,"YYYYMMDD_HHmm")+".csv"),e(h("csv",{count:n.length}))})}},t.dedupe=function(){return function(e){return e(p("dedupe")),new r.default(function(t,n){var r=(0,l.getSavedUrls)();(0,c.post)("/api/images/import/search/",{urls:r}).then(function(n){var r=n.good,o=n.bad,i=(0,l.getSavedFromStore)();o.forEach(function(e){var t=e.image;console.log(t);var n=t.sa_hash,r=t.frame,o=parseInt(r,10);i[n]&&i[n].frames[o]&&(i[n].frames[o]=!1,1)}),e({type:s.review.save,saved:i}),e({type:s.review.dedupe,payload:!0}),t(r,o)}).catch(function(t){e({type:s.review.dedupe,payload:!1}),n(t)})})}},t.create=function(e){var t=e.title,n=e.graphic;return function(e){var r=(0,l.getSavedUrls)();return t?r?(e(p("create")),(0,c.post)(d(),{title:t,graphic:n,urls:r}).then(function(t){e(h("create")),window.location.href="/groups/show/"+t.image_group.id}).catch(function(t){e(m("create")),console.log(t)})):e(m("create","No images to save")):e(m("create","No title"))}}},function(e,t,n){"use strict";var r=n(56);e.exports.f=function(e){return new function(e){var t,n;this.promise=new e(function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r}),this.resolve=r(t),this.reject=r(n)}(e)}},function(e,t){e.exports=function(e){return e instanceof Date}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e),n=t.getFullYear(),o=t.getMonth(),i=new Date(0);return i.setFullYear(n,o+1,0),i.setHours(0,0,0,0),i.getDate()}},function(e,t,n){var r=n(50);e.exports=function(e,t){var n=Number(t);return r(e,7*n)}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e).getTime(),o=r(t).getTime();return n>o?-1:n<o?1:0}},function(e,t,n){var r=n(0),o=n(174),i=n(53);e.exports=function(e,t){var n=r(e),a=r(t),u=i(n,a),s=Math.abs(o(n,a));return n.setMonth(n.getMonth()-u*s),u*(s-(i(n,a)===-u))}},function(e,t,n){var r=n(69);e.exports=function(e,t){var n=r(e,t)/1e3;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(389),o=n(390);e.exports={distanceInWords:r(),format:o()}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e);return t.setHours(23,59,59,999),t}},function(e,t,n){var r=n(0),o=n(30),i=n(52),a=6048e5;e.exports=function(e){var t=r(e),n=o(t).getTime()-i(t).getTime();return Math.round(n/a)+1}},function(e,t,n){var r=n(66);e.exports=function(e,t,n){var o=r(e,n),i=r(t,n);return o.getTime()===i.getTime()}},function(e,t){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function o(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(e){if(!function(e){return"number"==typeof e}(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},n.prototype.emit=function(e){var t,n,a,u,s,c;if(this._events||(this._events={}),"error"===e&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var l=new Error('Uncaught, unspecified "error" event. ('+t+")");throw l.context=t,l}if(i(n=this._events[e]))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:u=Array.prototype.slice.call(arguments,1),n.apply(this,u)}else if(o(n))for(u=Array.prototype.slice.call(arguments,1),a=(c=n.slice()).length,s=0;s<a;s++)c[s].apply(this,u);return!0},n.prototype.addListener=function(e,t){var a;if(!r(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,r(t.listener)?t.listener:t),this._events[e]?o(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,o(this._events[e])&&!this._events[e].warned&&(a=i(this._maxListeners)?n.defaultMaxListeners:this._maxListeners)&&a>0&&this._events[e].length>a&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var n=!1;function o(){this.removeListener(e,o),n||(n=!0,t.apply(this,arguments))}return o.listener=t,this.on(e,o),this},n.prototype.removeListener=function(e,t){var n,i,a,u;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(a=(n=this._events[e]).length,i=-1,n===t||r(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(u=a;u-- >0;)if(n[u]===t||n[u].listener&&n[u].listener===t){i=u;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},n.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,n){(t=e.exports=n(201)).Stream=t,t.Readable=t,t.Writable=n(111),t.Duplex=n(33),t.Transform=n(207),t.PassThrough=n(488)},function(e,t,n){"use strict";(function(t,r,o){var i=n(70);function a(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var o=r.callback;t.pendingcb--,o(n),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=g;var u,s=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:i.nextTick;g.WritableState=y;var c=n(54);c.inherits=n(32);var l={deprecate:n(487)},f=n(203),d=n(71).Buffer,p=o.Uint8Array||function(){};var h,m=n(205);function v(){}function y(e,t){u=u||n(33),e=e||{};var r=t instanceof u;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var o=e.highWaterMark,c=e.writableHighWaterMark,l=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(c||0===c)?c:l,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var f=!1===e.decodeStrings;this.decodeStrings=!f,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,o=n.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,o){--t.pendingcb,n?(i.nextTick(o,r),i.nextTick(O,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(o(r),e._writableState.errorEmitted=!0,e.emit("error",r),O(e,t))}(e,n,r,t,o);else{var a=x(n);a||n.corked||n.bufferProcessing||!n.bufferedRequest||w(e,n),r?s(b,e,n,a,o):b(e,n,a,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function g(e){if(u=u||n(33),!(h.call(g,this)||this instanceof u))return new g(e);this._writableState=new y(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),f.call(this)}function _(e,t,n,r,o,i,a){t.writelen=r,t.writecb=a,t.writing=!0,t.sync=!0,n?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function b(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),O(e,t)}function w(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,o=new Array(r),i=t.corkedRequestsFree;i.entry=n;for(var u=0,s=!0;n;)o[u]=n,n.isBuf||(s=!1),n=n.next,u+=1;o.allBuffers=s,_(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new a(t),t.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,l=n.encoding,f=n.callback;if(_(e,t,!1,t.objectMode?1:c.length,c,l,f),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function x(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function E(e,t){e._final(function(n){t.pendingcb--,n&&e.emit("error",n),t.prefinished=!0,e.emit("prefinish"),O(e,t)})}function O(e,t){var n=x(t);return n&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(E,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),n}c.inherits(g,f),y.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(y.prototype,"buffer",{get:l.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(h=Function.prototype[Symbol.hasInstance],Object.defineProperty(g,Symbol.hasInstance,{value:function(e){return!!h.call(this,e)||this===g&&(e&&e._writableState instanceof y)}})):h=function(e){return e instanceof this},g.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},g.prototype.write=function(e,t,n){var r=this._writableState,o=!1,a=!r.objectMode&&function(e){return d.isBuffer(e)||e instanceof p}(e);return a&&!d.isBuffer(e)&&(e=function(e){return d.from(e)}(e)),"function"==typeof t&&(n=t,t=null),a?t="buffer":t||(t=r.defaultEncoding),"function"!=typeof n&&(n=v),r.ended?function(e,t){var n=new Error("write after end");e.emit("error",n),i.nextTick(t,n)}(this,n):(a||function(e,t,n,r){var o=!0,a=!1;return null===n?a=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||t.objectMode||(a=new TypeError("Invalid non-string/buffer chunk")),a&&(e.emit("error",a),i.nextTick(r,a),o=!1),o}(this,r,e,n))&&(r.pendingcb++,o=function(e,t,n,r,o,i){if(!n){var a=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=d.from(t,n));return t}(t,r,o);r!==a&&(n=!0,o="buffer",r=a)}var u=t.objectMode?1:r.length;t.length+=u;var s=t.length<t.highWaterMark;s||(t.needDrain=!0);if(t.writing||t.corked){var c=t.lastBufferedRequest;t.lastBufferedRequest={chunk:r,encoding:o,isBuf:n,callback:i,next:null},c?c.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else _(e,t,!1,u,r,o,i);return s}(this,r,a,e,t,n)),o},g.prototype.cork=function(){this._writableState.corked++},g.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||w(this,e))},g.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},g.prototype._writev=null,g.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!==e&&void 0!==e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,n){t.ending=!0,O(e,t),n&&(t.finished?i.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n)},Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),g.prototype.destroy=m.destroy,g.prototype._undestroy=m.undestroy,g.prototype._destroy=function(e,t){this.end(),t(e)}}).call(t,n(40),n(485).setImmediate,n(3))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fetchMetadata=t.fetchMediaRecord=t.dispatchFetch=t.setHash=void 0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(503)),o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(39));var i={mediaRecord:function(e){return"/search/api/mediarecord/"+e},metadata:function(e){return"/api/metadata/"+e+"/"}},a=function(e,t){return{type:o.metadata.loading,tag:e,hash:t}},u=function(e,t,n){return{type:o.metadata.error,tag:e,hash:t,err:n}},s=(t.setHash=function(e){return function(t){t({type:o.metadata.set_hash,hash:e})}},t.dispatchFetch=function(e,t){return function(n){n(a(e,t)),function(e){return fetch(e,{}).then(function(e){return e.json()})}(i[e](t)).then(function(r){return n(function(e,t,n){return{type:o.metadata.loaded,tag:e,hash:t,data:n}}(e,t,r))}).catch(function(r){return n(u(e,t,r))})}});t.fetchMediaRecord=function(e){return function(t){return s("mediaRecord",e)(t)}},t.fetchMetadata=function(e){return function(t){t(a("metadata",e)),(0,r.default)(i.metadata(e)).then(function(e){return e.json()}).then(function(n){return t(function(e,t,n){return{type:o.metadata.loaded_many,tag:e,hash:t,data:n}}("metadata",e,n))}).catch(function(n){return t(u("metadata",e,n))})}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.places365=t.coco=void 0;var r=i(n(509)),o=i(n(510));function i(e){return e&&e.__esModule?e:{default:e}}t.coco=r.default,t.places365=o.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=y(n(4)),o=y(n(5)),i=y(n(6)),a=y(n(7)),u=y(n(8)),s=y(n(9)),c=n(1),l=y(c),f=n(16),d=n(15),p=n(2),h=n(165),m=n(17),v=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(21));function y(e){return e&&e.__esModule?e:{default:e}}var g=function(e){function t(){return(0,i.default)(this,t),(0,u.default)(this,(t.__proto__||(0,o.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,a.default)(t,[{key:"render",value:function(){var e=this.props,t=e.query,n=e.metadata,r=e.sugarcube;if(!t||!n||!n.mediainfo||"loading"===n.metadata)return l.default.createElement("div",{className:"searchMeta"});var o=n.mediainfo.sugarcube_id,i=n.mediainfo.metadata.mediainfo.video,a=t.crop||{},u=a.x,s=a.y,c=a.w,d=a.h;return l.default.createElement("div",{className:"searchMeta"},"verified"in t&&l.default.createElement("span",{className:t.verified?"verified":"unverified"},t.verified?"verified":"unverified"),t.hash&&l.default.createElement("span",null,"sha256: ",l.default.createElement(f.Link,{className:"sha256",to:v.publicUrl.browse(t.hash)},t.hash)),t.frame&&l.default.createElement("span",null,"Frame: ",(0,m.timestamp)(t.frame,i.frame_rate)," / ",(0,m.timestamp)(i.duration/1e3,1)),t.crop&&l.default.createElement("span",null,"Crop: ",parseInt(c,10)+"x"+parseInt(d,10)+" @ ("+parseInt(u,10)+", "+parseInt(s,10)+")"),!(!i||!i.encoded_date)&&l.default.createElement("span",null,"Date: ",(0,h.format)(new Date(i.encoded_date),"DD-MMM-YYYY")),!(!r||!o)&&l.default.createElement("span",null,"sugarcube: ",o))}}]),t}(c.Component);t.default=(0,p.connect)(function(e){return{metadata:e.metadata}},function(e){return{actions:(0,d.bindActionCreators)((0,r.default)({},v),e)}})(g)},function(e,t,n){"use strict";
+/*
+object-assign
+(c) Sindre Sorhus
+@license MIT
+*/var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,a,u=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var c in n=Object(arguments[s]))o.call(n,c)&&(u[c]=n[c]);if(r){a=r(n);for(var l=0;l<a.length;l++)i.call(n,a[l])&&(u[a[l]]=n[a[l]])}}return u}},function(e,t,n){"use strict";n.d(t,"b",function(){return i}),n.d(t,"a",function(){return a});var r=n(12),o=n.n(r),i=o.a.shape({trySubscribe:o.a.func.isRequired,tryUnsubscribe:o.a.func.isRequired,notifyNestedSubs:o.a.func.isRequired,isSubscribed:o.a.func.isRequired}),a=o.a.shape({subscribe:o.a.func.isRequired,dispatch:o.a.func.isRequired,getState:o.a.func.isRequired})},function(e,t,n){"use strict";t.a=function(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.getDisplayName,h=void 0===i?function(e){return"ConnectAdvanced("+e+")"}:i,m=r.methodName,v=void 0===m?"connectAdvanced":m,y=r.renderCountProp,g=void 0===y?void 0:y,_=r.shouldHandleStateChanges,b=void 0===_||_,w=r.storeKey,x=void 0===w?"store":w,E=r.withRef,O=void 0!==E&&E,S=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(r,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef"]),T=x+"Subscription",k=f++,R=((t={})[x]=c.a,t[T]=c.b,t),j=((n={})[T]=c.b,n);return function(t){a()("function"==typeof t,"You must pass a component to the function returned by "+v+". Instead received "+JSON.stringify(t));var n=t.displayName||t.name||"Component",r=h(n),i=l({},S,{getDisplayName:h,methodName:v,renderCountProp:g,shouldHandleStateChanges:b,storeKey:x,withRef:O,displayName:r,wrappedComponentName:n,WrappedComponent:t}),c=function(n){function o(e,t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o);var i=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,n.call(this,e,t));return i.version=k,i.state={},i.renderCount=0,i.store=e[x]||t[x],i.propsMode=Boolean(e[x]),i.setWrappedInstance=i.setWrappedInstance.bind(i),a()(i.store,'Could not find "'+x+'" in either the context or props of "'+r+'". Either wrap the root component in a <Provider>, or explicitly pass "'+x+'" as a prop to "'+r+'".'),i.initSelector(),i.initSubscription(),i}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(o,n),o.prototype.getChildContext=function(){var e,t=this.propsMode?null:this.subscription;return(e={})[T]=t||this.context[T],e},o.prototype.componentDidMount=function(){b&&(this.subscription.trySubscribe(),this.selector.run(this.props),this.selector.shouldComponentUpdate&&this.forceUpdate())},o.prototype.componentWillReceiveProps=function(e){this.selector.run(e)},o.prototype.shouldComponentUpdate=function(){return this.selector.shouldComponentUpdate},o.prototype.componentWillUnmount=function(){this.subscription&&this.subscription.tryUnsubscribe(),this.subscription=null,this.notifyNestedSubs=p,this.store=null,this.selector.run=p,this.selector.shouldComponentUpdate=!1},o.prototype.getWrappedInstance=function(){return a()(O,"To access the wrapped instance, you need to specify { withRef: true } in the options argument of the "+v+"() call."),this.wrappedInstance},o.prototype.setWrappedInstance=function(e){this.wrappedInstance=e},o.prototype.initSelector=function(){var t=e(this.store.dispatch,i);this.selector=function(e,t){var n={run:function(r){try{var o=e(t.getState(),r);(o!==n.props||n.error)&&(n.shouldComponentUpdate=!0,n.props=o,n.error=null)}catch(e){n.shouldComponentUpdate=!0,n.error=e}}};return n}(t,this.store),this.selector.run(this.props)},o.prototype.initSubscription=function(){if(b){var e=(this.propsMode?this.props:this.context)[T];this.subscription=new s.a(this.store,e,this.onStateChange.bind(this)),this.notifyNestedSubs=this.subscription.notifyNestedSubs.bind(this.subscription)}},o.prototype.onStateChange=function(){this.selector.run(this.props),this.selector.shouldComponentUpdate?(this.componentDidUpdate=this.notifyNestedSubsOnComponentDidUpdate,this.setState(d)):this.notifyNestedSubs()},o.prototype.notifyNestedSubsOnComponentDidUpdate=function(){this.componentDidUpdate=void 0,this.notifyNestedSubs()},o.prototype.isSubscribed=function(){return Boolean(this.subscription)&&this.subscription.isSubscribed()},o.prototype.addExtraProps=function(e){if(!(O||g||this.propsMode&&this.subscription))return e;var t=l({},e);return O&&(t.ref=this.setWrappedInstance),g&&(t[g]=this.renderCount++),this.propsMode&&this.subscription&&(t[T]=this.subscription),t},o.prototype.render=function(){var e=this.selector;if(e.shouldComponentUpdate=!1,e.error)throw e.error;return Object(u.createElement)(t,this.addExtraProps(e.props))},o}(u.Component);return c.WrappedComponent=t,c.displayName=r,c.childContextTypes=j,c.contextTypes=R,c.propTypes=R,o()(c,t)}};var r=n(118),o=n.n(r),i=n(19),a=n.n(i),u=n(1),s=(n.n(u),n(223)),c=n(116),l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};var f=0,d={};function p(){}},function(e,t,n){"use strict";var r={childContextTypes:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i=Object.defineProperty,a=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols,s=Object.getOwnPropertyDescriptor,c=Object.getPrototypeOf,l=c&&c(Object);e.exports=function e(t,n,f){if("string"!=typeof n){if(l){var d=c(n);d&&d!==l&&e(t,d,f)}var p=a(n);u&&(p=p.concat(u(n)));for(var h=0;h<p.length;++h){var m=p[h];if(!(r[m]||o[m]||f&&f[m])){var v=s(n,m);try{i(t,m,v)}catch(e){}}}return t}return t}},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t,n){"use strict";t.a=function(e){return function(t,n){var r=e(t,n);function o(){return r}return o.dependsOnOwnProps=!1,o}},t.b=function(e,t){return function(t,n){n.displayName;var o=function(e,t){return o.dependsOnOwnProps?o.mapToProps(e,t):o.mapToProps(e)};return o.dependsOnOwnProps=!0,o.mapToProps=function(t,n){o.mapToProps=e,o.dependsOnOwnProps=r(e);var i=o(t,n);return"function"==typeof i&&(o.mapToProps=i,o.dependsOnOwnProps=r(i),i=o(t,n)),i},o}};n(121);function r(e){return null!==e.dependsOnOwnProps&&void 0!==e.dependsOnOwnProps?Boolean(e.dependsOnOwnProps):1!==e.length}},function(e,t,n){"use strict";n(229),n(72)},function(e,t,n){"use strict";var r=n(231).a.Symbol;t.a=r},function(e,t,n){var r=n(25),o=n(41),i=n(74)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),r(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,n){var r=n(18),o=n(10),i=n(35);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],a={};a[e]=t(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},function(e,t,n){e.exports=!n(24)&&!n(35)(function(){return 7!=Object.defineProperty(n(76)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){e.exports={default:n(245),__esModule:!0}},function(e,t,n){"use strict";var r=n(42),o=n(18),i=n(128),a=n(26),u=n(36),s=n(250),c=n(57),l=n(123),f=n(14)("iterator"),d=!([].keys&&"next"in[].keys()),p=function(){return this};e.exports=function(e,t,n,h,m,v,y){s(n,t,h);var g,_,b,w=function(e){if(!d&&e in S)return S[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},x=t+" Iterator",E="values"==m,O=!1,S=e.prototype,T=S[f]||S["@@iterator"]||m&&S[m],k=T||w(m),R=m?E?w("entries"):k:void 0,j="Array"==t&&S.entries||T;if(j&&(b=l(j.call(new e)))!==Object.prototype&&b.next&&(c(b,x,!0),r||"function"==typeof b[f]||a(b,f,p)),E&&T&&"values"!==T.name&&(O=!0,k=function(){return T.call(this)}),r&&!y||!d&&!O&&S[f]||a(S,f,k),u[t]=k,u[x]=p,m)if(g={values:E?k:w("values"),keys:v?k:w("keys"),entries:R},y)for(_ in g)_ in S||i(S,_,g[_]);else o(o.P+o.F*(d||O),t,g);return g}},function(e,t,n){e.exports=n(26)},function(e,t,n){var r=n(25),o=n(37),i=n(252)(!1),a=n(74)("IE_PROTO");e.exports=function(e,t){var n,u=o(e),s=0,c=[];for(n in u)n!=a&&r(u,n)&&c.push(n);for(;t.length>s;)r(u,n=t[s++])&&(~i(c,n)||c.push(n));return c}},function(e,t,n){var r=n(46);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t,n){var r=n(13).document;e.exports=r&&r.documentElement},function(e,t,n){var r=n(129),o=n(82).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){var r=n(59),o=n(43),i=n(37),a=n(77),u=n(25),s=n(125),c=Object.getOwnPropertyDescriptor;t.f=n(24)?c:function(e,t){if(e=i(e),t=a(t,!0),s)try{return c(e,t)}catch(e){}if(u(e,t))return o(!r.f.call(e,t),e[t])}},function(e,t){},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.__RewireAPI__=t.__ResetDependency__=t.__set__=t.__Rewire__=t.__GetDependency__=t.__get__=t.createMatchSelector=t.getAction=t.getLocation=t.routerMiddleware=t.connectRouter=t.ConnectedRouter=t.routerActions=t.goForward=t.goBack=t.go=t.replace=t.push=t.CALL_HISTORY_METHOD=t.LOCATION_CHANGE=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=a(n(273)),i=a(n(284));function a(e){return e&&e.__esModule?e:{default:e}}var u=j("createAll")(j("plainStructure")),s=u.LOCATION_CHANGE,c=u.CALL_HISTORY_METHOD,l=u.push,f=u.replace,d=u.go,p=u.goBack,h=u.goForward,m=u.routerActions,v=u.ConnectedRouter,y=u.connectRouter,g=u.routerMiddleware,_=u.getLocation,b=u.getAction,w=u.createMatchSelector;function x(){try{if(e)return e}catch(e){try{if(window)return window}catch(e){return this}}}t.LOCATION_CHANGE=s,t.CALL_HISTORY_METHOD=c,t.push=l,t.replace=f,t.go=d,t.goBack=p,t.goForward=h,t.routerActions=m,t.ConnectedRouter=v,t.connectRouter=y,t.routerMiddleware=g,t.getLocation=_,t.getAction=b,t.createMatchSelector=w;var E=null;function O(){if(null===E){var e=x();e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__||(e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__=0),E=__$$GLOBAL_REWIRE_NEXT_MODULE_ID__++}return E}function S(){var e=x();return e.__$$GLOBAL_REWIRE_REGISTRY__||(e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)),__$$GLOBAL_REWIRE_REGISTRY__}function T(){var e=O(),t=S(),n=t[e];return n||(t[e]=Object.create(null),n=t[e]),n}!function(){var e=x();e.__rewire_reset_all__||(e.__rewire_reset_all__=function(){e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)})}();var k="__INTENTIONAL_UNDEFINED__",R={};function j(e){var t=T();if(void 0===t[e])return function(e){switch(e){case"createAll":return o.default;case"plainStructure":return i.default}return}(e);var n=t[e];return n===k?void 0:n}function P(e,t){var n=T();if("object"!==(void 0===e?"undefined":r(e)))return n[e]=void 0===t?k:t,function(){C(e)};Object.keys(e).forEach(function(t){n[t]=e[t]})}function C(e){var t=T();delete t[e],0==Object.keys(t).length&&delete S()[O]}function M(e){var t=T(),n=Object.keys(e),r={};function o(){n.forEach(function(e){t[e]=r[e]})}return function(i){n.forEach(function(n){r[n]=t[n],t[n]=e[n]});var a=i();return a&&"function"==typeof a.then?a.then(o).catch(o):o(),a}}!function(){function e(e,t){Object.defineProperty(R,e,{value:t,enumerable:!1,configurable:!0})}e("__get__",j),e("__GetDependency__",j),e("__Rewire__",P),e("__set__",P),e("__reset__",C),e("__ResetDependency__",C),e("__with__",M)}(),t.__get__=j,t.__GetDependency__=j,t.__Rewire__=P,t.__set__=P,t.__ResetDependency__=C,t.__RewireAPI__=R,t.default=R}).call(t,n(3))},function(e,t,n){"use strict";var r=n(38),o=n.n(r),i=n(1),a=n.n(i),u=n(12),s=n.n(u),c=n(27),l=n(63);function f(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var d=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=f(this,e.call.apply(e,[this].concat(i))),r.history=Object(c.createMemoryHistory)(r.props),f(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){o()(!this.props.history,"<MemoryRouter> ignores the history prop. To use a custom history, use `import { Router }` instead of `import { MemoryRouter as Router }`.")},t.prototype.render=function(){return a.a.createElement(l.a,{history:this.history,children:this.props.children})},t}(a.a.Component);d.propTypes={initialEntries:s.a.array,initialIndex:s.a.number,getUserConfirmation:s.a.func,keyLength:s.a.number,children:s.a.node},t.a=d},function(e,t,n){"use strict";n.d(t,"b",function(){return r}),n.d(t,"a",function(){return o}),n.d(t,"e",function(){return i}),n.d(t,"c",function(){return a}),n.d(t,"g",function(){return u}),n.d(t,"h",function(){return s}),n.d(t,"f",function(){return c}),n.d(t,"d",function(){return l});var r=!("undefined"==typeof window||!window.document||!window.document.createElement),o=function(e,t,n){return e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent("on"+t,n)},i=function(e,t,n){return e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent("on"+t,n)},a=function(e,t){return t(window.confirm(e))},u=function(){var e=window.navigator.userAgent;return(-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone"))&&(window.history&&"pushState"in window.history)},s=function(){return-1===window.navigator.userAgent.indexOf("Trident")},c=function(){return-1===window.navigator.userAgent.indexOf("Firefox")},l=function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")}},function(e,t,n){"use strict";var r=n(1),o=n.n(r),i=n(12),a=n.n(i),u=n(19),s=n.n(u);var c=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.enable=function(e){this.unblock&&this.unblock(),this.unblock=this.context.router.history.block(e)},t.prototype.disable=function(){this.unblock&&(this.unblock(),this.unblock=null)},t.prototype.componentWillMount=function(){s()(this.context.router,"You should not use <Prompt> outside a <Router>"),this.props.when&&this.enable(this.props.message)},t.prototype.componentWillReceiveProps=function(e){e.when?this.props.when&&this.props.message===e.message||this.enable(e.message):this.disable()},t.prototype.componentWillUnmount=function(){this.disable()},t.prototype.render=function(){return null},t}(o.a.Component);c.propTypes={when:a.a.bool,message:a.a.oneOfType([a.a.func,a.a.string]).isRequired},c.defaultProps={when:!0},c.contextTypes={router:a.a.shape({history:a.a.shape({block:a.a.func.isRequired}).isRequired}).isRequired},t.a=c},function(e,t,n){"use strict";var r=n(1),o=n.n(r),i=n(12),a=n.n(i),u=n(38),s=n.n(u),c=n(19),l=n.n(c),f=n(27),d=n(88),p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};var h=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.isStatic=function(){return this.context.router&&this.context.router.staticContext},t.prototype.componentWillMount=function(){l()(this.context.router,"You should not use <Redirect> outside a <Router>"),this.isStatic()&&this.perform()},t.prototype.componentDidMount=function(){this.isStatic()||this.perform()},t.prototype.componentDidUpdate=function(e){var t=Object(f.createLocation)(e.to),n=Object(f.createLocation)(this.props.to);Object(f.locationsAreEqual)(t,n)?s()(!1,"You tried to redirect to the same route you're currently on: \""+n.pathname+n.search+'"'):this.perform()},t.prototype.computeTo=function(e){var t=e.computedMatch,n=e.to;return t?"string"==typeof n?Object(d.a)(n,t.params):p({},n,{pathname:Object(d.a)(n.pathname,t.params)}):n},t.prototype.perform=function(){var e=this.context.router.history,t=this.props.push,n=this.computeTo(this.props);t?e.push(n):e.replace(n)},t.prototype.render=function(){return null},t}(o.a.Component);h.propTypes={computedMatch:a.a.object,push:a.a.bool,from:a.a.string,to:a.a.oneOfType([a.a.string,a.a.object]).isRequired},h.defaultProps={push:!1},h.contextTypes={router:a.a.shape({history:a.a.shape({push:a.a.func.isRequired,replace:a.a.func.isRequired}).isRequired,staticContext:a.a.object}).isRequired},t.a=h},function(e,t,n){var r=n(280);e.exports=h,e.exports.parse=i,e.exports.compile=function(e,t){return s(i(e,t))},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function i(e,t){for(var n,r=[],i=0,a=0,u="",s=t&&t.delimiter||"/";null!=(n=o.exec(e));){var f=n[0],d=n[1],p=n.index;if(u+=e.slice(a,p),a=p+f.length,d)u+=d[1];else{var h=e[a],m=n[2],v=n[3],y=n[4],g=n[5],_=n[6],b=n[7];u&&(r.push(u),u="");var w=null!=m&&null!=h&&h!==m,x="+"===_||"*"===_,E="?"===_||"*"===_,O=n[2]||s,S=y||g;r.push({name:v||i++,prefix:m||"",delimiter:O,optional:E,repeat:x,partial:w,asterisk:!!b,pattern:S?l(S):b?".*":"[^"+c(O)+"]+?"})}}return a<e.length&&(u+=e.substr(a)),u&&r.push(u),r}function a(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function u(e){return encodeURI(e).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function s(e){for(var t=new Array(e.length),n=0;n<e.length;n++)"object"==typeof e[n]&&(t[n]=new RegExp("^(?:"+e[n].pattern+")$"));return function(n,o){for(var i="",s=n||{},c=(o||{}).pretty?a:encodeURIComponent,l=0;l<e.length;l++){var f=e[l];if("string"!=typeof f){var d,p=s[f.name];if(null==p){if(f.optional){f.partial&&(i+=f.prefix);continue}throw new TypeError('Expected "'+f.name+'" to be defined')}if(r(p)){if(!f.repeat)throw new TypeError('Expected "'+f.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(f.optional)continue;throw new TypeError('Expected "'+f.name+'" to not be empty')}for(var h=0;h<p.length;h++){if(d=c(p[h]),!t[l].test(d))throw new TypeError('Expected all "'+f.name+'" to match "'+f.pattern+'", but received `'+JSON.stringify(d)+"`");i+=(0===h?f.prefix:f.delimiter)+d}}else{if(d=f.asterisk?u(p):c(p),!t[l].test(d))throw new TypeError('Expected "'+f.name+'" to match "'+f.pattern+'", but received "'+d+'"');i+=f.prefix+d}}else i+=f}return i}}function c(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function l(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function f(e,t){return e.keys=t,e}function d(e){return e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var o=(n=n||{}).strict,i=!1!==n.end,a="",u=0;u<e.length;u++){var s=e[u];if("string"==typeof s)a+=c(s);else{var l=c(s.prefix),p="(?:"+s.pattern+")";t.push(s),s.repeat&&(p+="(?:"+l+p+")*"),a+=p=s.optional?s.partial?l+"("+p+")?":"(?:"+l+"("+p+"))?":l+"("+p+")"}}var h=c(n.delimiter||"/"),m=a.slice(-h.length)===h;return o||(a=(m?a.slice(0,-h.length):a)+"(?:"+h+"(?=$))?"),a+=i?"$":o&&m?"":"(?="+h+"|$)",f(new RegExp("^"+a,d(n)),t)}function h(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return f(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(h(e[o],t,n).source);return f(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(i(e,n),t,n)}(e,t,n)}},function(e,t,n){"use strict";var r=n(38),o=n.n(r),i=n(19),a=n.n(i),u=n(1),s=n.n(u),c=n(12),l=n.n(c),f=n(27),d=n(63),p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function h(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var m=function(e){return"/"===e.charAt(0)?e:"/"+e},v=function(e,t){return e?p({},t,{pathname:m(e)+t.pathname}):t},y=function(e){return"string"==typeof e?e:Object(f.createPath)(e)},g=function(e){return function(){a()(!1,"You cannot %s with <StaticRouter>",e)}},_=function(){},b=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=h(this,e.call.apply(e,[this].concat(i))),r.createHref=function(e){return m(r.props.basename+y(e))},r.handlePush=function(e){var t=r.props,n=t.basename,o=t.context;o.action="PUSH",o.location=v(n,Object(f.createLocation)(e)),o.url=y(o.location)},r.handleReplace=function(e){var t=r.props,n=t.basename,o=t.context;o.action="REPLACE",o.location=v(n,Object(f.createLocation)(e)),o.url=y(o.location)},r.handleListen=function(){return _},r.handleBlock=function(){return _},h(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getChildContext=function(){return{router:{staticContext:this.props.context}}},t.prototype.componentWillMount=function(){o()(!this.props.history,"<StaticRouter> ignores the history prop. To use a custom history, use `import { Router }` instead of `import { StaticRouter as Router }`.")},t.prototype.render=function(){var e=this.props,t=e.basename,n=(e.context,e.location),r=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["basename","context","location"]),o={createHref:this.createHref,action:"POP",location:function(e,t){if(!e)return t;var n=m(e);return 0!==t.pathname.indexOf(n)?t:p({},t,{pathname:t.pathname.substr(n.length)})}(t,Object(f.createLocation)(n)),push:this.handlePush,replace:this.handleReplace,go:g("go"),goBack:g("goBack"),goForward:g("goForward"),listen:this.handleListen,block:this.handleBlock};return s.a.createElement(d.a,p({},r,{history:o}))},t}(s.a.Component);b.propTypes={basename:l.a.string,context:l.a.object.isRequired,location:l.a.oneOfType([l.a.string,l.a.object])},b.defaultProps={basename:"",location:"/"},b.childContextTypes={router:l.a.object.isRequired},t.a=b},function(e,t,n){"use strict";var r=n(1),o=n.n(r),i=n(12),a=n.n(i),u=n(38),s=n.n(u),c=n(19),l=n.n(c),f=n(64);var d=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){l()(this.context.router,"You should not use <Switch> outside a <Router>")},t.prototype.componentWillReceiveProps=function(e){s()(!(e.location&&!this.props.location),'<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.'),s()(!(!e.location&&this.props.location),'<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.')},t.prototype.render=function(){var e=this.context.router.route,t=this.props.children,n=this.props.location||e.location,r=void 0,i=void 0;return o.a.Children.forEach(t,function(t){if(null==r&&o.a.isValidElement(t)){var a=t.props,u=a.path,s=a.exact,c=a.strict,l=a.sensitive,d=a.from,p=u||d;i=t,r=Object(f.a)(n.pathname,{path:p,exact:s,strict:c,sensitive:l},e.match)}}),r?o.a.cloneElement(i,{location:n,computedMatch:r}):null},t}(o.a.Component);d.contextTypes={router:a.a.shape({route:a.a.object.isRequired}).isRequired},d.propTypes={children:a.a.node,location:a.a.object},t.a=d},function(e,t,n){"use strict";var r=n(1),o=n.n(r),i=n(12),a=n.n(i),u=n(118),s=n.n(u),c=n(89),l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};t.a=function(e){var t=function(t){var n=t.wrappedComponentRef,r=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(t,["wrappedComponentRef"]);return o.a.createElement(c.a,{children:function(t){return o.a.createElement(e,l({},r,t,{ref:n}))}})};return t.displayName="withRouter("+(e.displayName||e.name)+")",t.WrappedComponent=e,t.propTypes={wrappedComponentRef:a.a.func},s()(t,e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"createStore",function(){return s}),n.d(t,"combineReducers",function(){return l}),n.d(t,"bindActionCreators",function(){return d}),n.d(t,"applyMiddleware",function(){return h}),n.d(t,"compose",function(){return p}),n.d(t,"__DO_NOT_USE__ActionTypes",function(){return o});var r=n(290),o={INIT:"@@redux/INIT"+Math.random().toString(36).substring(7).split("").join("."),REPLACE:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")},i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function u(e){if("object"!==(void 0===e?"undefined":i(e))||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function s(e,t,n){var a;if("function"==typeof t&&void 0===n&&(n=t,t=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(s)(e,t)}if("function"!=typeof e)throw new Error("Expected the reducer to be a function.");var c=e,l=t,f=[],d=f,p=!1;function h(){d===f&&(d=f.slice())}function m(){if(p)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return l}function v(e){if("function"!=typeof e)throw new Error("Expected the listener to be a function.");if(p)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var t=!0;return h(),d.push(e),function(){if(t){if(p)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");t=!1,h();var n=d.indexOf(e);d.splice(n,1)}}}function y(e){if(!u(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(p)throw new Error("Reducers may not dispatch actions.");try{p=!0,l=c(l,e)}finally{p=!1}for(var t=f=d,n=0;n<t.length;n++){(0,t[n])()}return e}return y({type:o.INIT}),(a={dispatch:y,subscribe:v,getState:m,replaceReducer:function(e){if("function"!=typeof e)throw new Error("Expected the nextReducer to be a function.");c=e,y({type:o.REPLACE})}})[r.a]=function(){var e,t=v;return(e={subscribe:function(e){if("object"!==(void 0===e?"undefined":i(e))||null===e)throw new TypeError("Expected the observer to be an object.");function n(){e.next&&e.next(m())}return n(),{unsubscribe:t(n)}}})[r.a]=function(){return this},e},a}function c(e,t){var n=t&&t.type;return"Given "+(n&&'action "'+String(n)+'"'||"an action")+', reducer "'+e+'" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.'}function l(e){for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var i=t[r];0,"function"==typeof e[i]&&(n[i]=e[i])}var a=Object.keys(n);var u=void 0;try{!function(e){Object.keys(e).forEach(function(t){var n=e[t];if(void 0===n(void 0,{type:o.INIT}))throw new Error('Reducer "'+t+"\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.");if(void 0===n(void 0,{type:"@@redux/PROBE_UNKNOWN_ACTION_"+Math.random().toString(36).substring(7).split("").join(".")}))throw new Error('Reducer "'+t+"\" returned undefined when probed with a random type. Don't try to handle "+o.INIT+' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')})}(n)}catch(e){u=e}return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];if(u)throw u;for(var r=!1,o={},i=0;i<a.length;i++){var s=a[i],l=n[s],f=e[s],d=l(f,t);if(void 0===d){var p=c(s,t);throw new Error(p)}o[s]=d,r=r||d!==f}return r?o:e}}function f(e,t){return function(){return t(e.apply(this,arguments))}}function d(e,t){if("function"==typeof e)return f(e,t);if("object"!==(void 0===e?"undefined":i(e))||null===e)throw new Error("bindActionCreators expected an object or a function, instead received "+(null===e?"null":void 0===e?"undefined":i(e))+'. Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');for(var n=Object.keys(e),r={},o=0;o<n.length;o++){var a=n[o],u=e[a];"function"==typeof u&&(r[a]=f(u,t))}return r}function p(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce(function(e,t){return function(){return e(t.apply(void 0,arguments))}})}function h(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){return function(){for(var n=arguments.length,r=Array(n),o=0;o<n;o++)r[o]=arguments[o];var i=e.apply(void 0,r),u=function(){throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},s={getState:i.getState,dispatch:function(){return u.apply(void 0,arguments)}},c=t.map(function(e){return e(s)});return u=p.apply(void 0,c)(i.dispatch),a({},i,{dispatch:u})}}}},function(e,t,n){e.exports=n(294)()},function(e,t,n){"use strict";n.d(t,"b",function(){return i}),n.d(t,"a",function(){return a});var r=n(145),o=n.n(r),i=o.a.shape({trySubscribe:o.a.func.isRequired,tryUnsubscribe:o.a.func.isRequired,notifyNestedSubs:o.a.func.isRequired,isSubscribed:o.a.func.isRequired}),a=o.a.shape({subscribe:o.a.func.isRequired,dispatch:o.a.func.isRequired,getState:o.a.func.isRequired})},function(e,t,n){"use strict";t.a=function(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.getDisplayName,h=void 0===i?function(e){return"ConnectAdvanced("+e+")"}:i,m=r.methodName,v=void 0===m?"connectAdvanced":m,y=r.renderCountProp,g=void 0===y?void 0:y,_=r.shouldHandleStateChanges,b=void 0===_||_,w=r.storeKey,x=void 0===w?"store":w,E=r.withRef,O=void 0!==E&&E,S=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(r,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef"]),T=x+"Subscription",k=f++,R=((t={})[x]=c.a,t[T]=c.b,t),j=((n={})[T]=c.b,n);return function(t){a()("function"==typeof t,"You must pass a component to the function returned by "+v+". Instead received "+JSON.stringify(t));var n=t.displayName||t.name||"Component",r=h(n),i=l({},S,{getDisplayName:h,methodName:v,renderCountProp:g,shouldHandleStateChanges:b,storeKey:x,withRef:O,displayName:r,wrappedComponentName:n,WrappedComponent:t}),c=function(n){function o(e,t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o);var i=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,n.call(this,e,t));return i.version=k,i.state={},i.renderCount=0,i.store=e[x]||t[x],i.propsMode=Boolean(e[x]),i.setWrappedInstance=i.setWrappedInstance.bind(i),a()(i.store,'Could not find "'+x+'" in either the context or props of "'+r+'". Either wrap the root component in a <Provider>, or explicitly pass "'+x+'" as a prop to "'+r+'".'),i.initSelector(),i.initSubscription(),i}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(o,n),o.prototype.getChildContext=function(){var e,t=this.propsMode?null:this.subscription;return(e={})[T]=t||this.context[T],e},o.prototype.componentDidMount=function(){b&&(this.subscription.trySubscribe(),this.selector.run(this.props),this.selector.shouldComponentUpdate&&this.forceUpdate())},o.prototype.componentWillReceiveProps=function(e){this.selector.run(e)},o.prototype.shouldComponentUpdate=function(){return this.selector.shouldComponentUpdate},o.prototype.componentWillUnmount=function(){this.subscription&&this.subscription.tryUnsubscribe(),this.subscription=null,this.notifyNestedSubs=p,this.store=null,this.selector.run=p,this.selector.shouldComponentUpdate=!1},o.prototype.getWrappedInstance=function(){return a()(O,"To access the wrapped instance, you need to specify { withRef: true } in the options argument of the "+v+"() call."),this.wrappedInstance},o.prototype.setWrappedInstance=function(e){this.wrappedInstance=e},o.prototype.initSelector=function(){var t=e(this.store.dispatch,i);this.selector=function(e,t){var n={run:function(r){try{var o=e(t.getState(),r);(o!==n.props||n.error)&&(n.shouldComponentUpdate=!0,n.props=o,n.error=null)}catch(e){n.shouldComponentUpdate=!0,n.error=e}}};return n}(t,this.store),this.selector.run(this.props)},o.prototype.initSubscription=function(){if(b){var e=(this.propsMode?this.props:this.context)[T];this.subscription=new s.a(this.store,e,this.onStateChange.bind(this)),this.notifyNestedSubs=this.subscription.notifyNestedSubs.bind(this.subscription)}},o.prototype.onStateChange=function(){this.selector.run(this.props),this.selector.shouldComponentUpdate?(this.componentDidUpdate=this.notifyNestedSubsOnComponentDidUpdate,this.setState(d)):this.notifyNestedSubs()},o.prototype.notifyNestedSubsOnComponentDidUpdate=function(){this.componentDidUpdate=void 0,this.notifyNestedSubs()},o.prototype.isSubscribed=function(){return Boolean(this.subscription)&&this.subscription.isSubscribed()},o.prototype.addExtraProps=function(e){if(!(O||g||this.propsMode&&this.subscription))return e;var t=l({},e);return O&&(t.ref=this.setWrappedInstance),g&&(t[g]=this.renderCount++),this.propsMode&&this.subscription&&(t[T]=this.subscription),t},o.prototype.render=function(){var e=this.selector;if(e.shouldComponentUpdate=!1,e.error)throw e.error;return Object(u.createElement)(t,this.addExtraProps(e.props))},o}(u.Component);return c.WrappedComponent=t,c.displayName=r,c.childContextTypes=j,c.contextTypes=R,c.propTypes=R,o()(c,t)}};var r=n(296),o=n.n(r),i=n(297),a=n.n(i),u=n(90),s=(n.n(u),n(298)),c=n(146),l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};var f=0,d={};function p(){}},function(e,t,n){"use strict";t.a=function(e){return function(t,n){var r=e(t,n);function o(){return r}return o.dependsOnOwnProps=!1,o}},t.b=function(e,t){return function(t,n){n.displayName;var o=function(e,t){return o.dependsOnOwnProps?o.mapToProps(e,t):o.mapToProps(e)};return o.dependsOnOwnProps=!0,o.mapToProps=function(t,n){o.mapToProps=e,o.dependsOnOwnProps=r(e);var i=o(t,n);return"function"==typeof i&&(o.mapToProps=i,o.dependsOnOwnProps=r(i),i=o(t,n)),i},o}};n(149);function r(e){return null!==e.dependsOnOwnProps&&void 0!==e.dependsOnOwnProps?Boolean(e.dependsOnOwnProps):1!==e.length}},function(e,t,n){"use strict";n(302),n(91)},function(e,t,n){"use strict";var r=n(304).a.Symbol;t.a=r},function(e,t,n){"use strict";var r=function(){};e.exports=r},function(e,t,n){"use strict";var r=n(1),o=n.n(r),i=n(12),a=n.n(i),u=n(19),s=n.n(u),c=n(27),l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function f(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var d=function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)},p=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=f(this,e.call.apply(e,[this].concat(i))),r.handleClick=function(e){if(r.props.onClick&&r.props.onClick(e),!e.defaultPrevented&&0===e.button&&!r.props.target&&!d(e)){e.preventDefault();var t=r.context.router.history,n=r.props,o=n.replace,i=n.to;o?t.replace(i):t.push(i)}},f(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.render=function(){var e=this.props,t=(e.replace,e.to),n=e.innerRef,r=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["replace","to","innerRef"]);s()(this.context.router,"You should not use <Link> outside a <Router>"),s()(void 0!==t,'You must specify the "to" property');var i=this.context.router.history,a="string"==typeof t?Object(c.createLocation)(t,null,null,i.location):t,u=i.createHref(a);return o.a.createElement("a",l({},r,{onClick:this.handleClick,href:u,ref:n}))},t}(o.a.Component);p.propTypes={onClick:a.a.func,target:a.a.string,replace:a.a.bool,to:a.a.oneOfType([a.a.string,a.a.object]).isRequired,innerRef:a.a.oneOfType([a.a.string,a.a.func])},p.defaultProps={replace:!1},p.contextTypes={router:a.a.shape({history:a.a.shape({push:a.a.func.isRequired,replace:a.a.func.isRequired,createHref:a.a.func.isRequired}).isRequired}).isRequired},t.a=p},function(e,t,n){"use strict";var r=n(89);t.a=r.a},function(e,t,n){e.exports={default:n(349),__esModule:!0}},function(e,t,n){var r=n(20);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&r(i.call(e)),t}}},function(e,t,n){var r=n(36),o=n(14)("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||i[o]===e)}},function(e,t,n){var r=n(14)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},e(i)}catch(e){}return n}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(352)).default.namespace("vcat.search");t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setSaved=t.getSaved=t.getCountFromStore=t.getSavedFromStore=t.getSavedCount=t.getSavedUrls=void 0;var r=s(n(93)),o=s(n(28)),i=s(n(158)),a=n(94),u=n(17);function s(e){return e&&e.__esModule?e:{default:e}}t.getSavedUrls=function(){var e=c();return(0,o.default)(e).sort().map(function(t){var n=e[t],r=n.verified,i=n.hash,a=n.frames;return(0,o.default)(a).map(function(e){return a[e]&&(0,u.imageUrl)(r,i,e)}).filter(function(e){return!!e})}).reduce(function(e,t){return t&&t.length?e.concat(t):e},[])},t.getSavedCount=function(e){return e=e||c(),(0,o.default)(e).sort().map(function(t){var n=e[t].frames;return(0,o.default)(n).filter(function(e){return n[e]}).filter(function(e){return!!e}).length}).reduce(function(e,t){return e+t},0)};var c=t.getSavedFromStore=function(){return a.store.getState().review.saved};t.getCountFromStore=function(){return a.store.getState().review.count||0},t.getSaved=function(){try{return JSON.parse((0,i.default)("saved"))||{}}catch(e){return console.log("error getting saved!",e),{}}},t.setSaved=function(e){try{(0,i.default)("saved",(0,r.default)(e))}catch(e){console.log("error setting saved!",e)}}},function(e,t,n){"use strict";t.__esModule=!0;var r=i(n(359)),o=i(n(362));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(){return function(e,t){if(Array.isArray(e))return e;if((0,r.default)(Object(e)))return function(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var u,s=(0,o.default)(e);!(r=(u=s.next()).done)&&(n.push(u.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(i)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(e,t,n){var r=n(20),o=n(56),i=n(14)("species");e.exports=function(e,t){var n,a=r(e).constructor;return void 0===a||void 0==(n=r(a)[i])?t:o(n)}},function(e,t,n){var r,o,i,a=n(34),u=n(370),s=n(131),c=n(76),l=n(13),f=l.process,d=l.setImmediate,p=l.clearImmediate,h=l.MessageChannel,m=l.Dispatch,v=0,y={},g=function(){var e=+this;if(y.hasOwnProperty(e)){var t=y[e];delete y[e],t()}},_=function(e){g.call(e.data)};d&&p||(d=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return y[++v]=function(){u("function"==typeof e?e:Function(e),t)},r(v),v},p=function(e){delete y[e]},"process"==n(46)(f)?r=function(e){f.nextTick(a(g,e,1))}:m&&m.now?r=function(e){m.now(a(g,e,1))}:h?(i=(o=new h).port2,o.port1.onmessage=_,r=a(i.postMessage,i,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(e){l.postMessage(e+"","*")},l.addEventListener("message",_,!1)):r="onreadystatechange"in c("script")?function(e){s.appendChild(c("script")).onreadystatechange=function(){s.removeChild(this),g.call(e)}}:function(e){setTimeout(a(g,e,1),0)}),e.exports={set:d,clear:p}},function(e,t){e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},function(e,t,n){var r=n(20),o=n(23),i=n(98);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){e.exports={addDays:n(50),addHours:n(166),addISOYears:n(167),addMilliseconds:n(51),addMinutes:n(169),addMonths:n(68),addQuarters:n(170),addSeconds:n(171),addWeeks:n(101),addYears:n(172),areRangesOverlapping:n(377),closestIndexTo:n(378),closestTo:n(379),compareAsc:n(53),compareDesc:n(102),differenceInCalendarDays:n(67),differenceInCalendarISOWeeks:n(380),differenceInCalendarISOYears:n(173),differenceInCalendarMonths:n(174),differenceInCalendarQuarters:n(381),differenceInCalendarWeeks:n(382),differenceInCalendarYears:n(176),differenceInDays:n(177),differenceInHours:n(383),differenceInISOYears:n(384),differenceInMilliseconds:n(69),differenceInMinutes:n(385),differenceInMonths:n(103),differenceInQuarters:n(386),differenceInSeconds:n(104),differenceInWeeks:n(387),differenceInYears:n(388),distanceInWords:n(179),distanceInWordsStrict:n(392),distanceInWordsToNow:n(393),eachDay:n(394),endOfDay:n(106),endOfHour:n(395),endOfISOWeek:n(396),endOfISOYear:n(397),endOfMinute:n(398),endOfMonth:n(181),endOfQuarter:n(399),endOfSecond:n(400),endOfToday:n(401),endOfTomorrow:n(402),endOfWeek:n(180),endOfYear:n(403),endOfYesterday:n(404),format:n(405),getDate:n(406),getDay:n(407),getDayOfYear:n(182),getDaysInMonth:n(100),getDaysInYear:n(408),getHours:n(409),getISODay:n(186),getISOWeek:n(107),getISOWeeksInYear:n(410),getISOYear:n(29),getMilliseconds:n(411),getMinutes:n(412),getMonth:n(413),getOverlappingDaysInRanges:n(414),getQuarter:n(175),getSeconds:n(415),getTime:n(416),getYear:n(417),isAfter:n(418),isBefore:n(419),isDate:n(99),isEqual:n(420),isFirstDayOfMonth:n(421),isFriday:n(422),isFuture:n(423),isLastDayOfMonth:n(424),isLeapYear:n(185),isMonday:n(425),isPast:n(426),isSameDay:n(427),isSameHour:n(187),isSameISOWeek:n(189),isSameISOYear:n(190),isSameMinute:n(191),isSameMonth:n(193),isSameQuarter:n(194),isSameSecond:n(196),isSameWeek:n(108),isSameYear:n(198),isSaturday:n(428),isSunday:n(429),isThisHour:n(430),isThisISOWeek:n(431),isThisISOYear:n(432),isThisMinute:n(433),isThisMonth:n(434),isThisQuarter:n(435),isThisSecond:n(436),isThisWeek:n(437),isThisYear:n(438),isThursday:n(439),isToday:n(440),isTomorrow:n(441),isTuesday:n(442),isValid:n(184),isWednesday:n(443),isWeekend:n(444),isWithinRange:n(445),isYesterday:n(446),lastDayOfISOWeek:n(447),lastDayOfISOYear:n(448),lastDayOfMonth:n(449),lastDayOfQuarter:n(450),lastDayOfWeek:n(199),lastDayOfYear:n(451),max:n(452),min:n(453),parse:n(0),setDate:n(454),setDay:n(455),setDayOfYear:n(456),setHours:n(457),setISODay:n(458),setISOWeek:n(459),setISOYear:n(168),setMilliseconds:n(460),setMinutes:n(461),setMonth:n(200),setQuarter:n(462),setSeconds:n(463),setYear:n(464),startOfDay:n(31),startOfHour:n(188),startOfISOWeek:n(30),startOfISOYear:n(52),startOfMinute:n(192),startOfMonth:n(465),startOfQuarter:n(195),startOfSecond:n(197),startOfToday:n(466),startOfTomorrow:n(467),startOfWeek:n(66),startOfYear:n(183),startOfYesterday:n(468),subDays:n(469),subHours:n(470),subISOYears:n(178),subMilliseconds:n(471),subMinutes:n(472),subMonths:n(473),subQuarters:n(474),subSeconds:n(475),subWeeks:n(476),subYears:n(477)}},function(e,t,n){var r=n(51),o=36e5;e.exports=function(e,t){var n=Number(t);return r(e,n*o)}},function(e,t,n){var r=n(29),o=n(168);e.exports=function(e,t){var n=Number(t);return o(e,r(e)+n)}},function(e,t,n){var r=n(0),o=n(52),i=n(67);e.exports=function(e,t){var n=r(e),a=Number(t),u=i(n,o(n)),s=new Date(0);return s.setFullYear(a,0,4),s.setHours(0,0,0,0),(n=o(s)).setDate(n.getDate()+u),n}},function(e,t,n){var r=n(51),o=6e4;e.exports=function(e,t){var n=Number(t);return r(e,n*o)}},function(e,t,n){var r=n(68);e.exports=function(e,t){var n=Number(t);return r(e,3*n)}},function(e,t,n){var r=n(51);e.exports=function(e,t){var n=Number(t);return r(e,1e3*n)}},function(e,t,n){var r=n(68);e.exports=function(e,t){var n=Number(t);return r(e,12*n)}},function(e,t,n){var r=n(29);e.exports=function(e,t){return r(e)-r(t)}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=r(t);return 12*(n.getFullYear()-o.getFullYear())+(n.getMonth()-o.getMonth())}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e);return Math.floor(t.getMonth()/3)+1}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=r(t);return n.getFullYear()-o.getFullYear()}},function(e,t,n){var r=n(0),o=n(67),i=n(53);e.exports=function(e,t){var n=r(e),a=r(t),u=i(n,a),s=Math.abs(o(n,a));return n.setDate(n.getDate()-u*s),u*(s-(i(n,a)===-u))}},function(e,t,n){var r=n(167);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(102),o=n(0),i=n(104),a=n(103),u=n(105),s=1440,c=2520,l=43200,f=86400;e.exports=function(e,t,n){var d=n||{},p=r(e,t),h=d.locale,m=u.distanceInWords.localize;h&&h.distanceInWords&&h.distanceInWords.localize&&(m=h.distanceInWords.localize);var v,y,g={addSuffix:Boolean(d.addSuffix),comparison:p};p>0?(v=o(e),y=o(t)):(v=o(t),y=o(e));var _,b=i(y,v),w=y.getTimezoneOffset()-v.getTimezoneOffset(),x=Math.round(b/60)-w;if(x<2)return d.includeSeconds?b<5?m("lessThanXSeconds",5,g):b<10?m("lessThanXSeconds",10,g):b<20?m("lessThanXSeconds",20,g):b<40?m("halfAMinute",null,g):m(b<60?"lessThanXMinutes":"xMinutes",1,g):0===x?m("lessThanXMinutes",1,g):m("xMinutes",x,g);if(x<45)return m("xMinutes",x,g);if(x<90)return m("aboutXHours",1,g);if(x<s)return m("aboutXHours",Math.round(x/60),g);if(x<c)return m("xDays",1,g);if(x<l)return m("xDays",Math.round(x/s),g);if(x<f)return m("aboutXMonths",_=Math.round(x/l),g);if((_=a(y,v))<12)return m("xMonths",Math.round(x/l),g);var E=_%12,O=Math.floor(_/12);return E<3?m("aboutXYears",O,g):E<9?m("overXYears",O,g):m("almostXYears",O+1,g)}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=t&&Number(t.weekStartsOn)||0,o=r(e),i=o.getDay(),a=6+(i<n?-7:0)-(i-n);return o.setDate(o.getDate()+a),o.setHours(23,59,59,999),o}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}},function(e,t,n){var r=n(0),o=n(183),i=n(67);e.exports=function(e){var t=r(e);return i(t,o(t))+1}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e),n=new Date(0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}},function(e,t,n){var r=n(99);e.exports=function(e){if(r(e))return!isNaN(e);throw new TypeError(toString.call(e)+" is not an instance of Date")}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e).getFullYear();return t%400==0||t%4==0&&t%100!=0}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e).getDay();return 0===t&&(t=7),t}},function(e,t,n){var r=n(188);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e);return t.setMinutes(0,0,0),t}},function(e,t,n){var r=n(108);e.exports=function(e,t){return r(e,t,{weekStartsOn:1})}},function(e,t,n){var r=n(52);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(192);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e);return t.setSeconds(0,0),t}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=r(t);return n.getFullYear()===o.getFullYear()&&n.getMonth()===o.getMonth()}},function(e,t,n){var r=n(195);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e),n=t.getMonth(),o=n-n%3;return t.setMonth(o,1),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(197);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e);return t.setMilliseconds(0),t}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=r(t);return n.getFullYear()===o.getFullYear()}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=t&&Number(t.weekStartsOn)||0,o=r(e),i=o.getDay(),a=6+(i<n?-7:0)-(i-n);return o.setHours(0,0,0,0),o.setDate(o.getDate()+a),o}},function(e,t,n){var r=n(0),o=n(100);e.exports=function(e,t){var n=r(e),i=Number(t),a=n.getFullYear(),u=n.getDate(),s=new Date(0);s.setFullYear(a,i,15),s.setHours(0,0,0,0);var c=o(s);return n.setMonth(i,Math.min(u,c)),n}},function(e,t,n){"use strict";(function(t,r){var o=n(70);e.exports=_;var i,a=n(202);_.ReadableState=g;n(109).EventEmitter;var u=function(e,t){return e.listeners(t).length},s=n(203),c=n(71).Buffer,l=t.Uint8Array||function(){};var f=n(54);f.inherits=n(32);var d=n(482),p=void 0;p=d&&d.debuglog?d.debuglog("stream"):function(){};var h,m=n(483),v=n(205);f.inherits(_,s);var y=["error","close","destroy","pause","resume"];function g(e,t){i=i||n(33),e=e||{};var r=t instanceof i;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var o=e.highWaterMark,a=e.readableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(a||0===a)?a:u,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(h||(h=n(206).StringDecoder),this.decoder=new h(e.encoding),this.encoding=e.encoding)}function _(e){if(i=i||n(33),!(this instanceof _))return new _(e);this._readableState=new g(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),s.call(this)}function b(e,t,n,r,o){var i,a=e._readableState;null===t?(a.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,O(e)}(e,a)):(o||(i=function(e,t){var n;(function(e){return c.isBuffer(e)||e instanceof l})(t)||"string"==typeof t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));return n}(a,t)),i?e.emit("error",i):a.objectMode||t&&t.length>0?("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===c.prototype||(t=function(e){return c.from(e)}(t)),r?a.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):w(e,a,t,!0):a.ended?e.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!n?(t=a.decoder.write(t),a.objectMode||0!==t.length?w(e,a,t,!1):T(e,a)):w(e,a,t,!1))):r||(a.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||0===e.length)}(a)}function w(e,t,n,r){t.flowing&&0===t.length&&!t.sync?(e.emit("data",n),e.read(0)):(t.length+=t.objectMode?1:n.length,r?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&O(e)),T(e,t)}Object.defineProperty(_.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),_.prototype.destroy=v.destroy,_.prototype._undestroy=v.undestroy,_.prototype._destroy=function(e,t){this.push(null),t(e)},_.prototype.push=function(e,t){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof e&&((t=t||r.defaultEncoding)!==r.encoding&&(e=c.from(e,t),t=""),n=!0),b(this,e,t,!1,n)},_.prototype.unshift=function(e){return b(this,e,null,!0,!1)},_.prototype.isPaused=function(){return!1===this._readableState.flowing},_.prototype.setEncoding=function(e){return h||(h=n(206).StringDecoder),this._readableState.decoder=new h(e),this._readableState.encoding=e,this};var x=8388608;function E(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=function(e){return e>=x?e=x:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function O(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(p("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(S,e):S(e))}function S(e){p("emit readable"),e.emit("readable"),P(e)}function T(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(k,e,t))}function k(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(p("maybeReadMore read 0"),e.read(0),n!==t.length);)n=t.length;t.readingMore=!1}function R(e){p("readable nexttick read 0"),e.read(0)}function j(e,t){t.reading||(p("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),P(e),t.flowing&&!t.reading&&e.read(0)}function P(e){var t=e._readableState;for(p("flow",t.flowing);t.flowing&&null!==e.read(););}function C(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var r;e<t.head.data.length?(r=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):r=e===t.head.data.length?t.shift():n?function(e,t){var n=t.head,r=1,o=n.data;e-=o.length;for(;n=n.next;){var i=n.data,a=e>i.length?i.length:e;if(a===i.length?o+=i:o+=i.slice(0,e),0===(e-=a)){a===i.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=i.slice(a));break}++r}return t.length-=r,o}(e,t):function(e,t){var n=c.allocUnsafe(e),r=t.head,o=1;r.data.copy(n),e-=r.data.length;for(;r=r.next;){var i=r.data,a=e>i.length?i.length:e;if(i.copy(n,n.length-e,0,a),0===(e-=a)){a===i.length?(++o,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(a));break}++o}return t.length-=o,n}(e,t);return r}(e,t.buffer,t.decoder),n);var n}function M(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(I,t,e))}function I(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function A(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}_.prototype.read=function(e){p("read",e),e=parseInt(e,10);var t=this._readableState,n=e;if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return p("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?M(this):O(this),null;if(0===(e=E(e,t))&&t.ended)return 0===t.length&&M(this),null;var r,o=t.needReadable;return p("need readable",o),(0===t.length||t.length-e<t.highWaterMark)&&p("length less than watermark",o=!0),t.ended||t.reading?p("reading or ended",o=!1):o&&(p("do read"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=E(n,t))),null===(r=e>0?C(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&M(this)),null!==r&&this.emit("data",r),r},_.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},_.prototype.pipe=function(e,t){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,p("pipe count=%d opts=%j",i.pipesCount,t);var s=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?l:_;function c(t,r){p("onunpipe"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,p("cleanup"),e.removeListener("close",y),e.removeListener("finish",g),e.removeListener("drain",f),e.removeListener("error",v),e.removeListener("unpipe",c),n.removeListener("end",l),n.removeListener("end",_),n.removeListener("data",m),d=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||f())}function l(){p("onend"),e.end()}i.endEmitted?o.nextTick(s):n.once("end",s),e.on("unpipe",c);var f=function(e){return function(){var t=e._readableState;p("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&u(e,"data")&&(t.flowing=!0,P(e))}}(n);e.on("drain",f);var d=!1;var h=!1;function m(t){p("ondata"),h=!1,!1!==e.write(t)||h||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==A(i.pipes,e))&&!d&&(p("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,h=!0),n.pause())}function v(t){p("onerror",t),_(),e.removeListener("error",v),0===u(e,"error")&&e.emit("error",t)}function y(){e.removeListener("finish",g),_()}function g(){p("onfinish"),e.removeListener("close",y),_()}function _(){p("unpipe"),n.unpipe(e)}return n.on("data",m),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?a(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",v),e.once("close",y),e.once("finish",g),e.emit("pipe",n),i.flowing||(p("pipe resume"),n.resume()),e},_.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n),this);if(!e){var r=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i<o;i++)r[i].emit("unpipe",this,n);return this}var a=A(t.pipes,e);return-1===a?this:(t.pipes.splice(a,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,n),this)},_.prototype.on=function(e,t){var n=s.prototype.on.call(this,e,t);if("data"===e)!1!==this._readableState.flowing&&this.resume();else if("readable"===e){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&O(this):o.nextTick(R,this))}return n},_.prototype.addListener=_.prototype.on,_.prototype.resume=function(){var e=this._readableState;return e.flowing||(p("resume"),e.flowing=!0,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,o.nextTick(j,e,t))}(this,e)),this},_.prototype.pause=function(){return p("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(p("pause"),this._readableState.flowing=!1,this.emit("pause")),this},_.prototype.wrap=function(e){var t=this,n=this._readableState,r=!1;for(var o in e.on("end",function(){if(p("wrapped end"),n.decoder&&!n.ended){var e=n.decoder.end();e&&e.length&&t.push(e)}t.push(null)}),e.on("data",function(o){(p("wrapped data"),n.decoder&&(o=n.decoder.write(o)),!n.objectMode||null!==o&&void 0!==o)&&((n.objectMode||o&&o.length)&&(t.push(o)||(r=!0,e.pause())))}),e)void 0===this[o]&&"function"==typeof e[o]&&(this[o]=function(t){return function(){return e[t].apply(e,arguments)}}(o));for(var i=0;i<y.length;i++)e.on(y[i],this.emit.bind(this,y[i]));return this._read=function(t){p("wrapped _read",t),r&&(r=!1,e.resume())},this},Object.defineProperty(_.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),_._fromList=C}).call(t,n(3),n(40))},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){e.exports=n(109).EventEmitter},function(e,t,n){"use strict";(function(e){
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+ * @license MIT
+ */
+var r=n(480),o=n(481),i=n(202);function a(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function u(e,t){if(a()<t)throw new RangeError("Invalid typed array length");return s.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=s.prototype:(null===e&&(e=new s(t)),e.length=t),e}function s(e,t,n){if(!(s.TYPED_ARRAY_SUPPORT||this instanceof s))return new s(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return f(this,e)}return c(this,e,t,n)}function c(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);s.TYPED_ARRAY_SUPPORT?(e=t).__proto__=s.prototype:e=d(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!s.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|h(t,n),o=(e=u(e,r)).write(t,n);o!==r&&(e=e.slice(0,o));return e}(e,t,n):function(e,t){if(s.isBuffer(t)){var n=0|p(t.length);return 0===(e=u(e,n)).length?e:(t.copy(e,0,0,n),e)}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||function(e){return e!=e}(t.length)?u(e,0):d(e,t);if("Buffer"===t.type&&i(t.data))return d(e,t.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function l(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function f(e,t){if(l(t),e=u(e,t<0?0:0|p(t)),!s.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function d(e,t){var n=t.length<0?0:0|p(t.length);e=u(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function p(e){if(e>=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function h(e,t){if(s.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return W(e).length;default:if(r)return B(e).length;t=(""+t).toLowerCase(),r=!0}}function m(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function v(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=s.from(t,r)),s.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,o);if("number"==typeof t)return t&=255,s.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,o){var i,a=1,u=e.length,s=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,u/=2,s/=2,n/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var l=-1;for(i=n;i<u;i++)if(c(e,i)===c(t,-1===l?0:i-l)){if(-1===l&&(l=i),i-l+1===s)return l*a}else-1!==l&&(i-=i-l),l=-1}else for(n+s>u&&(n=u-s),i=n;i>=0;i--){for(var f=!0,d=0;d<s;d++)if(c(e,i+d)!==c(t,d)){f=!1;break}if(f)return i}return-1}function g(e,t,n,r){n=Number(n)||0;var o=e.length-n;r?(r=Number(r))>o&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var a=0;a<r;++a){var u=parseInt(t.substr(2*a,2),16);if(isNaN(u))return a;e[n+a]=u}return a}function _(e,t,n,r){return Y(B(t,e.length-n),e,n,r)}function b(e,t,n,r){return Y(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function w(e,t,n,r){return b(e,t,n,r)}function x(e,t,n,r){return Y(W(t),e,n,r)}function E(e,t,n,r){return Y(function(e,t){for(var n,r,o,i=[],a=0;a<e.length&&!((t-=2)<0);++a)n=e.charCodeAt(a),r=n>>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function O(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function S(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o<n;){var i,a,u,s,c=e[o],l=null,f=c>239?4:c>223?3:c>191?2:1;if(o+f<=n)switch(f){case 1:c<128&&(l=c);break;case 2:128==(192&(i=e[o+1]))&&(s=(31&c)<<6|63&i)>127&&(l=s);break;case 3:i=e[o+1],a=e[o+2],128==(192&i)&&128==(192&a)&&(s=(15&c)<<12|(63&i)<<6|63&a)>2047&&(s<55296||s>57343)&&(l=s);break;case 4:i=e[o+1],a=e[o+2],u=e[o+3],128==(192&i)&&128==(192&a)&&128==(192&u)&&(s=(15&c)<<18|(63&i)<<12|(63&a)<<6|63&u)>65535&&s<1114112&&(l=s)}null===l?(l=65533,f=1):l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|1023&l),r.push(l),o+=f}return function(e){var t=e.length;if(t<=T)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=T));return n}(r)}t.Buffer=s,t.SlowBuffer=function(e){+e!=e&&(e=0);return s.alloc(+e)},t.INSPECT_MAX_BYTES=50,s.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),t.kMaxLength=a(),s.poolSize=8192,s._augment=function(e){return e.__proto__=s.prototype,e},s.from=function(e,t,n){return c(null,e,t,n)},s.TYPED_ARRAY_SUPPORT&&(s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0})),s.alloc=function(e,t,n){return function(e,t,n,r){return l(t),t<=0?u(e,t):void 0!==n?"string"==typeof r?u(e,t).fill(n,r):u(e,t).fill(n):u(e,t)}(null,e,t,n)},s.allocUnsafe=function(e){return f(null,e)},s.allocUnsafeSlow=function(e){return f(null,e)},s.isBuffer=function(e){return!(null==e||!e._isBuffer)},s.compare=function(e,t){if(!s.isBuffer(e)||!s.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,o=0,i=Math.min(n,r);o<i;++o)if(e[o]!==t[o]){n=e[o],r=t[o];break}return n<r?-1:r<n?1:0},s.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(e,t){if(!i(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return s.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=s.allocUnsafe(t),o=0;for(n=0;n<e.length;++n){var a=e[n];if(!s.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,o),o+=a.length}return r},s.byteLength=h,s.prototype._isBuffer=!0,s.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)m(this,t,t+1);return this},s.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)m(this,t,t+3),m(this,t+1,t+2);return this},s.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)m(this,t,t+7),m(this,t+1,t+6),m(this,t+2,t+5),m(this,t+3,t+4);return this},s.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?S(this,0,e):function(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return j(this,t,n);case"utf8":case"utf-8":return S(this,t,n);case"ascii":return k(this,t,n);case"latin1":case"binary":return R(this,t,n);case"base64":return O(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},s.prototype.equals=function(e){if(!s.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===s.compare(this,e)},s.prototype.inspect=function(){var e="",n=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),"<Buffer "+e+">"},s.prototype.compare=function(e,t,n,r,o){if(!s.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,o>>>=0,this===e)return 0;for(var i=o-r,a=n-t,u=Math.min(i,a),c=this.slice(r,o),l=e.slice(t,n),f=0;f<u;++f)if(c[f]!==l[f]){i=c[f],a=l[f];break}return i<a?-1:a<i?1:0},s.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},s.prototype.indexOf=function(e,t,n){return v(this,e,t,n,!0)},s.prototype.lastIndexOf=function(e,t,n){return v(this,e,t,n,!1)},s.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var o=this.length-t;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return g(this,e,t,n);case"utf8":case"utf-8":return _(this,e,t,n);case"ascii":return b(this,e,t,n);case"latin1":case"binary":return w(this,e,t,n);case"base64":return x(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var T=4096;function k(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+=String.fromCharCode(127&e[o]);return r}function R(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+=String.fromCharCode(e[o]);return r}function j(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var o="",i=t;i<n;++i)o+=F(e[i]);return o}function P(e,t,n){for(var r=e.slice(t,n),o="",i=0;i<r.length;i+=2)o+=String.fromCharCode(r[i]+256*r[i+1]);return o}function C(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function M(e,t,n,r,o,i){if(!s.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||t<i)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function I(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o<i;++o)e[n+o]=(t&255<<8*(r?o:1-o))>>>8*(r?o:1-o)}function A(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o<i;++o)e[n+o]=t>>>8*(r?o:3-o)&255}function D(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function N(e,t,n,r,i){return i||D(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function L(e,t,n,r,i){return i||D(e,0,n,8),o.write(e,t,n,r,52,8),n+8}s.prototype.slice=function(e,t){var n,r=this.length;if(e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),s.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=s.prototype;else{var o=t-e;n=new s(o,void 0);for(var i=0;i<o;++i)n[i]=this[i+e]}return n},s.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||C(e,t,this.length);for(var r=this[e],o=1,i=0;++i<t&&(o*=256);)r+=this[e+i]*o;return r},s.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||C(e,t,this.length);for(var r=this[e+--t],o=1;t>0&&(o*=256);)r+=this[e+--t]*o;return r},s.prototype.readUInt8=function(e,t){return t||C(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,t){return t||C(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,t){return t||C(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,t){return t||C(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUInt32BE=function(e,t){return t||C(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||C(e,t,this.length);for(var r=this[e],o=1,i=0;++i<t&&(o*=256);)r+=this[e+i]*o;return r>=(o*=128)&&(r-=Math.pow(2,8*t)),r},s.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||C(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},s.prototype.readInt8=function(e,t){return t||C(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},s.prototype.readInt16LE=function(e,t){t||C(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt16BE=function(e,t){t||C(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt32LE=function(e,t){return t||C(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return t||C(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,t){return t||C(e,4,this.length),o.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return t||C(e,4,this.length),o.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return t||C(e,8,this.length),o.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return t||C(e,8,this.length),o.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||M(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i<n&&(o*=256);)this[t+i]=e/o&255;return t+n},s.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||M(this,e,t,n,Math.pow(2,8*n)-1,0);var o=n-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+n},s.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,1,255,0),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},s.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):I(this,e,t,!0),t+2},s.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):I(this,e,t,!1),t+2},s.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):A(this,e,t,!0),t+4},s.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):A(this,e,t,!1),t+4},s.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);M(this,e,t,n,o-1,-o)}var i=0,a=1,u=0;for(this[t]=255&e;++i<n&&(a*=256);)e<0&&0===u&&0!==this[t+i-1]&&(u=1),this[t+i]=(e/a>>0)-u&255;return t+n},s.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);M(this,e,t,n,o-1,-o)}var i=n-1,a=1,u=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===u&&0!==this[t+i+1]&&(u=1),this[t+i]=(e/a>>0)-u&255;return t+n},s.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,1,127,-128),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):I(this,e,t,!0),t+2},s.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):I(this,e,t,!1),t+2},s.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):A(this,e,t,!0),t+4},s.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):A(this,e,t,!1),t+4},s.prototype.writeFloatLE=function(e,t,n){return N(this,e,t,!0,n)},s.prototype.writeFloatBE=function(e,t,n){return N(this,e,t,!1,n)},s.prototype.writeDoubleLE=function(e,t,n){return L(this,e,t,!0,n)},s.prototype.writeDoubleBE=function(e,t,n){return L(this,e,t,!1,n)},s.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var o,i=r-n;if(this===e&&n<t&&t<r)for(o=i-1;o>=0;--o)e[o+t]=this[o+n];else if(i<1e3||!s.TYPED_ARRAY_SUPPORT)for(o=0;o<i;++o)e[o+t]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+i),t);return i},s.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var o=e.charCodeAt(0);o<256&&(e=o)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!s.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var i;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i<n;++i)this[i]=e;else{var a=s.isBuffer(e)?e:B(new s(e,r).toString()),u=a.length;for(i=0;i<n-t;++i)this[i+t]=a[i%u]}return this};var U=/[^+\/0-9A-Za-z-_]/g;function F(e){return e<16?"0"+e.toString(16):e.toString(16)}function B(e,t){var n;t=t||1/0;for(var r=e.length,o=null,i=[],a=0;a<r;++a){if((n=e.charCodeAt(a))>55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function W(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(U,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function Y(e,t,n,r){for(var o=0;o<r&&!(o+n>=t.length||o>=e.length);++o)t[o+n]=e[o];return o}}).call(t,n(3))},function(e,t,n){"use strict";var r=n(70);function o(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var n=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||r.nextTick(o,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(r.nextTick(o,n,e),n._writableState&&(n._writableState.errorEmitted=!0)):t&&t(e)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,n){"use strict";var r=n(71).Buffer,o=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function i(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===o||!o(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=s,this.end=c,t=4;break;case"utf8":this.fillLast=u,t=4;break;case"base64":this.text=l,this.end=f,t=3;break;default:return this.write=d,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function u(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function s(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function l(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function f(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function p(e){return e&&e.length?this.write(e):""}t.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<e.length?t?t+this.text(e,n):this.text(e,n):t||""},i.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t},i.prototype.text=function(e,t){var n=function(e,t,n){var r=t.length-1;if(r<n)return 0;var o=a(t[r]);if(o>=0)return o>0&&(e.lastNeed=o-1),o;if(--r<n||-2===o)return 0;if((o=a(t[r]))>=0)return o>0&&(e.lastNeed=o-2),o;if(--r<n||-2===o)return 0;if((o=a(t[r]))>=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,n){"use strict";e.exports=i;var r=n(33),o=n(54);function i(e){if(!(this instanceof i))return new i(e);r.call(this,e),this._transformState={afterTransform:function(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=t&&this.push(t),r(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.length<o.highWaterMark)&&this._read(o.highWaterMark)}.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush&&(this._flush=e.flush)),this.on("prefinish",a)}function a(){var e=this;"function"==typeof this._flush?this._flush(function(t,n){u(e,t,n)}):u(this,null,null)}function u(e,t,n){if(t)return e.emit("error",t);if(null!=n&&e.push(n),e._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(e._transformState.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}o.inherits=n(32),o.inherits(i,r),i.prototype.push=function(e,t){return this._transformState.needTransform=!1,r.prototype.push.call(this,e,t)},i.prototype._transform=function(e,t,n){throw new Error("_transform() is not implemented")},i.prototype._write=function(e,t,n){var r=this._transformState;if(r.writecb=n,r.writechunk=e,r.writeencoding=t,!r.transforming){var o=this._readableState;(r.needTransform||o.needReadable||o.length<o.highWaterMark)&&this._read(o.highWaterMark)}},i.prototype._read=function(e){var t=this._transformState;null!==t.writechunk&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0},i.prototype._destroy=function(e,t){var n=this;r.prototype._destroy.call(this,e,function(e){t(e),n.emit("close")})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Sugarcube=t.Places365=t.Coco=t.KeyframeStatus=t.KeyframeSingle=t.KeyframeList=t.Summary=t.MediaInfo=t.MediaRecord=t.Heading=void 0;var r=p(n(502)),o=p(n(504)),i=p(n(505)),a=p(n(506)),u=p(n(507)),s=p(n(508)),c=p(n(511)),l=p(n(512)),f=p(n(513)),d=p(n(514));function p(e){return e&&e.__esModule?e:{default:e}}n(515),t.Heading=r.default,t.MediaRecord=i.default,t.MediaInfo=o.default,t.Summary=a.default,t.KeyframeList=u.default,t.KeyframeSingle=s.default,t.KeyframeStatus=c.default,t.Coco=l.default,t.Places365=f.default,t.Sugarcube=d.default},function(e,t,n){"use strict";t.decode=t.parse=n(521),t.encode=t.stringify=n(522)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=g(n(4)),o=g(n(5)),i=g(n(6)),a=g(n(7)),u=g(n(8)),s=g(n(9)),c=n(1),l=g(c),f=(n(16),n(15)),d=n(2),p=g(n(523)),h=n(17),m=n(11),v=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(21)),y=g(n(114));function g(e){return e&&e.__esModule?e:{default:e}}var _={dragging:!1,draggingBox:!1,bounds:null,mouseX:0,mouseY:0,box:{x:0,y:0,w:0,h:0}},b=function(e){function t(){(0,i.default)(this,t);var e=(0,u.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return e.state=(0,r.default)({},_),e.handleMouseDown=e.handleMouseDown.bind(e),e.handleMouseDownOnBox=e.handleMouseDownOnBox.bind(e),e.handleMouseMove=e.handleMouseMove.bind(e),e.handleMouseUp=e.handleMouseUp.bind(e),e}return(0,s.default)(t,e),(0,a.default)(t,[{key:"componentDidMount",value:function(){document.body.addEventListener("mousemove",this.handleMouseMove),document.body.addEventListener("mouseup",this.handleMouseUp)}},{key:"componentDidUpdate",value:function(e){!this.state.bounds||this.props.query.query&&e.query.query&&this.props.query.query.url===e.query.query.url||this.setState((0,r.default)({},_))}},{key:"componentWillUnmount",value:function(){document.body.removeEventListener("mousemove",this.handleMouseMove),document.body.removeEventListener("mouseup",this.handleMouseUp)}},{key:"handleMouseDown",value:function(e){e.preventDefault();var t=this.imgRef.getBoundingClientRect(),n=e.pageX,r=e.pageY,o=n-t.left,i=r-t.top;this.setState({dragging:!0,bounds:t,mouseX:n,mouseY:r,box:{x:o,y:i,w:1,h:1}})}},{key:"handleMouseDownOnBox",value:function(e){var t=this.imgRef.getBoundingClientRect(),n=e.pageX,o=e.pageY;this.setState({draggingBox:!0,bounds:t,mouseX:n,mouseY:o,initialBox:(0,r.default)({},this.state.box),box:(0,r.default)({},this.state.box)})}},{key:"handleMouseMove",value:function(e){var t=this.state,n=t.dragging,r=t.draggingBox,o=t.bounds,i=t.mouseX,a=t.mouseY,u=t.initialBox,s=t.box;if(n){e.preventDefault();var c=s.x,l=s.y,f=(0,h.clamp)(e.pageX-i,0,o.width-c),d=(0,h.clamp)(e.pageY-a,0,o.height-l);this.setState({box:{x:c,y:l,w:f,h:d}})}else if(r){e.preventDefault();var p=u.x,m=u.y,v=u.w,y=u.h,g=e.pageX-i,_=e.pageY-a;this.setState({box:{x:(0,h.clamp)(p+g,0,o.width-v),y:(0,h.clamp)(m+_,0,o.height-y),w:v,h:y}})}}},{key:"handleMouseUp",value:function(e){var t=this,n=this.props.actions,o=this.state,i=o.dragging,a=o.draggingBox,u=o.bounds,s=o.box;if(i||a){e.preventDefault();var c=s.x,l=s.y,f=s.w,d=s.h,h=this.imgRef,m=document.createElement("canvas"),v=m.getContext("2d"),y=h.naturalWidth/u.width;if(m.width=f*y,m.height=d*y,f<10||d<10)this.setState({dragging:!1,draggingBox:!1,box:{x:0,y:0,w:0,h:0}});else{this.setState({dragging:!1,draggingBox:!1});var g=new Image,_=!1;g.onload=function(){if(!_){_=!0,g.onload=null,v.drawImage(g,Math.round(c*y),Math.round(l*y),Math.round(f*y),Math.round(d*y),0,0,m.width,m.height);var e=(0,p.default)(m.toDataURL("image/jpeg",.9));n.upload(e,(0,r.default)({},t.props.query.query,{crop:{x:c,y:l,w:f,h:d}}))}},g.crossOrigin="anonymous",g.src=h.src,g.complete&&g.onload()}}}},{key:"render",value:function(){var e=this,t=this.props.query.query,n=this.state.box,r=n.x,o=n.y,i=n.w,a=n.h;if(!t)return null;if(t.loading)return l.default.createElement("div",{className:"searchQuery column"},l.default.createElement("h2",null,"Loading results..."),l.default.createElement(m.Loader,null));var u=t.url;return u&&0===u.indexOf("static")&&(u="/search/"+u),l.default.createElement("div",{className:"searchQuery row"},l.default.createElement("div",{className:"searchBox"},l.default.createElement("img",{src:u,ref:function(t){return e.imgRef=t},onMouseDown:this.handleMouseDown,crossOrigin:"anonymous"}),!!i&&l.default.createElement("div",{className:"box",style:{left:r,top:o,width:i,height:a},onMouseDown:this.handleMouseDownOnBox})),l.default.createElement("div",null,l.default.createElement("h3",null,"Your Query"),l.default.createElement(y.default,{query:t})))}}]),t}(c.Component);t.default=(0,d.connect)(function(e){return{query:e.search.query,options:e.search.options}},function(e){return{actions:(0,f.bindActionCreators)((0,r.default)({},v),e)}})(b)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=f(n(4)),o=f(n(1)),i=n(16),a=n(15),u=n(2),s=(l(n(209)),n(11)),c=l(n(21));function l(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function f(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.withRouter)((0,u.connect)(function(e){return{query:e.search.query.query,results:e.search.query.results,options:e.search.options}},function(e){return{searchActions:(0,a.bindActionCreators)((0,r.default)({},c),e)}})(function(e){var t=e.query,n=e.results,r=e.options;return!t||t.reset||t.loading||!n?o.default.createElement("div",null):t.loading||n.length?o.default.createElement("div",{className:"searchResults"},o.default.createElement("div",{className:"searchResultsHeading row"},o.default.createElement("div",{className:"column"},o.default.createElement("h3",null,"Search Results"),o.default.createElement("small",{className:"subtitle"},"Searched 10,523,176 frames from 576,234 videos (took ",t.timing.toFixed(2)," ms)"))),o.default.createElement(s.Keyframes,{frames:n,showHash:!0,showTimestamp:r.groupByHash,showSearchButton:!0,showSaveButton:!0,groupByHash:r.groupByHash})):o.default.createElement("div",{className:"searchResults"},o.default.createElement("h3",null,"No results"))}))},function(e,t,n){"use strict";var r=c(n(1)),o=c(n(214)),i=n(218),a=n(2),u=c(n(242)),s=n(94);function c(e){return e&&e.__esModule?e:{default:e}}var l=document.createElement("div");document.body.appendChild(l),o.default.render(r.default.createElement(i.AppContainer,null,r.default.createElement(a.Provider,{store:s.store},r.default.createElement(u.default,{history:s.history}))),l)},function(e,t,n){"use strict";
+/** @license React v16.5.2
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var r=n(115),o="function"==typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,u=o?Symbol.for("react.fragment"):60107,s=o?Symbol.for("react.strict_mode"):60108,c=o?Symbol.for("react.profiler"):60114,l=o?Symbol.for("react.provider"):60109,f=o?Symbol.for("react.context"):60110,d=o?Symbol.for("react.async_mode"):60111,p=o?Symbol.for("react.forward_ref"):60112;o&&Symbol.for("react.placeholder");var h="function"==typeof Symbol&&Symbol.iterator;function m(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=0;r<t;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);!function(e,t,n,r,o,i,a,u){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,i,a,u],c=0;(e=Error(t.replace(/%s/g,function(){return s[c++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}var v={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y={};function g(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||v}function _(){}function b(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||v}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){"object"!=typeof e&&"function"!=typeof e&&null!=e&&m("85"),this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},_.prototype=g.prototype;var w=b.prototype=new _;w.constructor=b,r(w,g.prototype),w.isPureReactComponent=!0;var x={current:null,currentDispatcher:null},E=Object.prototype.hasOwnProperty,O={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r=void 0,o={},a=null,u=null;if(null!=t)for(r in void 0!==t.ref&&(u=t.ref),void 0!==t.key&&(a=""+t.key),t)E.call(t,r)&&!O.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var c=Array(s),l=0;l<s;l++)c[l]=arguments[l+2];o.children=c}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:i,type:e,key:a,ref:u,props:o,_owner:x.current}}function T(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var k=/\/+/g,R=[];function j(e,t,n,r){if(R.length){var o=R.pop();return o.result=e,o.keyPrefix=t,o.func=n,o.context=r,o.count=0,o}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function P(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>R.length&&R.push(e)}function C(e,t,n){return null==e?0:function e(t,n,r,o){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var s=!1;if(null===t)s=!0;else switch(u){case"string":case"number":s=!0;break;case"object":switch(t.$$typeof){case i:case a:s=!0}}if(s)return r(o,t,""===n?"."+M(t,0):n),1;if(s=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c<t.length;c++){var l=n+M(u=t[c],c);s+=e(u,l,r,o)}else if(l=null===t||"object"!=typeof t?null:"function"==typeof(l=h&&t[h]||t["@@iterator"])?l:null,"function"==typeof l)for(t=l.call(t),c=0;!(u=t.next()).done;)s+=e(u=u.value,l=n+M(u,c++),r,o);else"object"===u&&m("31","[object Object]"==(r=""+t)?"object with keys {"+Object.keys(t).join(", ")+"}":r,"");return s}(e,"",t,n)}function M(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})}(e.key):t.toString(36)}function I(e,t){e.func.call(e.context,t,e.count++)}function A(e,t,n){var r=e.result,o=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?D(e,r,n,function(e){return e}):null!=e&&(T(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,o+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(k,"$&/")+"/")+n)),r.push(e))}function D(e,t,n,r,o){var i="";null!=n&&(i=(""+n).replace(k,"$&/")+"/"),C(e,A,t=j(t,i,r,o)),P(t)}var N={Children:{map:function(e,t,n){if(null==e)return e;var r=[];return D(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;C(e,I,t=j(null,null,t,n)),P(t)},count:function(e){return C(e,function(){return null},null)},toArray:function(e){var t=[];return D(e,t,null,function(e){return e}),t},only:function(e){return T(e)||m("143"),e}},createRef:function(){return{current:null}},Component:g,PureComponent:b,createContext:function(e,t){return void 0===t&&(t=null),(e={$$typeof:f,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,Provider:null,Consumer:null,unstable_read:null}).Provider={$$typeof:l,_context:e},e.Consumer=e,e.unstable_read=function(e,t){var n=x.currentDispatcher;return null===n&&m("277"),n.readContext(e,t)}.bind(null,e),e},forwardRef:function(e){return{$$typeof:p,render:e}},Fragment:u,StrictMode:s,unstable_AsyncMode:d,unstable_Profiler:c,createElement:S,cloneElement:function(e,t,n){(null===e||void 0===e)&&m("267",e);var o=void 0,a=r({},e.props),u=e.key,s=e.ref,c=e._owner;if(null!=t){void 0!==t.ref&&(s=t.ref,c=x.current),void 0!==t.key&&(u=""+t.key);var l=void 0;for(o in e.type&&e.type.defaultProps&&(l=e.type.defaultProps),t)E.call(t,o)&&!O.hasOwnProperty(o)&&(a[o]=void 0===t[o]&&void 0!==l?l[o]:t[o])}if(1===(o=arguments.length-2))a.children=n;else if(1<o){l=Array(o);for(var f=0;f<o;f++)l[f]=arguments[f+2];a.children=l}return{$$typeof:i,type:e.type,key:u,ref:s,props:a,_owner:c}},createFactory:function(e){var t=S.bind(null,e);return t.type=e,t},isValidElement:T,version:"16.5.2",__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentOwner:x,assign:r}},L={default:N},U=L&&N||L;e.exports=U.default||U},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(215)},function(e,t,n){"use strict";
+/** @license React v16.5.2
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var r=n(1),o=n(115),i=n(216);function a(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=0;r<t;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);!function(e,t,n,r,o,i,a,u){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,i,a,u],c=0;(e=Error(t.replace(/%s/g,function(){return s[c++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}r||a("227");var u=!1,s=null,c=!1,l=null,f={onError:function(e){u=!0,s=e}};function d(e,t,n,r,o,i,a,c,l){u=!1,s=null,function(e,t,n,r,o,i,a,u,s){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(e){this.onError(e)}}.apply(f,arguments)}var p=null,h={};function m(){if(p)for(var e in h){var t=h[e],n=p.indexOf(e);if(-1<n||a("96",e),!y[n])for(var r in t.extractEvents||a("97",e),y[n]=t,n=t.eventTypes){var o=void 0,i=n[r],u=t,s=r;g.hasOwnProperty(s)&&a("99",s),g[s]=i;var c=i.phasedRegistrationNames;if(c){for(o in c)c.hasOwnProperty(o)&&v(c[o],u,s);o=!0}else i.registrationName?(v(i.registrationName,u,s),o=!0):o=!1;o||a("98",r,e)}}}function v(e,t,n){_[e]&&a("100",e),_[e]=t,b[e]=t.eventTypes[n].dependencies}var y=[],g={},_={},b={},w=null,x=null,E=null;function O(e,t,n,r){t=e.type||"unknown-event",e.currentTarget=E(r),function(e,t,n,r,o,i,f,p,h){if(d.apply(this,arguments),u){if(u){var m=s;u=!1,s=null}else a("198"),m=void 0;c||(c=!0,l=m)}}(t,n,void 0,e),e.currentTarget=null}function S(e,t){return null==t&&a("30"),null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function T(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var k=null;function R(e,t){if(e){var n=e._dispatchListeners,r=e._dispatchInstances;if(Array.isArray(n))for(var o=0;o<n.length&&!e.isPropagationStopped();o++)O(e,t,n[o],r[o]);else n&&O(e,t,n,r);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}function j(e){return R(e,!0)}function P(e){return R(e,!1)}var C={injectEventPluginOrder:function(e){p&&a("101"),p=Array.prototype.slice.call(e),m()},injectEventPluginsByName:function(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var r=e[t];h.hasOwnProperty(t)&&h[t]===r||(h[t]&&a("102",t),h[t]=r,n=!0)}n&&m()}};function M(e,t){var n=e.stateNode;if(!n)return null;var r=w(n);if(!r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}return e?null:(n&&"function"!=typeof n&&a("231",t,typeof n),n)}function I(e,t){if(null!==e&&(k=S(k,e)),e=k,k=null,e&&(T(e,t?j:P),k&&a("95"),c))throw t=l,c=!1,l=null,t}var A=Math.random().toString(36).slice(2),D="__reactInternalInstance$"+A,N="__reactEventHandlers$"+A;function L(e){if(e[D])return e[D];for(;!e[D];){if(!e.parentNode)return null;e=e.parentNode}return 7===(e=e[D]).tag||8===e.tag?e:null}function U(e){return!(e=e[D])||7!==e.tag&&8!==e.tag?null:e}function F(e){if(7===e.tag||8===e.tag)return e.stateNode;a("33")}function B(e){return e[N]||null}function W(e){do{e=e.return}while(e&&7!==e.tag);return e||null}function Y(e,t,n){(t=M(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=S(n._dispatchListeners,t),n._dispatchInstances=S(n._dispatchInstances,e))}function $(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=W(t);for(t=n.length;0<t--;)Y(n[t],"captured",e);for(t=0;t<n.length;t++)Y(n[t],"bubbled",e)}}function q(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=M(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=S(n._dispatchListeners,t),n._dispatchInstances=S(n._dispatchInstances,e))}function H(e){e&&e.dispatchConfig.registrationName&&q(e._targetInst,null,e)}function z(e){T(e,$)}var G=!("undefined"==typeof window||!window.document||!window.document.createElement);function V(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var X={animationend:V("Animation","AnimationEnd"),animationiteration:V("Animation","AnimationIteration"),animationstart:V("Animation","AnimationStart"),transitionend:V("Transition","TransitionEnd")},K={},Q={};function J(e){if(K[e])return K[e];if(!X[e])return e;var t,n=X[e];for(t in n)if(n.hasOwnProperty(t)&&t in Q)return K[e]=n[t];return e}G&&(Q=document.createElement("div").style,"AnimationEvent"in window||(delete X.animationend.animation,delete X.animationiteration.animation,delete X.animationstart.animation),"TransitionEvent"in window||delete X.transitionend.transition);var Z=J("animationend"),ee=J("animationiteration"),te=J("animationstart"),ne=J("transitionend"),re="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),oe=null,ie=null,ae=null;function ue(){if(ae)return ae;var e,t,n=ie,r=n.length,o="value"in oe?oe.value:oe.textContent,i=o.length;for(e=0;e<r&&n[e]===o[e];e++);var a=r-e;for(t=1;t<=a&&n[r-t]===o[i-t];t++);return ae=o.slice(e,1<t?1-t:void 0)}function se(){return!0}function ce(){return!1}function le(e,t,n,r){for(var o in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(o)&&((t=e[o])?this[o]=t(n):"target"===o?this.target=r:this[o]=n[o]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?se:ce,this.isPropagationStopped=ce,this}function fe(e,t,n,r){if(this.eventPool.length){var o=this.eventPool.pop();return this.call(o,e,t,n,r),o}return new this(e,t,n,r)}function de(e){e instanceof this||a("279"),e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function pe(e){e.eventPool=[],e.getPooled=fe,e.release=de}o(le.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=se)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=se)},persist:function(){this.isPersistent=se},isPersistent:ce,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=ce,this._dispatchInstances=this._dispatchListeners=null}}),le.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},le.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var i=new t;return o(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=o({},r.Interface,e),n.extend=r.extend,pe(n),n},pe(le);var he=le.extend({data:null}),me=le.extend({data:null}),ve=[9,13,27,32],ye=G&&"CompositionEvent"in window,ge=null;G&&"documentMode"in document&&(ge=document.documentMode);var _e=G&&"TextEvent"in window&&!ge,be=G&&(!ye||ge&&8<ge&&11>=ge),we=String.fromCharCode(32),xe={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},Ee=!1;function Oe(e,t){switch(e){case"keyup":return-1!==ve.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function Se(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Te=!1;var ke={eventTypes:xe,extractEvents:function(e,t,n,r){var o=void 0,i=void 0;if(ye)e:{switch(e){case"compositionstart":o=xe.compositionStart;break e;case"compositionend":o=xe.compositionEnd;break e;case"compositionupdate":o=xe.compositionUpdate;break e}o=void 0}else Te?Oe(e,n)&&(o=xe.compositionEnd):"keydown"===e&&229===n.keyCode&&(o=xe.compositionStart);return o?(be&&"ko"!==n.locale&&(Te||o!==xe.compositionStart?o===xe.compositionEnd&&Te&&(i=ue()):(ie="value"in(oe=r)?oe.value:oe.textContent,Te=!0)),o=he.getPooled(o,t,n,r),i?o.data=i:null!==(i=Se(n))&&(o.data=i),z(o),i=o):i=null,(e=_e?function(e,t){switch(e){case"compositionend":return Se(t);case"keypress":return 32!==t.which?null:(Ee=!0,we);case"textInput":return(e=t.data)===we&&Ee?null:e;default:return null}}(e,n):function(e,t){if(Te)return"compositionend"===e||!ye&&Oe(e,t)?(e=ue(),ae=ie=oe=null,Te=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return be&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=me.getPooled(xe.beforeInput,t,n,r)).data=e,z(t)):t=null,null===i?t:null===t?i:[i,t]}},Re=null,je=null,Pe=null;function Ce(e){if(e=x(e)){"function"!=typeof Re&&a("280");var t=w(e.stateNode);Re(e.stateNode,e.type,t)}}function Me(e){je?Pe?Pe.push(e):Pe=[e]:je=e}function Ie(){if(je){var e=je,t=Pe;if(Pe=je=null,Ce(e),t)for(e=0;e<t.length;e++)Ce(t[e])}}function Ae(e,t){return e(t)}function De(e,t,n){return e(t,n)}function Ne(){}var Le=!1;function Ue(e,t){if(Le)return e(t);Le=!0;try{return Ae(e,t)}finally{Le=!1,(null!==je||null!==Pe)&&(Ne(),Ie())}}var Fe={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Be(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Fe[e.type]:"textarea"===t}function We(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function Ye(e){if(!G)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}function $e(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function qe(e){e._valueTracker||(e._valueTracker=function(e){var t=$e(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function He(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=$e(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}var ze=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Ge=/^(.*)[\\\/]/,Ve="function"==typeof Symbol&&Symbol.for,Xe=Ve?Symbol.for("react.element"):60103,Ke=Ve?Symbol.for("react.portal"):60106,Qe=Ve?Symbol.for("react.fragment"):60107,Je=Ve?Symbol.for("react.strict_mode"):60108,Ze=Ve?Symbol.for("react.profiler"):60114,et=Ve?Symbol.for("react.provider"):60109,tt=Ve?Symbol.for("react.context"):60110,nt=Ve?Symbol.for("react.async_mode"):60111,rt=Ve?Symbol.for("react.forward_ref"):60112,ot=Ve?Symbol.for("react.placeholder"):60113,it="function"==typeof Symbol&&Symbol.iterator;function at(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=it&&e[it]||e["@@iterator"])?e:null}function ut(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case nt:return"AsyncMode";case Qe:return"Fragment";case Ke:return"Portal";case Ze:return"Profiler";case Je:return"StrictMode";case ot:return"Placeholder"}if("object"==typeof e){switch(e.$$typeof){case tt:return"Context.Consumer";case et:return"Context.Provider";case rt:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef")}if("function"==typeof e.then&&(e=1===e._reactStatus?e._reactResult:null))return ut(e)}return null}function st(e){var t="";do{e:switch(e.tag){case 4:case 0:case 1:case 2:case 3:case 7:case 10:var n=e._debugOwner,r=e._debugSource,o=ut(e.type),i=null;n&&(i=ut(n.type)),n=o,o="",r?o=" (at "+r.fileName.replace(Ge,"")+":"+r.lineNumber+")":i&&(o=" (created by "+i+")"),i="\n in "+(n||"Unknown")+o;break e;default:i=""}t+=i,e=e.return}while(e);return t}var ct=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,lt=Object.prototype.hasOwnProperty,ft={},dt={};function pt(e,t,n,r,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t}var ht={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ht[e]=new pt(e,0,!1,e,null)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ht[t]=new pt(t,1,!1,e[1],null)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){ht[e]=new pt(e,2,!1,e.toLowerCase(),null)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ht[e]=new pt(e,2,!1,e,null)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ht[e]=new pt(e,3,!1,e.toLowerCase(),null)}),["checked","multiple","muted","selected"].forEach(function(e){ht[e]=new pt(e,3,!0,e,null)}),["capture","download"].forEach(function(e){ht[e]=new pt(e,4,!1,e,null)}),["cols","rows","size","span"].forEach(function(e){ht[e]=new pt(e,6,!1,e,null)}),["rowSpan","start"].forEach(function(e){ht[e]=new pt(e,5,!1,e.toLowerCase(),null)});var mt=/[\-:]([a-z])/g;function vt(e){return e[1].toUpperCase()}function yt(e,t,n,r){var o=ht.hasOwnProperty(t)?ht[t]:null;(null!==o?0===o.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null===t||void 0===t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!lt.call(dt,e)||!lt.call(ft,e)&&(ct.test(e)?dt[e]=!0:(ft[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}function gt(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function _t(e,t){var n=t.checked;return o({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function bt(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=gt(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function wt(e,t){null!=(t=t.checked)&&yt(e,"checked",t,!1)}function xt(e,t){wt(e,t);var n=gt(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?Ot(e,t.type,n):t.hasOwnProperty("defaultValue")&&Ot(e,t.type,gt(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Et(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!e.defaultChecked,e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function Ot(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(mt,vt);ht[t]=new pt(t,1,!1,e,null)}),"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(mt,vt);ht[t]=new pt(t,1,!1,e,"http://www.w3.org/1999/xlink")}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(mt,vt);ht[t]=new pt(t,1,!1,e,"http://www.w3.org/XML/1998/namespace")}),ht.tabIndex=new pt("tabIndex",1,!1,"tabindex",null);var St={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function Tt(e,t,n){return(e=le.getPooled(St.change,e,t,n)).type="change",Me(n),z(e),e}var kt=null,Rt=null;function jt(e){I(e,!1)}function Pt(e){if(He(F(e)))return e}function Ct(e,t){if("change"===e)return t}var Mt=!1;function It(){kt&&(kt.detachEvent("onpropertychange",At),Rt=kt=null)}function At(e){"value"===e.propertyName&&Pt(Rt)&&Ue(jt,e=Tt(Rt,e,We(e)))}function Dt(e,t,n){"focus"===e?(It(),Rt=n,(kt=t).attachEvent("onpropertychange",At)):"blur"===e&&It()}function Nt(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Pt(Rt)}function Lt(e,t){if("click"===e)return Pt(t)}function Ut(e,t){if("input"===e||"change"===e)return Pt(t)}G&&(Mt=Ye("input")&&(!document.documentMode||9<document.documentMode));var Ft={eventTypes:St,_isInputEventSupported:Mt,extractEvents:function(e,t,n,r){var o=t?F(t):window,i=void 0,a=void 0,u=o.nodeName&&o.nodeName.toLowerCase();if("select"===u||"input"===u&&"file"===o.type?i=Ct:Be(o)?Mt?i=Ut:(i=Nt,a=Dt):(u=o.nodeName)&&"input"===u.toLowerCase()&&("checkbox"===o.type||"radio"===o.type)&&(i=Lt),i&&(i=i(e,t)))return Tt(i,n,r);a&&a(e,o,t),"blur"===e&&(e=o._wrapperState)&&e.controlled&&"number"===o.type&&Ot(o,"number",o.value)}},Bt=le.extend({view:null,detail:null}),Wt={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Yt(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Wt[e])&&!!t[e]}function $t(){return Yt}var qt=0,Ht=0,zt=!1,Gt=!1,Vt=Bt.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:$t,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=qt;return qt=e.screenX,zt?"mousemove"===e.type?e.screenX-t:0:(zt=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=Ht;return Ht=e.screenY,Gt?"mousemove"===e.type?e.screenY-t:0:(Gt=!0,0)}}),Xt=Vt.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Kt={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Qt={eventTypes:Kt,extractEvents:function(e,t,n,r){var o="mouseover"===e||"pointerover"===e,i="mouseout"===e||"pointerout"===e;if(o&&(n.relatedTarget||n.fromElement)||!i&&!o)return null;if(o=r.window===r?r:(o=r.ownerDocument)?o.defaultView||o.parentWindow:window,i?(i=t,t=(t=n.relatedTarget||n.toElement)?L(t):null):i=null,i===t)return null;var a=void 0,u=void 0,s=void 0,c=void 0;"mouseout"===e||"mouseover"===e?(a=Vt,u=Kt.mouseLeave,s=Kt.mouseEnter,c="mouse"):"pointerout"!==e&&"pointerover"!==e||(a=Xt,u=Kt.pointerLeave,s=Kt.pointerEnter,c="pointer");var l=null==i?o:F(i);if(o=null==t?o:F(t),(e=a.getPooled(u,i,n,r)).type=c+"leave",e.target=l,e.relatedTarget=o,(n=a.getPooled(s,t,n,r)).type=c+"enter",n.target=o,n.relatedTarget=l,r=t,i&&r)e:{for(o=r,c=0,a=t=i;a;a=W(a))c++;for(a=0,s=o;s;s=W(s))a++;for(;0<c-a;)t=W(t),c--;for(;0<a-c;)o=W(o),a--;for(;c--;){if(t===o||t===o.alternate)break e;t=W(t),o=W(o)}t=null}else t=null;for(o=t,t=[];i&&i!==o&&(null===(c=i.alternate)||c!==o);)t.push(i),i=W(i);for(i=[];r&&r!==o&&(null===(c=r.alternate)||c!==o);)i.push(r),r=W(r);for(r=0;r<t.length;r++)q(t[r],"bubbled",e);for(r=i.length;0<r--;)q(i[r],"captured",n);return[e,n]}},Jt=Object.prototype.hasOwnProperty;function Zt(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function en(e,t){if(Zt(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!Jt.call(t,n[r])||!Zt(e[n[r]],t[n[r]]))return!1;return!0}function tn(e){var t=e;if(e.alternate)for(;t.return;)t=t.return;else{if(0!=(2&t.effectTag))return 1;for(;t.return;)if(0!=(2&(t=t.return).effectTag))return 1}return 5===t.tag?2:3}function nn(e){2!==tn(e)&&a("188")}function rn(e){if(!(e=function(e){var t=e.alternate;if(!t)return 3===(t=tn(e))&&a("188"),1===t?null:e;for(var n=e,r=t;;){var o=n.return,i=o?o.alternate:null;if(!o||!i)break;if(o.child===i.child){for(var u=o.child;u;){if(u===n)return nn(o),e;if(u===r)return nn(o),t;u=u.sibling}a("188")}if(n.return!==r.return)n=o,r=i;else{u=!1;for(var s=o.child;s;){if(s===n){u=!0,n=o,r=i;break}if(s===r){u=!0,r=o,n=i;break}s=s.sibling}if(!u){for(s=i.child;s;){if(s===n){u=!0,n=i,r=o;break}if(s===r){u=!0,r=i,n=o;break}s=s.sibling}u||a("189")}}n.alternate!==r&&a("190")}return 5!==n.tag&&a("188"),n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(7===t.tag||8===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}var on=le.extend({animationName:null,elapsedTime:null,pseudoElement:null}),an=le.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),un=Bt.extend({relatedTarget:null});function sn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var cn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},ln={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},fn=Bt.extend({key:function(e){if(e.key){var t=cn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=sn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?ln[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:$t,charCode:function(e){return"keypress"===e.type?sn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?sn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),dn=Vt.extend({dataTransfer:null}),pn=Bt.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:$t}),hn=le.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),mn=Vt.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),vn=[["abort","abort"],[Z,"animationEnd"],[ee,"animationIteration"],[te,"animationStart"],["canplay","canPlay"],["canplaythrough","canPlayThrough"],["drag","drag"],["dragenter","dragEnter"],["dragexit","dragExit"],["dragleave","dragLeave"],["dragover","dragOver"],["durationchange","durationChange"],["emptied","emptied"],["encrypted","encrypted"],["ended","ended"],["error","error"],["gotpointercapture","gotPointerCapture"],["load","load"],["loadeddata","loadedData"],["loadedmetadata","loadedMetadata"],["loadstart","loadStart"],["lostpointercapture","lostPointerCapture"],["mousemove","mouseMove"],["mouseout","mouseOut"],["mouseover","mouseOver"],["playing","playing"],["pointermove","pointerMove"],["pointerout","pointerOut"],["pointerover","pointerOver"],["progress","progress"],["scroll","scroll"],["seeking","seeking"],["stalled","stalled"],["suspend","suspend"],["timeupdate","timeUpdate"],["toggle","toggle"],["touchmove","touchMove"],[ne,"transitionEnd"],["waiting","waiting"],["wheel","wheel"]],yn={},gn={};function _n(e,t){var n=e[0],r="on"+((e=e[1])[0].toUpperCase()+e.slice(1));t={phasedRegistrationNames:{bubbled:r,captured:r+"Capture"},dependencies:[n],isInteractive:t},yn[e]=t,gn[n]=t}[["blur","blur"],["cancel","cancel"],["click","click"],["close","close"],["contextmenu","contextMenu"],["copy","copy"],["cut","cut"],["auxclick","auxClick"],["dblclick","doubleClick"],["dragend","dragEnd"],["dragstart","dragStart"],["drop","drop"],["focus","focus"],["input","input"],["invalid","invalid"],["keydown","keyDown"],["keypress","keyPress"],["keyup","keyUp"],["mousedown","mouseDown"],["mouseup","mouseUp"],["paste","paste"],["pause","pause"],["play","play"],["pointercancel","pointerCancel"],["pointerdown","pointerDown"],["pointerup","pointerUp"],["ratechange","rateChange"],["reset","reset"],["seeked","seeked"],["submit","submit"],["touchcancel","touchCancel"],["touchend","touchEnd"],["touchstart","touchStart"],["volumechange","volumeChange"]].forEach(function(e){_n(e,!0)}),vn.forEach(function(e){_n(e,!1)});var bn={eventTypes:yn,isInteractiveTopLevelEventType:function(e){return void 0!==(e=gn[e])&&!0===e.isInteractive},extractEvents:function(e,t,n,r){var o=gn[e];if(!o)return null;switch(e){case"keypress":if(0===sn(n))return null;case"keydown":case"keyup":e=fn;break;case"blur":case"focus":e=un;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=Vt;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=dn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=pn;break;case Z:case ee:case te:e=on;break;case ne:e=hn;break;case"scroll":e=Bt;break;case"wheel":e=mn;break;case"copy":case"cut":case"paste":e=an;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=Xt;break;default:e=le}return z(t=e.getPooled(o,t,n,r)),t}},wn=bn.isInteractiveTopLevelEventType,xn=[];function En(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r;for(r=n;r.return;)r=r.return;if(!(r=5!==r.tag?null:r.stateNode.containerInfo))break;e.ancestors.push(n),n=L(r)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var o=We(e.nativeEvent);r=e.topLevelType;for(var i=e.nativeEvent,a=null,u=0;u<y.length;u++){var s=y[u];s&&(s=s.extractEvents(r,t,i,o))&&(a=S(a,s))}I(a,!1)}}var On=!0;function Sn(e,t){if(!t)return null;var n=(wn(e)?kn:Rn).bind(null,e);t.addEventListener(e,n,!1)}function Tn(e,t){if(!t)return null;var n=(wn(e)?kn:Rn).bind(null,e);t.addEventListener(e,n,!0)}function kn(e,t){De(Rn,e,t)}function Rn(e,t){if(On){var n=We(t);if(null===(n=L(n))||"number"!=typeof n.tag||2===tn(n)||(n=null),xn.length){var r=xn.pop();r.topLevelType=e,r.nativeEvent=t,r.targetInst=n,e=r}else e={topLevelType:e,nativeEvent:t,targetInst:n,ancestors:[]};try{Ue(En,e)}finally{e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,10>xn.length&&xn.push(e)}}}var jn={},Pn=0,Cn="_reactListenersID"+(""+Math.random()).slice(2);function Mn(e){return Object.prototype.hasOwnProperty.call(e,Cn)||(e[Cn]=Pn++,jn[e[Cn]]={}),jn[e[Cn]]}function In(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function An(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Dn(e,t){var n,r=An(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=An(r)}}function Nn(){for(var e=window,t=In();t instanceof e.HTMLIFrameElement;){try{e=t.contentDocument.defaultView}catch(e){break}t=In(e.document)}return t}function Ln(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var Un=G&&"documentMode"in document&&11>=document.documentMode,Fn={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},Bn=null,Wn=null,Yn=null,$n=!1;function qn(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return $n||null==Bn||Bn!==In(n)?null:("selectionStart"in(n=Bn)&&Ln(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Yn&&en(Yn,n)?null:(Yn=n,(e=le.getPooled(Fn.select,Wn,e,t)).type="select",e.target=Bn,z(e),e))}var Hn={eventTypes:Fn,extractEvents:function(e,t,n,r){var o,i=r.window===r?r.document:9===r.nodeType?r:r.ownerDocument;if(!(o=!i)){e:{i=Mn(i),o=b.onSelect;for(var a=0;a<o.length;a++){var u=o[a];if(!i.hasOwnProperty(u)||!i[u]){i=!1;break e}}i=!0}o=!i}if(o)return null;switch(i=t?F(t):window,e){case"focus":(Be(i)||"true"===i.contentEditable)&&(Bn=i,Wn=t,Yn=null);break;case"blur":Yn=Wn=Bn=null;break;case"mousedown":$n=!0;break;case"contextmenu":case"mouseup":case"dragend":return $n=!1,qn(n,r);case"selectionchange":if(Un)break;case"keydown":case"keyup":return qn(n,r)}return null}};function zn(e,t){return e=o({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,function(e){null!=e&&(t+=e)}),t}(t.children))&&(e.children=t),e}function Gn(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+gt(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function Vn(e,t){return null!=t.dangerouslySetInnerHTML&&a("91"),o({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Xn(e,t){var n=t.value;null==n&&(n=t.defaultValue,null!=(t=t.children)&&(null!=n&&a("92"),Array.isArray(t)&&(1>=t.length||a("93"),t=t[0]),n=t),null==n&&(n="")),e._wrapperState={initialValue:gt(n)}}function Kn(e,t){var n=gt(t.value),r=gt(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function Qn(e){var t=e.textContent;t===e._wrapperState.initialValue&&(e.value=t)}C.injectEventPluginOrder("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),w=B,x=U,E=F,C.injectEventPluginsByName({SimpleEventPlugin:bn,EnterLeaveEventPlugin:Qt,ChangeEventPlugin:Ft,SelectEventPlugin:Hn,BeforeInputEventPlugin:ke});var Jn={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function Zn(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function er(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?Zn(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var tr=void 0,nr=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,o){MSApp.execUnsafeLocalFunction(function(){return e(t,n)})}:e}(function(e,t){if(e.namespaceURI!==Jn.svg||"innerHTML"in e)e.innerHTML=t;else{for((tr=tr||document.createElement("div")).innerHTML="<svg>"+t+"</svg>",t=tr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function rr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var or={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ir=["Webkit","ms","Moz","O"];function ar(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=n,i=t[n];o=null==i||"boolean"==typeof i||""===i?"":r||"number"!=typeof i||0===i||or.hasOwnProperty(o)&&or[o]?(""+i).trim():i+"px","float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(or).forEach(function(e){ir.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),or[t]=or[e]})});var ur=o({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function sr(e,t){t&&(ur[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML)&&a("137",e,""),null!=t.dangerouslySetInnerHTML&&(null!=t.children&&a("60"),"object"==typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML||a("61")),null!=t.style&&"object"!=typeof t.style&&a("62",""))}function cr(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function lr(e,t){var n=Mn(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=b[t];for(var r=0;r<t.length;r++){var o=t[r];if(!n.hasOwnProperty(o)||!n[o]){switch(o){case"scroll":Tn("scroll",e);break;case"focus":case"blur":Tn("focus",e),Tn("blur",e),n.blur=!0,n.focus=!0;break;case"cancel":case"close":Ye(o)&&Tn(o,e);break;case"invalid":case"submit":case"reset":break;default:-1===re.indexOf(o)&&Sn(o,e)}n[o]=!0}}}function fr(){}var dr=null,pr=null;function hr(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function mr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}function vr(e){for(e=e.nextSibling;e&&1!==e.nodeType&&3!==e.nodeType;)e=e.nextSibling;return e}function yr(e){for(e=e.firstChild;e&&1!==e.nodeType&&3!==e.nodeType;)e=e.nextSibling;return e}new Set;var gr=[],_r=-1;function br(e){0>_r||(e.current=gr[_r],gr[_r]=null,_r--)}function wr(e,t){gr[++_r]=e.current,e.current=t}var xr={},Er={current:xr},Or={current:!1},Sr=xr;function Tr(e,t){var n=e.type.contextTypes;if(!n)return xr;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,i={};for(o in n)i[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function kr(e){return null!==(e=e.childContextTypes)&&void 0!==e}function Rr(e){br(Or),br(Er)}function jr(e){br(Or),br(Er)}function Pr(e,t,n){Er.current!==xr&&a("168"),wr(Er,t),wr(Or,n)}function Cr(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var i in r=r.getChildContext())i in e||a("108",ut(t)||"Unknown",i);return o({},n,r)}function Mr(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||xr,Sr=Er.current,wr(Er,t),wr(Or,Or.current),!0}function Ir(e,t,n){var r=e.stateNode;r||a("169"),n?(t=Cr(e,t,Sr),r.__reactInternalMemoizedMergedChildContext=t,br(Or),br(Er),wr(Er,t)):br(Or),wr(Or,n)}var Ar=null,Dr=null;function Nr(e){return function(t){try{return e(t)}catch(e){}}}function Lr(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=null,this.index=0,this.ref=null,this.pendingProps=t,this.firstContextDependency=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Ur(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Fr(e,t,n){var r=e.alternate;return null===r?((r=new Lr(e.tag,t,e.key,e.mode)).type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.effectTag=0,r.nextEffect=null,r.firstEffect=null,r.lastEffect=null),r.childExpirationTime=e.childExpirationTime,r.expirationTime=t!==e.pendingProps?n:e.expirationTime,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,r.firstContextDependency=e.firstContextDependency,r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function Br(e,t,n){var r=e.type,o=e.key;e=e.props;var i=void 0;if("function"==typeof r)i=Ur(r)?2:4;else if("string"==typeof r)i=7;else e:switch(r){case Qe:return Wr(e.children,t,n,o);case nt:i=10,t|=3;break;case Je:i=10,t|=2;break;case Ze:return(r=new Lr(15,e,o,4|t)).type=Ze,r.expirationTime=n,r;case ot:i=16;break;default:if("object"==typeof r&&null!==r)switch(r.$$typeof){case et:i=12;break e;case tt:i=11;break e;case rt:i=13;break e;default:if("function"==typeof r.then){i=4;break e}}a("130",null==r?r:typeof r,"")}return(t=new Lr(i,e,o,t)).type=r,t.expirationTime=n,t}function Wr(e,t,n,r){return(e=new Lr(9,e,r,t)).expirationTime=n,e}function Yr(e,t,n){return(e=new Lr(8,e,null,t)).expirationTime=n,e}function $r(e,t,n){return(t=new Lr(6,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function qr(e,t){e.didError=!1;var n=e.earliestPendingTime;0===n?e.earliestPendingTime=e.latestPendingTime=t:n>t?e.earliestPendingTime=t:e.latestPendingTime<t&&(e.latestPendingTime=t),Hr(t,e)}function Hr(e,t){var n=t.earliestSuspendedTime,r=t.latestSuspendedTime,o=t.earliestPendingTime,i=t.latestPingedTime;0===(o=0!==o?o:i)&&(0===e||r>e)&&(o=r),0!==(e=o)&&0!==n&&n<e&&(e=n),t.nextExpirationTimeToWorkOn=o,t.expirationTime=e}var zr=!1;function Gr(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Vr(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Xr(e){return{expirationTime:e,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Kr(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function Qr(e,t){var n=e.alternate;if(null===n){var r=e.updateQueue,o=null;null===r&&(r=e.updateQueue=Gr(e.memoizedState))}else r=e.updateQueue,o=n.updateQueue,null===r?null===o?(r=e.updateQueue=Gr(e.memoizedState),o=n.updateQueue=Gr(n.memoizedState)):r=e.updateQueue=Vr(o):null===o&&(o=n.updateQueue=Vr(r));null===o||r===o?Kr(r,t):null===r.lastUpdate||null===o.lastUpdate?(Kr(r,t),Kr(o,t)):(Kr(r,t),o.lastUpdate=t)}function Jr(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=Gr(e.memoizedState):Zr(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function Zr(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=Vr(t)),t}function eo(e,t,n,r,i,a){switch(n.tag){case 1:return"function"==typeof(e=n.payload)?e.call(a,r,i):e;case 3:e.effectTag=-1025&e.effectTag|64;case 0:if(null===(i="function"==typeof(e=n.payload)?e.call(a,r,i):e)||void 0===i)break;return o({},r,i);case 2:zr=!0}return r}function to(e,t,n,r,o){zr=!1;for(var i=(t=Zr(e,t)).baseState,a=null,u=0,s=t.firstUpdate,c=i;null!==s;){var l=s.expirationTime;l>o?(null===a&&(a=s,i=c),(0===u||u>l)&&(u=l)):(c=eo(e,0,s,c,n,r),null!==s.callback&&(e.effectTag|=32,s.nextEffect=null,null===t.lastEffect?t.firstEffect=t.lastEffect=s:(t.lastEffect.nextEffect=s,t.lastEffect=s))),s=s.next}for(l=null,s=t.firstCapturedUpdate;null!==s;){var f=s.expirationTime;f>o?(null===l&&(l=s,null===a&&(i=c)),(0===u||u>f)&&(u=f)):(c=eo(e,0,s,c,n,r),null!==s.callback&&(e.effectTag|=32,s.nextEffect=null,null===t.lastCapturedEffect?t.firstCapturedEffect=t.lastCapturedEffect=s:(t.lastCapturedEffect.nextEffect=s,t.lastCapturedEffect=s))),s=s.next}null===a&&(t.lastUpdate=null),null===l?t.lastCapturedUpdate=null:e.effectTag|=32,null===a&&null===l&&(i=c),t.baseState=i,t.firstUpdate=a,t.firstCapturedUpdate=l,e.expirationTime=u,e.memoizedState=c}function no(e,t,n){null!==t.firstCapturedUpdate&&(null!==t.lastUpdate&&(t.lastUpdate.next=t.firstCapturedUpdate,t.lastUpdate=t.lastCapturedUpdate),t.firstCapturedUpdate=t.lastCapturedUpdate=null),ro(t.firstEffect,n),t.firstEffect=t.lastEffect=null,ro(t.firstCapturedEffect,n),t.firstCapturedEffect=t.lastCapturedEffect=null}function ro(e,t){for(;null!==e;){var n=e.callback;if(null!==n){e.callback=null;var r=t;"function"!=typeof n&&a("191",n),n.call(r)}e=e.nextEffect}}function oo(e,t){return{value:e,source:t,stack:st(t)}}var io={current:null},ao=null,uo=null,so=null;function co(e,t){var n=e.type._context;wr(io,n._currentValue),n._currentValue=t}function lo(e){var t=io.current;br(io),e.type._context._currentValue=t}function fo(e){ao=e,so=uo=null,e.firstContextDependency=null}function po(e,t){return so!==e&&!1!==t&&0!==t&&("number"==typeof t&&1073741823!==t||(so=e,t=1073741823),t={context:e,observedBits:t,next:null},null===uo?(null===ao&&a("277"),ao.firstContextDependency=uo=t):uo=uo.next=t),e._currentValue}var ho={},mo={current:ho},vo={current:ho},yo={current:ho};function go(e){return e===ho&&a("174"),e}function _o(e,t){wr(yo,t),wr(vo,e),wr(mo,ho);var n=t.nodeType;switch(n){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:er(null,"");break;default:t=er(t=(n=8===n?t.parentNode:t).namespaceURI||null,n=n.tagName)}br(mo),wr(mo,t)}function bo(e){br(mo),br(vo),br(yo)}function wo(e){go(yo.current);var t=go(mo.current),n=er(t,e.type);t!==n&&(wr(vo,e),wr(mo,n))}function xo(e){vo.current===e&&(br(mo),br(vo))}var Eo=(new r.Component).refs;function Oo(e,t,n,r){n=null===(n=n(r,t=e.memoizedState))||void 0===n?t:o({},t,n),e.memoizedState=n,null!==(r=e.updateQueue)&&0===e.expirationTime&&(r.baseState=n)}var So={isMounted:function(e){return!!(e=e._reactInternalFiber)&&2===tn(e)},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var r=aa(),o=Xr(r=Mi(r,e));o.payload=t,void 0!==n&&null!==n&&(o.callback=n),Qr(e,o),Ii(e,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var r=aa(),o=Xr(r=Mi(r,e));o.tag=1,o.payload=t,void 0!==n&&null!==n&&(o.callback=n),Qr(e,o),Ii(e,r)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=aa(),r=Xr(n=Mi(n,e));r.tag=2,void 0!==t&&null!==t&&(r.callback=t),Qr(e,r),Ii(e,n)}};function To(e,t,n,r,o,i,a){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,i,a):!t.prototype||!t.prototype.isPureReactComponent||(!en(n,r)||!en(o,i))}function ko(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&So.enqueueReplaceState(t,t.state,null)}function Ro(e,t,n,r){var o=e.stateNode,i=kr(t)?Sr:Er.current;o.props=n,o.state=e.memoizedState,o.refs=Eo,o.context=Tr(e,i),null!==(i=e.updateQueue)&&(to(e,i,n,o,r),o.state=e.memoizedState),"function"==typeof(i=t.getDerivedStateFromProps)&&(Oo(e,t,i,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&So.enqueueReplaceState(o,o.state,null),null!==(i=e.updateQueue)&&(to(e,i,n,o,r),o.state=e.memoizedState)),"function"==typeof o.componentDidMount&&(e.effectTag|=4)}var jo=Array.isArray;function Po(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){var r=void 0;(n=n._owner)&&(2!==n.tag&&3!==n.tag&&a("110"),r=n.stateNode),r||a("147",e);var o=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===o?t.ref:((t=function(e){var t=r.refs;t===Eo&&(t=r.refs={}),null===e?delete t[o]:t[o]=e})._stringRef=o,t)}"string"!=typeof e&&a("284"),n._owner||a("254",e)}return e}function Co(e,t){"textarea"!==e.type&&a("31","[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,"")}function Mo(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t,n){return(e=Fr(e,t,n)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.effectTag=2,n):r:(t.effectTag=2,n):n}function u(t){return e&&null===t.alternate&&(t.effectTag=2),t}function s(e,t,n,r){return null===t||8!==t.tag?((t=Yr(n,e.mode,r)).return=e,t):((t=o(t,n,r)).return=e,t)}function c(e,t,n,r){return null!==t&&t.type===n.type?((r=o(t,n.props,r)).ref=Po(e,t,n),r.return=e,r):((r=Br(n,e.mode,r)).ref=Po(e,t,n),r.return=e,r)}function l(e,t,n,r){return null===t||6!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=$r(n,e.mode,r)).return=e,t):((t=o(t,n.children||[],r)).return=e,t)}function f(e,t,n,r,i){return null===t||9!==t.tag?((t=Wr(n,e.mode,r,i)).return=e,t):((t=o(t,n,r)).return=e,t)}function d(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Yr(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case Xe:return(n=Br(t,e.mode,n)).ref=Po(e,null,t),n.return=e,n;case Ke:return(t=$r(t,e.mode,n)).return=e,t}if(jo(t)||at(t))return(t=Wr(t,e.mode,n,null)).return=e,t;Co(e,t)}return null}function p(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==o?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case Xe:return n.key===o?n.type===Qe?f(e,t,n.props.children,r,o):c(e,t,n,r):null;case Ke:return n.key===o?l(e,t,n,r):null}if(jo(n)||at(n))return null!==o?null:f(e,t,n,r,null);Co(e,n)}return null}function h(e,t,n,r,o){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case Xe:return e=e.get(null===r.key?n:r.key)||null,r.type===Qe?f(t,e,r.props.children,o,r.key):c(t,e,r,o);case Ke:return l(t,e=e.get(null===r.key?n:r.key)||null,r,o)}if(jo(r)||at(r))return f(t,e=e.get(n)||null,r,o,null);Co(t,r)}return null}function m(o,a,u,s){for(var c=null,l=null,f=a,m=a=0,v=null;null!==f&&m<u.length;m++){f.index>m?(v=f,f=null):v=f.sibling;var y=p(o,f,u[m],s);if(null===y){null===f&&(f=v);break}e&&f&&null===y.alternate&&t(o,f),a=i(y,a,m),null===l?c=y:l.sibling=y,l=y,f=v}if(m===u.length)return n(o,f),c;if(null===f){for(;m<u.length;m++)(f=d(o,u[m],s))&&(a=i(f,a,m),null===l?c=f:l.sibling=f,l=f);return c}for(f=r(o,f);m<u.length;m++)(v=h(f,o,m,u[m],s))&&(e&&null!==v.alternate&&f.delete(null===v.key?m:v.key),a=i(v,a,m),null===l?c=v:l.sibling=v,l=v);return e&&f.forEach(function(e){return t(o,e)}),c}function v(o,u,s,c){var l=at(s);"function"!=typeof l&&a("150"),null==(s=l.call(s))&&a("151");for(var f=l=null,m=u,v=u=0,y=null,g=s.next();null!==m&&!g.done;v++,g=s.next()){m.index>v?(y=m,m=null):y=m.sibling;var _=p(o,m,g.value,c);if(null===_){m||(m=y);break}e&&m&&null===_.alternate&&t(o,m),u=i(_,u,v),null===f?l=_:f.sibling=_,f=_,m=y}if(g.done)return n(o,m),l;if(null===m){for(;!g.done;v++,g=s.next())null!==(g=d(o,g.value,c))&&(u=i(g,u,v),null===f?l=g:f.sibling=g,f=g);return l}for(m=r(o,m);!g.done;v++,g=s.next())null!==(g=h(m,o,v,g.value,c))&&(e&&null!==g.alternate&&m.delete(null===g.key?v:g.key),u=i(g,u,v),null===f?l=g:f.sibling=g,f=g);return e&&m.forEach(function(e){return t(o,e)}),l}return function(e,r,i,s){var c="object"==typeof i&&null!==i&&i.type===Qe&&null===i.key;c&&(i=i.props.children);var l="object"==typeof i&&null!==i;if(l)switch(i.$$typeof){case Xe:e:{for(l=i.key,c=r;null!==c;){if(c.key===l){if(9===c.tag?i.type===Qe:c.type===i.type){n(e,c.sibling),(r=o(c,i.type===Qe?i.props.children:i.props,s)).ref=Po(e,c,i),r.return=e,e=r;break e}n(e,c);break}t(e,c),c=c.sibling}i.type===Qe?((r=Wr(i.props.children,e.mode,s,i.key)).return=e,e=r):((s=Br(i,e.mode,s)).ref=Po(e,r,i),s.return=e,e=s)}return u(e);case Ke:e:{for(c=i.key;null!==r;){if(r.key===c){if(6===r.tag&&r.stateNode.containerInfo===i.containerInfo&&r.stateNode.implementation===i.implementation){n(e,r.sibling),(r=o(r,i.children||[],s)).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=$r(i,e.mode,s)).return=e,e=r}return u(e)}if("string"==typeof i||"number"==typeof i)return i=""+i,null!==r&&8===r.tag?(n(e,r.sibling),(r=o(r,i,s)).return=e,e=r):(n(e,r),(r=Yr(i,e.mode,s)).return=e,e=r),u(e);if(jo(i))return m(e,r,i,s);if(at(i))return v(e,r,i,s);if(l&&Co(e,i),void 0===i&&!c)switch(e.tag){case 2:case 3:case 0:a("152",(s=e.type).displayName||s.name||"Component")}return n(e,r)}}var Io=Mo(!0),Ao=Mo(!1),Do=null,No=null,Lo=!1;function Uo(e,t){var n=new Lr(7,null,null,0);n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Fo(e,t){switch(e.tag){case 7:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 8:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Bo(e){if(Lo){var t=No;if(t){var n=t;if(!Fo(e,t)){if(!(t=vr(n))||!Fo(e,t))return e.effectTag|=2,Lo=!1,void(Do=e);Uo(Do,n)}Do=e,No=yr(t)}else e.effectTag|=2,Lo=!1,Do=e}}function Wo(e){for(e=e.return;null!==e&&7!==e.tag&&5!==e.tag;)e=e.return;Do=e}function Yo(e){if(e!==Do)return!1;if(!Lo)return Wo(e),Lo=!0,!1;var t=e.type;if(7!==e.tag||"head"!==t&&"body"!==t&&!mr(t,e.memoizedProps))for(t=No;t;)Uo(e,t),t=vr(t);return Wo(e),No=Do?vr(e.stateNode):null,!0}function $o(){No=Do=null,Lo=!1}var qo=ze.ReactCurrentOwner;function Ho(e,t,n,r){t.child=null===e?Ao(t,null,n,r):Io(t,e.child,n,r)}function zo(e,t,n,r,o){n=n.render;var i=t.ref;return Or.current||t.memoizedProps!==r||i!==(null!==e?e.ref:null)?(Ho(e,t,n=n(r,i),o),t.memoizedProps=r,t.child):Zo(e,t,o)}function Go(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function Vo(e,t,n,r,o){var i=kr(n)?Sr:Er.current;return i=Tr(t,i),fo(t),n=n(r,i),t.effectTag|=1,Ho(e,t,n,o),t.memoizedProps=r,t.child}function Xo(e,t,n,r,o){if(kr(n)){var i=!0;Mr(t)}else i=!1;if(fo(t),null===e)if(null===t.stateNode){var a=kr(n)?Sr:Er.current,u=n.contextTypes,s=null!==u&&void 0!==u,c=new n(r,u=s?Tr(t,a):xr);t.memoizedState=null!==c.state&&void 0!==c.state?c.state:null,c.updater=So,t.stateNode=c,c._reactInternalFiber=t,s&&((s=t.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,s.__reactInternalMemoizedMaskedChildContext=u),Ro(t,n,r,o),r=!0}else{a=t.stateNode,u=t.memoizedProps,a.props=u;var l=a.context;s=Tr(t,s=kr(n)?Sr:Er.current);var f=n.getDerivedStateFromProps;(c="function"==typeof f||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(u!==r||l!==s)&&ko(t,a,r,s),zr=!1;var d=t.memoizedState;l=a.state=d;var p=t.updateQueue;null!==p&&(to(t,p,r,a,o),l=t.memoizedState),u!==r||d!==l||Or.current||zr?("function"==typeof f&&(Oo(t,n,f,r),l=t.memoizedState),(u=zr||To(t,n,u,r,d,l,s))?(c||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.effectTag|=4)):("function"==typeof a.componentDidMount&&(t.effectTag|=4),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=s,r=u):("function"==typeof a.componentDidMount&&(t.effectTag|=4),r=!1)}else a=t.stateNode,u=t.memoizedProps,a.props=u,l=a.context,s=Tr(t,s=kr(n)?Sr:Er.current),(c="function"==typeof(f=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(u!==r||l!==s)&&ko(t,a,r,s),zr=!1,l=t.memoizedState,d=a.state=l,null!==(p=t.updateQueue)&&(to(t,p,r,a,o),d=t.memoizedState),u!==r||l!==d||Or.current||zr?("function"==typeof f&&(Oo(t,n,f,r),d=t.memoizedState),(f=zr||To(t,n,u,r,l,d,s))?(c||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,d,s),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,d,s)),"function"==typeof a.componentDidUpdate&&(t.effectTag|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof a.componentDidUpdate||u===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||u===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),t.memoizedProps=r,t.memoizedState=d),a.props=r,a.state=d,a.context=s,r=f):("function"!=typeof a.componentDidUpdate||u===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||u===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),r=!1);return Ko(e,t,n,r,i,o)}function Ko(e,t,n,r,o,i){Go(e,t);var a=0!=(64&t.effectTag);if(!r&&!a)return o&&Ir(t,n,!1),Zo(e,t,i);r=t.stateNode,qo.current=t;var u=a?null:r.render();return t.effectTag|=1,null!==e&&a&&(Ho(e,t,null,i),t.child=null),Ho(e,t,u,i),t.memoizedState=r.state,t.memoizedProps=r.props,o&&Ir(t,n,!0),t.child}function Qo(e){var t=e.stateNode;t.pendingContext?Pr(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Pr(0,t.context,!1),_o(e,t.containerInfo)}function Jo(e,t){if(e&&e.defaultProps)for(var n in t=o({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}function Zo(e,t,n){null!==e&&(t.firstContextDependency=e.firstContextDependency);var r=t.childExpirationTime;if(0===r||r>n)return null;if(null!==e&&t.child!==e.child&&a("153"),null!==t.child){for(n=Fr(e=t.child,e.pendingProps,e.expirationTime),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Fr(e,e.pendingProps,e.expirationTime)).return=t;n.sibling=null}return t.child}function ei(e,t,n){var r=t.expirationTime;if(!Or.current&&(0===r||r>n)){switch(t.tag){case 5:Qo(t),$o();break;case 7:wo(t);break;case 2:kr(t.type)&&Mr(t);break;case 3:kr(t.type._reactResult)&&Mr(t);break;case 6:_o(t,t.stateNode.containerInfo);break;case 12:co(t,t.memoizedProps.value)}return Zo(e,t,n)}switch(t.expirationTime=0,t.tag){case 4:return function(e,t,n,r){null!==e&&a("155");var o=t.pendingProps;if("object"==typeof n&&null!==n&&"function"==typeof n.then){var i=n=function(e){switch(e._reactStatus){case 1:return e._reactResult;case 2:throw e._reactResult;case 0:throw e;default:throw e._reactStatus=0,e.then(function(t){if(0===e._reactStatus){if(e._reactStatus=1,"object"==typeof t&&null!==t){var n=t.default;t=void 0!==n&&null!==n?n:t}e._reactResult=t}},function(t){0===e._reactStatus&&(e._reactStatus=2,e._reactResult=t)}),e}}(n);i="function"==typeof i?Ur(i)?3:1:void 0!==i&&null!==i&&i.$$typeof?14:4,i=t.tag=i;var u=Jo(n,o);switch(i){case 1:return Vo(e,t,n,u,r);case 3:return Xo(e,t,n,u,r);case 14:return zo(e,t,n,u,r);default:a("283",n)}}if(i=Tr(t,Er.current),fo(t),i=n(o,i),t.effectTag|=1,"object"==typeof i&&null!==i&&"function"==typeof i.render&&void 0===i.$$typeof){t.tag=2,kr(n)?(u=!0,Mr(t)):u=!1,t.memoizedState=null!==i.state&&void 0!==i.state?i.state:null;var s=n.getDerivedStateFromProps;return"function"==typeof s&&Oo(t,n,s,o),i.updater=So,t.stateNode=i,i._reactInternalFiber=t,Ro(t,n,o,r),Ko(e,t,n,!0,u,r)}return t.tag=0,Ho(e,t,i,r),t.memoizedProps=o,t.child}(e,t,t.type,n);case 0:return Vo(e,t,t.type,t.pendingProps,n);case 1:var o=t.type._reactResult;return e=Vo(e,t,o,Jo(o,r=t.pendingProps),n),t.memoizedProps=r,e;case 2:return Xo(e,t,t.type,t.pendingProps,n);case 3:return e=Xo(e,t,o=t.type._reactResult,Jo(o,r=t.pendingProps),n),t.memoizedProps=r,e;case 5:return Qo(t),null===(r=t.updateQueue)&&a("282"),o=null!==(o=t.memoizedState)?o.element:null,to(t,r,t.pendingProps,null,n),(r=t.memoizedState.element)===o?($o(),t=Zo(e,t,n)):(o=t.stateNode,(o=(null===e||null===e.child)&&o.hydrate)&&(No=yr(t.stateNode.containerInfo),Do=t,o=Lo=!0),o?(t.effectTag|=2,t.child=Ao(t,null,r,n)):(Ho(e,t,r,n),$o()),t=t.child),t;case 7:wo(t),null===e&&Bo(t),r=t.type,o=t.pendingProps;var i=null!==e?e.memoizedProps:null,u=o.children;return mr(r,o)?u=null:null!==i&&mr(r,i)&&(t.effectTag|=16),Go(e,t),1073741823!==n&&1&t.mode&&o.hidden?(t.expirationTime=1073741823,t.memoizedProps=o,t=null):(Ho(e,t,u,n),t.memoizedProps=o,t=t.child),t;case 8:return null===e&&Bo(t),t.memoizedProps=t.pendingProps,null;case 16:return null;case 6:return _o(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Io(t,null,r,n):Ho(e,t,r,n),t.memoizedProps=r,t.child;case 13:return zo(e,t,t.type,t.pendingProps,n);case 14:return e=zo(e,t,o=t.type._reactResult,Jo(o,r=t.pendingProps),n),t.memoizedProps=r,e;case 9:return Ho(e,t,r=t.pendingProps,n),t.memoizedProps=r,t.child;case 10:return Ho(e,t,r=t.pendingProps.children,n),t.memoizedProps=r,t.child;case 15:return Ho(e,t,(r=t.pendingProps).children,n),t.memoizedProps=r,t.child;case 12:e:{if(r=t.type._context,o=t.pendingProps,u=t.memoizedProps,i=o.value,t.memoizedProps=o,co(t,i),null!==u){var s=u.value;if(0===(i=s===i&&(0!==s||1/s==1/i)||s!=s&&i!=i?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,i):1073741823))){if(u.children===o.children&&!Or.current){t=Zo(e,t,n);break e}}else for(null!==(u=t.child)&&(u.return=t);null!==u;){if(null!==(s=u.firstContextDependency))do{if(s.context===r&&0!=(s.observedBits&i)){if(2===u.tag||3===u.tag){var c=Xr(n);c.tag=2,Qr(u,c)}(0===u.expirationTime||u.expirationTime>n)&&(u.expirationTime=n),null!==(c=u.alternate)&&(0===c.expirationTime||c.expirationTime>n)&&(c.expirationTime=n);for(var l=u.return;null!==l;){if(c=l.alternate,0===l.childExpirationTime||l.childExpirationTime>n)l.childExpirationTime=n,null!==c&&(0===c.childExpirationTime||c.childExpirationTime>n)&&(c.childExpirationTime=n);else{if(null===c||!(0===c.childExpirationTime||c.childExpirationTime>n))break;c.childExpirationTime=n}l=l.return}}c=u.child,s=s.next}while(null!==s);else c=12===u.tag&&u.type===t.type?null:u.child;if(null!==c)c.return=u;else for(c=u;null!==c;){if(c===t){c=null;break}if(null!==(u=c.sibling)){u.return=c.return,c=u;break}c=c.return}u=c}}Ho(e,t,o.children,n),t=t.child}return t;case 11:return i=t.type,o=(r=t.pendingProps).children,fo(t),o=o(i=po(i,r.unstable_observedBits)),t.effectTag|=1,Ho(e,t,o,n),t.memoizedProps=r,t.child;default:a("156")}}function ti(e){e.effectTag|=4}var ni=void 0,ri=void 0,oi=void 0;function ii(e,t){var n=t.source,r=t.stack;null===r&&null!==n&&(r=st(n)),null!==n&&ut(n.type),t=t.value,null!==e&&2===e.tag&&ut(e.type);try{console.error(t)}catch(e){setTimeout(function(){throw e})}}function ai(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(t){Ci(e,t)}else t.current=null}function ui(e){switch("function"==typeof Dr&&Dr(e),e.tag){case 2:case 3:ai(e);var t=e.stateNode;if("function"==typeof t.componentWillUnmount)try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(t){Ci(e,t)}break;case 7:ai(e);break;case 6:li(e)}}function si(e){return 7===e.tag||5===e.tag||6===e.tag}function ci(e){e:{for(var t=e.return;null!==t;){if(si(t)){var n=t;break e}t=t.return}a("160"),n=void 0}var r=t=void 0;switch(n.tag){case 7:t=n.stateNode,r=!1;break;case 5:case 6:t=n.stateNode.containerInfo,r=!0;break;default:a("161")}16&n.effectTag&&(rr(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||si(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;7!==n.tag&&8!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||6===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}for(var o=e;;){if(7===o.tag||8===o.tag)if(n)if(r){var i=t,u=o.stateNode,s=n;8===i.nodeType?i.parentNode.insertBefore(u,s):i.insertBefore(u,s)}else t.insertBefore(o.stateNode,n);else r?(i=t,u=o.stateNode,8===i.nodeType?(s=i.parentNode).insertBefore(u,i):(s=i).appendChild(u),null===s.onclick&&(s.onclick=fr)):t.appendChild(o.stateNode);else if(6!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===e)break;for(;null===o.sibling;){if(null===o.return||o.return===e)return;o=o.return}o.sibling.return=o.return,o=o.sibling}}function li(e){for(var t=e,n=!1,r=void 0,o=void 0;;){if(!n){n=t.return;e:for(;;){switch(null===n&&a("160"),n.tag){case 7:r=n.stateNode,o=!1;break e;case 5:case 6:r=n.stateNode.containerInfo,o=!0;break e}n=n.return}n=!0}if(7===t.tag||8===t.tag){e:for(var i=t,u=i;;)if(ui(u),null!==u.child&&6!==u.tag)u.child.return=u,u=u.child;else{if(u===i)break;for(;null===u.sibling;){if(null===u.return||u.return===i)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}o?(i=r,u=t.stateNode,8===i.nodeType?i.parentNode.removeChild(u):i.removeChild(u)):r.removeChild(t.stateNode)}else if(6===t.tag?(r=t.stateNode.containerInfo,o=!0):ui(t),null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return;6===(t=t.return).tag&&(n=!1)}t.sibling.return=t.return,t=t.sibling}}function fi(e,t){switch(t.tag){case 2:case 3:break;case 7:var n=t.stateNode;if(null!=n){var r=t.memoizedProps,o=null!==e?e.memoizedProps:r;e=t.type;var i=t.updateQueue;if(t.updateQueue=null,null!==i){for(n[N]=r,"input"===e&&"radio"===r.type&&null!=r.name&&wt(n,r),cr(e,o),t=cr(e,r),o=0;o<i.length;o+=2){var u=i[o],s=i[o+1];"style"===u?ar(n,s):"dangerouslySetInnerHTML"===u?nr(n,s):"children"===u?rr(n,s):yt(n,u,s,t)}switch(e){case"input":xt(n,r);break;case"textarea":Kn(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(i=r.value)?Gn(n,!!r.multiple,i,!1):e!==!!r.multiple&&(null!=r.defaultValue?Gn(n,!!r.multiple,r.defaultValue,!0):Gn(n,!!r.multiple,r.multiple?[]:"",!1))}}}break;case 8:null===t.stateNode&&a("162"),t.stateNode.nodeValue=t.memoizedProps;break;case 5:case 15:case 16:break;default:a("163")}}function di(e,t,n){(n=Xr(n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){pa(r),ii(e,t)},n}function pi(e,t,n){(n=Xr(n)).tag=3;var r=e.stateNode;return null!==r&&"function"==typeof r.componentDidCatch&&(n.callback=function(){null===Ti?Ti=new Set([this]):Ti.add(this);var n=t.value,r=t.stack;ii(e,t),this.componentDidCatch(n,{componentStack:null!==r?r:""})}),n}function hi(e){switch(e.tag){case 2:kr(e.type)&&Rr();var t=e.effectTag;return 1024&t?(e.effectTag=-1025&t|64,e):null;case 3:return kr(e.type._reactResult)&&Rr(),1024&(t=e.effectTag)?(e.effectTag=-1025&t|64,e):null;case 5:return bo(),jr(),0!=(64&(t=e.effectTag))&&a("285"),e.effectTag=-1025&t|64,e;case 7:return xo(e),null;case 16:return 1024&(t=e.effectTag)?(e.effectTag=-1025&t|64,e):null;case 6:return bo(),null;case 12:return lo(e),null;default:return null}}ni=function(){},ri=function(e,t,n,r,i){var a=e.memoizedProps;if(a!==r){var u=t.stateNode;switch(go(mo.current),e=null,n){case"input":a=_t(u,a),r=_t(u,r),e=[];break;case"option":a=zn(u,a),r=zn(u,r),e=[];break;case"select":a=o({},a,{value:void 0}),r=o({},r,{value:void 0}),e=[];break;case"textarea":a=Vn(u,a),r=Vn(u,r),e=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(u.onclick=fr)}sr(n,r),u=n=void 0;var s=null;for(n in a)if(!r.hasOwnProperty(n)&&a.hasOwnProperty(n)&&null!=a[n])if("style"===n){var c=a[n];for(u in c)c.hasOwnProperty(u)&&(s||(s={}),s[u]="")}else"dangerouslySetInnerHTML"!==n&&"children"!==n&&"suppressContentEditableWarning"!==n&&"suppressHydrationWarning"!==n&&"autoFocus"!==n&&(_.hasOwnProperty(n)?e||(e=[]):(e=e||[]).push(n,null));for(n in r){var l=r[n];if(c=null!=a?a[n]:void 0,r.hasOwnProperty(n)&&l!==c&&(null!=l||null!=c))if("style"===n)if(c){for(u in c)!c.hasOwnProperty(u)||l&&l.hasOwnProperty(u)||(s||(s={}),s[u]="");for(u in l)l.hasOwnProperty(u)&&c[u]!==l[u]&&(s||(s={}),s[u]=l[u])}else s||(e||(e=[]),e.push(n,s)),s=l;else"dangerouslySetInnerHTML"===n?(l=l?l.__html:void 0,c=c?c.__html:void 0,null!=l&&c!==l&&(e=e||[]).push(n,""+l)):"children"===n?c===l||"string"!=typeof l&&"number"!=typeof l||(e=e||[]).push(n,""+l):"suppressContentEditableWarning"!==n&&"suppressHydrationWarning"!==n&&(_.hasOwnProperty(n)?(null!=l&&lr(i,n),e||c===l||(e=[])):(e=e||[]).push(n,l))}s&&(e=e||[]).push("style",s),i=e,(t.updateQueue=i)&&ti(t)}},oi=function(e,t,n,r){n!==r&&ti(t)};var mi={readContext:po},vi=ze.ReactCurrentOwner,yi=0,gi=0,_i=!1,bi=null,wi=null,xi=0,Ei=!1,Oi=null,Si=!1,Ti=null;function ki(){if(null!==bi)for(var e=bi.return;null!==e;){var t=e;switch(t.tag){case 2:var n=t.type.childContextTypes;null!==n&&void 0!==n&&Rr();break;case 3:null!==(n=t.type._reactResult.childContextTypes)&&void 0!==n&&Rr();break;case 5:bo(),jr();break;case 7:xo(t);break;case 6:bo();break;case 12:lo(t)}e=e.return}wi=null,xi=0,Ei=!1,bi=null}function Ri(e){for(;;){var t=e.alternate,n=e.return,r=e.sibling;if(0==(512&e.effectTag)){var i=t,u=(t=e).pendingProps;switch(t.tag){case 0:case 1:break;case 2:kr(t.type)&&Rr();break;case 3:kr(t.type._reactResult)&&Rr();break;case 5:bo(),jr(),(u=t.stateNode).pendingContext&&(u.context=u.pendingContext,u.pendingContext=null),null!==i&&null!==i.child||(Yo(t),t.effectTag&=-3),ni(t);break;case 7:xo(t);var s=go(yo.current),c=t.type;if(null!==i&&null!=t.stateNode)ri(i,t,c,u,s),i.ref!==t.ref&&(t.effectTag|=128);else if(u){var l=go(mo.current);if(Yo(t)){i=(u=t).stateNode;var f=u.type,d=u.memoizedProps,p=s;switch(i[D]=u,i[N]=d,c=void 0,s=f){case"iframe":case"object":Sn("load",i);break;case"video":case"audio":for(f=0;f<re.length;f++)Sn(re[f],i);break;case"source":Sn("error",i);break;case"img":case"image":case"link":Sn("error",i),Sn("load",i);break;case"form":Sn("reset",i),Sn("submit",i);break;case"details":Sn("toggle",i);break;case"input":bt(i,d),Sn("invalid",i),lr(p,"onChange");break;case"select":i._wrapperState={wasMultiple:!!d.multiple},Sn("invalid",i),lr(p,"onChange");break;case"textarea":Xn(i,d),Sn("invalid",i),lr(p,"onChange")}for(c in sr(s,d),f=null,d)d.hasOwnProperty(c)&&(l=d[c],"children"===c?"string"==typeof l?i.textContent!==l&&(f=["children",l]):"number"==typeof l&&i.textContent!==""+l&&(f=["children",""+l]):_.hasOwnProperty(c)&&null!=l&&lr(p,c));switch(s){case"input":qe(i),Et(i,d,!0);break;case"textarea":qe(i),Qn(i);break;case"select":case"option":break;default:"function"==typeof d.onClick&&(i.onclick=fr)}c=f,u.updateQueue=c,(u=null!==c)&&ti(t)}else{d=t,i=c,p=u,f=9===s.nodeType?s:s.ownerDocument,l===Jn.html&&(l=Zn(i)),l===Jn.html?"script"===i?((i=f.createElement("div")).innerHTML="<script><\/script>",f=i.removeChild(i.firstChild)):"string"==typeof p.is?f=f.createElement(i,{is:p.is}):(f=f.createElement(i),"select"===i&&p.multiple&&(f.multiple=!0)):f=f.createElementNS(l,i),(i=f)[D]=d,i[N]=u;e:for(d=i,p=t,f=p.child;null!==f;){if(7===f.tag||8===f.tag)d.appendChild(f.stateNode);else if(6!==f.tag&&null!==f.child){f.child.return=f,f=f.child;continue}if(f===p)break;for(;null===f.sibling;){if(null===f.return||f.return===p)break e;f=f.return}f.sibling.return=f.return,f=f.sibling}p=i;var h=s,m=cr(f=c,d=u);switch(f){case"iframe":case"object":Sn("load",p),s=d;break;case"video":case"audio":for(s=0;s<re.length;s++)Sn(re[s],p);s=d;break;case"source":Sn("error",p),s=d;break;case"img":case"image":case"link":Sn("error",p),Sn("load",p),s=d;break;case"form":Sn("reset",p),Sn("submit",p),s=d;break;case"details":Sn("toggle",p),s=d;break;case"input":bt(p,d),s=_t(p,d),Sn("invalid",p),lr(h,"onChange");break;case"option":s=zn(p,d);break;case"select":p._wrapperState={wasMultiple:!!d.multiple},s=o({},d,{value:void 0}),Sn("invalid",p),lr(h,"onChange");break;case"textarea":Xn(p,d),s=Vn(p,d),Sn("invalid",p),lr(h,"onChange");break;default:s=d}sr(f,s),l=void 0;var v=f,y=p,g=s;for(l in g)if(g.hasOwnProperty(l)){var b=g[l];"style"===l?ar(y,b):"dangerouslySetInnerHTML"===l?null!=(b=b?b.__html:void 0)&&nr(y,b):"children"===l?"string"==typeof b?("textarea"!==v||""!==b)&&rr(y,b):"number"==typeof b&&rr(y,""+b):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(_.hasOwnProperty(l)?null!=b&&lr(h,l):null!=b&&yt(y,l,b,m))}switch(f){case"input":qe(p),Et(p,d,!1);break;case"textarea":qe(p),Qn(p);break;case"option":null!=d.value&&p.setAttribute("value",""+gt(d.value));break;case"select":(s=p).multiple=!!d.multiple,null!=(p=d.value)?Gn(s,!!d.multiple,p,!1):null!=d.defaultValue&&Gn(s,!!d.multiple,d.defaultValue,!0);break;default:"function"==typeof s.onClick&&(p.onclick=fr)}(u=hr(c,u))&&ti(t),t.stateNode=i}null!==t.ref&&(t.effectTag|=128)}else null===t.stateNode&&a("166");break;case 8:i&&null!=t.stateNode?oi(i,t,i.memoizedProps,u):("string"!=typeof u&&(null===t.stateNode&&a("166")),i=go(yo.current),go(mo.current),Yo(t)?(c=(u=t).stateNode,i=u.memoizedProps,c[D]=u,(u=c.nodeValue!==i)&&ti(t)):(c=t,(u=(9===i.nodeType?i:i.ownerDocument).createTextNode(u))[D]=c,t.stateNode=u));break;case 13:case 14:case 16:case 9:case 10:case 15:break;case 6:bo(),ni(t);break;case 12:lo(t);break;case 11:break;case 4:a("167");default:a("156")}if(t=bi=null,u=e,1073741823===xi||1073741823!==u.childExpirationTime){for(c=0,i=u.child;null!==i;)s=i.expirationTime,d=i.childExpirationTime,(0===c||0!==s&&s<c)&&(c=s),(0===c||0!==d&&d<c)&&(c=d),i=i.sibling;u.childExpirationTime=c}if(null!==t)return t;null!==n&&0==(512&n.effectTag)&&(null===n.firstEffect&&(n.firstEffect=e.firstEffect),null!==e.lastEffect&&(null!==n.lastEffect&&(n.lastEffect.nextEffect=e.firstEffect),n.lastEffect=e.lastEffect),1<e.effectTag&&(null!==n.lastEffect?n.lastEffect.nextEffect=e:n.firstEffect=e,n.lastEffect=e))}else{if(null!==(e=hi(e)))return e.effectTag&=511,e;null!==n&&(n.firstEffect=n.lastEffect=null,n.effectTag|=512)}if(null!==r)return r;if(null===n)break;e=n}return null}function ji(e){var t=ei(e.alternate,e,xi);return null===t&&(t=Ri(e)),vi.current=null,t}function Pi(e,t,n){_i&&a("243"),_i=!0,vi.currentDispatcher=mi;var r=e.nextExpirationTimeToWorkOn;r===xi&&e===wi&&null!==bi||(ki(),xi=r,bi=Fr((wi=e).current,null,xi),e.pendingCommitExpirationTime=0);for(var o=!1;;){try{if(t)for(;null!==bi&&!da();)bi=ji(bi);else for(;null!==bi;)bi=ji(bi)}catch(e){if(null===bi)o=!0,pa(e);else{null===bi&&a("271");var i=bi,u=i.return;if(null!==u){e:{var s=u,c=i,l=e;u=xi,c.effectTag|=512,c.firstEffect=c.lastEffect=null,Ei=!0,l=oo(l,c);do{switch(s.tag){case 5:s.effectTag|=1024,s.expirationTime=u,Jr(s,u=di(s,l,u));break e;case 2:case 3:c=l;var f=s.stateNode;if(0==(64&s.effectTag)&&null!==f&&"function"==typeof f.componentDidCatch&&(null===Ti||!Ti.has(f))){s.effectTag|=1024,s.expirationTime=u,Jr(s,u=pi(s,c,u));break e}}s=s.return}while(null!==s)}bi=Ri(i);continue}o=!0,pa(e)}}break}if(_i=!1,so=uo=ao=vi.currentDispatcher=null,o)wi=null,e.finishedWork=null;else if(null!==bi)e.finishedWork=null;else{if(null===(t=e.current.alternate)&&a("281"),wi=null,Ei){if(o=e.latestPendingTime,i=e.latestSuspendedTime,u=e.latestPingedTime,0!==o&&o>r||0!==i&&i>r||0!==u&&u>r)return e.didError=!1,0!==(n=e.latestPingedTime)&&n<=r&&(e.latestPingedTime=0),n=e.earliestPendingTime,t=e.latestPendingTime,n===r?e.earliestPendingTime=t===r?e.latestPendingTime=0:t:t===r&&(e.latestPendingTime=n),n=e.earliestSuspendedTime,t=e.latestSuspendedTime,0===n?e.earliestSuspendedTime=e.latestSuspendedTime=r:n>r?e.earliestSuspendedTime=r:t<r&&(e.latestSuspendedTime=r),Hr(r,e),void(e.expirationTime=e.expirationTime);if(!e.didError&&!n)return e.didError=!0,e.nextExpirationTimeToWorkOn=r,r=e.expirationTime=1,void(e.expirationTime=r)}e.pendingCommitExpirationTime=r,e.finishedWork=t}}function Ci(e,t){var n;e:{for(_i&&!Si&&a("263"),n=e.return;null!==n;){switch(n.tag){case 2:case 3:var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromCatch||"function"==typeof r.componentDidCatch&&(null===Ti||!Ti.has(r))){Qr(n,e=pi(n,e=oo(t,e),1)),Ii(n,1),n=void 0;break e}break;case 5:Qr(n,e=di(n,e=oo(t,e),1)),Ii(n,1),n=void 0;break e}n=n.return}5===e.tag&&(Qr(e,n=di(e,n=oo(t,e),1)),Ii(e,1)),n=void 0}return n}function Mi(e,t){return 0!==gi?e=gi:_i?e=Si?1:xi:1&t.mode?(e=Xi?2+10*(1+((e-2+15)/10|0)):2+25*(1+((e-2+500)/25|0)),null!==wi&&e===xi&&(e+=1)):e=1,Xi&&(0===Yi||e>Yi)&&(Yi=e),e}function Ii(e,t){e:{(0===e.expirationTime||e.expirationTime>t)&&(e.expirationTime=t);var n=e.alternate;null!==n&&(0===n.expirationTime||n.expirationTime>t)&&(n.expirationTime=t);var r=e.return;if(null===r&&5===e.tag)e=e.stateNode;else{for(;null!==r;){if(n=r.alternate,(0===r.childExpirationTime||r.childExpirationTime>t)&&(r.childExpirationTime=t),null!==n&&(0===n.childExpirationTime||n.childExpirationTime>t)&&(n.childExpirationTime=t),null===r.return&&5===r.tag){e=r.stateNode;break e}r=r.return}e=null}}null!==e&&(!_i&&0!==xi&&t<xi&&ki(),qr(e,t),_i&&!Si&&wi===e||(t=e,e=e.expirationTime,null===t.nextScheduledRoot?(t.expirationTime=e,null===Ni?(Di=Ni=t,t.nextScheduledRoot=t):(Ni=Ni.nextScheduledRoot=t).nextScheduledRoot=Di):(0===(n=t.expirationTime)||e<n)&&(t.expirationTime=e),Fi||(Gi?Vi&&(Bi=t,Wi=1,la(t,1,!0)):1===e?ca(1,null):ia(t,e))),ta>ea&&(ta=0,a("185")))}function Ai(e,t,n,r,o){var i=gi;gi=1;try{return e(t,n,r,o)}finally{gi=i}}var Di=null,Ni=null,Li=0,Ui=void 0,Fi=!1,Bi=null,Wi=0,Yi=0,$i=!1,qi=!1,Hi=null,zi=null,Gi=!1,Vi=!1,Xi=!1,Ki=null,Qi=i.unstable_now(),Ji=2+(Qi/10|0),Zi=Ji,ea=50,ta=0,na=null,ra=1;function oa(){Ji=2+((i.unstable_now()-Qi)/10|0)}function ia(e,t){if(0!==Li){if(t>Li)return;null!==Ui&&i.unstable_cancelScheduledWork(Ui)}Li=t,e=i.unstable_now()-Qi,Ui=i.unstable_scheduleWork(sa,{timeout:10*(t-2)-e})}function aa(){return Fi?Zi:(ua(),0!==Wi&&1073741823!==Wi||(oa(),Zi=Ji),Zi)}function ua(){var e=0,t=null;if(null!==Ni)for(var n=Ni,r=Di;null!==r;){var o=r.expirationTime;if(0===o){if((null===n||null===Ni)&&a("244"),r===r.nextScheduledRoot){Di=Ni=r.nextScheduledRoot=null;break}if(r===Di)Di=o=r.nextScheduledRoot,Ni.nextScheduledRoot=o,r.nextScheduledRoot=null;else{if(r===Ni){(Ni=n).nextScheduledRoot=Di,r.nextScheduledRoot=null;break}n.nextScheduledRoot=r.nextScheduledRoot,r.nextScheduledRoot=null}r=n.nextScheduledRoot}else{if((0===e||o<e)&&(e=o,t=r),r===Ni)break;if(1===e)break;n=r,r=r.nextScheduledRoot}}Bi=t,Wi=e}function sa(e){if(e.didTimeout&&null!==Di){oa();var t=Di;do{var n=t.expirationTime;0!==n&&Ji>=n&&(t.nextExpirationTimeToWorkOn=Ji),t=t.nextScheduledRoot}while(t!==Di)}ca(0,e)}function ca(e,t){if(zi=t,ua(),null!==zi)for(oa(),Zi=Ji;null!==Bi&&0!==Wi&&(0===e||e>=Wi)&&(!$i||Ji>=Wi);)la(Bi,Wi,Ji>=Wi),ua(),oa(),Zi=Ji;else for(;null!==Bi&&0!==Wi&&(0===e||e>=Wi);)la(Bi,Wi,!0),ua();if(null!==zi&&(Li=0,Ui=null),0!==Wi&&ia(Bi,Wi),zi=null,$i=!1,ta=0,na=null,null!==Ki)for(e=Ki,Ki=null,t=0;t<e.length;t++){var n=e[t];try{n._onComplete()}catch(e){qi||(qi=!0,Hi=e)}}if(qi)throw e=Hi,Hi=null,qi=!1,e}function la(e,t,n){if(Fi&&a("245"),Fi=!0,null===zi||n){var r=e.finishedWork;null!==r?fa(e,r,t):(e.finishedWork=null,Pi(e,!1,n),null!==(r=e.finishedWork)&&fa(e,r,t))}else null!==(r=e.finishedWork)?fa(e,r,t):(e.finishedWork=null,Pi(e,!0,n),null!==(r=e.finishedWork)&&(da()?e.finishedWork=r:fa(e,r,t)));Fi=!1}function fa(e,t,n){var r=e.firstBatch;if(null!==r&&r._expirationTime<=n&&(null===Ki?Ki=[r]:Ki.push(r),r._defer))return e.finishedWork=t,void(e.expirationTime=0);e.finishedWork=null,e===na?ta++:(na=e,ta=0),Si=_i=!0,e.current===t&&a("177"),0===(n=e.pendingCommitExpirationTime)&&a("261"),e.pendingCommitExpirationTime=0,r=t.expirationTime;var o=t.childExpirationTime;if(r=0===r||0!==o&&o<r?o:r,e.didError=!1,0===r?(e.earliestPendingTime=0,e.latestPendingTime=0,e.earliestSuspendedTime=0,e.latestSuspendedTime=0,e.latestPingedTime=0):(0!==(o=e.latestPendingTime)&&(o<r?e.earliestPendingTime=e.latestPendingTime=0:e.earliestPendingTime<r&&(e.earliestPendingTime=e.latestPendingTime)),0===(o=e.earliestSuspendedTime)?qr(e,r):r>e.latestSuspendedTime?(e.earliestSuspendedTime=0,e.latestSuspendedTime=0,e.latestPingedTime=0,qr(e,r)):r<o&&qr(e,r)),Hr(0,e),vi.current=null,1<t.effectTag?null!==t.lastEffect?(t.lastEffect.nextEffect=t,r=t.firstEffect):r=t:r=t.firstEffect,dr=On,Ln(o=Nn())){if("selectionStart"in o)var i={start:o.selectionStart,end:o.selectionEnd};else e:{var u=(i=(i=o.ownerDocument)&&i.defaultView||window).getSelection&&i.getSelection();if(u&&0!==u.rangeCount){i=u.anchorNode;var s=u.anchorOffset,c=u.focusNode;u=u.focusOffset;try{i.nodeType,c.nodeType}catch(e){i=null;break e}var l=0,f=-1,d=-1,p=0,h=0,m=o,v=null;t:for(;;){for(var y;m!==i||0!==s&&3!==m.nodeType||(f=l+s),m!==c||0!==u&&3!==m.nodeType||(d=l+u),3===m.nodeType&&(l+=m.nodeValue.length),null!==(y=m.firstChild);)v=m,m=y;for(;;){if(m===o)break t;if(v===i&&++p===s&&(f=l),v===c&&++h===u&&(d=l),null!==(y=m.nextSibling))break;v=(m=v).parentNode}m=y}i=-1===f||-1===d?null:{start:f,end:d}}else i=null}i=i||{start:0,end:0}}else i=null;for(pr={focusedElem:o,selectionRange:i},On=!1,Oi=r;null!==Oi;){o=!1,i=void 0;try{for(;null!==Oi;){if(256&Oi.effectTag){var g=Oi.alternate;e:switch(s=Oi,s.tag){case 2:case 3:if(256&s.effectTag&&null!==g){var _=g.memoizedProps,b=g.memoizedState,w=s.stateNode;w.props=s.memoizedProps,w.state=s.memoizedState;var x=w.getSnapshotBeforeUpdate(_,b);w.__reactInternalSnapshotBeforeUpdate=x}break e;case 5:case 7:case 8:case 6:break e;default:a("163")}}Oi=Oi.nextEffect}}catch(e){o=!0,i=e}o&&(null===Oi&&a("178"),Ci(Oi,i),null!==Oi&&(Oi=Oi.nextEffect))}for(Oi=r;null!==Oi;){g=!1,_=void 0;try{for(;null!==Oi;){var E=Oi.effectTag;if(16&E&&rr(Oi.stateNode,""),128&E){var O=Oi.alternate;if(null!==O){var S=O.ref;null!==S&&("function"==typeof S?S(null):S.current=null)}}switch(14&E){case 2:ci(Oi),Oi.effectTag&=-3;break;case 6:ci(Oi),Oi.effectTag&=-3,fi(Oi.alternate,Oi);break;case 4:fi(Oi.alternate,Oi);break;case 8:li(b=Oi),b.return=null,b.child=null,b.alternate&&(b.alternate.child=null,b.alternate.return=null)}Oi=Oi.nextEffect}}catch(e){g=!0,_=e}g&&(null===Oi&&a("178"),Ci(Oi,_),null!==Oi&&(Oi=Oi.nextEffect))}if(S=pr,O=Nn(),E=S.focusedElem,_=S.selectionRange,O!==E&&E&&E.ownerDocument&&function e(t,n){return!(!t||!n)&&(t===n||(!t||3!==t.nodeType)&&(n&&3===n.nodeType?e(t,n.parentNode):"contains"in t?t.contains(n):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(n))))}(E.ownerDocument.documentElement,E)){null!==_&&Ln(E)&&(O=_.start,void 0===(S=_.end)&&(S=O),"selectionStart"in E?(E.selectionStart=O,E.selectionEnd=Math.min(S,E.value.length)):(O=((g=E.ownerDocument||document)&&g.defaultView||window).getSelection(),b=E.textContent.length,S=Math.min(_.start,b),_=void 0===_.end?S:Math.min(_.end,b),!O.extend&&S>_&&(b=_,_=S,S=b),b=Dn(E,S),w=Dn(E,_),b&&w&&(1!==O.rangeCount||O.anchorNode!==b.node||O.anchorOffset!==b.offset||O.focusNode!==w.node||O.focusOffset!==w.offset)&&((g=g.createRange()).setStart(b.node,b.offset),O.removeAllRanges(),S>_?(O.addRange(g),O.extend(w.node,w.offset)):(g.setEnd(w.node,w.offset),O.addRange(g))))),O=[];for(S=E;S=S.parentNode;)1===S.nodeType&&O.push({element:S,left:S.scrollLeft,top:S.scrollTop});for("function"==typeof E.focus&&E.focus(),E=0;E<O.length;E++)(S=O[E]).element.scrollLeft=S.left,S.element.scrollTop=S.top}for(pr=null,On=!!dr,dr=null,e.current=t,Oi=r;null!==Oi;){r=!1,E=void 0;try{for(O=n;null!==Oi;){var T=Oi.effectTag;if(36&T){var k=Oi.alternate;switch(g=O,(S=Oi).tag){case 2:case 3:var R=S.stateNode;if(4&S.effectTag)if(null===k)R.props=S.memoizedProps,R.state=S.memoizedState,R.componentDidMount();else{var j=k.memoizedProps,P=k.memoizedState;R.props=S.memoizedProps,R.state=S.memoizedState,R.componentDidUpdate(j,P,R.__reactInternalSnapshotBeforeUpdate)}var C=S.updateQueue;null!==C&&(R.props=S.memoizedProps,R.state=S.memoizedState,no(0,C,R));break;case 5:var M=S.updateQueue;if(null!==M){if(_=null,null!==S.child)switch(S.child.tag){case 7:_=S.child.stateNode;break;case 2:case 3:_=S.child.stateNode}no(0,M,_)}break;case 7:var I=S.stateNode;null===k&&4&S.effectTag&&hr(S.type,S.memoizedProps)&&I.focus();break;case 8:case 6:case 15:case 16:break;default:a("163")}}if(128&T){var A=Oi.ref;if(null!==A){var D=Oi.stateNode;switch(Oi.tag){case 7:var N=D;break;default:N=D}"function"==typeof A?A(N):A.current=N}}var L=Oi.nextEffect;Oi.nextEffect=null,Oi=L}}catch(e){r=!0,E=e}r&&(null===Oi&&a("178"),Ci(Oi,E),null!==Oi&&(Oi=Oi.nextEffect))}_i=Si=!1,"function"==typeof Ar&&Ar(t.stateNode),T=t.expirationTime,t=t.childExpirationTime,0===(t=0===T||0!==t&&t<T?t:T)&&(Ti=null),e.expirationTime=t,e.finishedWork=null}function da(){return!!$i||!(null===zi||zi.timeRemaining()>ra)&&($i=!0)}function pa(e){null===Bi&&a("246"),Bi.expirationTime=0,qi||(qi=!0,Hi=e)}function ha(e,t){var n=Gi;Gi=!0;try{return e(t)}finally{(Gi=n)||Fi||ca(1,null)}}function ma(e,t){if(Gi&&!Vi){Vi=!0;try{return e(t)}finally{Vi=!1}}return e(t)}function va(e,t,n){if(Xi)return e(t,n);Gi||Fi||0===Yi||(ca(Yi,null),Yi=0);var r=Xi,o=Gi;Gi=Xi=!0;try{return e(t,n)}finally{Xi=r,(Gi=o)||Fi||ca(1,null)}}function ya(e,t,n,r,o){var i=t.current;return n=function(e){if(!e)return xr;e=e._reactInternalFiber;e:{(2!==tn(e)||2!==e.tag&&3!==e.tag)&&a("170");var t=e;do{switch(t.tag){case 5:t=t.stateNode.context;break e;case 2:if(kr(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}break;case 3:if(kr(t.type._reactResult)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);a("171"),t=void 0}if(2===e.tag){var n=e.type;if(kr(n))return Cr(e,n,t)}else if(3===e.tag&&kr(n=e.type._reactResult))return Cr(e,n,t);return t}(n),null===t.context?t.context=n:t.pendingContext=n,t=o,(o=Xr(r)).payload={element:e},null!==(t=void 0===t?null:t)&&(o.callback=t),Qr(i,o),Ii(i,r),r}function ga(e,t,n,r){var o=t.current;return ya(e,t,n,o=Mi(aa(),o),r)}function _a(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 7:default:return e.child.stateNode}}function ba(e){var t=2+25*(1+((aa()-2+500)/25|0));t<=yi&&(t=yi+1),this._expirationTime=yi=t,this._root=e,this._callbacks=this._next=null,this._hasChildren=this._didComplete=!1,this._children=null,this._defer=!0}function wa(){this._callbacks=null,this._didCommit=!1,this._onCommit=this._onCommit.bind(this)}function xa(e,t,n){e={current:t=new Lr(5,null,null,t?3:0),containerInfo:e,pendingChildren:null,earliestPendingTime:0,latestPendingTime:0,earliestSuspendedTime:0,latestSuspendedTime:0,latestPingedTime:0,didError:!1,pendingCommitExpirationTime:0,finishedWork:null,timeoutHandle:-1,context:null,pendingContext:null,hydrate:n,nextExpirationTimeToWorkOn:0,expirationTime:0,firstBatch:null,nextScheduledRoot:null},this._internalRoot=t.stateNode=e}function Ea(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Oa(e,t,n,r,o){Ea(n)||a("200");var i=n._reactRootContainer;if(i){if("function"==typeof o){var u=o;o=function(){var e=_a(i._internalRoot);u.call(e)}}null!=e?i.legacy_renderSubtreeIntoContainer(e,t,o):i.render(t,o)}else{if(i=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new xa(e,!1,t)}(n,r),"function"==typeof o){var s=o;o=function(){var e=_a(i._internalRoot);s.call(e)}}ma(function(){null!=e?i.legacy_renderSubtreeIntoContainer(e,t,o):i.render(t,o)})}return _a(i._internalRoot)}function Sa(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;return Ea(t)||a("200"),function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:Ke,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Re=function(e,t,n){switch(t){case"input":if(xt(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=B(r);o||a("90"),He(r),xt(r,o)}}}break;case"textarea":Kn(e,n);break;case"select":null!=(t=n.value)&&Gn(e,!!n.multiple,t,!1)}},ba.prototype.render=function(e){this._defer||a("250"),this._hasChildren=!0,this._children=e;var t=this._root._internalRoot,n=this._expirationTime,r=new wa;return ya(e,t,null,n,r._onCommit),r},ba.prototype.then=function(e){if(this._didComplete)e();else{var t=this._callbacks;null===t&&(t=this._callbacks=[]),t.push(e)}},ba.prototype.commit=function(){var e=this._root._internalRoot,t=e.firstBatch;if(this._defer&&null!==t||a("251"),this._hasChildren){var n=this._expirationTime;if(t!==this){this._hasChildren&&(n=this._expirationTime=t._expirationTime,this.render(this._children));for(var r=null,o=t;o!==this;)r=o,o=o._next;null===r&&a("251"),r._next=o._next,this._next=t,e.firstBatch=this}this._defer=!1,t=n,Fi&&a("253"),Bi=e,Wi=t,la(e,t,!0),ca(1,null),t=this._next,this._next=null,null!==(t=e.firstBatch=t)&&t._hasChildren&&t.render(t._children)}else this._next=null,this._defer=!1},ba.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var e=this._callbacks;if(null!==e)for(var t=0;t<e.length;t++)(0,e[t])()}},wa.prototype.then=function(e){if(this._didCommit)e();else{var t=this._callbacks;null===t&&(t=this._callbacks=[]),t.push(e)}},wa.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var e=this._callbacks;if(null!==e)for(var t=0;t<e.length;t++){var n=e[t];"function"!=typeof n&&a("191",n),n()}}},xa.prototype.render=function(e,t){var n=this._internalRoot,r=new wa;return null!==(t=void 0===t?null:t)&&r.then(t),ga(e,n,null,r._onCommit),r},xa.prototype.unmount=function(e){var t=this._internalRoot,n=new wa;return null!==(e=void 0===e?null:e)&&n.then(e),ga(null,t,null,n._onCommit),n},xa.prototype.legacy_renderSubtreeIntoContainer=function(e,t,n){var r=this._internalRoot,o=new wa;return null!==(n=void 0===n?null:n)&&o.then(n),ga(t,r,e,o._onCommit),o},xa.prototype.createBatch=function(){var e=new ba(this),t=e._expirationTime,n=this._internalRoot,r=n.firstBatch;if(null===r)n.firstBatch=e,e._next=null;else{for(n=null;null!==r&&r._expirationTime<=t;)n=r,r=r._next;e._next=r,null!==n&&(n._next=e)}return e},Ae=ha,De=va,Ne=function(){Fi||0===Yi||(ca(Yi,null),Yi=0)};var Ta={createPortal:Sa,findDOMNode:function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;return void 0===t&&("function"==typeof e.render?a("188"):a("268",Object.keys(e))),e=null===(e=rn(t))?null:e.stateNode},hydrate:function(e,t,n){return Oa(null,e,t,!0,n)},render:function(e,t,n){return Oa(null,e,t,!1,n)},unstable_renderSubtreeIntoContainer:function(e,t,n,r){return(null==e||void 0===e._reactInternalFiber)&&a("38"),Oa(e,t,n,!1,r)},unmountComponentAtNode:function(e){return Ea(e)||a("40"),!!e._reactRootContainer&&(ma(function(){Oa(null,null,e,!1,function(){e._reactRootContainer=null})}),!0)},unstable_createPortal:function(){return Sa.apply(void 0,arguments)},unstable_batchedUpdates:ha,unstable_interactiveUpdates:va,flushSync:function(e,t){Fi&&a("187");var n=Gi;Gi=!0;try{return Ai(e,t)}finally{Gi=n,ca(1,null)}},unstable_flushControlled:function(e){var t=Gi;Gi=!0;try{Ai(e)}finally{(Gi=t)||Fi||ca(1,null)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[U,F,B,C.injectEventPluginsByName,g,z,function(e){T(e,H)},Me,Ie,Rn,I]},unstable_createRoot:function(e,t){return Ea(e)||a("278"),new xa(e,!0,null!=t&&!0===t.hydrate)}};!function(e){var t=e.findFiberByHostInstance;(function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);Ar=Nr(function(e){return t.onCommitFiberRoot(n,e)}),Dr=Nr(function(e){return t.onCommitFiberUnmount(n,e)})}catch(e){}})(o({},e,{findHostInstanceByFiber:function(e){return null===(e=rn(e))?null:e.stateNode},findFiberByHostInstance:function(e){return t?t(e):null}}))}({findFiberByHostInstance:L,bundleType:0,version:"16.5.2",rendererPackageName:"react-dom"});var ka={default:Ta},Ra=ka&&Ta||ka;e.exports=Ra.default||Ra},function(e,t,n){"use strict";e.exports=n(217)},function(e,t,n){"use strict";
+/** @license React v16.5.2
+ * schedule.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */Object.defineProperty(t,"__esModule",{value:!0});var r=null,o=!1,i=!1,a="object"==typeof performance&&"function"==typeof performance.now,u={timeRemaining:a?function(){var e=m()-performance.now();return 0<e?e:0}:function(){var e=m()-Date.now();return 0<e?e:0},didTimeout:!1};function s(){if(!o){var e=r.timesOutAt;i?h():i=!0,p(l,e)}}function c(){var e=r,t=r.next;if(r===t)r=null;else{var n=r.previous;r=n.next=t,t.previous=n}e.next=e.previous=null,(e=e.callback)(u)}function l(e){o=!0,u.didTimeout=e;try{if(e)for(;null!==r;){var n=t.unstable_now();if(!(r.timesOutAt<=n))break;do{c()}while(null!==r&&r.timesOutAt<=n)}else if(null!==r)do{c()}while(null!==r&&0<m()-t.unstable_now())}finally{o=!1,null!==r?s():i=!1}}var f,d,p,h,m,v=Date,y="function"==typeof setTimeout?setTimeout:void 0,g="function"==typeof clearTimeout?clearTimeout:void 0,_="function"==typeof requestAnimationFrame?requestAnimationFrame:void 0,b="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0;function w(e){f=_(function(t){g(d),e(t)}),d=y(function(){b(f),e(t.unstable_now())},100)}if(a){var x=performance;t.unstable_now=function(){return x.now()}}else t.unstable_now=function(){return v.now()};if("undefined"==typeof window){var E=-1;p=function(e){E=setTimeout(e,0,!0)},h=function(){clearTimeout(E)},m=function(){return 0}}else if(window._schedMock){var O=window._schedMock;p=O[0],h=O[1],m=O[2]}else{"undefined"!=typeof console&&("function"!=typeof _&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof b&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var S=null,T=!1,k=-1,R=!1,j=!1,P=0,C=33,M=33;m=function(){return P};var I="__reactIdleCallback$"+Math.random().toString(36).slice(2);window.addEventListener("message",function(e){if(e.source===window&&e.data===I){T=!1;var n=t.unstable_now();if(e=!1,0>=P-n){if(!(-1!==k&&k<=n))return void(R||(R=!0,w(A)));e=!0}if(k=-1,n=S,S=null,null!==n){j=!0;try{n(e)}finally{j=!1}}}},!1);var A=function(e){R=!1;var t=e-P+M;t<M&&C<M?(8>t&&(t=8),M=t<C?C:t):C=t,P=e+M,T||(T=!0,window.postMessage(I,"*"))};p=function(e,t){S=e,k=t,j?window.postMessage(I,"*"):R||(R=!0,w(A))},h=function(){S=null,T=!1,k=-1}}t.unstable_scheduleWork=function(e,n){var o=t.unstable_now();if(e={callback:e,timesOutAt:n=void 0!==n&&null!==n&&null!==n.timeout&&void 0!==n.timeout?o+n.timeout:o+5e3,next:null,previous:null},null===r)r=e.next=e.previous=e,s();else{o=null;var i=r;do{if(i.timesOutAt>n){o=i;break}i=i.next}while(i!==r);null===o?o=r:o===r&&(r=e,s()),(n=o.previous).next=o.previous=e,e.next=o,e.previous=n}return e},t.unstable_cancelScheduledWork=function(e){var t=e.next;if(null!==t){if(t===e)r=null;else{e===r&&(r=t);var n=e.previous;n.next=t,t.previous=n}e.next=e.previous=null}}},function(module,exports,__webpack_require__){"use strict";var evalAllowed=!1;try{eval("evalAllowed = true")}catch(e){}var platformSupported=!!Object.setPrototypeOf&&evalAllowed;module.exports=__webpack_require__(219)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&"object"==typeof e&&"default"in e?e.default:e}(n(1)),o=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},i=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},a=function(e){function t(){return o(this,t),i(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.render=function(){return r.Children.only(this.props.children)},t}(r.Component);t.AppContainer=a,t.hot=function(){return function(e){return e}},t.areComponentsEqual=function(e,t){return e===t},t.setConfig=function(){},t.cold=function(e){return e}},function(e,t,n){"use strict";t.a=u;var r=n(1),o=(n.n(r),n(12)),i=n.n(o),a=n(116);n(72);function u(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"store",n=arguments[1]||t+"Subscription",o=function(e){function o(n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o);var i=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,n,r));return i[t]=n.store,i}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(o,e),o.prototype.getChildContext=function(){var e;return(e={})[t]=this[t],e[n]=null,e},o.prototype.render=function(){return r.Children.only(this.props.children)},o}(r.Component);return o.propTypes={store:a.a.isRequired,children:i.a.element.isRequired},o.childContextTypes=((e={})[t]=a.a.isRequired,e[n]=a.b,e),o}t.b=u()},function(e,t,n){"use strict";var r=n(222);function o(){}e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var u=new Error("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");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return n.checkPropTypes=o,n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";n.d(t,"a",function(){return i});var r=null,o={notify:function(){}};var i=function(){function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.store=t,this.parentSub=n,this.onStateChange=r,this.unsubscribe=null,this.listeners=o}return e.prototype.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},e.prototype.notifyNestedSubs=function(){this.listeners.notify()},e.prototype.isSubscribed=function(){return Boolean(this.unsubscribe)},e.prototype.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.onStateChange):this.store.subscribe(this.onStateChange),this.listeners=function(){var e=[],t=[];return{clear:function(){t=r,e=r},notify:function(){for(var n=e=t,r=0;r<n.length;r++)n[r]()},get:function(){return t},subscribe:function(n){var o=!0;return t===e&&(t=e.slice()),t.push(n),function(){o&&e!==r&&(o=!1,t===e&&(t=e.slice()),t.splice(t.indexOf(n),1))}}}}())},e.prototype.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=o)},e}()},function(e,t,n){"use strict";var r=n(117),o=n(225),i=n(226),a=n(238),u=n(239),s=n(240),c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function l(e,t,n){for(var r=t.length-1;r>=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function f(e,t){return e===t}t.a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.connectHOC,n=void 0===t?r.a:t,d=e.mapStateToPropsFactories,p=void 0===d?a.a:d,h=e.mapDispatchToPropsFactories,m=void 0===h?i.a:h,v=e.mergePropsFactories,y=void 0===v?u.a:v,g=e.selectorFactory,_=void 0===g?s.a:g;return function(e,t,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=i.pure,u=void 0===a||a,s=i.areStatesEqual,d=void 0===s?f:s,h=i.areOwnPropsEqual,v=void 0===h?o.a:h,g=i.areStatePropsEqual,b=void 0===g?o.a:g,w=i.areMergedPropsEqual,x=void 0===w?o.a:w,E=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(i,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),O=l(e,p,"mapStateToProps"),S=l(t,m,"mapDispatchToProps"),T=l(r,y,"mergeProps");return n(_,c({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:O,initMapDispatchToProps:S,initMergeProps:T,pure:u,areStatesEqual:d,areOwnPropsEqual:v,areStatePropsEqual:b,areMergedPropsEqual:x},E))}}()},function(e,t,n){"use strict";t.a=function(e,t){if(o(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var a=0;a<n.length;a++)if(!r.call(t,n[a])||!o(e[n[a]],t[n[a]]))return!1;return!0};var r=Object.prototype.hasOwnProperty;function o(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var r=n(15),o=n(120);t.a=[function(e){return"function"==typeof e?Object(o.b)(e,"mapDispatchToProps"):void 0},function(e){return e?void 0:Object(o.a)(function(e){return{dispatch:e}})},function(e){return e&&"object"==typeof e?Object(o.a)(function(t){return Object(r.bindActionCreators)(e,t)}):void 0}]},function(e,t,n){"use strict";(function(e,r){var o,i=n(228);o="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==e?e:r;var a=Object(i.a)(o);t.a=a}).call(t,n(3),n(119)(e))},function(e,t,n){"use strict";t.a=function(e){var t,n=e.Symbol;"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable";return t}},function(e,t,n){"use strict";var r=n(230),o=n(235),i=n(237),a="[object Object]",u=Function.prototype,s=Object.prototype,c=u.toString,l=s.hasOwnProperty,f=c.call(Object);t.a=function(e){if(!Object(i.a)(e)||Object(r.a)(e)!=a)return!1;var t=Object(o.a)(e);if(null===t)return!0;var n=l.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==f}},function(e,t,n){"use strict";var r=n(122),o=n(233),i=n(234),a="[object Null]",u="[object Undefined]",s=r.a?r.a.toStringTag:void 0;t.a=function(e){return null==e?void 0===e?u:a:s&&s in Object(e)?Object(o.a)(e):Object(i.a)(e)}},function(e,t,n){"use strict";var r=n(232),o="object"==typeof self&&self&&self.Object===Object&&self,i=r.a||o||Function("return this")();t.a=i},function(e,t,n){"use strict";(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.a=n}).call(t,n(3))},function(e,t,n){"use strict";var r=n(122),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,u=r.a?r.a.toStringTag:void 0;t.a=function(e){var t=i.call(e,u),n=e[u];try{e[u]=void 0;var r=!0}catch(e){}var o=a.call(e);return r&&(t?e[u]=n:delete e[u]),o}},function(e,t,n){"use strict";var r=Object.prototype.toString;t.a=function(e){return r.call(e)}},function(e,t,n){"use strict";var r=n(236),o=Object(r.a)(Object.getPrototypeOf,Object);t.a=o},function(e,t,n){"use strict";t.a=function(e,t){return function(n){return e(t(n))}}},function(e,t,n){"use strict";t.a=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";var r=n(120);t.a=[function(e){return"function"==typeof e?Object(r.b)(e,"mapStateToProps"):void 0},function(e){return e?void 0:Object(r.a)(function(){return{}})}]},function(e,t,n){"use strict";n(121);var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function o(e,t,n){return r({},n,e,t)}t.a=[function(e){return"function"==typeof e?function(e){return function(t,n){n.displayName;var r=n.pure,o=n.areMergedPropsEqual,i=!1,a=void 0;return function(t,n,u){var s=e(t,n,u);return i?r&&o(s,a)||(a=s):(i=!0,a=s),a}}}(e):void 0},function(e){return e?void 0:function(){return o}}]},function(e,t,n){"use strict";t.a=function(e,t){var n=t.initMapStateToProps,i=t.initMapDispatchToProps,a=t.initMergeProps,u=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(t,["initMapStateToProps","initMapDispatchToProps","initMergeProps"]),s=n(e,u),c=i(e,u),l=a(e,u);0;return(u.pure?o:r)(s,c,l,e,u)};n(241);function r(e,t,n,r){return function(o,i){return n(e(o,i),t(r,i),i)}}function o(e,t,n,r,o){var i=o.areStatesEqual,a=o.areOwnPropsEqual,u=o.areStatePropsEqual,s=!1,c=void 0,l=void 0,f=void 0,d=void 0,p=void 0;function h(o,s){var h=!a(s,l),m=!i(o,c);return c=o,l=s,h&&m?(f=e(c,l),t.dependsOnOwnProps&&(d=t(r,l)),p=n(f,d,l)):h?(e.dependsOnOwnProps&&(f=e(c,l)),t.dependsOnOwnProps&&(d=t(r,l)),p=n(f,d,l)):m?function(){var t=e(c,l),r=!u(t,f);return f=t,r&&(p=n(f,d,l)),p}():p}return function(o,i){return s?h(o,i):function(o,i){return f=e(c=o,l=i),d=t(r,l),p=n(f,d,l),s=!0,p}(o,i)}}},function(e,t,n){"use strict";n(72)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=y(n(5)),o=y(n(6)),i=y(n(7)),a=y(n(8)),u=y(n(9)),s=n(1),c=y(s),l=n(135),f=n(86),d=n(11),p=v(n(208)),h=v(n(517)),m=v(n(528));function v(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function y(e){return e&&e.__esModule?e:{default:e}}var g=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,u.default)(t,e),(0,i.default)(t,[{key:"render",value:function(){return c.default.createElement(l.ConnectedRouter,{history:this.props.history},c.default.createElement("div",null,c.default.createElement(d.Header,null),c.default.createElement("div",{className:"app"},c.default.createElement(f.Route,{path:"/metadata/",component:d.Sidebar}),c.default.createElement("div",{className:"body"},c.default.createElement(f.Route,{path:"/search/",component:h.Menu}),c.default.createElement(f.Route,{path:"/metadata/:hash/",component:p.Heading}),c.default.createElement(f.Switch,null,c.default.createElement(f.Route,{exact:!0,path:"/metadata/:hash/summary/",component:p.Summary}),c.default.createElement(f.Route,{exact:!0,path:"/metadata/:hash/mediaRecord/",component:p.MediaRecord}),c.default.createElement(f.Route,{exact:!0,path:"/metadata/:hash/mediaInfo/",component:p.MediaInfo}),c.default.createElement(f.Route,{exact:!0,path:"/metadata/:hash/keyframe/:frame/",component:p.KeyframeSingle}),c.default.createElement(f.Route,{exact:!0,path:"/metadata/:hash/keyframe/",component:p.KeyframeList}),c.default.createElement(f.Route,{exact:!0,path:"/metadata/:hash/coco/",component:p.Coco}),c.default.createElement(f.Route,{exact:!0,path:"/metadata/:hash/places365/",component:p.Places365}),c.default.createElement(f.Route,{exact:!0,path:"/metadata/:hash/sugarcube/",component:p.Sugarcube}),c.default.createElement(f.Route,{exact:!0,path:"/metadata/:hash/",component:p.Summary}),c.default.createElement(f.Route,{exact:!0,path:"/metadata/",render:function(){return c.default.createElement("div",{className:"notFound"},c.default.createElement("h4",null,"NOT FOUND"))}}),c.default.createElement(f.Route,{exact:!0,path:"/search/",component:h.Container}),c.default.createElement(f.Route,{exact:!0,path:"/search/keyframe/:verified/:hash/:frame/",component:h.Container}),c.default.createElement(f.Route,{exact:!0,path:"/search/keyframe/:hash/:frame/",component:h.Container}),c.default.createElement(f.Route,{exact:!0,path:"/search/browse/:hash/",component:h.Browse}),c.default.createElement(f.Route,{exact:!0,path:"/search/random/",component:h.Random}),c.default.createElement(f.Route,{exact:!0,path:"/search/review/",component:m.Saved})))),c.default.createElement(d.Footer,null)))}}]),t}(s.Component);t.default=g},function(e,t,n){n(244),e.exports=n(10).Object.getPrototypeOf},function(e,t,n){var r=n(41),o=n(123);n(124)("getPrototypeOf",function(){return function(e){return o(r(e))}})},function(e,t,n){n(246);var r=n(10).Object;e.exports=function(e,t,n){return r.defineProperty(e,t,n)}},function(e,t,n){var r=n(18);r(r.S+r.F*!n(24),"Object",{defineProperty:n(22).f})},function(e,t,n){e.exports={default:n(248),__esModule:!0}},function(e,t,n){n(44),n(58),e.exports=n(83).f("iterator")},function(e,t,n){var r=n(79),o=n(73);e.exports=function(e){return function(t,n){var i,a,u=String(o(t)),s=r(n),c=u.length;return s<0||s>=c?e?"":void 0:(i=u.charCodeAt(s))<55296||i>56319||s+1===c||(a=u.charCodeAt(s+1))<56320||a>57343?e?u.charAt(s):i:e?u.slice(s,s+2):a-56320+(i-55296<<10)+65536}}},function(e,t,n){"use strict";var r=n(80),o=n(43),i=n(57),a={};n(26)(a,n(14)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(a,{next:o(1,n)}),i(e,t+" Iterator")}},function(e,t,n){var r=n(22),o=n(20),i=n(45);e.exports=n(24)?Object.defineProperties:function(e,t){o(e);for(var n,a=i(t),u=a.length,s=0;u>s;)r.f(e,n=a[s++],t[n]);return e}},function(e,t,n){var r=n(37),o=n(81),i=n(253);e.exports=function(e){return function(t,n,a){var u,s=r(t),c=o(s.length),l=i(a,c);if(e&&n!=n){for(;c>l;)if((u=s[l++])!=u)return!0}else for(;c>l;l++)if((e||l in s)&&s[l]===n)return e||l||0;return!e&&-1}}},function(e,t,n){var r=n(79),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):i(e,t)}},function(e,t,n){"use strict";var r=n(255),o=n(256),i=n(36),a=n(37);e.exports=n(127)(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){e.exports={default:n(258),__esModule:!0}},function(e,t,n){n(259),n(134),n(264),n(265),e.exports=n(10).Symbol},function(e,t,n){"use strict";var r=n(13),o=n(25),i=n(24),a=n(18),u=n(128),s=n(260).KEY,c=n(35),l=n(75),f=n(57),d=n(55),p=n(14),h=n(83),m=n(84),v=n(261),y=n(262),g=n(20),_=n(23),b=n(37),w=n(77),x=n(43),E=n(80),O=n(263),S=n(133),T=n(22),k=n(45),R=S.f,j=T.f,P=O.f,C=r.Symbol,M=r.JSON,I=M&&M.stringify,A=p("_hidden"),D=p("toPrimitive"),N={}.propertyIsEnumerable,L=l("symbol-registry"),U=l("symbols"),F=l("op-symbols"),B=Object.prototype,W="function"==typeof C,Y=r.QObject,$=!Y||!Y.prototype||!Y.prototype.findChild,q=i&&c(function(){return 7!=E(j({},"a",{get:function(){return j(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=R(B,t);r&&delete B[t],j(e,t,n),r&&e!==B&&j(B,t,r)}:j,H=function(e){var t=U[e]=E(C.prototype);return t._k=e,t},z=W&&"symbol"==typeof C.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof C},G=function(e,t,n){return e===B&&G(F,t,n),g(e),t=w(t,!0),g(n),o(U,t)?(n.enumerable?(o(e,A)&&e[A][t]&&(e[A][t]=!1),n=E(n,{enumerable:x(0,!1)})):(o(e,A)||j(e,A,x(1,{})),e[A][t]=!0),q(e,t,n)):j(e,t,n)},V=function(e,t){g(e);for(var n,r=v(t=b(t)),o=0,i=r.length;i>o;)G(e,n=r[o++],t[n]);return e},X=function(e){var t=N.call(this,e=w(e,!0));return!(this===B&&o(U,e)&&!o(F,e))&&(!(t||!o(this,e)||!o(U,e)||o(this,A)&&this[A][e])||t)},K=function(e,t){if(e=b(e),t=w(t,!0),e!==B||!o(U,t)||o(F,t)){var n=R(e,t);return!n||!o(U,t)||o(e,A)&&e[A][t]||(n.enumerable=!0),n}},Q=function(e){for(var t,n=P(b(e)),r=[],i=0;n.length>i;)o(U,t=n[i++])||t==A||t==s||r.push(t);return r},J=function(e){for(var t,n=e===B,r=P(n?F:b(e)),i=[],a=0;r.length>a;)!o(U,t=r[a++])||n&&!o(B,t)||i.push(U[t]);return i};W||(u((C=function(){if(this instanceof C)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),t=function(n){this===B&&t.call(F,n),o(this,A)&&o(this[A],e)&&(this[A][e]=!1),q(this,e,x(1,n))};return i&&$&&q(B,e,{configurable:!0,set:t}),H(e)}).prototype,"toString",function(){return this._k}),S.f=K,T.f=G,n(132).f=O.f=Q,n(59).f=X,n(85).f=J,i&&!n(42)&&u(B,"propertyIsEnumerable",X,!0),h.f=function(e){return H(p(e))}),a(a.G+a.W+a.F*!W,{Symbol:C});for(var Z="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ee=0;Z.length>ee;)p(Z[ee++]);for(var te=k(p.store),ne=0;te.length>ne;)m(te[ne++]);a(a.S+a.F*!W,"Symbol",{for:function(e){return o(L,e+="")?L[e]:L[e]=C(e)},keyFor:function(e){if(!z(e))throw TypeError(e+" is not a symbol!");for(var t in L)if(L[t]===e)return t},useSetter:function(){$=!0},useSimple:function(){$=!1}}),a(a.S+a.F*!W,"Object",{create:function(e,t){return void 0===t?E(e):V(E(e),t)},defineProperty:G,defineProperties:V,getOwnPropertyDescriptor:K,getOwnPropertyNames:Q,getOwnPropertySymbols:J}),M&&a(a.S+a.F*(!W||c(function(){var e=C();return"[null]"!=I([e])||"{}"!=I({a:e})||"{}"!=I(Object(e))})),"JSON",{stringify:function(e){for(var t,n,r=[e],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=t=r[1],(_(t)||void 0!==e)&&!z(e))return y(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!z(t))return t}),r[1]=t,I.apply(M,r)}}),C.prototype[D]||n(26)(C.prototype,D,C.prototype.valueOf),f(C,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},function(e,t,n){var r=n(55)("meta"),o=n(23),i=n(25),a=n(22).f,u=0,s=Object.isExtensible||function(){return!0},c=!n(35)(function(){return s(Object.preventExtensions({}))}),l=function(e){a(e,r,{value:{i:"O"+ ++u,w:{}}})},f=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!s(e))return"F";if(!t)return"E";l(e)}return e[r].i},getWeak:function(e,t){if(!i(e,r)){if(!s(e))return!0;if(!t)return!1;l(e)}return e[r].w},onFreeze:function(e){return c&&f.NEED&&s(e)&&!i(e,r)&&l(e),e}}},function(e,t,n){var r=n(45),o=n(85),i=n(59);e.exports=function(e){var t=r(e),n=o.f;if(n)for(var a,u=n(e),s=i.f,c=0;u.length>c;)s.call(e,a=u[c++])&&t.push(a);return t}},function(e,t,n){var r=n(46);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){var r=n(37),o=n(132).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?function(e){try{return o(e)}catch(e){return a.slice()}}(e):o(r(e))}},function(e,t,n){n(84)("asyncIterator")},function(e,t,n){n(84)("observable")},function(e,t,n){e.exports={default:n(267),__esModule:!0}},function(e,t,n){n(268),e.exports=n(10).Object.setPrototypeOf},function(e,t,n){var r=n(18);r(r.S,"Object",{setPrototypeOf:n(269).set})},function(e,t,n){var r=n(23),o=n(20),i=function(e,t){if(o(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{(r=n(34)(Function.call,n(133).f(Object.prototype,"__proto__").set,2))(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,n){return i(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check:i}},function(e,t,n){e.exports={default:n(271),__esModule:!0}},function(e,t,n){n(272);var r=n(10).Object;e.exports=function(e,t){return r.create(e,t)}},function(e,t,n){var r=n(18);r(r.S,"Object",{create:n(80)})},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.__RewireAPI__=t.__ResetDependency__=t.__set__=t.__Rewire__=t.__GetDependency__=t.__get__=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(60)),a=l(n(274)),u=l(n(281)),s=l(n(282)),c=l(n(283));function l(e){return e&&e.__esModule?e:{default:e}}var f=function(e){return o({},_("actions"),_("createSelectors")(e),{ConnectedRouter:_("createConnectedRouter")(e),connectRouter:_("createConnectRouter")(e),routerMiddleware:_("routerMiddleware")})};function d(){try{if(e)return e}catch(e){try{if(window)return window}catch(e){return this}}}t.default=_("createAll");var p=null;function h(){if(null===p){var e=d();e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__||(e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__=0),p=__$$GLOBAL_REWIRE_NEXT_MODULE_ID__++}return p}function m(){var e=d();return e.__$$GLOBAL_REWIRE_REGISTRY__||(e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)),__$$GLOBAL_REWIRE_REGISTRY__}function v(){var e=h(),t=m(),n=t[e];return n||(t[e]=Object.create(null),n=t[e]),n}!function(){var e=d();e.__rewire_reset_all__||(e.__rewire_reset_all__=function(){e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)})}();var y="__INTENTIONAL_UNDEFINED__",g={};function _(e){var t=v();if(void 0===t[e])return function(e){switch(e){case"actions":return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).filter(function(e){return"__get__"!==e&&"__set__"!==e&&"__reset__"!==e&&"__with__"!==e&&"__GetDependency__"!==e&&"__Rewire__"!==e&&"__ResetDependency__"!==e&&"__RewireAPI__"!==e}).reduce(function(t,n){return t[n]=e[n],t},{})}(i);case"createSelectors":return c.default;case"createConnectedRouter":return a.default;case"createConnectRouter":return u.default;case"routerMiddleware":return s.default;case"createAll":return f}return}(e);var n=t[e];return n===y?void 0:n}function b(e,t){var n=v();if("object"!==(void 0===e?"undefined":r(e)))return n[e]=void 0===t?y:t,function(){w(e)};Object.keys(e).forEach(function(t){n[t]=e[t]})}function w(e){var t=v();delete t[e],0==Object.keys(t).length&&delete m()[h]}function x(e){var t=v(),n=Object.keys(e),r={};function o(){n.forEach(function(e){t[e]=r[e]})}return function(i){n.forEach(function(n){r[n]=t[n],t[n]=e[n]});var a=i();return a&&"function"==typeof a.then?a.then(o).catch(o):o(),a}}!function(){function e(e,t){Object.defineProperty(g,e,{value:t,enumerable:!1,configurable:!0})}e("__get__",_),e("__GetDependency__",_),e("__Rewire__",b),e("__set__",b),e("__reset__",w),e("__ResetDependency__",w),e("__with__",x)}();var E=void 0===f?"undefined":r(f);function O(e,t){Object.defineProperty(f,e,{value:t,enumerable:!1,configurable:!0})}"object"!==E&&"function"!==E||!Object.isExtensible(f)||(O("__get__",_),O("__GetDependency__",_),O("__Rewire__",b),O("__set__",b),O("__reset__",w),O("__ResetDependency__",w),O("__with__",x),O("__RewireAPI__",g)),t.__get__=_,t.__GetDependency__=_,t.__Rewire__=b,t.__set__=b,t.__ResetDependency__=w,t.__RewireAPI__=g}).call(t,n(3))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.__RewireAPI__=t.__ResetDependency__=t.__set__=t.__Rewire__=t.__GetDependency__=t.__get__=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=n(1),a=f(i),u=f(n(12)),s=n(2),c=n(86),l=n(60);function f(e){return e&&e.__esModule?e:{default:e}}var d=function(e){var t=e.getIn,n=e.toJS,r=function(e){function r(e,o){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,r);var i=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e));i.inTimeTravelling=!1,i.unsubscribe=o.store.subscribe(function(){var r=n(t(o.store.getState(),["router","location"])),a=r.pathname,u=r.search,s=r.hash,c=e.history.location,l=c.pathname,f=c.search,d=c.hash;l===a&&f===u&&d===s||(i.inTimeTravelling=!0,e.history.push({pathname:a,search:u,hash:s}))});var a=function(t,n){i.inTimeTravelling?i.inTimeTravelling=!1:e.onLocationChanged(t,n)};return i.unlisten=e.history.listen(a),a(e.history.location,e.history.action),i}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(r,b("Component")),o(r,[{key:"componentWillUnmount",value:function(){this.unlisten(),this.unsubscribe()}},{key:"render",value:function(){var e=this.props,t=e.history,n=e.children;return b("React").createElement(b("Router"),{history:t},n)}}]),r}();r.contextTypes={store:b("PropTypes").shape({getState:b("PropTypes").func.isRequired,subscribe:b("PropTypes").func.isRequired}).isRequired},r.propTypes={history:b("PropTypes").shape({action:b("PropTypes").string.isRequired,listen:b("PropTypes").func.isRequired,location:b("PropTypes").object.isRequired,push:b("PropTypes").func.isRequired}).isRequired,location:b("PropTypes").oneOfType([b("PropTypes").object,b("PropTypes").string]).isRequired,action:b("PropTypes").string.isRequired,basename:b("PropTypes").string,children:b("PropTypes").oneOfType([b("PropTypes").func,b("PropTypes").node]),onLocationChanged:b("PropTypes").func.isRequired};return b("connect")(function(e){return{action:t(e,["router","action"]),location:t(e,["router","location"])}},function(e){return{onLocationChanged:function(t,n){return e(b("onLocationChanged")(t,n))}}})(r)};function p(){try{if(e)return e}catch(e){try{if(window)return window}catch(e){return this}}}t.default=b("createConnectedRouter");var h=null;function m(){if(null===h){var e=p();e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__||(e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__=0),h=__$$GLOBAL_REWIRE_NEXT_MODULE_ID__++}return h}function v(){var e=p();return e.__$$GLOBAL_REWIRE_REGISTRY__||(e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)),__$$GLOBAL_REWIRE_REGISTRY__}function y(){var e=m(),t=v(),n=t[e];return n||(t[e]=Object.create(null),n=t[e]),n}!function(){var e=p();e.__rewire_reset_all__||(e.__rewire_reset_all__=function(){e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)})}();var g="__INTENTIONAL_UNDEFINED__",_={};function b(e){var t=y();if(void 0===t[e])return function(e){switch(e){case"Component":return i.Component;case"PropTypes":return u.default;case"onLocationChanged":return l.onLocationChanged;case"connect":return s.connect;case"createConnectedRouter":return d;case"React":return a.default;case"Router":return c.Router}return}(e);var n=t[e];return n===g?void 0:n}function w(e,t){var n=y();if("object"!==(void 0===e?"undefined":r(e)))return n[e]=void 0===t?g:t,function(){x(e)};Object.keys(e).forEach(function(t){n[t]=e[t]})}function x(e){var t=y();delete t[e],0==Object.keys(t).length&&delete v()[m]}function E(e){var t=y(),n=Object.keys(e),r={};function o(){n.forEach(function(e){t[e]=r[e]})}return function(i){n.forEach(function(n){r[n]=t[n],t[n]=e[n]});var a=i();return a&&"function"==typeof a.then?a.then(o).catch(o):o(),a}}!function(){function e(e,t){Object.defineProperty(_,e,{value:t,enumerable:!1,configurable:!0})}e("__get__",b),e("__GetDependency__",b),e("__Rewire__",w),e("__set__",w),e("__reset__",x),e("__ResetDependency__",x),e("__with__",E)}();var O=void 0===d?"undefined":r(d);function S(e,t){Object.defineProperty(d,e,{value:t,enumerable:!1,configurable:!0})}"object"!==O&&"function"!==O||!Object.isExtensible(d)||(S("__get__",b),S("__GetDependency__",b),S("__Rewire__",w),S("__set__",w),S("__reset__",x),S("__ResetDependency__",x),S("__with__",E),S("__RewireAPI__",_)),t.__get__=b,t.__GetDependency__=b,t.__Rewire__=w,t.__set__=w,t.__ResetDependency__=x,t.__RewireAPI__=_}).call(t,n(3))},function(e,t,n){"use strict";var r=n(61),o=n.n(r),i=n(19),a=n.n(i),u=n(62),s=n(47),c=n(87),l=n(137),f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p=function(){try{return window.history.state||{}}catch(e){return{}}};t.a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a()(l.b,"Browser history needs a DOM");var t=window.history,n=Object(l.g)(),r=!Object(l.h)(),i=e.forceRefresh,h=void 0!==i&&i,m=e.getUserConfirmation,v=void 0===m?l.c:m,y=e.keyLength,g=void 0===y?6:y,_=e.basename?Object(s.g)(Object(s.a)(e.basename)):"",b=function(e){var t=e||{},n=t.key,r=t.state,i=window.location,a=i.pathname+i.search+i.hash;return o()(!_||Object(s.c)(a,_),'You are attempting to use a basename on a page whose URL path does not begin with the basename. Expected path "'+a+'" to begin with "'+_+'".'),_&&(a=Object(s.e)(a,_)),Object(u.a)(a,r,n)},w=function(){return Math.random().toString(36).substr(2,g)},x=Object(c.a)(),E=function(e){d(N,e),N.length=t.length,x.notifyListeners(N.location,N.action)},O=function(e){Object(l.d)(e)||k(b(e.state))},S=function(){k(b(p()))},T=!1,k=function(e){T?(T=!1,E()):x.confirmTransitionTo(e,"POP",v,function(t){t?E({action:"POP",location:e}):R(e)})},R=function(e){var t=N.location,n=P.indexOf(t.key);-1===n&&(n=0);var r=P.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(T=!0,M(o))},j=b(p()),P=[j.key],C=function(e){return _+Object(s.b)(e)},M=function(e){t.go(e)},I=0,A=function(e){1===(I+=e)?(Object(l.a)(window,"popstate",O),r&&Object(l.a)(window,"hashchange",S)):0===I&&(Object(l.e)(window,"popstate",O),r&&Object(l.e)(window,"hashchange",S))},D=!1,N={length:t.length,action:"POP",location:j,createHref:C,push:function(e,r){o()(!("object"===(void 0===e?"undefined":f(e))&&void 0!==e.state&&void 0!==r),"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored");var i=Object(u.a)(e,r,w(),N.location);x.confirmTransitionTo(i,"PUSH",v,function(e){if(e){var r=C(i),a=i.key,u=i.state;if(n)if(t.pushState({key:a,state:u},null,r),h)window.location.href=r;else{var s=P.indexOf(N.location.key),c=P.slice(0,-1===s?0:s+1);c.push(i.key),P=c,E({action:"PUSH",location:i})}else o()(void 0===u,"Browser history cannot push state in browsers that do not support HTML5 history"),window.location.href=r}})},replace:function(e,r){o()(!("object"===(void 0===e?"undefined":f(e))&&void 0!==e.state&&void 0!==r),"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored");var i=Object(u.a)(e,r,w(),N.location);x.confirmTransitionTo(i,"REPLACE",v,function(e){if(e){var r=C(i),a=i.key,u=i.state;if(n)if(t.replaceState({key:a,state:u},null,r),h)window.location.replace(r);else{var s=P.indexOf(N.location.key);-1!==s&&(P[s]=i.key),E({action:"REPLACE",location:i})}else o()(void 0===u,"Browser history cannot replace state in browsers that do not support HTML5 history"),window.location.replace(r)}})},go:M,goBack:function(){return M(-1)},goForward:function(){return M(1)},block:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=x.setPrompt(e);return D||(A(1),D=!0),function(){return D&&(D=!1,A(-1)),t()}},listen:function(e){var t=x.appendListener(e);return A(1),function(){A(-1),t()}}};return N}},function(e,t,n){"use strict";function r(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}t.a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=e&&e.split("/")||[],i=t&&t.split("/")||[],a=e&&r(e),u=t&&r(t),s=a||u;if(e&&r(e)?i=n:n.length&&(i.pop(),i=i.concat(n)),!i.length)return"/";var c=void 0;if(i.length){var l=i[i.length-1];c="."===l||".."===l||""===l}else c=!1;for(var f=0,d=i.length;d>=0;d--){var p=i[d];"."===p?o(i,d):".."===p?(o(i,d),f++):f&&(o(i,d),f--)}if(!s)for(;f--;f)i.unshift("..");!s||""===i[0]||i[0]&&r(i[0])||i.unshift("");var h=i.join("/");return c&&"/"!==h.substr(-1)&&(h+="/"),h}},function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.a=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every(function(t,r){return e(t,n[r])});var o=void 0===t?"undefined":r(t);if(o!==(void 0===n?"undefined":r(n)))return!1;if("object"===o){var i=t.valueOf(),a=n.valueOf();if(i!==t||a!==n)return e(i,a);var u=Object.keys(t),s=Object.keys(n);return u.length===s.length&&u.every(function(r){return e(t[r],n[r])})}return!1}},function(e,t,n){"use strict";var r=n(61),o=n.n(r),i=n(19),a=n.n(i),u=n(62),s=n(47),c=n(87),l=n(137),f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},d={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+Object(s.f)(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:s.f,decodePath:s.a},slash:{encodePath:s.a,decodePath:s.a}},p=function(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)},h=function(e){var t=window.location.href.indexOf("#");window.location.replace(window.location.href.slice(0,t>=0?t:0)+"#"+e)};t.a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a()(l.b,"Hash history needs a DOM");var t=window.history,n=Object(l.f)(),r=e.getUserConfirmation,i=void 0===r?l.c:r,m=e.hashType,v=void 0===m?"slash":m,y=e.basename?Object(s.g)(Object(s.a)(e.basename)):"",g=d[v],_=g.encodePath,b=g.decodePath,w=function(){var e=b(p());return o()(!y||Object(s.c)(e,y),'You are attempting to use a basename on a page whose URL path does not begin with the basename. Expected path "'+e+'" to begin with "'+y+'".'),y&&(e=Object(s.e)(e,y)),Object(u.a)(e)},x=Object(c.a)(),E=function(e){f(L,e),L.length=t.length,x.notifyListeners(L.location,L.action)},O=!1,S=null,T=function(){var e=p(),t=_(e);if(e!==t)h(t);else{var n=w(),r=L.location;if(!O&&Object(u.b)(r,n))return;if(S===Object(s.b)(n))return;S=null,k(n)}},k=function(e){O?(O=!1,E()):x.confirmTransitionTo(e,"POP",i,function(t){t?E({action:"POP",location:e}):R(e)})},R=function(e){var t=L.location,n=M.lastIndexOf(Object(s.b)(t));-1===n&&(n=0);var r=M.lastIndexOf(Object(s.b)(e));-1===r&&(r=0);var o=n-r;o&&(O=!0,I(o))},j=p(),P=_(j);j!==P&&h(P);var C=w(),M=[Object(s.b)(C)],I=function(e){o()(n,"Hash history go(n) causes a full page reload in this browser"),t.go(e)},A=0,D=function(e){1===(A+=e)?Object(l.a)(window,"hashchange",T):0===A&&Object(l.e)(window,"hashchange",T)},N=!1,L={length:t.length,action:"POP",location:C,createHref:function(e){return"#"+_(y+Object(s.b)(e))},push:function(e,t){o()(void 0===t,"Hash history cannot push state; it is ignored");var n=Object(u.a)(e,void 0,void 0,L.location);x.confirmTransitionTo(n,"PUSH",i,function(e){if(e){var t=Object(s.b)(n),r=_(y+t);if(p()!==r){S=t,function(e){window.location.hash=e}(r);var i=M.lastIndexOf(Object(s.b)(L.location)),a=M.slice(0,-1===i?0:i+1);a.push(t),M=a,E({action:"PUSH",location:n})}else o()(!1,"Hash history cannot PUSH the same path; a new entry will not be added to the history stack"),E()}})},replace:function(e,t){o()(void 0===t,"Hash history cannot replace state; it is ignored");var n=Object(u.a)(e,void 0,void 0,L.location);x.confirmTransitionTo(n,"REPLACE",i,function(e){if(e){var t=Object(s.b)(n),r=_(y+t);p()!==r&&(S=t,h(r));var o=M.indexOf(Object(s.b)(L.location));-1!==o&&(M[o]=t),E({action:"REPLACE",location:n})}})},go:I,goBack:function(){return I(-1)},goForward:function(){return I(1)},block:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=x.setPrompt(e);return N||(D(1),N=!0),function(){return N&&(N=!1,D(-1)),t()}},listen:function(e){var t=x.appendListener(e);return D(1),function(){D(-1),t()}}};return L}},function(e,t,n){"use strict";var r=n(61),o=n.n(r),i=n(47),a=n(62),u=n(87),s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l=function(e,t,n){return Math.min(Math.max(e,t),n)};t.a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.getUserConfirmation,n=e.initialEntries,r=void 0===n?["/"]:n,f=e.initialIndex,d=void 0===f?0:f,p=e.keyLength,h=void 0===p?6:p,m=Object(u.a)(),v=function(e){c(x,e),x.length=x.entries.length,m.notifyListeners(x.location,x.action)},y=function(){return Math.random().toString(36).substr(2,h)},g=l(d,0,r.length-1),_=r.map(function(e){return"string"==typeof e?Object(a.a)(e,void 0,y()):Object(a.a)(e,void 0,e.key||y())}),b=i.b,w=function(e){var n=l(x.index+e,0,x.entries.length-1),r=x.entries[n];m.confirmTransitionTo(r,"POP",t,function(e){e?v({action:"POP",location:r,index:n}):v()})},x={length:_.length,action:"POP",location:_[g],index:g,entries:_,createHref:b,push:function(e,n){o()(!("object"===(void 0===e?"undefined":s(e))&&void 0!==e.state&&void 0!==n),"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored");var r=Object(a.a)(e,n,y(),x.location);m.confirmTransitionTo(r,"PUSH",t,function(e){if(e){var t=x.index+1,n=x.entries.slice(0);n.length>t?n.splice(t,n.length-t,r):n.push(r),v({action:"PUSH",location:r,index:t,entries:n})}})},replace:function(e,n){o()(!("object"===(void 0===e?"undefined":s(e))&&void 0!==e.state&&void 0!==n),"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored");var r=Object(a.a)(e,n,y(),x.location);m.confirmTransitionTo(r,"REPLACE",t,function(e){e&&(x.entries[x.index]=r,v({action:"REPLACE",location:r}))})},go:w,goBack:function(){return w(-1)},goForward:function(){return w(1)},canGo:function(e){var t=x.index+e;return t>=0&&t<x.entries.length},block:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return m.setPrompt(e)},listen:function(e){return m.appendListener(e)}};return x}},function(e,t){e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.__RewireAPI__=t.__ResetDependency__=t.__set__=t.__Rewire__=t.__GetDependency__=t.__get__=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(60),i=function(e){var t=e.filterNotRouter,n=e.fromJS,r=e.getIn,o=e.merge,i=e.setIn;return function(e){var a=n({location:e.location,action:e.action});return function(e){return function(n,u){var s=a;n&&(s=r(n,["router"])||s,n=t(n));var c=e(n,u);return i(c,["router"],function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.type,r=t.payload;return n===p("LOCATION_CHANGE")?o(e,r):e}(s,u))}}}};function a(){try{if(e)return e}catch(e){try{if(window)return window}catch(e){return this}}}t.default=p("createConnectRouter");var u=null;function s(){if(null===u){var e=a();e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__||(e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__=0),u=__$$GLOBAL_REWIRE_NEXT_MODULE_ID__++}return u}function c(){var e=a();return e.__$$GLOBAL_REWIRE_REGISTRY__||(e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)),__$$GLOBAL_REWIRE_REGISTRY__}function l(){var e=s(),t=c(),n=t[e];return n||(t[e]=Object.create(null),n=t[e]),n}!function(){var e=a();e.__rewire_reset_all__||(e.__rewire_reset_all__=function(){e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)})}();var f="__INTENTIONAL_UNDEFINED__",d={};function p(e){var t=l();if(void 0===t[e])return function(e){switch(e){case"LOCATION_CHANGE":return o.LOCATION_CHANGE;case"createConnectRouter":return i}return}(e);var n=t[e];return n===f?void 0:n}function h(e,t){var n=l();if("object"!==(void 0===e?"undefined":r(e)))return n[e]=void 0===t?f:t,function(){m(e)};Object.keys(e).forEach(function(t){n[t]=e[t]})}function m(e){var t=l();delete t[e],0==Object.keys(t).length&&delete c()[s]}function v(e){var t=l(),n=Object.keys(e),r={};function o(){n.forEach(function(e){t[e]=r[e]})}return function(i){n.forEach(function(n){r[n]=t[n],t[n]=e[n]});var a=i();return a&&"function"==typeof a.then?a.then(o).catch(o):o(),a}}!function(){function e(e,t){Object.defineProperty(d,e,{value:t,enumerable:!1,configurable:!0})}e("__get__",p),e("__GetDependency__",p),e("__Rewire__",h),e("__set__",h),e("__reset__",m),e("__ResetDependency__",m),e("__with__",v)}();var y=void 0===i?"undefined":r(i);function g(e,t){Object.defineProperty(i,e,{value:t,enumerable:!1,configurable:!0})}"object"!==y&&"function"!==y||!Object.isExtensible(i)||(g("__get__",p),g("__GetDependency__",p),g("__Rewire__",h),g("__set__",h),g("__reset__",m),g("__ResetDependency__",m),g("__with__",v),g("__RewireAPI__",d)),t.__get__=p,t.__GetDependency__=p,t.__Rewire__=h,t.__set__=h,t.__ResetDependency__=m,t.__RewireAPI__=d}).call(t,n(3))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.__RewireAPI__=t.__ResetDependency__=t.__set__=t.__Rewire__=t.__GetDependency__=t.__get__=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(60);var i=function(e){return function(t){return function(t){return function(n){if(n.type!==p("CALL_HISTORY_METHOD"))return t(n);var r=n.payload,o=r.method,i=r.args;e[o].apply(e,function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(i))}}}};function a(){try{if(e)return e}catch(e){try{if(window)return window}catch(e){return this}}}t.default=p("routerMiddleware");var u=null;function s(){if(null===u){var e=a();e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__||(e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__=0),u=__$$GLOBAL_REWIRE_NEXT_MODULE_ID__++}return u}function c(){var e=a();return e.__$$GLOBAL_REWIRE_REGISTRY__||(e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)),__$$GLOBAL_REWIRE_REGISTRY__}function l(){var e=s(),t=c(),n=t[e];return n||(t[e]=Object.create(null),n=t[e]),n}!function(){var e=a();e.__rewire_reset_all__||(e.__rewire_reset_all__=function(){e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)})}();var f="__INTENTIONAL_UNDEFINED__",d={};function p(e){var t=l();if(void 0===t[e])return function(e){switch(e){case"CALL_HISTORY_METHOD":return o.CALL_HISTORY_METHOD;case"routerMiddleware":return i}return}(e);var n=t[e];return n===f?void 0:n}function h(e,t){var n=l();if("object"!==(void 0===e?"undefined":r(e)))return n[e]=void 0===t?f:t,function(){m(e)};Object.keys(e).forEach(function(t){n[t]=e[t]})}function m(e){var t=l();delete t[e],0==Object.keys(t).length&&delete c()[s]}function v(e){var t=l(),n=Object.keys(e),r={};function o(){n.forEach(function(e){t[e]=r[e]})}return function(i){n.forEach(function(n){r[n]=t[n],t[n]=e[n]});var a=i();return a&&"function"==typeof a.then?a.then(o).catch(o):o(),a}}!function(){function e(e,t){Object.defineProperty(d,e,{value:t,enumerable:!1,configurable:!0})}e("__get__",p),e("__GetDependency__",p),e("__Rewire__",h),e("__set__",h),e("__reset__",m),e("__ResetDependency__",m),e("__with__",v)}();var y=void 0===i?"undefined":r(i);function g(e,t){Object.defineProperty(i,e,{value:t,enumerable:!1,configurable:!0})}"object"!==y&&"function"!==y||!Object.isExtensible(i)||(g("__get__",p),g("__GetDependency__",p),g("__Rewire__",h),g("__set__",h),g("__reset__",m),g("__ResetDependency__",m),g("__with__",v),g("__RewireAPI__",d)),t.__get__=p,t.__GetDependency__=p,t.__Rewire__=h,t.__set__=h,t.__ResetDependency__=m,t.__RewireAPI__=d}).call(t,n(3))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.__RewireAPI__=t.__ResetDependency__=t.__set__=t.__Rewire__=t.__GetDependency__=t.__get__=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(86),i=function(e){var t=e.getIn,n=e.toJS,r=function(e){return n(t(e,["router","location"]))};return{getLocation:r,getAction:function(e){return n(t(e,["router","action"]))},createMatchSelector:function(e){var t=null,n=null;return function(o){var i=(r(o)||{}).pathname;if(i===t)return n;t=i;var a=p("matchPath")(i,e);return a&&n&&a.url===n.url||(n=a),n}}}};function a(){try{if(e)return e}catch(e){try{if(window)return window}catch(e){return this}}}t.default=p("createSelectors");var u=null;function s(){if(null===u){var e=a();e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__||(e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__=0),u=__$$GLOBAL_REWIRE_NEXT_MODULE_ID__++}return u}function c(){var e=a();return e.__$$GLOBAL_REWIRE_REGISTRY__||(e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)),__$$GLOBAL_REWIRE_REGISTRY__}function l(){var e=s(),t=c(),n=t[e];return n||(t[e]=Object.create(null),n=t[e]),n}!function(){var e=a();e.__rewire_reset_all__||(e.__rewire_reset_all__=function(){e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)})}();var f="__INTENTIONAL_UNDEFINED__",d={};function p(e){var t=l();if(void 0===t[e])return function(e){switch(e){case"matchPath":return o.matchPath;case"createSelectors":return i}return}(e);var n=t[e];return n===f?void 0:n}function h(e,t){var n=l();if("object"!==(void 0===e?"undefined":r(e)))return n[e]=void 0===t?f:t,function(){m(e)};Object.keys(e).forEach(function(t){n[t]=e[t]})}function m(e){var t=l();delete t[e],0==Object.keys(t).length&&delete c()[s]}function v(e){var t=l(),n=Object.keys(e),r={};function o(){n.forEach(function(e){t[e]=r[e]})}return function(i){n.forEach(function(n){r[n]=t[n],t[n]=e[n]});var a=i();return a&&"function"==typeof a.then?a.then(o).catch(o):o(),a}}!function(){function e(e,t){Object.defineProperty(d,e,{value:t,enumerable:!1,configurable:!0})}e("__get__",p),e("__GetDependency__",p),e("__Rewire__",h),e("__set__",h),e("__reset__",m),e("__ResetDependency__",m),e("__with__",v)}();var y=void 0===i?"undefined":r(i);function g(e,t){Object.defineProperty(i,e,{value:t,enumerable:!1,configurable:!0})}"object"!==y&&"function"!==y||!Object.isExtensible(i)||(g("__get__",p),g("__GetDependency__",p),g("__Rewire__",h),g("__set__",h),g("__reset__",m),g("__ResetDependency__",m),g("__with__",v),g("__RewireAPI__",d)),t.__get__=p,t.__GetDependency__=p,t.__Rewire__=h,t.__set__=h,t.__ResetDependency__=m,t.__RewireAPI__=d}).call(t,n(3))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.__RewireAPI__=t.__ResetDependency__=t.__set__=t.__Rewire__=t.__GetDependency__=t.__get__=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=u(n(285)),a=u(n(286));function u(e){return e&&e.__esModule?e:{default:e}}var s={filterNotRouter:function(e){e.router;return function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["router"])},fromJS:function(e){return e},getIn:v("getIn"),merge:function(e,t){return o({},e,t)},setIn:v("setIn"),toJS:function(e){return e}};function c(){try{if(e)return e}catch(e){try{if(window)return window}catch(e){return this}}}t.default=v("structure");var l=null;function f(){if(null===l){var e=c();e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__||(e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__=0),l=__$$GLOBAL_REWIRE_NEXT_MODULE_ID__++}return l}function d(){var e=c();return e.__$$GLOBAL_REWIRE_REGISTRY__||(e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)),__$$GLOBAL_REWIRE_REGISTRY__}function p(){var e=f(),t=d(),n=t[e];return n||(t[e]=Object.create(null),n=t[e]),n}!function(){var e=c();e.__rewire_reset_all__||(e.__rewire_reset_all__=function(){e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)})}();var h="__INTENTIONAL_UNDEFINED__",m={};function v(e){var t=p();if(void 0===t[e])return function(e){switch(e){case"getIn":return i.default;case"setIn":return a.default;case"structure":return s}return}(e);var n=t[e];return n===h?void 0:n}function y(e,t){var n=p();if("object"!==(void 0===e?"undefined":r(e)))return n[e]=void 0===t?h:t,function(){g(e)};Object.keys(e).forEach(function(t){n[t]=e[t]})}function g(e){var t=p();delete t[e],0==Object.keys(t).length&&delete d()[f]}function _(e){var t=p(),n=Object.keys(e),r={};function o(){n.forEach(function(e){t[e]=r[e]})}return function(i){n.forEach(function(n){r[n]=t[n],t[n]=e[n]});var a=i();return a&&"function"==typeof a.then?a.then(o).catch(o):o(),a}}!function(){function e(e,t){Object.defineProperty(m,e,{value:t,enumerable:!1,configurable:!0})}e("__get__",v),e("__GetDependency__",v),e("__Rewire__",y),e("__set__",y),e("__reset__",g),e("__ResetDependency__",g),e("__with__",_)}();var b=void 0===s?"undefined":r(s);function w(e,t){Object.defineProperty(s,e,{value:t,enumerable:!1,configurable:!0})}"object"!==b&&"function"!==b||!Object.isExtensible(s)||(w("__get__",v),w("__GetDependency__",v),w("__Rewire__",y),w("__set__",y),w("__reset__",g),w("__ResetDependency__",g),w("__with__",_),w("__RewireAPI__",m)),t.__get__=v,t.__GetDependency__=v,t.__Rewire__=y,t.__set__=y,t.__ResetDependency__=g,t.__RewireAPI__=m}).call(t,n(3))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(e,t){if(!e)return e;var n=t.length;if(n){for(var r=e,o=0;o<n&&r;++o)r=r[t[o]];return r}};function o(){try{if(e)return e}catch(e){try{if(window)return window}catch(e){return this}}}t.default=f("getIn");var i=null;function a(){if(null===i){var e=o();e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__||(e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__=0),i=__$$GLOBAL_REWIRE_NEXT_MODULE_ID__++}return i}function u(){var e=o();return e.__$$GLOBAL_REWIRE_REGISTRY__||(e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)),__$$GLOBAL_REWIRE_REGISTRY__}function s(){var e=a(),t=u(),n=t[e];return n||(t[e]=Object.create(null),n=t[e]),n}!function(){var e=o();e.__rewire_reset_all__||(e.__rewire_reset_all__=function(){e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)})}();var c="__INTENTIONAL_UNDEFINED__",l={};function f(e){var t=s();if(void 0===t[e])return function(e){switch(e){case"getIn":return r}return}(e);var n=t[e];return n===c?void 0:n}function d(e,t){var r=s();if("object"!==(void 0===e?"undefined":n(e)))return r[e]=void 0===t?c:t,function(){p(e)};Object.keys(e).forEach(function(t){r[t]=e[t]})}function p(e){var t=s();delete t[e],0==Object.keys(t).length&&delete u()[a]}function h(e){var t=s(),n=Object.keys(e),r={};function o(){n.forEach(function(e){t[e]=r[e]})}return function(i){n.forEach(function(n){r[n]=t[n],t[n]=e[n]});var a=i();return a&&"function"==typeof a.then?a.then(o).catch(o):o(),a}}!function(){function e(e,t){Object.defineProperty(l,e,{value:t,enumerable:!1,configurable:!0})}e("__get__",f),e("__GetDependency__",f),e("__Rewire__",d),e("__set__",d),e("__reset__",p),e("__ResetDependency__",p),e("__with__",h)}();var m=void 0===r?"undefined":n(r);function v(e,t){Object.defineProperty(r,e,{value:t,enumerable:!1,configurable:!0})}"object"!==m&&"function"!==m||!Object.isExtensible(r)||(v("__get__",f),v("__GetDependency__",f),v("__Rewire__",d),v("__set__",d),v("__reset__",p),v("__ResetDependency__",p),v("__with__",h),v("__RewireAPI__",l)),t.__get__=f,t.__GetDependency__=f,t.__Rewire__=d,t.__set__=d,t.__ResetDependency__=p,t.__RewireAPI__=l}).call(t,n(3))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};var o=function(e,t,n,o){if(o>=n.length)return t;var i=n[o],a=p("setInWithPath")(e&&e[i],t,n,o+1);if(!e){var u=isNaN(i)?{}:[];return u[i]=a,u}if(Array.isArray(e)){var s=[].concat(e);return s[i]=a,s}return r({},e,function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},i,a))},i=function(e,t,n){return p("setInWithPath")(e,n,t,0)};function a(){try{if(e)return e}catch(e){try{if(window)return window}catch(e){return this}}}t.default=p("setIn");var u=null;function s(){if(null===u){var e=a();e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__||(e.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__=0),u=__$$GLOBAL_REWIRE_NEXT_MODULE_ID__++}return u}function c(){var e=a();return e.__$$GLOBAL_REWIRE_REGISTRY__||(e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)),__$$GLOBAL_REWIRE_REGISTRY__}function l(){var e=s(),t=c(),n=t[e];return n||(t[e]=Object.create(null),n=t[e]),n}!function(){var e=a();e.__rewire_reset_all__||(e.__rewire_reset_all__=function(){e.__$$GLOBAL_REWIRE_REGISTRY__=Object.create(null)})}();var f="__INTENTIONAL_UNDEFINED__",d={};function p(e){var t=l();if(void 0===t[e])return function(e){switch(e){case"setInWithPath":return o;case"setIn":return i}return}(e);var n=t[e];return n===f?void 0:n}function h(e,t){var r=l();if("object"!==(void 0===e?"undefined":n(e)))return r[e]=void 0===t?f:t,function(){m(e)};Object.keys(e).forEach(function(t){r[t]=e[t]})}function m(e){var t=l();delete t[e],0==Object.keys(t).length&&delete c()[s]}function v(e){var t=l(),n=Object.keys(e),r={};function o(){n.forEach(function(e){t[e]=r[e]})}return function(i){n.forEach(function(n){r[n]=t[n],t[n]=e[n]});var a=i();return a&&"function"==typeof a.then?a.then(o).catch(o):o(),a}}!function(){function e(e,t){Object.defineProperty(d,e,{value:t,enumerable:!1,configurable:!0})}e("__get__",p),e("__GetDependency__",p),e("__Rewire__",h),e("__set__",h),e("__reset__",m),e("__ResetDependency__",m),e("__with__",v)}();var y=void 0===i?"undefined":n(i);function g(e,t){Object.defineProperty(i,e,{value:t,enumerable:!1,configurable:!0})}"object"!==y&&"function"!==y||!Object.isExtensible(i)||(g("__get__",p),g("__GetDependency__",p),g("__Rewire__",h),g("__set__",h),g("__reset__",m),g("__ResetDependency__",m),g("__with__",v),g("__RewireAPI__",d)),t.__get__=p,t.__GetDependency__=p,t.__Rewire__=h,t.__set__=h,t.__ResetDependency__=m,t.__RewireAPI__=d}).call(t,n(3))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(90)),o=(n(144),n(292));n(315);t.default=(0,o.connect)(function(e){return{auth:e.auth,isAuthenticated:e.auth.isAuthenticated}},function(e){return{}})(function(e){return e.isAuthenticated||"0.0.0.0"===window.location.hostname?function(e){return r.default.createElement("header",{className:"navbar"},r.default.createElement("section",{className:"navbar-section first-navbar-section"},r.default.createElement("a",{href:"/"},r.default.createElement("img",{className:"menuToggle",alt:"logo",src:"/static/vframe-logo.png"})),r.default.createElement("a",{href:"/",className:"vcat-btn"},r.default.createElement("b",null,"VCAT")),r.default.createElement("a",{href:"/categories/"},"Categories"),r.default.createElement("a",{href:"/images/new/"},"Upload"),r.default.createElement("a",{href:"/search/"},"Search")),r.default.createElement("section",{className:"navbar-section last-navbar-section"},r.default.createElement("a",{href:"/stats/hierarchy.html",className:""},"Stats"),r.default.createElement("a",{href:"/help/"},"Help"),r.default.createElement("span",{className:"login-btn logged-in capitalize"},e.auth.user.username,r.default.createElement("a",{href:"/accounts/logout/"},"Logout")),r.default.createElement("a",{href:"/groups/user/"},"My Assignments")))}(e):r.default.createElement("header",{className:"navbar"},r.default.createElement("section",{className:"navbar-section"},r.default.createElement("a",{href:"/"},r.default.createElement("img",{className:"menuToggle",alt:"logo",src:"/static/vframe-logo.png"})),r.default.createElement("a",{href:"/",className:"vcat-btn"},r.default.createElement("b",null,"VCAT"))),r.default.createElement("section",{className:"navbar-section last-navbar-section"},r.default.createElement("span",{className:""},r.default.createElement("a",{href:"/accounts/login",className:""},"Login"))))})},function(e,t,n){"use strict";
+/** @license React v16.5.2
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var r=n(289),o="function"==typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,u=o?Symbol.for("react.fragment"):60107,s=o?Symbol.for("react.strict_mode"):60108,c=o?Symbol.for("react.profiler"):60114,l=o?Symbol.for("react.provider"):60109,f=o?Symbol.for("react.context"):60110,d=o?Symbol.for("react.async_mode"):60111,p=o?Symbol.for("react.forward_ref"):60112;o&&Symbol.for("react.placeholder");var h="function"==typeof Symbol&&Symbol.iterator;function m(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=0;r<t;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);!function(e,t,n,r,o,i,a,u){if(!e){if(e=void 0,void 0===t)e=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,i,a,u],c=0;(e=Error(t.replace(/%s/g,function(){return s[c++]}))).name="Invariant Violation"}throw e.framesToPop=1,e}}(!1,"Minified React error #"+e+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",n)}var v={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y={};function g(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||v}function _(){}function b(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||v}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){"object"!=typeof e&&"function"!=typeof e&&null!=e&&m("85"),this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},_.prototype=g.prototype;var w=b.prototype=new _;w.constructor=b,r(w,g.prototype),w.isPureReactComponent=!0;var x={current:null,currentDispatcher:null},E=Object.prototype.hasOwnProperty,O={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r=void 0,o={},a=null,u=null;if(null!=t)for(r in void 0!==t.ref&&(u=t.ref),void 0!==t.key&&(a=""+t.key),t)E.call(t,r)&&!O.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var c=Array(s),l=0;l<s;l++)c[l]=arguments[l+2];o.children=c}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:i,type:e,key:a,ref:u,props:o,_owner:x.current}}function T(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var k=/\/+/g,R=[];function j(e,t,n,r){if(R.length){var o=R.pop();return o.result=e,o.keyPrefix=t,o.func=n,o.context=r,o.count=0,o}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function P(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>R.length&&R.push(e)}function C(e,t,n){return null==e?0:function e(t,n,r,o){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var s=!1;if(null===t)s=!0;else switch(u){case"string":case"number":s=!0;break;case"object":switch(t.$$typeof){case i:case a:s=!0}}if(s)return r(o,t,""===n?"."+M(t,0):n),1;if(s=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c<t.length;c++){var l=n+M(u=t[c],c);s+=e(u,l,r,o)}else if(l=null===t||"object"!=typeof t?null:"function"==typeof(l=h&&t[h]||t["@@iterator"])?l:null,"function"==typeof l)for(t=l.call(t),c=0;!(u=t.next()).done;)s+=e(u=u.value,l=n+M(u,c++),r,o);else"object"===u&&m("31","[object Object]"==(r=""+t)?"object with keys {"+Object.keys(t).join(", ")+"}":r,"");return s}(e,"",t,n)}function M(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})}(e.key):t.toString(36)}function I(e,t){e.func.call(e.context,t,e.count++)}function A(e,t,n){var r=e.result,o=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?D(e,r,n,function(e){return e}):null!=e&&(T(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,o+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(k,"$&/")+"/")+n)),r.push(e))}function D(e,t,n,r,o){var i="";null!=n&&(i=(""+n).replace(k,"$&/")+"/"),C(e,A,t=j(t,i,r,o)),P(t)}var N={Children:{map:function(e,t,n){if(null==e)return e;var r=[];return D(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;C(e,I,t=j(null,null,t,n)),P(t)},count:function(e){return C(e,function(){return null},null)},toArray:function(e){var t=[];return D(e,t,null,function(e){return e}),t},only:function(e){return T(e)||m("143"),e}},createRef:function(){return{current:null}},Component:g,PureComponent:b,createContext:function(e,t){return void 0===t&&(t=null),(e={$$typeof:f,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,Provider:null,Consumer:null,unstable_read:null}).Provider={$$typeof:l,_context:e},e.Consumer=e,e.unstable_read=function(e,t){var n=x.currentDispatcher;return null===n&&m("277"),n.readContext(e,t)}.bind(null,e),e},forwardRef:function(e){return{$$typeof:p,render:e}},Fragment:u,StrictMode:s,unstable_AsyncMode:d,unstable_Profiler:c,createElement:S,cloneElement:function(e,t,n){(null===e||void 0===e)&&m("267",e);var o=void 0,a=r({},e.props),u=e.key,s=e.ref,c=e._owner;if(null!=t){void 0!==t.ref&&(s=t.ref,c=x.current),void 0!==t.key&&(u=""+t.key);var l=void 0;for(o in e.type&&e.type.defaultProps&&(l=e.type.defaultProps),t)E.call(t,o)&&!O.hasOwnProperty(o)&&(a[o]=void 0===t[o]&&void 0!==l?l[o]:t[o])}if(1===(o=arguments.length-2))a.children=n;else if(1<o){l=Array(o);for(var f=0;f<o;f++)l[f]=arguments[f+2];a.children=l}return{$$typeof:i,type:e.type,key:u,ref:s,props:a,_owner:c}},createFactory:function(e){var t=S.bind(null,e);return t.type=e,t},isValidElement:T,version:"16.5.2",__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentOwner:x,assign:r}},L={default:N},U=L&&N||L;e.exports=U.default||U},function(e,t,n){"use strict";
+/*
+object-assign
+(c) Sindre Sorhus
+@license MIT
+*/var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,a,u=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var c in n=Object(arguments[s]))o.call(n,c)&&(u[c]=n[c]);if(r){a=r(n);for(var l=0;l<a.length;l++)i.call(n,a[l])&&(u[a[l]]=n[a[l]])}}return u}},function(e,t,n){"use strict";(function(e,r){var o,i=n(291);o="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==e?e:r;var a=Object(i.a)(o);t.a=a}).call(t,n(3),n(119)(e))},function(e,t,n){"use strict";t.a=function(e){var t,n=e.Symbol;"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable";return t}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(293),o=n(147),i=n(299);n.d(t,"Provider",function(){return r.b}),n.d(t,"createProvider",function(){return r.a}),n.d(t,"connectAdvanced",function(){return o.a}),n.d(t,"connect",function(){return i.a})},function(e,t,n){"use strict";t.a=u;var r=n(90),o=(n.n(r),n(145)),i=n.n(o),a=n(146);n(91);function u(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"store",n=arguments[1]||t+"Subscription",o=function(e){function o(n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o);var i=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,n,r));return i[t]=n.store,i}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(o,e),o.prototype.getChildContext=function(){var e;return(e={})[t]=this[t],e[n]=null,e},o.prototype.render=function(){return r.Children.only(this.props.children)},o}(r.Component);return o.propTypes={store:a.a.isRequired,children:i.a.element.isRequired},o.childContextTypes=((e={})[t]=a.a.isRequired,e[n]=a.b,e),o}t.b=u()},function(e,t,n){"use strict";var r=n(295);function o(){}e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var u=new Error("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");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return n.checkPropTypes=o,n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";var r={childContextTypes:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i=Object.defineProperty,a=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols,s=Object.getOwnPropertyDescriptor,c=Object.getPrototypeOf,l=c&&c(Object);e.exports=function e(t,n,f){if("string"!=typeof n){if(l){var d=c(n);d&&d!==l&&e(t,d,f)}var p=a(n);u&&(p=p.concat(u(n)));for(var h=0;h<p.length;++h){var m=p[h];if(!(r[m]||o[m]||f&&f[m])){var v=s(n,m);try{i(t,m,v)}catch(e){}}}return t}return t}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,i,a,u){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,i,a,u],l=0;(s=new Error(t.replace(/%s/g,function(){return c[l++]}))).name="Invariant Violation"}throw s.framesToPop=1,s}}},function(e,t,n){"use strict";n.d(t,"a",function(){return i});var r=null,o={notify:function(){}};var i=function(){function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.store=t,this.parentSub=n,this.onStateChange=r,this.unsubscribe=null,this.listeners=o}return e.prototype.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},e.prototype.notifyNestedSubs=function(){this.listeners.notify()},e.prototype.isSubscribed=function(){return Boolean(this.unsubscribe)},e.prototype.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.onStateChange):this.store.subscribe(this.onStateChange),this.listeners=function(){var e=[],t=[];return{clear:function(){t=r,e=r},notify:function(){for(var n=e=t,r=0;r<n.length;r++)n[r]()},get:function(){return t},subscribe:function(n){var o=!0;return t===e&&(t=e.slice()),t.push(n),function(){o&&e!==r&&(o=!1,t===e&&(t=e.slice()),t.splice(t.indexOf(n),1))}}}}())},e.prototype.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=o)},e}()},function(e,t,n){"use strict";var r=n(147),o=n(300),i=n(301),a=n(311),u=n(312),s=n(313),c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function l(e,t,n){for(var r=t.length-1;r>=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function f(e,t){return e===t}t.a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.connectHOC,n=void 0===t?r.a:t,d=e.mapStateToPropsFactories,p=void 0===d?a.a:d,h=e.mapDispatchToPropsFactories,m=void 0===h?i.a:h,v=e.mergePropsFactories,y=void 0===v?u.a:v,g=e.selectorFactory,_=void 0===g?s.a:g;return function(e,t,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=i.pure,u=void 0===a||a,s=i.areStatesEqual,d=void 0===s?f:s,h=i.areOwnPropsEqual,v=void 0===h?o.a:h,g=i.areStatePropsEqual,b=void 0===g?o.a:g,w=i.areMergedPropsEqual,x=void 0===w?o.a:w,E=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(i,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),O=l(e,p,"mapStateToProps"),S=l(t,m,"mapDispatchToProps"),T=l(r,y,"mergeProps");return n(_,c({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:O,initMapDispatchToProps:S,initMergeProps:T,pure:u,areStatesEqual:d,areOwnPropsEqual:v,areStatePropsEqual:b,areMergedPropsEqual:x},E))}}()},function(e,t,n){"use strict";t.a=function(e,t){if(o(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(var a=0;a<n.length;a++)if(!r.call(t,n[a])||!o(e[n[a]],t[n[a]]))return!1;return!0};var r=Object.prototype.hasOwnProperty;function o(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var r=n(144),o=n(148);t.a=[function(e){return"function"==typeof e?Object(o.b)(e,"mapDispatchToProps"):void 0},function(e){return e?void 0:Object(o.a)(function(e){return{dispatch:e}})},function(e){return e&&"object"==typeof e?Object(o.a)(function(t){return Object(r.bindActionCreators)(e,t)}):void 0}]},function(e,t,n){"use strict";var r=n(303),o=n(308),i=n(310),a="[object Object]",u=Function.prototype,s=Object.prototype,c=u.toString,l=s.hasOwnProperty,f=c.call(Object);t.a=function(e){if(!Object(i.a)(e)||Object(r.a)(e)!=a)return!1;var t=Object(o.a)(e);if(null===t)return!0;var n=l.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==f}},function(e,t,n){"use strict";var r=n(150),o=n(306),i=n(307),a="[object Null]",u="[object Undefined]",s=r.a?r.a.toStringTag:void 0;t.a=function(e){return null==e?void 0===e?u:a:s&&s in Object(e)?Object(o.a)(e):Object(i.a)(e)}},function(e,t,n){"use strict";var r=n(305),o="object"==typeof self&&self&&self.Object===Object&&self,i=r.a||o||Function("return this")();t.a=i},function(e,t,n){"use strict";(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.a=n}).call(t,n(3))},function(e,t,n){"use strict";var r=n(150),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,u=r.a?r.a.toStringTag:void 0;t.a=function(e){var t=i.call(e,u),n=e[u];try{e[u]=void 0;var r=!0}catch(e){}var o=a.call(e);return r&&(t?e[u]=n:delete e[u]),o}},function(e,t,n){"use strict";var r=Object.prototype.toString;t.a=function(e){return r.call(e)}},function(e,t,n){"use strict";var r=n(309),o=Object(r.a)(Object.getPrototypeOf,Object);t.a=o},function(e,t,n){"use strict";t.a=function(e,t){return function(n){return e(t(n))}}},function(e,t,n){"use strict";t.a=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";var r=n(148);t.a=[function(e){return"function"==typeof e?Object(r.b)(e,"mapStateToProps"):void 0},function(e){return e?void 0:Object(r.a)(function(){return{}})}]},function(e,t,n){"use strict";n(149);var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function o(e,t,n){return r({},n,e,t)}t.a=[function(e){return"function"==typeof e?function(e){return function(t,n){n.displayName;var r=n.pure,o=n.areMergedPropsEqual,i=!1,a=void 0;return function(t,n,u){var s=e(t,n,u);return i?r&&o(s,a)||(a=s):(i=!0,a=s),a}}}(e):void 0},function(e){return e?void 0:function(){return o}}]},function(e,t,n){"use strict";t.a=function(e,t){var n=t.initMapStateToProps,i=t.initMapDispatchToProps,a=t.initMergeProps,u=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(t,["initMapStateToProps","initMapDispatchToProps","initMergeProps"]),s=n(e,u),c=i(e,u),l=a(e,u);0;return(u.pure?o:r)(s,c,l,e,u)};n(314);function r(e,t,n,r){return function(o,i){return n(e(o,i),t(r,i),i)}}function o(e,t,n,r,o){var i=o.areStatesEqual,a=o.areOwnPropsEqual,u=o.areStatePropsEqual,s=!1,c=void 0,l=void 0,f=void 0,d=void 0,p=void 0;function h(o,s){var h=!a(s,l),m=!i(o,c);return c=o,l=s,h&&m?(f=e(c,l),t.dependsOnOwnProps&&(d=t(r,l)),p=n(f,d,l)):h?(e.dependsOnOwnProps&&(f=e(c,l)),t.dependsOnOwnProps&&(d=t(r,l)),p=n(f,d,l)):m?function(){var t=e(c,l),r=!u(t,f);return f=t,r&&(p=n(f,d,l)),p}():p}return function(o,i){return s?h(o,i):function(o,i){return f=e(c=o,l=i),d=t(r,l),p=n(f,d,l),s=!0,p}(o,i)}}},function(e,t,n){"use strict";n(91)},function(e,t,n){var r=n(316);"string"==typeof r&&(r=[[e.i,r,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(49)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(48)(!1)).push([e.i,".navbar {\n height: 50px;\n color:#aaa;\n font-size: 14px;\n}\n.navbar b {\n font-weight: 900;\n}\n.navbar {\n background: #11F;\n color: white;\n font-family: 'Helvetica', sans-serif;\n}\n.navbar a {\n color: rgba(255,255,255,0.89);\n text-decoration: none;\n line-height: 18px;\n font-size: 14px;\n font-weight: 500;\n}\n.navbar section.first-navbar-section * {\n font-weight: bold;\n}\n.navbar section.first-navbar-section > * {\n padding: 5px 8px 5px 8px;\n}\n.navbar section > * {\n padding: 5px 5px;\n}\n.navbar section.first-navbar-section > .vcat-btn {\n font-size: 16px;\n padding-left: 0;\n}\n.navbar .btn-link:focus,\n.navbar .btn-link:hover,\n.navbar .btn-link:active,\n.navbar a:focus,\n.navbar a:hover,\n.navbar a:active {\n text-decoration: none;\n color: white;\n}\n.menubar a:focus,\n.menubar a:hover,\n.menubar a:active {\n color: white;\n}\n.menuToggle {\n width: 26px;\n height: 26px;\n cursor: pointer;\n margin: 0 0 0 5px;\n line-height: 1;\n}\n.navbar a.navbar-brand {\n font-size: .8rem;\n}\n\n.navbar .last-navbar-section {\n padding-right: 8px;\n}\n.navbar .logout {\n padding: 0 .25rem;\n}\n.navbar .logged-in {\n border-left: 1px solid #99f;\n margin-left: .25rem;\n padding: .25rem .25rem .25rem .75rem;\n user-select: none;\n text-transform: capitalize;\n color: rgba(255,255,255,0.89);\n position: relative;\n min-width: 65px;\n}\n.navbar .logged-in a {\n position: absolute;\n top: 0; left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n background: #11f;\n opacity: 0;\n transition: 0.1s all;\n}\n.navbar .logged-in:hover a {\n opacity: 1;\n}\n",""])},function(e,t){e.exports=function(e){var t="undefined"!=typeof window&&window.location;if(!t)throw new Error("fixUrls requires window.location");if(!e||"string"!=typeof e)return e;var n=t.protocol+"//"+t.host,r=n+t.pathname.replace(/\/[^\/]*$/,"/");return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(e,t){var o,i=t.trim().replace(/^"(.*)"$/,function(e,t){return t}).replace(/^'(.*)'$/,function(e,t){return t});return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(i)?e:(o=0===i.indexOf("//")?i:0===i.indexOf("/")?n+i:r+i.replace(/^\.\//,""),"url("+JSON.stringify(o)+")")})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.to,n=e.className,i=void 0===n?"navlink":n,a=e.children;return r.default.createElement("span",{className:i},r.default.createElement(o.NavLink,{to:t},a))};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(16)},function(e,t,n){"use strict";var r=n(151),o=n.n(r),i=n(1),a=n.n(i),u=n(12),s=n.n(u),c=n(27),l=n(92);function f(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var d=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=f(this,e.call.apply(e,[this].concat(i))),r.history=Object(c.createBrowserHistory)(r.props),f(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){o()(!this.props.history,"<BrowserRouter> ignores the history prop. To use a custom history, use `import { Router }` instead of `import { BrowserRouter as Router }`.")},t.prototype.render=function(){return a.a.createElement(l.a,{history:this.history,children:this.props.children})},t}(a.a.Component);d.propTypes={basename:s.a.string,forceRefresh:s.a.bool,getUserConfirmation:s.a.func,keyLength:s.a.number,children:s.a.node},t.a=d},function(e,t,n){"use strict";var r=n(151),o=n.n(r),i=n(1),a=n.n(i),u=n(12),s=n.n(u),c=n(27),l=n(92);function f(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var d=function(e){function t(){var n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return n=r=f(this,e.call.apply(e,[this].concat(i))),r.history=Object(c.createHashHistory)(r.props),f(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.componentWillMount=function(){o()(!this.props.history,"<HashRouter> ignores the history prop. To use a custom history, use `import { Router }` instead of `import { HashRouter as Router }`.")},t.prototype.render=function(){return a.a.createElement(l.a,{history:this.history,children:this.props.children})},t}(a.a.Component);d.propTypes={basename:s.a.string,getUserConfirmation:s.a.func,hashType:s.a.oneOf(["hashbang","noslash","slash"]),children:s.a.node},t.a=d},function(e,t,n){"use strict";var r=n(136);t.a=r.a},function(e,t,n){"use strict";var r=n(1),o=n.n(r),i=n(12),a=n.n(i),u=n(153),s=n(152),c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var f=function(e){var t=e.to,n=e.exact,r=e.strict,i=e.location,a=e.activeClassName,f=e.className,d=e.activeStyle,p=e.style,h=e.isActive,m=e["aria-current"],v=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["to","exact","strict","location","activeClassName","className","activeStyle","style","isActive","aria-current"]),y="object"===(void 0===t?"undefined":l(t))?t.pathname:t,g=y&&y.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1");return o.a.createElement(u.a,{path:g,exact:n,strict:r,location:i,children:function(e){var n=e.location,r=e.match,i=!!(h?h(r,n):r);return o.a.createElement(s.a,c({to:t,className:i?[f,a].filter(function(e){return e}).join(" "):f,style:i?c({},p,d):p,"aria-current":i&&m||null},v))}})};f.propTypes={to:s.a.propTypes.to,exact:a.a.bool,strict:a.a.bool,location:a.a.object,activeClassName:a.a.string,className:a.a.string,activeStyle:a.a.object,style:a.a.object,isActive:a.a.func,"aria-current":a.a.oneOf(["page","step","location","date","time","true"])},f.defaultProps={activeClassName:"active","aria-current":"page"},t.a=f},function(e,t,n){"use strict";var r=n(138);t.a=r.a},function(e,t,n){"use strict";var r=n(139);t.a=r.a},function(e,t,n){"use strict";var r=n(141);t.a=r.a},function(e,t,n){"use strict";var r=n(142);t.a=r.a},function(e,t,n){"use strict";var r=n(88);t.a=r.a},function(e,t,n){"use strict";var r=n(64);t.a=r.a},function(e,t,n){"use strict";var r=n(143);t.a=r.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(28)),o=p(n(5)),i=p(n(6)),a=p(n(7)),u=p(n(8)),s=p(n(9)),c=n(1),l=p(c),f=n(17),d=n(11);function p(e){return e&&e.__esModule?e:{default:e}}var h=function(e){function t(){return(0,i.default)(this,t),(0,u.default)(this,(t.__proto__||(0,o.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,a.default)(t,[{key:"render",value:function(){var e=this.props,t=e.tag,n=e.sha256,o=e.verified,i=e.keyframes,a=void 0===i?{}:i,u=e.labels,s=e.summary,c=e.aspectRatio,p=void 0===c?1.777:c,h=e.showAll,m=0,v=(0,r.default)(a).map(function(e){return parseInt(e,10)}),y=v.sort(function(e,t){return e-t}).map(function(e){var t=a[e];return t.length||h?(m+=t.length,{frame:e,detections:t}):null}).filter(function(e){return!!e}),g=y.reduce(function(e,t){return t.detections.reduce(function(e,t){var n=t.idx;return n in e||(e[n]=[u[n],0]),e[n][1]+=1,e},e),e},{}),_=(0,r.default)(g).map(function(e){return g[e]}).sort(function(e,t){return t[1]-e[1]});return s?l.default.createElement("div",null,l.default.createElement("h3",null,t," Detections"),l.default.createElement(d.TableTuples,{list:_})):l.default.createElement("div",null,l.default.createElement("h2",null,t),l.default.createElement("h3",null,"Detections"),l.default.createElement(d.TableTuples,{list:_}),l.default.createElement("h3",null,"Frames"),l.default.createElement("ul",{className:"meta"},l.default.createElement("li",null,"Displaying ",y.length," / ",(0,f.courtesyS)(v.length,"frame")),l.default.createElement("li",null,(0,f.courtesyS)(m,"detection")," found")),l.default.createElement("div",{className:"thumbnails"},y.map(function(e){var t=e.frame,r=e.detections;return l.default.createElement(d.Keyframe,{key:t,sha256:n,frame:t,verified:o,size:"th",showFrame:!0,showTimestamp:!0,aspectRatio:p,detectionList:[{labels:u,detections:r}]},l.default.createElement(d.DetectionList,{labels:u,detections:r,width:160,height:90}))})))}}]),t}(c.Component);t.default=h},function(e,t,n){n(332),e.exports=n(10).Object.keys},function(e,t,n){var r=n(41),o=n(45);n(124)("keys",function(){return function(e){return o(r(e))}})},function(e,t,n){var r=n(10),o=r.JSON||(r.JSON={stringify:JSON.stringify});e.exports=function(e){return o.stringify.apply(o,arguments)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.detections,n=e.width,i=e.height;return t.map(function(e,t){var a=e.rect;return a&&r.default.createElement("div",{className:"rect",key:t,style:{left:(0,o.px)(a[0],n),top:(0,o.px)(a[1],i),width:(0,o.px)(a[2]-a[0],n),height:(0,o.px)(a[3]-a[1],i)}})})};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(17)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.detections,n=e.labels,o=e.tag,i=e.showEmpty;return r.default.createElement("span",{className:"detectionList"},o&&r.default.createElement("h3",null,o),!t.length&&i&&r.default.createElement("label",null,r.default.createElement("small",null,"No detections")),t.map(function(e,t){var o=e.idx,i=e.score;e.rect;return r.default.createElement("label",{key:t},r.default.createElement("small",{className:"title"},(n[o]||"Unknown").replace(/_/," ")),r.default.createElement("small",null,i.toFixed(2)))}))};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return r.default.createElement("footer",null)};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1));n(16),n(2)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){return r.default.createElement("div",{className:"loaderWrapper"},r.default.createElement("div",{className:"loader"}))};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=d(n(5)),o=d(n(6)),i=d(n(7)),a=d(n(8)),u=d(n(9)),s=n(1),c=d(s),l=n(16),f=n(2);function d(e){return e&&e.__esModule?e:{default:e}}var p=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,u.default)(t,e),(0,i.default)(t,[{key:"render",value:function(){var e=this.props.hash;return e?c.default.createElement("div",{className:"sidebar"},c.default.createElement("h4",null,"Media"),c.default.createElement(l.NavLink,{to:"/metadata/"+e+"/summary/"},"Summary"),c.default.createElement(l.NavLink,{to:"/metadata/"+e+"/mediaRecord/"},"Media Record"),c.default.createElement(l.NavLink,{to:"/metadata/"+e+"/mediaInfo/"},"Media Info"),c.default.createElement(l.NavLink,{to:"/metadata/"+e+"/sugarcube/"},"Sugarcube"),c.default.createElement("h4",null,"Keyframes"),c.default.createElement(l.NavLink,{to:"/metadata/"+e+"/keyframe/"},"Keyframe"),c.default.createElement("h4",null,"Detectors"),c.default.createElement(l.NavLink,{to:"/metadata/"+e+"/places365/"},"Places 365"),c.default.createElement(l.NavLink,{to:"/metadata/"+e+"/coco/"},"Coco")):c.default.createElement("div",{className:"sidebar"})}}]),t}(s.Component);t.default=(0,f.connect)(function(e){return{hash:e.metadata.hash}})(p)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(4)),o=a(n(1)),i=n(2);function a(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.connect)(function(e){return{app:e.metadata}})(function(e){var t=e.app,n=e.tag,i=e.View,a=t[n];return a?"loading"===a?o.default.createElement("div",{className:"tableObject loading"},n,": Loading"):a.err?o.default.createElement("div",{className:"tableObject error"},n," Error: ",a.err):o.default.createElement(i,(0,r.default)({data:a},e)):null})},function(e,t,n){e.exports={default:n(341),__esModule:!0}},function(e,t,n){n(342),e.exports=n(10).Object.assign},function(e,t,n){var r=n(18);r(r.S+r.F,"Object",{assign:n(343)})},function(e,t,n){"use strict";var r=n(45),o=n(85),i=n(59),a=n(41),u=n(130),s=Object.assign;e.exports=!s||n(35)(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=s({},e)[n]||Object.keys(s({},t)).join("")!=r})?function(e,t){for(var n=a(e),s=arguments.length,c=1,l=o.f,f=i.f;s>c;)for(var d,p=u(arguments[c++]),h=l?r(p).concat(l(p)):r(p),m=h.length,v=0;m>v;)f.call(p,d=h[v++])&&(n[d]=p[d]);return n}:s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.verified,n=e.sha256,c=e.frame,l=e.score,f=e.isSaved,d=e.fps,p=void 0===d?25:d,h=e.size,m=void 0===h?"th":h,v=e.className,y=e.showHash,g=e.showFrame,_=e.showTimestamp,b=e.showScore,w=e.showSearchButton,x=e.showSaveButton,E=e.to,O=e.children,S=e.detectionList,T=void 0===S?[]:S,k=e.aspectRatio,R=void 0===k?1.777:k,j=e.onClick,P=e.reviewActions;if(!n)return null;var C=i.widths[m],M=Math.round(C/R);return r.default.createElement("div",{className:(v||"keyframe")+(f?" isSaved":"")},r.default.createElement("div",{className:"thumbnail"},r.default.createElement(s,{to:E||(0,i.keyframeUri)(n,c),onClick:j},r.default.createElement("img",{alt:"Frame #"+c,src:(0,i.imageUrl)(t,n,c,m),width:C,height:M,onClick:j}),T.map(function(e,t){var n=e.labels,o=e.detections;return r.default.createElement(a.DetectionBoxes,{key:t,labels:n,detections:o,width:C,height:M})})),P&&(w||x)&&r.default.createElement("label",{className:"searchButtons"},w&&r.default.createElement(o.Link,{to:u.publicUrl.searchByVerifiedFrame(t,n,c),className:"btn"},"Search"),x&&(f?r.default.createElement("button",{onClick:function(){return P.unsave({hash:n,frame:c,verified:t})},className:"btn btn-primary saved"},"Saved"):r.default.createElement("button",{onClick:function(){return P.save({hash:n,frame:c,verified:t})},className:"btn btn save"},"Save")))),(y||g||_||b)&&r.default.createElement("label",null,y&&r.default.createElement("small",null,r.default.createElement(o.Link,{to:u.publicUrl.browse(n)},r.default.createElement("span",{title:n,className:"sha256 "+(0,i.verify)(t)},"▶ ",n.substr(0,6)))),g&&r.default.createElement("small",null,r.default.createElement("span",null,"Frame #",c)),_&&r.default.createElement("small",null,(0,i.timestamp)(c,p)),b&&!!l&&r.default.createElement("small",null,l)),O)};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(16),i=n(17),a=n(11),u=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(21));var s=function(e){return e.onClick?e.children:e.to.match(/^http/)?r.default.createElement("a",{href:e.to,target:"_blank",rel:"noopener noreferrer"},e.children):r.default.createElement(o.Link,e)}},function(e,t,n){"use strict";function r(e){return function(t){var n=t.dispatch,r=t.getState;return function(t){return function(o){return"function"==typeof o?o(n,r,e):t(o)}}}}Object.defineProperty(t,"__esModule",{value:!0});var o=r();o.withExtraArgument=r,t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(65)),o=a(n(4));t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,t=arguments[1];switch(t.type){case i.metadata.set_hash:return e=(0,o.default)({},e,{hash:t.hash});case i.metadata.loading:return(0,o.default)({},e,(0,r.default)({},t.tag,"loading"));case i.metadata.loaded:return(0,o.default)({},e,(0,r.default)({},t.tag,t.data));case i.metadata.loaded_many:return t.data.reduce(function(e,t){return e[t.name]=t.data||"error",e},(0,o.default)({},e,(0,r.default)({},t.tag,"loaded")));case i.metadata.error:return(0,o.default)({},e,(0,r.default)({},t.tag,t.err));default:return e}};var i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(39));function a(e){return e&&e.__esModule?e:{default:e}}var u={}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(348)),o=s(n(65)),i=s(n(4));t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c(),t=arguments[1];switch(t.type){case a.search.loading:return"query"===t.tag&&t.offset?(0,i.default)({},e,{query:(0,i.default)({},e.query,{loadingMore:!0})}):(0,i.default)({},e,(0,o.default)({},t.tag,l[t.tag]||l.loading));case a.search.loaded:return"query"===t.tag&&t.offset?(0,i.default)({},e,{query:{query:t.data.query,results:[].concat((0,r.default)(e.query.results),(0,r.default)(t.data.results)),loadingMore:!1}}):(0,i.default)({},e,(0,o.default)({},t.tag,t.data));case a.search.error:return(0,i.default)({},e,(0,o.default)({},t.tag,{error:t.err}));case a.search.panic:return(0,i.default)({},c());case a.search.update_options:return u.default.setAll(t.opt),(0,i.default)({},e,{options:(0,i.default)({},t.opt)});default:return e}};var a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(39)),u=s(n(158));function s(e){return e&&e.__esModule?e:{default:e}}var c=function(){return{query:{reset:!0},browse:{reset:!0},options:{thumbnailSize:(0,u.default)("thumbnailSize")||"th",perPage:parseInt((0,u.default)("perPage"),10)||50,groupByHash:(0,u.default)("groupByHash")}}},l={query:{query:{loading:!0},results:[]},loading:{loading:!0}}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(154));t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return(0,r.default)(e)}},function(e,t,n){n(44),n(350),e.exports=n(10).Array.from},function(e,t,n){"use strict";var r=n(34),o=n(18),i=n(41),a=n(155),u=n(156),s=n(81),c=n(351),l=n(95);o(o.S+o.F*!n(157)(function(e){Array.from(e)}),"Array",{from:function(e){var t,n,o,f,d=i(e),p="function"==typeof this?this:Array,h=arguments.length,m=h>1?arguments[1]:void 0,v=void 0!==m,y=0,g=l(d);if(v&&(m=r(m,h>2?arguments[2]:void 0,2)),void 0==g||p==Array&&u(g))for(n=new p(t=s(d.length));t>y;y++)c(n,y,v?m(d[y],y):d[y]);else for(f=g.call(d),n=new p;!(o=f.next()).done;y++)c(n,y,v?a(f,m,[o.value,y],!0):o.value);return n.length=y,n}})},function(e,t,n){"use strict";var r=n(22),o=n(43);e.exports=function(e,t,n){t in e?r.f(e,t,o(0,n)):e[t]=n}},function(e,t){!function(t,n){var r={version:"2.7.0",areas:{},apis:{},inherit:function(e,t){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n]);return t},stringify:function(e){return void 0===e||"function"==typeof e?e+"":JSON.stringify(e)},parse:function(e){try{return JSON.parse(e)}catch(t){return e}},fn:function(e,t){for(var n in r.storeAPI[e]=t,r.apis)r.apis[n][e]=t},get:function(e,t){return e.getItem(t)},set:function(e,t,n){e.setItem(t,n)},remove:function(e,t){e.removeItem(t)},key:function(e,t){return e.key(t)},length:function(e){return e.length},clear:function(e){e.clear()},Store:function(e,t,n){var o=r.inherit(r.storeAPI,function(e,t,n){return 0===arguments.length?o.getAll():"function"==typeof t?o.transact(e,t,n):void 0!==t?o.set(e,t,n):"string"==typeof e||"number"==typeof e?o.get(e):e?o.setAll(e,t):o.clear()});o._id=e;try{t.setItem("_safariPrivate_","sucks"),o._area=t,t.removeItem("_safariPrivate_")}catch(e){}return o._area||(o._area=r.inherit(r.storageAPI,{items:{},name:"fake"})),o._ns=n||"",r.areas[e]||(r.areas[e]=o._area),r.apis[o._ns+o._id]||(r.apis[o._ns+o._id]=o),o},storeAPI:{area:function(e,t){var n=this[e];return n&&n.area||(n=r.Store(e,t,this._ns),this[e]||(this[e]=n)),n},namespace:function(e,t){if(!e)return this._ns?this._ns.substring(0,this._ns.length-1):"";var n=e,o=this[n];return o&&o.namespace||(o=r.Store(this._id,this._area,this._ns+n+"."),this[n]||(this[n]=o),t||o.area("session",r.areas.session)),o},isFake:function(){return"fake"===this._area.name},toString:function(){return"store"+(this._ns?"."+this.namespace():"")+"["+this._id+"]"},has:function(e){return this._area.has?this._area.has(this._in(e)):!!(this._in(e)in this._area)},size:function(){return this.keys().length},each:function(e,t){for(var n=0,o=r.length(this._area);n<o;n++){var i=this._out(r.key(this._area,n));if(void 0!==i&&!1===e.call(this,i,t||this.get(i)))break;o>r.length(this._area)&&(o--,n--)}return t||this},keys:function(e){return this.each(function(e,t){t.push(e)},e||[])},get:function(e,t){var n=r.get(this._area,this._in(e));return null!==n?r.parse(n):t||n},getAll:function(e){return this.each(function(e,t){t[e]=this.get(e)},e||{})},transact:function(e,t,n){var r=this.get(e,n),o=t(r);return this.set(e,void 0===o?r:o),this},set:function(e,t,n){var o=this.get(e);return null!=o&&!1===n?t:r.set(this._area,this._in(e),r.stringify(t),n)||o},setAll:function(e,t){var n,r;for(var o in e)r=e[o],this.set(o,r,t)!==r&&(n=!0);return n},add:function(e,t){var n=this.get(e);if(n instanceof Array)t=n.concat(t);else if(null!==n){var o=typeof n;if(o===typeof t&&"object"===o){for(var i in t)n[i]=t[i];t=n}else t=n+t}return r.set(this._area,this._in(e),r.stringify(t)),t},remove:function(e){var t=this.get(e);return r.remove(this._area,this._in(e)),t},clear:function(){return this._ns?this.each(function(e){r.remove(this._area,this._in(e))},1):r.clear(this._area),this},clearAll:function(){var e=this._area;for(var t in r.areas)r.areas.hasOwnProperty(t)&&(this._area=r.areas[t],this.clear());return this._area=e,this},_in:function(e){return"string"!=typeof e&&(e=r.stringify(e)),this._ns?this._ns+e:e},_out:function(e){return this._ns?e&&0===e.indexOf(this._ns)?e.substring(this._ns.length):void 0:e}},storageAPI:{length:0,has:function(e){return this.items.hasOwnProperty(e)},key:function(e){var t=0;for(var n in this.items)if(this.has(n)&&e===t++)return n},setItem:function(e,t){this.has(e)||this.length++,this.items[e]=t},removeItem:function(e){this.has(e)&&(delete this.items[e],this.length--)},getItem:function(e){return this.has(e)?this.items[e]:null},clear:function(){for(var e in this.items)this.removeItem(e)},toString:function(){return this.length+" items in "+this.name+"Storage"}}},o=r.Store("local",function(){try{return localStorage}catch(e){}}());o.local=o,o._=r,o.area("session",function(){try{return sessionStorage}catch(e){}}()),"function"==typeof n&&void 0!==n.amd?n("store2",[],function(){return o}):void 0!==e&&e.exports?e.exports=o:(t.store&&(r.conflict=t.store),t.store=o)}(this,this.define)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(65)),o=s(n(4));t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l,t=arguments[1],n=t.saved;switch(t.type){case i.review.save:case i.review.unsave:case i.review.refresh:return a.setSaved(n),(0,o.default)({},e,{count:a.getSavedCount(n),saved:(0,o.default)({},n)});case i.review.clear:return a.setSaved({}),(0,o.default)({},e,{count:0,saved:{}});case i.review.dedupe:return(0,o.default)({},e,{deduped:t.deduped});case i.review.loading:return(0,o.default)({},e,(0,r.default)({},t.tag,{loading:!0}));case i.review.loaded:return(0,o.default)({},e,(0,r.default)({},t.tag,t.data||{}));case i.review.error:return(0,o.default)({},e,(0,r.default)({},t.tag,{error:t.err}));default:return e}};var i=u(n(39)),a=u(n(159));function u(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function s(e){return e&&e.__esModule?e:{default:e}}var c=a.getSaved(),l={saved:c,count:a.getSavedCount(c),deduped:!1,dedupe:{count:0},create:{}}},function(e,t,n){"use strict";const r=n(355),o=n(356);function i(e,t){return t.encode?t.strict?r(e):encodeURIComponent(e):e}function a(e,t){return t.decode?o(e):e}function u(e){const t=e.indexOf("?");return-1===t?"":e.slice(t+1)}function s(e,t){const n=function(e){let t;switch(e.arrayFormat){case"index":return(e,n,r)=>{t=/\[(\d*)\]$/.exec(e),e=e.replace(/\[\d*\]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return(e,n,r)=>{t=/(\[\])$/.exec(e),e=e.replace(/\[\]$/,""),t?void 0!==r[e]?r[e]=[].concat(r[e],n):r[e]=[n]:r[e]=n};default:return(e,t,n)=>{void 0!==n[e]?n[e]=[].concat(n[e],t):n[e]=t}}}(t=Object.assign({decode:!0,arrayFormat:"none"},t)),r=Object.create(null);if("string"!=typeof e)return r;if(!(e=e.trim().replace(/^[?#&]/,"")))return r;for(const o of e.split("&")){let[e,i]=o.replace(/\+/g," ").split("=");i=void 0===i?null:a(i,t),n(a(e,t),i,r)}return Object.keys(r).sort().reduce((e,t)=>{const n=r[t];return Boolean(n)&&"object"==typeof n&&!Array.isArray(n)?e[t]=function e(t){return Array.isArray(t)?t.sort():"object"==typeof t?e(Object.keys(t)).sort((e,t)=>Number(e)-Number(t)).map(e=>t[e]):t}(n):e[t]=n,e},Object.create(null))}t.extract=u,t.parse=s,t.stringify=((e,t)=>{if(!e)return"";const n=function(e){switch(e.arrayFormat){case"index":return(t,n,r)=>null===n?[i(t,e),"[",r,"]"].join(""):[i(t,e),"[",i(r,e),"]=",i(n,e)].join("");case"bracket":return(t,n)=>null===n?[i(t,e),"[]"].join(""):[i(t,e),"[]=",i(n,e)].join("");default:return(t,n)=>null===n?i(t,e):[i(t,e),"=",i(n,e)].join("")}}(t=Object.assign({encode:!0,strict:!0,arrayFormat:"none"},t)),r=Object.keys(e);return!1!==t.sort&&r.sort(t.sort),r.map(r=>{const o=e[r];if(void 0===o)return"";if(null===o)return i(r,t);if(Array.isArray(o)){const e=[];for(const t of o.slice())void 0!==t&&e.push(n(r,t,e.length));return e.join("&")}return i(r,t)+"="+i(o,t)}).filter(e=>e.length>0).join("&")}),t.parseUrl=((e,t)=>{const n=e.indexOf("#");return-1!==n&&(e=e.slice(0,n)),{url:e.split("?")[0]||"",query:s(u(e),t)}})},function(e,t,n){"use strict";e.exports=(e=>encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))},function(e,t,n){"use strict";var r=new RegExp("%[a-f0-9]{2}","gi"),o=new RegExp("(%[a-f0-9]{2})+","gi");function i(e,t){try{return decodeURIComponent(e.join(""))}catch(e){}if(1===e.length)return e;t=t||1;var n=e.slice(0,t),r=e.slice(t);return Array.prototype.concat.call([],i(n),i(r))}function a(e){try{return decodeURIComponent(e)}catch(o){for(var t=e.match(r),n=1;n<t.length;n++)t=(e=i(t,n).join("")).match(r);return e}}e.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof e+"`");try{return e=e.replace(/\+/g," "),decodeURIComponent(e)}catch(t){return function(e){for(var t={"%FE%FF":"��","%FF%FE":"��"},n=o.exec(e);n;){try{t[n[0]]=decodeURIComponent(n[0])}catch(e){var r=a(n[0]);r!==n[0]&&(t[n[0]]=r)}n=o.exec(e)}t["%C2"]="�";for(var i=Object.keys(t),u=0;u<i.length;u++){var s=i[u];e=e.replace(new RegExp(s,"g"),t[s])}return e}(e)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=m(n(358)),o=m(n(160)),i=m(n(28)),a=m(n(4)),u=m(n(1)),s=n(16),c=n(15),l=n(2),f=n(11),d=h(n(97)),p=h(n(21));function h(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function m(e){return e&&e.__esModule?e:{default:e}}function v(e){var t=e.saved,n=void 0===t?{}:t,o=e.frames,i=e.options,c=e.review,l=(e.search,e.minDistance),d=e.label,h=e.count,m=(0,r.default)(e,["saved","frames","options","review","search","minDistance","label","count"]);return o?u.default.createElement("div",{className:d?"keyframes keyframeGroup":"keyframes"},d&&u.default.createElement("h4",null,u.default.createElement(s.Link,{to:p.publicUrl.browse(d)},d)," (",h,")"),o.map(function(e){var t=e.hash,r=e.frame,o=e.verified,s=e.distance;return u.default.createElement(f.Keyframe,(0,a.default)({key:t+"_"+r,sha256:t,frame:r,score:100-Math.round(s-l)+"%",verified:o,isSaved:!!n[t]&&!!n[t].frames&&!!n[t].frames[parseInt(r,10)],size:i.thumbnailSize,onClick:function(){return c.toggleSaved({verified:o,hash:t,frame:r})},reviewActions:c},m))})):null}t.default=(0,l.connect)(function(e){return{saved:e.review.saved,options:e.search.options}},function(e){return{review:(0,c.bindActionCreators)((0,a.default)({},d),e),search:(0,c.bindActionCreators)((0,a.default)({},p),e)}})(function(e){var t=e.frames,n=e.groupByHash,r=0;if(t&&t.length&&(r=t[0].distance||0),!n)return u.default.createElement(v,(0,a.default)({minDistance:r},e));var s=t.reduce(function(e,t){return e[t.hash]?e[t.hash].push(t):e[t.hash]=[t],e},{});return(0,i.default)(s).map(function(e){return[s[e].length,e]}).sort(function(e,t){return t[0]-e[0]}).map(function(t){var n=(0,o.default)(t,2),i=n[0],c=n[1];return u.default.createElement(v,(0,a.default)({},e,{count:i,key:c,minDistance:r,frames:s[c],label:c}))})})},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},function(e,t,n){e.exports={default:n(360),__esModule:!0}},function(e,t,n){n(58),n(44),e.exports=n(361)},function(e,t,n){var r=n(96),o=n(14)("iterator"),i=n(36);e.exports=n(10).isIterable=function(e){var t=Object(e);return void 0!==t[o]||"@@iterator"in t||i.hasOwnProperty(r(t))}},function(e,t,n){e.exports={default:n(363),__esModule:!0}},function(e,t,n){n(58),n(44),e.exports=n(364)},function(e,t,n){var r=n(20),o=n(95);e.exports=n(10).getIterator=function(e){var t=o(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return r(t.call(e))}},function(e,t,n){e.exports={default:n(366),__esModule:!0}},function(e,t,n){n(134),n(44),n(58),n(367),n(375),n(376),e.exports=n(10).Promise},function(e,t,n){"use strict";var r,o,i,a,u=n(42),s=n(13),c=n(34),l=n(96),f=n(18),d=n(23),p=n(56),h=n(368),m=n(369),v=n(161),y=n(162).set,g=n(371)(),_=n(98),b=n(163),w=n(372),x=n(164),E=s.TypeError,O=s.process,S=O&&O.versions,T=S&&S.v8||"",k=s.Promise,R="process"==l(O),j=function(){},P=o=_.f,C=!!function(){try{var e=k.resolve(1),t=(e.constructor={})[n(14)("species")]=function(e){e(j,j)};return(R||"function"==typeof PromiseRejectionEvent)&&e.then(j)instanceof t&&0!==T.indexOf("6.6")&&-1===w.indexOf("Chrome/66")}catch(e){}}(),M=function(e){var t;return!(!d(e)||"function"!=typeof(t=e.then))&&t},I=function(e,t){if(!e._n){e._n=!0;var n=e._c;g(function(){for(var r=e._v,o=1==e._s,i=0,a=function(t){var n,i,a,u=o?t.ok:t.fail,s=t.resolve,c=t.reject,l=t.domain;try{u?(o||(2==e._h&&N(e),e._h=1),!0===u?n=r:(l&&l.enter(),n=u(r),l&&(l.exit(),a=!0)),n===t.promise?c(E("Promise-chain cycle")):(i=M(n))?i.call(n,s,c):s(n)):c(r)}catch(e){l&&!a&&l.exit(),c(e)}};n.length>i;)a(n[i++]);e._c=[],e._n=!1,t&&!e._h&&A(e)})}},A=function(e){y.call(s,function(){var t,n,r,o=e._v,i=D(e);if(i&&(t=b(function(){R?O.emit("unhandledRejection",o,e):(n=s.onunhandledrejection)?n({promise:e,reason:o}):(r=s.console)&&r.error&&r.error("Unhandled promise rejection",o)}),e._h=R||D(e)?2:1),e._a=void 0,i&&t.e)throw t.v})},D=function(e){return 1!==e._h&&0===(e._a||e._c).length},N=function(e){y.call(s,function(){var t;R?O.emit("rejectionHandled",e):(t=s.onrejectionhandled)&&t({promise:e,reason:e._v})})},L=function(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),I(t,!0))},U=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw E("Promise can't be resolved itself");(t=M(e))?g(function(){var r={_w:n,_d:!1};try{t.call(e,c(U,r,1),c(L,r,1))}catch(e){L.call(r,e)}}):(n._v=e,n._s=1,I(n,!1))}catch(e){L.call({_w:n,_d:!1},e)}}};C||(k=function(e){h(this,k,"Promise","_h"),p(e),r.call(this);try{e(c(U,this,1),c(L,this,1))}catch(e){L.call(this,e)}},(r=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(373)(k.prototype,{then:function(e,t){var n=P(v(this,k));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=R?O.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&I(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),i=function(){var e=new r;this.promise=e,this.resolve=c(U,e,1),this.reject=c(L,e,1)},_.f=P=function(e){return e===k||e===a?new i(e):o(e)}),f(f.G+f.W+f.F*!C,{Promise:k}),n(57)(k,"Promise"),n(374)("Promise"),a=n(10).Promise,f(f.S+f.F*!C,"Promise",{reject:function(e){var t=P(this);return(0,t.reject)(e),t.promise}}),f(f.S+f.F*(u||!C),"Promise",{resolve:function(e){return x(u&&this===a?k:this,e)}}),f(f.S+f.F*!(C&&n(157)(function(e){k.all(e).catch(j)})),"Promise",{all:function(e){var t=this,n=P(t),r=n.resolve,o=n.reject,i=b(function(){var n=[],i=0,a=1;m(e,!1,function(e){var u=i++,s=!1;n.push(void 0),a++,t.resolve(e).then(function(e){s||(s=!0,n[u]=e,--a||r(n))},o)}),--a||r(n)});return i.e&&o(i.v),n.promise},race:function(e){var t=this,n=P(t),r=n.reject,o=b(function(){m(e,!1,function(e){t.resolve(e).then(n.resolve,r)})});return o.e&&r(o.v),n.promise}})},function(e,t){e.exports=function(e,t,n,r){if(!(e instanceof t)||void 0!==r&&r in e)throw TypeError(n+": incorrect invocation!");return e}},function(e,t,n){var r=n(34),o=n(155),i=n(156),a=n(20),u=n(81),s=n(95),c={},l={};(t=e.exports=function(e,t,n,f,d){var p,h,m,v,y=d?function(){return e}:s(e),g=r(n,f,t?2:1),_=0;if("function"!=typeof y)throw TypeError(e+" is not iterable!");if(i(y)){for(p=u(e.length);p>_;_++)if((v=t?g(a(h=e[_])[0],h[1]):g(e[_]))===c||v===l)return v}else for(m=y.call(e);!(h=m.next()).done;)if((v=o(m,g,h.value,t))===c||v===l)return v}).BREAK=c,t.RETURN=l},function(e,t){e.exports=function(e,t,n){var r=void 0===n;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},function(e,t,n){var r=n(13),o=n(162).set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,u=r.Promise,s="process"==n(46)(a);e.exports=function(){var e,t,n,c=function(){var r,o;for(s&&(r=a.domain)&&r.exit();e;){o=e.fn,e=e.next;try{o()}catch(r){throw e?n():t=void 0,r}}t=void 0,r&&r.enter()};if(s)n=function(){a.nextTick(c)};else if(!i||r.navigator&&r.navigator.standalone)if(u&&u.resolve){var l=u.resolve(void 0);n=function(){l.then(c)}}else n=function(){o.call(r,c)};else{var f=!0,d=document.createTextNode("");new i(c).observe(d,{characterData:!0}),n=function(){d.data=f=!f}}return function(r){var o={fn:r,next:void 0};t&&(t.next=o),e||(e=o,n()),t=o}}},function(e,t,n){var r=n(13).navigator;e.exports=r&&r.userAgent||""},function(e,t,n){var r=n(26);e.exports=function(e,t,n){for(var o in t)n&&e[o]?e[o]=t[o]:r(e,o,t[o]);return e}},function(e,t,n){"use strict";var r=n(13),o=n(10),i=n(22),a=n(24),u=n(14)("species");e.exports=function(e){var t="function"==typeof o[e]?o[e]:r[e];a&&t&&!t[u]&&i.f(t,u,{configurable:!0,get:function(){return this}})}},function(e,t,n){"use strict";var r=n(18),o=n(10),i=n(13),a=n(161),u=n(164);r(r.P+r.R,"Promise",{finally:function(e){var t=a(this,o.Promise||i.Promise),n="function"==typeof e;return this.then(n?function(n){return u(t,e()).then(function(){return n})}:e,n?function(n){return u(t,e()).then(function(){throw n})}:e)}})},function(e,t,n){"use strict";var r=n(18),o=n(98),i=n(163);r(r.S,"Promise",{try:function(e){var t=o.f(this),n=i(e);return(n.e?t.reject:t.resolve)(n.v),t.promise}})},function(e,t,n){var r=n(0);e.exports=function(e,t,n,o){var i=r(e).getTime(),a=r(t).getTime(),u=r(n).getTime(),s=r(o).getTime();if(i>a||u>s)throw new Error("The start of the range cannot be after the end of the range");return i<s&&u<a}},function(e,t,n){var r=n(0);e.exports=function(e,t){if(!(t instanceof Array))throw new TypeError(toString.call(t)+" is not an instance of Array");var n,o,i=r(e).getTime();return t.forEach(function(e,t){var a=r(e),u=Math.abs(i-a.getTime());(void 0===n||u<o)&&(n=t,o=u)}),n}},function(e,t,n){var r=n(0);e.exports=function(e,t){if(!(t instanceof Array))throw new TypeError(toString.call(t)+" is not an instance of Array");var n,o,i=r(e).getTime();return t.forEach(function(e){var t=r(e),a=Math.abs(i-t.getTime());(void 0===n||a<o)&&(n=t,o=a)}),n}},function(e,t,n){var r=n(30),o=6e4,i=6048e5;e.exports=function(e,t){var n=r(e),a=r(t),u=n.getTime()-n.getTimezoneOffset()*o,s=a.getTime()-a.getTimezoneOffset()*o;return Math.round((u-s)/i)}},function(e,t,n){var r=n(175),o=n(0);e.exports=function(e,t){var n=o(e),i=o(t);return 4*(n.getFullYear()-i.getFullYear())+(r(n)-r(i))}},function(e,t,n){var r=n(66),o=6e4,i=6048e5;e.exports=function(e,t,n){var a=r(e,n),u=r(t,n),s=a.getTime()-a.getTimezoneOffset()*o,c=u.getTime()-u.getTimezoneOffset()*o;return Math.round((s-c)/i)}},function(e,t,n){var r=n(69),o=36e5;e.exports=function(e,t){var n=r(e,t)/o;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(0),o=n(173),i=n(53),a=n(178);e.exports=function(e,t){var n=r(e),u=r(t),s=i(n,u),c=Math.abs(o(n,u));return n=a(n,s*c),s*(c-(i(n,u)===-s))}},function(e,t,n){var r=n(69),o=6e4;e.exports=function(e,t){var n=r(e,t)/o;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(103);e.exports=function(e,t){var n=r(e,t)/3;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(177);e.exports=function(e,t){var n=r(e,t)/7;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(0),o=n(176),i=n(53);e.exports=function(e,t){var n=r(e),a=r(t),u=i(n,a),s=Math.abs(o(n,a));return n.setFullYear(n.getFullYear()-u*s),u*(s-(i(n,a)===-u))}},function(e,t){e.exports=function(){var e={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};return{localize:function(t,n,r){var o;return r=r||{},o="string"==typeof e[t]?e[t]:1===n?e[t].one:e[t].other.replace("{{count}}",n),r.addSuffix?r.comparison>0?"in "+o:o+" ago":o}}}},function(e,t,n){var r=n(391);e.exports=function(){var e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],t=["January","February","March","April","May","June","July","August","September","October","November","December"],n=["Su","Mo","Tu","We","Th","Fr","Sa"],o=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["AM","PM"],u=["am","pm"],s=["a.m.","p.m."],c={MMM:function(t){return e[t.getMonth()]},MMMM:function(e){return t[e.getMonth()]},dd:function(e){return n[e.getDay()]},ddd:function(e){return o[e.getDay()]},dddd:function(e){return i[e.getDay()]},A:function(e){return e.getHours()/12>=1?a[1]:a[0]},a:function(e){return e.getHours()/12>=1?u[1]:u[0]},aa:function(e){return e.getHours()/12>=1?s[1]:s[0]}};return["M","D","DDD","d","Q","W"].forEach(function(e){c[e+"o"]=function(t,n){return function(e){var t=e%100;if(t>20||t<10)switch(t%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"}(n[e](t))}}),{formatters:c,formattingTokensRegExp:r(c)}}},function(e,t){var n=["M","MM","Q","D","DD","DDD","DDDD","d","E","W","WW","YY","YYYY","GG","GGGG","H","HH","h","hh","m","mm","s","ss","S","SS","SSS","Z","ZZ","X","x"];e.exports=function(e){var t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(r);var o=n.concat(t).sort().reverse();return new RegExp("(\\[[^\\[]*\\])|(\\\\)?("+o.join("|")+"|.)","g")}},function(e,t,n){var r=n(102),o=n(0),i=n(104),a=n(105),u=1440,s=43200,c=525600;e.exports=function(e,t,n){var l=n||{},f=r(e,t),d=l.locale,p=a.distanceInWords.localize;d&&d.distanceInWords&&d.distanceInWords.localize&&(p=d.distanceInWords.localize);var h,m,v,y={addSuffix:Boolean(l.addSuffix),comparison:f};f>0?(h=o(e),m=o(t)):(h=o(t),m=o(e));var g=Math[l.partialMethod?String(l.partialMethod):"floor"],_=i(m,h),b=m.getTimezoneOffset()-h.getTimezoneOffset(),w=g(_/60)-b;if("s"===(v=l.unit?String(l.unit):w<1?"s":w<60?"m":w<u?"h":w<s?"d":w<c?"M":"Y"))return p("xSeconds",_,y);if("m"===v)return p("xMinutes",w,y);if("h"===v)return p("xHours",g(w/60),y);if("d"===v)return p("xDays",g(w/u),y);if("M"===v)return p("xMonths",g(w/s),y);if("Y"===v)return p("xYears",g(w/c),y);throw new Error("Unknown unit: "+v)}},function(e,t,n){var r=n(179);e.exports=function(e,t){return r(Date.now(),e,t)}},function(e,t,n){var r=n(0);e.exports=function(e,t,n){var o=r(e),i=r(t),a=void 0!==n?n:1,u=i.getTime();if(o.getTime()>u)throw new Error("The first date cannot be after the second date");var s=[],c=o;for(c.setHours(0,0,0,0);c.getTime()<=u;)s.push(r(c)),c.setDate(c.getDate()+a);return s}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e);return t.setMinutes(59,59,999),t}},function(e,t,n){var r=n(180);e.exports=function(e){return r(e,{weekStartsOn:1})}},function(e,t,n){var r=n(29),o=n(30);e.exports=function(e){var t=r(e),n=new Date(0);n.setFullYear(t+1,0,4),n.setHours(0,0,0,0);var i=o(n);return i.setMilliseconds(i.getMilliseconds()-1),i}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e);return t.setSeconds(59,999),t}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e),n=t.getMonth(),o=n-n%3+3;return t.setMonth(o,0),t.setHours(23,59,59,999),t}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e);return t.setMilliseconds(999),t}},function(e,t,n){var r=n(106);e.exports=function(){return r(new Date)}},function(e,t){e.exports=function(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),r=e.getDate(),o=new Date(0);return o.setFullYear(t,n,r+1),o.setHours(23,59,59,999),o}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e),n=t.getFullYear();return t.setFullYear(n+1,0,0),t.setHours(23,59,59,999),t}},function(e,t){e.exports=function(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),r=e.getDate(),o=new Date(0);return o.setFullYear(t,n,r-1),o.setHours(23,59,59,999),o}},function(e,t,n){var r=n(182),o=n(107),i=n(29),a=n(0),u=n(184),s=n(105);var c={M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1,2)},Q:function(e){return Math.ceil((e.getMonth()+1)/3)},D:function(e){return e.getDate()},DD:function(e){return d(e.getDate(),2)},DDD:function(e){return r(e)},DDDD:function(e){return d(r(e),3)},d:function(e){return e.getDay()},E:function(e){return e.getDay()||7},W:function(e){return o(e)},WW:function(e){return d(o(e),2)},YY:function(e){return d(e.getFullYear(),4).substr(2)},YYYY:function(e){return d(e.getFullYear(),4)},GG:function(e){return String(i(e)).substr(2)},GGGG:function(e){return i(e)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours(),2)},h:function(e){var t=e.getHours();return 0===t?12:t>12?t%12:t},hh:function(e){return d(c.h(e),2)},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes(),2)},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds(),2)},S:function(e){return Math.floor(e.getMilliseconds()/100)},SS:function(e){return d(Math.floor(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},Z:function(e){return f(e.getTimezoneOffset(),":")},ZZ:function(e){return f(e.getTimezoneOffset())},X:function(e){return Math.floor(e.getTime()/1e3)},x:function(e){return e.getTime()}};function l(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|]$/g,""):e.replace(/\\/g,"")}function f(e,t){t=t||"";var n=e>0?"-":"+",r=Math.abs(e),o=r%60;return n+d(Math.floor(r/60),2)+t+d(o,2)}function d(e,t){for(var n=Math.abs(e).toString();n.length<t;)n="0"+n;return n}e.exports=function(e,t,n){var r=t?String(t):"YYYY-MM-DDTHH:mm:ss.SSSZ",o=(n||{}).locale,i=s.format.formatters,f=s.format.formattingTokensRegExp;o&&o.format&&o.format.formatters&&(i=o.format.formatters,o.format.formattingTokensRegExp&&(f=o.format.formattingTokensRegExp));var d=a(e);return u(d)?function(e,t,n){var r,o,i=e.match(n),a=i.length;for(r=0;r<a;r++)o=t[i[r]]||c[i[r]],i[r]=o||l(i[r]);return function(e){for(var t="",n=0;n<a;n++)i[n]instanceof Function?t+=i[n](e,c):t+=i[n];return t}}(r,i,f)(d):"Invalid Date"}},function(e,t,n){var r=n(0);e.exports=function(e){return r(e).getDate()}},function(e,t,n){var r=n(0);e.exports=function(e){return r(e).getDay()}},function(e,t,n){var r=n(185);e.exports=function(e){return r(e)?366:365}},function(e,t,n){var r=n(0);e.exports=function(e){return r(e).getHours()}},function(e,t,n){var r=n(52),o=n(101),i=6048e5;e.exports=function(e){var t=r(e),n=r(o(t,60)).valueOf()-t.valueOf();return Math.round(n/i)}},function(e,t,n){var r=n(0);e.exports=function(e){return r(e).getMilliseconds()}},function(e,t,n){var r=n(0);e.exports=function(e){return r(e).getMinutes()}},function(e,t,n){var r=n(0);e.exports=function(e){return r(e).getMonth()}},function(e,t,n){var r=n(0),o=864e5;e.exports=function(e,t,n,i){var a=r(e).getTime(),u=r(t).getTime(),s=r(n).getTime(),c=r(i).getTime();if(a>u||s>c)throw new Error("The start of the range cannot be after the end of the range");if(!(a<c&&s<u))return 0;var l=(c>u?u:c)-(s<a?a:s);return Math.ceil(l/o)}},function(e,t,n){var r=n(0);e.exports=function(e){return r(e).getSeconds()}},function(e,t,n){var r=n(0);e.exports=function(e){return r(e).getTime()}},function(e,t,n){var r=n(0);e.exports=function(e){return r(e).getFullYear()}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()>o.getTime()}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()<o.getTime()}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(0);e.exports=function(e){return 1===r(e).getDate()}},function(e,t,n){var r=n(0);e.exports=function(e){return 5===r(e).getDay()}},function(e,t,n){var r=n(0);e.exports=function(e){return r(e).getTime()>(new Date).getTime()}},function(e,t,n){var r=n(0),o=n(106),i=n(181);e.exports=function(e){var t=r(e);return o(t).getTime()===i(t).getTime()}},function(e,t,n){var r=n(0);e.exports=function(e){return 1===r(e).getDay()}},function(e,t,n){var r=n(0);e.exports=function(e){return r(e).getTime()<(new Date).getTime()}},function(e,t,n){var r=n(31);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(0);e.exports=function(e){return 6===r(e).getDay()}},function(e,t,n){var r=n(0);e.exports=function(e){return 0===r(e).getDay()}},function(e,t,n){var r=n(187);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(189);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(190);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(191);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(193);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(194);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(196);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(108);e.exports=function(e,t){return r(new Date,e,t)}},function(e,t,n){var r=n(198);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(0);e.exports=function(e){return 4===r(e).getDay()}},function(e,t,n){var r=n(31);e.exports=function(e){return r(e).getTime()===r(new Date).getTime()}},function(e,t,n){var r=n(31);e.exports=function(e){var t=new Date;return t.setDate(t.getDate()+1),r(e).getTime()===r(t).getTime()}},function(e,t,n){var r=n(0);e.exports=function(e){return 2===r(e).getDay()}},function(e,t,n){var r=n(0);e.exports=function(e){return 3===r(e).getDay()}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e).getDay();return 0===t||6===t}},function(e,t,n){var r=n(0);e.exports=function(e,t,n){var o=r(e).getTime(),i=r(t).getTime(),a=r(n).getTime();if(i>a)throw new Error("The start of the range cannot be after the end of the range");return o>=i&&o<=a}},function(e,t,n){var r=n(31);e.exports=function(e){var t=new Date;return t.setDate(t.getDate()-1),r(e).getTime()===r(t).getTime()}},function(e,t,n){var r=n(199);e.exports=function(e){return r(e,{weekStartsOn:1})}},function(e,t,n){var r=n(29),o=n(30);e.exports=function(e){var t=r(e),n=new Date(0);n.setFullYear(t+1,0,4),n.setHours(0,0,0,0);var i=o(n);return i.setDate(i.getDate()-1),i}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e),n=t.getMonth(),o=n-n%3+3;return t.setMonth(o,0),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e),n=t.getFullYear();return t.setFullYear(n+1,0,0),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(0);e.exports=function(){var e=Array.prototype.slice.call(arguments).map(function(e){return r(e)}),t=Math.max.apply(null,e);return new Date(t)}},function(e,t,n){var r=n(0);e.exports=function(){var e=Array.prototype.slice.call(arguments).map(function(e){return r(e)}),t=Math.min.apply(null,e);return new Date(t)}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setDate(o),n}},function(e,t,n){var r=n(0),o=n(50);e.exports=function(e,t,n){var i=n&&Number(n.weekStartsOn)||0,a=r(e),u=Number(t),s=a.getDay();return o(a,((u%7+7)%7<i?7:0)+u-s)}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setMonth(0),n.setDate(o),n}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setHours(o),n}},function(e,t,n){var r=n(0),o=n(50),i=n(186);e.exports=function(e,t){var n=r(e),a=Number(t),u=i(n);return o(n,a-u)}},function(e,t,n){var r=n(0),o=n(107);e.exports=function(e,t){var n=r(e),i=Number(t),a=o(n)-i;return n.setDate(n.getDate()-7*a),n}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setMilliseconds(o),n}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setMinutes(o),n}},function(e,t,n){var r=n(0),o=n(200);e.exports=function(e,t){var n=r(e),i=Number(t)-(Math.floor(n.getMonth()/3)+1);return o(n,n.getMonth()+3*i)}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setSeconds(o),n}},function(e,t,n){var r=n(0);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setFullYear(o),n}},function(e,t,n){var r=n(0);e.exports=function(e){var t=r(e);return t.setDate(1),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(31);e.exports=function(){return r(new Date)}},function(e,t){e.exports=function(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),r=e.getDate(),o=new Date(0);return o.setFullYear(t,n,r+1),o.setHours(0,0,0,0),o}},function(e,t){e.exports=function(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),r=e.getDate(),o=new Date(0);return o.setFullYear(t,n,r-1),o.setHours(0,0,0,0),o}},function(e,t,n){var r=n(50);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(166);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(51);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(169);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(68);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(170);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(171);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(101);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){var r=n(172);e.exports=function(e,t){var n=Number(t);return r(e,-n)}},function(e,t,n){(function(t){var r,o,i,a;i=n(479),a=n(493),o=n(495),e.exports=function(){var e,n,o,i,a;return 3===arguments.length?(o=arguments[0],i=arguments[1],e=arguments[2]):2===arguments.length?(Array.isArray(arguments[0])?o=arguments[0]:i=arguments[0],"function"==typeof arguments[1]?e=arguments[1]:i=arguments[1]):1===arguments.length&&("function"==typeof arguments[0]?e=arguments[0]:Array.isArray(arguments[0])?o=arguments[0]:i=arguments[0]),null==i&&(i={}),a=new r(i),o&&t.nextTick(function(){var e,t,n;for(t=0,n=o.length;t<n;t++)e=o[t],a.write(e);return a.end()}),e&&(n=[],a.on("readable",function(){var e,t;for(t=[];e=a.read();)t.push(n.push(e));return t}),a.on("error",function(t){return e(t)}),a.on("end",function(){return e(null,n.join(""))})),a},r=function(e={}){var t,n,o,a,u,s,c,l,f,d,p,h,m,v,y,g,_,b;for(g in _={},e)b=e[g],_[g]=b;switch(_.objectMode=!0,i.Transform.call(this,_),this.options=_,null==(t=this.options).delimiter&&(t.delimiter=","),null==(n=this.options).quote&&(n.quote='"'),null==(l=this.options).quoted&&(l.quoted=!1),null==(f=this.options).quotedEmpty&&(f.quotedEmpty=void 0),null==(d=this.options).quotedString&&(d.quotedString=!1),null==(p=this.options).eof&&(p.eof=!0),null==(h=this.options).escape&&(h.escape='"'),null==(m=this.options).header&&(m.header=!1),this.options.columns=r.normalize_columns(this.options.columns),null==(v=this.options).formatters&&(v.formatters={}),this.options.formatters.bool&&(this.options.formatters.boolean=this.options.formatters.bool),null==(y=this.options.formatters).string&&(y.string=function(e){return e}),null==(o=this.options.formatters).date&&(o.date=function(e){return""+e.getTime()}),null==(a=this.options.formatters).boolean&&(a.boolean=function(e){return e?"1":""}),null==(u=this.options.formatters).number&&(u.number=function(e){return""+e}),null==(s=this.options.formatters).object&&(s.object=function(e){return JSON.stringify(e)}),null==(c=this.options).rowDelimiter&&(c.rowDelimiter="\n"),null==this.countWriten&&(this.countWriten=0),this.options.rowDelimiter){case"auto":this.options.rowDelimiter=null;break;case"unix":this.options.rowDelimiter="\n";break;case"mac":this.options.rowDelimiter="\r";break;case"windows":this.options.rowDelimiter="\r\n";break;case"ascii":this.options.rowDelimiter="";break;case"unicode":this.options.rowDelimiter="\u2028"}return this},a.inherits(r,i.Transform),e.exports.Stringifier=r,r.prototype._transform=function(e,t,n){var o,i,a;if(null!=e){if(!(a="object"!=typeof e)){0!==this.countWriten||Array.isArray(e)||null==(o=this.options).columns&&(o.columns=r.normalize_columns(Object.keys(e)));try{this.emit("record",e,this.countWriten)}catch(e){return i=e,this.emit("error",i)}if(this.options.eof){if(null==(e=this.stringify(e)))return;e+=this.options.rowDelimiter}else{if(null==(e=this.stringify(e)))return;(this.options.header||this.countWriten)&&(e=this.options.rowDelimiter+e)}}return"number"==typeof e&&(e=`${e}`),0===this.countWriten&&this.headers(),a||this.countWriten++,this.push(e),n()}},r.prototype._flush=function(e){return 0===this.countWriten&&this.headers(),e()},r.prototype.stringify=function(e){var t,n,r,i,a,u,s,c,l,f,d,p,h,m,v,y,g,_,b,w,x,E;if("object"!=typeof e)return e;if(r=this.options.columns,c=this.options.delimiter,y=this.options.quote,f=this.options.escape,Array.isArray(e))r&&e.splice(r.length);else{if(t=[],r)for(p=h=0,g=r.length;0<=g?h<g:h>g;p=0<=g?++h:--h)E=o(e,r[p].key),t[p]=void 0===E||null===E?"":E;else for(n in e)t.push(e[n]);e=t,t=null}if(Array.isArray(e)){for(v="",p=m=0,_=e.length;0<=_?m<_:m>_;p=0<=_?++m:--m){x=typeof(d=e[p]);try{"string"===x?d=this.options.formatters.string(d):"number"===x?d=this.options.formatters.number(d):"boolean"===x?d=this.options.formatters.boolean(d):d instanceof Date?d=this.options.formatters.date(d):"object"===x&&null!==d&&(d=this.options.formatters.object(d))}catch(e){return l=e,void this.emit("error",l)}if(d){if("string"!=typeof d)return this.emit("error",Error("Formatter must return a string, null or undefined")),null;s=d.indexOf(c)>=0,a=""!==y&&d.indexOf(y)>=0,i=d.indexOf(f)>=0&&f!==y,u=d.indexOf(this.options.rowDelimiter)>=0,(w=a||s||u||this.options.quoted||this.options.quotedString&&"string"==typeof e[p])&&i&&(b="\\"===f?new RegExp(f+f,"g"):new RegExp(f,"g"),d=d.replace(b,f+f)),a&&(b=new RegExp(y,"g"),d=d.replace(b,f+y)),w&&(d=y+d+y),v+=d}else(this.options.quotedEmpty||null==this.options.quotedEmpty&&""===e[p]&&this.options.quotedString)&&(v+=y+y);p!==e.length-1&&(v+=c)}e=v}return e},r.prototype.headers=function(){var e;if(this.options.header&&this.options.columns)return e=this.options.columns.map(function(e){return e.header}),e=this.options.eof?this.stringify(e)+this.options.rowDelimiter:this.stringify(e),this.push(e)},r.normalize_columns=function(e){var t,n,r;if(null==e)return null;if(null!=e){if("object"!=typeof e)throw Error('Invalid option "columns": expect an array or an object');e=Array.isArray(e)?function(){var n,r,o;for(o=[],n=0,r=e.length;n<r;n++)if("string"==typeof(t=e[n]))o.push({key:t,header:t});else{if("object"!=typeof t||null==t||Array.isArray(t))throw Error("Invalid column definition: expect a string or an object");if(!t.key)throw Error('Invalid column definition: property "key" is required');null==t.header&&(t.header=t.key),o.push(t)}return o}():function(){var t;for(n in t=[],e)r=e[n],t.push({key:n,header:r});return t}()}return e}}).call(t,n(40))},function(e,t,n){e.exports=o;var r=n(109).EventEmitter;function o(){r.call(this)}n(32)(o,r),o.Readable=n(110),o.Writable=n(489),o.Duplex=n(490),o.Transform=n(491),o.PassThrough=n(492),o.Stream=o,o.prototype.pipe=function(e,t){var n=this;function o(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}function i(){n.readable&&n.resume&&n.resume()}n.on("data",o),e.on("drain",i),e._isStdio||t&&!1===t.end||(n.on("end",u),n.on("close",s));var a=!1;function u(){a||(a=!0,e.end())}function s(){a||(a=!0,"function"==typeof e.destroy&&e.destroy())}function c(e){if(l(),0===r.listenerCount(this,"error"))throw e}function l(){n.removeListener("data",o),e.removeListener("drain",i),n.removeListener("end",u),n.removeListener("close",s),n.removeListener("error",c),e.removeListener("error",c),n.removeListener("end",l),n.removeListener("close",l),e.removeListener("close",l)}return n.on("error",c),e.on("error",c),n.on("end",l),n.on("close",l),e.on("close",l),e.emit("pipe",n),e}},function(e,t,n){"use strict";t.byteLength=function(e){var t=c(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){for(var t,n=c(e),r=n[0],a=n[1],u=new i(function(e,t,n){return 3*(t+n)/4-n}(0,r,a)),s=0,l=a>0?r-4:r,f=0;f<l;f+=4)t=o[e.charCodeAt(f)]<<18|o[e.charCodeAt(f+1)]<<12|o[e.charCodeAt(f+2)]<<6|o[e.charCodeAt(f+3)],u[s++]=t>>16&255,u[s++]=t>>8&255,u[s++]=255&t;2===a&&(t=o[e.charCodeAt(f)]<<2|o[e.charCodeAt(f+1)]>>4,u[s++]=255&t);1===a&&(t=o[e.charCodeAt(f)]<<10|o[e.charCodeAt(f+1)]<<4|o[e.charCodeAt(f+2)]>>2,u[s++]=t>>8&255,u[s++]=255&t);return u},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,i=[],a=0,u=n-o;a<u;a+=16383)i.push(f(e,a,a+16383>u?u:a+16383));1===o?(t=e[n-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[n-2]<<8)+e[n-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=0,s=a.length;u<s;++u)r[u]=a[u],o[a.charCodeAt(u)]=u;function c(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function l(e){return r[e>>18&63]+r[e>>12&63]+r[e>>6&63]+r[63&e]}function f(e,t,n){for(var r,o=[],i=t;i<n;i+=3)r=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(255&e[i+2]),o.push(l(r));return o.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,o){var i,a,u=8*o-r-1,s=(1<<u)-1,c=s>>1,l=-7,f=n?o-1:0,d=n?-1:1,p=e[t+f];for(f+=d,i=p&(1<<-l)-1,p>>=-l,l+=u;l>0;i=256*i+e[t+f],f+=d,l-=8);for(a=i&(1<<-l)-1,i>>=-l,l+=r;l>0;a=256*a+e[t+f],f+=d,l-=8);if(0===i)i=1-c;else{if(i===s)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),i-=c}return(p?-1:1)*a*Math.pow(2,i-r)},t.write=function(e,t,n,r,o,i){var a,u,s,c=8*i-o-1,l=(1<<c)-1,f=l>>1,d=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:i-1,h=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(u=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-a))<1&&(a--,s*=2),(t+=a+f>=1?d/s:d*Math.pow(2,1-f))*s>=2&&(a++,s/=2),a+f>=l?(u=0,a=l):a+f>=1?(u=(t*s-1)*Math.pow(2,o),a+=f):(u=t*Math.pow(2,f-1)*Math.pow(2,o),a=0));o>=8;e[n+p]=255&u,p+=h,u/=256,o-=8);for(a=a<<o|u,c+=o;c>0;e[n+p]=255&a,p+=h,a/=256,c-=8);e[n+p-h]|=128*m}},function(e,t){},function(e,t,n){"use strict";var r=n(71).Buffer,o=n(484);function i(e,t,n){e.copy(t,n)}e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t=r.allocUnsafe(e>>>0),n=this.head,o=0;n;)i(n.data,t,o),o+=n.data.length,n=n.next;return t},e}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(486),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(t,n(3))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,o=1,i={},a=!1,u=e.document,s=Object.getPrototypeOf&&Object.getPrototypeOf(e);s=s&&s.setTimeout?s:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick(function(){l(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?function(){var t="setImmediate$"+Math.random()+"$",n=function(n){n.source===e&&"string"==typeof n.data&&0===n.data.indexOf(t)&&l(+n.data.slice(t.length))};e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),r=function(n){e.postMessage(t+n,"*")}}():e.MessageChannel?function(){var e=new MessageChannel;e.port1.onmessage=function(e){l(e.data)},r=function(t){e.port2.postMessage(t)}}():u&&"onreadystatechange"in u.createElement("script")?function(){var e=u.documentElement;r=function(t){var n=u.createElement("script");n.onreadystatechange=function(){l(t),n.onreadystatechange=null,e.removeChild(n),n=null},e.appendChild(n)}}():r=function(e){setTimeout(l,0,e)},s.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var a={callback:e,args:t};return i[o]=a,r(o),o++},s.clearImmediate=c}function c(e){delete i[e]}function l(e){if(a)setTimeout(l,0,e);else{var t=i[e];if(t){a=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{c(e),a=!1}}}}}("undefined"==typeof self?void 0===e?this:e:self)}).call(t,n(3),n(40))},function(e,t,n){(function(t){function n(e){try{if(!t.localStorage)return!1}catch(e){return!1}var n=t.localStorage[e];return null!=n&&"true"===String(n).toLowerCase()}e.exports=function(e,t){if(n("noDeprecation"))return e;var r=!1;return function(){if(!r){if(n("throwDeprecation"))throw new Error(t);n("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}}}).call(t,n(3))},function(e,t,n){"use strict";e.exports=i;var r=n(207),o=n(54);function i(e){if(!(this instanceof i))return new i(e);r.call(this,e)}o.inherits=n(32),o.inherits(i,r),i.prototype._transform=function(e,t,n){n(null,e)}},function(e,t,n){e.exports=n(111)},function(e,t,n){e.exports=n(33)},function(e,t,n){e.exports=n(110).Transform},function(e,t,n){e.exports=n(110).PassThrough},function(e,t,n){(function(e,r){var o=/%[sdj%]/g;t.format=function(e){if(!y(e)){for(var t=[],n=0;n<arguments.length;n++)t.push(u(arguments[n]));return t.join(" ")}n=1;for(var r=arguments,i=r.length,a=String(e).replace(o,function(e){if("%%"===e)return"%";if(n>=i)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}}),s=r[n];n<i;s=r[++n])m(s)||!b(s)?a+=" "+s:a+=" "+u(s);return a},t.deprecate=function(n,o){if(g(e.process))return function(){return t.deprecate(n,o).apply(this,arguments)};if(!0===r.noDeprecation)return n;var i=!1;return function(){if(!i){if(r.throwDeprecation)throw new Error(o);r.traceDeprecation?console.trace(o):console.error(o),i=!0}return n.apply(this,arguments)}};var i,a={};function u(e,n){var r={seen:[],stylize:c};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),h(n)?r.showHidden=n:n&&t._extend(r,n),g(r.showHidden)&&(r.showHidden=!1),g(r.depth)&&(r.depth=2),g(r.colors)&&(r.colors=!1),g(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=s),l(r,e,r.depth)}function s(e,t){var n=u.styles[t];return n?"["+u.colors[n][0]+"m"+e+"["+u.colors[n][1]+"m":e}function c(e,t){return e}function l(e,n,r){if(e.customInspect&&n&&E(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var o=n.inspect(r,e);return y(o)||(o=l(e,o,r)),o}var i=function(e,t){if(g(t))return e.stylize("undefined","undefined");if(y(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(v(t))return e.stylize(""+t,"number");if(h(t))return e.stylize(""+t,"boolean");if(m(t))return e.stylize("null","null")}(e,n);if(i)return i;var a=Object.keys(n),u=function(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(n)),x(n)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return f(n);if(0===a.length){if(E(n)){var s=n.name?": "+n.name:"";return e.stylize("[Function"+s+"]","special")}if(_(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(w(n))return e.stylize(Date.prototype.toString.call(n),"date");if(x(n))return f(n)}var c,b="",O=!1,S=["{","}"];(p(n)&&(O=!0,S=["[","]"]),E(n))&&(b=" [Function"+(n.name?": "+n.name:"")+"]");return _(n)&&(b=" "+RegExp.prototype.toString.call(n)),w(n)&&(b=" "+Date.prototype.toUTCString.call(n)),x(n)&&(b=" "+f(n)),0!==a.length||O&&0!=n.length?r<0?_(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),c=O?function(e,t,n,r,o){for(var i=[],a=0,u=t.length;a<u;++a)k(t,String(a))?i.push(d(e,t,n,r,String(a),!0)):i.push("");return o.forEach(function(o){o.match(/^\d+$/)||i.push(d(e,t,n,r,o,!0))}),i}(e,n,r,u,a):a.map(function(t){return d(e,n,r,u,t,O)}),e.seen.pop(),function(e,t,n){if(e.reduce(function(e,t){return 0,t.indexOf("\n")>=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(c,b,S)):S[0]+b+S[1]}function f(e){return"["+Error.prototype.toString.call(e)+"]"}function d(e,t,n,r,o,i){var a,u,s;if((s=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?u=s.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):s.set&&(u=e.stylize("[Setter]","special")),k(r,o)||(a="["+o+"]"),u||(e.seen.indexOf(s.value)<0?(u=m(n)?l(e,s.value,null):l(e,s.value,n-1)).indexOf("\n")>-1&&(u=i?u.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+u.split("\n").map(function(e){return" "+e}).join("\n")):u=e.stylize("[Circular]","special")),g(a)){if(i&&o.match(/^\d+$/))return u;(a=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+u}function p(e){return Array.isArray(e)}function h(e){return"boolean"==typeof e}function m(e){return null===e}function v(e){return"number"==typeof e}function y(e){return"string"==typeof e}function g(e){return void 0===e}function _(e){return b(e)&&"[object RegExp]"===O(e)}function b(e){return"object"==typeof e&&null!==e}function w(e){return b(e)&&"[object Date]"===O(e)}function x(e){return b(e)&&("[object Error]"===O(e)||e instanceof Error)}function E(e){return"function"==typeof e}function O(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(g(i)&&(i=r.env.NODE_DEBUG||""),e=e.toUpperCase(),!a[e])if(new RegExp("\\b"+e+"\\b","i").test(i)){var n=r.pid;a[e]=function(){var r=t.format.apply(t,arguments);console.error("%s %d: %s",e,n,r)}}else a[e]=function(){};return a[e]},t.inspect=u,u.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},u.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=p,t.isBoolean=h,t.isNull=m,t.isNullOrUndefined=function(e){return null==e},t.isNumber=v,t.isString=y,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=g,t.isRegExp=_,t.isObject=b,t.isDate=w,t.isError=x,t.isFunction=E,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(494);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function k(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",function(){var e=new Date,t=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":");return[e.getDate(),T[e.getMonth()],t].join(" ")}(),t.format.apply(t,arguments))},t.inherits=n(32),t._extend=function(e,t){if(!t||!b(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e}}).call(t,n(3),n(40))},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,n){(function(t){var n="Expected a function",r="__lodash_hash_undefined__",o=1/0,i="[object Function]",a="[object GeneratorFunction]",u="[object Symbol]",s=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,c=/^\w*$/,l=/^\./,f=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,d=/\\(\\)?/g,p=/^\[object .+?Constructor\]$/,h="object"==typeof t&&t&&t.Object===Object&&t,m="object"==typeof self&&self&&self.Object===Object&&self,v=h||m||Function("return this")();var y=Array.prototype,g=Function.prototype,_=Object.prototype,b=v["__core-js_shared__"],w=function(){var e=/[^.]+$/.exec(b&&b.keys&&b.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),x=g.toString,E=_.hasOwnProperty,O=_.toString,S=RegExp("^"+x.call(E).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),T=v.Symbol,k=y.splice,R=F(v,"Map"),j=F(Object,"create"),P=T?T.prototype:void 0,C=P?P.toString:void 0;function M(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function I(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function A(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function D(e,t){for(var n=e.length;n--;)if($(e[n][0],t))return n;return-1}function N(e,t){for(var n=0,r=(t=function(e,t){if(q(e))return!1;var n=typeof e;if("number"==n||"symbol"==n||"boolean"==n||null==e||z(e))return!0;return c.test(e)||!s.test(e)||null!=t&&e in Object(t)}(t,e)?[t]:function(e){return q(e)?e:B(e)}(t)).length;null!=e&&n<r;)e=e[W(t[n++])];return n&&n==r?e:void 0}function L(e){return!(!H(e)||function(e){return!!w&&w in e}(e))&&(function(e){var t=H(e)?O.call(e):"";return t==i||t==a}(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e)?S:p).test(function(e){if(null!=e){try{return x.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}function U(e,t){var n=e.__data__;return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?n["string"==typeof t?"string":"hash"]:n.map}function F(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return L(n)?n:void 0}M.prototype.clear=function(){this.__data__=j?j(null):{}},M.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},M.prototype.get=function(e){var t=this.__data__;if(j){var n=t[e];return n===r?void 0:n}return E.call(t,e)?t[e]:void 0},M.prototype.has=function(e){var t=this.__data__;return j?void 0!==t[e]:E.call(t,e)},M.prototype.set=function(e,t){return this.__data__[e]=j&&void 0===t?r:t,this},I.prototype.clear=function(){this.__data__=[]},I.prototype.delete=function(e){var t=this.__data__,n=D(t,e);return!(n<0||(n==t.length-1?t.pop():k.call(t,n,1),0))},I.prototype.get=function(e){var t=this.__data__,n=D(t,e);return n<0?void 0:t[n][1]},I.prototype.has=function(e){return D(this.__data__,e)>-1},I.prototype.set=function(e,t){var n=this.__data__,r=D(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},A.prototype.clear=function(){this.__data__={hash:new M,map:new(R||I),string:new M}},A.prototype.delete=function(e){return U(this,e).delete(e)},A.prototype.get=function(e){return U(this,e).get(e)},A.prototype.has=function(e){return U(this,e).has(e)},A.prototype.set=function(e,t){return U(this,e).set(e,t),this};var B=Y(function(e){e=function(e){return null==e?"":function(e){if("string"==typeof e)return e;if(z(e))return C?C.call(e):"";var t=e+"";return"0"==t&&1/e==-o?"-0":t}(e)}(e);var t=[];return l.test(e)&&t.push(""),e.replace(f,function(e,n,r,o){t.push(r?o.replace(d,"$1"):n||e)}),t});function W(e){if("string"==typeof e||z(e))return e;var t=e+"";return"0"==t&&1/e==-o?"-0":t}function Y(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError(n);var r=function(){var n=arguments,o=t?t.apply(this,n):n[0],i=r.cache;if(i.has(o))return i.get(o);var a=e.apply(this,n);return r.cache=i.set(o,a),a};return r.cache=new(Y.Cache||A),r}function $(e,t){return e===t||e!=e&&t!=t}Y.Cache=A;var q=Array.isArray;function H(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function z(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&O.call(e)==u}e.exports=function(e,t,n){var r=null==e?void 0:N(e,t);return void 0===r?n:r}}).call(t,n(3))},function(e,t,n){(function(t){var n=function(){try{return Function("return this")()||(0,eval)("this")}catch(e){return"object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof t&&t.global===t?t:this}}();function r(e,t,n){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){a(r.response,t,n)},r.onerror=function(){console.error("could not download file")},r.send()}function o(e){var t=new XMLHttpRequest;return t.open("HEAD",e,!1),t.send(),t.status>=200&&t.status<=299}function i(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(n){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var a=n.saveAs||"object"!=typeof window||window!==n?function(){}:"download"in HTMLAnchorElement.prototype?function(e,t,a){var u=n.URL||n.webkitURL,s=document.createElement("a");t=t||e.name||"download",s.download=t,s.rel="noopener","string"==typeof e?(s.href=e,s.origin!==location.origin?o(s.href)?r(e,t,a):i(s,s.target="_blank"):i(s)):(s.href=u.createObjectURL(e),setTimeout(function(){u.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(e,t,n){if(t=t||e.name||"download","string"==typeof e)if(o(e))r(e,t,n);else{var i=document.createElement("a");i.href=e,i.target="_blank",setTimeout(function(){clikc(i)})}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Depricated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,n),t)}:function(e,t,o,i){if((i=i||open("","_blank"))&&(i.document.title=i.document.body.innerText="downloading..."),"string"==typeof e)return r(e,t,o);var a="application/octet-stream"===e.type,u=/constructor/i.test(n.HTMLElement)||n.safari,s=/CriOS\/[\d]+/.test(navigator.userAgent);if((s||a&&u)&&"object"==typeof FileReader){var c=new FileReader;c.onloadend=function(){var e=c.result;e=s?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),i?i.location.href=e:location=e,i=null},c.readAsDataURL(e)}else{var l=n.URL||n.webkitURL,f=l.createObjectURL(e);i?i.location=f:location.href=f,i=null,setTimeout(function(){l.revokeObjectURL(f)},4e4)}};e.exports=n.saveAs=a.saveAs=a}).call(t,n(3))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=h(n(4)),o=h(n(5)),i=h(n(6)),a=h(n(7)),u=h(n(8)),s=h(n(9)),c=n(1),l=h(c),f=n(2),d=n(17),p=n(11);function h(e){return e&&e.__esModule?e:{default:e}}var m=function(e){function t(){var e,n,r,a;(0,i.default)(this,t);for(var s=arguments.length,c=Array(s),l=0;l<s;l++)c[l]=arguments[l];return n=r=(0,u.default)(this,(e=t.__proto__||(0,o.default)(t)).call.apply(e,[this].concat(c))),r.state={playing:!1},a=n,(0,u.default)(r,a)}return(0,s.default)(t,e),(0,a.default)(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.app,r=t.data,o=t.size,i=this.state.playing,a=r.metadata.sugarcube.fp.replace("/var/www/files/","https://cube.syrianarchive.org/"),u=n.mediainfo,s=u.sha256,c=u.verified,f=n.mediainfo.metadata.mediainfo.video,p=n.keyframe.metadata.keyframe.basic[0];return l.default.createElement("div",{className:"video"},i?l.default.createElement("video",{src:a,autoPlay:!0,controls:!0,muted:!0}):l.default.createElement("div",{className:"bg",style:{width:d.widths[o||"sm"],height:d.widths[o||"sm"]/f.aspect_ratio,backgroundImage:"url("+(0,d.imageUrl)(c,s,p,o)+")"},onClick:function(){return e.setState({playing:!0})}},l.default.createElement("div",{className:"play"})))}}]),t}(c.Component);t.default=(0,f.connect)(function(){return{tag:"sugarcube"}})(function(e){return l.default.createElement(p.Gate,(0,r.default)({View:m},e))})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(78)),o=c(n(499)),i=c(n(160)),a=c(n(28));t.TableObject=f,t.TableArray=d,t.TableTuples=function(e){var t=e.tag,n=e.list;return n?u.default.createElement("div",null,t&&u.default.createElement("h3",null,t),u.default.createElement("table",{className:"tableTuples "+t},u.default.createElement("tbody",null,n.map(function(e,n){var r=(0,o.default)(e),i=r[0],a=r.slice(1);return u.default.createElement("tr",{key:t+"_"+n},u.default.createElement("th",null,(0,s.formatName)(i)),a.map(function(e,t){return u.default.createElement(h,{key:n+"_"+t,value:e})}))})))):null},t.TableRow=p,t.TableCell=h;var u=c(n(1)),s=n(17);function c(e){return e&&e.__esModule?e:{default:e}}var l="__HR__";function f(e){var t=e.tag,n=e.object,r=e.order,o=e.summary;if(!n)return null;if("loading"===n)return u.default.createElement("div",{className:"tableObject loading"},t,": Loading");if(n.err)return u.default.createElement("div",{className:"tableObject error"},t," Error: ",n.err);var s=(0,a.default)(n);if(r){var c=s.reduce(function(e,t){var n=r.indexOf(t);return-1!==n?e.order.push([n,t]):e.alpha.push(t),e},{order:[],alpha:[]});s=c.order.sort(function(e,t){return e[0]-t[0]}).map(function(e){var t=(0,i.default)(e,2);t[0];return t[1]}),o||(s=s.concat(c.alpha.sort()))}else s=s.sort();return u.default.createElement("div",null,t&&u.default.createElement("h3",null,t),u.default.createElement("table",{className:"tableObject "+t},u.default.createElement("tbody",null,s.map(function(e,t){return u.default.createElement(p,{key:e+"_"+t,name:e,value:n[e]})}))))}function d(e){var t=e.tag,n=e.list;return n?u.default.createElement("div",null,t&&u.default.createElement("h3",null,t),u.default.createElement("table",{className:"tableArray "+t},u.default.createElement("tbody",null,n.map(function(e,n){return u.default.createElement("tr",{key:t+"_"+n},u.default.createElement(h,{value:e}))})))):null}function p(e){var t=e.name,n=e.value;return t===l?u.default.createElement("tr",null,u.default.createElement("th",{className:"tr"},u.default.createElement("hr",null))):u.default.createElement("tr",null,u.default.createElement("th",null,(0,s.formatName)(t)),u.default.createElement(h,{name:t,value:n}))}function h(e){var t=e.value;return t&&"object"===(void 0===t?"undefined":(0,r.default)(t))&&(t=t._raw?t.value:t.length?u.default.createElement(d,{nested:!0,tag:"",list:t}):u.default.createElement(f,{nested:!0,tag:"",object:t})),u.default.createElement("td",null,t)}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(154));t.default=function(e){return Array.isArray(e)?e:(0,r.default)(e)}},function(e,t,n){var r=n(501);"string"==typeof r&&(r=[[e.i,r,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(49)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(48)(!1)).push([e.i,'/* css boilerplate */\n\n* { box-sizing: border-box; }\nhtml,body {\n margin: 0; padding: 0;\n width: 100%; height: 100%;\n}\nbody {\n font-family: Helvetica, sans-serif;\n font-weight: 300;\n}\n\nh1 {\n\n}\nh2 {\n font-weight: normal;\n margin: 10px 0;\n padding: 3px;\n font-size: 24px;\n}\nh3 {\n font-weight: normal;\n margin: 10px 0 0 0;\n padding: 3px;\n font-size: 18px;\n}\nh4 {\n font-weight: 300;\n font-size: 12px;\n letter-spacing: 2px;\n color: #888;\n text-transform: uppercase;\n margin: 5px 10px;\n margin-top: 20px;\n}\nh4:first-child {\n margin-top: 10px;\n}\n\n.app {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: flex-start;\n}\n\n/* header stuff */\n\nheader {\n width: 100%;\n background: #11f;\n color: white;\n align-items: stretch;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n z-index: 3;\n}\nheader > section {\n justify-content: flex-start;\n align-items: center;\n display: flex;\n flex: 1 0;\n font-weight: bold;\n}\nheader > section:last-of-type {\n justify-content: flex-end;\n}\n\n/* sidebar / body columns */\n\n.sidebar {\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n height: 100%;\n float: left;\n width: 200px;\n flex: 0 0 200px;\n padding: 10px;\n margin-right: 10px;\n}\n.sidebar a {\n display: block;\n padding: 10px 10px;\n text-decoration: none;\n color: #444;\n}\n.sidebar a.active {\n font-weight: bold;\n color: #222;\n}\n.body {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: flex-start;\n flex-grow: 1;\n}\n.body > div {\n padding-bottom: 40px;\n}\n\n/* buttons / forms */\n\n.btn:focus, .btn:hover {\n background: #f1f1fc;\n color: #4b48d6 !important;\n text-decoration: none;\n}\n.btn {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: #fff;\n border: .05rem solid;\n border-radius: 2px;\n margin-right: 5px;\n color: #11f;\n cursor: pointer;\n display: inline-block;\n font-size: .8rem;\n height: 1.8rem;\n line-height: 1rem;\n outline: none;\n padding: .35rem .4rem;\n text-align: center;\n text-decoration: none;\n -webkit-transition: all .2s ease;\n -o-transition: all .2s ease;\n transition: all .2s ease;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n vertical-align: middle;\n white-space: nowrap;\n}\n.btn.reset,\n.btn.panic {\n color: #b00;\n}\n.btn.btn-primary {\n background: #11f;\n border-color: #11f;\n color: white;\n}\n.btn[disabled] {\n color: #bbb !important;\n border-color: #bbb !important;\n background: white !important;\n cursor: default;\n}\n.btn.btn-primary:focus,\n.btn.btn-primary:hover {\n background: #0808ee;\n color: white !important;\n}\n.row .btn {\n margin: 0 5px 0 0;\n}\ninput[type=text] {\n border: 1px solid #888;\n padding: 4px;\n font-size: 15px;\n}\n\n\n/* tables on metadata pages */\n\ntable {\n border: 0;\n margin: 0;\n padding: 0;\n border-spacing: 0;\n}\n.tableObject td,\n.tableObject th {\n padding: 3px;\n vertical-align: top;\n}\n.tableObject hr {\n width: 100%;\n color: transparent;\n border: 0;\n border-bottom: 1px solid #bbb;\n align: left;\n margin: 3px 0;\n padding: 0;\n}\n.tableObject th,\n.tableTuples th {\n min-width: 145px;\n text-align: left;\n text-transform: capitalize;\n padding: 3px;\n padding-right: 10px;\n font-weight: 300;\n color: #333;\n}\n.tableTuples td {\n text-align: right;\n padding: 3px;\n}\n.tableObject td {\n font-weight: normal;\n color: #000;\n}\n.tableObject .tableObject {\n border: 1px solid #ddd;\n}\n.tableArray {\n border: 1px solid #ddd;\n border-spacing: 0;\n}\n.tableArray td {\n border-bottom: 1px solid #ddd;\n}\n.gray {\n font-size: 12px;\n color: #888;\n display: block;\n}\n.sha256.heading {\n margin: 20px 0 0px;\n}\n.gray span {\n padding-right: 5px;\n}\n.gray {\n margin-bottom: 10px;\n}\n.gray a {\n color: #666;\n}\n\n.verified {\n color: #080;\n font-weight: bold;\n}\n.unverified {\n color: #f00;\n font-weight: 300;\n}\n\n.loading, .error {\n font-weight: normal;\n margin: 10px 0;\n padding: 3px;\n font-size: 24px;\n}\n\n.title {\n text-transform: capitalize;\n}\n.rect {\n position: absolute;\n}\n.rect { border: 1px solid rgba(0,0,255); background-color: rgba(0,0,255,0.1); }\n\n/* videos / video preloader */\n\nvideo {\n max-width: 640px;\n margin: 10px 0;\n}\n.video {\n margin: 0 0 10px 0;\n}\n.video .bg {\n cursor: pointer;\n position: relative;\n background-size: cover;\n}\n.video .play {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate3d(-50%, -50%, 0);\n width: 20%;\n height: 20%;\n background-image: url(/search/static/img/play.png);\n background-position: center center;\n background-size: contain;\n background-repeat: no-repeat;\n}\n.desktop .video .play:hover {\n -webkit-filter: invert(60%) sepia(100%) saturate(500%) hue-rotate(160deg);\n}\n\n/* spectre.css loader */\n\n.loaderWrapper {\n display: inline-block;\n position: relative;\n width: .8rem;\n height: .8rem;\n padding: 10px;\n}\n.loader {\n color: transparent !important;\n min-height: .8rem;\n pointer-events: none;\n position: relative;\n}\n\n.loader::after {\n animation: loader 500ms infinite linear;\n border: .1rem solid #5755d9;\n border-radius: 50%;\n border-right-color: transparent;\n border-top-color: transparent;\n content: "";\n display: block;\n height: .8rem;\n left: 50%;\n margin-left: -.4rem;\n margin-top: -.4rem;\n position: absolute;\n top: 50%;\n width: .8rem;\n z-index: 1;\n}\n\n.loader.loader-lg {\n min-height: 2rem;\n}\n\n.loader.loader-lg::after {\n height: 1.6rem;\n margin-left: -.8rem;\n margin-top: -.8rem;\n width: 1.6rem;\n}\n\n@keyframes loader {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}',""])},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=h(n(4)),o=h(n(5)),i=h(n(6)),a=h(n(7)),u=h(n(8)),s=h(n(9)),c=n(1),l=h(c),f=n(15),d=n(2),p=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(112));function h(e){return e&&e.__esModule?e:{default:e}}var m=function(e){function t(){return(0,i.default)(this,t),(0,u.default)(this,(t.__proto__||(0,o.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,a.default)(t,[{key:"componentDidMount",value:function(){var e=this.props.match.params.hash;this.fetch(e)}},{key:"componentDidUpdate",value:function(e){var t=this.props.match.params.hash,n=e.match.params.hash;t&&t!==n&&this.fetch(t)}},{key:"fetch",value:function(e){this.props.actions.setHash(e),this.props.actions.fetchMediaRecord(e),this.props.actions.fetchMetadata(e)}},{key:"render",value:function(){return l.default.createElement("span",{className:"gray sha256 heading"},"sha256: ",this.props.hash)}}]),t}(c.Component);t.default=(0,d.connect)(function(e){return{hash:e.metadata.hash}},function(e){return{actions:(0,f.bindActionCreators)((0,r.default)({},p),e)}})(m)},function(e,t,n){var r,o,i;!function(n,a){o=[t,e],void 0===(i="function"==typeof(r=a)?r.apply(t,o):r)||(e.exports=i)}(0,function(e,t){"use strict";var n={timeout:5e3,jsonpCallback:"callback",jsonpCallbackFunction:null};function r(e){try{delete window[e]}catch(t){window[e]=void 0}}function o(e){var t=document.getElementById(e);t&&document.getElementsByTagName("head")[0].removeChild(t)}t.exports=function(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=e,a=t.timeout||n.timeout,u=t.jsonpCallback||n.jsonpCallback,s=void 0;return new Promise(function(n,c){var l=t.jsonpCallbackFunction||"jsonp_"+Date.now()+"_"+Math.ceil(1e5*Math.random()),f=u+"_"+l;window[l]=function(e){n({ok:!0,json:function(){return Promise.resolve(e)}}),s&&clearTimeout(s),o(f),r(l)},i+=-1===i.indexOf("?")?"?":"&";var d=document.createElement("script");d.setAttribute("src",""+i+u+"="+l),t.charset&&d.setAttribute("charset",t.charset),d.id=f,document.getElementsByTagName("head")[0].appendChild(d),s=setTimeout(function(){c(new Error("JSONP request to "+e+" timed out")),r(l),o(f),window[l]=function(){r(l)}},a),d.onerror=function(){c(new Error("JSONP request to "+e+" failed")),r(l),o(f),s&&clearTimeout(s)}})}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(4)),o=p(n(5)),i=p(n(6)),a=p(n(7)),u=p(n(8)),s=p(n(9)),c=n(1),l=p(c),f=n(2),d=n(11);function p(e){return e&&e.__esModule?e:{default:e}}var h=function(e){function t(){return(0,i.default)(this,t),(0,u.default)(this,(t.__proto__||(0,o.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,a.default)(t,[{key:"render",value:function(){var e=this.props,t=e.data,n=e.summary,r=t.metadata.mediainfo,o=r.audio,i=r.video,a=[];return i&&a.push(l.default.createElement(d.TableObject,{key:"video",tag:"mediaInfo: video",object:i,order:["width","height","encoded_date","tagged_date","frame_count","frame_rate","aspect_ratio","duration"],summary:n})),o&&a.push(l.default.createElement(d.TableObject,{key:"audio",tag:"mediaInfo: audio",object:o,order:["codec","encoded_date"],summary:n})),l.default.createElement("div",null,a||l.default.createElement("div",null,"No media info found"))}}]),t}(c.Component);t.default=(0,f.connect)(function(e){return{tag:"mediainfo"}})(function(e){return l.default.createElement(d.Gate,(0,r.default)({View:h},e))})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=d(n(5)),o=d(n(6)),i=d(n(7)),a=d(n(8)),u=d(n(9)),s=n(1),c=d(s),l=n(2),f=n(11);function d(e){return e&&e.__esModule?e:{default:e}}var p=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,u.default)(t,e),(0,i.default)(t,[{key:"render",value:function(){return c.default.createElement(f.TableObject,{tag:"mediaRecord",object:this.props.mediaRecord})}}]),t}(s.Component);t.default=(0,l.connect)(function(e){return{mediaRecord:e.metadata.mediaRecord}})(p)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){return r.default.createElement("div",null,r.default.createElement(o.Sugarcube,{summary:!0}),r.default.createElement(o.MediaRecord,null),r.default.createElement(o.MediaInfo,{summary:!0}),r.default.createElement(o.Places365,{summary:!0}),r.default.createElement(o.Coco,{summary:!0}))};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1)),o=n(208)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=h(n(4)),o=h(n(5)),i=h(n(6)),a=h(n(7)),u=h(n(8)),s=h(n(9)),c=n(1),l=h(c),f=n(2),d=n(17),p=n(11);function h(e){return e&&e.__esModule?e:{default:e}}var m=function(e){function t(){return(0,i.default)(this,t),(0,u.default)(this,(t.__proto__||(0,o.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,a.default)(t,[{key:"render",value:function(){var e=this.props,t=e.data,n=e.list,r=t.sha256,o=t.verified,i=t.metadata.keyframe,a=(n?[n]:["dense","basic","expanded"]).map(function(e){return l.default.createElement("div",{key:e},l.default.createElement("h3",null,e),l.default.createElement("ul",{className:"meta"},l.default.createElement("li",null,(0,d.courtesyS)(i[e].length,"frame"))),l.default.createElement("div",{className:"thumbnails"},i[e].map(function(e){return l.default.createElement(p.Keyframe,{key:e,sha256:r,verified:o,frame:e,size:"th",showFrame:!0,showTimestamp:!0})})))});return l.default.createElement("div",{className:"keyframeLists"},a)}}]),t}(c.Component);t.default=(0,f.connect)(function(){return{tag:"keyframe"}})(function(e){return l.default.createElement(p.Gate,(0,r.default)({View:m},e))})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=_(n(4)),o=_(n(28)),i=_(n(5)),a=_(n(6)),u=_(n(7)),s=_(n(8)),c=_(n(9)),l=n(1),f=_(l),d=n(16),p=n(2),h=n(17),m=n(11),v=g(n(21)),y=g(n(113));function g(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function _(e){return e&&e.__esModule?e:{default:e}}var b=function(e){function t(){return(0,a.default)(this,t),(0,s.default)(this,(t.__proto__||(0,i.default)(t)).apply(this,arguments))}return(0,c.default)(t,e),(0,u.default)(t,[{key:"render",value:function(){var e=this.props,t=e.app,n=e.data,r=e.match,i=parseInt(r.params.frame,10),a=n.sha256,u=n.verified,s=t.mediainfo.metadata.mediainfo.video,c=s.width,l=s.height,p=s.aspect_ratio,g=t.keyframe.metadata.keyframe,_={places365:t.places365.metadata.places365[i],coco:t.coco.metadata.coco[i]},b=(0,o.default)(t.coco.metadata.coco).map(function(e){return parseInt(e,10)}).sort(function(e,t){return e-t}),w=b.length,x=b.indexOf(i),E=(x-1+w)%w,O=(x+1)%w,S=["dense","basic","expanded"].map(function(e){return e in g&&e}).filter(function(e){return!!e}).join(", "),T=["th","sm","md","lg"].map(function(e){return f.default.createElement("span",{key:e},f.default.createElement("a",{href:(0,h.imageUrl)(u,a,i,e),target:"_blank",rel:"noopener noreferrer"},"[",e,"]")," ")});return f.default.createElement("div",{className:"keyframeSummary"},f.default.createElement("h2",null,"Frame #",i),f.default.createElement("ul",{className:"meta"},f.default.createElement("li",null,f.default.createElement(d.Link,{to:(0,h.keyframeUri)(a,b[E])},"← #",b[E])),f.default.createElement("li",null,f.default.createElement(d.Link,{to:(0,h.metadataUri)(a,"keyframe")},"Index")),f.default.createElement("li",null,f.default.createElement(d.Link,{to:(0,h.keyframeUri)(a,b[O])},"#",b[O]," →"))),f.default.createElement(m.Keyframe,{sha256:a,frame:i,verified:u,size:"md",to:(0,h.imageUrl)(u,a,i,"lg"),aspectRatio:p,detectionList:[{labels:y.coco,detections:_.coco}]}),f.default.createElement(d.Link,{to:v.publicUrl.searchByVerifiedFrame(u,a,i),className:"btn"},"Search"),f.default.createElement(m.TableTuples,{tag:"Metadata",list:[["Width",c],["Height",l],["Keyframe sets",S],["Sizes",{_raw:!0,value:T}]]}),f.default.createElement(m.DetectionList,{tag:"Places365",detections:_.places365,labels:y.places365,showEmpty:!0}),f.default.createElement(m.DetectionList,{tag:"Coco",detections:_.coco,labels:y.coco,showEmpty:!0}))}}]),t}(l.Component);t.default=(0,p.connect)(function(){return{tag:"keyframe"}})(function(e){return f.default.createElement(m.Gate,(0,r.default)({View:b},e))})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default="person\nbicycle\ncar\nmotorbike\naeroplane\nbus\ntrain\ntruck\nboat\ntraffic light\nfire hydrant\nstop sign\nparking meter\nbench\nbird\ncat\ndog\nhorse\nsheep\ncow\nelephant\nbear\nzebra\ngiraffe\nbackpack\numbrella\nhandbag\ntie\nsuitcase\nfrisbee\nskis\nsnowboard\nsports ball\nkite\nbaseball bat\nbaseball glove\nskateboard\nsurfboard\ntennis racket\nbottle\nwine glass\ncup\nfork\nknife\nspoon\nbowl\nbanana\napple\nsandwich\norange\nbroccoli\ncarrot\nhot dog\npizza\ndonut\ncake\nchair\nsofa\npottedplant\nbed\ndiningtable\ntoilet\ntvmonitor\nlaptop\nmouse\nremote\nkeyboard\ncell phone\nmicrowave\noven\ntoaster\nsink\nrefrigerator\nbook\nclock\nvase\nscissors\nteddy bear\nhair drier\ntoothbrush".split("\n")},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default="airfield\nairplane_cabin\nairport_terminal\nalcove\nalley\namphitheater\namusement_arcade\namusement_park\napartment_building/outdoor\naquarium\naqueduct\narcade\narch\narchaelogical_excavation\narchive\narena/hockey\narena/performance\narena/rodeo\narmy_base\nart_gallery\nart_school\nart_studio\nartists_loft\nassembly_line\nathletic_field/outdoor\natrium/public\nattic\nauditorium\nauto_factory\nauto_showroom\nbadlands\nbakery/shop\nbalcony/exterior\nbalcony/interior\nball_pit\nballroom\nbamboo_forest\nbank_vault\nbanquet_hall\nbar\nbarn\nbarndoor\nbaseball_field\nbasement\nbasketball_court/indoor\nbathroom\nbazaar/indoor\nbazaar/outdoor\nbeach\nbeach_house\nbeauty_salon\nbedchamber\nbedroom\nbeer_garden\nbeer_hall\nberth\nbiology_laboratory\nboardwalk\nboat_deck\nboathouse\nbookstore\nbooth/indoor\nbotanical_garden\nbow_window/indoor\nbowling_alley\nboxing_ring\nbridge\nbuilding_facade\nbullring\nburial_chamber\nbus_interior\nbus_station/indoor\nbutchers_shop\nbutte\ncabin/outdoor\ncafeteria\ncampsite\ncampus\ncanal/natural\ncanal/urban\ncandy_store\ncanyon\ncar_interior\ncarrousel\ncastle\ncatacomb\ncemetery\nchalet\nchemistry_lab\nchilds_room\nchurch/indoor\nchurch/outdoor\nclassroom\nclean_room\ncliff\ncloset\nclothing_store\ncoast\ncockpit\ncoffee_shop\ncomputer_room\nconference_center\nconference_room\nconstruction_site\ncorn_field\ncorral\ncorridor\ncottage\ncourthouse\ncourtyard\ncreek\ncrevasse\ncrosswalk\ndam\ndelicatessen\ndepartment_store\ndesert/sand\ndesert/vegetation\ndesert_road\ndiner/outdoor\ndining_hall\ndining_room\ndiscotheque\ndoorway/outdoor\ndorm_room\ndowntown\ndressing_room\ndriveway\ndrugstore\nelevator/door\nelevator_lobby\nelevator_shaft\nembassy\nengine_room\nentrance_hall\nescalator/indoor\nexcavation\nfabric_store\nfarm\nfastfood_restaurant\nfield/cultivated\nfield/wild\nfield_road\nfire_escape\nfire_station\nfishpond\nflea_market/indoor\nflorist_shop/indoor\nfood_court\nfootball_field\nforest/broadleaf\nforest_path\nforest_road\nformal_garden\nfountain\ngalley\ngarage/indoor\ngarage/outdoor\ngas_station\ngazebo/exterior\ngeneral_store/indoor\ngeneral_store/outdoor\ngift_shop\nglacier\ngolf_course\ngreenhouse/indoor\ngreenhouse/outdoor\ngrotto\ngymnasium/indoor\nhangar/indoor\nhangar/outdoor\nharbor\nhardware_store\nhayfield\nheliport\nhighway\nhome_office\nhome_theater\nhospital\nhospital_room\nhot_spring\nhotel/outdoor\nhotel_room\nhouse\nhunting_lodge/outdoor\nice_cream_parlor\nice_floe\nice_shelf\nice_skating_rink/indoor\nice_skating_rink/outdoor\niceberg\nigloo\nindustrial_area\ninn/outdoor\nislet\njacuzzi/indoor\njail_cell\njapanese_garden\njewelry_shop\njunkyard\nkasbah\nkennel/outdoor\nkindergarden_classroom\nkitchen\nlagoon\nlake/natural\nlandfill\nlanding_deck\nlaundromat\nlawn\nlecture_room\nlegislative_chamber\nlibrary/indoor\nlibrary/outdoor\nlighthouse\nliving_room\nloading_dock\nlobby\nlock_chamber\nlocker_room\nmansion\nmanufactured_home\nmarket/indoor\nmarket/outdoor\nmarsh\nmartial_arts_gym\nmausoleum\nmedina\nmezzanine\nmoat/water\nmosque/outdoor\nmotel\nmountain\nmountain_path\nmountain_snowy\nmovie_theater/indoor\nmuseum/indoor\nmuseum/outdoor\nmusic_studio\nnatural_history_museum\nnursery\nnursing_home\noast_house\nocean\noffice\noffice_building\noffice_cubicles\noilrig\noperating_room\norchard\norchestra_pit\npagoda\npalace\npantry\npark\nparking_garage/indoor\nparking_garage/outdoor\nparking_lot\npasture\npatio\npavilion\npet_shop\npharmacy\nphone_booth\nphysics_laboratory\npicnic_area\npier\npizzeria\nplayground\nplayroom\nplaza\npond\nporch\npromenade\npub/indoor\nracecourse\nraceway\nraft\nrailroad_track\nrainforest\nreception\nrecreation_room\nrepair_shop\nresidential_neighborhood\nrestaurant\nrestaurant_kitchen\nrestaurant_patio\nrice_paddy\nriver\nrock_arch\nroof_garden\nrope_bridge\nruin\nrunway\nsandbox\nsauna\nschoolhouse\nscience_museum\nserver_room\nshed\nshoe_shop\nshopfront\nshopping_mall/indoor\nshower\nski_resort\nski_slope\nsky\nskyscraper\nslum\nsnowfield\nsoccer_field\nstable\nstadium/baseball\nstadium/football\nstadium/soccer\nstage/indoor\nstage/outdoor\nstaircase\nstorage_room\nstreet\nsubway_station/platform\nsupermarket\nsushi_bar\nswamp\nswimming_hole\nswimming_pool/indoor\nswimming_pool/outdoor\nsynagogue/outdoor\ntelevision_room\ntelevision_studio\ntemple/asia\nthrone_room\nticket_booth\ntopiary_garden\ntower\ntoyshop\ntrain_interior\ntrain_station/platform\ntree_farm\ntree_house\ntrench\ntundra\nunderwater/ocean_deep\nutility_room\nvalley\nvegetable_garden\nveterinarians_office\nviaduct\nvillage\nvineyard\nvolcano\nvolleyball_court/outdoor\nwaiting_room\nwater_park\nwater_tower\nwaterfall\nwatering_hole\nwave\nwet_bar\nwheat_field\nwind_farm\nwindmill\nyard\nyouth_hostel\nzen_garden".split("\n")},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(4)),o=p(n(5)),i=p(n(6)),a=p(n(7)),u=p(n(8)),s=p(n(9)),c=n(1),l=p(c),f=n(2),d=n(11);function p(e){return e&&e.__esModule?e:{default:e}}var h=function(e){function t(){return(0,i.default)(this,t),(0,u.default)(this,(t.__proto__||(0,o.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,a.default)(t,[{key:"render",value:function(){var e=this.props.data.metadata;return l.default.createElement(d.TableObject,{tag:"Keyframe Status",object:e})}}]),t}(c.Component);t.default=(0,f.connect)(function(){return{tag:"keyframe_status"}})(function(e){return l.default.createElement(d.Gate,(0,r.default)({View:h},e))})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=h(n(4)),o=h(n(5)),i=h(n(6)),a=h(n(7)),u=h(n(8)),s=h(n(9)),c=n(1),l=h(c),f=n(2),d=n(11),p=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(113));function h(e){return e&&e.__esModule?e:{default:e}}var m=function(e){function t(){return(0,i.default)(this,t),(0,u.default)(this,(t.__proto__||(0,o.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,a.default)(t,[{key:"render",value:function(){var e=this.props,t=e.app,n=e.data,r=e.summary,o=e.showAll,i=n.metadata,a=n.sha256,u=n.verified,s=t.mediainfo.metadata.mediainfo.video.aspect_ratio;return console.log(this.props.data),l.default.createElement(d.Classifier,{tag:"Coco",sha256:a,verified:u,keyframes:i.coco,labels:p.coco,summary:r,aspectRatio:s,showAll:o})}}]),t}(c.Component);t.default=(0,f.connect)(function(){return{tag:"coco"}})(function(e){return l.default.createElement(d.Gate,(0,r.default)({View:m},e))})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=h(n(4)),o=h(n(5)),i=h(n(6)),a=h(n(7)),u=h(n(8)),s=h(n(9)),c=n(1),l=h(c),f=n(2),d=n(11),p=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(113));function h(e){return e&&e.__esModule?e:{default:e}}var m=function(e){function t(){return(0,i.default)(this,t),(0,u.default)(this,(t.__proto__||(0,o.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,a.default)(t,[{key:"render",value:function(){var e=this.props,t=e.data,n=e.summary,r=t.metadata,o=t.sha256,i=t.verified;return console.log(this.props.data),l.default.createElement(d.Classifier,{tag:"Places365",sha256:o,verified:i,keyframes:r.places365,labels:p.places365,summary:n})}}]),t}(c.Component);t.default=(0,f.connect)(function(){return{tag:"places365"}})(function(e){return l.default.createElement(d.Gate,(0,r.default)({View:m},e))})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=p(n(4)),o=p(n(5)),i=p(n(6)),a=p(n(7)),u=p(n(8)),s=p(n(9)),c=n(1),l=p(c),f=n(2),d=n(11);function p(e){return e&&e.__esModule?e:{default:e}}var h=function(e){function t(){var e,n,r,a;(0,i.default)(this,t);for(var s=arguments.length,c=Array(s),l=0;l<s;l++)c[l]=arguments[l];return n=r=(0,u.default)(this,(e=t.__proto__||(0,o.default)(t)).call.apply(e,[this].concat(c))),r.state={playing:!1},a=n,(0,u.default)(r,a)}return(0,s.default)(t,e),(0,a.default)(t,[{key:"render",value:function(){var e=this.props,t=e.data,n=e.summary,r=(this.state.playing,t.metadata.sugarcube);r.fp.replace("/var/www/files/","https://cube.syrianarchive.org/");return l.default.createElement("div",{className:"sugarcube"},l.default.createElement(d.Video,null),!n&&l.default.createElement(d.TableObject,{tag:"Sugarcube",object:r}))}}]),t}(c.Component);t.default=(0,f.connect)(function(){return{tag:"sugarcube"}})(function(e){return l.default.createElement(d.Gate,(0,r.default)({View:h},e))})},function(e,t,n){var r=n(516);"string"==typeof r&&(r=[[e.i,r,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(49)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(48)(!1)).push([e.i,".thumbnails {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n padding: 3px;\n}\n.keyframe {\n padding: 3px 3px 3px 3px;\n margin: 0 10px 20px 0;\n box-shadow: 0 0 0 rgba(0,0,0,0);\n transition: all 0.4ms;\n}\n.keyframe.isSaved {\n background-color: #ecebb5;\n box-shadow: 0 2px 2px rgba(0,0,0,0.2);\n}\n.keyframe img {\n background-color: #eee;\n}\n.thumbnails a {\n text-decoration: none;\n}\n.desktop .thumbnails .keyframe:hover {\n background: #eee;\n}\n.keyframe a {\n position: relative;\n display: block;\n}\n.detectionList label,\n.keyframe label {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding-bottom: 3px;\n}\n.keyframe label {\n color: #888;\n font-size: 14px;\n}\n.keyframe.th, .keyframe.th img { width: 160px; }\n.keyframe.sm, .keyframe.sm img { width: 320px; }\n.keyframe.md, .keyframe.md img { width: 640px; }\n.keyframe.lg, .keyframe.lg img { width: 1280px; }\n.keyframe.th img {\n min-height: 90px;\n}\n.keyframe .sha256 {\n display: inline-block;\n min-width: auto;\n max-width: 60px;\n margin-right: 5px;\n overflow: hidden;\n}\n.keyframe label small {\n display: flex;\n align-items: flex-start;\n}\n.keyframes {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n}\n\n.keyframeSummary .tableTuples td {\n text-align: left;\n}\n.keyframeSummary .detectionList {\n width: 326px;\n display: block;\n}\n.keyframeSummary .detectionList small {\n padding: 3px;\n font-size: inherit;\n}\n\nul.meta {\n list-style-type: none;\n margin: 3px 0 10px 0;\n padding: 0;\n padding-left: 3px;\n font-size: 12px;\n}\nul.meta li {\n list-style-type: none;\n display: inline-block;\n margin: 0; padding: 0;\n}\nul.meta li:first-child:before {\n content: '';\n padding: 0;\n}\nul.meta li:before {\n content: '\\B7';\n padding: 0 5px;\n}\n\n.sugarcube {\n margin-top: 10px;\n}",""])},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Browse=t.Results=t.Query=t.Meta=t.Container=t.Menu=void 0;var r=c(n(518)),o=c(n(520)),i=c(n(114)),a=c(n(210)),u=c(n(211)),s=c(n(525));function c(e){return e&&e.__esModule?e:{default:e}}n(526),t.Menu=r.default,t.Container=o.default,t.Meta=i.default,t.Query=a.default,t.Results=u.default,t.Browse=s.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=v(n(4)),o=v(n(5)),i=v(n(6)),a=v(n(7)),u=v(n(8)),s=v(n(9)),c=n(1),l=v(c),f=n(16),d=n(15),p=n(2),h=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(21)),m=v(n(519));function v(e){return e&&e.__esModule?e:{default:e}}var y=function(e){function t(){return(0,i.default)(this,t),(0,u.default)(this,(t.__proto__||(0,o.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,a.default)(t,[{key:"upload",value:function(e){var t=e.dataTransfer?e.dataTransfer.files:e.target.files,n=void 0,r=void 0;for(n=0;n<t.length&&(!(r=t[n])||!r.type.match("image.*"));n++);r&&this.props.actions.upload(r)}},{key:"random",value:function(){this.props.actions.random()}},{key:"render",value:function(){var e=this,t=this.props,n=t.savedCount,r=t.options;return l.default.createElement("div",{className:"searchForm row"},l.default.createElement("div",{className:"row"},l.default.createElement("div",{className:"upload"},l.default.createElement("button",{className:"btn"},l.default.createElement("span",null,"⤴")," Search by Upload"),l.default.createElement("input",{type:"file",name:"img",accept:"image/*",onChange:this.upload.bind(this),required:!0})),l.default.createElement("button",{className:"btn random",onClick:this.random.bind(this)},l.default.createElement("span",null,"♘")," Random"),l.default.createElement(m.default,null),l.default.createElement(f.Link,{to:h.publicUrl.review()},l.default.createElement("button",{className:"btn btn-primary"},l.default.createElement("span",null,"⇪")," "+n+" Saved Image"+(1===n?"":"s")))),l.default.createElement("div",{className:"row searchOptions"},l.default.createElement("select",{className:"form-select",onChange:function(t){return e.props.actions.updateOptions({thumbnailSize:t.target.value})},value:r.thumbnailSize},l.default.createElement("option",{value:"th"},"Thumbnail"),l.default.createElement("option",{value:"sm"},"Small"),l.default.createElement("option",{value:"md"},"Medium"),l.default.createElement("option",{value:"lg"},"Large")),l.default.createElement("label",{className:"row"},l.default.createElement("input",{type:"checkbox",checked:r.groupByHash,onChange:function(t){return e.props.actions.updateOptions({groupByHash:t.target.checked})}})," Group by hash"),l.default.createElement("label",{className:"row"},l.default.createElement("input",{type:"number",value:r.perPage,className:"perPage",min:1,max:100,onChange:function(t){return e.props.actions.updateOptions({perPage:t.target.value})},onBlur:function(){return window.location.reload()}})," per page")))}}]),t}(c.Component);t.default=(0,p.connect)(function(e){return{options:e.search.options,savedCount:e.review.count}},function(e){return{actions:(0,d.bindActionCreators)((0,r.default)({},h),e)}})(y)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=h(n(5)),o=h(n(6)),i=h(n(7)),a=h(n(8)),u=h(n(9)),s=n(1),c=h(s),l=n(16),f=n(15),d=n(2),p=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(21));function h(e){return e&&e.__esModule?e:{default:e}}var m=function(e){function t(){(0,o.default)(this,t);var e=(0,a.default)(this,(t.__proto__||(0,r.default)(t)).call(this));return e.keydown=e.keydown.bind(e),e}return(0,u.default)(t,e),(0,i.default)(t,[{key:"componentDidMount",value:function(){document.addEventListener("keydown",this.keydown)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("keydown",this.keydown)}},{key:"keydown",value:function(e){27===e.keyCode&&this.panic()}},{key:"panic",value:function(){this.props.actions.panic(),this.props.history.push("/search/")}},{key:"render",value:function(){var e=this;return c.default.createElement("button",{className:"btn panic",onClick:function(){return e.panic()}},c.default.createElement("span",null,"⚠")," Panic")}}]),t}(s.Component);t.default=(0,l.withRouter)((0,d.connect)(function(e){return{}},function(e){return{actions:(0,f.bindActionCreators)({panic:p.panic},e)}})(m))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=x(n(4)),o=x(n(93)),i=x(n(5)),a=x(n(6)),u=x(n(7)),s=x(n(8)),c=x(n(9)),l=n(1),f=x(l),d=n(16),p=n(15),h=n(2),m=w(n(209)),v=w(n(21)),y=w(n(112)),g=x(n(210)),_=x(n(211)),b=x(n(524));function w(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function x(e){return e&&e.__esModule?e:{default:e}}var E=function(e){function t(){return(0,a.default)(this,t),(0,s.default)(this,(t.__proto__||(0,i.default)(t)).apply(this,arguments))}return(0,c.default)(t,e),(0,u.default)(t,[{key:"componentDidMount",value:function(){var e=m.parse(this.props.location.search.substr(1));e&&e.url?this.props.searchActions.search(e.url):this.searchByHash()}},{key:"componentDidUpdate",value:function(e){e.match.params!==this.props.match.params&&(0,o.default)(this.props.match.params)!==(0,o.default)(e.match.params)&&this.searchByHash()}},{key:"searchByHash",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this.props.match.params,n=t.verified,r=t.hash,o=t.frame;n&&r&&o?this.props.searchActions.searchByVerifiedFrame(n,r,o,e):r&&o&&this.props.searchActions.searchByFrame(r,o,e),r&&!e&&this.props.metadataActions.fetchMetadata(r)}},{key:"searchByOffset",value:function(){var e=this.props.query.results.length,t=m.parse(this.props.location.search.substr(1));t&&t.url?this.props.searchActions.search(t.url,e):this.searchByHash(e)}},{key:"render",value:function(){var e=this,t=this.props.query,n=t.query,r=t.results,o=t.loadingMore,i=this.props.options,a=!0;n&&!n.reset&&!n.loading&&r&&r.length||(a=!1);var u=r&&r.length>Math.min(i.perPage,30),s=r&&r.length>i.perPage;return f.default.createElement("div",{className:"searchContainer"},f.default.createElement(g.default,null),f.default.createElement(_.default,null),a?o?f.default.createElement("div",{className:"loadingMore"},"Loading more results..."):f.default.createElement("button",{onClick:function(){return e.searchByOffset()},className:u?"btn loadMore wide":"btn loadMore"},"Load more"):f.default.createElement("div",null),!s&&f.default.createElement(b.default,null))}}]),t}(l.Component);t.default=(0,d.withRouter)((0,h.connect)(function(e){return{query:e.search.query,options:e.search.options,metadata:e.metadata}},function(e){return{searchActions:(0,p.bindActionCreators)((0,r.default)({},v),e),metadataActions:(0,p.bindActionCreators)((0,r.default)({},y),e)}})(E))},function(e,t,n){"use strict";function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,i){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var u=/\+/g;e=e.split(t);var s=1e3;i&&"number"==typeof i.maxKeys&&(s=i.maxKeys);var c=e.length;s>0&&c>s&&(c=s);for(var l=0;l<c;++l){var f,d,p,h,m=e[l].replace(u,"%20"),v=m.indexOf(n);v>=0?(f=m.substr(0,v),d=m.substr(v+1)):(f=m,d=""),p=decodeURIComponent(f),h=decodeURIComponent(d),r(a,p)?o(a[p])?a[p].push(h):a[p]=[a[p],h]:a[p]=h}return a};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var r=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,u){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?i(a(e),function(a){var u=encodeURIComponent(r(a))+n;return o(e[a])?i(e[a],function(e){return u+encodeURIComponent(r(e))}).join(t):u+encodeURIComponent(r(e[a]))}).join(t):u?encodeURIComponent(r(u))+n+encodeURIComponent(r(e)):""};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function i(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var a=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}},function(e,t){var n=window.Blob,r=100==new n([new Uint8Array(100)]).size;e.exports=function(e){for(var t=e.split(",")[1],o=atob(t),i=new ArrayBuffer(o.length),a=new Uint8Array(i),u=0;u<o.length;u++)a[u]=o.charCodeAt(u);r||(a=i);var s=new n([a],{type:function(e){return e.split(";")[0].slice(5)}(e)});return s.slice=s.slice||s.webkitSlice,s}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){return r.default.createElement("div",{className:"safety"},r.default.createElement("div",null,r.default.createElement("h4",null,"Safety Tips"),r.default.createElement("ul",null,r.default.createElement("li",null," Look away if you see something traumatic "),r.default.createElement("li",null," Hit ",r.default.createElement("tt",null,"ESC")," to activate panic mode (hides all images) "),r.default.createElement("li",null," Use thumbnails to reduce details "),r.default.createElement("li",null," Take breaks and refresh yourself with positive imagery "))))};var r=function(e){return e&&e.__esModule?e:{default:e}}(n(1))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=_(n(4)),o=_(n(5)),i=_(n(6)),a=_(n(7)),u=_(n(8)),s=_(n(9)),c=n(1),l=_(c),f=n(16),d=n(15),p=n(2),h=n(11),m=g(n(21)),v=g(n(112)),y=_(n(114));function g(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function _(e){return e&&e.__esModule?e:{default:e}}var b=function(e){function t(){return(0,i.default)(this,t),(0,u.default)(this,(t.__proto__||(0,o.default)(t)).apply(this,arguments))}return(0,s.default)(t,e),(0,a.default)(t,[{key:"componentDidMount",value:function(){this.browse()}},{key:"componentDidUpdate",value:function(e){e.match.params!==this.props.match.params&&this.browse()}},{key:"browse",value:function(){var e=this.props.match.params.hash;e&&this.props.searchActions.browse(e),e&&this.props.metadataActions.fetchMetadata(e)}},{key:"render",value:function(){var e=this.props,t=e.browse;e.options;return console.log("browse",t),!t||t.reset||t.loading?l.default.createElement("div",{className:"browseComponent column"},l.default.createElement("h3",null,"Loading keyframes..."),l.default.createElement(h.Loader,null)):l.default.createElement("div",{className:"browseComponent column"},l.default.createElement("h3",null,"Video Preview"),l.default.createElement(h.Video,{size:"md"}),l.default.createElement(y.default,{query:t,sugarcube:!0}),l.default.createElement("div",{className:"row buttons"},l.default.createElement(f.Link,{to:"/metadata/"+t.hash,className:"btn"},"View Full Metadata")),l.default.createElement("h3",null,"Keyframes"),l.default.createElement(h.Keyframes,{frames:t.frames,showHash:!0,showTimestamp:!0,showSearchButton:!0,showSaveButton:!0}))}}]),t}(c.Component);t.default=(0,f.withRouter)((0,p.connect)(function(e){return{browse:e.search.browse,options:e.search.options,metadata:e.metadata}},function(e){return{searchActions:(0,d.bindActionCreators)((0,r.default)({},m),e),metadataActions:(0,d.bindActionCreators)((0,r.default)({},v),e)}})(b))},function(e,t,n){var r=n(527);"string"==typeof r&&(r=[[e.i,r,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(49)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(48)(!1)).push([e.i,".btn span {\n font-size: large;\n}\n.row {\n display: flex;\n flex-direction: row;\n}\n.column {\n display: flex;\n flex-direction: column;\n}\n\n.searchContainer h3 {\n padding: 0;\n margin-top: 0;\n margin-bottom: 5px;\n margin-left: 3px;\n}\n.searchContainer h4 {\n margin-left: 0;\n width: 100%;\n}\n.searchContainer .subtitle {\n display: block;\n margin-left: 3px;\n margin-bottom: 10px;\n}\n.searchForm {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n padding: 20px;\n background: #eee;\n}\n.searchForm .row {\n align-items: center;\n}\n\n.searchMeta {\n display: flex;\n flex-direction: column;\n font-size: 14px;\n line-height: 18px;\n padding: 0;\n}\n.searchMeta span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: calc(100vw - 23px - 640px - 30px);\n}\n\n.keyframe .thumbnail {\n position: relative;\n cursor: pointer;\n}\n.keyframe .searchButtons {\n position: absolute;\n bottom: 0; left: 0;\n padding: 0 5px 15px 5px;\n width: 100%;\n text-align: center;\n opacity: 0;\n transition: all 0.2s;\n}\n.desktop .keyframe .thumbnail:hover .searchButtons,\n.mobile .keyframe .searchButtons {\n opacity: 1;\n}\n.keyframe .searchButtons .btn {\n margin-right: 0;\n height: auto;\n padding: 0.15rem 0.3rem;\n}\n.keyframe a {\n text-decoration: none;\n}\n\n.body > div.searchForm {\n padding-bottom: 20px;\n}\n.upload {\n position: relative;\n cursor: pointer;\n}\n.upload .btn {\n pointer-events: none;\n cursor: pointer;\n}\n.upload input {\n position: absolute;\n top: 0; left: 0;\n width: 100%; height: 100%;\n opacity: 0;\n cursor: pointer;\n}\n\n.reviewSaved,\n.browseComponent,\n.searchQuery {\n margin: 0px 10px;\n padding: 13px;\n}\n.searchQuery img {\n cursor: crosshair;\n user-select: none;\n max-width: 640px;\n max-height: 480px;\n}\n.searchContainer .searchQuery h3 {\n margin-left: 0;\n margin-bottom: 10px;\n}\n\n.searchBox {\n min-width: 640px;\n margin: 0 10px 0 0;\n background-color: #eee;\n position: relative;\n}\n.searchBox img {\n display: block;\n}\n.searchBox .box {\n position: absolute;\n cursor: crosshair;\n border: 1px solid #11f;\n background-color: rgba(16,16,255,0.1);\n}\n\n.searchResults {\n margin: 0 20px 20px 20px;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n}\n.searchResultsHeading {\n width: 100%;\n}\n.searchOptions .row {\n font-size: 12px;\n margin-left: 10px;\n}\n.searchOptions input {\n font-size: 12px;\n margin-right: 5px;\n font-family: Helvetica, sans-serif;\n}\n.searchOptions input[type=text],\n.searchOptions input[type=number] {\n width: 30px;\n text-align: right;\n}\n.keyframeGroup {\n max-width: 650px;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n align-content: flex-start;\n justify-content: flex-start;\n}\n.keyframeGroup h4 a {\n color: #888;\n text-decoration: none\n}\n.keyframeGroup h4 a:hover {\n text-decoration: underline\n}\n\n/* load more button that gets bigger */\n\n.loadMore {\n width: 400px;\n margin: 20px;\n height: 40px;\n transition: all;\n}\n.loadMore.wide {\n width: calc(100% - 40px);\n margin: 20px;\n height: 100px;\n}\n.loadingMore {\n margin: 20px 20px 200px 20px;\n}\n\n/* health and safety warning */\n\n.safety div {\n display: inline-block;\n margin: 20px 20px;\n padding: 10px;\n background: #fff8e8;\n color: #111;\n box-shadow: 0 1px 2px rgba(0,0,0,0.2);\n font-size: 13px;\n line-height: 1.4;\n}\n.safety ul {\n margin: 0;\n padding: 0 21px;\n}\n.safety li {\n padding: 1px 0 0 0;\n}\n.safety h4 {\n margin-top: 5px;\n}\n\n/* browser section */\n\n.browseComponent h3 {\n margin-bottom: 10px;\n}\n.browseComponent .buttons {\n margin-top: 10px;\n}\n\n/* disable twiddle button on input[type=number] */\n\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\ninput[type='number'] {\n -moz-appearance:textfield;\n}\n",""])},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Saved=void 0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(529));n(531),t.Saved=r.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=y(n(4)),o=y(n(28)),i=y(n(5)),a=y(n(6)),u=y(n(7)),s=y(n(8)),c=y(n(9)),l=n(1),f=y(l),d=n(15),p=n(2),h=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(97)),m=n(11),v=y(n(530));function y(e){return e&&e.__esModule?e:{default:e}}var g=function(e){function t(){var e,n,r,o;(0,a.default)(this,t);for(var u=arguments.length,c=Array(u),l=0;l<u;l++)c[l]=arguments[l];return n=r=(0,s.default)(this,(e=t.__proto__||(0,i.default)(t)).call.apply(e,[this].concat(c))),r.state={showAnnotator:!1},o=n,(0,s.default)(r,o)}return(0,c.default)(t,e),(0,u.default)(t,[{key:"render",value:function(){var e=this,t=this.props.saved,n=this.state.showAnnotator,r=(0,o.default)(t).sort().map(function(e){var n=t[e],r=n.verified,i=n.hash,a=n.frames;return(0,o.default)(a).sort().map(function(e){return{verified:r,hash:i,frame:e}})}).reduce(function(e,t){return t&&t.length?e.concat(t):e},[]),i=0===r.length;return f.default.createElement("div",{className:"reviewSaved"},f.default.createElement("h2",null,"Saved Images"),f.default.createElement("div",{className:"reviewButtons"},f.default.createElement("button",{className:"btn",disabled:i,onClick:function(){return e.setState({showAnnotator:!n})}},"Import into VCAT"),f.default.createElement("button",{className:"btn",disabled:i,onClick:function(){return e.props.actions.exportCSV()}},"Export CSV"),f.default.createElement("button",{className:"btn",disabled:i,onClick:function(){return e.props.actions.refresh()}},"Refresh"),f.default.createElement("button",{className:"btn reset",disabled:i,onClick:function(){return confirm("This will clear your saved images.")&&e.props.actions.clear()}},"Reset")),n&&f.default.createElement(v.default,null),f.default.createElement(m.Keyframes,{frames:r,showHash:!0,showTimestamp:!0,showSearchButton:!0,showSaveButton:!0}))}}]),t}(l.Component);t.default=(0,p.connect)(function(e){return{saved:e.review.saved}},function(e){return{actions:(0,d.bindActionCreators)((0,r.default)({},h),e)}})(g)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=v(n(4)),o=v(n(65)),i=v(n(5)),a=v(n(6)),u=v(n(7)),s=v(n(8)),c=v(n(9)),l=n(1),f=v(l),d=n(15),p=n(2),h=n(11),m=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(97));function v(e){return e&&e.__esModule?e:{default:e}}var y=function(e){function t(){(0,a.default)(this,t);var e=(0,s.default)(this,(t.__proto__||(0,i.default)(t)).call(this));return e.state={title:"",graphic:!1},e.handleInput=e.handleInput.bind(e),e}return(0,c.default)(t,e),(0,u.default)(t,[{key:"handleInput",value:function(e){var t=e.target,n=t.name,r=t.value;"title"===n&&(r=r.replace(/[^-_a-zA-Z0-9 ]/g,"")),"graphic"===n&&(r=e.target.checked),this.setState((0,o.default)({},n,r))}},{key:"render",value:function(){var e=this,t=this.props.review;return f.default.createElement("div",{className:"importMenu"},f.default.createElement("div",null,f.default.createElement("h3",null,"New VCAT Image Group"),f.default.createElement("label",null,f.default.createElement("input",{type:"text",name:"title",placeholder:"Title this group",autoComplete:"off",onChange:this.handleInput,value:this.state.title})),f.default.createElement("label",null,f.default.createElement("input",{type:"checkbox",name:"graphic",checked:this.state.graphic,onChange:this.handleInput})," ",f.default.createElement("small",null,"Graphic content")),f.default.createElement("label",null,f.default.createElement("button",{className:"btn check",onClick:this.props.actions.dedupe},t.dedupe.loading?"Deduping...":"Dedupe"),f.default.createElement("button",{className:"btn btn-primary create",onClick:function(){return e.props.actions.create(e.state)}},"Create Group"),(t.dedupe.loading||t.create.loading)&&f.default.createElement(h.Loader,null),!!t.dedupe.count&&t.dedupe.count+" images removed")))}}]),t}(l.Component);t.default=(0,p.connect)(function(e){return{review:e.review}},function(e){return{actions:(0,d.bindActionCreators)((0,r.default)({},m),e)}})(y)},function(e,t,n){var r=n(532);"string"==typeof r&&(r=[[e.i,r,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(49)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(48)(!1)).push([e.i,".importMenu {\n padding: 10px;\n margin: 10px 0;\n background: #eee;\n}\n.reviewButtons {\n margin-bottom: 10px;\n}\n.importMenu h3 {\n margin-top: 0;\n margin-bottom: 10px;\n}\n.importMenu label {\n display: block;\n margin-bottom: 5px;\n}\n.importMenu input[type=text] {\n font-size: 13px;\n width: 250px;\n}",""])}]); \ No newline at end of file
diff --git a/old/faiss/static/js/store2.min.js b/old/faiss/static/js/store2.min.js
new file mode 100644
index 00000000..75e3ca37
--- /dev/null
+++ b/old/faiss/static/js/store2.min.js
@@ -0,0 +1,5 @@
+/*! store2 - v2.7.0 - 2018-03-04
+* Copyright (c) 2018 Nathan Bubna; Licensed (MIT OR GPL-3.0) */
+
+!function(a,b){var c={version:"2.7.0",areas:{},apis:{},inherit:function(a,b){for(var c in a)b.hasOwnProperty(c)||(b[c]=a[c]);return b},stringify:function(a){return void 0===a||"function"==typeof a?a+"":JSON.stringify(a)},parse:function(a){try{return JSON.parse(a)}catch(b){return a}},fn:function(a,b){c.storeAPI[a]=b;for(var d in c.apis)c.apis[d][a]=b},get:function(a,b){return a.getItem(b)},set:function(a,b,c){a.setItem(b,c)},remove:function(a,b){a.removeItem(b)},key:function(a,b){return a.key(b)},length:function(a){return a.length},clear:function(a){a.clear()},Store:function(a,b,d){var e=c.inherit(c.storeAPI,function(a,b,c){return 0===arguments.length?e.getAll():"function"==typeof b?e.transact(a,b,c):void 0!==b?e.set(a,b,c):"string"==typeof a||"number"==typeof a?e.get(a):a?e.setAll(a,b):e.clear()});e._id=a;try{b.setItem("_-bad-_","wolf"),e._area=b,b.removeItem("_-bad-_")}catch(a){}return e._area||(e._area=c.inherit(c.storageAPI,{items:{},name:"fake"})),e._ns=d||"",c.areas[a]||(c.areas[a]=e._area),c.apis[e._ns+e._id]||(c.apis[e._ns+e._id]=e),e},storeAPI:{area:function(a,b){var d=this[a];return d&&d.area||(d=c.Store(a,b,this._ns),this[a]||(this[a]=d)),d},namespace:function(a,b){if(!a)return this._ns?this._ns.substring(0,this._ns.length-1):"";var d=a,e=this[d];return e&&e.namespace||(e=c.Store(this._id,this._area,this._ns+d+"."),this[d]||(this[d]=e),b||e.area("session",c.areas.session)),e},isFake:function(){return"fake"===this._area.name},toString:function(){return"store"+(this._ns?"."+this.namespace():"")+"["+this._id+"]"},has:function(a){return this._area.has?this._area.has(this._in(a)):!!(this._in(a)in this._area)},size:function(){return this.keys().length},each:function(a,b){for(var d=0,e=c.length(this._area);d<e;d++){var f=this._out(c.key(this._area,d));if(void 0!==f&&a.call(this,f,b||this.get(f))===!1)break;e>c.length(this._area)&&(e--,d--)}return b||this},keys:function(a){return this.each(function(a,b){b.push(a)},a||[])},get:function(a,b){var d=c.get(this._area,this._in(a));return null!==d?c.parse(d):b||d},getAll:function(a){return this.each(function(a,b){b[a]=this.get(a)},a||{})},transact:function(a,b,c){var d=this.get(a,c),e=b(d);return this.set(a,void 0===e?d:e),this},set:function(a,b,d){var e=this.get(a);return null!=e&&d===!1?b:c.set(this._area,this._in(a),c.stringify(b),d)||e},setAll:function(a,b){var c,d;for(var e in a)d=a[e],this.set(e,d,b)!==d&&(c=!0);return c},add:function(a,b){var d=this.get(a);if(d instanceof Array)b=d.concat(b);else if(null!==d){var e=typeof d;if(e===typeof b&&"object"===e){for(var f in b)d[f]=b[f];b=d}else b=d+b}return c.set(this._area,this._in(a),c.stringify(b)),b},remove:function(a){var b=this.get(a);return c.remove(this._area,this._in(a)),b},clear:function(){return this._ns?this.each(function(a){c.remove(this._area,this._in(a))},1):c.clear(this._area),this},clearAll:function(){var a=this._area;for(var b in c.areas)c.areas.hasOwnProperty(b)&&(this._area=c.areas[b],this.clear());return this._area=a,this},_in:function(a){return"string"!=typeof a&&(a=c.stringify(a)),this._ns?this._ns+a:a},_out:function(a){return this._ns?a&&0===a.indexOf(this._ns)?a.substring(this._ns.length):void 0:a}},storageAPI:{length:0,has:function(a){return this.items.hasOwnProperty(a)},key:function(a){var b=0;for(var c in this.items)if(this.has(c)&&a===b++)return c},setItem:function(a,b){this.has(a)||this.length++,this.items[a]=b},removeItem:function(a){this.has(a)&&(delete this.items[a],this.length--)},getItem:function(a){return this.has(a)?this.items[a]:null},clear:function(){for(var a in this.items)this.removeItem(a)},toString:function(){return this.length+" items in "+this.name+"Storage"}}},d=c.Store("local",function(){try{return localStorage}catch(a){}}());d.local=d,d._=c,d.area("session",function(){try{return sessionStorage}catch(a){}}()),"function"==typeof b&&void 0!==b.amd?b("store2",[],function(){return d}):"undefined"!=typeof module&&module.exports?module.exports=d:(a.store&&(c.conflict=a.store),a.store=d)}(this,this.define);
+//# sourceMappingURL=store2.min.js.map \ No newline at end of file
diff --git a/old/faiss/static/metadata.html b/old/faiss/static/metadata.html
new file mode 100644
index 00000000..e74e1ee1
--- /dev/null
+++ b/old/faiss/static/metadata.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <title>VFrame Metadata</title>
+ <link rel="shortcut icon" href="/search/static/favicon.ico" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ </head>
+ <body>
+ <script type="text/javascript" src="/search/static/js/metadata-app.js"></script></body>
+</html>
diff --git a/old/faiss/static/search.html b/old/faiss/static/search.html
new file mode 100644
index 00000000..056d06c1
--- /dev/null
+++ b/old/faiss/static/search.html
@@ -0,0 +1 @@
+search.html \ No newline at end of file
diff --git a/old/faiss/util.py b/old/faiss/util.py
new file mode 100644
index 00000000..97afbc22
--- /dev/null
+++ b/old/faiss/util.py
@@ -0,0 +1,29 @@
+import time
+import simplejson as json
+import pickle
+from os import path
+from collections import namedtuple
+
+# Converts JSON el['key'] to Pythonic object-style el.key
+def _json_object_hook(d):
+ return namedtuple('X', d.keys())(*d.values())
+
+# Load a JSON recipe
+def load_recipe(path):
+ with open(path) as fh:
+ return json.load(fh, object_hook=_json_object_hook)
+
+# Load a pickle file
+def load_pickle(data_dir, pkl_fn):
+ load_start = time.time()
+ with open(path.join(str(data_dir), str(pkl_fn)), 'rb') as fh:
+ raw = fh.read()
+ data = pickle.loads(raw)
+ load_end = time.time()
+ load_time = load_end - load_start
+ print("Pickle load time: {:.1f}s".format(load_time))
+ return data
+
+def read_json(fn):
+ with open(fn, 'r') as json_file:
+ return json.load(json_file)
diff --git a/old/faiss/wsgi.py b/old/faiss/wsgi.py
new file mode 100644
index 00000000..371862fb
--- /dev/null
+++ b/old/faiss/wsgi.py
@@ -0,0 +1,5 @@
+from server import app
+
+if __name__ == "__main__":
+ app.run()
+
diff --git a/old/server/app/README.md b/old/server/app/README.md
new file mode 100644
index 00000000..8bc70132
--- /dev/null
+++ b/old/server/app/README.md
@@ -0,0 +1,17 @@
+# Startup
+
+Run supervisor
+
+`/usr/bin/supervisord`
+
+Tail log file
+
+`tail -f /var/log/uwsgi/app/app.log`
+
+`/opt/redis/redis-stable/src/redis-server &`
+
+`celery worker -A celery_worker.celery --loglevel=info &`
+
+If using on Production Server
+
+`/usr/bin/nohup /usr/bin/supervisord &` \ No newline at end of file
diff --git a/old/server/app/__init__.py b/old/server/app/__init__.py
new file mode 100644
index 00000000..bce3f9ee
--- /dev/null
+++ b/old/server/app/__init__.py
@@ -0,0 +1,39 @@
+import logging
+from logging.handlers import RotatingFileHandler
+
+from flask import Flask
+from flask_bootstrap import Bootstrap
+
+from flask import Flask
+
+from config import config, Config
+
+bootstrap = Bootstrap()
+#celery = Celery(__name__, broker=Config.CELERY_BROKER_URL)
+from .basemodels import celery
+
+def create_app(config_name):
+ app = Flask(__name__)
+ app.config.from_object(config[config_name])
+ config[config_name].init_app(app)
+
+ bootstrap.init_app(app)
+ celery.conf.update(app.config)
+
+ from .main import main as main_blueprint
+ app.register_blueprint(main_blueprint)
+
+ #handler = RotatingFileHandler('debug.log', maxBytes=10000, backupCount=1)
+ #handler.setLevel(logging.INFO)
+ #app.logger.addHandler(handler)
+
+ format = "%(asctime)s - [%(levelname)s] %(message)s"
+ logging.basicConfig(filename='debug.log',
+ filemode='a',
+ format=format,
+ level=logging.DEBUG)
+ console = logging.StreamHandler()
+ console.setLevel(logging.DEBUG)
+ logging.getLogger(__name__).addHandler(console)
+
+ return app
diff --git a/old/server/app/basemodels.py b/old/server/app/basemodels.py
new file mode 100644
index 00000000..475ab0c2
--- /dev/null
+++ b/old/server/app/basemodels.py
@@ -0,0 +1,5 @@
+from config import config, Config
+from celery import Celery
+
+#bootstrap = Bootstrap()
+celery = Celery(__name__, broker=Config.CELERY_BROKER_URL)
diff --git a/old/server/app/favicon.ico b/old/server/app/favicon.ico
new file mode 100644
index 00000000..4d001b21
--- /dev/null
+++ b/old/server/app/favicon.ico
Binary files differ
diff --git a/old/server/app/index.html b/old/server/app/index.html
new file mode 100644
index 00000000..3c1b0dfd
--- /dev/null
+++ b/old/server/app/index.html
@@ -0,0 +1,161 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+ <link rel="shortcut icon" href="/static/img/favicon.ico" />
+ <title>DullDream (v2 x ZkM)</title>
+ <link rel="stylesheet" type="text/css" href="static/css/dullbrown-theme.css">
+</head>
+<body>
+
+<header>
+ <h1><a href="/"><img src="/static/img/dulldream_logo_200.png" alt="DullDream"></a></h1>
+ <h2 class="subtitle">Neural network photo effect</h2>
+</header>
+
+<div class="upload_view container">
+ <div class="row">
+ <div id="photo_area" class="dash_border">
+ <input class="hidden_input" id="user_file" type="file" accept="image/*">
+ <canvas class="photo" id="user_photo_canvas" width="512" height="512"></canvas>
+ <div class="center_inner">
+ <label id="take_photo_btn" for="user_file" class="upload_center_btn">
+ <div class='btn-lg btn'>Take Photo</div>
+ </label>
+ <div id="details"></div>
+ <div id="progress"></div>
+ </div>
+
+ <div id="preloader_anim">
+ <img src="/static/img/loader.gif">
+ </div>
+ </div>
+ </div>
+
+ <div id="upload_controls" class="row">
+ <div class="align_center">
+ <div id="restart_btn">
+ <a id="restart_btn" class="btn btn-md btn-default" role="button">Change Image</a>
+ <input type='file' accept="image/*">
+ </div>
+ <div id="dropdown_btn">
+ <select id="dropdown"></select>
+ </div>
+ <div id="upload_btn">
+ <a id="take_photo_btn" class="btn btn-md btn-important" role="button">Upload</a>
+ </div>
+ </div>
+ <div class="align_center consent_box">
+ <label>
+ <input type="checkbox" id="agree" value="1" checked>
+ I consent to have my dulled image displayed at ZkM.
+ </label>
+ </div>
+ </div>
+
+ <div id="about_btn" class="row">
+ <div class="align_center">
+ <a class="btn btn-sm btn-default about_button" role="button">About</a>
+ <a class="btn btn-sm btn-default privacy_button" role="button">Privacy</a>
+ <p class="notice">
+ All images uploaded can be used for exhibition and review purposes.
+ </p>
+ <p class="notice">
+ Currently this work is on view at <a href="http://zkm.de/en/event/2017/10/open-codes">ZKM</a>. View recent DullDreams <a href="/gallery">here</a>.
+ </p>
+ </div>
+ </div>
+</div>
+
+<div class="about_view modal">
+ <div class="inner">
+ <header>
+ <h1><img src="/static/img/dulldream_logo_200.png" alt="DullDream"></h1>
+ </header>
+ <div class='content'>
+ <p>
+ <b><i>DullDream™ by DullTech™</i></b> is a series of experiments appropriating neural network image recognition technology to make visual representation less interesting.
+ </p>
+ <p>
+ Can machine learning help us desensitize? Our impactful lives are clogging up social media feeds with unique filter settings, leaving us nostalgic for a vanilla future. Can machine learning help us achieve this? Take the excitement out of our lives, prepare us for a time where we will all have to be the same, have the same values and culture? Painting a future where the Dull is no longer a dream but a nightmare?
+ </p>
+ <p>
+ DullDream™ was developed for Transmediale 2017 - Ever Elusive by <a href="http://constantdullaart.com">Constant Dullaart</a> in collaboration with <a href="http://ahprojects.com">Adam Harvey</a>. It has generously been made possible by the Creative Industries Fund NL.
+ </p>
+ </div>
+ <center><a class="btn btn-sm btn-default" href="/" role="button">Home</a></center>
+ </div>
+</div>
+
+<div class="privacy_view modal">
+ <div class="inner">
+ <header>
+ <h1><img src="/static/img/dulldream_logo_200.png" alt="DullDream"></h1>
+ </header>
+ <div class='content'>
+ <h3>Privacy Notice</h3>
+ <p>
+ Images uploaded to this site are being used for a public art display at <a href="http://zkm.de/en/event/2017/10/open-codes">ZKM</a>
+ </p>
+ <p>
+ If you would not like to be included, be sure to uncheck the permission box on the upload page.
+ </p>
+
+ </div>
+ <center><a class="btn btn-sm btn-default" href="/" role="button">Home</a></center>
+ </div>
+</div>
+
+
+<div class="result_view">
+ <div class="final_result">
+ </div>
+
+ <div class="row made_with">
+ Made with DullDream.xyz for ZKM OpenCodes 2017
+ </div>
+
+ <div class="row">
+ <button class='btn' id="show_all_results">Detailed Analysis</button>
+ </div>
+
+ <div class="all_results">
+ </div>
+
+ <div id="share_btns" class="row">
+ <a id="permalink" href="#">Permalink</a>
+ </div>
+
+ <div id="about_btn" class="row">
+ <div class="align_center">
+ <a href="/" class="btn btn-sm btn-default home_button" role="button">Home</a>
+ <a class="btn btn-sm btn-default about_button" role="button">About</a>
+ <a class="btn btn-sm btn-default privacy_button" role="button">Privacy</a>
+ </div>
+
+ </div>
+
+</div>
+
+<div id="footer">
+ DullDream™ (beta) by <a href="http://constantdullaart.com">Constant Dullaart</a>.
+ Made in collaboration with <a href="http://ahprojects.com">Adam Harvey</a>
+</div>
+
+</body>
+<script type="text/html" id="result_template">
+ <div class="row">
+ <img src="{img}"><br>
+ <b>{title}</b>
+ </div>
+</script>
+<script type="text/json" id="dropdown_options">[]</script>
+<script type="text/javascript" src="static/js/vendor/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="static/js/vendor/ExifReader.js"></script>
+<script type="text/javascript" src="static/js/vendor/canvas-to-blob.js"></script>
+<script type="text/javascript" src="static/js/vendor/prefixfree.js"></script>
+<script type="text/javascript" src="static/js/util.js"></script>
+<script type="text/javascript" src="static/js/upload.js"></script>
+<script type="text/javascript" src="static/js/app.js"></script>
+</html>
diff --git a/old/server/app/main/__init__.py b/old/server/app/main/__init__.py
new file mode 100644
index 00000000..a21e2754
--- /dev/null
+++ b/old/server/app/main/__init__.py
@@ -0,0 +1,5 @@
+from flask import Blueprint
+
+main = Blueprint('main', __name__)
+
+from . import views, errors, tasks, utils \ No newline at end of file
diff --git a/old/server/app/main/errors.py b/old/server/app/main/errors.py
new file mode 100644
index 00000000..60b5f227
--- /dev/null
+++ b/old/server/app/main/errors.py
@@ -0,0 +1,32 @@
+from flask import render_template, request, jsonify
+from . import main
+
+
+@main.app_errorhandler(403)
+def forbidden(e):
+ if request.accept_mimetypes.accept_json and \
+ not request.accept_mimetypes.accept_html:
+ response = jsonify({'error': 'forbidden'})
+ response.status_code = 403
+ return response
+ return render_template('403.html'), 403
+
+
+@main.app_errorhandler(404)
+def page_not_found(e):
+ if request.accept_mimetypes.accept_json and \
+ not request.accept_mimetypes.accept_html:
+ response = jsonify({'error': 'not found'})
+ response.status_code = 404
+ return response
+ return render_template('404.html'), 404
+
+
+@main.app_errorhandler(500)
+def internal_server_error(e):
+ if request.accept_mimetypes.accept_json and \
+ not request.accept_mimetypes.accept_html:
+ response = jsonify({'error': 'internal server error'})
+ response.status_code = 500
+ return response
+ return render_template('500.html'), 500
diff --git a/old/server/app/main/forms.py b/old/server/app/main/forms.py
new file mode 100644
index 00000000..bc1399ad
--- /dev/null
+++ b/old/server/app/main/forms.py
@@ -0,0 +1,60 @@
+from flask.ext.wtf import Form
+from wtforms import StringField, TextAreaField, BooleanField, SelectField,\
+ SubmitField
+from wtforms.validators import Required, Length, Email, Regexp
+from wtforms import ValidationError
+from flask.ext.pagedown.fields import PageDownField
+from ..models import Role, User
+
+
+class NameForm(Form):
+ name = StringField('What is your name?', validators=[Required()])
+ submit = SubmitField('Submit')
+
+
+class EditProfileForm(Form):
+ name = StringField('Real name', validators=[Length(0, 64)])
+ location = StringField('Location', validators=[Length(0, 64)])
+ about_me = TextAreaField('About me')
+ submit = SubmitField('Submit')
+
+
+class EditProfileAdminForm(Form):
+ email = StringField('Email', validators=[Required(), Length(1, 64),
+ Email()])
+ username = StringField('Username', validators=[
+ Required(), Length(1, 64), Regexp('^[A-Za-z][A-Za-z0-9_.]*$', 0,
+ 'Usernames must have only letters, '
+ 'numbers, dots or underscores')])
+ confirmed = BooleanField('Confirmed')
+ role = SelectField('Role', coerce=int)
+ name = StringField('Real name', validators=[Length(0, 64)])
+ location = StringField('Location', validators=[Length(0, 64)])
+ about_me = TextAreaField('About me')
+ submit = SubmitField('Submit')
+
+ def __init__(self, user, *args, **kwargs):
+ super(EditProfileAdminForm, self).__init__(*args, **kwargs)
+ self.role.choices = [(role.id, role.name)
+ for role in Role.query.order_by(Role.name).all()]
+ self.user = user
+
+ def validate_email(self, field):
+ if field.data != self.user.email and \
+ User.query.filter_by(email=field.data).first():
+ raise ValidationError('Email already registered.')
+
+ def validate_username(self, field):
+ if field.data != self.user.username and \
+ User.query.filter_by(username=field.data).first():
+ raise ValidationError('Username already in use.')
+
+
+class PostForm(Form):
+ body = PageDownField("What's on your mind?", validators=[Required()])
+ submit = SubmitField('Submit')
+
+
+class CommentForm(Form):
+ body = StringField('Enter your comment', validators=[Required()])
+ submit = SubmitField('Submit')
diff --git a/old/server/app/main/img_proc_config.py b/old/server/app/main/img_proc_config.py
new file mode 100644
index 00000000..db124978
--- /dev/null
+++ b/old/server/app/main/img_proc_config.py
@@ -0,0 +1,20 @@
+# paths for image processors
+import os
+from os.path import join
+
+class ImgProcConfig:
+
+ def __init__(self):
+ dir_models = '/data_store/apps/dulldream/dnn_models'
+
+ # mask rcnn
+ self.mask_rcnn_class_config = '/dulldream/src/config/coco_meta.json'
+ self.mask_rcnn_model = join(dir_models,'tf/mask_rcnn_coco.h5')
+
+ # p2p
+ self.p2p_ckpts_dir = join(dir_models,'p2p/coco2014_person')
+ self.p2p_epoch = 'latest'
+
+ # p2p objects only
+ self.p2p_bg_ckpts_dir = join(dir_models,'p2p/coco2014_objects')
+ self.p2p_bg_epoch = 'latest'
diff --git a/old/server/app/main/paths.py b/old/server/app/main/paths.py
new file mode 100644
index 00000000..69c21627
--- /dev/null
+++ b/old/server/app/main/paths.py
@@ -0,0 +1,19 @@
+from flask import current_app as app
+
+def get_paths(agree):
+ if agree:
+ return (
+ app.config['UPLOADS'],
+ app.config['RENDERS'],
+ app.config['JSON_DIR'],
+ app.config['UPLOADS_URI'],
+ app.config['RENDERS_URI'],
+ )
+ else:
+ return (
+ app.config['UPLOADS_PRIVATE'],
+ app.config['RENDERS_PRIVATE'],
+ app.config['JSON_PRIVATE_DIR'],
+ app.config['UPLOADS_PRIVATE_URI'],
+ app.config['RENDERS_PRIVATE_URI'],
+ )
diff --git a/old/server/app/main/tasks.py b/old/server/app/main/tasks.py
new file mode 100644
index 00000000..970e6988
--- /dev/null
+++ b/old/server/app/main/tasks.py
@@ -0,0 +1,374 @@
+import os
+import sys
+import time
+import datetime
+import json
+from PIL import Image, ImageFilter
+import cv2 as cv
+import numpy as np
+from . import main, utils
+from .. import basemodels
+from flask import current_app as app
+from .paths import get_paths
+celery = basemodels.celery
+from celery.utils.log import get_task_logger
+celery_logger = get_task_logger(__name__)
+import imutils
+
+
+# init image processors
+sys.path.append('/dulldream/src/')
+from .img_proc_config import ImgProcConfig
+from image_processors.mask_rcnn import MaskRCNN
+from image_processors.pix2pix import Pix2Pix
+from utils import imx
+from utils import fiox
+
+
+# initialize image processor
+img_proc_config = ImgProcConfig()
+p2p = Pix2Pix(img_proc_config.p2p_ckpts_dir,epoch=img_proc_config.p2p_epoch)
+p2p_objects = Pix2Pix(img_proc_config.p2p_bg_ckpts_dir,epoch=img_proc_config.p2p_epoch)
+
+mask_rcnn = MaskRCNN(img_proc_config.mask_rcnn_class_config,
+ model_path=img_proc_config.mask_rcnn_model)
+
+
+@celery.task(bind=True)
+def task_dull(self, uuid_name, agree, mask_rcnn_result):
+ """Process image and update during"""
+ celery_logger.debug('process_image_task, uuid: {}'.format(uuid_name))
+
+ upload_dir, render_dir, json_dir, upload_uri, render_uri = get_paths(agree)
+
+ files = []
+ im = Image.open(os.path.join(upload_dir, uuid_name + '.jpg')).convert('RGB')
+ #im_np = cv.cvtColor(imx.ensure_np(im),cv.COLOR_RGB2BGR)
+ im_np = imx.ensure_np(im)
+ im_np = im_np[:,:,::-1]
+ im = im.resize((256,256))
+ im_np_256 = imutils.resize(im_np,width=256)
+
+ # Add original
+ fpath = os.path.join(render_dir, uuid_name + '_orig.jpg')
+ im.save(fpath, 'JPEG', quality=95)
+ files.append({
+ 'title': 'Original',
+ 'fn': render_uri + uuid_name + '_orig.jpg'
+ })
+
+ if mask_rcnn_result['valid']:
+ # -----------------------------------------------
+ # Segment image (processed in views)
+ # seems to be an error with async celery processor?
+ # -----------------------------------------------
+
+ # parse mrcnn data
+ im_mask = cv.imread(mask_rcnn_result['fp_im_mask'])
+ seg_mask = cv.imread(mask_rcnn_result['fp_seg_mask'])
+ #score = mask_rcnn_result['score']
+ #name = mask_rcnn_result['name']
+ #color = mask_rcnn_result['color']
+ files.append({
+ 'title': 'Semantic Segmentation',
+ 'fn': render_uri + uuid_name + '_seg_mask.jpg'
+ })
+ files.append({
+ 'title': 'Semantic Segmentation Isolate',
+ 'fn': render_uri + uuid_name + '_im_mask.jpg'
+ })
+
+
+ # -----------------------------------------------
+ # run rag generator
+ # -----------------------------------------------
+
+ self.update_state(
+ state = 'PROCESSING',
+ meta = {
+ 'percent': 0.50,
+ 'message': 'Applying Region Adjacency Graph',
+ 'uuid': uuid_name
+ })
+
+ # save the regions adjancency graph
+ im_rag = imx.create_rag_mean(im_mask,compactness=30,n_segments=128)
+ fpath = os.path.join(render_dir, uuid_name + '_rgraph.jpg')
+ imx.save_np_as_pil(fpath,im_rag,quality=95)
+ files.append({
+ 'title': 'Region Adjacency Graph',
+ 'fn': render_uri + uuid_name + '_rgraph.jpg'
+ })
+
+
+ # -----------------------------------------------
+ # generate p2p fake
+ # -----------------------------------------------
+
+ self.update_state(
+ state = 'PROCESSING',
+ meta = {
+ 'percent': 0.75,
+ 'message': 'Running generative adversarial network...',
+ 'uuid': uuid_name
+ })
+
+
+ # convert segmentation to mask
+ seg_mask_gray = cv.cvtColor(seg_mask,cv.COLOR_BGR2GRAY)
+ seg_mask_gray[seg_mask_gray > 1] = 255
+
+ # find best P2P fit
+ ims_p2p = []
+ match_amts = []
+ iters = 15
+ for i in range(0,iters):
+ im_p2p = p2p.create_p2p(im_rag)
+ ims_p2p.append(im_p2p)
+ im_p2p_mask = cv.cvtColor(im_p2p,cv.COLOR_RGB2GRAY)
+ im_p2p_mask[im_p2p_mask > 1] = 255
+ # find where masks intersect
+ matches = np.bitwise_and(im_p2p_mask,seg_mask_gray)
+ amt = len(np.where(matches == 255)[0])
+ match_amts.append(amt)
+ self.update_state(
+ state = 'PROCESSING',
+ meta = {
+ 'percent': 0.75,
+ 'message': 'Generating ({}/{})'.format(i,iters),
+ 'uuid': uuid_name
+ })
+
+ best_idx = np.argmax(match_amts)
+ im_p2p = ims_p2p[best_idx]
+
+ fpath = os.path.join(render_dir, uuid_name + '_gan.jpg')
+ imx.save_np_as_pil(fpath,im_p2p,quality=95)
+ files.append({
+ 'title': 'Generative Adversarial Network',
+ 'fn': render_uri + uuid_name + '_gan.jpg'
+ })
+
+
+ # -----------------------------------------------
+ # generate p2p fake
+ # -----------------------------------------------
+
+ # announce to user
+ self.update_state(
+ state = 'PROCESSING',
+ meta = {
+ 'percent': 0.90,
+ 'message': 'Compositing images...',
+ 'uuid': uuid_name
+ })
+
+
+ # apply masked cloning
+ im_p2p_gray = cv.cvtColor(im_p2p,cv.COLOR_BGR2GRAY)
+ im_clone_mask = np.zeros_like(im_p2p_gray,dtype=np.uint8)
+ im_clone_mask[im_p2p_gray > 1] = 255
+
+
+ # apply smoothed copy+paste clone
+ im_blur_mask = np.zeros(im_np_256.shape[:2],dtype=np.float64)
+ im_blur_mask[im_p2p_gray > 1] = 1.0
+ im_blur_mask = np.array([im_blur_mask,im_blur_mask,im_blur_mask]).transpose((1,2,0))
+
+ # erode mask to remove black border
+ kernel = np.ones((3,3),np.uint8)
+ im_blur_mask = cv.erode(im_blur_mask,kernel,iterations = 3)
+
+ # feather mask
+ feather_amt = (3,3)
+ im_blur_mask = (cv.GaussianBlur(im_blur_mask,feather_amt, 0) > 0) * 1.0 #?
+ im_blur_mask = cv.GaussianBlur(im_blur_mask,feather_amt, 0)
+ im_blur_mask = np.clip(im_blur_mask,0.0,1.0)
+
+ # mask p2p fg --> photo bg
+ im_dull = im_np_256.astype(np.float64) * (1.0 - im_blur_mask) + im_p2p.astype(np.float64) * im_blur_mask
+ im_dull = im_dull.astype(np.uint8)
+
+
+ else:
+ print('No person. Apply background P2P')
+ celery_logger.debug('No person. Apply background P2P, uuid: {}'.format(uuid_name))
+ im_bg_blur = cv.GaussianBlur(im_np_256,(31,31),0)
+ im_bg_rag = imx.create_rag_mean(im_bg_blur,compactness=30,n_segments=64)
+
+ # apply gan
+ im_dull = p2p_objects.create_p2p(im_bg_rag)
+
+ # resize back to full 512px
+ im_dull_512 = imutils.resize(im_dull,width=512)
+
+ # save dulldream image
+ fpath = os.path.join(render_dir, uuid_name + '_dull.jpg')
+ imx.save_np_as_pil(fpath,im_dull_512,quality=95)
+ files.append({
+ 'title': 'Your DullDream',
+ 'fn': render_uri + uuid_name + '_dull.jpg'
+ })
+
+
+ # -----------------------------------------------
+ # Write data to disk
+ # -----------------------------------------------
+
+ data = {
+ 'uuid': uuid_name,
+ 'date': str(datetime.datetime.now()),
+ 'files': files
+ }
+
+ json_path = os.path.join(json_dir, uuid_name + '.json')
+ with open(json_path, 'w') as json_file:
+ json.dump(data, json_file)
+
+ return {
+ 'percent': 100,
+ 'state': 'complete',
+ 'uuid': uuid_name
+ }
+
+
+
+
+@celery.task(bind=True)
+def blur_task(self, uuid_name, agree, extra):
+ """Process image and update during"""
+ celery_logger.debug('process_image_task, uuid: {}'.format(uuid_name))
+
+ upload_dir, render_dir, json_dir, upload_uri, render_uri = get_paths(agree)
+
+ files = []
+
+ im = Image.open(os.path.join(upload_dir, uuid_name + '.jpg')).convert('RGB')
+ im = im.resize((256,256))
+ files.append({
+ 'title': 'Original image',
+ 'fn': upload_uri + uuid_name + '.jpg'
+ })
+
+ self.update_state(
+ state = 'PROCESSING',
+ meta = {
+ 'percent': 0.25,
+ 'message': 'Applying blur',
+ 'uuid': uuid_name
+ })
+
+ im_np = utils.ensure_np(im)
+ im_blur = cv.blur(im_np, (5,5), 1.0)
+ im_blur_pil = utils.ensure_pil(im_blur)
+
+ fn = uuid_name + '_blur.jpg'
+ fpath = os.path.join(render_dir, fn)
+ im_blur_pil.save(fpath, 'JPEG', quality=95)
+
+ files.append({
+ 'title': 'Blurred image',
+ 'fn': render_uri + uuid_name + '_blur.jpg'
+ })
+
+ time.sleep(3)
+
+ self.update_state(
+ state = 'PROCESSING',
+ meta = {
+ 'percent': 0.50,
+ 'message': 'Sleeping for some reason',
+ 'uuid': uuid_name
+ })
+ time.sleep(2)
+
+ self.update_state(
+ state = 'PROCESSING',
+ meta = {
+ 'percent': 0.75,
+ 'message': 'Sleeping some more',
+ 'uuid': uuid_name
+ })
+ time.sleep(2)
+
+ data = {
+ 'uuid': uuid_name,
+ 'date': str(datetime.datetime.now()),
+ 'files': files
+ }
+
+ json_path = os.path.join(json_dir, uuid_name + '.json')
+ with open(json_path, 'w') as json_file:
+ json.dump(data, json_file)
+
+ celery_logger.debug('ok')
+
+ return {
+ 'percent': 100,
+ 'state': 'complete',
+ 'uuid': uuid_name,
+ }
+
+@celery.task(bind=True)
+def sleep_task(self, uuid_name):
+ celery_logger.debug('sleep_task'.format(uuid_name))
+ msgs = [
+ {'msg':'Uploaded OK','time':.1},
+ {'msg':'Segmenting Image...','time':2},
+ {'msg':'Found: Person, Horse','time':1},
+ {'msg':'Creating Pix2Pix','time':2}
+ ]
+ for i,m in enumerate(msgs):
+ percent = int(float(i)/float(len(msgs))*100.0)
+ self.update_state(
+ state = 'PROCESSING',
+ meta = {
+ 'percent': percent,
+ 'message': m['msg'],
+ 'uuid': uuid_name
+ })
+ celery_logger.debug(m['msg'])
+ time.sleep(m['time'])
+
+ return {
+ 'percent': 100,
+ 'state': 'complete',
+ 'uuid': uuid_name
+ }
+
+def make_task_json():
+ dropdown = {}
+ for k,v in task_lookup.items():
+ if 'active' not in v or v['active'] is not False:
+ is_default = 'default' in v and v['default'] is True
+ task = {
+ 'name': k,
+ 'title': v['title'],
+ 'selected': is_default,
+ }
+ dropdown[k] = task
+ return json.dumps(dropdown)
+
+# Add all valid tasks to this lookup.
+# Set 'active': False to disable a task
+# Set 'default': True to define the default task
+
+task_lookup = {
+ 'sleep': {
+ 'title': 'Sleep Test',
+ 'task': sleep_task,
+ 'active': False
+ },
+ 'blur': {
+ 'title': 'Blur',
+ 'task': blur_task,
+ 'active': False
+ },
+ 'task_dull': {
+ 'title': 'DullDream V2',
+ 'task': task_dull,
+ 'active': True,
+ 'default': True
+ }
+}
+
diff --git a/old/server/app/main/utils.py b/old/server/app/main/utils.py
new file mode 100644
index 00000000..510e5c23
--- /dev/null
+++ b/old/server/app/main/utils.py
@@ -0,0 +1,37 @@
+from flask import current_app as app
+from PIL import Image
+import numpy as np
+import cv2 as cv
+import os
+from os.path import join
+
+def ensure_pil(im):
+ try:
+ im.verify()
+ return im
+ except:
+ return Image.fromarray(im.astype('uint8'), 'RGB')
+
+def ensure_np(im):
+ if type(im) == np.ndarray:
+ return im
+ return np.asarray(im, np.uint8)
+
+def get_recent_uploads(limit=10):
+ d_uploads = app.config['UPLOADS']
+ d_renders = app.config['RENDERS']
+
+ # list all files in uploads dir
+ filenames = [s for s in os.listdir(d_uploads)
+ if os.path.isfile(os.path.join(d_uploads, s))]
+ # sort upload files by date
+ filenames.sort(key=lambda s: os.path.getmtime(os.path.join(d_uploads, s)),reverse=True)
+ basenames = [os.path.splitext(os.path.basename(f))[0] for f in filenames]
+ basenames = basenames[:limit]
+ filenames = [f for f in basenames if os.path.isfile(join(d_renders,'{}_dull.jpg'.format(f)))]
+
+ # create list for uploads and renders
+ uploads = [join('/img/uploads',f) for f in filenames]
+ renders = [join('/img/renders','{}_dull'.format(f)) for f in filenames]
+ urls = [join('/d',f) for f in basenames]
+ return uploads, renders, urls
diff --git a/old/server/app/main/views.py b/old/server/app/main/views.py
new file mode 100644
index 00000000..11a8ca53
--- /dev/null
+++ b/old/server/app/main/views.py
@@ -0,0 +1,300 @@
+import os
+import uuid
+import json
+from flask import render_template, redirect, url_for, send_from_directory
+from flask import request, make_response, jsonify
+from . import main, utils
+from .tasks import task_lookup, make_task_json
+from PIL import Image, ImageOps
+import cv2 as cv
+
+from .paths import get_paths
+
+from flask import current_app as app
+from werkzeug.utils import secure_filename
+import imutils
+
+# ------------------------------------------------------------
+# Temp: run mask rcnn outside celery
+# ------------------------------------------------------------
+
+# init image processors
+import sys
+from .img_proc_config import ImgProcConfig
+sys.path.append('/dulldream/src/')
+from image_processors.mask_rcnn import MaskRCNN
+from utils import imx
+from utils import fiox
+
+img_proc_congif = ImgProcConfig()
+mask_rcnn = MaskRCNN(img_proc_congif.mask_rcnn_class_config,
+ model_path=img_proc_congif.mask_rcnn_model)
+
+# ------------------------------------------------------------
+# Tasks
+# ------------------------------------------------------------
+
+@main.route('/status/<task_name>/<task_id>')
+def task_status(task_name, task_id):
+ """Return celery image processing status"""
+ if task_name in task_lookup:
+ task = task_lookup[task_name]['task'].AsyncResult(task_id)
+ else:
+ return jsonify({
+ 'state': 'error',
+ 'percent': 100,
+ 'message': 'Unknown task'
+ })
+
+ app.logger.info('task state: {}'.format(task.state))
+ if task.state == 'PENDING':
+ response = {
+ 'state': task.state,
+ 'percent': 0,
+ 'message': 'Pending...'
+ }
+ elif task.state != 'FAILURE':
+ response = {
+ 'state': task.state,
+ 'percent': task.info.get('percent', 0),
+ 'uuid': task.info.get('uuid', 0),
+ 'message': task.info.get('message', '')
+ }
+ if 'result' in task.info:
+ response['result'] = task.info['result']
+ else:
+ # something went wrong in the background job
+ response = {
+ 'state': task.state,
+ 'percent': 100,
+ 'message': str(task.info), # this is the exception raised
+ }
+ return jsonify(response)
+
+# ------------------------------------------------------------
+# POST Routes
+# ------------------------------------------------------------
+
+@main.route('/upload/sleep', methods=['GET', 'POST'])
+def sleep_test():
+ async_task = task_lookup['sleep']['task'].apply_async(args=['sleep_test'])
+ task_url = url_for('main.task_status', task_name='sleep', task_id=async_task.id)
+ return jsonify({
+ 'result': True,
+ 'task_url': task_url,
+ })
+
+@main.route('/upload', methods=['POST'])
+def upload():
+
+ style = request.form['style']
+ print('style',style)
+ if style in task_lookup:
+ task = task_lookup[style]['task']
+ print('task',task)
+ else:
+ return jsonify({
+ 'result': False,
+ 'error': 'Unknown task',
+ })
+
+ file = request.files['user_image']
+ agree = bool(request.form['agree'])
+ ext = request.form['ext']
+ if ext is None:
+ ext = request.files['ext']
+
+ uuid_name = str(uuid.uuid4())
+
+ app.logger.info('[+] style: {}'.format(style))
+ app.logger.info('[+] ext: {}'.format(ext))
+ app.logger.info('[+] uuid_name: {}'.format(uuid_name))
+ app.logger.info('[+] agreed: {}'.format(agree))
+
+ # convert PNG to JPG
+ print('[+] Resizing image')
+
+ # LOL MaskRCNN needs to be run outside of the Celery Task
+ im = Image.open(file.stream).convert('RGB')
+ im = ImageOps.fit(im,(512,512))
+ if agree:
+ upload_folder = app.config['UPLOADS']
+ else:
+ upload_folder = app.config['UPLOADS_PRIVATE']
+
+ fpath = os.path.join(upload_folder, uuid_name + '.jpg')
+
+ # Save image to disk
+ print('[+] Save image to {}'.format(fpath))
+ im.save(fpath, 'JPEG', quality=100)
+ im_pil_256 = im.resize((256,256))
+
+ print('[+] ensure_np...')
+ im_np = imx.ensure_np(im_pil_256)
+ #print('[+] resize np...')
+ #im_np = imutils.resize(im_np,width=256)
+
+ upload_dir, render_dir, json_dir, upload_uri, render_uri = get_paths(agree)
+
+ print('[+] Run mrcnn...')
+ try:
+ result = mask_rcnn.create_segmentations(im_np,concat=True)
+ except:
+ print('[-] Error. Could not run mask_rcnn')
+ result = []
+
+ if len(result) > 0:
+ result = result[0]
+
+ # save data, then pass to celery task
+ print('[+] Save masks')
+ seg_mask = result['seg_mask']
+ fpath_seg_mask = os.path.join(render_dir, uuid_name + '_seg_mask.jpg')
+ #cv.imwrite(fpath_seg_mask,cv.cvtColor(seg_mask,cv.COLOR_BGR2RGB))
+ #seg_mask = seg_mask[:,:,::-1]
+ seg_mask_pil = imx.ensure_pil(seg_mask)
+ seg_mask_pil.save(fpath_seg_mask, 'JPEG', quality=100)
+
+ im_mask = result['im_mask']
+ fpath_im_mask = os.path.join(render_dir, uuid_name + '_im_mask.jpg')
+ #im_mask = im_mask[:,:,::-1]
+ im_mask_pil = imx.ensure_pil(im_mask)
+ im_mask_pil.save(fpath_im_mask, 'JPEG',quality=100)
+ #cv.imwrite(fpath_im_mask,cv.cvtColor(im_mask,cv.COLOR_BGR2RGB))
+
+ celery_result = {
+ 'score':str(result['score']),
+ 'name':str(result['name']),
+ 'class_index':str(result['class_index']),
+ 'color':str(result['color']),
+ 'fp_im_mask':fpath_im_mask,
+ 'fp_seg_mask':fpath_seg_mask,
+ 'valid':True
+ }
+ else:
+ print('[-] no reults. process background only')
+ celery_result = {
+ 'score':None,
+ 'name':None,
+ 'class_index':None,
+ 'color':None,
+ 'fp_im_mask':None,
+ 'fp_seg_mask':None,
+ 'valid':False
+ }
+
+ print('[+] Start celery')
+ async_task = task.apply_async(args=[uuid_name, agree, celery_result])
+ task_url = url_for('main.task_status', task_name=style, task_id=async_task.id)
+
+ return jsonify({
+ 'result': True,
+ 'task_url': task_url,
+ 'uuid': uuid_name
+ })
+
+
+
+# ----------------------------------------------------
+# Fileserver, temp solution
+# ----------------------------------------------------
+
+@main.route('/img/<string:imtype>/<string:uuid_name>')
+def get_image(imtype,uuid_name):
+ """Return image files from render or uploads"""
+ if imtype == 'uploads':
+ d = app.config['UPLOADS']
+ suffix = ''
+ elif imtype == 'renders':
+ d = app.config['RENDERS']
+ suffix = ''
+ elif imtype == 'fcn':
+ d = app.config['RENDERS']
+ suffix = '_fcn8'
+
+ fname = uuid_name + suffix + '.jpg'
+ fpath = os.path.join(d, fname)
+
+ if os.path.isfile(fpath):
+ return send_from_directory(d,fname)
+ else:
+ return send_from_directory('static', 'img/404.jpg')
+
+# ----------------------------------------------------
+# Deleting images
+# ----------------------------------------------------
+
+def destroy_data(uuid_name, is_public):
+ uri_base = app.config['URI_BASE']
+ upload_dir, render_dir, json_dir, upload_uri, render_uri = get_paths(is_public)
+
+ json_path = os.path.join(json_dir, uuid_name + '.json')
+ with open(json_path) as json_file:
+ data = json.load(json_file)
+ for f in data['files']:
+ path = os.path.join(uri_base, f['fn'][1:])
+ if os.path.exists(path):
+ os.remove(path)
+ os.remove(json_path)
+
+@main.route('/d/<uuid_name>/destroy', strict_slashes=False) # public
+def route_public_destroy(uuid_name):
+ destroy_data(uuid_name, True)
+ return redirect("/", code=302)
+
+@main.route('/p/<uuid_name>/destroy', strict_slashes=False) # private
+def route_private_destroy(uuid_name):
+ destroy_data(uuid_name, False)
+ return redirect("/", code=302)
+
+# ----------------------------------------------------
+# Static routes
+# ----------------------------------------------------
+
+# Most of the pages are served with the single page app in index.html:
+
+task_json = make_task_json()
+
+@main.route('/', strict_slashes=False)
+def index():
+ return render_template('index.html', task_json=task_json)
+
+@main.route('/about', strict_slashes=False)
+def about():
+ return render_template('index.html', task_json=task_json)
+
+@main.route('/d/<uuid_name>', strict_slashes=False) # public
+def route_public(uuid_name):
+ return render_template('index.html', task_json=task_json)
+
+@main.route('/p/<uuid_name>', strict_slashes=False) # private
+def route_private(uuid_name):
+ return render_template('index.html', task_json=task_json)
+
+@main.route('/privacy', strict_slashes=False)
+def privacy():
+ return render_template('index.html', task_json=task_json)
+
+# Some of the pages have their own static file:
+
+@main.route('/gallery', strict_slashes = False)
+def gallery():
+ app.logger.info('access gallery')
+ uploads, renders, urls = utils.get_recent_uploads(limit=50)
+ uuids = [os.path.splitext(os.path.basename(f))[0] for f in uploads]
+ images = [{'upload':u,'render':r, 'url':url} for u,r,url in zip(uploads,renders,urls)]
+ return render_template('gallery.html',images=images)
+
+@main.route('/zkm', strict_slashes=False)
+def zkm():
+ app.logger.info('access ZkM')
+ return render_template('zkm.html')
+
+@main.route('/celery', strict_slashes=False)
+def celery_route():
+ return render_template('celery.html')
+
+@main.route('/projector', strict_slashes=False)
+def projector():
+ uploads, renders,urls = utils.get_recent_uploads()
+ return render_template('projector.html', uploads=uploads, renders=renders)
diff --git a/old/server/app/static/css/bootstrap.min.css b/old/server/app/static/css/bootstrap.min.css
new file mode 100644
index 00000000..ed3905e0
--- /dev/null
+++ b/old/server/app/static/css/bootstrap.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file
diff --git a/old/server/app/static/css/dullbrown-theme.css b/old/server/app/static/css/dullbrown-theme.css
new file mode 100644
index 00000000..98aff038
--- /dev/null
+++ b/old/server/app/static/css/dullbrown-theme.css
@@ -0,0 +1,502 @@
+* { box-sizing: border-box; }
+html {
+ margin: 0; padding: 0;
+ width: 100%; height: 100%;
+}
+body {
+ margin: 0; padding: 0;
+ width: 100%; height: 100%;
+ font-family: Helvetica, sans-serif;
+}
+body, .modal, #footer {
+ /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#a5ce3e+0,ffffff+50,a5ce3e+100 */
+ background: #7B7568; /* Old browsers */
+ background: -moz-linear-gradient(left, #7B7568 0%, #ffffff 50%, #7B7568 100%); /* FF3.6-15 */
+ background: -webkit-linear-gradient(left, #7B7568 0%,#ffffff 50%,#7B7568 100%); /* Chrome10-25,Safari5.1-6 */
+ background: linear-gradient(to right, #7B7568 0%,#ffffff 50%,#7B7568 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7B7568', endColorstr='#a5ce3e',GradientType=1 ); /* IE6-9 */
+}
+
+/* ------------------------------------------------ */
+/* navbar */
+.navbar-default a.navbar-brand{
+}
+.navbar-default{
+ background: transparent;
+}
+.navbar{
+ margin-bottom: 0;
+ border:0;
+}
+
+.navbar-default .navbar-brand a{
+ color:#ccc;
+}
+.navbar-default a.navbar-brand{
+ color:#ccc;
+}
+.navbar-default a.navbar-brand:hover{
+ color:#fff;
+}
+
+/* Hamburger */
+.navbar-default .navbar-toggle{
+ color:#ccc;
+}
+.navbar-default .navbar-toggle .icon-bar{
+ color:#ccc;
+}
+.navbar-default .navbar-toggle .icon-bar:hover{
+ color:#fff;
+}
+.navbar-default .navbar-toggle:focus, .navbar-default .navbar-toggle:hover{
+ color:#fff;
+ background: transparent;
+}
+.navbar{
+ border-radius: 0px;
+ min-height:30px;
+}
+.navbar-default .navbar-text{
+ color:#ccc;
+}
+.navbar-default .navbar-nav>li>a{
+ color:#ccc;
+}
+.navbar-default .navbar-nav>li>a:hover{
+ color:#fff;
+}
+.navbar-default .navbar-toggle .icon-bar{
+ background-color:#ccc;
+}
+.navbar-default .navbar-toggle:hover .icon-bar{
+ background-color: #eee;
+}
+.navbar-default .navbar-toggle:hover {
+ border-color: #fff;
+}
+.navbar-default .navbar-collapse, .navbar-default .navbar-form{
+ border:0;
+}
+
+/* ------------------------------------------------ */
+/* Jumbotron */
+.jumbotron {
+ padding-top: 0px;
+ padding-bottom: 0px;
+ margin-bottom: 0px;
+ color: inherit;
+}
+.jumbotron{
+ background: transparent;
+ color:black;
+}
+.jumbotron h1{
+ color:#ddd;
+ margin-bottom:0px;
+}
+.jumbotron a.btn-primary{
+ background:#ddd;
+ color:#333;
+}
+.jumbotron a.btn-primary:hover{
+ background:#eee;
+ color:#222;
+}
+.jumbotron p > a.jcallout{
+ color:#eee;
+ padding-bottom: 3px;
+ border-bottom:1px dotted;
+ text-decoration: none;
+}
+.jumbotron p > a.jcallout:hover{
+ color:#fff;
+ border-bottom:1px solid #ccc;
+ text-decoration: none;
+}
+.jumbotron a.btn-default{
+ color:#eee;
+ border:1px solid #eee;
+ background: transparent;
+}
+.jumbotron a.btn-default:hover{
+ background: #22f;
+ border:1px solid #ccc;
+}
+.jumbotron a.btn-default:active{
+ color:#eee;
+ border:1px solid #ccc;
+}
+
+/* Input button override
+-------------------------------------------------- */
+/*input[type="file"] {
+ display: none;
+}
+input[type="button"] {
+ display: none;
+}*/
+input.hidden_input{
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+}
+
+/* Global styles
+-------------------------------------------------- */
+h1,h2,h3,h4,h5,h6 {
+ font-weight: bold;
+ font-style: italic;
+ text-align: center;
+}
+h1 {
+ font-size:56px;
+ margin-top: 20px;
+ margin-bottom: 0;
+}
+h2 {
+ font-size:20px;
+ margin-top: 0;
+ margin-bottom: 24px;
+}
+ul {
+ list-style: none;
+ margin:0;
+ padding:0;
+}
+li {
+ display: inline-block;
+}
+img.img_responsive_dull {
+ max-width: 100%;
+ height: auto;
+}
+#photo_area{
+ width: 512px;
+ height: 512px;
+ max-width: 97vw;
+ max-height: 97vw;
+ min-width: 240px;
+ min-height: 240px;
+ margin:0 auto;
+ text-align: center;
+}
+.dash_border{
+ background-color: rgba(255,255,255,.2);
+ border:1px dashed #000;
+}
+
+label {
+ display: block;
+}
+
+div.center_inner {
+ position: relative;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+#upload_controls{
+ margin-top:25px;
+ display: none;
+}
+#restart_btn, #rotate_btn, #upload_btn, #dropdown_btn {
+ display: inline-block;
+ margin-left:5px;
+ margin-right:5px;
+}
+.custom-file-upload {
+ display: inline-block;
+ padding: 6px 12px;
+ cursor: pointer;
+}
+
+.align_center{
+ text-align: center;
+}
+
+ul.action-buttons{
+ margin-top: 40px;
+ list-style: none;
+ margin-left: 0;
+ padding-left:0;
+}
+li {
+ list-style: none;
+ margin-left: 0;
+ padding-left:0;
+ /*margin-bottom:20px;*/
+}
+
+.btn {
+ display: inline-block;
+ color: #333;
+ background-color: #fff;
+ border: 1px solid #adadad;
+ font-family: Helvetica, sans-serif;
+ padding: 6px 12px;
+ margin: 0;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 1.42857143;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ border-radius: 4px;
+ text-decoration: none;
+ transition: all 0.15s;
+}
+.desktop .btn:hover {
+ background-color: #fff;
+}
+.btn.btn-lg {
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+.btn.btn-sm {
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+.btn.btn-important {
+ border-width: 2px;
+ border-color: #444;
+}
+#photo_area {
+ position: relative;
+ cursor: pointer;
+}
+#restart_btn {
+ position: relative;
+ cursor: pointer;
+}
+input[type=file] {
+ cursor: pointer;
+ opacity: 0;
+ position: absolute;
+ top: 0; left: 0;
+ width: 100%; height: 100%;
+}
+.desktop #photo_area .btn {
+ background: #fff;
+}
+.desktop #photo_area .btn:hover {
+ background: #eee;
+}
+.consent_box {
+ margin-top: 10px;
+ font-size: smaller;
+ color: #444;
+}
+
+/* Intro page
+-------------------------------------------------- */
+canvas {
+ display: block;
+}
+.photo {
+ display: none;
+ width:100%;
+ height:100%;
+}
+
+/* form visibility */
+
+#preloader_anim {
+ display: none;
+}
+#about_btn {
+ margin: 20px 0px 80px 0;
+}
+#share_btns {
+ display: none;
+ margin:20px;
+}
+.notice {
+ color: #444;
+ font-size: small;
+}
+a.btn-default {
+ background-color: transparent;
+}
+a.btn-default:hover {
+ color: #333;
+ background-color: #fff;
+ border-color: #adadad;
+}
+.debug-view {
+ margin-bottom: 20px;
+ font-size:14px;
+ color:#333;
+}
+.debug-view img {
+ margin-bottom:4px;
+}
+#full_results, #hide_more {
+ display: none;
+}
+
+select {
+ display: inline-block;
+ height: 34px;
+ padding: 6px 12px;
+ font-size: 14px;
+ line-height: 1.428571429;
+ color: #555;
+ vertical-align: middle;
+ background-color: #eee;
+ background-image: none;
+ border: 1px solid #bbb;
+ border-radius: 4px;
+ transition: all .15s;
+ cursor: pointer;
+}
+.desktop select:hover {
+ background-color: #fff;
+ cursor: pointer;
+}
+
+/* About
+--------------------------------------------------- */
+.modal {
+ pointer-events: none;
+ opacity: 0;
+ width: 100%;
+ height: 100%;
+ position: fixed;
+ top: 0; left: 0;
+ transition: all 0.2s;
+}
+.modal.visible {
+ pointer-events: auto;
+ opacity: 1;
+}
+.modal p {
+ font-size: 16px;
+ line-height: 24px;
+}
+.modal .inner {
+ margin: 10vh auto;
+ background: rgba(255,255,255,0.5);
+ padding: 20px 20px 40px 20px;
+ width: 600px;
+ max-width: 90vw;
+}
+.modal .content {
+ margin-bottom: 20px;
+}
+
+/* Result
+--------------------------------------------------- */
+.result_view {
+ display: none;
+ text-align: center;
+}
+.final_result img {
+ width: 512px;
+ height: 512px;
+ border: 1px dashed #000;
+ margin: 10px;
+}
+.all_results {
+ display: none;
+}
+.all_results div {
+ margin-bottom: 20px;
+}
+.all_results img {
+ width: 384px;
+ height: 384px;
+ margin: 10px;
+}
+
+.made_with {
+ margin-bottom: 10px;
+}
+#delete_btns {
+ margin-top: 10px;
+ font-size: 10px;
+}
+a#destroy_data {
+ color: #888;
+}
+.desktop a#destroy_data:hover {
+ color: #f00;
+}
+
+/* Footer
+--------------------------------------------------- */
+#footer{
+ /*background: #ddd;*/
+ /*padding: 20px 0;*/
+ /*position: fixed;*/
+ bottom: 0;
+ width: 100%;
+ text-align: center;
+ padding-top: 40px;
+ padding-bottom: 20px;
+}
+#footer ul li a {
+ font-weight: bold;
+ text-decoration: none;
+}
+#footer a {
+ color:#333;
+ text-decoration: underline;
+}
+#footer a:hover {
+ color:#111;
+}
+
+@media screen and (max-width: 500px) {
+ .modal {
+ width: 100vw;
+ height: 100vh;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ .modal .inner {
+ margin: 0;
+ width: 100vw;
+ height: 100vh;
+ max-width: 100vw;
+ }
+}
+
+
+/* Gallery */
+
+.gallery-preview-row{
+ margin-bottom: 40px
+}
+.gallery-preview-row img{
+ width:100%;
+ padding:2px;
+}
+
+@media (max-width: 600px) {
+ #preloader_anim {
+ position: relative;
+ top: -50px;
+ }
+}
+
+/*hide dropdown*/
+#dropdown_btn{
+ display: none;
+} \ No newline at end of file
diff --git a/old/server/app/static/css/projector.css b/old/server/app/static/css/projector.css
new file mode 100644
index 00000000..401f0dff
--- /dev/null
+++ b/old/server/app/static/css/projector.css
@@ -0,0 +1,52 @@
+html, body, #wrapper {
+ height:100%;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ border: 0;
+ background-color: #000;
+}
+table{
+ padding:0;
+ margin:0;
+ border-spacing: 0;
+}
+table td{
+ padding:0;
+ margin:0;
+}
+#wrapper td {
+ vertical-align: middle;
+ text-align: center;
+}
+#wrapper img{
+ margin-top:-350px;
+ margin-left:-350px;
+}
+.left{
+ background-color: #000;
+}
+.right{
+ background-color: #000;;
+}
+
+#container{
+}
+#container-left{
+ width:50%;
+ float:left;
+ position: relative;
+}
+#container-right{
+ width:50%;
+ float:right;
+ position: relative;
+}
+
+.cycle{position:relative;display: none;}
+.cycle img{position:absolute;z-index:1}
+.cycle img.active{z-index:100}
+.cycle img{
+ width:700px;
+ height:700px;
+} \ No newline at end of file
diff --git a/old/server/app/static/js/app.js b/old/server/app/static/js/app.js
new file mode 100644
index 00000000..454d5c37
--- /dev/null
+++ b/old/server/app/static/js/app.js
@@ -0,0 +1,158 @@
+var app = (function(){
+
+ var app = {}
+
+ app.init = function(){
+ upload.init()
+ app.bind()
+ app.build()
+ app.resize()
+ app.route()
+ }
+ app.bind = function(){
+ $(window).on('resize', app.resize)
+ $(".about_button").on('click', app.about_show)
+ $(".privacy_button").on('click', app.privacy_show)
+ $(".modal").on('click', app.modal_hide)
+ $(".modal .btn").on('click', app.modal_hide)
+ $(".modal .inner").on('click', preventDefault)
+ $("#destroy_data").on('click', app.destroyData)
+ $("#show_all_results").on('click', app.showAllResults)
+ }
+ app.build = function(){
+ var items = JSON.parse(decodeEntities($("#dropdown_options").html()))
+ var $dropdown = $("#dropdown")
+ var options = Object.keys(items).sort().map(key => {
+ var item = items[key]
+ var option = document.createElement('option')
+ option.value = item.name
+ option.innerHTML = item.title
+ if (item.selected) option.selected = true
+ $dropdown.append(option)
+ })
+ var loader = new Image ()
+ loader.src = '/static/img/loader.gif'
+ }
+ app.resize = function(){
+ var $el = $('#photo_area')
+ var w = $el.width()
+ $el.height($el.width())
+ }
+ app.route = function(){
+ const path = window.location.pathname.split('/')
+ path.shift()
+ switch (path[0]) {
+ case 'd':
+ app.processingComplete(path[1], true) // public
+ break
+ case 'p':
+ app.processingComplete(path[1], false) // private
+ break
+ case 'about':
+ app.about_show()
+ break
+ case 'privacy':
+ app.privacy_show()
+ break
+ default:
+ // load index, default state
+ break
+ }
+ }
+
+ /* upload UI changes */
+
+ app.didPickPhoto = function(){
+ $('#upload_controls').fadeIn()
+ $('#user_photo_canvas').show()
+ $('#take_photo_btn').hide()
+ }
+ app.didClickUpload = function(){
+ $('#upload_controls').slideUp('fast')
+ $('#user_photo_canvas').hide()
+ $('#preloader_anim').fadeIn('fast')
+ $('#progress').fadeIn()
+ }
+ app.uploadDidComplete = function(){
+ $('#preloader_anim').hide()
+ $('#progress').hide()
+ }
+ app.uploadDidComplete = function(){
+ // $('#preloader_anim').hide()
+ // $('#progress').hide()
+ }
+ app.updateProgress = function(message, percentage){
+ message = message || "Processing..."
+ percentage = percentage || 0
+ $("#progress").html(message)
+ }
+ app.processingComplete = function(uuid, is_public){
+ $('#preloader_anim').hide()
+ $('#progress').hide()
+ //
+ $("header h2").html("Your dull result")
+ $(".upload_view").hide()
+ $(".results_view").show()
+ var endpoint = is_public ? 'json' : 'json_private'
+ $.getJSON('/static/media/' + endpoint + '/' + uuid + '.json', function(data){
+ console.log(data)
+ var template = $("#result_template").html()
+ var final_result = new Image
+ final_result.src = data.files[data.files.length-1].fn
+ $(".final_result").empty()
+ $(".all_results").empty()
+ $(".final_result").append(final_result)
+ data.files.forEach(function(file){
+ var t = template.replace(/{img}/, file.fn).replace(/{title}/, file.title)
+ $(".all_results").append(t)
+ })
+ $(".result_view").show()
+ $(".permalink").attr('href', window.location.href)
+ }).fail(function(){
+ console.log('error fetching json')
+ window.location.href = '/'
+ })
+ }
+ var detailed = false
+ app.showAllResults = function(){
+ if (!detailed) {
+ detailed = true
+ $(this).html('Hide')
+ $(".all_results").fadeIn('fast')
+ } else {
+ detailed = false
+ $(this).html('Detailed Analysis')
+ $(".all_results").slideUp('fast')
+ }
+ }
+ app.destroyData = function(){
+ var uuid = window.location.pathname.split('/')[2]
+ var confirmed = confirm("Do you really want to delete your dull dream?")
+ if (confirmed) {
+ $.get( [window.location.pathname, 'destroy'].join('/').replace('//', '/') ).always(function(){
+ alert('Dull dream deleted!')
+ window.location.href = '/'
+ })
+ }
+ }
+
+ /* modals */
+
+ app.about_show = function(e){
+ e.preventDefault()
+ $(".about_view").addClass('visible')
+ }
+ app.privacy_show = function(e){
+ e.preventDefault()
+ $(".privacy_view").addClass('visible')
+ }
+ app.modal_hide = function(e){
+ e.preventDefault()
+ e.stopPropagation()
+ $(".modal").removeClass('visible')
+ }
+
+ document.addEventListener('DOMContentLoaded', app.init)
+
+ return app
+})() \ No newline at end of file
diff --git a/old/server/app/static/js/upload.js b/old/server/app/static/js/upload.js
new file mode 100644
index 00000000..27437e43
--- /dev/null
+++ b/old/server/app/static/js/upload.js
@@ -0,0 +1,319 @@
+var messages = {
+ is_processing: "Running semantic segmentation...",
+ upload_failed: "Error attempting to upload the file.",
+ upload_cancelled: "Upload cancelled or browser dropped connection.",
+ unable_to_compute: "We're sorry! We were unable to compute your image.",
+ pending: "Sending to Generative Adversarial Network...",
+ complete: "Processing complete!",
+}
+
+var upload = (function(){
+ var upload = {}
+ var uploading = false
+
+ var MAX_SIDE = 512
+
+ upload.init = function(){
+ upload.bind()
+ }
+
+ upload.bind = function(){
+ $("input[type=file]").on('change', upload.change)
+ $("#upload_btn").on('click', upload.go)
+ document.body.addEventListener("dragover", upload.dragover)
+ document.body.addEventListener("dragleave", upload.dragover)
+ document.body.addEventListener("drop", upload.change)
+ }
+
+ upload.dragover = function(e){
+ e.stopPropagation()
+ e.preventDefault()
+ }
+
+ upload.change = function(e){
+ e.preventDefault()
+ var files = e.dataTransfer ? e.dataTransfer.files : e.target.files
+ if (files.length) {
+ var file = files[files.length - 1]
+ if (!file.type.match('image.*'))
+ return
+ var reader = new FileReader()
+ reader.onload = onReaderLoad
+ reader.readAsDataURL(file)
+ }
+ function onReaderLoad(e) {
+ // Don't leak!
+ reader.onload = null
+ var img = new Image
+ img.onload = function(){
+ img.onload = null
+ upload.ready(img)
+ }
+ img.src = e.target.result
+ }
+ }
+
+ upload.ready = function(img){
+ var resized = renderToCanvas(img, { correctOrientation: true })
+ var canvas = document.querySelector('#user_photo_canvas')
+ ctx = canvas.getContext('2d')
+ ctx.fillStyle = 'black'
+ ctx.fillRect(0, 0, MAX_SIDE, MAX_SIDE)
+ var x_offset = (MAX_SIDE - resized.width) / 2
+ var y_offset = (MAX_SIDE - resized.height) / 2
+
+ ctx.drawImage(resized, x_offset, y_offset)
+ app.didPickPhoto()
+ }
+
+ upload.go = function(){
+ if (uploading) return
+ uploading = true
+ app.didClickUpload()
+ try {
+ var canvas = document.querySelector('#user_photo_canvas')
+ var cb = canvas.toBlob(function(blob){
+ upload.send(blob)
+ }, 'image/jpeg', 89)
+ } catch(e){
+ app.updateProgress(messages.unable_to_compute)
+ }
+ }
+
+ upload.send = function(blob){
+ console.log("sending upload...")
+ var fd = new FormData()
+ fd.append('user_image', blob)
+ fd.append('ext', 'jpg')
+ fd.append('style', $("#dropdown").val())
+ fd.append('agree', $("#agree").val() || 0)
+
+ var xhr = new XMLHttpRequest()
+ xhr.upload.addEventListener("progress", upload.progress, false)
+ xhr.addEventListener("load", upload.complete, false)
+ xhr.addEventListener("error", upload.failed, false)
+ xhr.addEventListener("abort", upload.canceled, false)
+ xhr.open("POST", "/upload")
+ xhr.send(fd)
+ }
+
+ upload.progress = function (e) {
+ if (e.lengthComputable) {
+ var percentComplete = Math.round(e.loaded * 100 / e.total)
+ if (percentComplete > 99) {
+ app.updateProgress(messages.is_processing)
+ } else {
+ app.updateProgress("Uploaded " + percentComplete.toString() + '%')
+ }
+ }
+ else {
+ app.updateProgress(messages.unable_to_compute)
+ }
+ }
+
+ upload.complete = function (e) {
+ uploading = false
+ try {
+ var data = JSON.parse(e.target.responseText)
+ } catch (e) {
+ return app.updateProgress(messages.upload_failed)
+ }
+ app.uploadDidComplete()
+ upload.data = data
+ upload.task_progress(data.task_url)
+ }
+
+ upload.failed = function (evt) {
+ uploading = false
+ app.updateProgress(messages.upload_failed)
+ }
+
+ upload.cancelled = function (evt) {
+ uploading = false
+ app.updateProgress(messages.upload_cancelled)
+ }
+
+ upload.task_progress = function (status_url) {
+ var is_public = $("#agree").val() || 0
+ var uuid = upload.data.uuid
+ $.getJSON(status_url, function(data){
+ console.log(data)
+ var alive = true
+ var delay = 500
+ switch(data.state) {
+ case 'PENDING':
+ app.updateProgress(messages.pending)
+ delay = 2000
+ break
+ case 'PROCESSING':
+ app.updateProgress(data.message, data.percent)
+ delay = 500
+ break
+ case 'SUCCESS':
+ app.updateProgress(messages.complete)
+ if (is_public) {
+ history.pushState({}, 'DullDream', '/d/' + uuid)
+ } else {
+ history.pushState({}, 'DullDream', '/p/' + uuid)
+ }
+ app.processingComplete(uuid, is_public) // truthy if private
+ alive = false
+ break
+ default:
+ // NB: error state
+ alive = false
+ break
+ }
+ if (alive) {
+ setTimeout(function() {
+ upload.task_progress(status_url)
+ }, delay)
+ }
+ })
+ }
+
+
+ function renderToCanvas(img, options) {
+ if (!img) return
+ options = options || {}
+
+ // Canvas max size for any side
+ var maxSize = MAX_SIDE
+ var canvas = document.createElement('canvas')
+ var ctx = canvas.getContext('2d')
+ var initialScale = options.scale || 1
+ // Scale to needed to constrain canvas to max size
+ var scale = getScale(img.width * initialScale, img.height * initialScale, maxSize, maxSize, true)
+ // Still need to apply the user defined scale
+ scale *= initialScale
+ var width = canvas.width = Math.round(img.width * scale)
+ var height = canvas.height = Math.round(img.height * scale)
+ var correctOrientation = options.correctOrientation
+ var jpeg = !!img.src.match(/data:image\/jpeg|\.jpeg$|\.jpg$/i)
+ var hasDataURI = !!img.src.match(/^data:/)
+
+ ctx.save()
+
+ // Can only correct orientation on JPEGs represented as dataURIs
+ // for the time being
+ if (correctOrientation && jpeg && hasDataURI) {
+ applyOrientationCorrection(canvas, ctx, img.src)
+ }
+ // Resize image if too large
+ if (scale !== 1) {
+ ctx.scale(scale, scale)
+ }
+
+ ctx.drawImage(img, 0, 0)
+ ctx.restore()
+
+ return canvas
+ }
+
+ function getScale(width, height, viewportWidth, viewportHeight, fillViewport) {
+ fillViewport = !!fillViewport
+ var landscape = (width / height) > (viewportWidth / viewportHeight)
+ if (landscape) {
+ if (fillViewport) {
+ return fitVertical()
+ } else if (width > viewportWidth) {
+ return fitHorizontal()
+ }
+ } else {
+ if (fillViewport) {
+ return fitHorizontal()
+ } else if (height > viewportHeight) {
+ return fitVertical()
+ }
+ }
+ return 1
+
+ function fitHorizontal() {
+ return viewportWidth / width
+ }
+
+ function fitVertical() {
+ return viewportHeight / height
+ }
+ }
+
+ function applyOrientationCorrection(canvas, ctx, uri) {
+ var orientation = getOrientation(uri)
+ // Only apply transform if there is some non-normal orientation
+ if (orientation && orientation !== 1) {
+ var transform = orientationToTransform[orientation]
+ var rotation = transform.rotation
+ var mirror = transform.mirror
+ var flipAspect = rotation === 90 || rotation === 270
+ if (flipAspect) {
+ // Fancy schmancy swap algo
+ canvas.width = canvas.height + canvas.width
+ canvas.height = canvas.width - canvas.height
+ canvas.width -= canvas.height
+ }
+ if (rotation > 0) {
+ applyRotation(canvas, ctx, rotation)
+ }
+ }
+ }
+
+ function applyRotation(canvas, ctx, deg) {
+ var radians = deg * (Math.PI / 180)
+ if (deg === 90) {
+ ctx.translate(canvas.width, 0)
+ } else if (deg === 180) {
+ ctx.translate(canvas.width, canvas.height)
+ } else if (deg == 270) {
+ ctx.translate(0, canvas.height)
+ }
+ ctx.rotate(radians)
+ }
+
+ function getOrientation (uri) {
+ var exif = new ExifReader
+ // Split off the base64 data
+ var base64String = uri.split(',')[1]
+ // Read off first 128KB, which is all we need to
+ // get the EXIF data
+ var arr = base64ToUint8Array(base64String, 0, Math.pow(2, 17))
+ try {
+ exif.load(arr.buffer)
+ return exif.getTagValue('Orientation')
+ } catch (err) {
+ return 1
+ }
+ }
+
+ function base64ToUint8Array(string, start, finish) {
+ var start = start || 0
+ var finish = finish || string.length
+ // atob that shit
+ var binary = atob(string)
+ var buffer = new Uint8Array(binary.length)
+ for (var i = start; i < finish; i++) {
+ buffer[i] = binary.charCodeAt(i)
+ }
+ return buffer
+ }
+
+ /**
+ * Mapping from EXIF orientation values to data
+ * regarding the rotation and mirroring necessary to
+ * render the canvas correctly
+ * Derived from:
+ * http://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto/
+ */
+ var orientationToTransform = {
+ 1: { rotation: 0, mirror: false },
+ 2: { rotation: 0, mirror: true },
+ 3: { rotation: 180, mirror: false },
+ 4: { rotation: 180, mirror: true },
+ 5: { rotation: 90, mirror: true },
+ 6: { rotation: 90, mirror: false },
+ 7: { rotation: 270, mirror: true },
+ 8: { rotation: 270, mirror: false }
+ }
+
+
+ return upload
+})() \ No newline at end of file
diff --git a/old/server/app/static/js/util.js b/old/server/app/static/js/util.js
new file mode 100644
index 00000000..851f634a
--- /dev/null
+++ b/old/server/app/static/js/util.js
@@ -0,0 +1,32 @@
+var is_iphone = (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))
+var is_ipad = (navigator.userAgent.match(/iPad/i))
+var is_android = (navigator.userAgent.match(/Android/i))
+var is_mobile = is_iphone || is_ipad || is_android
+var is_desktop = ! is_mobile;
+
+document.body.parentNode.classList.add(is_desktop ? 'desktop' : 'mobile')
+
+function preventDefault(e){
+ e.preventDefault()
+ e.stopPropagation()
+}
+
+var decodeEntities = (function() {
+ // this prevents any overhead from creating the object each time
+ var element = document.createElement('div');
+
+ function decodeHTMLEntities (str) {
+ if(str && typeof str === 'string') {
+ // strip script/html tags
+ str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
+ str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
+ element.innerHTML = str;
+ str = element.textContent;
+ element.textContent = '';
+ }
+
+ return str;
+ }
+
+ return decodeHTMLEntities;
+})(); \ No newline at end of file
diff --git a/old/server/app/static/js/vendor/ExifReader.js b/old/server/app/static/js/vendor/ExifReader.js
new file mode 100644
index 00000000..a8343ede
--- /dev/null
+++ b/old/server/app/static/js/vendor/ExifReader.js
@@ -0,0 +1,1363 @@
+// Generated by CoffeeScript 1.6.2
+/*
+# ExifReader 1.1.1
+# http://github.com/mattiasw/exifreader
+# Copyright (C) 2011-2014 Mattias Wallander <mattias@wallander.eu>
+# Licensed under the GNU Lesser General Public License version 3 or later
+# See license text at http://www.gnu.org/licenses/lgpl.txt
+*/
+
+
+(function() {
+ (typeof exports !== "undefined" && exports !== null ? exports : this).ExifReader = (function() {
+ ExifReader.prototype._MIN_DATA_BUFFER_LENGTH = 2;
+
+ ExifReader.prototype._JPEG_ID_SIZE = 2;
+
+ ExifReader.prototype._JPEG_ID = 0xffd8;
+
+ ExifReader.prototype._APP_MARKER_SIZE = 2;
+
+ ExifReader.prototype._APP0_MARKER = 0xffe0;
+
+ ExifReader.prototype._APP1_MARKER = 0xffe1;
+
+ ExifReader.prototype._APP15_MARKER = 0xffef;
+
+ ExifReader.prototype._APP_ID_OFFSET = 4;
+
+ ExifReader.prototype._BYTES_Exif = 0x45786966;
+
+ ExifReader.prototype._TIFF_HEADER_OFFSET = 10;
+
+ ExifReader.prototype._BYTE_ORDER_BIG_ENDIAN = 0x4949;
+
+ ExifReader.prototype._BYTE_ORDER_LITTLE_ENDIAN = 0x4d4d;
+
+ function ExifReader() {
+ var _this = this;
+
+ this._getTagValueAt = {
+ 1: function(offset) {
+ return _this._getByteAt(offset);
+ },
+ 2: function(offset) {
+ return _this._getAsciiAt(offset);
+ },
+ 3: function(offset) {
+ return _this._getShortAt(offset);
+ },
+ 4: function(offset) {
+ return _this._getLongAt(offset);
+ },
+ 5: function(offset) {
+ return _this._getRationalAt(offset);
+ },
+ 7: function(offset) {
+ return _this._getUndefinedAt(offset);
+ },
+ 9: function(offset) {
+ return _this._getSlongAt(offset);
+ },
+ 10: function(offset) {
+ return _this._getSrationalAt(offset);
+ }
+ };
+ this._tiffHeaderOffset = 0;
+ }
+
+ /*
+ # Loads all the Exif tags from the specified image file buffer.
+ #
+ # data ArrayBuffer Image file data
+ */
+
+
+ ExifReader.prototype.load = function(data) {
+ return this.loadView(new DataView(data));
+ };
+
+ /*
+ # Loads all the Exif tags from the specified image file buffer view. Probably
+ # used when DataView isn't supported by the browser.
+ #
+ # @_dataView DataView Image file data view
+ */
+
+
+ ExifReader.prototype.loadView = function(_dataView) {
+ this._dataView = _dataView;
+ this._tags = {};
+ this._checkImageHeader();
+ this._readTags();
+ return this._dataView = null;
+ };
+
+ ExifReader.prototype._checkImageHeader = function() {
+ if (this._dataView.byteLength < this._MIN_DATA_BUFFER_LENGTH || this._dataView.getUint16(0, false) !== this._JPEG_ID) {
+ throw new Error('Invalid image format');
+ }
+ this._parseAppMarkers(this._dataView);
+ if (!this._hasExifData()) {
+ throw new Error('No Exif data');
+ }
+ };
+
+ ExifReader.prototype._parseAppMarkers = function(dataView) {
+ var appMarkerPosition, fieldLength, _results;
+
+ appMarkerPosition = this._JPEG_ID_SIZE;
+ _results = [];
+ while (true) {
+ if (dataView.byteLength < appMarkerPosition + this._APP_ID_OFFSET + 5) {
+ break;
+ }
+ if (this._isApp1ExifMarker(dataView, appMarkerPosition)) {
+ fieldLength = dataView.getUint16(appMarkerPosition + this._APP_MARKER_SIZE, false);
+ this._tiffHeaderOffset = appMarkerPosition + this._TIFF_HEADER_OFFSET;
+ } else if (this._isAppMarker(dataView, appMarkerPosition)) {
+ fieldLength = dataView.getUint16(appMarkerPosition + this._APP_MARKER_SIZE, false);
+ } else {
+ break;
+ }
+ _results.push(appMarkerPosition += this._APP_MARKER_SIZE + fieldLength);
+ }
+ return _results;
+ };
+
+ ExifReader.prototype._isApp1ExifMarker = function(dataView, appMarkerPosition) {
+ return dataView.getUint16(appMarkerPosition, false) === this._APP1_MARKER && dataView.getUint32(appMarkerPosition + this._APP_ID_OFFSET, false) === this._BYTES_Exif && dataView.getUint8(appMarkerPosition + this._APP_ID_OFFSET + 4, false) === 0x00;
+ };
+
+ ExifReader.prototype._isAppMarker = function(dataView, appMarkerPosition) {
+ var appMarker;
+
+ appMarker = dataView.getUint16(appMarkerPosition, false);
+ return appMarker >= this._APP0_MARKER && appMarker <= this._APP15_MARKER;
+ };
+
+ ExifReader.prototype._hasExifData = function() {
+ return this._tiffHeaderOffset !== 0;
+ };
+
+ ExifReader.prototype._readTags = function() {
+ this._setByteOrder();
+ this._read0thIfd();
+ this._readExifIfd();
+ this._readGpsIfd();
+ return this._readInteroperabilityIfd();
+ };
+
+ ExifReader.prototype._setByteOrder = function() {
+ if (this._dataView.getUint16(this._tiffHeaderOffset) === this._BYTE_ORDER_BIG_ENDIAN) {
+ return this._littleEndian = true;
+ } else if (this._dataView.getUint16(this._tiffHeaderOffset) === this._BYTE_ORDER_LITTLE_ENDIAN) {
+ return this._littleEndian = false;
+ } else {
+ throw new Error('Illegal byte order value. Faulty image.');
+ }
+ };
+
+ ExifReader.prototype._read0thIfd = function() {
+ var ifdOffset;
+
+ ifdOffset = this._getIfdOffset();
+ return this._readIfd('0th', ifdOffset);
+ };
+
+ ExifReader.prototype._getIfdOffset = function() {
+ return this._tiffHeaderOffset + this._getLongAt(this._tiffHeaderOffset + 4);
+ };
+
+ ExifReader.prototype._readExifIfd = function() {
+ var ifdOffset;
+
+ if (this._tags['Exif IFD Pointer'] != null) {
+ ifdOffset = this._tiffHeaderOffset + this._tags['Exif IFD Pointer'].value;
+ return this._readIfd('exif', ifdOffset);
+ }
+ };
+
+ ExifReader.prototype._readGpsIfd = function() {
+ var ifdOffset;
+
+ if (this._tags['GPS Info IFD Pointer'] != null) {
+ ifdOffset = this._tiffHeaderOffset + this._tags['GPS Info IFD Pointer'].value;
+ return this._readIfd('gps', ifdOffset);
+ }
+ };
+
+ ExifReader.prototype._readInteroperabilityIfd = function() {
+ var ifdOffset;
+
+ if (this._tags['Interoperability IFD Pointer'] != null) {
+ ifdOffset = this._tiffHeaderOffset + this._tags['Interoperability IFD Pointer'].value;
+ return this._readIfd('interoperability', ifdOffset);
+ }
+ };
+
+ ExifReader.prototype._readIfd = function(ifdType, offset) {
+ var fieldIndex, numberOfFields, tag, _i, _results;
+
+ numberOfFields = this._getShortAt(offset);
+ offset += 2;
+ _results = [];
+ for (fieldIndex = _i = 0; 0 <= numberOfFields ? _i < numberOfFields : _i > numberOfFields; fieldIndex = 0 <= numberOfFields ? ++_i : --_i) {
+ tag = this._readTag(ifdType, offset);
+ if (tag !== void 0) {
+ this._tags[tag.name] = {
+ 'value': tag.value,
+ 'description': tag.description
+ };
+ }
+ _results.push(offset += 12);
+ }
+ return _results;
+ };
+
+ ExifReader.prototype._readTag = function(ifdType, offset) {
+ var tagCode, tagCount, tagDescription, tagName, tagType, tagValue, tagValueOffset;
+
+ tagCode = this._getShortAt(offset);
+ tagType = this._getShortAt(offset + 2);
+ tagCount = this._getLongAt(offset + 4);
+ if (this._typeSizes[tagType] === void 0) {
+ return void 0;
+ }
+ if (this._typeSizes[tagType] * tagCount <= 4) {
+ tagValue = this._getTagValue(offset + 8, tagType, tagCount);
+ } else {
+ tagValueOffset = this._getLongAt(offset + 8);
+ tagValue = this._getTagValue(this._tiffHeaderOffset + tagValueOffset, tagType, tagCount);
+ }
+ if (tagType === this._tagTypes['ASCII']) {
+ tagValue = this._splitNullSeparatedAsciiString(tagValue);
+ }
+ if (this._tagNames[ifdType][tagCode] != null) {
+ if ((this._tagNames[ifdType][tagCode]['name'] != null) && (this._tagNames[ifdType][tagCode]['description'] != null)) {
+ tagName = this._tagNames[ifdType][tagCode]['name'];
+ tagDescription = this._tagNames[ifdType][tagCode]['description'](tagValue);
+ } else {
+ tagName = this._tagNames[ifdType][tagCode];
+ if (tagValue instanceof Array) {
+ tagDescription = tagValue.join(', ');
+ } else {
+ tagDescription = tagValue;
+ }
+ }
+ return {
+ 'name': tagName,
+ 'value': tagValue,
+ 'description': tagDescription
+ };
+ } else {
+ return {
+ 'name': "undefined-" + tagCode,
+ 'value': tagValue,
+ 'description': tagValue
+ };
+ }
+ };
+
+ ExifReader.prototype._getTagValue = function(offset, type, count) {
+ var tagValue, value, valueIndex;
+
+ value = (function() {
+ var _i, _results;
+
+ _results = [];
+ for (valueIndex = _i = 0; 0 <= count ? _i < count : _i > count; valueIndex = 0 <= count ? ++_i : --_i) {
+ tagValue = this._getTagValueAt[type](offset);
+ offset += this._typeSizes[type];
+ _results.push(tagValue);
+ }
+ return _results;
+ }).call(this);
+ if (value.length === 1) {
+ value = value[0];
+ } else if (type === this._tagTypes['ASCII']) {
+ value = this._getAsciiValue(value);
+ }
+ return value;
+ };
+
+ ExifReader.prototype._getAsciiValue = function(charArray) {
+ var charCode, newCharArray;
+
+ return newCharArray = (function() {
+ var _i, _len, _results;
+
+ _results = [];
+ for (_i = 0, _len = charArray.length; _i < _len; _i++) {
+ charCode = charArray[_i];
+ _results.push(String.fromCharCode(charCode));
+ }
+ return _results;
+ })();
+ };
+
+ ExifReader.prototype._getByteAt = function(offset) {
+ return this._dataView.getUint8(offset);
+ };
+
+ ExifReader.prototype._getAsciiAt = function(offset) {
+ return this._dataView.getUint8(offset);
+ };
+
+ ExifReader.prototype._getShortAt = function(offset) {
+ return this._dataView.getUint16(offset, this._littleEndian);
+ };
+
+ ExifReader.prototype._getLongAt = function(offset) {
+ return this._dataView.getUint32(offset, this._littleEndian);
+ };
+
+ ExifReader.prototype._getRationalAt = function(offset) {
+ return this._getLongAt(offset) / this._getLongAt(offset + 4);
+ };
+
+ ExifReader.prototype._getUndefinedAt = function(offset) {
+ return this._getByteAt(offset);
+ };
+
+ ExifReader.prototype._getSlongAt = function(offset) {
+ return this._dataView.getInt32(offset, this._littleEndian);
+ };
+
+ ExifReader.prototype._getSrationalAt = function(offset) {
+ return this._getSlongAt(offset) / this._getSlongAt(offset + 4);
+ };
+
+ ExifReader.prototype._splitNullSeparatedAsciiString = function(string) {
+ var character, i, tagValue, _i, _len;
+
+ tagValue = [];
+ i = 0;
+ for (_i = 0, _len = string.length; _i < _len; _i++) {
+ character = string[_i];
+ if (character === '\x00') {
+ i++;
+ continue;
+ }
+ if (tagValue[i] == null) {
+ tagValue[i] = '';
+ }
+ tagValue[i] += character;
+ }
+ return tagValue;
+ };
+
+ ExifReader.prototype._typeSizes = {
+ 1: 1,
+ 2: 1,
+ 3: 2,
+ 4: 4,
+ 5: 8,
+ 7: 1,
+ 9: 4,
+ 10: 8
+ };
+
+ ExifReader.prototype._tagTypes = {
+ 'BYTE': 1,
+ 'ASCII': 2,
+ 'SHORT': 3,
+ 'LONG': 4,
+ 'RATIONAL': 5,
+ 'UNDEFINED': 7,
+ 'SLONG': 9,
+ 'SRATIONAL': 10
+ };
+
+ ExifReader.prototype._tagNames = {
+ '0th': {
+ 0x0100: 'ImageWidth',
+ 0x0101: 'ImageLength',
+ 0x0102: 'BitsPerSample',
+ 0x0103: 'Compression',
+ 0x0106: 'PhotometricInterpretation',
+ 0x010e: 'ImageDescription',
+ 0x010f: 'Make',
+ 0x0110: 'Model',
+ 0x0111: 'StripOffsets',
+ 0x0112: {
+ 'name': 'Orientation',
+ 'description': function(value) {
+ switch (value) {
+ case 1:
+ return 'top-left';
+ case 2:
+ return 'top-right';
+ case 3:
+ return 'bottom-right';
+ case 4:
+ return 'bottom-left';
+ case 5:
+ return 'left-top';
+ case 6:
+ return 'right-top';
+ case 7:
+ return 'right-bottom';
+ case 8:
+ return 'left-bottom';
+ default:
+ return 'Undefined';
+ }
+ }
+ },
+ 0x0115: 'SamplesPerPixel',
+ 0x0116: 'RowsPerStrip',
+ 0x0117: 'StripByteCounts',
+ 0x011a: 'XResolution',
+ 0x011b: 'YResolution',
+ 0x011c: 'PlanarConfiguration',
+ 0x0128: {
+ 'name': 'ResolutionUnit',
+ 'description': function(value) {
+ switch (value) {
+ case 2:
+ return 'inches';
+ case 3:
+ return 'centimeters';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x012d: 'TransferFunction',
+ 0x0131: 'Software',
+ 0x0132: 'DateTime',
+ 0x013b: 'Artist',
+ 0x013e: 'WhitePoint',
+ 0x013f: 'PrimaryChromaticities',
+ 0x0201: 'JPEGInterchangeFormat',
+ 0x0202: 'JPEGInterchangeFormatLength',
+ 0x0211: 'YCbCrCoefficients',
+ 0x0212: 'YCbCrSubSampling',
+ 0x0213: {
+ 'name': 'YCbCrPositioning',
+ 'description': function(value) {
+ switch (value) {
+ case 1:
+ return 'centered';
+ case 2:
+ return 'co-sited';
+ default:
+ return 'undefied ' + value;
+ }
+ }
+ },
+ 0x0214: 'ReferenceBlackWhite',
+ 0x8298: {
+ 'name': 'Copyright',
+ 'description': function(value) {
+ return value.join('; ');
+ }
+ },
+ 0x8769: 'Exif IFD Pointer',
+ 0x8825: 'GPS Info IFD Pointer'
+ },
+ 'exif': {
+ 0x829a: 'ExposureTime',
+ 0x829d: 'FNumber',
+ 0x8822: {
+ 'name': 'ExposureProgram',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'Undefined';
+ case 1:
+ return 'Manual';
+ case 2:
+ return 'Normal program';
+ case 3:
+ return 'Aperture priority';
+ case 4:
+ return 'Shutter priority';
+ case 5:
+ return 'Creative program';
+ case 6:
+ return 'Action program';
+ case 7:
+ return 'Portrait mode';
+ case 8:
+ return 'Landscape mode';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x8824: 'SpectralSensitivity',
+ 0x8827: 'ISOSpeedRatings',
+ 0x8828: {
+ 'name': 'OECF',
+ 'description': function(value) {
+ return '[Raw OECF table data]';
+ }
+ },
+ 0x9000: {
+ 'name': 'ExifVersion',
+ 'description': function(value) {
+ var charCode, string, _i, _len;
+
+ string = '';
+ for (_i = 0, _len = value.length; _i < _len; _i++) {
+ charCode = value[_i];
+ string += String.fromCharCode(charCode);
+ }
+ return string;
+ }
+ },
+ 0x9003: 'DateTimeOriginal',
+ 0x9004: 'DateTimeDigitized',
+ 0x9101: {
+ 'name': 'ComponentsConfiguration',
+ 'description': function(value) {
+ var character, string, _i, _len;
+
+ string = '';
+ for (_i = 0, _len = value.length; _i < _len; _i++) {
+ character = value[_i];
+ switch (character) {
+ case 0x31:
+ string += 'Y';
+ break;
+ case 0x32:
+ string += 'Cb';
+ break;
+ case 0x33:
+ string += 'Cr';
+ break;
+ case 0x34:
+ string += 'R';
+ break;
+ case 0x35:
+ string += 'G';
+ break;
+ case 0x36:
+ string += 'B';
+ }
+ }
+ return string;
+ }
+ },
+ 0x9102: 'CompressedBitsPerPixel',
+ 0x9201: 'ShutterSpeedValue',
+ 0x9202: 'ApertureValue',
+ 0x9203: 'BrightnessValue',
+ 0x9204: 'ExposureBiasValue',
+ 0x9205: 'MaxApertureValue',
+ 0x9206: 'SubjectDistance',
+ 0x9207: {
+ 'name': 'MeteringMode',
+ 'description': function(value) {
+ switch (value) {
+ case 1:
+ return 'Average';
+ case 2:
+ return 'CenterWeightedAverage';
+ case 3:
+ return 'Spot';
+ case 4:
+ return 'MultiSpot';
+ case 5:
+ return 'Pattern';
+ case 6:
+ return 'Partial';
+ case 255:
+ return 'Other';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x9208: {
+ 'name': 'LightSource',
+ 'description': function(value) {
+ switch (value) {
+ case 1:
+ return 'Daylight';
+ case 2:
+ return 'Fluorescent';
+ case 3:
+ return 'Tungsten (incandescent light)';
+ case 4:
+ return 'Flash';
+ case 9:
+ return 'Fine weather';
+ case 10:
+ return 'Cloudy weather';
+ case 11:
+ return 'Shade';
+ case 12:
+ return 'Daylight fluorescent (D 5700 – 7100K)';
+ case 13:
+ return 'Day white fluorescent (N 4600 – 5400K)';
+ case 14:
+ return 'Cool white fluorescent (W 3900 – 4500K)';
+ case 15:
+ return 'White fluorescent (WW 3200 – 3700K)';
+ case 17:
+ return 'Standard light A';
+ case 18:
+ return 'Standard light B';
+ case 19:
+ return 'Standard light C';
+ case 20:
+ return 'D55';
+ case 21:
+ return 'D65';
+ case 22:
+ return 'D75';
+ case 23:
+ return 'D50';
+ case 24:
+ return 'ISO studio tungsten';
+ case 255:
+ return 'Other light source';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x9209: {
+ 'name': 'Flash',
+ 'description': function(value) {
+ switch (value) {
+ case 0x00:
+ return 'Flash did not fire';
+ case 0x01:
+ return 'Flash fired';
+ case 0x05:
+ return 'Strobe return light not detected';
+ case 0x07:
+ return 'Strobe return light detected';
+ case 0x09:
+ return 'Flash fired, compulsory flash mode';
+ case 0x0d:
+ return 'Flash fired, compulsory flash mode, return light not detected';
+ case 0x0f:
+ return 'Flash fired, compulsory flash mode, return light detected';
+ case 0x10:
+ return 'Flash did not fire, compulsory flash mode';
+ case 0x18:
+ return 'Flash did not fire, auto mode';
+ case 0x19:
+ return 'Flash fired, auto mode';
+ case 0x1d:
+ return 'Flash fired, auto mode, return light not detected';
+ case 0x1f:
+ return 'Flash fired, auto mode, return light detected';
+ case 0x20:
+ return 'No flash function';
+ case 0x41:
+ return 'Flash fired, red-eye reduction mode';
+ case 0x45:
+ return 'Flash fired, red-eye reduction mode, return light not detected';
+ case 0x47:
+ return 'Flash fired, red-eye reduction mode, return light detected';
+ case 0x49:
+ return 'Flash fired, compulsory flash mode, red-eye reduction mode';
+ case 0x4d:
+ return 'Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected';
+ case 0x4f:
+ return 'Flash fired, compulsory flash mode, red-eye reduction mode, return light detected';
+ case 0x59:
+ return 'Flash fired, auto mode, red-eye reduction mode';
+ case 0x5d:
+ return 'Flash fired, auto mode, return light not detected, red-eye reduction mode';
+ case 0x5f:
+ return 'Flash fired, auto mode, return light detected, red-eye reduction mode';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x920a: 'FocalLength',
+ 0x9214: {
+ 'name': 'SubjectArea',
+ 'description': function(value) {
+ switch (value.length) {
+ case 2:
+ return "Location; X: " + value[0] + ", Y: " + value[1];
+ case 3:
+ return "Circle; X: " + value[0] + ", Y: " + value[1] + ", diameter: " + value[2];
+ case 4:
+ return "Rectangle; X: " + value[0] + ", Y: " + value[1] + ", width: " + value[2] + ", height: " + value[3];
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x927c: {
+ 'name': 'MakerNote',
+ 'description': function(value) {
+ return '[Raw maker note data]';
+ }
+ },
+ 0x9286: {
+ 'name': 'UserComment',
+ 'description': function(value) {
+ switch (value.slice(0, 8).map(function(charCode) {
+ return String.fromCharCode(charCode);
+ }).join('')) {
+ case 'ASCII\x00\x00\x00':
+ return value.slice(8, value.length).map(function(charCode) {
+ return String.fromCharCode(charCode);
+ }).join('');
+ case 'JIS\x00\x00\x00\x00\x00':
+ return '[JIS encoded text]';
+ case 'UNICODE\x00':
+ return '[Unicode encoded text]';
+ case '\x00\x00\x00\x00\x00\x00\x00\x00':
+ return '[Undefined encoding]';
+ }
+ }
+ },
+ 0x9290: 'SubSecTime',
+ 0x9291: 'SubSecTimeOriginal',
+ 0x9292: 'SubSecTimeDigitized',
+ 0xa000: {
+ 'name': 'FlashpixVersion',
+ 'description': function(value) {
+ var charCode, string, _i, _len;
+
+ string = '';
+ for (_i = 0, _len = value.length; _i < _len; _i++) {
+ charCode = value[_i];
+ string += String.fromCharCode(charCode);
+ }
+ return string;
+ }
+ },
+ 0xa001: {
+ 'name': 'ColorSpace',
+ 'description': function(value) {
+ switch (value) {
+ case 1:
+ return 'sRGB';
+ case 0xffff:
+ return 'Uncalibrated';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa002: 'PixelXDimension',
+ 0xa003: 'PixelYDimension',
+ 0xa004: 'RelatedSoundFile',
+ 0xa005: 'Interoperability IFD Pointer',
+ 0xa20b: 'FlashEnergy',
+ 0xa20c: {
+ 'name': 'SpatialFrequencyResponse',
+ 'description': function(value) {
+ return '[Raw SFR table data]';
+ }
+ },
+ 0xa20e: 'FocalPlaneXResolution',
+ 0xa20f: 'FocalPlaneYResolution',
+ 0xa210: {
+ 'name': 'FocalPlaneResolutionUnit',
+ 'description': function(value) {
+ switch (value) {
+ case 2:
+ return 'inches';
+ case 3:
+ return 'centimeters';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa214: {
+ 'name': 'SubjectLocation',
+ 'description': function(value) {
+ return "X: " + value[0] + ", Y: " + value[1];
+ }
+ },
+ 0xa215: 'ExposureIndex',
+ 0xa217: {
+ 'name': 'SensingMethod',
+ 'description': function(value) {
+ switch (value) {
+ case 1:
+ return 'Undefined';
+ case 2:
+ return 'One-chip color area sensor';
+ case 3:
+ return 'Two-chip color area sensor';
+ case 4:
+ return 'Three-chip color area sensor';
+ case 5:
+ return 'Color sequential area sensor';
+ case 7:
+ return 'Trilinear sensor';
+ case 8:
+ return 'Color sequential linear sensor';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa300: {
+ 'name': 'FileSource',
+ 'description': function(value) {
+ switch (value) {
+ case 3:
+ return 'DSC';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa301: {
+ 'name': 'SceneType',
+ 'description': function(value) {
+ switch (value) {
+ case 1:
+ return 'A directly photographed image';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa302: {
+ 'name': 'CFAPattern',
+ 'description': function(value) {
+ return '[Raw CFA pattern table data]';
+ }
+ },
+ 0xa401: {
+ 'name': 'CustomRendered',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'Normal process';
+ case 1:
+ return 'Custom process';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa402: {
+ 'name': 'ExposureMode',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'Auto exposure';
+ case 1:
+ return 'Manual exposure';
+ case 2:
+ return 'Auto bracket';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa403: {
+ 'name': 'WhiteBalance',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'Auto white balance';
+ case 1:
+ return 'Manual white balance';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa404: {
+ 'name': 'DigitalZoomRatio',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'Digital zoom was not used';
+ default:
+ return value;
+ }
+ }
+ },
+ 0xa405: {
+ 'name': 'FocalLengthIn35mmFilm',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'Unknown';
+ default:
+ return value;
+ }
+ }
+ },
+ 0xa406: {
+ 'name': 'SceneCaptureType',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'Standard';
+ case 1:
+ return 'Landscape';
+ case 2:
+ return 'Portrait';
+ case 3:
+ return 'Night scene';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa407: {
+ 'name': 'GainControl',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'None';
+ case 1:
+ return 'Low gain up';
+ case 2:
+ return 'High gain up';
+ case 3:
+ return 'Low gain down';
+ case 4:
+ return 'High gain down';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa408: {
+ 'name': 'Contrast',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'Normal';
+ case 1:
+ return 'Soft';
+ case 2:
+ return 'Hard';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa409: {
+ 'name': 'Saturation',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'Normal';
+ case 1:
+ return 'Low saturation';
+ case 2:
+ return 'High saturation';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa40a: {
+ 'name': 'Sharpness',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'Normal';
+ case 1:
+ return 'Soft';
+ case 2:
+ return 'Hard';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa40b: {
+ 'name': 'DeviceSettingDescription',
+ 'description': function(value) {
+ return '[Raw device settings table data]';
+ }
+ },
+ 0xa40c: {
+ 'name': 'SubjectDistanceRange',
+ 'description': function(value) {
+ switch (value) {
+ case 1:
+ return 'Macro';
+ case 2:
+ return 'Close view';
+ case 3:
+ return 'Distant view';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0xa420: 'ImageUniqueID'
+ },
+ 'gps': {
+ 0x0000: {
+ 'name': 'GPSVersionID',
+ 'description': function(value) {
+ var _ref, _ref1;
+
+ if ((value[0] === (_ref = value[1]) && _ref === 2) && (value[2] === (_ref1 = value[3]) && _ref1 === 0)) {
+ return 'Version 2.2';
+ } else {
+ return 'Unknown';
+ }
+ }
+ },
+ 0x0001: {
+ 'name': 'GPSLatitudeRef',
+ 'description': function(value) {
+ switch (value.join('')) {
+ case 'N':
+ return 'North latitude';
+ case 'S':
+ return 'South latitude';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x0002: {
+ 'name': 'GPSLatitude',
+ 'description': function(value) {
+ return value[0] + value[1] / 60 + value[2] / 3600;
+ }
+ },
+ 0x0003: {
+ 'name': 'GPSLongitudeRef',
+ 'description': function(value) {
+ switch (value.join('')) {
+ case 'E':
+ return 'East longitude';
+ case 'W':
+ return 'West longitude';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x0004: {
+ 'name': 'GPSLongitude',
+ 'description': function(value) {
+ return value[0] + value[1] / 60 + value[2] / 3600;
+ }
+ },
+ 0x0005: {
+ 'name': 'GPSAltitudeRef',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'Sea level';
+ case 1:
+ return 'Sea level reference (negative value)';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x0006: {
+ 'name': 'GPSAltitude',
+ 'description': function(value) {
+ return value + ' m';
+ }
+ },
+ 0x0007: {
+ 'name': 'GPSTimeStamp',
+ 'description': function(value) {
+ var padZero;
+
+ padZero = function(num) {
+ var i;
+
+ return ((function() {
+ var _i, _ref, _results;
+
+ _results = [];
+ for (i = _i = 0, _ref = 2 - ('' + Math.floor(num)).length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
+ _results.push('0');
+ }
+ return _results;
+ })()) + num;
+ };
+ return value.map(padZero).join(':');
+ }
+ },
+ 0x0008: 'GPSSatellites',
+ 0x0009: {
+ 'name': 'GPSStatus',
+ 'description': function(value) {
+ switch (value.join('')) {
+ case 'A':
+ return 'Measurement in progress';
+ case 'V':
+ return 'Measurement Interoperability';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x000a: {
+ 'name': 'GPSMeasureMode',
+ 'description': function(value) {
+ switch (value.join('')) {
+ case '2':
+ return '2-dimensional measurement';
+ case '3':
+ return '3-dimensional measurement';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x000b: 'GPSDOP',
+ 0x000c: {
+ 'name': 'GPSSpeedRef',
+ 'description': function(value) {
+ switch (value.join('')) {
+ case 'K':
+ return 'Kilometers per hour';
+ case 'M':
+ return 'Miles per hour';
+ case 'N':
+ return 'Knots';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x000d: 'GPSSpeed',
+ 0x000e: {
+ 'name': 'GPSTrackRef',
+ 'description': function(value) {
+ switch (value.join('')) {
+ case 'T':
+ return 'True direction';
+ case 'M':
+ return 'Magnetic direction';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x000f: 'GPSTrack',
+ 0x0010: {
+ 'name': 'GPSImgDirectionRef',
+ 'description': function(value) {
+ switch (value.join('')) {
+ case 'T':
+ return 'True direction';
+ case 'M':
+ return 'Magnetic direction';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x0011: 'GPSImgDirection',
+ 0x0012: 'GPSMapDatum',
+ 0x0013: {
+ 'name': 'GPSDestLatitudeRef',
+ 'description': function(value) {
+ switch (value.join('')) {
+ case 'N':
+ return 'North latitude';
+ case 'S':
+ return 'South latitude';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x0014: {
+ 'name': 'GPSDestLatitude',
+ 'description': function(value) {
+ return value[0] + value[1] / 60 + value[2] / 3600;
+ }
+ },
+ 0x0015: {
+ 'name': 'GPSDestLongitudeRef',
+ 'description': function(value) {
+ switch (value.join('')) {
+ case 'E':
+ return 'East longitude';
+ case 'W':
+ return 'West longitude';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x0016: {
+ 'name': 'GPSDestLongitude',
+ 'description': function(value) {
+ return value[0] + value[1] / 60 + value[2] / 3600;
+ }
+ },
+ 0x0017: {
+ 'name': 'GPSDestBearingRef',
+ 'description': function(value) {
+ switch (value.join('')) {
+ case 'T':
+ return 'True direction';
+ case 'M':
+ return 'Magnetic direction';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x0018: 'GPSDestBearing',
+ 0x0019: {
+ 'name': 'GPSDestDistanceRef',
+ 'description': function(value) {
+ switch (value.join('')) {
+ case 'K':
+ return 'Kilometers';
+ case 'M':
+ return 'Miles';
+ case 'N':
+ return 'Knots';
+ default:
+ return 'Unknown';
+ }
+ }
+ },
+ 0x001a: 'GPSDestDistance',
+ 0x001b: {
+ 'name': 'GPSProcessingMethod',
+ 'description': function(value) {
+ if (value === 0) {
+ return 'Undefined';
+ } else {
+ switch (value.slice(0, 8).map(function(charCode) {
+ return String.fromCharCode(charCode);
+ }).join('')) {
+ case 'ASCII\x00\x00\x00':
+ return value.slice(8, value.length).map(function(charCode) {
+ return String.fromCharCode(charCode);
+ }).join('');
+ case 'JIS\x00\x00\x00\x00\x00':
+ return '[JIS encoded text]';
+ case 'UNICODE\x00':
+ return '[Unicode encoded text]';
+ case '\x00\x00\x00\x00\x00\x00\x00\x00':
+ return '[Undefined encoding]';
+ }
+ }
+ }
+ },
+ 0x001c: {
+ 'name': 'GPSAreaInformation',
+ 'description': function(value) {
+ if (value === 0) {
+ return 'Undefined';
+ } else {
+ switch (value.slice(0, 8).map(function(charCode) {
+ return String.fromCharCode(charCode);
+ }).join('')) {
+ case 'ASCII\x00\x00\x00':
+ return value.slice(8, value.length).map(function(charCode) {
+ return String.fromCharCode(charCode);
+ }).join('');
+ case 'JIS\x00\x00\x00\x00\x00':
+ return '[JIS encoded text]';
+ case 'UNICODE\x00':
+ return '[Unicode encoded text]';
+ case '\x00\x00\x00\x00\x00\x00\x00\x00':
+ return '[Undefined encoding]';
+ }
+ }
+ }
+ },
+ 0x001d: 'GPSDateStamp',
+ 0x001e: {
+ 'name': 'GPSDifferential',
+ 'description': function(value) {
+ switch (value) {
+ case 0:
+ return 'Measurement without differential correction';
+ case 1:
+ return 'Differential correction applied';
+ default:
+ return 'Unknown';
+ }
+ }
+ }
+ },
+ 'interoperability': {
+ 0x0001: 'InteroperabilityIndex',
+ 0x0002: 'UnknownInteroperabilityTag0x0002',
+ 0x1001: 'UnknownInteroperabilityTag0x1001',
+ 0x1002: 'UnknownInteroperabilityTag0x1002'
+ }
+ };
+
+ /*
+ # Gets the image's value of the tag with the given name.
+ #
+ # name string The name of the tag to get the value of
+ #
+ # Returns the value of the tag with the given name if it exists,
+ # otherwise throws "Undefined".
+ */
+
+
+ ExifReader.prototype.getTagValue = function(name) {
+ if (this._tags[name] != null) {
+ return this._tags[name].value;
+ } else {
+ return void 0;
+ }
+ };
+
+ /*
+ # Gets the image's description of the tag with the given name.
+ #
+ # name string The name of the tag to get the description of
+ #
+ # Returns the description of the tag with the given name if it exists,
+ # otherwise throws "Undefined".
+ */
+
+
+ ExifReader.prototype.getTagDescription = function(name) {
+ if (this._tags[name] != null) {
+ return this._tags[name].description;
+ } else {
+ return void 0;
+ }
+ };
+
+ /*
+ # Gets all the image's tags.
+ #
+ # Returns the image's tags as an associative array: name -> description.
+ */
+
+
+ ExifReader.prototype.getAllTags = function() {
+ return this._tags;
+ };
+
+ /*
+ # Delete a tag.
+ #
+ # name string The name of the tag to delete
+ #
+ # Delete the tag with the given name. Can be used to lower memory usage.
+ # E.g., the MakerNote tag can be really large.
+ */
+
+
+ ExifReader.prototype.deleteTag = function(name) {
+ return delete this._tags[name];
+ };
+
+ return ExifReader;
+
+ })();
+
+}).call(this);
diff --git a/old/server/app/static/js/vendor/canvas-to-blob.js b/old/server/app/static/js/vendor/canvas-to-blob.js
new file mode 100644
index 00000000..32913667
--- /dev/null
+++ b/old/server/app/static/js/vendor/canvas-to-blob.js
@@ -0,0 +1,111 @@
+/*
+ * JavaScript Canvas to Blob
+ * https://github.com/blueimp/JavaScript-Canvas-to-Blob
+ *
+ * Copyright 2012, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ *
+ * Based on stackoverflow user Stoive's code snippet:
+ * http://stackoverflow.com/q/4998908
+ */
+
+/* global atob, Blob, define */
+
+;(function (window) {
+ 'use strict'
+
+ var CanvasPrototype = window.HTMLCanvasElement &&
+ window.HTMLCanvasElement.prototype
+ var hasBlobConstructor = window.Blob && (function () {
+ try {
+ return Boolean(new Blob())
+ } catch (e) {
+ return false
+ }
+ }())
+ var hasArrayBufferViewSupport = hasBlobConstructor && window.Uint8Array &&
+ (function () {
+ try {
+ return new Blob([new Uint8Array(100)]).size === 100
+ } catch (e) {
+ return false
+ }
+ }())
+ var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder ||
+ window.MozBlobBuilder || window.MSBlobBuilder
+ var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/
+ var dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob &&
+ window.ArrayBuffer && window.Uint8Array &&
+ function (dataURI) {
+ var matches,
+ mediaType,
+ isBase64,
+ dataString,
+ byteString,
+ arrayBuffer,
+ intArray,
+ i,
+ bb
+ // Parse the dataURI components as per RFC 2397
+ matches = dataURI.match(dataURIPattern)
+ if (!matches) {
+ throw new Error('invalid data URI')
+ }
+ // Default to text/plain;charset=US-ASCII
+ mediaType = matches[2]
+ ? matches[1]
+ : 'text/plain' + (matches[3] || ';charset=US-ASCII')
+ isBase64 = !!matches[4]
+ dataString = dataURI.slice(matches[0].length)
+ if (isBase64) {
+ // Convert base64 to raw binary data held in a string:
+ byteString = atob(dataString)
+ } else {
+ // Convert base64/URLEncoded data component to raw binary:
+ byteString = decodeURIComponent(dataString)
+ }
+ // Write the bytes of the string to an ArrayBuffer:
+ arrayBuffer = new ArrayBuffer(byteString.length)
+ intArray = new Uint8Array(arrayBuffer)
+ for (i = 0; i < byteString.length; i += 1) {
+ intArray[i] = byteString.charCodeAt(i)
+ }
+ // Write the ArrayBuffer (or ArrayBufferView) to a blob:
+ if (hasBlobConstructor) {
+ return new Blob(
+ [hasArrayBufferViewSupport ? intArray : arrayBuffer],
+ {type: mediaType}
+ )
+ }
+ bb = new BlobBuilder()
+ bb.append(arrayBuffer)
+ return bb.getBlob(mediaType)
+ }
+ if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {
+ if (CanvasPrototype.mozGetAsFile) {
+ CanvasPrototype.toBlob = function (callback, type, quality) {
+ if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {
+ callback(dataURLtoBlob(this.toDataURL(type, quality)))
+ } else {
+ callback(this.mozGetAsFile('blob', type))
+ }
+ }
+ } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {
+ CanvasPrototype.toBlob = function (callback, type, quality) {
+ callback(dataURLtoBlob(this.toDataURL(type, quality)))
+ }
+ }
+ }
+ if (typeof define === 'function' && define.amd) {
+ define(function () {
+ return dataURLtoBlob
+ })
+ } else if (typeof module === 'object' && module.exports) {
+ module.exports = dataURLtoBlob
+ } else {
+ window.dataURLtoBlob = dataURLtoBlob
+ }
+}(window))
diff --git a/old/server/app/static/js/vendor/jquery-3.3.1.min.js b/old/server/app/static/js/vendor/jquery-3.3.1.min.js
new file mode 100644
index 00000000..4d9b3a25
--- /dev/null
+++ b/old/server/app/static/js/vendor/jquery-3.3.1.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
diff --git a/old/server/app/static/js/vendor/nanobar.min.js b/old/server/app/static/js/vendor/nanobar.min.js
new file mode 100644
index 00000000..9329eadc
--- /dev/null
+++ b/old/server/app/static/js/vendor/nanobar.min.js
@@ -0,0 +1,3 @@
+var Nanobar=function(){var c,d,e,f,g,h,k={width:"100%",height:"4px",zIndex:9999,top:"0"},l={width:0,height:"100%",clear:"both",transition:"height .3s"};c=function(a,b){for(var c in b)a.style[c]=b[c];a.style["float"]="left"};f=function(){var a=this,b=this.width-this.here;0.1>b&&-0.1<b?(g.call(this,this.here),this.moving=!1,100==this.width&&(this.el.style.height=0,setTimeout(function(){a.cont.el.removeChild(a.el)},300))):(g.call(this,this.width-b/4),setTimeout(function(){a.go()},16))};g=function(a){this.width=
+a;this.el.style.width=this.width+"%"};h=function(){var a=new d(this);this.bars.unshift(a)};d=function(a){this.el=document.createElement("div");this.el.style.backgroundColor=a.opts.bg;this.here=this.width=0;this.moving=!1;this.cont=a;c(this.el,l);a.el.appendChild(this.el)};d.prototype.go=function(a){a?(this.here=a,this.moving||(this.moving=!0,f.call(this))):this.moving&&f.call(this)};e=function(a){a=this.opts=a||{};var b;a.bg=a.bg||"#000";this.bars=[];b=this.el=document.createElement("div");c(this.el,
+k);a.id&&(b.id=a.id);b.style.position=a.target?"relative":"fixed";a.target?a.target.insertBefore(b,a.target.firstChild):document.getElementsByTagName("body")[0].appendChild(b);h.call(this)};e.prototype.go=function(a){this.bars[0].go(a);100==a&&h.call(this)};return e}(); \ No newline at end of file
diff --git a/old/server/app/static/js/vendor/prefixfree.js b/old/server/app/static/js/vendor/prefixfree.js
new file mode 100644
index 00000000..40b6e693
--- /dev/null
+++ b/old/server/app/static/js/vendor/prefixfree.js
@@ -0,0 +1,527 @@
+/**
+ * StyleFix 1.0.3 & PrefixFree 1.0.7
+ * @author Lea Verou
+ * MIT license
+ */
+
+(function(){
+
+if(!window.addEventListener) {
+ return;
+}
+
+var self = window.StyleFix = {
+ link: function(link) {
+ var url = link.href || link.getAttribute('data-href');
+ try {
+ // Ignore stylesheets with data-noprefix attribute as well as alternate stylesheets or without (data-)href attribute
+ if(!url || link.rel !== 'stylesheet' || link.hasAttribute('data-noprefix')) {
+ return;
+ }
+ }
+ catch(e) {
+ return;
+ }
+
+ var base = url.replace(/[^\/]+$/, ''),
+ base_scheme = (/^[a-z]{3,10}:/.exec(base) || [''])[0],
+ base_domain = (/^[a-z]{3,10}:\/\/[^\/]+/.exec(base) || [''])[0],
+ base_query = /^([^?]*)\??/.exec(url)[1],
+ parent = link.parentNode,
+ xhr = new XMLHttpRequest(),
+ process;
+
+ xhr.onreadystatechange = function() {
+ if(xhr.readyState === 4) {
+ process();
+ }
+ };
+
+ process = function() {
+ var css = xhr.responseText;
+
+ if(css && link.parentNode && (!xhr.status || xhr.status < 400 || xhr.status > 600)) {
+ css = self.fix(css, true, link);
+
+ // Convert relative URLs to absolute, if needed
+ if(css && base) {
+ css = css.replace(/url\(\s*?((?:"|')?)(.+?)\1\s*?\)/gi, function($0, quote, url) {
+ if(/^([a-z]{3,10}:|#)/i.test(url)) { // Absolute & or hash-relative
+ return $0;
+ }
+ else if(/^\/\//.test(url)) { // Scheme-relative
+ // May contain sequences like /../ and /./ but those DO work
+ return 'url("' + base_scheme + url + '")';
+ }
+ else if(/^\//.test(url)) { // Domain-relative
+ return 'url("' + base_domain + url + '")';
+ }
+ else if(/^\?/.test(url)) { // Query-relative
+ return 'url("' + base_query + url + '")';
+ }
+ else {
+ // Path-relative
+ return 'url("' + base + url + '")';
+ }
+ });
+
+ // behavior URLs shoudn’t be converted (Issue #19)
+ // base should be escaped before added to RegExp (Issue #81)
+ var escaped_base = base.replace(/([\\\^\$*+[\]?{}.=!:(|)])/g,"\\$1");
+ css = css.replace(RegExp('\\b(behavior:\\s*?url\\(\'?"?)' + escaped_base, 'gi'), '$1');
+ }
+
+ var style = document.createElement('style');
+ style.textContent = '/*# sourceURL='+link.getAttribute('href')+' */\n/*@ sourceURL='+link.getAttribute('href')+' */\n' + css;
+ style.media = link.media;
+ style.disabled = link.disabled;
+ style.setAttribute('data-href', link.getAttribute('href'));
+
+ if(link.id) style.id = link.id;
+
+ parent.insertBefore(style, link);
+ parent.removeChild(link);
+
+ style.media = link.media; // Duplicate is intentional. See issue #31
+ }
+ };
+
+ try {
+ xhr.open('GET', url);
+ xhr.send(null);
+ } catch (e) {
+ // Fallback to XDomainRequest if available
+ if (typeof XDomainRequest != "undefined") {
+ xhr = new XDomainRequest();
+ xhr.onerror = xhr.onprogress = function() {};
+ xhr.onload = process;
+ xhr.open("GET", url);
+ xhr.send(null);
+ }
+ }
+
+ link.setAttribute('data-inprogress', '');
+ },
+
+ styleElement: function(style) {
+ if (style.hasAttribute('data-noprefix')) {
+ return;
+ }
+ var disabled = style.disabled;
+
+ style.textContent = self.fix(style.textContent, true, style);
+
+ style.disabled = disabled;
+ },
+
+ styleAttribute: function(element) {
+ var css = element.getAttribute('style');
+
+ css = self.fix(css, false, element);
+
+ element.setAttribute('style', css);
+ },
+
+ process: function() {
+ // Linked stylesheets
+ $('link[rel="stylesheet"]:not([data-inprogress])').forEach(StyleFix.link);
+
+ // Inline stylesheets
+ $('style').forEach(StyleFix.styleElement);
+
+ // Inline styles
+ $('[style]').forEach(StyleFix.styleAttribute);
+
+ var event = document.createEvent('Event');
+ event.initEvent('StyleFixProcessed', true, true);
+ document.dispatchEvent(event);
+
+ },
+
+ register: function(fixer, index) {
+ (self.fixers = self.fixers || [])
+ .splice(index === undefined? self.fixers.length : index, 0, fixer);
+ },
+
+ fix: function(css, raw, element) {
+ if(self.fixers) {
+ for(var i=0; i<self.fixers.length; i++) {
+ css = self.fixers[i](css, raw, element) || css;
+ }
+ }
+
+ return css;
+ },
+
+ camelCase: function(str) {
+ return str.replace(/-([a-z])/g, function($0, $1) { return $1.toUpperCase(); }).replace('-','');
+ },
+
+ deCamelCase: function(str) {
+ return str.replace(/[A-Z]/g, function($0) { return '-' + $0.toLowerCase() });
+ }
+};
+
+/**************************************
+ * Process styles
+ **************************************/
+(function(){
+ setTimeout(function(){
+ $('link[rel="stylesheet"]').forEach(StyleFix.link);
+ }, 10);
+
+ document.addEventListener('DOMContentLoaded', StyleFix.process, false);
+})();
+
+function $(expr, con) {
+ return [].slice.call((con || document).querySelectorAll(expr));
+}
+
+})();
+
+/**
+ * PrefixFree
+ */
+(function(root){
+
+if(!window.StyleFix || !window.getComputedStyle) {
+ return;
+}
+
+// Private helper
+function fix(what, before, after, replacement, css) {
+ what = self[what];
+
+ if(what.length) {
+ var regex = RegExp(before + '(' + what.join('|') + ')' + after, 'gi');
+
+ css = css.replace(regex, replacement);
+ }
+
+ return css;
+}
+
+var self = window.PrefixFree = {
+ prefixCSS: function(css, raw, element) {
+ var prefix = self.prefix;
+
+ // Gradient angles hotfix
+ if(self.functions.indexOf('linear-gradient') > -1) {
+ // Gradients are supported with a prefix, convert angles to legacy
+ css = css.replace(/(\s|:|,)(repeating-)?linear-gradient\(\s*(-?\d*\.?\d*)deg/ig, function ($0, delim, repeating, deg) {
+ return delim + (repeating || '') + 'linear-gradient(' + (90-deg) + 'deg';
+ });
+ }
+
+ css = fix('functions', '(\\s|:|,)', '\\s*\\(', '$1' + prefix + '$2(', css);
+ css = fix('keywords', '(\\s|:)', '(\\s|;|\\}|$)', '$1' + prefix + '$2$3', css);
+ css = fix('properties', '(^|\\{|\\s|;)', '\\s*:', '$1' + prefix + '$2:', css);
+
+ // Prefix properties *inside* values (issue #8)
+ if (self.properties.length) {
+ var regex = RegExp('\\b(' + self.properties.join('|') + ')(?!:)', 'gi');
+
+ css = fix('valueProperties', '\\b', ':(.+?);', function($0) {
+ return $0.replace(regex, prefix + "$1")
+ }, css);
+ }
+
+ if(raw) {
+ css = fix('selectors', '', '\\b', self.prefixSelector, css);
+ css = fix('atrules', '@', '\\b', '@' + prefix + '$1', css);
+ }
+
+ // Fix double prefixing
+ css = css.replace(RegExp('-' + prefix, 'g'), '-');
+
+ // Prefix wildcard
+ css = css.replace(/-\*-(?=[a-z]+)/gi, self.prefix);
+
+ return css;
+ },
+
+ property: function(property) {
+ return (self.properties.indexOf(property) >=0 ? self.prefix : '') + property;
+ },
+
+ value: function(value, property) {
+ value = fix('functions', '(^|\\s|,)', '\\s*\\(', '$1' + self.prefix + '$2(', value);
+ value = fix('keywords', '(^|\\s)', '(\\s|$)', '$1' + self.prefix + '$2$3', value);
+
+ if(self.valueProperties.indexOf(property) >= 0) {
+ value = fix('properties', '(^|\\s|,)', '($|\\s|,)', '$1'+self.prefix+'$2$3', value);
+ }
+
+ return value;
+ },
+
+ prefixSelector: function(selector) {
+ return self.selectorMap[selector] || selector
+ },
+
+ // Warning: Prefixes no matter what, even if the property is supported prefix-less
+ prefixProperty: function(property, camelCase) {
+ var prefixed = self.prefix + property;
+
+ return camelCase? StyleFix.camelCase(prefixed) : prefixed;
+ }
+};
+
+/**************************************
+ * Properties
+ **************************************/
+(function() {
+ var prefixes = {},
+ properties = [],
+ shorthands = {},
+ style = getComputedStyle(document.documentElement, null),
+ dummy = document.createElement('div').style;
+
+ // Why are we doing this instead of iterating over properties in a .style object? Because Webkit.
+ // 1. Older Webkit won't iterate over those.
+ // 2. Recent Webkit will, but the 'Webkit'-prefixed properties are not enumerable. The 'webkit'
+ // (lower case 'w') ones are, but they don't `deCamelCase()` into a prefix that we can detect.
+
+ var iterate = function(property) {
+ if(property.charAt(0) === '-') {
+ properties.push(property);
+
+ var parts = property.split('-'),
+ prefix = parts[1];
+
+ // Count prefix uses
+ prefixes[prefix] = ++prefixes[prefix] || 1;
+
+ // This helps determining shorthands
+ while(parts.length > 3) {
+ parts.pop();
+
+ var shorthand = parts.join('-');
+
+ if(supported(shorthand) && properties.indexOf(shorthand) === -1) {
+ properties.push(shorthand);
+ }
+ }
+ }
+ },
+ supported = function(property) {
+ return StyleFix.camelCase(property) in dummy;
+ }
+
+ // Some browsers have numerical indices for the properties, some don't
+ if(style && style.length > 0) {
+ for(var i=0; i<style.length; i++) {
+ iterate(style[i])
+ }
+ }
+ else {
+ for(var property in style) {
+ iterate(StyleFix.deCamelCase(property));
+ }
+ }
+
+ // Find most frequently used prefix
+ var highest = {uses:0};
+ for(var prefix in prefixes) {
+ var uses = prefixes[prefix];
+
+ if(highest.uses < uses) {
+ highest = {prefix: prefix, uses: uses};
+ }
+ }
+
+ self.prefix = '-' + highest.prefix + '-';
+ self.Prefix = StyleFix.camelCase(self.prefix);
+
+ self.properties = [];
+
+ // Get properties ONLY supported with a prefix
+ for(var i=0; i<properties.length; i++) {
+ var property = properties[i];
+
+ if(property.indexOf(self.prefix) === 0) { // we might have multiple prefixes, like Opera
+ var unprefixed = property.slice(self.prefix.length);
+
+ if(!supported(unprefixed)) {
+ self.properties.push(unprefixed);
+ }
+ }
+ }
+
+ // IE fix
+ if(self.Prefix == 'Ms'
+ && !('transform' in dummy)
+ && !('MsTransform' in dummy)
+ && ('msTransform' in dummy)) {
+ self.properties.push('transform', 'transform-origin');
+ }
+
+ self.properties.sort();
+})();
+
+/**************************************
+ * Values
+ **************************************/
+(function() {
+// Values that might need prefixing
+var functions = {
+ 'linear-gradient': {
+ property: 'backgroundImage',
+ params: 'red, teal'
+ },
+ 'calc': {
+ property: 'width',
+ params: '1px + 5%'
+ },
+ 'element': {
+ property: 'backgroundImage',
+ params: '#foo'
+ },
+ 'cross-fade': {
+ property: 'backgroundImage',
+ params: 'url(a.png), url(b.png), 50%'
+ },
+ 'image-set': {
+ property: 'backgroundImage',
+ params: 'url(a.png) 1x, url(b.png) 2x'
+ }
+};
+
+
+functions['repeating-linear-gradient'] =
+functions['repeating-radial-gradient'] =
+functions['radial-gradient'] =
+functions['linear-gradient'];
+
+// Note: The properties assigned are just to *test* support.
+// The keywords will be prefixed everywhere.
+var keywords = {
+ 'initial': 'color',
+ 'grab': 'cursor',
+ 'grabbing': 'cursor',
+ 'zoom-in': 'cursor',
+ 'zoom-out': 'cursor',
+ 'box': 'display',
+ 'flexbox': 'display',
+ 'inline-flexbox': 'display',
+ 'flex': 'display',
+ 'inline-flex': 'display',
+ 'grid': 'display',
+ 'inline-grid': 'display',
+ 'max-content': 'width',
+ 'min-content': 'width',
+ 'fit-content': 'width',
+ 'fill-available': 'width',
+ 'contain-floats': 'width'
+};
+
+self.functions = [];
+self.keywords = [];
+
+var style = document.createElement('div').style;
+
+function supported(value, property) {
+ style[property] = '';
+ style[property] = value;
+
+ return !!style[property];
+}
+
+for (var func in functions) {
+ var test = functions[func],
+ property = test.property,
+ value = func + '(' + test.params + ')';
+
+ if (!supported(value, property)
+ && supported(self.prefix + value, property)) {
+ // It's supported, but with a prefix
+ self.functions.push(func);
+ }
+}
+
+for (var keyword in keywords) {
+ var property = keywords[keyword];
+
+ if (!supported(keyword, property)
+ && supported(self.prefix + keyword, property)) {
+ // It's supported, but with a prefix
+ self.keywords.push(keyword);
+ }
+}
+
+})();
+
+/**************************************
+ * Selectors and @-rules
+ **************************************/
+(function() {
+
+var
+selectors = {
+ ':any-link': null,
+ '::backdrop': null,
+ ':fullscreen': null,
+ ':full-screen': ':fullscreen',
+ //sigh
+ '::placeholder': null,
+ ':placeholder': '::placeholder',
+ '::input-placeholder': '::placeholder',
+ ':input-placeholder': '::placeholder',
+ ':read-only': null,
+ ':read-write': null,
+ '::selection': null
+},
+
+atrules = {
+ 'keyframes': 'name',
+ 'viewport': null,
+ 'document': 'regexp(".")'
+};
+
+self.selectors = [];
+self.selectorMap = {};
+self.atrules = [];
+
+var style = root.appendChild(document.createElement('style'));
+
+function supported(selector) {
+ style.textContent = selector + '{}'; // Safari 4 has issues with style.innerHTML
+
+ return !!style.sheet.cssRules.length;
+}
+
+for(var selector in selectors) {
+ var standard = selectors[selector] || selector
+ var prefixed = selector.replace(/::?/, function($0) { return $0 + self.prefix })
+ if(!supported(standard) && supported(prefixed)) {
+ self.selectors.push(standard);
+ self.selectorMap[standard] = prefixed;
+ }
+}
+
+for(var atrule in atrules) {
+ var test = atrule + ' ' + (atrules[atrule] || '');
+
+ if(!supported('@' + test) && supported('@' + self.prefix + test)) {
+ self.atrules.push(atrule);
+ }
+}
+
+root.removeChild(style);
+
+})();
+
+// Properties that accept properties as their value
+self.valueProperties = [
+ 'transition',
+ 'transition-property',
+ 'will-change'
+]
+
+// Add class for current prefix
+root.className += ' ' + self.prefix;
+
+StyleFix.register(self.prefixCSS);
+
+
+})(document.documentElement);
diff --git a/old/server/app/templates/403.html b/old/server/app/templates/403.html
new file mode 100644
index 00000000..f83c6dfc
--- /dev/null
+++ b/old/server/app/templates/403.html
@@ -0,0 +1,35 @@
+{%- extends "base.html" %}
+
+{% import "bootstrap/utils.html" as utils %}
+
+{% block content %}
+<div class="container">
+
+ <div class="row">
+ <h1><a href="/"><img src="/static/img/dulldream_logo_200.png"></a></h1>
+ <h2 class="subtitle">403</h2>
+ </div>
+
+
+ <div class="row">
+ <div class="col-sm-12 align_center">
+ <p>Your request could not be handled</p>
+ </div>
+ </div>
+
+ <div id="about_btn" class="row">
+ <div class="col-sm-12">
+ <div class="align_center">
+ <a class="btn btn-sm btn-default" href="/" role="button">Home</a>
+ </div>
+ </div>
+ </div>
+
+</div>
+
+{% block footer %}
+{{super()}}
+{% endblock %}
+
+{% endblock %}
+
diff --git a/old/server/app/templates/404.html b/old/server/app/templates/404.html
new file mode 100644
index 00000000..a7f7d45a
--- /dev/null
+++ b/old/server/app/templates/404.html
@@ -0,0 +1,33 @@
+{%- extends "base.html" %}
+
+{% import "bootstrap/utils.html" as utils %}
+
+{% block content %}
+<div class="container">
+
+ <div class="row">
+ <h1><a href="/"><img src="/static/img/dulldream_logo_200.png"></a></h1>
+ <h2 class="subtitle">404</h2>
+ </div>
+
+ <div class="row">
+ <div class="col-sm-12 align_center">
+ <p>Your request could not be handled</p>
+ </div>
+
+ <div id="about_btn" class="row">
+ <div class="col-sm-12">
+ <div class="align_center">
+ <a class="btn btn-sm btn-default" href="/" role="button">Home</a>
+ </div>
+ </div>
+ </div>
+
+</div>
+
+{% block footer %}
+{{super()}}
+{% endblock %}
+
+{% endblock %}
+
diff --git a/old/server/app/templates/500.html b/old/server/app/templates/500.html
new file mode 100644
index 00000000..b323c12c
--- /dev/null
+++ b/old/server/app/templates/500.html
@@ -0,0 +1,34 @@
+{%- extends "base.html" %}
+
+{% import "bootstrap/utils.html" as utils %}
+
+{% block content %}
+<div class="container">
+
+ <div class="row">
+ <h1><a href="/"><img src="/static/img/dulldream_logo_200.png"></a></h1>
+ <h2 class="subtitle">505</h2>
+ </div>
+
+ <div class="row">
+ <div class="col-sm-12 align_center">
+ <p>Your request could not be handled</p>
+ </div>
+ </div>
+
+ <div id="about_btn" class="row">
+ <div class="col-sm-12">
+ <div class="align_center">
+ <a class="btn btn-sm btn-default" href="/" role="button">Home</a>
+ </div>
+ </div>
+ </div>
+
+</div>
+
+{% block footer %}
+{{super()}}
+{% endblock %}
+
+{% endblock %}
+
diff --git a/old/server/app/templates/base.html b/old/server/app/templates/base.html
new file mode 100644
index 00000000..16402af8
--- /dev/null
+++ b/old/server/app/templates/base.html
@@ -0,0 +1,33 @@
+{%- extends "bootstrap/base.html" %}
+
+{% block title %}DullDream (v2 x ZkM){% endblock %}
+
+{% block head %}
+ {{super()}}
+ <link rel="shortcut icon" href="{{url_for('static', filename='img/favicon.ico')}}">
+{% endblock %}
+
+{% block styles %}
+ {{super()}}
+ <link rel="stylesheet" type="text/css" href="{{url_for('static', filename='css/bootstrap.min.css')}}">
+ <link rel="stylesheet" type="text/css" href="{{url_for('static', filename='css/dullbrown-theme.css')}}">
+{% endblock %}
+
+{%- block content %}
+ {{super()}}
+{% endblock content %}
+
+{%- block footer %}
+ <div id="footer" class="footer">
+ <div class="container">
+ <p class="">
+ DullDream™ (beta) by <a href="http://constantdullaart.com">Constant Dullaart</a>.
+ Made in collaboration with <a href="http://ahprojects.com">Adam Harvey</a>
+ </p>
+ </div>
+ </div>
+{% endblock footer %}
+
+{% block scripts %}
+ {{super()}}
+{% endblock scripts %} \ No newline at end of file
diff --git a/old/server/app/templates/celery.html b/old/server/app/templates/celery.html
new file mode 100644
index 00000000..ddcd25cb
--- /dev/null
+++ b/old/server/app/templates/celery.html
@@ -0,0 +1,43 @@
+{%- extends "base.html" %}
+
+{% import "bootstrap/utils.html" as utils %}
+
+{% block content %}
+<style>
+ .progress {
+ width: 100%;
+ text-align: center;
+ }
+</style>
+
+<div class="container">
+
+ <div class="row">
+ <h1><a href="/"><img src="/static/img/dulldream_logo_200.png"></a></h1>
+ <h2 class="subtitle">Celery Test</h2>
+ </div>
+
+ <div class="row">
+ <div class="col-sm-12 align_center">
+ <button id="submit-data">Submit Data</button><br><br>
+ <div id="progress"></div>
+ </div>
+ </div>
+
+</div>
+
+{% block footer %}
+{{ super() }}
+{% endblock %}
+
+{% endblock %}
+
+
+{% block scripts %}
+ {{super()}}
+
+<script type="text/javascript" src="{{url_for('static', filename='js/old-js/nanobar.min.js')}}"></script>
+<script type="text/javascript" src="{{url_for('static', filename='js/old-js/celery.js')}}"></script>
+
+
+{% endblock scripts %} \ No newline at end of file
diff --git a/old/server/app/templates/display.html b/old/server/app/templates/display.html
new file mode 100644
index 00000000..f73a6ca5
--- /dev/null
+++ b/old/server/app/templates/display.html
@@ -0,0 +1,69 @@
+{%- extends "base.html" %}
+
+{% import "bootstrap/utils.html" as utils %}
+
+{% block content %}
+
+<style type="text/css">
+ .display_im{
+ width:100%;
+ max-width: 360px;
+ min-width: 256px;
+ margin-bottom: 10px;
+ }
+ .display_left{
+
+ }
+ .display_right{
+
+ }
+ .caption{
+ font-size: 11px;
+ }
+</style>
+<div class="container">
+
+ <div class="row">
+ <h1><a href="/"><img src="/static/img/dulldream_logo_200.png"></a></h1>
+ <h2 class="subtitle">Result</h2>
+ </div>
+
+ <div class="row">
+ <div style="height:50px"></div>
+ <div class="col-sm-12" style="text-align: center;">
+ <img class="display_im" src="{{ url_for('main.get_image', imtype='renders', uuid_name='{}'.format( uuid_name )) }}" />
+ <p class="caption">Rendered result</p>
+ </div>
+ </div>
+
+ <div class="col-sm-12" style="text-align: center;">
+ <img class="display_im" src="{{ url_for('main.get_image', imtype='uploads', uuid_name='{}'.format( uuid_name )) }}" />
+ <p class="caption">Original image</p>
+ </div>
+ </div>
+
+ <div class="col-sm-12" style="text-align: center;">
+ <img class="display_im" src="{{ url_for('main.get_image', imtype='fcn', uuid_name='{}'.format( uuid_name )) }}" />
+ <p class="caption">Semantic segmentation</p>
+ </div>
+ </div>
+
+ </div>
+
+ <div id="about_btn" class="row">
+ <div class="col-sm-12">
+ <div class="align_center">
+ <a class="btn btn-sm btn-default" href="/" role="button">Home</a>
+ </div>
+ </div>
+ </div>
+
+ </div>
+</div>
+
+{% block footer %}
+{{super()}}
+{% endblock footer %}
+
+{% endblock %}
+
diff --git a/old/server/app/templates/index.html b/old/server/app/templates/index.html
new file mode 100644
index 00000000..f740bb5b
--- /dev/null
+++ b/old/server/app/templates/index.html
@@ -0,0 +1,161 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+ <link rel="shortcut icon" href="/static/img/favicon.ico" />
+ <title>DullDream (v2 x ZkM)</title>
+ <link rel="stylesheet" type="text/css" href="{{url_for('static', filename='css/dullbrown-theme.css')}}">
+</head>
+<body>
+
+<header>
+ <h1><a href="/"><img src="/static/img/dulldream_logo_200.png" alt="DullDream"></a></h1>
+ <h2 class="subtitle">Neural network photo effect</h2>
+</header>
+
+<div class="upload_view container">
+ <div class="row">
+ <div id="photo_area" class="dash_border">
+ <input class="hidden_input" id="user_file" type="file" accept="image/*">
+ <canvas class="photo" id="user_photo_canvas" width="512" height="512"></canvas>
+ <div class="center_inner">
+ <label id="take_photo_btn" for="user_file" class="upload_center_btn">
+ <div class='btn-lg btn'>Take Photo</div>
+ </label>
+ <div id="details"></div>
+ <div id="progress"></div>
+ </div>
+
+ <div id="preloader_anim">
+ <img src="/static/img/loader.gif">
+ </div>
+ </div>
+ </div>
+
+ <div id="upload_controls" class="row">
+ <div class="align_center">
+ <div id="restart_btn">
+ <a id="restart_btn" class="btn btn-md btn-default" role="button">Change Image</a>
+ <input type='file' accept="image/*">
+ </div>
+ <div id="dropdown_btn">
+ <select id="dropdown"></select>
+ </div>
+ <div id="upload_btn">
+ <a id="take_photo_btn" class="btn btn-md btn-important" role="button">Upload</a>
+ </div>
+ </div>
+ <div class="align_center consent_box">
+ <label>
+ <input type="checkbox" id="agree" value="1" checked>
+ I consent to have my dulled image displayed at ZkM.
+ </label>
+ </div>
+ </div>
+
+ <div id="about_btn" class="row">
+ <div class="align_center">
+ <a class="btn btn-sm btn-default about_button" role="button">About</a>
+ <a class="btn btn-sm btn-default privacy_button" role="button">Privacy</a>
+ <p class="notice">
+ All images uploaded can be used for exhibition and review purposes.
+ </p>
+ <p class="notice">
+ Currently this work is on view at <a href="http://zkm.de/en/event/2017/10/open-codes">ZKM</a>. View recent DullDreams <a href="/gallery">here</a>.
+ </p>
+ </div>
+ </div>
+</div>
+
+<div class="about_view modal">
+ <div class="inner">
+ <header>
+ <h1><img src="/static/img/dulldream_logo_200.png" alt="DullDream"></h1>
+ </header>
+ <div class='content'>
+ <p>
+ <b><i>DullDream™ by DullTech™</i></b> is a series of experiments appropriating neural network image recognition technology to make visual representation less interesting.
+ </p>
+ <p>
+ Can machine learning help us desensitize? Our impactful lives are clogging up social media feeds with unique filter settings, leaving us nostalgic for a vanilla future. Can machine learning help us achieve this? Take the excitement out of our lives, prepare us for a time where we will all have to be the same, have the same values and culture? Painting a future where the Dull is no longer a dream but a nightmare?
+ </p>
+ <p>
+ DullDream™ (version 2) was developed for the OpenCodes exhibition at ZKM. It based on the original DullDream™ (<a href="http://dulldream.xyz">version 1</a>), developed for Transmediale 2017 - Ever Elusive by <a href="http://constantdullaart.com">Constant Dullaart</a> in collaboration with <a href="http://ahprojects.com">Adam Harvey</a>. DullDream (V2) has been generously made possible by support from ZKM.
+ </p>
+ </div>
+ <center><a class="btn btn-sm btn-default" href="/" role="button">Home</a></center>
+ </div>
+</div>
+
+<div class="privacy_view modal">
+ <div class="inner">
+ <header>
+ <h1><img src="/static/img/dulldream_logo_200.png" alt="DullDream"></h1>
+ </header>
+ <div class='content'>
+ <h3>Privacy Notice</h3>
+ <p>
+ Images uploaded to this site are being used for a public art display at <a href="http://zkm.de/en/event/2017/10/open-codes">ZKM</a>
+ </p>
+ <p>
+ If you would not like to be included, be sure to uncheck the permission box on the upload page.
+ </p>
+
+ </div>
+ <center><a class="btn btn-sm btn-default" href="/" role="button">Home</a></center>
+ </div>
+</div>
+
+
+<div class="result_view">
+ <div class="final_result">
+ </div>
+
+ <div class="row made_with">
+ Made with DullDream.xyz for ZKM OpenCodes 2017
+ </div>
+
+ <div class="row">
+ <button class='btn' id="show_all_results">Detailed Analysis</button>
+ </div>
+
+ <div class="all_results">
+ </div>
+
+ <div id="share_btns" class="row">
+ <a id="permalink" href="#">Permalink</a>
+ </div>
+
+ <div id="about_btn" class="row">
+ <div class="align_center">
+ <a href="/" class="btn btn-sm btn-default home_button" role="button">Home</a>
+ <a class="btn btn-sm btn-default about_button" role="button">About</a>
+ <a class="btn btn-sm btn-default privacy_button" role="button">Privacy</a>
+ </div>
+
+ </div>
+
+</div>
+
+<div id="footer">
+ DullDream™ by <a href="http://constantdullaart.com">Constant Dullaart</a>.<br>
+ <small>Made in collaboration with <a href="http://ahprojects.com">Adam Harvey</a></small>
+</div>
+
+</body>
+<script type="text/html" id="result_template">
+ <div class="row">
+ <img src="{img}"><br>
+ <b>{title}</b>
+ </div>
+</script>
+<script type="text/json" id="dropdown_options">{{ task_json }}</script>
+<script type="text/javascript" src="{{url_for('static', filename='js/vendor/jquery-3.3.1.min.js')}}"></script>
+<script type="text/javascript" src="{{url_for('static', filename='js/vendor/ExifReader.js')}}"></script>
+<script type="text/javascript" src="{{url_for('static', filename='js/vendor/canvas-to-blob.js')}}"></script>
+<script type="text/javascript" src="{{url_for('static', filename='js/vendor/prefixfree.js')}}"></script>
+<script type="text/javascript" src="{{url_for('static', filename='js/util.js')}}"></script>
+<script type="text/javascript" src="{{url_for('static', filename='js/upload.js')}}"></script>
+<script type="text/javascript" src="{{url_for('static', filename='js/app.js')}}"></script>
+</html> \ No newline at end of file
diff --git a/old/server/celery_worker.py b/old/server/celery_worker.py
new file mode 100644
index 00000000..1545a884
--- /dev/null
+++ b/old/server/celery_worker.py
@@ -0,0 +1,7 @@
+#!/usr/bin/env python
+import os
+from app.basemodels import celery
+from app import create_app
+
+app = create_app(os.getenv('FLASK_CONFIG') or 'default')
+app.app_context().push()
diff --git a/old/server/config.py b/old/server/config.py
new file mode 100644
index 00000000..5042efb6
--- /dev/null
+++ b/old/server/config.py
@@ -0,0 +1,78 @@
+# -*- coding: utf-8 -*-
+"""Application configuration."""
+import os
+from os.path import join
+basedir = os.path.abspath(os.path.dirname(__file__))
+
+class Config(object):
+ """Base configuration."""
+
+ #SECRET_KEY = os.environ.get('MYFLASKAPP_SECRET', 'secret-key') # TODO: Change me
+ APP_DIR = os.path.abspath(os.path.dirname(__file__)) # This directory
+ PROJECT_ROOT = os.path.abspath(os.path.join(APP_DIR, os.pardir))
+ #BCRYPT_LOG_ROUNDS = 13
+ DEBUG_TB_ENABLED = False # Disable Debug toolbar
+ #DEBUG_TB_INTERCEPT_REDIRECTS = False
+ CACHE_TYPE = 'simple' # Can be "memcached", "redis", etc.
+ HOST = '0.0.0.0'
+ FLASK_DEBUG_DISABLE_STRICT = True
+ #WTF_CSRF_SECRET_KEY = '94ksadkf49DKEDFJ.&'
+ BOOTSTRAP_GOOGLE_ANALYTICS_ACCOUNT = None
+ BOOTSTRAP_SERVE_LOCAL = True
+ SECRET_KEY = os.environ.get('SECRET_KEY') or '94ksadkf49DKEDFJ.&'
+ CELERY_BROKER_URL = 'redis://localhost:6379/0'
+ CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
+
+ FLASKY_SLOW_DB_QUERY_TIME=0.5
+
+ @staticmethod
+ def init_app(app):
+ pass
+
+
+class DevelopmentConfig(Config):
+ """Development configuration."""
+ ENV = 'dev'
+ DEBUG = True
+
+class ProductionConfig(Config):
+ ENV = 'production'
+ DEBUG = False
+ # @classmethod
+ # def init_app(cls, app):
+ # Config.init_app(app)
+ # # import logging
+ # # app.logger.addHandler(mail_handler)
+
+
+class DigitalOceanConfig(Config):
+ """Production configuration."""
+ def init_app(cls, app):
+ ProductionConfig.init_app(app)
+ # log to syslog
+ import logging
+ from logging.handlers import SysLogHandler
+ syslog_handler = SysLogHandler()
+ syslog_handler.setLevel(logging.WARNING)
+ app.logger.addHandler(syslog_handler)
+
+
+class UnixConfig(ProductionConfig):
+ @classmethod
+ def init_app(cls, app):
+ ProductionConfig.init_app(app)
+
+ # log to syslog
+ import logging
+ from logging.handlers import SysLogHandler
+ syslog_handler = SysLogHandler()
+ syslog_handler.setLevel(logging.WARNING)
+ app.logger.addHandler(syslog_handler)
+
+
+config = {
+ 'development': DevelopmentConfig,
+ 'production': ProductionConfig,
+ 'digitalocean': DigitalOceanConfig,
+ 'default': DevelopmentConfig
+}
diff --git a/old/server/deploy.sh b/old/server/deploy.sh
new file mode 100755
index 00000000..c2594cab
--- /dev/null
+++ b/old/server/deploy.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+d_src="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/
+d_dst=/home/dull/dulldream/www/dulldream_xyz
+ssh_alis=dulldream-root
+#DOCKER_DIR_P1="$(dirname "$CWD")"
+
+echo "Syncing DullDream LOCAL to -> REMOTE"
+echo $d_src
+echo $d_dst
+
+
+#rsync -a -e 'ssh' \
+rsync -r -v --progress -e 'ssh' \
+ --delete \
+ --exclude='.DS_Store' \
+ --exclude='deploy.sh' \
+ $d_src $ssh_alis:$d_dst
+
+echo "Synced :)" \ No newline at end of file
diff --git a/old/server/dulldream.wsgi.py b/old/server/dulldream.wsgi.py
new file mode 100644
index 00000000..ed992528
--- /dev/null
+++ b/old/server/dulldream.wsgi.py
@@ -0,0 +1,13 @@
+#!/usr/bin/python
+import sys
+sys.path.insert(0, "/home/dulldream/dulldream/www/dulldream_xyz/")
+
+from app import create_app
+
+import logging
+logging.basicConfig(stream=sys.stderr)
+# logging.basicConfig(filename='error.log',level=logging.DEBUG)
+
+application = create_app('production')
+application.secret_key = 'curlier6982!1decentralizationists'
+
diff --git a/old/server/run-celery.sh b/old/server/run-celery.sh
new file mode 100755
index 00000000..e38174fa
--- /dev/null
+++ b/old/server/run-celery.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+celery worker -A celery_worker.celery --loglevel=info
+
diff --git a/old/server/run-dev.sh b/old/server/run-dev.sh
new file mode 100755
index 00000000..b4eb2a61
--- /dev/null
+++ b/old/server/run-dev.sh
@@ -0,0 +1 @@
+FLASK_CONFIG=development python run.py \ No newline at end of file
diff --git a/old/server/run-gunicorn.sh b/old/server/run-gunicorn.sh
new file mode 100755
index 00000000..64debabd
--- /dev/null
+++ b/old/server/run-gunicorn.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+gunicorn -w 1 -b 0.0.0.0:8000 run:app
diff --git a/old/server/run-redis.sh b/old/server/run-redis.sh
new file mode 100755
index 00000000..e9ceb845
--- /dev/null
+++ b/old/server/run-redis.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+/usr/local/bin/redis-server /etc/redis/redis.conf
diff --git a/old/server/run.py b/old/server/run.py
new file mode 100644
index 00000000..c4c3e8d7
--- /dev/null
+++ b/old/server/run.py
@@ -0,0 +1,12 @@
+#!/usr/bin/python3
+import os
+from flask import Flask
+from app import create_app
+
+app = create_app(os.getenv('FLASK_CONFIG') or 'default')
+import logging
+logging.basicConfig(filename='error.log',level=logging.DEBUG)
+
+if __name__ == '__main__':
+ app.run(host='0.0.0.0',debug=False,threaded=False,port=8000)
+ pass